1- import { CommonWorkflowOptions , SignalDefinition , WithWorkflowArgs , Workflow } from '@temporalio/common' ;
1+ import {
2+ CommonWorkflowOptions ,
3+ SignalDefinition ,
4+ WithWorkflowArgs ,
5+ Workflow ,
6+ VersioningOverride ,
7+ toCanonicalString ,
8+ } from '@temporalio/common' ;
29import { Duration , msOptionalToTs } from '@temporalio/common/lib/time' ;
310import { Replace } from '@temporalio/common/lib/type-helpers' ;
4- import { google } from '@temporalio/proto' ;
11+ import { google , temporal } from '@temporalio/proto' ;
512
613export * from '@temporalio/common/lib/workflow-options' ;
714
@@ -38,9 +45,15 @@ export interface WorkflowOptions extends CommonWorkflowOptions {
3845
3946 /**
4047 * Amount of time to wait before starting the workflow.
41- *
4248 */
4349 startDelay ?: Duration ;
50+
51+ /**
52+ * Override the versioning behavior of the Workflow that is about to be started.
53+ *
54+ * @experimental Deployment based versioning is experimental and may change in the future.
55+ */
56+ versioningOverride ?: VersioningOverride ;
4457}
4558
4659export type WithCompiledWorkflowOptions < T extends WorkflowOptions > = Replace <
@@ -50,18 +63,21 @@ export type WithCompiledWorkflowOptions<T extends WorkflowOptions> = Replace<
5063 workflowRunTimeout ?: google . protobuf . IDuration ;
5164 workflowTaskTimeout ?: google . protobuf . IDuration ;
5265 startDelay ?: google . protobuf . IDuration ;
66+ versioningOverride ?: temporal . api . workflow . v1 . IVersioningOverride ;
5367 }
5468> ;
5569
5670export function compileWorkflowOptions < T extends WorkflowOptions > ( options : T ) : WithCompiledWorkflowOptions < T > {
57- const { workflowExecutionTimeout, workflowRunTimeout, workflowTaskTimeout, startDelay, ...rest } = options ;
71+ const { workflowExecutionTimeout, workflowRunTimeout, workflowTaskTimeout, startDelay, versioningOverride, ...rest } =
72+ options ;
5873
5974 return {
6075 ...rest ,
6176 workflowExecutionTimeout : msOptionalToTs ( workflowExecutionTimeout ) ,
6277 workflowRunTimeout : msOptionalToTs ( workflowRunTimeout ) ,
6378 workflowTaskTimeout : msOptionalToTs ( workflowTaskTimeout ) ,
6479 startDelay : msOptionalToTs ( startDelay ) ,
80+ versioningOverride : versioningOverrideToProto ( versioningOverride ) ,
6581 } ;
6682}
6783
@@ -109,3 +125,25 @@ export interface WorkflowSignalWithStartOptionsWithArgs<SignalArgs extends any[]
109125 * Options for starting a Workflow
110126 */
111127export type WorkflowStartOptions < T extends Workflow = Workflow > = WithWorkflowArgs < T , WorkflowOptions > ;
128+
129+ function versioningOverrideToProto (
130+ vo : VersioningOverride | undefined
131+ ) : temporal . api . workflow . v1 . IVersioningOverride | undefined {
132+ if ( ! vo ) return undefined ;
133+
134+ // TODO: Remove deprecated field assignments when versioning is non-experimental
135+ if ( vo === 'AUTO_UPGRADE' ) {
136+ return {
137+ autoUpgrade : true ,
138+ behavior : temporal . api . enums . v1 . VersioningBehavior . VERSIONING_BEHAVIOR_AUTO_UPGRADE ,
139+ } ;
140+ }
141+
142+ return {
143+ pinned : {
144+ version : vo . pinnedTo ,
145+ } ,
146+ behavior : temporal . api . enums . v1 . VersioningBehavior . VERSIONING_BEHAVIOR_PINNED ,
147+ pinnedVersion : toCanonicalString ( vo . pinnedTo ) ,
148+ } ;
149+ }
0 commit comments