@@ -15,12 +15,7 @@ import {
1515 type RegisteredMutation ,
1616 type ReturnValueForOptionalValidator ,
1717} from "convex/server" ;
18- import type {
19- Infer ,
20- ObjectType ,
21- PropertyValidators ,
22- Validator ,
23- } from "convex/values" ;
18+ import type { ObjectType , PropertyValidators , Validator } from "convex/values" ;
2419import type { Step } from "../component/schema.js" ;
2520import type {
2621 EventId ,
@@ -118,15 +113,59 @@ export class WorkflowManager {
118113 fn : "You should not call this directly, call workflow.start instead" ;
119114 args : ObjectType < ArgsValidator > ;
120115 } ,
121- ReturnsValidator extends Validator < unknown , "required" , string >
122- ? Infer < ReturnsValidator >
123- : void
124- > {
125- return workflowMutation (
126- this . component ,
127- workflow ,
128- this . options ?. workpoolOptions ,
129- ) ;
116+ ReturnValueForOptionalValidator < ReturnsValidator >
117+ > ;
118+ define <
119+ ArgsValidator extends PropertyValidators ,
120+ ReturnsValidator extends Validator < unknown , "required" , string > | void ,
121+ > (
122+ workflow : Omit <
123+ WorkflowDefinition < ArgsValidator , ReturnsValidator > ,
124+ "handler"
125+ > ,
126+ ) : {
127+ handler : (
128+ handler : (
129+ step : WorkflowCtx ,
130+ args : ObjectType < ArgsValidator > ,
131+ ) => Promise < ReturnValueForOptionalValidator < ReturnsValidator > > ,
132+ ) => RegisteredMutation <
133+ "internal" ,
134+ {
135+ fn : "You should not call this directly, call workflow.start instead" ;
136+ args : ObjectType < ArgsValidator > ;
137+ } ,
138+ ReturnValueForOptionalValidator < ReturnsValidator >
139+ > ;
140+ } ;
141+ define <
142+ ArgsValidator extends PropertyValidators ,
143+ ReturnsValidator extends Validator < unknown , "required" , string > | void ,
144+ > (
145+ workflow :
146+ | Omit < WorkflowDefinition < ArgsValidator , ReturnsValidator > , "handler" >
147+ | WorkflowDefinition < ArgsValidator , ReturnsValidator > ,
148+ ) : unknown {
149+ if ( "handler" in workflow ) {
150+ return workflowMutation (
151+ this . component ,
152+ workflow ,
153+ this . options ?. workpoolOptions ,
154+ ) ;
155+ }
156+ return {
157+ handler : (
158+ handler : (
159+ step : WorkflowCtx ,
160+ args : ObjectType < ArgsValidator > ,
161+ ) => Promise < ReturnValueForOptionalValidator < ReturnsValidator > > ,
162+ ) =>
163+ workflowMutation (
164+ this . component ,
165+ { ...workflow , handler } ,
166+ this . options ?. workpoolOptions ,
167+ ) ,
168+ } ;
130169 }
131170
132171 /**
0 commit comments