@lunnoa/client 2.3.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/react.d.cts CHANGED
@@ -810,13 +810,18 @@ interface components {
810
810
  requestedCount: number;
811
811
  };
812
812
  UpsertWorkflowStepDto: {
813
+ /**
814
+ * @description Name later steps use in ={{step:<key>,path}}. Keyed steps keep their node id across deploys. "trigger" is reserved.
815
+ * @example loadCase
816
+ */
817
+ key?: string;
813
818
  /** @description Workflow app id (catalogue slug). */
814
819
  appId: string;
815
820
  /** @description Catalogue action id. */
816
821
  actionId: string;
817
822
  /** @description Connection instance UUID for this step. */
818
823
  connectionId?: string;
819
- /** @description Action input / config fields. */
824
+ /** @description Action input / config fields. String values may use ={{step:trigger,field}} or ={{step:<key>,path,to,value}}. */
820
825
  input?: {
821
826
  [key: string]: unknown;
822
827
  };
@@ -824,6 +829,24 @@ interface components {
824
829
  name?: string;
825
830
  /** @description Step description. */
826
831
  description?: string;
832
+ /** @description Branches after this step. Only on flow-control_action_conditional-paths, flow-control_action_manually-decide-paths, or flow-control_action_request-approval (approved path first, then rejected), and only on the last step of a list. */
833
+ paths?: components["schemas"]["UpsertWorkflowPathDto"][];
834
+ };
835
+ UpsertWorkflowPathConditionDto: {
836
+ /** @description One step reference, e.g. ={{step:load,amount}}. */
837
+ field: string;
838
+ /** @description contains, does_not_contain, equals, does_not_equal, exists, does_not_exist, starts_with, ends_with, is_empty, is_not_empty, comes_before, comes_after, is_in_the_past, is_in_the_future, is_true, is_false, is_truthy, is_falsey, is_greater_than, is_less_than, is_greater_than_or_equal_to, is_less_than_or_equal_to, matches_regex, does_not_match_regex. */
839
+ condition: string;
840
+ /** @description Value to compare with. */
841
+ value?: string;
842
+ };
843
+ UpsertWorkflowPathDto: {
844
+ /** @description Path label, unique on its step. */
845
+ label: string;
846
+ /** @description Conditional Paths only. Groups are OR-ed, conditions inside a group AND-ed. Omit to always take this path. */
847
+ when?: components["schemas"]["UpsertWorkflowPathConditionDto"][][];
848
+ /** @description Steps on this path. */
849
+ steps: components["schemas"]["UpsertWorkflowStepDto"][];
827
850
  };
828
851
  UpsertWorkflowTriggerInputFieldDto: {
829
852
  /** @description Field id. Callers pass this key to workflows.execute. */
@@ -873,7 +896,7 @@ interface components {
873
896
  isActive?: boolean;
874
897
  /** @description Catalogue trigger. Omit for a Manually Run trigger with no input fields. */
875
898
  trigger?: components["schemas"]["UpsertWorkflowTriggerDto"];
876
- /** @description Linear catalogue-action steps (v1; no branches). */
899
+ /** @description Catalogue-action steps in order. The last step may branch with `paths`. */
877
900
  steps: components["schemas"]["UpsertWorkflowStepDto"][];
878
901
  /** @description Marks the row as managed by code (CLI / SDK). Defaults to true on this endpoint. */
879
902
  managedByCode?: boolean;
@@ -1975,6 +1998,8 @@ interface components {
1975
1998
  executionPath?: components["schemas"]["ExecutionPathStepDto"][];
1976
1999
  };
1977
2000
  RunStepDto: {
2001
+ /** @description Name later steps use in ={{step:<key>,path}}. Ad-hoc runs have no trigger. */
2002
+ key?: string;
1978
2003
  /** @description Workflow app id (catalogue slug), e.g. `http`, `gmail`. */
1979
2004
  appId: string;
1980
2005
  /** @description Action id within the app, e.g. `http_action_send-request`. Discover via GET /workflow-apps. */
@@ -2761,11 +2786,42 @@ interface TriggerDefinition {
2761
2786
  description?: string;
2762
2787
  }
2763
2788
  interface WorkflowStepDefinition {
2789
+ /**
2790
+ * Name later steps use with `ref.step(key, ...)`. Keyed steps keep their
2791
+ * node id across deploys. `trigger` is reserved.
2792
+ */
2793
+ key?: string;
2764
2794
  /** Action definition (or inline action-shaped object). */
2765
2795
  use: ActionDefinition;
2766
- /** Per-step input overrides. */
2796
+ /** Per-step input overrides. Values may contain `ref.trigger` / `ref.step`. */
2767
2797
  input?: Record<string, unknown>;
2768
2798
  name?: string;
2799
+ /**
2800
+ * Branches after this step. Only on Conditional Paths, Manually Decide Path,
2801
+ * or Request Approval (approved path first, then rejected), and only on the
2802
+ * last step of a list. Put later steps inside each path.
2803
+ */
2804
+ paths?: WorkflowPathDefinition[];
2805
+ }
2806
+ /** Conditions Conditional Paths evaluates (same list as the builder). */
2807
+ declare const PATH_CONDITIONS: readonly ["contains", "does_not_contain", "equals", "does_not_equal", "exists", "does_not_exist", "starts_with", "ends_with", "is_empty", "is_not_empty", "comes_before", "comes_after", "is_in_the_past", "is_in_the_future", "is_true", "is_false", "is_truthy", "is_falsey", "is_greater_than", "is_less_than", "is_greater_than_or_equal_to", "is_less_than_or_equal_to", "matches_regex", "does_not_match_regex"];
2808
+ type PathConditionType = (typeof PATH_CONDITIONS)[number];
2809
+ interface PathCondition {
2810
+ /** One reference: `ref.trigger(...)` or `ref.step(...)`. */
2811
+ field: string;
2812
+ condition: PathConditionType;
2813
+ /** Compared as text. Omit for exists / is_empty / is_true and similar. */
2814
+ value?: string;
2815
+ }
2816
+ interface WorkflowPathDefinition {
2817
+ /** Unique on its step. On Request Approval use `Approved` / `Rejected`. */
2818
+ label: string;
2819
+ /**
2820
+ * Conditional Paths only. Groups are OR-ed, conditions in a group AND-ed.
2821
+ * Omit to always take this path.
2822
+ */
2823
+ when?: PathCondition[][];
2824
+ steps: WorkflowStepDefinition[];
2769
2825
  }
2770
2826
  interface WorkflowDefinition {
2771
2827
  kind: typeof DEFINE_KINDS.workflow;
@@ -2779,7 +2835,7 @@ interface WorkflowDefinition {
2779
2835
  * `runs.start` ignores this and runs the steps only.
2780
2836
  */
2781
2837
  trigger?: TriggerDefinition;
2782
- /** Linear steps (v1; no branches). */
2838
+ /** Steps in order. The last step may branch with `paths`. */
2783
2839
  steps: WorkflowStepDefinition[];
2784
2840
  }
2785
2841
  type AgentToolDefinition = ActionDefinition | WorkflowDefinition | {
@@ -3390,6 +3446,8 @@ declare class QueuesResource {
3390
3446
  }
3391
3447
 
3392
3448
  interface StartRunStep {
3449
+ /** Name later steps use with `ref.step(key, ...)`. */
3450
+ key?: string;
3393
3451
  appId: string;
3394
3452
  actionId: string;
3395
3453
  connectionId?: string;
@@ -3542,12 +3600,21 @@ declare class VariablesResource {
3542
3600
  }
3543
3601
 
3544
3602
  interface UpsertWorkflowStepInput {
3603
+ /** Name later steps use in `={{step:<key>,path}}`. Keeps the node id stable. */
3604
+ key?: string;
3545
3605
  appId: string;
3546
3606
  actionId: string;
3547
3607
  connectionId?: string;
3548
3608
  input?: Record<string, unknown>;
3549
3609
  name?: string;
3550
3610
  description?: string;
3611
+ /** Branches after this step (last step of a list only). */
3612
+ paths?: UpsertWorkflowPathInput[];
3613
+ }
3614
+ interface UpsertWorkflowPathInput {
3615
+ label: string;
3616
+ when?: WorkflowPathDefinition['when'];
3617
+ steps: UpsertWorkflowStepInput[];
3551
3618
  }
3552
3619
  interface UpsertWorkflowTriggerInput {
3553
3620
  triggerId: string;
package/dist/react.d.ts CHANGED
@@ -810,13 +810,18 @@ interface components {
810
810
  requestedCount: number;
811
811
  };
812
812
  UpsertWorkflowStepDto: {
813
+ /**
814
+ * @description Name later steps use in ={{step:<key>,path}}. Keyed steps keep their node id across deploys. "trigger" is reserved.
815
+ * @example loadCase
816
+ */
817
+ key?: string;
813
818
  /** @description Workflow app id (catalogue slug). */
814
819
  appId: string;
815
820
  /** @description Catalogue action id. */
816
821
  actionId: string;
817
822
  /** @description Connection instance UUID for this step. */
818
823
  connectionId?: string;
819
- /** @description Action input / config fields. */
824
+ /** @description Action input / config fields. String values may use ={{step:trigger,field}} or ={{step:<key>,path,to,value}}. */
820
825
  input?: {
821
826
  [key: string]: unknown;
822
827
  };
@@ -824,6 +829,24 @@ interface components {
824
829
  name?: string;
825
830
  /** @description Step description. */
826
831
  description?: string;
832
+ /** @description Branches after this step. Only on flow-control_action_conditional-paths, flow-control_action_manually-decide-paths, or flow-control_action_request-approval (approved path first, then rejected), and only on the last step of a list. */
833
+ paths?: components["schemas"]["UpsertWorkflowPathDto"][];
834
+ };
835
+ UpsertWorkflowPathConditionDto: {
836
+ /** @description One step reference, e.g. ={{step:load,amount}}. */
837
+ field: string;
838
+ /** @description contains, does_not_contain, equals, does_not_equal, exists, does_not_exist, starts_with, ends_with, is_empty, is_not_empty, comes_before, comes_after, is_in_the_past, is_in_the_future, is_true, is_false, is_truthy, is_falsey, is_greater_than, is_less_than, is_greater_than_or_equal_to, is_less_than_or_equal_to, matches_regex, does_not_match_regex. */
839
+ condition: string;
840
+ /** @description Value to compare with. */
841
+ value?: string;
842
+ };
843
+ UpsertWorkflowPathDto: {
844
+ /** @description Path label, unique on its step. */
845
+ label: string;
846
+ /** @description Conditional Paths only. Groups are OR-ed, conditions inside a group AND-ed. Omit to always take this path. */
847
+ when?: components["schemas"]["UpsertWorkflowPathConditionDto"][][];
848
+ /** @description Steps on this path. */
849
+ steps: components["schemas"]["UpsertWorkflowStepDto"][];
827
850
  };
828
851
  UpsertWorkflowTriggerInputFieldDto: {
829
852
  /** @description Field id. Callers pass this key to workflows.execute. */
@@ -873,7 +896,7 @@ interface components {
873
896
  isActive?: boolean;
874
897
  /** @description Catalogue trigger. Omit for a Manually Run trigger with no input fields. */
875
898
  trigger?: components["schemas"]["UpsertWorkflowTriggerDto"];
876
- /** @description Linear catalogue-action steps (v1; no branches). */
899
+ /** @description Catalogue-action steps in order. The last step may branch with `paths`. */
877
900
  steps: components["schemas"]["UpsertWorkflowStepDto"][];
878
901
  /** @description Marks the row as managed by code (CLI / SDK). Defaults to true on this endpoint. */
879
902
  managedByCode?: boolean;
@@ -1975,6 +1998,8 @@ interface components {
1975
1998
  executionPath?: components["schemas"]["ExecutionPathStepDto"][];
1976
1999
  };
1977
2000
  RunStepDto: {
2001
+ /** @description Name later steps use in ={{step:<key>,path}}. Ad-hoc runs have no trigger. */
2002
+ key?: string;
1978
2003
  /** @description Workflow app id (catalogue slug), e.g. `http`, `gmail`. */
1979
2004
  appId: string;
1980
2005
  /** @description Action id within the app, e.g. `http_action_send-request`. Discover via GET /workflow-apps. */
@@ -2761,11 +2786,42 @@ interface TriggerDefinition {
2761
2786
  description?: string;
2762
2787
  }
2763
2788
  interface WorkflowStepDefinition {
2789
+ /**
2790
+ * Name later steps use with `ref.step(key, ...)`. Keyed steps keep their
2791
+ * node id across deploys. `trigger` is reserved.
2792
+ */
2793
+ key?: string;
2764
2794
  /** Action definition (or inline action-shaped object). */
2765
2795
  use: ActionDefinition;
2766
- /** Per-step input overrides. */
2796
+ /** Per-step input overrides. Values may contain `ref.trigger` / `ref.step`. */
2767
2797
  input?: Record<string, unknown>;
2768
2798
  name?: string;
2799
+ /**
2800
+ * Branches after this step. Only on Conditional Paths, Manually Decide Path,
2801
+ * or Request Approval (approved path first, then rejected), and only on the
2802
+ * last step of a list. Put later steps inside each path.
2803
+ */
2804
+ paths?: WorkflowPathDefinition[];
2805
+ }
2806
+ /** Conditions Conditional Paths evaluates (same list as the builder). */
2807
+ declare const PATH_CONDITIONS: readonly ["contains", "does_not_contain", "equals", "does_not_equal", "exists", "does_not_exist", "starts_with", "ends_with", "is_empty", "is_not_empty", "comes_before", "comes_after", "is_in_the_past", "is_in_the_future", "is_true", "is_false", "is_truthy", "is_falsey", "is_greater_than", "is_less_than", "is_greater_than_or_equal_to", "is_less_than_or_equal_to", "matches_regex", "does_not_match_regex"];
2808
+ type PathConditionType = (typeof PATH_CONDITIONS)[number];
2809
+ interface PathCondition {
2810
+ /** One reference: `ref.trigger(...)` or `ref.step(...)`. */
2811
+ field: string;
2812
+ condition: PathConditionType;
2813
+ /** Compared as text. Omit for exists / is_empty / is_true and similar. */
2814
+ value?: string;
2815
+ }
2816
+ interface WorkflowPathDefinition {
2817
+ /** Unique on its step. On Request Approval use `Approved` / `Rejected`. */
2818
+ label: string;
2819
+ /**
2820
+ * Conditional Paths only. Groups are OR-ed, conditions in a group AND-ed.
2821
+ * Omit to always take this path.
2822
+ */
2823
+ when?: PathCondition[][];
2824
+ steps: WorkflowStepDefinition[];
2769
2825
  }
2770
2826
  interface WorkflowDefinition {
2771
2827
  kind: typeof DEFINE_KINDS.workflow;
@@ -2779,7 +2835,7 @@ interface WorkflowDefinition {
2779
2835
  * `runs.start` ignores this and runs the steps only.
2780
2836
  */
2781
2837
  trigger?: TriggerDefinition;
2782
- /** Linear steps (v1; no branches). */
2838
+ /** Steps in order. The last step may branch with `paths`. */
2783
2839
  steps: WorkflowStepDefinition[];
2784
2840
  }
2785
2841
  type AgentToolDefinition = ActionDefinition | WorkflowDefinition | {
@@ -3390,6 +3446,8 @@ declare class QueuesResource {
3390
3446
  }
3391
3447
 
3392
3448
  interface StartRunStep {
3449
+ /** Name later steps use with `ref.step(key, ...)`. */
3450
+ key?: string;
3393
3451
  appId: string;
3394
3452
  actionId: string;
3395
3453
  connectionId?: string;
@@ -3542,12 +3600,21 @@ declare class VariablesResource {
3542
3600
  }
3543
3601
 
3544
3602
  interface UpsertWorkflowStepInput {
3603
+ /** Name later steps use in `={{step:<key>,path}}`. Keeps the node id stable. */
3604
+ key?: string;
3545
3605
  appId: string;
3546
3606
  actionId: string;
3547
3607
  connectionId?: string;
3548
3608
  input?: Record<string, unknown>;
3549
3609
  name?: string;
3550
3610
  description?: string;
3611
+ /** Branches after this step (last step of a list only). */
3612
+ paths?: UpsertWorkflowPathInput[];
3613
+ }
3614
+ interface UpsertWorkflowPathInput {
3615
+ label: string;
3616
+ when?: WorkflowPathDefinition['when'];
3617
+ steps: UpsertWorkflowStepInput[];
3551
3618
  }
3552
3619
  interface UpsertWorkflowTriggerInput {
3553
3620
  triggerId: string;
package/dist/react.js CHANGED
@@ -584,6 +584,33 @@ var ActionsResource = class {
584
584
  var DEFINE_KINDS = {
585
585
  action: "action",
586
586
  workflow: "workflow"};
587
+ var PATH_CONDITIONS = [
588
+ "contains",
589
+ "does_not_contain",
590
+ "equals",
591
+ "does_not_equal",
592
+ "exists",
593
+ "does_not_exist",
594
+ "starts_with",
595
+ "ends_with",
596
+ "is_empty",
597
+ "is_not_empty",
598
+ "comes_before",
599
+ "comes_after",
600
+ "is_in_the_past",
601
+ "is_in_the_future",
602
+ "is_true",
603
+ "is_false",
604
+ "is_truthy",
605
+ "is_falsey",
606
+ "is_greater_than",
607
+ "is_less_than",
608
+ "is_greater_than_or_equal_to",
609
+ "is_less_than_or_equal_to",
610
+ "matches_regex",
611
+ "does_not_match_regex"
612
+ ];
613
+ new Set(PATH_CONDITIONS);
587
614
  function resolveActionAppId(action) {
588
615
  if (action.appId?.trim()) {
589
616
  return action.appId.trim();
@@ -1843,12 +1870,19 @@ function stepFromDefinition(step) {
1843
1870
  ...step.name ? { name: step.name } : {}
1844
1871
  };
1845
1872
  }
1873
+ if (step.paths?.length) {
1874
+ throw new Error(
1875
+ "runs.start runs straight lines only. Deploy workflows with paths, then execute them."
1876
+ );
1877
+ }
1846
1878
  const use = step.use;
1847
1879
  const input = {
1848
1880
  ...use.input ?? {},
1849
1881
  ...step.input ?? {}
1850
1882
  };
1883
+ const key = step.key;
1851
1884
  return {
1885
+ ...key ? { key } : {},
1852
1886
  appId: resolveActionAppId(use),
1853
1887
  actionId: resolveActionId(use),
1854
1888
  ...use.connection?.id ? { connectionId: use.connection.id } : {},
@@ -2064,6 +2098,7 @@ function triggerToUpsertInput(trigger) {
2064
2098
  function stepToUpsertInput(step) {
2065
2099
  const use = step.use;
2066
2100
  return {
2101
+ ...step.key ? { key: step.key } : {},
2067
2102
  appId: resolveActionAppId(use),
2068
2103
  actionId: resolveActionId(use),
2069
2104
  connectionId: use.connection?.id,
@@ -2072,7 +2107,14 @@ function stepToUpsertInput(step) {
2072
2107
  ...step.input ?? {}
2073
2108
  },
2074
2109
  name: step.name ?? use.name,
2075
- description: use.description
2110
+ description: use.description,
2111
+ ...step.paths?.length ? {
2112
+ paths: step.paths.map((path) => ({
2113
+ label: path.label,
2114
+ ...path.when ? { when: path.when } : {},
2115
+ steps: path.steps.map(stepToUpsertInput)
2116
+ }))
2117
+ } : {}
2076
2118
  };
2077
2119
  }
2078
2120
  function workflowDefinitionToUpsert(def) {