diff --git a/.changeset/lazy-carpets-reply.md b/.changeset/lazy-carpets-reply.md new file mode 100644 index 0000000000..997aaf8e59 --- /dev/null +++ b/.changeset/lazy-carpets-reply.md @@ -0,0 +1,6 @@ +--- +"@trigger.dev/sdk": patch +"@trigger.dev/core": patch +--- + +Fixed issue with asResponse and withResponse not working on runs.retrieve diff --git a/packages/core/src/v3/apiClient/core.ts b/packages/core/src/v3/apiClient/core.ts index 28ce105e3d..2660d5b601 100644 --- a/packages/core/src/v3/apiClient/core.ts +++ b/packages/core/src/v3/apiClient/core.ts @@ -26,15 +26,18 @@ export const defaultRetryOptions = { randomize: false, } satisfies RetryOptions; -export type ZodFetchOptions = { +export type ZodFetchOptions = { retry?: RetryOptions; tracer?: TriggerTracer; name?: string; attributes?: Attributes; icon?: string; onResponseBody?: (body: unknown, span: Span) => void; + prepareData?: (data: T) => Promise | T; }; +export type AnyZodFetchOptions = ZodFetchOptions; + export type ApiRequestOptions = Pick; type KeysEnum = { [P in keyof Required]: true }; @@ -67,7 +70,7 @@ export function zodfetch( schema: TResponseBodySchema, url: string, requestInit?: RequestInit, - options?: ZodFetchOptions + options?: ZodFetchOptions> ): ApiPromise> { return new ApiPromise(_doZodFetch(schema, url, requestInit, options)); } @@ -197,6 +200,10 @@ async function _doZodFetch( options.onResponseBody(result.data, span); } + if (options?.prepareData) { + result.data = await options.prepareData(result.data); + } + return result; }); } diff --git a/packages/core/src/v3/apiClient/index.ts b/packages/core/src/v3/apiClient/index.ts index 4dfd236235..d57899a311 100644 --- a/packages/core/src/v3/apiClient/index.ts +++ b/packages/core/src/v3/apiClient/index.ts @@ -32,6 +32,7 @@ import { import { taskContext } from "../task-context-api.js"; import { AnyRunTypes, TriggerJwtOptions } from "../types/tasks.js"; import { + AnyZodFetchOptions, ApiRequestOptions, CursorPagePromise, ZodFetchOptions, @@ -863,9 +864,9 @@ function createSearchQueryForListRuns(query?: ListRunsQueryParams): URLSearchPar } export function mergeRequestOptions( - defaultOptions: ZodFetchOptions, + defaultOptions: AnyZodFetchOptions, options?: ApiRequestOptions -): ZodFetchOptions { +): AnyZodFetchOptions { if (!options) { return defaultOptions; } diff --git a/packages/trigger-sdk/src/v3/runs.ts b/packages/trigger-sdk/src/v3/runs.ts index 16e1384016..8d703800a0 100644 --- a/packages/trigger-sdk/src/v3/runs.ts +++ b/packages/trigger-sdk/src/v3/runs.ts @@ -14,9 +14,9 @@ import type { TaskRunShape, AnyBatchedRunHandle, AsyncIterableStream, + ApiPromise, } from "@trigger.dev/core/v3"; import { - ApiPromise, CanceledRunResponse, CursorPagePromise, ListRunResponseItem, @@ -187,15 +187,14 @@ function retrieveRun { - return resolvePayloadAndOutputUrls(retrievedRun); - }) as ApiPromise>; + return apiClient.retrieveRun($runId, $requestOptions) as ApiPromise>; } async function resolvePayloadAndOutputUrls(run: AnyRetrieveRunResult) {