@xyne/workflow-sdk 2.7.0 → 3.0.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/agents/agent-step.d.ts +6 -6
- package/dist/ai-builder/client.d.ts +7 -1
- package/dist/ai-builder/client.d.ts.map +1 -1
- package/dist/ai-builder/client.js +86 -0
- package/dist/ai-builder/client.js.map +1 -1
- package/dist/ai-builder/index.d.ts +1 -1
- package/dist/ai-builder/index.d.ts.map +1 -1
- package/dist/ai-builder/index.js.map +1 -1
- package/dist/ai-builder/types.d.ts +19 -0
- package/dist/ai-builder/types.d.ts.map +1 -1
- package/dist/client/types.d.ts +2 -0
- package/dist/client/types.d.ts.map +1 -1
- package/dist/client/workflow-client.d.ts.map +1 -1
- package/dist/client/workflow-client.js +2 -6
- package/dist/client/workflow-client.js.map +1 -1
- package/dist/common/attachment.d.ts +25 -0
- package/dist/common/attachment.d.ts.map +1 -1
- package/dist/common/attachment.js +50 -0
- package/dist/common/attachment.js.map +1 -1
- package/dist/common/index.d.ts +3 -1
- package/dist/common/index.d.ts.map +1 -1
- package/dist/common/index.js +2 -1
- package/dist/common/index.js.map +1 -1
- package/dist/common/validate-payload.d.ts +25 -0
- package/dist/common/validate-payload.d.ts.map +1 -0
- package/dist/common/validate-payload.js +74 -0
- package/dist/common/validate-payload.js.map +1 -0
- package/dist/engine/available-context.d.ts +1 -1
- package/dist/engine/available-context.d.ts.map +1 -1
- package/dist/engine/available-context.js +36 -3
- package/dist/engine/available-context.js.map +1 -1
- package/dist/engine/config-validator.js +1 -1
- package/dist/engine/config-validator.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/router/workflow-router.d.ts.map +1 -1
- package/dist/router/workflow-router.js +86 -34
- package/dist/router/workflow-router.js.map +1 -1
- package/dist/runtime/workflow-runtime.d.ts +8 -5
- package/dist/runtime/workflow-runtime.d.ts.map +1 -1
- package/dist/runtime/workflow-runtime.js +19 -47
- package/dist/runtime/workflow-runtime.js.map +1 -1
- package/dist/steps/base-step.d.ts +10 -0
- package/dist/steps/base-step.d.ts.map +1 -1
- package/dist/steps/base-step.js +16 -0
- package/dist/steps/base-step.js.map +1 -1
- package/dist/steps/builtin/conditional.step.d.ts +38 -0
- package/dist/steps/builtin/conditional.step.d.ts.map +1 -1
- package/dist/steps/builtin/conditional.step.js +17 -6
- package/dist/steps/builtin/conditional.step.js.map +1 -1
- package/dist/steps/builtin/http-request.step.d.ts +2 -2
- package/dist/steps/builtin/parallel.step.d.ts +88 -34
- package/dist/steps/builtin/parallel.step.d.ts.map +1 -1
- package/dist/steps/builtin/parallel.step.js +23 -28
- package/dist/steps/builtin/parallel.step.js.map +1 -1
- package/dist/steps/builtin/switch.step.d.ts +37 -0
- package/dist/steps/builtin/switch.step.d.ts.map +1 -1
- package/dist/steps/builtin/switch.step.js +15 -6
- package/dist/steps/builtin/switch.step.js.map +1 -1
- package/dist/steps/builtin/wait.step.d.ts +12 -12
- package/dist/triggers/builtin/default-manual-trigger.d.ts +12 -86
- package/dist/triggers/builtin/default-manual-trigger.d.ts.map +1 -1
- package/dist/triggers/builtin/default-manual-trigger.js +14 -40
- package/dist/triggers/builtin/default-manual-trigger.js.map +1 -1
- package/package.json +1 -1
|
@@ -72,6 +72,17 @@ export interface ConditionalStepOutput extends Record<string, unknown> {
|
|
|
72
72
|
branch: 'if_true' | 'if_false' | 'none';
|
|
73
73
|
/** The boolean result of evaluating the condition. */
|
|
74
74
|
evaluated: boolean;
|
|
75
|
+
/**
|
|
76
|
+
* The taken branch's top-level steps, keyed by branch key (`if_true`/`if_false`)
|
|
77
|
+
* then step id — referenced as `…output.branches.<key>.steps.<id>.output.<field>`.
|
|
78
|
+
* Only the taken branch is populated (`{}` when `branch === 'none'`). The harness
|
|
79
|
+
* types both branches from `getBranches`.
|
|
80
|
+
*/
|
|
81
|
+
branches: Record<string, {
|
|
82
|
+
steps: Record<string, {
|
|
83
|
+
output: Record<string, unknown>;
|
|
84
|
+
}>;
|
|
85
|
+
}>;
|
|
75
86
|
}
|
|
76
87
|
export declare class ConditionalStep extends BaseControlFlowStep<typeof ConditionalStepConfigSchema, ConditionalStepOutput> {
|
|
77
88
|
readonly type = BuiltinStepType.CONDITIONAL;
|
|
@@ -123,12 +134,39 @@ export declare class ConditionalStep extends BaseControlFlowStep<typeof Conditio
|
|
|
123
134
|
readonly outputSchema: z.ZodObject<{
|
|
124
135
|
branch: z.ZodEnum<["if_true", "if_false", "none"]>;
|
|
125
136
|
evaluated: z.ZodBoolean;
|
|
137
|
+
branches: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
138
|
+
steps: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
139
|
+
output: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
140
|
+
}, "strip", z.ZodTypeAny, {
|
|
141
|
+
output: Record<string, unknown>;
|
|
142
|
+
}, {
|
|
143
|
+
output: Record<string, unknown>;
|
|
144
|
+
}>>;
|
|
145
|
+
}, "strip", z.ZodTypeAny, {
|
|
146
|
+
steps: Record<string, {
|
|
147
|
+
output: Record<string, unknown>;
|
|
148
|
+
}>;
|
|
149
|
+
}, {
|
|
150
|
+
steps: Record<string, {
|
|
151
|
+
output: Record<string, unknown>;
|
|
152
|
+
}>;
|
|
153
|
+
}>>;
|
|
126
154
|
}, "strip", z.ZodTypeAny, {
|
|
127
155
|
branch: "none" | "if_true" | "if_false";
|
|
128
156
|
evaluated: boolean;
|
|
157
|
+
branches: Record<string, {
|
|
158
|
+
steps: Record<string, {
|
|
159
|
+
output: Record<string, unknown>;
|
|
160
|
+
}>;
|
|
161
|
+
}>;
|
|
129
162
|
}, {
|
|
130
163
|
branch: "none" | "if_true" | "if_false";
|
|
131
164
|
evaluated: boolean;
|
|
165
|
+
branches: Record<string, {
|
|
166
|
+
steps: Record<string, {
|
|
167
|
+
output: Record<string, unknown>;
|
|
168
|
+
}>;
|
|
169
|
+
}>;
|
|
132
170
|
}>;
|
|
133
171
|
readonly category: "control";
|
|
134
172
|
readonly icon = "fork";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditional.step.d.ts","sourceRoot":"","sources":["../../../src/steps/builtin/conditional.step.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"conditional.step.d.ts","sourceRoot":"","sources":["../../../src/steps/builtin/conditional.step.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAsB,MAAM,iBAAiB,CAAC;AAC1E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAMzE,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAStC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAIhF,MAAM,WAAW,qBAAsB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACpE,2FAA2F;IAC3F,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IACxC,sDAAsD;IACtD,SAAS,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAC;CAC1F;AAUD,qBAAa,eAAgB,SAAQ,mBAAmB,CACtD,OAAO,2BAA2B,EAClC,qBAAqB,CACtB;IACC,SAAkB,IAAI,+BAA+B;IACrD,SAAkB,IAAI,iBAAiB;IACvC,SAAkB,WAAW,2CAA2C;IACxE,SAAkB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAA+B;IAC7D,SAAkB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAA+B;IAC7D,SAAkB,QAAQ,EAAG,SAAS,CAAU;IAChD,SAAkB,IAAI,UAAU;IAChC,SAAkB,eAAe;;;;;;OAGtB;IAEX,uEAAuE;IAC9D,WAAW,CAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAOxB,OAAO,CACpB,MAAM,EAAE,qBAAqB,EAC7B,GAAG,EAAE,2BAA2B,GAC/B,OAAO,CAAC,qBAAqB,CAAC;CA0BlC"}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* `walkBranchSteps` — same mechanism the PARALLEL and LOOP steps rely on.
|
|
20
20
|
*/
|
|
21
21
|
import { z } from 'zod';
|
|
22
|
-
import { BaseControlFlowStep } from '../base-step.js';
|
|
22
|
+
import { BaseControlFlowStep, collectBranchSteps } from '../base-step.js';
|
|
23
23
|
import { BuiltinStepType } from '../../types/known-types.js';
|
|
24
24
|
import { ConditionSchema } from '../../types/workflow-config.js';
|
|
25
25
|
import { ConditionEvaluator } from '../../engine/condition-evaluator.js';
|
|
@@ -33,6 +33,7 @@ export const ConditionalStepConfigSchema = z.object({
|
|
|
33
33
|
const ConditionalStepOutputSchema = z.object({
|
|
34
34
|
branch: z.enum(['if_true', 'if_false', 'none']),
|
|
35
35
|
evaluated: z.boolean(),
|
|
36
|
+
branches: z.record(z.object({ steps: z.record(z.object({ output: z.record(z.unknown()) })) })),
|
|
36
37
|
});
|
|
37
38
|
// ─── Step ───
|
|
38
39
|
export class ConditionalStep extends BaseControlFlowStep {
|
|
@@ -58,14 +59,24 @@ export class ConditionalStep extends BaseControlFlowStep {
|
|
|
58
59
|
const evaluator = new ConditionEvaluator();
|
|
59
60
|
const evaluated = evaluator.evaluate(config.condition, ctx.workflow);
|
|
60
61
|
if (evaluated) {
|
|
61
|
-
|
|
62
|
-
|
|
62
|
+
const branchSteps = config.if_true;
|
|
63
|
+
await ctx.walkBranch(branchSteps, ctx.workflow, 'if_true');
|
|
64
|
+
return {
|
|
65
|
+
branch: 'if_true',
|
|
66
|
+
evaluated: true,
|
|
67
|
+
branches: { if_true: { steps: collectBranchSteps(branchSteps, ctx.workflow) } },
|
|
68
|
+
};
|
|
63
69
|
}
|
|
64
70
|
if (config.if_false && config.if_false.length > 0) {
|
|
65
|
-
|
|
66
|
-
|
|
71
|
+
const branchSteps = config.if_false;
|
|
72
|
+
await ctx.walkBranch(branchSteps, ctx.workflow, 'if_false');
|
|
73
|
+
return {
|
|
74
|
+
branch: 'if_false',
|
|
75
|
+
evaluated: false,
|
|
76
|
+
branches: { if_false: { steps: collectBranchSteps(branchSteps, ctx.workflow) } },
|
|
77
|
+
};
|
|
67
78
|
}
|
|
68
|
-
return { branch: 'none', evaluated: false };
|
|
79
|
+
return { branch: 'none', evaluated: false, branches: {} };
|
|
69
80
|
}
|
|
70
81
|
}
|
|
71
82
|
//# sourceMappingURL=conditional.step.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditional.step.js","sourceRoot":"","sources":["../../../src/steps/builtin/conditional.step.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"conditional.step.js","sourceRoot":"","sources":["../../../src/steps/builtin/conditional.step.ts"],"names":[],"mappings":"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"}
|
|
@@ -872,8 +872,8 @@ export declare class HttpRequestStep extends BaseActionStep<typeof HttpRequestSt
|
|
|
872
872
|
duration: z.ZodNumber;
|
|
873
873
|
}, "strip", z.ZodTypeAny, {
|
|
874
874
|
status: number;
|
|
875
|
-
size: number;
|
|
876
875
|
headers: Record<string, string>;
|
|
876
|
+
size: number;
|
|
877
877
|
duration: number;
|
|
878
878
|
statusText: string;
|
|
879
879
|
ok: boolean;
|
|
@@ -881,8 +881,8 @@ export declare class HttpRequestStep extends BaseActionStep<typeof HttpRequestSt
|
|
|
881
881
|
body?: unknown;
|
|
882
882
|
}, {
|
|
883
883
|
status: number;
|
|
884
|
-
size: number;
|
|
885
884
|
headers: Record<string, string>;
|
|
885
|
+
size: number;
|
|
886
886
|
duration: number;
|
|
887
887
|
statusText: string;
|
|
888
888
|
ok: boolean;
|
|
@@ -60,14 +60,16 @@ export declare const ParallelStepConfigSchema: z.ZodObject<{
|
|
|
60
60
|
merge?: "allSettled" | "race" | undefined;
|
|
61
61
|
}>;
|
|
62
62
|
export type ParallelStepConfig = z.infer<typeof ParallelStepConfigSchema>;
|
|
63
|
-
/**
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
63
|
+
/**
|
|
64
|
+
* Per-branch result — the branch's TOP-LEVEL steps map (keyed by step id, each
|
|
65
|
+
* `{ output }`, mirroring the main context's `steps.<id>.output`), or a failure.
|
|
66
|
+
* Referenced as `…output.branches.<key>.steps.<id>.output.<field>`.
|
|
67
|
+
*/
|
|
68
68
|
export type ParallelSettledBranchResult = {
|
|
69
69
|
status: 'fulfilled';
|
|
70
|
-
|
|
70
|
+
steps: Record<string, {
|
|
71
|
+
output: Record<string, unknown>;
|
|
72
|
+
}>;
|
|
71
73
|
} | {
|
|
72
74
|
status: 'rejected';
|
|
73
75
|
reason: string;
|
|
@@ -78,8 +80,10 @@ export interface ParallelAllSettledOutput extends Record<string, unknown> {
|
|
|
78
80
|
}
|
|
79
81
|
export interface ParallelRaceOutput extends Record<string, unknown> {
|
|
80
82
|
mode: 'race';
|
|
81
|
-
|
|
82
|
-
|
|
83
|
+
/** Which branch won. */
|
|
84
|
+
branch: string;
|
|
85
|
+
/** Only the winner is populated; uniform `branches` shape with all control flow. */
|
|
86
|
+
branches: Record<string, ParallelSettledBranchResult>;
|
|
83
87
|
}
|
|
84
88
|
export type ParallelStepOutput = ParallelAllSettledOutput | ParallelRaceOutput;
|
|
85
89
|
export declare class ParallelStep extends BaseControlFlowStep<typeof ParallelStepConfigSchema, ParallelStepOutput> {
|
|
@@ -115,13 +119,23 @@ export declare class ParallelStep extends BaseControlFlowStep<typeof ParallelSte
|
|
|
115
119
|
mode: z.ZodLiteral<"allSettled">;
|
|
116
120
|
branches: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<"status", [z.ZodObject<{
|
|
117
121
|
status: z.ZodLiteral<"fulfilled">;
|
|
118
|
-
|
|
122
|
+
steps: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
123
|
+
output: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
124
|
+
}, "strip", z.ZodTypeAny, {
|
|
125
|
+
output: Record<string, unknown>;
|
|
126
|
+
}, {
|
|
127
|
+
output: Record<string, unknown>;
|
|
128
|
+
}>>;
|
|
119
129
|
}, "strip", z.ZodTypeAny, {
|
|
120
|
-
value: Record<string, unknown>;
|
|
121
130
|
status: "fulfilled";
|
|
131
|
+
steps: Record<string, {
|
|
132
|
+
output: Record<string, unknown>;
|
|
133
|
+
}>;
|
|
122
134
|
}, {
|
|
123
|
-
value: Record<string, unknown>;
|
|
124
135
|
status: "fulfilled";
|
|
136
|
+
steps: Record<string, {
|
|
137
|
+
output: Record<string, unknown>;
|
|
138
|
+
}>;
|
|
125
139
|
}>, z.ZodObject<{
|
|
126
140
|
status: z.ZodLiteral<"rejected">;
|
|
127
141
|
reason: z.ZodString;
|
|
@@ -133,45 +147,83 @@ export declare class ParallelStep extends BaseControlFlowStep<typeof ParallelSte
|
|
|
133
147
|
reason: string;
|
|
134
148
|
}>]>>;
|
|
135
149
|
}, "strip", z.ZodTypeAny, {
|
|
136
|
-
mode: "allSettled";
|
|
137
150
|
branches: Record<string, {
|
|
138
|
-
value: Record<string, unknown>;
|
|
139
151
|
status: "fulfilled";
|
|
152
|
+
steps: Record<string, {
|
|
153
|
+
output: Record<string, unknown>;
|
|
154
|
+
}>;
|
|
140
155
|
} | {
|
|
141
156
|
status: "rejected";
|
|
142
157
|
reason: string;
|
|
143
158
|
}>;
|
|
144
|
-
}, {
|
|
145
159
|
mode: "allSettled";
|
|
160
|
+
}, {
|
|
146
161
|
branches: Record<string, {
|
|
147
|
-
value: Record<string, unknown>;
|
|
148
162
|
status: "fulfilled";
|
|
163
|
+
steps: Record<string, {
|
|
164
|
+
output: Record<string, unknown>;
|
|
165
|
+
}>;
|
|
149
166
|
} | {
|
|
150
167
|
status: "rejected";
|
|
151
168
|
reason: string;
|
|
152
169
|
}>;
|
|
170
|
+
mode: "allSettled";
|
|
153
171
|
}>, z.ZodObject<{
|
|
154
172
|
mode: z.ZodLiteral<"race">;
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
173
|
+
branch: z.ZodString;
|
|
174
|
+
branches: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<"status", [z.ZodObject<{
|
|
175
|
+
status: z.ZodLiteral<"fulfilled">;
|
|
176
|
+
steps: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
177
|
+
output: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
178
|
+
}, "strip", z.ZodTypeAny, {
|
|
179
|
+
output: Record<string, unknown>;
|
|
180
|
+
}, {
|
|
181
|
+
output: Record<string, unknown>;
|
|
182
|
+
}>>;
|
|
158
183
|
}, "strip", z.ZodTypeAny, {
|
|
159
|
-
|
|
184
|
+
status: "fulfilled";
|
|
185
|
+
steps: Record<string, {
|
|
186
|
+
output: Record<string, unknown>;
|
|
187
|
+
}>;
|
|
160
188
|
}, {
|
|
161
|
-
|
|
162
|
-
|
|
189
|
+
status: "fulfilled";
|
|
190
|
+
steps: Record<string, {
|
|
191
|
+
output: Record<string, unknown>;
|
|
192
|
+
}>;
|
|
193
|
+
}>, z.ZodObject<{
|
|
194
|
+
status: z.ZodLiteral<"rejected">;
|
|
195
|
+
reason: z.ZodString;
|
|
196
|
+
}, "strip", z.ZodTypeAny, {
|
|
197
|
+
status: "rejected";
|
|
198
|
+
reason: string;
|
|
199
|
+
}, {
|
|
200
|
+
status: "rejected";
|
|
201
|
+
reason: string;
|
|
202
|
+
}>]>>;
|
|
163
203
|
}, "strip", z.ZodTypeAny, {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
204
|
+
branch: string;
|
|
205
|
+
branches: Record<string, {
|
|
206
|
+
status: "fulfilled";
|
|
207
|
+
steps: Record<string, {
|
|
208
|
+
output: Record<string, unknown>;
|
|
209
|
+
}>;
|
|
210
|
+
} | {
|
|
211
|
+
status: "rejected";
|
|
212
|
+
reason: string;
|
|
213
|
+
}>;
|
|
167
214
|
mode: "race";
|
|
168
|
-
winner: string;
|
|
169
215
|
}, {
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
216
|
+
branch: string;
|
|
217
|
+
branches: Record<string, {
|
|
218
|
+
status: "fulfilled";
|
|
219
|
+
steps: Record<string, {
|
|
220
|
+
output: Record<string, unknown>;
|
|
221
|
+
}>;
|
|
222
|
+
} | {
|
|
223
|
+
status: "rejected";
|
|
224
|
+
reason: string;
|
|
225
|
+
}>;
|
|
173
226
|
mode: "race";
|
|
174
|
-
winner: string;
|
|
175
227
|
}>]>;
|
|
176
228
|
readonly category: "control";
|
|
177
229
|
readonly icon = "columns";
|
|
@@ -182,6 +234,13 @@ export declare class ParallelStep extends BaseControlFlowStep<typeof ParallelSte
|
|
|
182
234
|
*/
|
|
183
235
|
readonly declaredOutputs: readonly [];
|
|
184
236
|
getBranches(config: Record<string, unknown>): Record<string, WorkflowStepConfig[]>;
|
|
237
|
+
/**
|
|
238
|
+
* Collapse the static `mode` discriminated union to the *configured* mode, so
|
|
239
|
+
* the variable picker sees a concrete object (not an `anyOf`) it can drill.
|
|
240
|
+
* Only the mode-dependent meta is declared here; the harness
|
|
241
|
+
* (`resolveOutputJsonSchemaOf`) splices the typed `branches` from `getBranches`.
|
|
242
|
+
*/
|
|
243
|
+
resolveOutputJsonSchema(config: Record<string, unknown>): Record<string, unknown>;
|
|
185
244
|
execute(config: ParallelStepConfig, ctx: ControlFlowExecutionContext): Promise<ParallelStepOutput>;
|
|
186
245
|
private executeAllSettled;
|
|
187
246
|
private executeRace;
|
|
@@ -199,10 +258,5 @@ export declare class ParallelStep extends BaseControlFlowStep<typeof ParallelSte
|
|
|
199
258
|
* steps map so concurrent writes don't conflict.
|
|
200
259
|
*/
|
|
201
260
|
private cloneContext;
|
|
202
|
-
/**
|
|
203
|
-
* Extract the output of the last step in a branch from its context.
|
|
204
|
-
* Returns the full output record, or an empty object if the branch has no steps.
|
|
205
|
-
*/
|
|
206
|
-
private extractLastStepOutput;
|
|
207
261
|
}
|
|
208
262
|
//# sourceMappingURL=parallel.step.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parallel.step.d.ts","sourceRoot":"","sources":["../../../src/steps/builtin/parallel.step.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"parallel.step.d.ts","sourceRoot":"","sources":["../../../src/steps/builtin/parallel.step.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAsB,MAAM,iBAAiB,CAAC;AAC1E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAMzE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;EAMnC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAI1E;;;;GAIG;AACH,MAAM,MAAM,2BAA2B,GACnC;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAA;CAAE,GACnF;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3C,MAAM,WAAW,wBAAyB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACvE,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,kBAAmB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;CACvD;AAED,MAAM,MAAM,kBAAkB,GAC1B,wBAAwB,GACxB,kBAAkB,CAAC;AA4CvB,qBAAa,YAAa,SAAQ,mBAAmB,CACnD,OAAO,wBAAwB,EAC/B,kBAAkB,CACnB;IACC,SAAkB,IAAI,4BAA4B;IAClD,SAAkB,IAAI,cAAc;IACpC,SAAkB,WAAW,4DAC8B;IAC3D,SAAkB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;OAA4B;IAC1D,SAAkB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAA4B;IAC1D,SAAkB,QAAQ,EAAG,SAAS,CAAU;IAChD,SAAkB,IAAI,aAAa;IAEnC;;;;OAIG;IACH,SAAkB,eAAe,cAAe;IAEvC,WAAW,CAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAYvC;;;;;OAKG;IACM,uBAAuB,CAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAOX,OAAO,CACpB,MAAM,EAAE,kBAAkB,EAC1B,GAAG,EAAE,2BAA2B,GAC/B,OAAO,CAAC,kBAAkB,CAAC;YAgBhB,iBAAiB;YAqGjB,WAAW;IA4BzB;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAetB;;;;OAIG;IACH,OAAO,CAAC,YAAY;CAYrB"}
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
* race: { mode: 'race', winner: string, result: { output } }
|
|
31
31
|
*/
|
|
32
32
|
import { z } from 'zod';
|
|
33
|
-
import { BaseControlFlowStep } from '../base-step.js';
|
|
33
|
+
import { BaseControlFlowStep, collectBranchSteps } from '../base-step.js';
|
|
34
34
|
import { BuiltinStepType } from '../../types/known-types.js';
|
|
35
35
|
import { PauseStep } from '../../engine/pause-step.js';
|
|
36
36
|
// ─── Config ───
|
|
@@ -39,13 +39,11 @@ export const ParallelStepConfigSchema = z.object({
|
|
|
39
39
|
merge: z.enum(['allSettled', 'race']).default('allSettled').describe('How to combine branch results: allSettled waits for all, race returns first completed'),
|
|
40
40
|
});
|
|
41
41
|
// ─── Output Zod schema (for validation / introspection) ───
|
|
42
|
-
const
|
|
43
|
-
output: z.record(z.unknown()),
|
|
44
|
-
});
|
|
42
|
+
const StepOutputMapSchema = z.record(z.object({ output: z.record(z.unknown()) }));
|
|
45
43
|
const ParallelSettledBranchResultSchema = z.discriminatedUnion('status', [
|
|
46
44
|
z.object({
|
|
47
45
|
status: z.literal('fulfilled'),
|
|
48
|
-
|
|
46
|
+
steps: StepOutputMapSchema,
|
|
49
47
|
}),
|
|
50
48
|
z.object({
|
|
51
49
|
status: z.literal('rejected'),
|
|
@@ -59,8 +57,8 @@ const ParallelStepOutputSchema = z.discriminatedUnion('mode', [
|
|
|
59
57
|
}),
|
|
60
58
|
z.object({
|
|
61
59
|
mode: z.literal('race'),
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
branch: z.string(),
|
|
61
|
+
branches: z.record(ParallelSettledBranchResultSchema),
|
|
64
62
|
}),
|
|
65
63
|
]);
|
|
66
64
|
// ─── Step ───
|
|
@@ -86,6 +84,19 @@ export class ParallelStep extends BaseControlFlowStep {
|
|
|
86
84
|
}
|
|
87
85
|
return result;
|
|
88
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Collapse the static `mode` discriminated union to the *configured* mode, so
|
|
89
|
+
* the variable picker sees a concrete object (not an `anyOf`) it can drill.
|
|
90
|
+
* Only the mode-dependent meta is declared here; the harness
|
|
91
|
+
* (`resolveOutputJsonSchemaOf`) splices the typed `branches` from `getBranches`.
|
|
92
|
+
*/
|
|
93
|
+
resolveOutputJsonSchema(config) {
|
|
94
|
+
const mode = config['merge'] === 'race' ? 'race' : 'allSettled';
|
|
95
|
+
const properties = { mode: { type: 'string', const: mode } };
|
|
96
|
+
if (mode === 'race')
|
|
97
|
+
properties['branch'] = { type: 'string' };
|
|
98
|
+
return { type: 'object', properties };
|
|
99
|
+
}
|
|
89
100
|
async execute(config, ctx) {
|
|
90
101
|
const branchEntries = Object.entries(config.branches);
|
|
91
102
|
if (branchEntries.length === 0) {
|
|
@@ -122,7 +133,7 @@ export class ParallelStep extends BaseControlFlowStep {
|
|
|
122
133
|
await ctx.walkBranch(steps, branchCtx, name);
|
|
123
134
|
return {
|
|
124
135
|
name,
|
|
125
|
-
|
|
136
|
+
steps: collectBranchSteps(steps, branchCtx),
|
|
126
137
|
};
|
|
127
138
|
});
|
|
128
139
|
const settled = await Promise.allSettled(promises);
|
|
@@ -134,7 +145,7 @@ export class ParallelStep extends BaseControlFlowStep {
|
|
|
134
145
|
if (entry.status === 'fulfilled') {
|
|
135
146
|
branches[name] = {
|
|
136
147
|
status: 'fulfilled',
|
|
137
|
-
|
|
148
|
+
steps: entry.value.steps,
|
|
138
149
|
};
|
|
139
150
|
}
|
|
140
151
|
else if (PauseStep.is(entry.reason)) {
|
|
@@ -183,14 +194,14 @@ export class ParallelStep extends BaseControlFlowStep {
|
|
|
183
194
|
await ctx.walkBranch(steps, branchCtx, name);
|
|
184
195
|
return {
|
|
185
196
|
name,
|
|
186
|
-
|
|
197
|
+
steps: collectBranchSteps(steps, branchCtx),
|
|
187
198
|
};
|
|
188
199
|
});
|
|
189
200
|
const winner = await Promise.race(promises);
|
|
190
201
|
return {
|
|
191
202
|
mode: 'race',
|
|
192
|
-
|
|
193
|
-
|
|
203
|
+
branch: winner.name,
|
|
204
|
+
branches: { [winner.name]: { status: 'fulfilled', steps: winner.steps } },
|
|
194
205
|
};
|
|
195
206
|
}
|
|
196
207
|
// ─── Helpers ───
|
|
@@ -229,21 +240,5 @@ export class ParallelStep extends BaseControlFlowStep {
|
|
|
229
240
|
}
|
|
230
241
|
return clone;
|
|
231
242
|
}
|
|
232
|
-
/**
|
|
233
|
-
* Extract the output of the last step in a branch from its context.
|
|
234
|
-
* Returns the full output record, or an empty object if the branch has no steps.
|
|
235
|
-
*/
|
|
236
|
-
extractLastStepOutput(steps, branchCtx) {
|
|
237
|
-
if (steps.length === 0)
|
|
238
|
-
return {};
|
|
239
|
-
for (let i = steps.length - 1; i >= 0; i--) {
|
|
240
|
-
const stepId = steps[i].id;
|
|
241
|
-
const entry = branchCtx.steps[stepId];
|
|
242
|
-
if (entry?.output) {
|
|
243
|
-
return entry.output;
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
return {};
|
|
247
|
-
}
|
|
248
243
|
}
|
|
249
244
|
//# sourceMappingURL=parallel.step.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parallel.step.js","sourceRoot":"","sources":["../../../src/steps/builtin/parallel.step.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"parallel.step.js","sourceRoot":"","sources":["../../../src/steps/builtin/parallel.step.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1E,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAG7D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,iBAAiB;AAEjB,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,QAAQ,EAAE,CAAC,CAAC,MAAM,CAChB,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CACtE,CAAC,QAAQ,CAAC,gGAAgG,CAAC;IAC5G,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,uFAAuF,CAAC;CAC9J,CAAC,CAAC;AA6CH,6DAA6D;AAE7D,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAElF,MAAM,iCAAiC,GAAG,CAAC,CAAC,kBAAkB,CAAC,QAAQ,EAAE;IACvE,CAAC,CAAC,MAAM,CAAC;QACP,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;QAC9B,KAAK,EAAE,mBAAmB;KAC3B,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QAC7B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;KACnB,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC5D,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;QAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,iCAAiC,CAAC;KACtD,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,iCAAiC,CAAC;KACtD,CAAC;CACH,CAAC,CAAC;AAEH,eAAe;AAEf,MAAM,OAAO,YAAa,SAAQ,mBAGjC;IACmB,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC;IAChC,IAAI,GAAG,UAAU,CAAC;IAClB,WAAW,GAC3B,wDAAwD,CAAC;IACzC,YAAY,GAAG,wBAAwB,CAAC;IACxC,YAAY,GAAG,wBAAwB,CAAC;IACxC,QAAQ,GAAG,SAAkB,CAAC;IAC9B,IAAI,GAAG,SAAS,CAAC;IAEnC;;;;OAIG;IACe,eAAe,GAAG,EAAW,CAAC;IAEvC,WAAW,CAClB,MAA+B;QAE/B,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAGzC,CAAC;QACF,MAAM,MAAM,GAAyC,EAAE,CAAC;QACxD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAwC,CAAC;QACzD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACM,uBAAuB,CAC9B,MAA+B;QAE/B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC;QAChE,MAAM,UAAU,GAA4B,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;QACtF,IAAI,IAAI,KAAK,MAAM;YAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC/D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IACxC,CAAC;IAEQ,KAAK,CAAC,OAAO,CACpB,MAA0B,EAC1B,GAAgC;QAEhC,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEtD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAwB,CAAC;QACpE,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,KAAK,YAAY,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QACpD,CAAC;QACD,OAAO;QACP,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,4BAA4B;IAEpB,KAAK,CAAC,iBAAiB,CAC7B,aAAoD,EACpD,GAAgC;QAEhC,yDAAyD;QACzD,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAE5C,6CAA6C;QAC7C,MAAM,KAAK,GAA0C,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAgD,EAAE,CAAC;QAEjE,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,aAAa,EAAE,CAAC;YAC1C,IAAI,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxC,oDAAoD;gBACpD,QAAQ,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;QAC1C,CAAC;QAED,sCAAsC;QACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;YACjD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAClD,MAAM,GAAG,CAAC,UAAU,CAClB,KAAwC,EACxC,SAAS,EACT,IAAI,CACL,CAAC;YACF,OAAO;gBACL,IAAI;gBACJ,KAAK,EAAE,kBAAkB,CAAC,KAAwC,EAAE,SAAS,CAAC;aAC/E,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAEnD,6DAA6D;QAC7D,MAAM,cAAc,GAGhB,EAAE,CAAC;QAEP,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;YAC1B,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBACjC,QAAQ,CAAC,IAAI,CAAC,GAAG;oBACf,MAAM,EAAE,WAAW;oBACnB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK;iBACzB,CAAC;YACJ,CAAC;iBAAM,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAmB,CAAC;gBACrC,cAAc,CAAC,IAAI,CAAC,GAAG;oBACrB,MAAM,EAAE,EAAE,CAAC,OAAO;oBAClB,GAAG,CAAC,EAAE,CAAC,WAAW,KAAK,SAAS;wBAC9B,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,WAAW,EAAE;wBACjC,CAAC,CAAC,EAAE,CAAC;iBACR,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC,GAAG;oBACf,MAAM,EAAE,UAAU;oBAClB,MAAM,EACJ,KAAK,CAAC,MAAM,YAAY,KAAK;wBAC3B,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO;wBACtB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;iBAC3B,CAAC;YACJ,CAAC;QACH,CAAC;QAED,4DAA4D;QAC5D,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAuB;gBAChC,iBAAiB,EAAE,QAAQ;gBAC3B,cAAc;aACf,CAAC;YAEF,2DAA2D;YAC3D,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAE,CAAC;YACtD,MAAM,WAAW,GACf,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,KAAK,CAAC;gBACtC,CAAC,CAAC,WAAW,CAAC,MAAM;gBACpB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC;YAEtE,MAAM,IAAI,GAAkE;gBAC1E,UAAU,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE;aACvC,CAAC;YACF,IAAI,WAAW,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC1C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;YAC7C,CAAC;YACD,MAAM,IAAI,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;IAC1C,CAAC;IAED,sBAAsB;IAEd,KAAK,CAAC,WAAW,CACvB,aAAoD,EACpD,GAAgC;QAEhC,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;YACzD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAClD,MAAM,GAAG,CAAC,UAAU,CAClB,KAAwC,EACxC,SAAS,EACT,IAAI,CACL,CAAC;YACF,OAAO;gBACL,IAAI;gBACJ,KAAK,EAAE,kBAAkB,CAAC,KAAwC,EAAE,SAAS,CAAC;aAC/E,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE5C,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,MAAM,CAAC,IAAI;YACnB,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE;SAC1E,CAAC;IACJ,CAAC;IAED,kBAAkB;IAElB;;;;;;OAMG;IACK,cAAc,CACpB,GAAgC;QAEhC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAEzC,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;QAClC,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,MAAM,GAAG,GAAI,KAA4C,CAAC,iBAAiB,CAAC,CAAC;QAC7E,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAEjD,OAAO,GAAyB,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACK,YAAY,CAAC,MAAuB;QAC1C,MAAM,KAAK,GAAoB;YAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,KAAK,EAAE,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE;SAC3B,CAAC;QACF,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC/B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CAEF"}
|
|
@@ -94,6 +94,16 @@ export interface SwitchStepOutput extends Record<string, unknown> {
|
|
|
94
94
|
caseIndex: number | null;
|
|
95
95
|
/** Label of the matched case, or `null` when `default` ran (or case had no label). */
|
|
96
96
|
label: string | null;
|
|
97
|
+
/**
|
|
98
|
+
* The taken branch's top-level steps, keyed by branch key (`case_<i>`/`default`)
|
|
99
|
+
* then step id — referenced as `…output.branches.<key>.steps.<id>.output.<field>`.
|
|
100
|
+
* Only the taken branch is populated. The harness types all branches from `getBranches`.
|
|
101
|
+
*/
|
|
102
|
+
branches: Record<string, {
|
|
103
|
+
steps: Record<string, {
|
|
104
|
+
output: Record<string, unknown>;
|
|
105
|
+
}>;
|
|
106
|
+
}>;
|
|
97
107
|
}
|
|
98
108
|
export declare class SwitchStep extends BaseControlFlowStep<typeof SwitchStepConfigSchema, SwitchStepOutput> {
|
|
99
109
|
readonly type = BuiltinStepType.SWITCH;
|
|
@@ -169,12 +179,39 @@ export declare class SwitchStep extends BaseControlFlowStep<typeof SwitchStepCon
|
|
|
169
179
|
branch: z.ZodString;
|
|
170
180
|
caseIndex: z.ZodNullable<z.ZodNumber>;
|
|
171
181
|
label: z.ZodNullable<z.ZodString>;
|
|
182
|
+
branches: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
183
|
+
steps: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
184
|
+
output: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
185
|
+
}, "strip", z.ZodTypeAny, {
|
|
186
|
+
output: Record<string, unknown>;
|
|
187
|
+
}, {
|
|
188
|
+
output: Record<string, unknown>;
|
|
189
|
+
}>>;
|
|
190
|
+
}, "strip", z.ZodTypeAny, {
|
|
191
|
+
steps: Record<string, {
|
|
192
|
+
output: Record<string, unknown>;
|
|
193
|
+
}>;
|
|
194
|
+
}, {
|
|
195
|
+
steps: Record<string, {
|
|
196
|
+
output: Record<string, unknown>;
|
|
197
|
+
}>;
|
|
198
|
+
}>>;
|
|
172
199
|
}, "strip", z.ZodTypeAny, {
|
|
173
200
|
branch: string;
|
|
201
|
+
branches: Record<string, {
|
|
202
|
+
steps: Record<string, {
|
|
203
|
+
output: Record<string, unknown>;
|
|
204
|
+
}>;
|
|
205
|
+
}>;
|
|
174
206
|
label: string | null;
|
|
175
207
|
caseIndex: number | null;
|
|
176
208
|
}, {
|
|
177
209
|
branch: string;
|
|
210
|
+
branches: Record<string, {
|
|
211
|
+
steps: Record<string, {
|
|
212
|
+
output: Record<string, unknown>;
|
|
213
|
+
}>;
|
|
214
|
+
}>;
|
|
178
215
|
label: string | null;
|
|
179
216
|
caseIndex: number | null;
|
|
180
217
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switch.step.d.ts","sourceRoot":"","sources":["../../../src/steps/builtin/switch.step.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"switch.step.d.ts","sourceRoot":"","sources":["../../../src/steps/builtin/switch.step.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAsB,MAAM,iBAAiB,CAAC;AAC1E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAgBzE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAItE,MAAM,WAAW,gBAAiB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/D,qGAAqG;IACrG,MAAM,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,sFAAsF;IACtF,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAC;CAC1F;AAcD,qBAAa,UAAW,SAAQ,mBAAmB,CACjD,OAAO,sBAAsB,EAC7B,gBAAgB,CACjB;IACC,SAAkB,IAAI,0BAA0B;IAChD,SAAkB,IAAI,YAAY;IAClC,SAAkB,WAAW,6EAA6E;IAC1G,SAAkB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAA0B;IACxD,SAAkB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAA0B;IACxD,SAAkB,QAAQ,EAAG,SAAS,CAAU;IAChD,SAAkB,IAAI,YAAY;IAClC,SAAkB,eAAe;;;;;;;;;OAItB;IAEX;;;OAGG;IACM,WAAW,CAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAUxB,OAAO,CACpB,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,2BAA2B,GAC/B,OAAO,CAAC,gBAAgB,CAAC;CA+B7B"}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* paused execution's PausePath survives label edits.
|
|
17
17
|
*/
|
|
18
18
|
import { z } from 'zod';
|
|
19
|
-
import { BaseControlFlowStep } from '../base-step.js';
|
|
19
|
+
import { BaseControlFlowStep, collectBranchSteps } from '../base-step.js';
|
|
20
20
|
import { BuiltinStepType } from '../../types/known-types.js';
|
|
21
21
|
import { ConditionSchema } from '../../types/workflow-config.js';
|
|
22
22
|
import { ConditionEvaluator } from '../../engine/condition-evaluator.js';
|
|
@@ -37,6 +37,7 @@ const SwitchStepOutputSchema = z.object({
|
|
|
37
37
|
branch: z.string(),
|
|
38
38
|
caseIndex: z.number().int().nullable(),
|
|
39
39
|
label: z.string().nullable(),
|
|
40
|
+
branches: z.record(z.object({ steps: z.record(z.object({ output: z.record(z.unknown()) })) })),
|
|
40
41
|
});
|
|
41
42
|
// ─── Step ───
|
|
42
43
|
const DEFAULT_BRANCH_KEY = 'default';
|
|
@@ -73,20 +74,28 @@ export class SwitchStep extends BaseControlFlowStep {
|
|
|
73
74
|
const entry = config.cases[i];
|
|
74
75
|
if (evaluator.evaluate(entry.condition, ctx.workflow)) {
|
|
75
76
|
const branchKey = caseBranchKey(i);
|
|
76
|
-
|
|
77
|
-
|
|
77
|
+
const branchSteps = entry.steps;
|
|
78
|
+
if (branchSteps.length > 0) {
|
|
79
|
+
await ctx.walkBranch(branchSteps, ctx.workflow, branchKey);
|
|
78
80
|
}
|
|
79
81
|
return {
|
|
80
82
|
branch: branchKey,
|
|
81
83
|
caseIndex: i,
|
|
82
84
|
label: entry.label ?? null,
|
|
85
|
+
branches: { [branchKey]: { steps: collectBranchSteps(branchSteps, ctx.workflow) } },
|
|
83
86
|
};
|
|
84
87
|
}
|
|
85
88
|
}
|
|
86
|
-
|
|
87
|
-
|
|
89
|
+
const defaultSteps = config.default;
|
|
90
|
+
if (defaultSteps.length > 0) {
|
|
91
|
+
await ctx.walkBranch(defaultSteps, ctx.workflow, DEFAULT_BRANCH_KEY);
|
|
88
92
|
}
|
|
89
|
-
return {
|
|
93
|
+
return {
|
|
94
|
+
branch: DEFAULT_BRANCH_KEY,
|
|
95
|
+
caseIndex: null,
|
|
96
|
+
label: null,
|
|
97
|
+
branches: { [DEFAULT_BRANCH_KEY]: { steps: collectBranchSteps(defaultSteps, ctx.workflow) } },
|
|
98
|
+
};
|
|
90
99
|
}
|
|
91
100
|
}
|
|
92
101
|
//# sourceMappingURL=switch.step.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switch.step.js","sourceRoot":"","sources":["../../../src/steps/builtin/switch.step.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"switch.step.js","sourceRoot":"","sources":["../../../src/steps/builtin/switch.step.ts"],"names":[],"mappings":"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"}
|