@oomol-lab/open-flow 0.1.0-beta.75 → 0.1.0-beta.76

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 (125) hide show
  1. package/README.md +2 -1
  2. package/dist/browser/{ContentIcon-FCpKiwjp.js → ContentIcon-Cm1hbVzW.js} +2 -2
  3. package/dist/browser/{FlowCanvas-dzRBnlUT.js → FlowCanvas-NzKtla_c.js} +62 -62
  4. package/dist/browser/{createResourceDialog-BeYDdUl-.js → createResourceDialog-BgdedQqu.js} +3 -3
  5. package/dist/browser/{dialog-ZtpsFbl4.js → dialog-aSElFFw2.js} +49 -24
  6. package/dist/browser/{exportSvg-DqXw1yf-.js → exportSvg-Dcz4HTo_.js} +2 -2
  7. package/dist/browser/{flowChanges-b_5UobFj.js → flowChanges-NZyS7HSp.js} +207 -396
  8. package/dist/browser/{flowWorkspace-ItojZbO4.js → flowWorkspace-Bl0SDehy.js} +90 -13
  9. package/dist/browser/preview.css +515 -649
  10. package/dist/browser/preview.js +454 -545
  11. package/dist/browser/theme.css +114 -262
  12. package/dist/browser/{tooltip-wZJRB9oP.js → tooltip-3XMK9jkr.js} +1 -1
  13. package/dist/browser/{typeScriptSession-CSRwWmZm.js → typeScriptSession-C9sBGOKZ.js} +1 -1
  14. package/dist/browser/ui.css +354 -460
  15. package/dist/browser/ui.js +1 -1
  16. package/dist/browser/workbench.css +515 -649
  17. package/dist/browser/workbench.js +7 -7
  18. package/dist/browser/{workbenchSelect-M441Lz0d.js → workbenchSelect-DBGP7Y4Z.js} +2 -2
  19. package/dist/command/index.js +33 -35
  20. package/dist/common/authoring.d.ts +3 -3
  21. package/dist/common/authoringSchema.d.ts +3 -0
  22. package/dist/common/connector-proxy.d.ts +1 -1
  23. package/dist/common/control-api-conformance.js +197 -136
  24. package/dist/common/control-api.d.ts +3 -2
  25. package/dist/common/control-api.js +192 -131
  26. package/dist/common/control-requests.js +126 -24
  27. package/dist/common/cron-trigger.d.ts +2 -1
  28. package/dist/common/decision.d.ts +4 -4
  29. package/dist/common/decision.js +5 -2
  30. package/dist/common/engine-contract.d.ts +5 -1
  31. package/dist/common/event-source-definition.d.ts +1 -1
  32. package/dist/common/event-source-view.d.ts +22 -0
  33. package/dist/common/event-source.d.ts +1 -1
  34. package/dist/common/event-source.js +24 -65
  35. package/dist/common/event-sources.d.ts +0 -21
  36. package/dist/common/flow-authoring.js +40 -18
  37. package/dist/common/flow-change-schema.d.ts +9 -1
  38. package/dist/common/flow-change.d.ts +7 -201
  39. package/dist/common/flow-change.js +46 -22
  40. package/dist/common/flow-encoding.js +40 -20
  41. package/dist/common/flow-input-value.d.ts +1 -1
  42. package/dist/common/flow-model.d.ts +121 -0
  43. package/dist/common/flow-notifications.d.ts +1 -1
  44. package/dist/common/flow-retry.d.ts +2 -4
  45. package/dist/common/flow-semantics.js +83 -86
  46. package/dist/common/flow-workflowReferences.d.ts +8 -0
  47. package/dist/common/flowInspection.d.ts +1 -1
  48. package/dist/common/http-hosts.d.ts +6 -0
  49. package/dist/common/http-request.d.ts +13 -5
  50. package/dist/common/http-request.js +23 -5
  51. package/dist/common/integration-trigger.d.ts +2 -1
  52. package/dist/common/mcp.js +195 -134
  53. package/dist/common/openapi.d.ts +4 -4
  54. package/dist/common/openapi.js +4 -1
  55. package/dist/common/poll-trigger.d.ts +2 -1
  56. package/dist/common/runtime-contract.d.ts +23 -1
  57. package/dist/common/runtime-contract.js +604 -72
  58. package/dist/common/runtime-nodejs-compat.d.ts +44 -0
  59. package/dist/common/runtime-nodejs-compat.js +5870 -0
  60. package/dist/common/scheduler-checkpoint.d.ts +1 -1
  61. package/dist/common/scheduler-node-execution.d.ts +1 -1
  62. package/dist/common/scheduler.d.ts +1 -1
  63. package/dist/common/scheduler.js +25 -4
  64. package/dist/common/trigger-catalog.d.ts +1 -7
  65. package/dist/common/trigger-config-options.d.ts +1 -1
  66. package/dist/common/trigger-config.d.ts +1 -1
  67. package/dist/common/trigger-contract.d.ts +2 -1
  68. package/dist/common/trigger-localization.d.ts +8 -2
  69. package/dist/common/trigger-model.d.ts +101 -0
  70. package/dist/common/webhook-response.d.ts +1 -1
  71. package/dist/common/webhook-trigger.d.ts +3 -1
  72. package/dist/common/workflow.d.ts +3 -12
  73. package/dist/common/workflow.js +25 -23
  74. package/dist/index.d.ts +41 -14
  75. package/package.json +5 -1
  76. package/src/base/common/json.ts +1 -1
  77. package/src/connector/common/proxy.ts +1 -1
  78. package/src/control/common/api.ts +6 -5
  79. package/src/control/common/authoringSchema.ts +9 -2
  80. package/src/control/common/authoringTools.ts +1 -1
  81. package/src/control/common/conformance.ts +1 -1
  82. package/src/control/common/connectorDecoders.ts +1 -1
  83. package/src/control/common/eventSources.ts +2 -29
  84. package/src/control/common/triggerCatalog.ts +1 -8
  85. package/src/decision/common/decision.ts +15 -7
  86. package/src/event-source/common/definition.ts +1 -1
  87. package/src/event-source/common/index.ts +1 -1
  88. package/src/event-source/common/view.ts +20 -0
  89. package/src/execution/common/checkpoint.ts +1 -1
  90. package/src/execution/common/node-execution.ts +1 -1
  91. package/src/execution/common/scheduler.ts +1 -1
  92. package/src/flow/common/change.ts +58 -192
  93. package/src/flow/common/changeSchema.ts +29 -4
  94. package/src/flow/common/connectionUsage.ts +1 -1
  95. package/src/flow/common/inputValue.ts +1 -1
  96. package/src/flow/common/model.ts +130 -0
  97. package/src/flow/common/modules.ts +1 -1
  98. package/src/flow/common/portChanges.ts +1 -1
  99. package/src/flow/common/retry.ts +2 -4
  100. package/src/flow/common/semantics.ts +11 -4
  101. package/src/flow/common/webhookResponse.ts +1 -1
  102. package/src/flow/common/workflowReferences.ts +31 -0
  103. package/src/http/common/authBindings.ts +6 -9
  104. package/src/http/common/hosts.ts +13 -0
  105. package/src/http/common/httpRequest.ts +30 -15
  106. package/src/openapi/common/openapi.ts +9 -5
  107. package/src/{execution → runtime}/common/engineContract.ts +20 -15
  108. package/src/runtime/common/nodejsCompat.ts +275 -0
  109. package/src/runtime/common/nodejsGuest.generated.json +47 -0
  110. package/src/runtime/common/runtime.ts +1138 -0
  111. package/src/trigger/common/config.ts +1 -1
  112. package/src/trigger/common/configOptions.ts +1 -1
  113. package/src/trigger/common/contract.ts +2 -1
  114. package/src/trigger/common/cron.ts +2 -1
  115. package/src/trigger/common/integration.ts +2 -1
  116. package/src/trigger/common/model.ts +87 -0
  117. package/src/trigger/common/poll.ts +2 -1
  118. package/src/trigger/common/webhook.ts +3 -1
  119. package/src/trigger/providers/fieldDescriptions.ts +1 -1
  120. package/src/trigger/providers/localization.ts +9 -2
  121. package/src/trigger/providers/remote.ts +1 -1
  122. package/src/types/index.ts +44 -15
  123. package/src/workflow/common/workflow.ts +3 -44
  124. package/src/execution/common/runtime.ts +0 -563
  125. /package/src/{control → connector}/common/providerIconSprite.ts +0 -0
@@ -8693,16 +8693,10 @@ function isSchemaKeyword(value) {
8693
8693
  /** Shared by decision entry points, the editor, and durable decision storage. */
8694
8694
  var waitCommentSchema = string$1().trim().refine((value) => [...value].length <= 2e3, "Wait comment must contain at most 2,000 Unicode code points.").nullable().optional();
8695
8695
  //#endregion
8696
- //#region src/http/common/authBindings.ts
8697
- /** Never allow credentials to enter a Revision as literal node inputs. */
8698
- function assertHttpAuthBindings(document) {
8699
- for (const node of Object.values(document.graph.nodes)) {
8700
- if (node.kind != "task" || !("executor" in node.task) || !["openapi", "http-request"].includes(node.task.executor.kind)) continue;
8701
- for (const [handle, mapping] of Object.entries(node.inputs)) if (handle.startsWith("auth.") && mapping.kind == "value") throw new TypeError("HTTP authentication accepts deployment variables and upstream outputs only.");
8702
- }
8703
- }
8704
- //#endregion
8705
8696
  //#region src/decision/common/decision.ts
8697
+ function isDecisionExecutor(executor) {
8698
+ return executor.kind === "decision";
8699
+ }
8706
8700
  var decisionLimits = {
8707
8701
  choice: 255,
8708
8702
  score: 10
@@ -8725,7 +8719,7 @@ function limitDecisionQuestions(questions) {
8725
8719
  }
8726
8720
  /** Loading an oversized task also updates its previously generated output schemas. */
8727
8721
  function limitDecisionTask(task) {
8728
- if (task.executor.kind !== "decision") return task;
8722
+ if (!isDecisionExecutor(task.executor)) return task;
8729
8723
  const original = task.executor.questions;
8730
8724
  const questions = limitDecisionQuestions(original);
8731
8725
  if (questions === original) return task;
@@ -8792,6 +8786,20 @@ function answerSchema(question) {
8792
8786
  };
8793
8787
  }
8794
8788
  //#endregion
8789
+ //#region src/http/common/authBindings.ts
8790
+ /** Never allow credentials to enter a Revision as literal inputs of an OpenAPI or HTTP request node. */
8791
+ function assertHttpAuthBindings(inputs) {
8792
+ for (const [handle, mapping] of Object.entries(inputs)) if (handle.startsWith("auth.") && mapping.kind == "value") throw new TypeError("HTTP authentication accepts deployment variables and upstream outputs only.");
8793
+ }
8794
+ //#endregion
8795
+ //#region src/http/common/hosts.ts
8796
+ /** Hosts of a Code `http` Capability: lowercase DNS names or IPv4 addresses; `*.example.com` matches subdomains only. */
8797
+ var httpHostPattern = /^(?:\*\.)?(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/;
8798
+ /** Wildcards must name a registrable suffix, so `*.com` is rejected. */
8799
+ function isHttpHost(value) {
8800
+ return httpHostPattern.test(value) && (!value.startsWith("*.") || value.slice(2).includes("."));
8801
+ }
8802
+ //#endregion
8795
8803
  //#region src/http/common/httpRequest.ts
8796
8804
  var parameterSchema = strictObject({
8797
8805
  mode: _enum(["fields", "object"]).default("fields"),
@@ -9007,7 +9015,15 @@ var workflowCapabilitySchema = strictObject({
9007
9015
  inputs: array(port$1),
9008
9016
  outputs: array(port$1).nullable()
9009
9017
  });
9010
- var capability = union([connectorCapabilitySchema, workflowCapabilitySchema]);
9018
+ var httpCapabilitySchema = strictObject({
9019
+ kind: literal("http"),
9020
+ hosts: array(text.refine(isHttpHost, "Use a lowercase host name or IPv4 address, optionally prefixed by \"*.\" for subdomains.")).min(1).max(20).describe("Hosts Code may call with context.fetch. \"*.example.com\" matches subdomains only.")
9021
+ });
9022
+ var capability = union([
9023
+ connectorCapabilitySchema,
9024
+ workflowCapabilitySchema,
9025
+ httpCapabilitySchema
9026
+ ]);
9011
9027
  var inline = object({
9012
9028
  ...ports$1,
9013
9029
  name: text,
@@ -9387,7 +9403,8 @@ var revision = object({
9387
9403
  literal(8),
9388
9404
  literal(9),
9389
9405
  literal(10),
9390
- literal(11)
9406
+ literal(11),
9407
+ literal(12)
9391
9408
  ]),
9392
9409
  document,
9393
9410
  modules: record$2(text, module)
@@ -9418,7 +9435,7 @@ function decodeRevisionContent(value) {
9418
9435
  checkJsonDepth(value);
9419
9436
  const content = revision.parse(value);
9420
9437
  checkModelVersion(content);
9421
- assertHttpAuthBindings(content.document);
9438
+ assertDocumentHttpAuthBindings(content.document);
9422
9439
  return content;
9423
9440
  }
9424
9441
  var shapes = {
@@ -9588,6 +9605,7 @@ array(union([...new Map(Object.entries(shapes).map(([kind, shape]) => [kind, sha
9588
9605
  ...shape
9589
9606
  })])).values()])).min(1);
9590
9607
  function checkModelVersion(content) {
9608
+ if (content.modelVersion < 12 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind == "task" && "moduleId" in candidateNode.task && candidateNode.task.capabilities?.some((item) => item.kind == "http"))) throw new TypeError("Code HTTP access requires Flow model version 12.");
9591
9609
  if (content.modelVersion < 11 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind == "task" && "executor" in candidateNode.task && candidateNode.task.executor.kind == "http-request")) throw new TypeError("HTTP Request requires Flow model version 11.");
9592
9610
  if (content.modelVersion < 11 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind == "task" && ("moduleId" in candidateNode.task ? candidateNode.task.capabilities?.some((item) => item.kind == "workflow") : candidateNode.task.executor.kind == "agent" && candidateNode.task.executor.tools.some((item) => item.kind == "workflow")))) throw new TypeError("Workflow tools require Flow model version 11.");
9593
9611
  if (content.modelVersion < 10 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind == "webhook" && (candidateNode.options?.responseBody != null || candidateNode.options?.responseStatusCodeOutput != null || candidateNode.options?.responseHeadersSource != null || candidateNode.options?.responseHeaderOutputs != null))) throw new TypeError("Dynamic Webhook responses require Flow model version 10.");
@@ -9603,6 +9621,9 @@ function checkModelVersion(content) {
9603
9621
  if (content.modelVersion < 6 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind == "task" && "executor" in candidateNode.task)) throw new TypeError("Node-owned managed Tasks require Flow model version 6.");
9604
9622
  if (content.modelVersion < 5 && Object.values(content.document.graph.nodes).some((itemNode) => itemNode.kind == "error")) throw new TypeError("Error workflows require Flow model version 5.");
9605
9623
  }
9624
+ function assertDocumentHttpAuthBindings(content) {
9625
+ for (const graphNode of Object.values(content.graph.nodes)) if (graphNode.kind == "task" && "executor" in graphNode.task && ["openapi", "http-request"].includes(graphNode.task.executor.kind)) assertHttpAuthBindings(graphNode.inputs);
9626
+ }
9606
9627
  function resourceNameIssue(value) {
9607
9628
  const name = value.trim();
9608
9629
  if (name.length == 0) return "empty";
@@ -9614,6 +9635,78 @@ function resourceNameIssue(value) {
9614
9635
  if (!/^[\p{L}\p{N}](?:[\p{L}\p{N} _-]*[\p{L}\p{N}])?$/u.test(name)) return "specialCharacter";
9615
9636
  }
9616
9637
  //#endregion
9638
+ //#region src/runtime/common/engineContract.ts
9639
+ /** v9 is a single contract: the Node compatibility builtins, `context.fetch`, and no `context.egress`. */
9640
+ var currentEngineContract = "open-flow-engine/v9";
9641
+ /** The published v8 Node compatibility contract, retained for existing Publications and Runs. */
9642
+ var nodejsEngineContract = "open-flow-engine/v8/nodejs-compat-v1";
9643
+ var platformSource = (contract) => `export const engineContract = ${JSON.stringify(contract)}
9644
+ export function identity(value) { return value }
9645
+ `;
9646
+ var v8Contract = {
9647
+ workflowTools: true,
9648
+ httpRequests: true,
9649
+ waitAutoContinue: true,
9650
+ webhookResponses: true,
9651
+ platformExports: /* @__PURE__ */ new Set(["engineContract", "identity"]),
9652
+ platformModule: "open-flow:platform",
9653
+ platformSource: platformSource("open-flow-engine/v8")
9654
+ };
9655
+ var nodejsContract = {
9656
+ ...v8Contract,
9657
+ builtinModules: new Set([
9658
+ "assert",
9659
+ "assert/strict",
9660
+ "buffer",
9661
+ "console",
9662
+ "constants",
9663
+ "crypto",
9664
+ "events",
9665
+ "fs",
9666
+ "fs/promises",
9667
+ "os",
9668
+ "path",
9669
+ "path/posix",
9670
+ "process",
9671
+ "punycode",
9672
+ "querystring",
9673
+ "stream",
9674
+ "stream/promises",
9675
+ "stream/web",
9676
+ "string_decoder",
9677
+ "timers",
9678
+ "timers/promises",
9679
+ "url",
9680
+ "util",
9681
+ "zlib"
9682
+ ].flatMap((name) => [name, `node:${name}`])),
9683
+ platformSource: platformSource(nodejsEngineContract)
9684
+ };
9685
+ var currentContract = {
9686
+ ...nodejsContract,
9687
+ codeFetch: true,
9688
+ platformSource: platformSource(currentEngineContract)
9689
+ };
9690
+ function findEngineContract(contract) {
9691
+ if (contract == "open-flow-engine/v9") return currentContract;
9692
+ if (contract == "open-flow-engine/v8") return v8Contract;
9693
+ if (contract == "open-flow-engine/v8/nodejs-compat-v1") return nodejsContract;
9694
+ if (contract == "open-flow-engine/v7" || contract == "open-flow-engine/v7/nodejs-compat-v1") return {
9695
+ ...contract.endsWith("/nodejs-compat-v1") ? nodejsContract : v8Contract,
9696
+ workflowTools: false,
9697
+ httpRequests: false,
9698
+ platformSource: platformSource(contract)
9699
+ };
9700
+ if (contract == "open-flow-engine/v6" || contract == "open-flow-engine/v6/nodejs-compat-v1") return {
9701
+ ...contract == "open-flow-engine/v6" ? v8Contract : nodejsContract,
9702
+ workflowTools: false,
9703
+ httpRequests: false,
9704
+ waitAutoContinue: false,
9705
+ webhookResponses: false,
9706
+ platformSource: platformSource(contract)
9707
+ };
9708
+ }
9709
+ //#endregion
9617
9710
  //#region src/control/common/authoringLlm.ts
9618
9711
  var authoringLlmConfiguration = strictObject({
9619
9712
  mode: _enum(["chat", "json"]),
@@ -9642,9 +9735,9 @@ var authoringOpenApiSchema = strictObject({
9642
9735
  });
9643
9736
  //#endregion
9644
9737
  //#region src/control/common/authoringSchema.ts
9645
- var id$2 = string$1().min(1);
9738
+ var id$3 = string$1().min(1);
9646
9739
  var json$2 = json$4();
9647
- var patch = record$2(id$2, json$2);
9740
+ var patch = record$2(id$3, json$2);
9648
9741
  var type = _enum([
9649
9742
  "start",
9650
9743
  "outputs",
@@ -9667,11 +9760,11 @@ var type = _enum([
9667
9760
  "wait",
9668
9761
  "approval"
9669
9762
  ]);
9670
- var referenceSchema = id$2.describe("An existing node reference returned by read/search, or $alias for a preceding node.add in this edit batch. For node.add.as \"step\", reference \"$step\", never bare \"step\". Aliases are local to one batch.");
9763
+ var referenceSchema = id$3.describe("An existing node reference returned by read/search, or $alias for a preceding node.add in this edit batch. For node.add.as \"step\", reference \"$step\", never bare \"step\". Aliases are local to one batch.");
9671
9764
  var output = strictObject({
9672
9765
  kind: literal("output"),
9673
9766
  node: referenceSchema,
9674
- port: id$2.optional().describe("Omit for a node with one output. For multiple outputs, choose a name from node details."),
9767
+ port: id$3.optional().describe("Omit for a node with one output. For multiple outputs, choose a name from node details."),
9675
9768
  field: string$1().optional()
9676
9769
  });
9677
9770
  var system = strictObject({
@@ -9682,7 +9775,7 @@ var system = strictObject({
9682
9775
  });
9683
9776
  var variable$1 = strictObject({
9684
9777
  kind: literal("variable"),
9685
- name: id$2
9778
+ name: id$3
9686
9779
  });
9687
9780
  var authoringSourceSchema = union([
9688
9781
  output,
@@ -9713,7 +9806,7 @@ var operand = union([
9713
9806
  system,
9714
9807
  variable$1
9715
9808
  ]);
9716
- var toolSources = record$2(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.");
9809
+ var toolSources = record$2(id$3, 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.");
9717
9810
  var agentTool = union([workflowAgentToolSchema.omit({
9718
9811
  id: true,
9719
9812
  inputs: true,
@@ -9723,20 +9816,24 @@ var agentTool = union([workflowAgentToolSchema.omit({
9723
9816
  id: true,
9724
9817
  inputs: true
9725
9818
  }).extend({ inputs: toolSources }).strict()]);
9726
- var authoringCapabilities = array(union([connectorCapabilitySchema, strictObject({
9727
- kind: literal("workflow"),
9728
- name: id$2,
9729
- flowId: id$2
9730
- })]));
9819
+ var authoringCapabilities = array(union([
9820
+ connectorCapabilitySchema,
9821
+ strictObject({
9822
+ kind: literal("workflow"),
9823
+ name: id$3,
9824
+ flowId: id$3
9825
+ }),
9826
+ httpCapabilitySchema
9827
+ ]));
9731
9828
  var notification = strictObject({
9732
9829
  ...authoringDefinitionSchemas.connector.shape,
9733
- messageHandle: id$2,
9734
- inputs: record$2(id$2, union([strictObject({
9830
+ messageHandle: id$3,
9831
+ inputs: record$2(id$3, union([strictObject({
9735
9832
  kind: literal("value"),
9736
9833
  value: json$2
9737
9834
  }), strictObject({
9738
9835
  kind: literal("input"),
9739
- input: id$2
9836
+ input: id$3
9740
9837
  })]))
9741
9838
  });
9742
9839
  var field = strictObject({
@@ -9744,14 +9841,14 @@ var field = strictObject({
9744
9841
  nullable: boolean().optional(),
9745
9842
  description: string$1().optional()
9746
9843
  });
9747
- var inputFields = record$2(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.");
9748
- var flowInputFields = record$2(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.");
9844
+ var inputFields = record$2(id$3, 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.");
9845
+ var flowInputFields = record$2(id$3, field).describe("Workflow input definitions by name. Omitted schema accepts any JSON; omitted nullable is true. No defaults. Supply call values as trigger.outputs.");
9749
9846
  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.");
9750
- var flowInputFieldsView = record$2(id$2, field.extend({
9847
+ var flowInputFieldsView = record$2(id$3, field.extend({
9751
9848
  schema: json$2,
9752
9849
  nullable: boolean()
9753
9850
  }));
9754
- var outputFields = record$2(id$2, field).describe("Code return fields by name. Omitted schema accepts any JSON; omitted nullable is true.");
9851
+ var outputFields = record$2(id$3, field).describe("Code return fields by name. Omitted schema accepts any JSON; omitted nullable is true.");
9755
9852
  var expression = strictObject({
9756
9853
  left: operand,
9757
9854
  operator: authoringDefinitionSchemas.condition.shape.cases.element.shape.groups.element.shape.expressions.element.shape.operator,
@@ -9765,20 +9862,20 @@ var when = union([
9765
9862
  ]);
9766
9863
  var authoringConfigurations = {
9767
9864
  "webhook-response": strictObject({}),
9768
- "workflow": strictObject({ flowId: id$2 }),
9865
+ "workflow": strictObject({ flowId: id$3 }),
9769
9866
  "start": strictObject({ inputDefs: flowInputFields.default({}) }),
9770
9867
  "outputs": strictObject({ outputDefs: flowOutputFields.default({}) }),
9771
- "error": strictObject({ sourceFlowIds: array(id$2).optional() }),
9868
+ "error": strictObject({ sourceFlowIds: array(id$3).optional() }),
9772
9869
  "webhook": authoringDefinitionSchemas.webhook.omit({ bodyFields: true }).extend({ body: inputFields }).strict(),
9773
9870
  "cron": strictObject({ schedule: authoringDefinitionSchemas.schedule }),
9774
9871
  "poll": strictObject({
9775
- key: id$2,
9776
- connectionId: id$2.optional(),
9872
+ key: id$3,
9873
+ connectionId: id$3.optional(),
9777
9874
  schedule: authoringDefinitionSchemas.schedule
9778
9875
  }),
9779
9876
  "integration": strictObject({
9780
- key: id$2,
9781
- connectionId: id$2.optional()
9877
+ key: id$3,
9878
+ connectionId: id$3.optional()
9782
9879
  }),
9783
9880
  "code": strictObject({
9784
9881
  inputs: inputFields,
@@ -9802,7 +9899,7 @@ var authoringConfigurations = {
9802
9899
  "condition": strictObject({
9803
9900
  match: _enum(["first", "all"]),
9804
9901
  branches: array(strictObject({
9805
- name: id$2,
9902
+ name: id$3,
9806
9903
  description: string$1().optional(),
9807
9904
  when
9808
9905
  }))
@@ -9819,7 +9916,7 @@ var authoringConfigurations = {
9819
9916
  };
9820
9917
  var updates = strictObject({
9821
9918
  onError: _enum(["stop", "error"]).optional(),
9822
- name: id$2.optional(),
9919
+ name: id$3.optional(),
9823
9920
  description: string$1().optional(),
9824
9921
  icon: string$1().optional(),
9825
9922
  maxExecutions: int().positive().optional(),
@@ -9830,13 +9927,13 @@ var updates = strictObject({
9830
9927
  var authoringEditSchema = discriminatedUnion("op", [
9831
9928
  strictObject({
9832
9929
  op: literal("node.add"),
9833
- as: id$2.regex(/^[A-Za-z][\w-]*$/).describe("Unique batch-local alias without the $ prefix. Later edits must reference this new node as $alias; the bare alias is not its node ID."),
9930
+ as: id$3.regex(/^[A-Za-z][\w-]*$/).describe("Unique batch-local alias without the $ prefix. Later edits must reference this new node as $alias; the bare alias is not its node ID."),
9834
9931
  type,
9835
- name: id$2,
9932
+ name: id$3,
9836
9933
  onError: _enum(["stop", "error"]).optional(),
9837
9934
  retry: retryConfigurationSchema.optional(),
9838
9935
  config: patch.optional(),
9839
- inputs: record$2(id$2, authoringSourceSchema).optional().describe("Input data sources, applied after creation, as input.set operations. Execution edges are separate."),
9936
+ inputs: record$2(id$3, authoringSourceSchema).optional().describe("Input data sources, applied after creation, as input.set operations. Execution edges are separate."),
9840
9937
  code: string$1().optional(),
9841
9938
  prompt: string$1().optional()
9842
9939
  }),
@@ -9844,12 +9941,12 @@ var authoringEditSchema = discriminatedUnion("op", [
9844
9941
  op: literal("node.update"),
9845
9942
  node: referenceSchema,
9846
9943
  set: updates.optional(),
9847
- clear: array(array(id$2).min(1)).optional()
9944
+ clear: array(array(id$3).min(1)).optional()
9848
9945
  }),
9849
9946
  strictObject({
9850
9947
  op: literal("node.refresh"),
9851
9948
  node: referenceSchema,
9852
- tool: id$2.optional().describe("Name of a workflow tool on an Agent or Code node. Omit for a Call Workflow node.")
9949
+ tool: id$3.optional().describe("Name of a workflow tool on an Agent or Code node. Omit for a Call Workflow node.")
9853
9950
  }),
9854
9951
  strictObject({
9855
9952
  op: literal("node.remove"),
@@ -9858,20 +9955,20 @@ var authoringEditSchema = discriminatedUnion("op", [
9858
9955
  strictObject({
9859
9956
  op: literal("input.set"),
9860
9957
  node: referenceSchema,
9861
- input: id$2,
9958
+ input: id$3,
9862
9959
  source: authoringSourceSchema
9863
9960
  }),
9864
9961
  strictObject({
9865
9962
  op: _enum(["edge.connect", "edge.disconnect"]),
9866
9963
  source: referenceSchema,
9867
9964
  target: referenceSchema,
9868
- branch: id$2.optional()
9965
+ branch: id$3.optional()
9869
9966
  }),
9870
9967
  strictObject({
9871
9968
  op: literal("text.edit"),
9872
9969
  node: referenceSchema,
9873
9970
  field: _enum(["code", "prompt"]),
9874
- oldText: id$2,
9971
+ oldText: id$3,
9875
9972
  newText: string$1()
9876
9973
  }),
9877
9974
  strictObject({
@@ -9882,15 +9979,15 @@ var authoringEditSchema = discriminatedUnion("op", [
9882
9979
  })
9883
9980
  ]);
9884
9981
  var authoringRequestSchema = strictObject({
9885
- baseRevision: id$2,
9886
- requestId: id$2.max(256),
9982
+ baseRevision: id$3,
9983
+ requestId: id$3.max(256),
9887
9984
  edits: array(authoringEditSchema).min(1).max(1e3)
9888
9985
  });
9889
9986
  var authoringReadSchema = strictObject({
9890
- revision: id$2.optional().describe("Fixed revision from a previous read; omit to read the current draft."),
9891
- nodes: array(id$2).min(1).max(100).optional().describe("Node references to read in one batch. Mutually exclusive with text. Long texts return metadata."),
9987
+ revision: id$3.optional().describe("Fixed revision from a previous read; omit to read the current draft."),
9988
+ nodes: array(id$3).min(1).max(100).optional().describe("Node references to read in one batch. Mutually exclusive with text. Long texts return metadata."),
9892
9989
  text: strictObject({
9893
- node: id$2,
9990
+ node: id$3,
9894
9991
  field: _enum(["code", "prompt"]),
9895
9992
  start: int().positive().default(1),
9896
9993
  lines: int().min(1).max(200).default(80)
@@ -9899,42 +9996,43 @@ var authoringReadSchema = strictObject({
9899
9996
  not: { required: ["nodes", "text"] },
9900
9997
  description: "Omit nodes and text for an outline; provide nodes for details, or text for an excerpt."
9901
9998
  });
9902
- strictObject({ revisionId: id$2 });
9999
+ strictObject({ revisionId: id$3 });
9903
10000
  var authoringSearchSchema = strictObject({
9904
- revision: id$2.optional(),
9905
- query: id$2.max(1e3),
10001
+ revision: id$3.optional(),
10002
+ query: id$3.max(1e3),
9906
10003
  type: type.optional(),
9907
10004
  offset: int().nonnegative().default(0),
9908
10005
  limit: int().min(1).max(100).default(20)
9909
10006
  });
9910
10007
  var authoringSchemaQuery = strictObject({
9911
10008
  type: type.optional(),
9912
- action: id$2.optional()
10009
+ action: id$3.optional()
9913
10010
  }).refine((v) => v.type == null || v.action == null, "Choose type or action.");
10011
+ `${[...findEngineContract(currentEngineContract).builtinModules].filter((name) => !name.startsWith("node:")).join(", ")}`;
9914
10012
  var authoringDiagnosticSchema = object({
9915
- code: id$2,
10013
+ code: id$3,
9916
10014
  message: string$1(),
9917
- nodes: array(id$2),
10015
+ nodes: array(id$3),
9918
10016
  field: string$1().optional(),
9919
10017
  line: number().optional(),
9920
10018
  column: number().optional()
9921
10019
  });
9922
10020
  var authoringCheckResponse = object({
9923
- flowId: id$2,
9924
- revisionId: id$2,
10021
+ flowId: id$3,
10022
+ revisionId: id$3,
9925
10023
  valid: boolean(),
9926
10024
  diagnostics: array(authoringDiagnosticSchema),
9927
10025
  version: literal(1)
9928
10026
  });
9929
10027
  var authoringEditResponse = object({
9930
- flowId: id$2,
10028
+ flowId: id$3,
9931
10029
  saved: literal(true),
9932
- revision: id$2,
9933
- nodes: record$2(id$2, id$2),
10030
+ revision: id$3,
10031
+ nodes: record$2(id$3, id$3),
9934
10032
  changes: array(object({
9935
10033
  index: int(),
9936
- op: id$2,
9937
- node: id$2.optional()
10034
+ op: id$3,
10035
+ node: id$3.optional()
9938
10036
  })),
9939
10037
  validation: object({
9940
10038
  status: _enum([
@@ -9947,8 +10045,8 @@ var authoringEditResponse = object({
9947
10045
  version: literal(1)
9948
10046
  });
9949
10047
  var authoringReadResponse = object({
9950
- flowId: id$2,
9951
- revision: id$2,
10048
+ flowId: id$3,
10049
+ revision: id$3,
9952
10050
  data: object({
9953
10051
  nodes: array(record$2(string$1(), json$2)).optional(),
9954
10052
  edges: array(json$2).optional(),
@@ -9957,12 +10055,12 @@ var authoringReadResponse = object({
9957
10055
  version: literal(1)
9958
10056
  });
9959
10057
  var authoringSearchResponse = object({
9960
- flowId: id$2,
9961
- revision: id$2,
10058
+ flowId: id$3,
10059
+ revision: id$3,
9962
10060
  data: object({
9963
10061
  matches: array(object({
9964
- node: id$2.optional(),
9965
- field: id$2,
10062
+ node: id$3.optional(),
10063
+ field: id$3,
9966
10064
  line: int().optional(),
9967
10065
  excerpt: string$1()
9968
10066
  })),
@@ -9980,35 +10078,6 @@ var resultQuerySchema = strictObject({
9980
10078
  maxBytes: number().int().min(1).max(1048576).default(15e3)
9981
10079
  });
9982
10080
  //#endregion
9983
- //#region src/execution/common/engineContract.ts
9984
- var currentEngineContract = "open-flow-engine/v8";
9985
- `${JSON.stringify(currentEngineContract)}`, new Set([
9986
- "assert",
9987
- "assert/strict",
9988
- "buffer",
9989
- "console",
9990
- "constants",
9991
- "crypto",
9992
- "events",
9993
- "fs",
9994
- "fs/promises",
9995
- "os",
9996
- "path",
9997
- "path/posix",
9998
- "process",
9999
- "punycode",
10000
- "querystring",
10001
- "stream",
10002
- "stream/promises",
10003
- "stream/web",
10004
- "string_decoder",
10005
- "timers",
10006
- "timers/promises",
10007
- "url",
10008
- "util",
10009
- "zlib"
10010
- ].flatMap((name) => [name, `node:${name}`])), `${JSON.stringify("open-flow-engine/v8/nodejs-compat-v1")}`;
10011
- //#endregion
10012
10081
  //#region src/workflow/common/workflow.ts
10013
10082
  var portSchema = object({
10014
10083
  handle: string$1().min(1),
@@ -10572,7 +10641,7 @@ function decodeEntries(values, current) {
10572
10641
  return parsed.data;
10573
10642
  }
10574
10643
  //#endregion
10575
- //#region src/control/common/providerIconSprite.ts
10644
+ //#region src/connector/common/providerIconSprite.ts
10576
10645
  /** Optional artwork must never make an otherwise usable catalog unavailable. */
10577
10646
  function providerIconAppearance(metadata, position) {
10578
10647
  if (!metadata || typeof metadata != "object" || !position || typeof position != "object") return {};
@@ -11004,6 +11073,30 @@ function connectorProvider(value) {
11004
11073
  };
11005
11074
  }
11006
11075
  //#endregion
11076
+ //#region src/event-source/common/view.ts
11077
+ var id$2 = string$1().min(1).max(256);
11078
+ /** Public projection of a source that Connector validates and Open Flow exposes unchanged. */
11079
+ var eventSourceViewSchema = object({
11080
+ appId: id$2.nullable(),
11081
+ workspaceId: id$2.optional(),
11082
+ installationId: id$2.optional(),
11083
+ organizationId: id$2.optional(),
11084
+ projectId: id$2.optional(),
11085
+ projectKey: id$2.optional(),
11086
+ subscriptionStatus: _enum([
11087
+ "idle",
11088
+ "pending",
11089
+ "ready",
11090
+ "error"
11091
+ ]).optional(),
11092
+ lastError: string$1().optional(),
11093
+ signingSecretConfigured: boolean().optional(),
11094
+ manageSubscriptions: boolean().nullable(),
11095
+ verificationTokenConfigured: boolean().nullable(),
11096
+ encryptKeyConfigured: boolean().nullable(),
11097
+ verifiedAt: string$1().nullable()
11098
+ });
11099
+ //#endregion
11007
11100
  //#region src/control/common/eventSources.ts
11008
11101
  var id$1 = string$1().min(1).max(256);
11009
11102
  var eventType = string$1().regex(/^[a-z][a-z0-9_.:]{0,127}$/);
@@ -11023,29 +11116,12 @@ var eventSourceSchema = object({
11023
11116
  "fireflies",
11024
11117
  "jira"
11025
11118
  ]),
11026
- appId: id$1.nullable(),
11027
- workspaceId: id$1.optional(),
11028
- installationId: id$1.optional(),
11029
- organizationId: id$1.optional(),
11030
- projectId: id$1.optional(),
11031
- projectKey: id$1.optional(),
11032
- subscriptionStatus: _enum([
11033
- "idle",
11034
- "pending",
11035
- "ready",
11036
- "error"
11037
- ]).optional(),
11038
- lastError: string$1().optional(),
11039
- signingSecretConfigured: boolean().optional(),
11119
+ ...eventSourceViewSchema.shape,
11040
11120
  connectionId: id$1,
11041
11121
  teamId: id$1.nullable(),
11042
11122
  enabled: boolean(),
11043
11123
  eventTypes: array(eventType),
11044
- manageSubscriptions: boolean().nullable(),
11045
- verificationTokenConfigured: boolean().nullable(),
11046
- encryptKeyConfigured: boolean().nullable(),
11047
11124
  endpointUrl: string$1().nullable(),
11048
- verifiedAt: string$1().nullable(),
11049
11125
  lastReceivedAt: string$1().nullable(),
11050
11126
  updatedAt: string$1(),
11051
11127
  consumers: array(object({
@@ -11054,21 +11130,6 @@ var eventSourceSchema = object({
11054
11130
  triggerNodeId: id$1
11055
11131
  }))
11056
11132
  });
11057
- eventSourceSchema.pick({
11058
- appId: true,
11059
- workspaceId: true,
11060
- installationId: true,
11061
- organizationId: true,
11062
- projectId: true,
11063
- projectKey: true,
11064
- subscriptionStatus: true,
11065
- lastError: true,
11066
- signingSecretConfigured: true,
11067
- manageSubscriptions: true,
11068
- verificationTokenConfigured: true,
11069
- encryptKeyConfigured: true,
11070
- verifiedAt: true
11071
- });
11072
11133
  function decodeEventSource(value) {
11073
11134
  return eventSourceSchema.parse(value);
11074
11135
  }
@@ -1,4 +1,4 @@
1
- import type { JsonValue, ManagedTaskDefinition } from './flow-change.js';
1
+ import type { JsonValue, ManagedTaskDefinitionOf, TaskExecutor } from './flow-model.js';
2
2
  type ObjectValue = {
3
3
  [key: string]: JsonValue;
4
4
  };
@@ -36,14 +36,14 @@ export declare function securityOptions(value: JsonValue, path: string, method:
36
36
  }[];
37
37
  export declare function snapshot(documentValue: JsonValue, path: string, method: string): JsonValue;
38
38
  export declare function authHandles(auth: readonly OpenApiAuth[]): string[];
39
- export declare function openApiTask(config: OpenApiExecutor, name?: string): ManagedTaskDefinition;
39
+ export declare function openApiTask(config: OpenApiExecutor, name?: string): ManagedTaskDefinitionOf<OpenApiExecutor>;
40
40
  export interface OpenApiFieldIssue {
41
41
  readonly field: 'sourceUrl' | 'operation' | 'serverUrl';
42
42
  readonly message: string;
43
43
  }
44
44
  /** The canvas validator and property panel share the same configuration contract. */
45
- export declare function openApiFieldIssues(task: ManagedTaskDefinition): OpenApiFieldIssue[];
46
- export declare function openApiIssues(task: ManagedTaskDefinition): string[];
45
+ export declare function openApiFieldIssues<Executor extends TaskExecutor>(task: ManagedTaskDefinitionOf<Executor>): OpenApiFieldIssue[];
46
+ export declare function openApiIssues(task: ManagedTaskDefinitionOf<TaskExecutor>): string[];
47
47
  export declare function selectOperation(value: JsonValue, sourceUrl: string, path: string, method: string): OpenApiExecutor;
48
48
  export declare function buildRequest(config: OpenApiExecutor, input: Readonly<Record<string, JsonValue>>): {
49
49
  url: string;
@@ -3946,6 +3946,9 @@ function schema(doc, schemaValue) {
3946
3946
  ...Object.keys(defs).length ? { $defs: defs } : {}
3947
3947
  };
3948
3948
  }
3949
+ function isOpenApiExecutor(executor) {
3950
+ return executor.kind == "openapi";
3951
+ }
3949
3952
  function parameters(config) {
3950
3953
  const doc = parseOpenApi(config.document);
3951
3954
  const { item, op } = operation(doc, config.path, config.method);
@@ -4067,7 +4070,7 @@ function inlineSchema(value, index) {
4067
4070
  }
4068
4071
  /** The canvas validator and property panel share the same configuration contract. */
4069
4072
  function openApiFieldIssues(task) {
4070
- if (task.executor.kind != "openapi") return [];
4073
+ if (!isOpenApiExecutor(task.executor)) return [];
4071
4074
  const config = task.executor;
4072
4075
  let field = "sourceUrl";
4073
4076
  try {
@@ -1,7 +1,8 @@
1
1
  export { resolveTriggerConfig, triggerConfigValues } from './trigger-config.js';
2
2
  import type { ConnectorProxy } from './connector-proxy.js';
3
- import type { JsonValue, TriggerKeySnapshot, TriggerSchedule } from './flow-change.js';
3
+ import type { JsonValue } from './flow-model.js';
4
4
  import type { TriggerConfigOption, TriggerConfigOptionsContext } from './trigger-config-options.js';
5
+ import type { TriggerKeySnapshot, TriggerSchedule } from './trigger-model.js';
5
6
  export declare const maximumPollCheckpointBytes: number;
6
7
  export declare const maximumPollDedupeKeyBytes = 1024;
7
8
  export declare const maximumPollEventsPerPage = 100;