@upstash/workflow 0.2.21 → 0.2.22
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/README.md +39 -0
- package/astro.d.mts +2 -2
- package/astro.d.ts +2 -2
- package/astro.js +124 -71
- package/astro.mjs +1 -1
- package/{chunk-NQDNC5P4.mjs → chunk-BON2RKOR.mjs} +93 -76
- package/cloudflare.d.mts +2 -2
- package/cloudflare.d.ts +2 -2
- package/cloudflare.js +124 -71
- package/cloudflare.mjs +1 -1
- package/express.d.mts +2 -2
- package/express.d.ts +2 -2
- package/express.js +139 -23895
- package/express.mjs +8 -23805
- package/h3.d.mts +2 -2
- package/h3.d.ts +2 -2
- package/h3.js +124 -71
- package/h3.mjs +1 -1
- package/hono.d.mts +2 -2
- package/hono.d.ts +2 -2
- package/hono.js +124 -71
- package/hono.mjs +1 -1
- package/index.d.mts +10 -2
- package/index.d.ts +10 -2
- package/index.js +128 -73
- package/index.mjs +5 -3
- package/nextjs.d.mts +2 -2
- package/nextjs.d.ts +2 -2
- package/nextjs.js +126 -72
- package/nextjs.mjs +3 -2
- package/package.json +1 -1
- package/{serve-many-CXqQP3RI.d.ts → serve-many-BXDr30rl.d.ts} +1 -1
- package/{serve-many-BNusWYgt.d.mts → serve-many-CctdYIfB.d.mts} +1 -1
- package/solidjs.d.mts +1 -1
- package/solidjs.d.ts +1 -1
- package/solidjs.js +124 -71
- package/solidjs.mjs +1 -1
- package/svelte.d.mts +2 -2
- package/svelte.d.ts +2 -2
- package/svelte.js +124 -71
- package/svelte.mjs +1 -1
- package/tanstack.d.mts +2 -2
- package/tanstack.d.ts +2 -2
- package/tanstack.js +124 -71
- package/tanstack.mjs +1 -1
- package/{types-Q3dM0UlR.d.ts → types-9nCq6bRP.d.mts} +12 -1
- package/{types-Q3dM0UlR.d.mts → types-9nCq6bRP.d.ts} +12 -1
package/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { R as RouteFunction, W as WorkflowServeOptions, E as ExclusiveValidationOptions, T as Telemetry, S as StepType, a as RawStep, N as NotifyResponse, b as Waiter } from './types-
|
|
2
|
-
export { A as AsyncStepFunction, C as CallResponse,
|
|
1
|
+
import { R as RouteFunction, W as WorkflowServeOptions, E as ExclusiveValidationOptions, T as Telemetry, S as StepType, a as RawStep, N as NotifyResponse, b as Waiter } from './types-9nCq6bRP.mjs';
|
|
2
|
+
export { A as AsyncStepFunction, C as CallResponse, x as CallSettings, D as DetailedFinishCondition, u as Duration, p as FailureFunctionPayload, F as FinishCondition, H as HeaderParams, z as InvokableWorkflow, y as InvokeStepResponse, I as InvokeWorkflowRequest, L as LazyInvokeStepParams, B as LogLevel, t as NotifyStepResponse, P as ParallelCallState, o as PublicServeOptions, q as RequiredExceptFields, l as Step, n as StepFunction, k as StepTypes, w as StringifyBody, m as SyncStepFunction, v as WaitEventOptions, r as WaitRequest, s as WaitStepResponse, d as WorkflowAbort, i as WorkflowClient, h as WorkflowContext, c as WorkflowError, J as WorkflowLogger, G as WorkflowLoggerOptions, e as WorkflowNonRetryableError, j as WorkflowReceiver, f as WorkflowRetryAfterError, g as WorkflowTool } from './types-9nCq6bRP.mjs';
|
|
3
3
|
import { FlowControl, PublishRequest, HTTPMethods, State, Client as Client$1 } from '@upstash/qstash';
|
|
4
4
|
import 'zod';
|
|
5
5
|
import 'ai';
|
|
@@ -439,6 +439,14 @@ type TriggerOptions = {
|
|
|
439
439
|
* @default false
|
|
440
440
|
*/
|
|
441
441
|
keepTriggerConfig?: boolean;
|
|
442
|
+
/**
|
|
443
|
+
* By default, Workflow SDK sends telemetry about SDK version, framework or runtime.
|
|
444
|
+
*
|
|
445
|
+
* Set `disableTelemetry` to disable this behavior.
|
|
446
|
+
*
|
|
447
|
+
* @default false
|
|
448
|
+
*/
|
|
449
|
+
disableTelemetry?: boolean;
|
|
442
450
|
} & ({
|
|
443
451
|
/**
|
|
444
452
|
* URL to call if the first request to the workflow endpoint fails
|
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { R as RouteFunction, W as WorkflowServeOptions, E as ExclusiveValidationOptions, T as Telemetry, S as StepType, a as RawStep, N as NotifyResponse, b as Waiter } from './types-
|
|
2
|
-
export { A as AsyncStepFunction, C as CallResponse,
|
|
1
|
+
import { R as RouteFunction, W as WorkflowServeOptions, E as ExclusiveValidationOptions, T as Telemetry, S as StepType, a as RawStep, N as NotifyResponse, b as Waiter } from './types-9nCq6bRP.js';
|
|
2
|
+
export { A as AsyncStepFunction, C as CallResponse, x as CallSettings, D as DetailedFinishCondition, u as Duration, p as FailureFunctionPayload, F as FinishCondition, H as HeaderParams, z as InvokableWorkflow, y as InvokeStepResponse, I as InvokeWorkflowRequest, L as LazyInvokeStepParams, B as LogLevel, t as NotifyStepResponse, P as ParallelCallState, o as PublicServeOptions, q as RequiredExceptFields, l as Step, n as StepFunction, k as StepTypes, w as StringifyBody, m as SyncStepFunction, v as WaitEventOptions, r as WaitRequest, s as WaitStepResponse, d as WorkflowAbort, i as WorkflowClient, h as WorkflowContext, c as WorkflowError, J as WorkflowLogger, G as WorkflowLoggerOptions, e as WorkflowNonRetryableError, j as WorkflowReceiver, f as WorkflowRetryAfterError, g as WorkflowTool } from './types-9nCq6bRP.js';
|
|
3
3
|
import { FlowControl, PublishRequest, HTTPMethods, State, Client as Client$1 } from '@upstash/qstash';
|
|
4
4
|
import 'zod';
|
|
5
5
|
import 'ai';
|
|
@@ -439,6 +439,14 @@ type TriggerOptions = {
|
|
|
439
439
|
* @default false
|
|
440
440
|
*/
|
|
441
441
|
keepTriggerConfig?: boolean;
|
|
442
|
+
/**
|
|
443
|
+
* By default, Workflow SDK sends telemetry about SDK version, framework or runtime.
|
|
444
|
+
*
|
|
445
|
+
* Set `disableTelemetry` to disable this behavior.
|
|
446
|
+
*
|
|
447
|
+
* @default false
|
|
448
|
+
*/
|
|
449
|
+
disableTelemetry?: boolean;
|
|
442
450
|
} & ({
|
|
443
451
|
/**
|
|
444
452
|
* URL to call if the first request to the workflow endpoint fails
|
package/index.js
CHANGED
|
@@ -27,13 +27,102 @@ __export(src_exports, {
|
|
|
27
27
|
WorkflowError: () => WorkflowError,
|
|
28
28
|
WorkflowLogger: () => WorkflowLogger,
|
|
29
29
|
WorkflowNonRetryableError: () => WorkflowNonRetryableError,
|
|
30
|
+
WorkflowRetryAfterError: () => WorkflowRetryAfterError,
|
|
30
31
|
WorkflowTool: () => WorkflowTool,
|
|
31
32
|
serve: () => serve
|
|
32
33
|
});
|
|
33
34
|
module.exports = __toCommonJS(src_exports);
|
|
34
35
|
|
|
35
36
|
// src/client/utils.ts
|
|
37
|
+
var import_qstash2 = require("@upstash/qstash");
|
|
38
|
+
|
|
39
|
+
// src/error.ts
|
|
36
40
|
var import_qstash = require("@upstash/qstash");
|
|
41
|
+
var WorkflowError = class extends import_qstash.QstashError {
|
|
42
|
+
constructor(message) {
|
|
43
|
+
super(message);
|
|
44
|
+
this.name = "WorkflowError";
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
var WorkflowAbort = class extends Error {
|
|
48
|
+
stepInfo;
|
|
49
|
+
stepName;
|
|
50
|
+
/**
|
|
51
|
+
* whether workflow is to be canceled on abort
|
|
52
|
+
*/
|
|
53
|
+
cancelWorkflow;
|
|
54
|
+
/**
|
|
55
|
+
*
|
|
56
|
+
* @param stepName name of the aborting step
|
|
57
|
+
* @param stepInfo step information
|
|
58
|
+
* @param cancelWorkflow
|
|
59
|
+
*/
|
|
60
|
+
constructor(stepName, stepInfo, cancelWorkflow = false) {
|
|
61
|
+
super(
|
|
62
|
+
`This is an Upstash Workflow error thrown after a step executes. It is expected to be raised. Make sure that you await for each step. Also, if you are using try/catch blocks, you should not wrap context.run/sleep/sleepUntil/call methods with try/catch. Aborting workflow after executing step '${stepName}'.`
|
|
63
|
+
);
|
|
64
|
+
this.name = "WorkflowAbort";
|
|
65
|
+
this.stepName = stepName;
|
|
66
|
+
this.stepInfo = stepInfo;
|
|
67
|
+
this.cancelWorkflow = cancelWorkflow;
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
var WorkflowNonRetryableError = class extends WorkflowAbort {
|
|
71
|
+
/**
|
|
72
|
+
* @param message error message to be displayed
|
|
73
|
+
*/
|
|
74
|
+
constructor(message) {
|
|
75
|
+
super("fail", void 0, false);
|
|
76
|
+
this.name = "WorkflowNonRetryableError";
|
|
77
|
+
if (message) this.message = message;
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
var WorkflowRetryAfterError = class extends WorkflowAbort {
|
|
81
|
+
retryAfter;
|
|
82
|
+
/**
|
|
83
|
+
* @param retryAfter time in seconds after which the workflow should be retried
|
|
84
|
+
* @param message error message to be displayed
|
|
85
|
+
*/
|
|
86
|
+
constructor(message, retryAfter) {
|
|
87
|
+
super("retry", void 0, false);
|
|
88
|
+
this.name = "WorkflowRetryAfterError";
|
|
89
|
+
this.retryAfter = retryAfter;
|
|
90
|
+
if (message) this.message = message;
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
var formatWorkflowError = (error) => {
|
|
94
|
+
return error instanceof Error ? {
|
|
95
|
+
error: error.name,
|
|
96
|
+
message: error.message,
|
|
97
|
+
stack: error.stack
|
|
98
|
+
} : {
|
|
99
|
+
error: "Error",
|
|
100
|
+
message: `An error occured while executing workflow: '${typeof error === "string" ? error : JSON.stringify(error)}'`
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
function getConstructorName(obj) {
|
|
104
|
+
if (obj === null || obj === void 0) {
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
const ctor = obj.constructor;
|
|
108
|
+
if (!ctor || ctor.name === "Object") {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
return ctor.name;
|
|
112
|
+
}
|
|
113
|
+
function getConstructorNames(obj) {
|
|
114
|
+
const proto = Object.getPrototypeOf(obj);
|
|
115
|
+
const name = getConstructorName(proto);
|
|
116
|
+
if (name === null) {
|
|
117
|
+
return [];
|
|
118
|
+
}
|
|
119
|
+
return [name, ...getConstructorNames(proto)];
|
|
120
|
+
}
|
|
121
|
+
function isInstanceOf(v, ctor) {
|
|
122
|
+
return getConstructorNames(v).includes(ctor.name);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// src/client/utils.ts
|
|
37
126
|
var makeNotifyRequest = async (requester, eventId, eventData) => {
|
|
38
127
|
const result = await requester.request({
|
|
39
128
|
path: ["v2", "notify", eventId],
|
|
@@ -80,7 +169,7 @@ var getSteps = async (requester, workflowRunId, messageId, debug) => {
|
|
|
80
169
|
return { steps: filteredSteps, workflowRunEnded: false };
|
|
81
170
|
}
|
|
82
171
|
} catch (error) {
|
|
83
|
-
if (error
|
|
172
|
+
if (isInstanceOf(error, import_qstash2.QstashError) && error.status === 404) {
|
|
84
173
|
await debug?.log("WARN", "ENDPOINT_START", {
|
|
85
174
|
message: "Couldn't fetch workflow run steps. This can happen if the workflow run succesfully ends before some callback is executed.",
|
|
86
175
|
error
|
|
@@ -105,65 +194,13 @@ var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
|
|
|
105
194
|
var DEFAULT_CONTENT_TYPE = "application/json";
|
|
106
195
|
var NO_CONCURRENCY = 1;
|
|
107
196
|
var DEFAULT_RETRIES = 3;
|
|
108
|
-
var VERSION = "v0.2.
|
|
197
|
+
var VERSION = "v0.2.22";
|
|
109
198
|
var SDK_TELEMETRY = `@upstash/workflow@${VERSION}`;
|
|
110
199
|
var TELEMETRY_HEADER_SDK = "Upstash-Telemetry-Sdk";
|
|
111
200
|
var TELEMETRY_HEADER_FRAMEWORK = "Upstash-Telemetry-Framework";
|
|
112
201
|
var TELEMETRY_HEADER_RUNTIME = "Upstash-Telemetry-Runtime";
|
|
113
202
|
var TELEMETRY_HEADER_AGENT = "Upstash-Telemetry-Agent";
|
|
114
203
|
|
|
115
|
-
// src/error.ts
|
|
116
|
-
var import_qstash2 = require("@upstash/qstash");
|
|
117
|
-
var WorkflowError = class extends import_qstash2.QstashError {
|
|
118
|
-
constructor(message) {
|
|
119
|
-
super(message);
|
|
120
|
-
this.name = "WorkflowError";
|
|
121
|
-
}
|
|
122
|
-
};
|
|
123
|
-
var WorkflowAbort = class extends Error {
|
|
124
|
-
stepInfo;
|
|
125
|
-
stepName;
|
|
126
|
-
/**
|
|
127
|
-
* whether workflow is to be canceled on abort
|
|
128
|
-
*/
|
|
129
|
-
cancelWorkflow;
|
|
130
|
-
/**
|
|
131
|
-
*
|
|
132
|
-
* @param stepName name of the aborting step
|
|
133
|
-
* @param stepInfo step information
|
|
134
|
-
* @param cancelWorkflow
|
|
135
|
-
*/
|
|
136
|
-
constructor(stepName, stepInfo, cancelWorkflow = false) {
|
|
137
|
-
super(
|
|
138
|
-
`This is an Upstash Workflow error thrown after a step executes. It is expected to be raised. Make sure that you await for each step. Also, if you are using try/catch blocks, you should not wrap context.run/sleep/sleepUntil/call methods with try/catch. Aborting workflow after executing step '${stepName}'.`
|
|
139
|
-
);
|
|
140
|
-
this.name = "WorkflowAbort";
|
|
141
|
-
this.stepName = stepName;
|
|
142
|
-
this.stepInfo = stepInfo;
|
|
143
|
-
this.cancelWorkflow = cancelWorkflow;
|
|
144
|
-
}
|
|
145
|
-
};
|
|
146
|
-
var WorkflowNonRetryableError = class extends WorkflowAbort {
|
|
147
|
-
/**
|
|
148
|
-
* @param message error message to be displayed
|
|
149
|
-
*/
|
|
150
|
-
constructor(message) {
|
|
151
|
-
super("fail", void 0, false);
|
|
152
|
-
this.name = "WorkflowNonRetryableError";
|
|
153
|
-
if (message) this.message = message;
|
|
154
|
-
}
|
|
155
|
-
};
|
|
156
|
-
var formatWorkflowError = (error) => {
|
|
157
|
-
return error instanceof Error ? {
|
|
158
|
-
error: error.name,
|
|
159
|
-
message: error.message,
|
|
160
|
-
stack: error.stack
|
|
161
|
-
} : {
|
|
162
|
-
error: "Error",
|
|
163
|
-
message: `An error occured while executing workflow: '${typeof error === "string" ? error : JSON.stringify(error)}'`
|
|
164
|
-
};
|
|
165
|
-
};
|
|
166
|
-
|
|
167
204
|
// src/context/auto-executor.ts
|
|
168
205
|
var import_qstash5 = require("@upstash/qstash");
|
|
169
206
|
|
|
@@ -723,17 +760,17 @@ var triggerRouteFunction = async ({
|
|
|
723
760
|
return ok("workflow-finished");
|
|
724
761
|
} catch (error) {
|
|
725
762
|
const error_ = error;
|
|
726
|
-
if (error
|
|
763
|
+
if (isInstanceOf(error, import_qstash3.QstashError) && error.status === 400) {
|
|
727
764
|
await debug?.log("WARN", "RESPONSE_WORKFLOW", {
|
|
728
765
|
message: `tried to append to a cancelled workflow. exiting without publishing.`,
|
|
729
766
|
name: error.name,
|
|
730
767
|
errorMessage: error.message
|
|
731
768
|
});
|
|
732
769
|
return ok("workflow-was-finished");
|
|
733
|
-
} else if (
|
|
734
|
-
return err(error_);
|
|
735
|
-
} else if (error_ instanceof WorkflowNonRetryableError) {
|
|
770
|
+
} else if (isInstanceOf(error_, WorkflowNonRetryableError) || isInstanceOf(error_, WorkflowRetryAfterError)) {
|
|
736
771
|
return ok(error_);
|
|
772
|
+
} else if (!isInstanceOf(error_, WorkflowAbort)) {
|
|
773
|
+
return err(error_);
|
|
737
774
|
} else if (error_.cancelWorkflow) {
|
|
738
775
|
await onCancel();
|
|
739
776
|
return ok("workflow-finished");
|
|
@@ -2040,7 +2077,7 @@ var AutoExecutor = class _AutoExecutor {
|
|
|
2040
2077
|
});
|
|
2041
2078
|
throw new WorkflowAbort(parallelStep.stepName, resultStep);
|
|
2042
2079
|
} catch (error) {
|
|
2043
|
-
if (error
|
|
2080
|
+
if (isInstanceOf(error, WorkflowAbort) || isInstanceOf(error, import_qstash5.QstashError) && error.status === 400) {
|
|
2044
2081
|
throw error;
|
|
2045
2082
|
}
|
|
2046
2083
|
throw new WorkflowError(
|
|
@@ -2147,7 +2184,7 @@ var validateParallelSteps = (lazySteps, stepsFromRequest) => {
|
|
|
2147
2184
|
validateStep(lazySteps[index], stepFromRequest);
|
|
2148
2185
|
}
|
|
2149
2186
|
} catch (error) {
|
|
2150
|
-
if (error
|
|
2187
|
+
if (isInstanceOf(error, WorkflowError)) {
|
|
2151
2188
|
const lazyStepNames = lazySteps.map((lazyStep) => lazyStep.stepName);
|
|
2152
2189
|
const lazyStepTypes = lazySteps.map((lazyStep) => lazyStep.stepType);
|
|
2153
2190
|
const requestStepNames = stepsFromRequest.map((step) => step.stepName);
|
|
@@ -2328,7 +2365,7 @@ var fetchWithContextCall = async (context, agentCallParams, ...params) => {
|
|
|
2328
2365
|
headers: responseHeaders
|
|
2329
2366
|
});
|
|
2330
2367
|
} catch (error) {
|
|
2331
|
-
if (error instanceof Error && error
|
|
2368
|
+
if (error instanceof Error && isInstanceOf(error, WorkflowAbort)) {
|
|
2332
2369
|
throw error;
|
|
2333
2370
|
} else {
|
|
2334
2371
|
console.error("Error in fetch implementation:", error);
|
|
@@ -2461,10 +2498,10 @@ var Agent = class {
|
|
|
2461
2498
|
});
|
|
2462
2499
|
return { text: result.text };
|
|
2463
2500
|
} catch (error) {
|
|
2464
|
-
if (error
|
|
2465
|
-
if (error.cause instanceof Error && error.cause
|
|
2501
|
+
if (isInstanceOf(error, import_ai2.ToolExecutionError)) {
|
|
2502
|
+
if (error.cause instanceof Error && isInstanceOf(error.cause, WorkflowAbort)) {
|
|
2466
2503
|
throw error.cause;
|
|
2467
|
-
} else if (error.cause
|
|
2504
|
+
} else if (isInstanceOf(error.cause, import_ai2.ToolExecutionError) && isInstanceOf(error.cause.cause, WorkflowAbort)) {
|
|
2468
2505
|
throw error.cause.cause;
|
|
2469
2506
|
} else {
|
|
2470
2507
|
throw error;
|
|
@@ -3146,7 +3183,7 @@ var DisabledWorkflowContext = class _DisabledWorkflowContext extends WorkflowCon
|
|
|
3146
3183
|
try {
|
|
3147
3184
|
await routeFunction(disabledContext);
|
|
3148
3185
|
} catch (error) {
|
|
3149
|
-
if (error
|
|
3186
|
+
if (isInstanceOf(error, WorkflowAbort) && error.stepName === this.disabledMessage || isInstanceOf(error, WorkflowNonRetryableError) || isInstanceOf(error, WorkflowRetryAfterError)) {
|
|
3150
3187
|
return ok("step-found");
|
|
3151
3188
|
}
|
|
3152
3189
|
console.warn(
|
|
@@ -3399,13 +3436,24 @@ var processOptions = (options) => {
|
|
|
3399
3436
|
},
|
|
3400
3437
|
status: 489
|
|
3401
3438
|
});
|
|
3402
|
-
} else if (detailedFinishCondition?.condition === "
|
|
3403
|
-
return new Response(detailedFinishCondition.result
|
|
3404
|
-
status: 200,
|
|
3439
|
+
} else if (detailedFinishCondition?.condition === "retry-after-error") {
|
|
3440
|
+
return new Response(JSON.stringify(formatWorkflowError(detailedFinishCondition.result)), {
|
|
3405
3441
|
headers: {
|
|
3442
|
+
"Retry-After": detailedFinishCondition.result.retryAfter.toString(),
|
|
3406
3443
|
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION
|
|
3407
|
-
}
|
|
3444
|
+
},
|
|
3445
|
+
status: 429
|
|
3408
3446
|
});
|
|
3447
|
+
} else if (detailedFinishCondition?.condition === "failure-callback") {
|
|
3448
|
+
return new Response(
|
|
3449
|
+
JSON.stringify({ result: detailedFinishCondition.result ?? void 0 }),
|
|
3450
|
+
{
|
|
3451
|
+
status: 200,
|
|
3452
|
+
headers: {
|
|
3453
|
+
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION
|
|
3454
|
+
}
|
|
3455
|
+
}
|
|
3456
|
+
);
|
|
3409
3457
|
}
|
|
3410
3458
|
return new Response(JSON.stringify({ workflowRunId }), {
|
|
3411
3459
|
status: 200,
|
|
@@ -3615,12 +3663,18 @@ var serveBase = (routeFunction, telemetry, options) => {
|
|
|
3615
3663
|
},
|
|
3616
3664
|
debug
|
|
3617
3665
|
});
|
|
3618
|
-
if (result.isOk() && result.value
|
|
3666
|
+
if (result.isOk() && isInstanceOf(result.value, WorkflowNonRetryableError)) {
|
|
3619
3667
|
return onStepFinish(workflowRunId, result.value, {
|
|
3620
3668
|
condition: "non-retryable-error",
|
|
3621
3669
|
result: result.value
|
|
3622
3670
|
});
|
|
3623
3671
|
}
|
|
3672
|
+
if (result.isOk() && isInstanceOf(result.value, WorkflowRetryAfterError)) {
|
|
3673
|
+
return onStepFinish(workflowRunId, result.value, {
|
|
3674
|
+
condition: "retry-after-error",
|
|
3675
|
+
result: result.value
|
|
3676
|
+
});
|
|
3677
|
+
}
|
|
3624
3678
|
if (result.isErr()) {
|
|
3625
3679
|
await debug?.log("ERROR", "ERROR", { error: result.error.message });
|
|
3626
3680
|
throw result.error;
|
|
@@ -3651,7 +3705,7 @@ var serveBase = (routeFunction, telemetry, options) => {
|
|
|
3651
3705
|
const errorMessage = `Error while running onError callback: '${formattedOnErrorError.message}'.
|
|
3652
3706
|
Original error: '${formattedError.message}'`;
|
|
3653
3707
|
console.error(errorMessage);
|
|
3654
|
-
return new Response(errorMessage, {
|
|
3708
|
+
return new Response(JSON.stringify({ error: errorMessage }), {
|
|
3655
3709
|
status: 500,
|
|
3656
3710
|
headers: {
|
|
3657
3711
|
[WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION
|
|
@@ -3920,14 +3974,14 @@ var Client4 = class {
|
|
|
3920
3974
|
workflowRunId: finalWorkflowRunId,
|
|
3921
3975
|
retries: option.retries,
|
|
3922
3976
|
retryDelay: option.retryDelay,
|
|
3923
|
-
telemetry: { sdk: SDK_TELEMETRY },
|
|
3977
|
+
telemetry: option.disableTelemetry ? void 0 : { sdk: SDK_TELEMETRY },
|
|
3924
3978
|
flowControl: option.flowControl,
|
|
3925
3979
|
failureUrl,
|
|
3926
3980
|
label: option.label
|
|
3927
3981
|
});
|
|
3928
3982
|
return {
|
|
3929
3983
|
workflowContext: context,
|
|
3930
|
-
telemetry: { sdk: SDK_TELEMETRY },
|
|
3984
|
+
telemetry: option.disableTelemetry ? void 0 : { sdk: SDK_TELEMETRY },
|
|
3931
3985
|
delay: option.delay,
|
|
3932
3986
|
notBefore: option.notBefore,
|
|
3933
3987
|
keepTriggerConfig: option.keepTriggerConfig
|
|
@@ -4012,6 +4066,7 @@ var Client4 = class {
|
|
|
4012
4066
|
WorkflowError,
|
|
4013
4067
|
WorkflowLogger,
|
|
4014
4068
|
WorkflowNonRetryableError,
|
|
4069
|
+
WorkflowRetryAfterError,
|
|
4015
4070
|
WorkflowTool,
|
|
4016
4071
|
serve
|
|
4017
4072
|
});
|
package/index.mjs
CHANGED
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
WorkflowError,
|
|
8
8
|
WorkflowLogger,
|
|
9
9
|
WorkflowNonRetryableError,
|
|
10
|
+
WorkflowRetryAfterError,
|
|
10
11
|
WorkflowTool,
|
|
11
12
|
getWorkflowRunId,
|
|
12
13
|
makeGetWaitersRequest,
|
|
@@ -14,7 +15,7 @@ import {
|
|
|
14
15
|
prepareFlowControl,
|
|
15
16
|
serve,
|
|
16
17
|
triggerFirstInvocation
|
|
17
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-BON2RKOR.mjs";
|
|
18
19
|
|
|
19
20
|
// src/client/index.ts
|
|
20
21
|
import { Client as QStashClient } from "@upstash/qstash";
|
|
@@ -257,14 +258,14 @@ var Client = class {
|
|
|
257
258
|
workflowRunId: finalWorkflowRunId,
|
|
258
259
|
retries: option.retries,
|
|
259
260
|
retryDelay: option.retryDelay,
|
|
260
|
-
telemetry: { sdk: SDK_TELEMETRY },
|
|
261
|
+
telemetry: option.disableTelemetry ? void 0 : { sdk: SDK_TELEMETRY },
|
|
261
262
|
flowControl: option.flowControl,
|
|
262
263
|
failureUrl,
|
|
263
264
|
label: option.label
|
|
264
265
|
});
|
|
265
266
|
return {
|
|
266
267
|
workflowContext: context,
|
|
267
|
-
telemetry: { sdk: SDK_TELEMETRY },
|
|
268
|
+
telemetry: option.disableTelemetry ? void 0 : { sdk: SDK_TELEMETRY },
|
|
268
269
|
delay: option.delay,
|
|
269
270
|
notBefore: option.notBefore,
|
|
270
271
|
keepTriggerConfig: option.keepTriggerConfig
|
|
@@ -348,6 +349,7 @@ export {
|
|
|
348
349
|
WorkflowError,
|
|
349
350
|
WorkflowLogger,
|
|
350
351
|
WorkflowNonRetryableError,
|
|
352
|
+
WorkflowRetryAfterError,
|
|
351
353
|
WorkflowTool,
|
|
352
354
|
serve
|
|
353
355
|
};
|
package/nextjs.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NextApiHandler, NextApiRequest, NextApiResponse } from 'next';
|
|
2
|
-
import { R as RouteFunction,
|
|
3
|
-
import { s as serveManyBase } from './serve-many-
|
|
2
|
+
import { R as RouteFunction, o as PublicServeOptions, z as InvokableWorkflow } from './types-9nCq6bRP.mjs';
|
|
3
|
+
import { s as serveManyBase } from './serve-many-CctdYIfB.mjs';
|
|
4
4
|
import '@upstash/qstash';
|
|
5
5
|
import 'zod';
|
|
6
6
|
import 'ai';
|
package/nextjs.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NextApiHandler, NextApiRequest, NextApiResponse } from 'next';
|
|
2
|
-
import { R as RouteFunction,
|
|
3
|
-
import { s as serveManyBase } from './serve-many-
|
|
2
|
+
import { R as RouteFunction, o as PublicServeOptions, z as InvokableWorkflow } from './types-9nCq6bRP.js';
|
|
3
|
+
import { s as serveManyBase } from './serve-many-BXDr30rl.js';
|
|
4
4
|
import '@upstash/qstash';
|
|
5
5
|
import 'zod';
|
|
6
6
|
import 'ai';
|