From 2bddfb6e26bb856f12a5212567683f38532cd3de Mon Sep 17 00:00:00 2001 From: Gabe Ruttner Date: Fri, 2 May 2025 10:49:48 -0700 Subject: [PATCH] fix: standalone task key (#1664) * fix: standalone task key * 1.5.1 --- sdks/typescript/package.json | 2 +- sdks/typescript/src/step.ts | 4 ++-- sdks/typescript/src/util/workflow-run-ref.ts | 18 ++++++++--------- sdks/typescript/src/v1/client/admin.ts | 20 +++++++++++++++++-- .../src/v1/client/worker/context.ts | 9 ++++++--- sdks/typescript/src/v1/declaration.ts | 6 +++--- 6 files changed, 39 insertions(+), 20 deletions(-) diff --git a/sdks/typescript/package.json b/sdks/typescript/package.json index c0d227fcb..e06f8a0e0 100644 --- a/sdks/typescript/package.json +++ b/sdks/typescript/package.json @@ -1,6 +1,6 @@ { "name": "@hatchet-dev/typescript-sdk", - "version": "1.5.0", + "version": "1.5.1", "description": "Background task orchestration & visibility for developers", "types": "dist/index.d.ts", "files": [ diff --git a/sdks/typescript/src/step.ts b/sdks/typescript/src/step.ts index 8a22558fc..c007bd5cd 100644 --- a/sdks/typescript/src/step.ts +++ b/sdks/typescript/src/step.ts @@ -472,7 +472,7 @@ export class V0Context { const wf = workflows[index].workflow; if (wf instanceof TaskWorkflowDeclaration) { // eslint-disable-next-line no-param-reassign - ref._standalone_task_name = wf._standalone_task_name; + ref._standaloneTaskName = wf._standalone_task_name; } res.push(ref); }); @@ -563,7 +563,7 @@ export class V0Context { this.spawnIndex += 1; if (workflow instanceof TaskWorkflowDeclaration) { - resp._standalone_task_name = workflow._standalone_task_name; + resp._standaloneTaskName = workflow._standalone_task_name; } return resp; diff --git a/sdks/typescript/src/util/workflow-run-ref.ts b/sdks/typescript/src/util/workflow-run-ref.ts index 201cbc96c..352e88105 100644 --- a/sdks/typescript/src/util/workflow-run-ref.ts +++ b/sdks/typescript/src/util/workflow-run-ref.ts @@ -52,7 +52,7 @@ export default class WorkflowRunRef { parentWorkflowRunId?: string; private client: RunListenerClient; private runs: RunsClient | undefined; - _standalone_task_name?: string; + _standaloneTaskName?: string; constructor( workflowRunId: @@ -63,12 +63,14 @@ export default class WorkflowRunRef { }>, client: RunListenerClient, runsClient?: RunsClient, - parentWorkflowRunId?: string + parentWorkflowRunId?: string, + standaloneTaskName?: string ) { this.workflowRunId = workflowRunId; this.parentWorkflowRunId = parentWorkflowRunId; this.client = client; this.runs = runsClient; + this._standaloneTaskName = standaloneTaskName; } // TODO docstrings @@ -86,9 +88,7 @@ export default class WorkflowRunRef { return this.client.stream(workflowRunId); } - // TODO not sure if i want this to be a get since it might be blocking for a long time.. - get output() { - // TODO output for single task workflows + get output(): Promise { return this.result(); } @@ -137,12 +137,12 @@ export default class WorkflowRunRef { } }); - if (!this._standalone_task_name) { + if (!this._standaloneTaskName) { resolve(outputs as T); return; } - resolve(outputs[this._standalone_task_name] as T); + resolve(outputs[this._standaloneTaskName] as T); return; } @@ -154,12 +154,12 @@ export default class WorkflowRunRef { {} as T ); - if (!this._standalone_task_name) { + if (!this._standaloneTaskName) { resolve(result); return; } - resolve((result as any)[this._standalone_task_name] as T); + resolve((result as any)[this._standaloneTaskName] as T); return; } } diff --git a/sdks/typescript/src/v1/client/admin.ts b/sdks/typescript/src/v1/client/admin.ts index 3741bb927..73d7bde8e 100644 --- a/sdks/typescript/src/v1/client/admin.ts +++ b/sdks/typescript/src/v1/client/admin.ts @@ -62,6 +62,7 @@ export class AdminClient { additionalMetadata?: Record | undefined; desiredWorkerId?: string | undefined; priority?: Priority; + _standaloneTaskName?: string | undefined; } ) { let computedName = workflowName; @@ -85,7 +86,14 @@ export class AdminClient { const id = resp.workflowRunId; - const ref = new WorkflowRunRef

(id, this.listenerClient, this.runs, options?.parentId); + const ref = new WorkflowRunRef

( + id, + this.listenerClient, + this.runs, + options?.parentId, + // eslint-disable-next-line no-underscore-dangle + options?._standaloneTaskName + ); await ref.getWorkflowRunId(); return ref; } catch (e: any) { @@ -111,6 +119,7 @@ export class AdminClient { additionalMetadata?: Record | undefined; desiredWorkerId?: string | undefined; priority?: Priority; + _standaloneTaskName?: string | undefined; }; }>, batchSize: number = 500 @@ -159,7 +168,14 @@ export class AdminClient { const batchResults = bulkTriggerWorkflowResponse.workflowRunIds.map((resp, index) => { const originalIndex = originalIndices[index]; const { options } = workflowRuns[originalIndex]; - return new WorkflowRunRef

(resp, this.listenerClient, this.runs, options?.parentId); + return new WorkflowRunRef

( + resp, + this.listenerClient, + this.runs, + options?.parentId, + // eslint-disable-next-line no-underscore-dangle + options?._standaloneTaskName + ); }); results.push(...batchResults); diff --git a/sdks/typescript/src/v1/client/worker/context.ts b/sdks/typescript/src/v1/client/worker/context.ts index 5b4d21717..502ffa08c 100644 --- a/sdks/typescript/src/v1/client/worker/context.ts +++ b/sdks/typescript/src/v1/client/worker/context.ts @@ -297,6 +297,8 @@ export class Context { parentStepRunId: stepRunId, childIndex: this.spawnIndex, desiredWorkerId: sticky ? this.worker.id() : undefined, + _standaloneTaskName: + workflow instanceof TaskWorkflowDeclaration ? workflow._standalone_task_name : undefined, }; this.spawnIndex += 1; @@ -391,7 +393,8 @@ export class Context { input: Q, options?: ChildRunOpts ): Promise> { - return this.spawn(workflow, input, options); + const ref = await this.spawn(workflow, input, options); + return ref; } /** @@ -547,7 +550,7 @@ export class Context { const wf = workflows[index].workflow; if (wf instanceof TaskWorkflowDeclaration) { // eslint-disable-next-line no-param-reassign - ref._standalone_task_name = wf._standalone_task_name; + ref._standaloneTaskName = wf._standalone_task_name; } res.push(ref); }); @@ -605,7 +608,7 @@ export class Context { this.spawnIndex += 1; if (workflow instanceof TaskWorkflowDeclaration) { - resp._standalone_task_name = workflow._standalone_task_name; + resp._standaloneTaskName = workflow._standalone_task_name; } return resp; diff --git a/sdks/typescript/src/v1/declaration.ts b/sdks/typescript/src/v1/declaration.ts index 752628d81..45116430c 100644 --- a/sdks/typescript/src/v1/declaration.ts +++ b/sdks/typescript/src/v1/declaration.ts @@ -274,7 +274,7 @@ export class BaseWorkflowDeclaration< const res = await this.client.admin.runWorkflow(this.name, input, options); if (_standaloneTaskName) { - res._standalone_task_name = _standaloneTaskName; + res._standaloneTaskName = _standaloneTaskName; } return res; @@ -339,7 +339,7 @@ export class BaseWorkflowDeclaration< const wf = input[index].workflow; if (wf instanceof TaskWorkflowDeclaration) { // eslint-disable-next-line no-param-reassign - ref._standalone_task_name = wf._standalone_task_name; + ref._standaloneTaskName = wf._standalone_task_name; } res.push(ref.result()); }); @@ -349,7 +349,7 @@ export class BaseWorkflowDeclaration< const res = await this.client.admin.runWorkflow(this.definition.name, input, options); if (_standaloneTaskName) { - res._standalone_task_name = _standaloneTaskName; + res._standaloneTaskName = _standaloneTaskName; } return res.result() as Promise;