@upstash/workflow 0.2.8-rc-invoke → 0.2.8

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.
@@ -41,7 +41,7 @@ var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
41
41
  var DEFAULT_CONTENT_TYPE = "application/json";
42
42
  var NO_CONCURRENCY = 1;
43
43
  var DEFAULT_RETRIES = 3;
44
- var VERSION = "v0.2.7";
44
+ var VERSION = "v0.2.3";
45
45
  var SDK_TELEMETRY = `@upstash/workflow@${VERSION}`;
46
46
  var TELEMETRY_HEADER_SDK = "Upstash-Telemetry-Sdk";
47
47
  var TELEMETRY_HEADER_FRAMEWORK = "Upstash-Telemetry-Framework";
@@ -96,10 +96,133 @@ var StepTypes = [
96
96
  "SleepUntil",
97
97
  "Call",
98
98
  "Wait",
99
- "Notify",
100
- "Invoke"
99
+ "Notify"
101
100
  ];
102
101
 
102
+ // src/agents/adapters.ts
103
+ import { createOpenAI } from "@ai-sdk/openai";
104
+ import { tool } from "ai";
105
+
106
+ // src/agents/constants.ts
107
+ var AGENT_NAME_HEADER = "upstash-agent-name";
108
+ var MANAGER_AGENT_PROMPT = `You are an agent orchestrating other AI Agents.
109
+
110
+ These other agents have tools available to them.
111
+
112
+ Given a prompt, utilize these agents to address requests.
113
+
114
+ Don't always call all the agents provided to you at the same time. You can call one and use it's response to call another.
115
+
116
+ Avoid calling the same agent twice in one turn. Instead, prefer to call it once but provide everything
117
+ you need from that agent.
118
+ `;
119
+
120
+ // src/agents/adapters.ts
121
+ var createWorkflowOpenAI = (context, config) => {
122
+ const { baseURL, apiKey } = config ?? {};
123
+ return createOpenAI({
124
+ baseURL,
125
+ apiKey,
126
+ compatibility: "strict",
127
+ fetch: async (input, init) => {
128
+ try {
129
+ const headers = init?.headers ? Object.fromEntries(new Headers(init.headers).entries()) : {};
130
+ const body = init?.body ? JSON.parse(init.body) : void 0;
131
+ const agentName = headers[AGENT_NAME_HEADER];
132
+ const stepName = agentName ? `Call Agent ${agentName}` : "Call Agent";
133
+ const responseInfo = await context.call(stepName, {
134
+ url: input.toString(),
135
+ method: init?.method,
136
+ headers,
137
+ body
138
+ });
139
+ const responseHeaders = new Headers(
140
+ Object.entries(responseInfo.header).reduce(
141
+ (acc, [key, values]) => {
142
+ acc[key] = values.join(", ");
143
+ return acc;
144
+ },
145
+ {}
146
+ )
147
+ );
148
+ return new Response(JSON.stringify(responseInfo.body), {
149
+ status: responseInfo.status,
150
+ headers: responseHeaders
151
+ });
152
+ } catch (error) {
153
+ if (error instanceof Error && error.name === "WorkflowAbort") {
154
+ throw error;
155
+ } else {
156
+ console.error("Error in fetch implementation:", error);
157
+ throw error;
158
+ }
159
+ }
160
+ }
161
+ });
162
+ };
163
+ var wrapTools = ({
164
+ context,
165
+ tools
166
+ }) => {
167
+ return Object.fromEntries(
168
+ Object.entries(tools).map((toolInfo) => {
169
+ const [toolName, tool3] = toolInfo;
170
+ const executeAsStep = "executeAsStep" in tool3 ? tool3.executeAsStep : true;
171
+ const aiSDKTool = convertToAISDKTool(tool3);
172
+ const execute = aiSDKTool.execute;
173
+ if (execute && executeAsStep) {
174
+ const wrappedExecute = (...params) => {
175
+ return context.run(`Run tool ${toolName}`, () => execute(...params));
176
+ };
177
+ aiSDKTool.execute = wrappedExecute;
178
+ }
179
+ return [toolName, aiSDKTool];
180
+ })
181
+ );
182
+ };
183
+ var convertToAISDKTool = (tool3) => {
184
+ const isLangchainTool = "invoke" in tool3;
185
+ return isLangchainTool ? convertLangchainTool(tool3) : tool3;
186
+ };
187
+ var convertLangchainTool = (langchainTool) => {
188
+ return tool({
189
+ description: langchainTool.description,
190
+ parameters: langchainTool.schema,
191
+ execute: async (...param) => langchainTool.invoke(...param)
192
+ });
193
+ };
194
+ var WorkflowTool = class {
195
+ /**
196
+ * description of the tool
197
+ */
198
+ description;
199
+ /**
200
+ * schema of the tool
201
+ */
202
+ schema;
203
+ /**
204
+ * function to invoke the tool
205
+ */
206
+ invoke;
207
+ /**
208
+ * whether the invoke method of the tool is to be wrapped with `context.run`
209
+ */
210
+ executeAsStep;
211
+ /**
212
+ *
213
+ * @param description description of the tool
214
+ * @param schema schema of the tool
215
+ * @param invoke function to invoke the tool
216
+ * @param executeAsStep whether the invoke method of the tool is to be wrapped with `context.run`
217
+ */
218
+ constructor(params) {
219
+ this.description = params.description;
220
+ this.schema = params.schema;
221
+ this.invoke = params.invoke;
222
+ this.executeAsStep = params.executeAsStep ?? true;
223
+ }
224
+ };
225
+
103
226
  // src/client/utils.ts
104
227
  import { QstashError as QstashError2 } from "@upstash/qstash";
105
228
  var makeNotifyRequest = async (requester, eventId, eventData) => {
@@ -160,31 +283,6 @@ var getSteps = async (requester, workflowRunId, messageId, debug) => {
160
283
  }
161
284
  };
162
285
 
163
- // src/utils.ts
164
- var NANOID_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_";
165
- var NANOID_LENGTH = 21;
166
- function getRandomInt() {
167
- return Math.floor(Math.random() * NANOID_CHARS.length);
168
- }
169
- function nanoid() {
170
- return Array.from({ length: NANOID_LENGTH }).map(() => NANOID_CHARS[getRandomInt()]).join("");
171
- }
172
- function getWorkflowRunId(id) {
173
- return `wfr_${id ?? nanoid()}`;
174
- }
175
- function decodeBase64(base64) {
176
- try {
177
- const binString = atob(base64);
178
- const intArray = Uint8Array.from(binString, (m) => m.codePointAt(0));
179
- return new TextDecoder().decode(intArray);
180
- } catch (error) {
181
- console.warn(
182
- `Upstash Qstash: Failed while decoding base64 "${base64}". Decoding with atob and returning it instead. ${error}`
183
- );
184
- return atob(base64);
185
- }
186
- }
187
-
188
286
  // src/context/steps.ts
189
287
  var BaseLazyStep = class {
190
288
  stepName;
@@ -365,41 +463,6 @@ var LazyNotifyStep = class extends LazyFunctionStep {
365
463
  });
366
464
  }
367
465
  };
368
- var LazyInvokeStep = class extends BaseLazyStep {
369
- stepType = "Invoke";
370
- params;
371
- constructor(stepName, { workflow, body, headers = {}, workflowRunId, retries }) {
372
- super(stepName);
373
- this.params = {
374
- workflow,
375
- body,
376
- headers,
377
- workflowRunId: getWorkflowRunId(workflowRunId),
378
- retries
379
- };
380
- }
381
- getPlanStep(concurrent, targetStep) {
382
- return {
383
- stepId: 0,
384
- stepName: this.stepName,
385
- stepType: this.stepType,
386
- concurrent,
387
- targetStep
388
- };
389
- }
390
- /**
391
- * won't be used as it's the server who will add the result step
392
- * in Invoke step.
393
- */
394
- getResultStep(concurrent, stepId) {
395
- return Promise.resolve({
396
- stepId,
397
- stepName: this.stepName,
398
- stepType: this.stepType,
399
- concurrent
400
- });
401
- }
402
- };
403
466
 
404
467
  // node_modules/neverthrow/dist/index.es.js
405
468
  var defaultErrorConfig = {
@@ -877,8 +940,8 @@ var triggerRouteFunction = async ({
877
940
  debug
878
941
  }) => {
879
942
  try {
880
- const result = await onStep();
881
- await onCleanup(result);
943
+ await onStep();
944
+ await onCleanup();
882
945
  return ok("workflow-finished");
883
946
  } catch (error) {
884
947
  const error_ = error;
@@ -899,15 +962,14 @@ var triggerRouteFunction = async ({
899
962
  }
900
963
  }
901
964
  };
902
- var triggerWorkflowDelete = async (workflowContext, result, debug, cancel = false) => {
965
+ var triggerWorkflowDelete = async (workflowContext, debug, cancel = false) => {
903
966
  await debug?.log("SUBMIT", "SUBMIT_CLEANUP", {
904
967
  deletedWorkflowRunId: workflowContext.workflowRunId
905
968
  });
906
969
  await workflowContext.qstashClient.http.request({
907
970
  path: ["v2", "workflows", "runs", `${workflowContext.workflowRunId}?cancel=${cancel}`],
908
971
  method: "DELETE",
909
- parseResponseAsJson: false,
910
- body: JSON.stringify(result)
972
+ parseResponseAsJson: false
911
973
  });
912
974
  await debug?.log(
913
975
  "SUBMIT",
@@ -1062,14 +1124,11 @@ var getHeaders = ({
1062
1124
  callTimeout,
1063
1125
  telemetry
1064
1126
  }) => {
1065
- const contentType = (userHeaders ? userHeaders.get("Content-Type") : void 0) ?? DEFAULT_CONTENT_TYPE;
1066
1127
  const baseHeaders = {
1067
1128
  [WORKFLOW_INIT_HEADER]: initHeaderValue,
1068
1129
  [WORKFLOW_ID_HEADER]: workflowRunId,
1069
1130
  [WORKFLOW_URL_HEADER]: workflowUrl,
1070
1131
  [WORKFLOW_FEATURE_HEADER]: "LazyFetch,InitialBody",
1071
- [WORKFLOW_PROTOCOL_VERSION_HEADER]: WORKFLOW_PROTOCOL_VERSION,
1072
- "content-type": contentType,
1073
1132
  ...telemetry ? getTelemetryHeaders(telemetry) : {}
1074
1133
  };
1075
1134
  if (!step?.callUrl) {
@@ -1080,13 +1139,18 @@ var getHeaders = ({
1080
1139
  }
1081
1140
  if (failureUrl) {
1082
1141
  baseHeaders[`Upstash-Failure-Callback-Forward-${WORKFLOW_FAILURE_HEADER}`] = "true";
1142
+ baseHeaders[`Upstash-Failure-Callback-Forward-Upstash-Workflow-Failure-Callback`] = "true";
1143
+ baseHeaders["Upstash-Failure-Callback-Workflow-Runid"] = workflowRunId;
1144
+ baseHeaders["Upstash-Failure-Callback-Workflow-Init"] = "false";
1145
+ baseHeaders["Upstash-Failure-Callback-Workflow-Url"] = workflowUrl;
1146
+ baseHeaders["Upstash-Failure-Callback-Workflow-Calltype"] = "failureCall";
1147
+ if (retries !== void 0) {
1148
+ baseHeaders["Upstash-Failure-Callback-Retries"] = retries.toString();
1149
+ }
1083
1150
  if (!step?.callUrl) {
1084
1151
  baseHeaders["Upstash-Failure-Callback"] = failureUrl;
1085
1152
  }
1086
1153
  }
1087
- if (step?.stepType === "Invoke") {
1088
- baseHeaders["upstash-workflow-invoke"] = "true";
1089
- }
1090
1154
  if (step?.callUrl) {
1091
1155
  baseHeaders["Upstash-Retries"] = callRetries?.toString() ?? "0";
1092
1156
  baseHeaders[WORKFLOW_FEATURE_HEADER] = "WF_NoDelete,InitialBody";
@@ -1108,6 +1172,7 @@ var getHeaders = ({
1108
1172
  baseHeaders[`Upstash-Failure-Callback-Forward-${header}`] = userHeaders.get(header);
1109
1173
  }
1110
1174
  }
1175
+ const contentType = (userHeaders ? userHeaders.get("Content-Type") : void 0) ?? DEFAULT_CONTENT_TYPE;
1111
1176
  if (step?.callHeaders) {
1112
1177
  const forwardedHeaders = Object.fromEntries(
1113
1178
  Object.entries(step.callHeaders).map(([header, value]) => [
@@ -1157,7 +1222,8 @@ var getHeaders = ({
1157
1222
  "Upstash-Workflow-Runid": [workflowRunId],
1158
1223
  [WORKFLOW_INIT_HEADER]: ["false"],
1159
1224
  [WORKFLOW_URL_HEADER]: [workflowUrl],
1160
- "Upstash-Workflow-CallType": ["step"]
1225
+ "Upstash-Workflow-CallType": ["step"],
1226
+ "Content-Type": [contentType]
1161
1227
  }
1162
1228
  };
1163
1229
  }
@@ -1452,23 +1518,7 @@ var AutoExecutor = class _AutoExecutor {
1452
1518
  method: "POST",
1453
1519
  parseResponseAsJson: false
1454
1520
  });
1455
- throw new WorkflowAbort(waitStep.stepName, waitStep);
1456
- }
1457
- if (steps.length === 1 && lazySteps[0] instanceof LazyInvokeStep) {
1458
- const invokeStep = steps[0];
1459
- const lazyInvokeStep = lazySteps[0];
1460
- await lazyInvokeStep.params.workflow.callback(
1461
- {
1462
- body: lazyInvokeStep.params.body,
1463
- headers: lazyInvokeStep.params.headers,
1464
- workflowRunId: lazyInvokeStep.params.workflowRunId,
1465
- workflow: lazyInvokeStep.params.workflow,
1466
- retries: lazyInvokeStep.params.retries
1467
- },
1468
- invokeStep,
1469
- this.context
1470
- );
1471
- throw new WorkflowAbort(invokeStep.stepName, invokeStep);
1521
+ throw new WorkflowAbort(steps[0].stepName, steps[0]);
1472
1522
  }
1473
1523
  const result = await this.context.qstashClient.batchJSON(
1474
1524
  steps.map((singleStep, index) => {
@@ -1719,98 +1769,6 @@ var WorkflowApi = class extends BaseWorkflowApi {
1719
1769
  }
1720
1770
  };
1721
1771
 
1722
- // src/agents/adapters.ts
1723
- import { createOpenAI } from "@ai-sdk/openai";
1724
- import { tool } from "ai";
1725
-
1726
- // src/agents/constants.ts
1727
- var AGENT_NAME_HEADER = "upstash-agent-name";
1728
- var MANAGER_AGENT_PROMPT = `You are an agent orchestrating other AI Agents.
1729
-
1730
- These other agents have tools available to them.
1731
-
1732
- Given a prompt, utilize these agents to address requests.
1733
-
1734
- Don't always call all the agents provided to you at the same time. You can call one and use it's response to call another.
1735
-
1736
- Avoid calling the same agent twice in one turn. Instead, prefer to call it once but provide everything
1737
- you need from that agent.
1738
- `;
1739
-
1740
- // src/agents/adapters.ts
1741
- var createWorkflowOpenAI = (context, config) => {
1742
- const { baseURL, apiKey } = config ?? {};
1743
- return createOpenAI({
1744
- baseURL,
1745
- apiKey,
1746
- compatibility: "strict",
1747
- fetch: async (input, init) => {
1748
- try {
1749
- const headers = init?.headers ? Object.fromEntries(new Headers(init.headers).entries()) : {};
1750
- const body = init?.body ? JSON.parse(init.body) : void 0;
1751
- const agentName = headers[AGENT_NAME_HEADER];
1752
- const stepName = agentName ? `Call Agent ${agentName}` : "Call Agent";
1753
- const responseInfo = await context.call(stepName, {
1754
- url: input.toString(),
1755
- method: init?.method,
1756
- headers,
1757
- body
1758
- });
1759
- const responseHeaders = new Headers(
1760
- Object.entries(responseInfo.header).reduce(
1761
- (acc, [key, values]) => {
1762
- acc[key] = values.join(", ");
1763
- return acc;
1764
- },
1765
- {}
1766
- )
1767
- );
1768
- return new Response(JSON.stringify(responseInfo.body), {
1769
- status: responseInfo.status,
1770
- headers: responseHeaders
1771
- });
1772
- } catch (error) {
1773
- if (error instanceof Error && error.name === "WorkflowAbort") {
1774
- throw error;
1775
- } else {
1776
- console.error("Error in fetch implementation:", error);
1777
- throw error;
1778
- }
1779
- }
1780
- }
1781
- });
1782
- };
1783
- var wrapTools = ({
1784
- context,
1785
- tools
1786
- }) => {
1787
- return Object.fromEntries(
1788
- Object.entries(tools).map((toolInfo) => {
1789
- const [toolName, tool3] = toolInfo;
1790
- const aiSDKTool = convertToAISDKTool(tool3);
1791
- const execute = aiSDKTool.execute;
1792
- if (execute) {
1793
- const wrappedExecute = (...params) => {
1794
- return context.run(`Run tool ${toolName}`, () => execute(...params));
1795
- };
1796
- aiSDKTool.execute = wrappedExecute;
1797
- }
1798
- return [toolName, aiSDKTool];
1799
- })
1800
- );
1801
- };
1802
- var convertToAISDKTool = (tool3) => {
1803
- const isLangchainTool = "invoke" in tool3;
1804
- return isLangchainTool ? convertLangchainTool(tool3) : tool3;
1805
- };
1806
- var convertLangchainTool = (langchainTool) => {
1807
- return tool({
1808
- description: langchainTool.description,
1809
- parameters: langchainTool.schema,
1810
- execute: async (...param) => langchainTool.invoke(...param)
1811
- });
1812
- };
1813
-
1814
1772
  // src/agents/agent.ts
1815
1773
  import { z } from "zod";
1816
1774
  import { generateText, tool as tool2, ToolExecutionError } from "ai";
@@ -2385,13 +2343,6 @@ var WorkflowContext = class {
2385
2343
  return result;
2386
2344
  }
2387
2345
  }
2388
- async invoke(stepName, settings) {
2389
- const result = await this.addStep(new LazyInvokeStep(stepName, settings));
2390
- return {
2391
- ...result,
2392
- body: result.body ? JSON.parse(result.body) : void 0
2393
- };
2394
- }
2395
2346
  /**
2396
2347
  * Cancel the current workflow run
2397
2348
  *
@@ -2469,6 +2420,31 @@ var WorkflowLogger = class _WorkflowLogger {
2469
2420
  }
2470
2421
  };
2471
2422
 
2423
+ // src/utils.ts
2424
+ var NANOID_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_";
2425
+ var NANOID_LENGTH = 21;
2426
+ function getRandomInt() {
2427
+ return Math.floor(Math.random() * NANOID_CHARS.length);
2428
+ }
2429
+ function nanoid() {
2430
+ return Array.from({ length: NANOID_LENGTH }).map(() => NANOID_CHARS[getRandomInt()]).join("");
2431
+ }
2432
+ function getWorkflowRunId(id) {
2433
+ return `wfr_${id ?? nanoid()}`;
2434
+ }
2435
+ function decodeBase64(base64) {
2436
+ try {
2437
+ const binString = atob(base64);
2438
+ const intArray = Uint8Array.from(binString, (m) => m.codePointAt(0));
2439
+ return new TextDecoder().decode(intArray);
2440
+ } catch (error) {
2441
+ console.warn(
2442
+ `Upstash Qstash: Failed while decoding base64 "${base64}". Decoding with atob and returning it instead. ${error}`
2443
+ );
2444
+ return atob(base64);
2445
+ }
2446
+ }
2447
+
2472
2448
  // src/serve/authorization.ts
2473
2449
  import { Client as Client2 } from "@upstash/qstash";
2474
2450
  var DisabledWorkflowContext = class _DisabledWorkflowContext extends WorkflowContext {
@@ -2914,8 +2890,8 @@ var serveBase = (routeFunction, telemetry, options) => {
2914
2890
  } else if (callReturnCheck.value === "continue-workflow") {
2915
2891
  const result = isFirstInvocation ? await triggerFirstInvocation({ workflowContext, useJSONContent, telemetry, debug }) : await triggerRouteFunction({
2916
2892
  onStep: async () => routeFunction(workflowContext),
2917
- onCleanup: async (result2) => {
2918
- await triggerWorkflowDelete(workflowContext, result2, debug);
2893
+ onCleanup: async () => {
2894
+ await triggerWorkflowDelete(workflowContext, debug);
2919
2895
  },
2920
2896
  onCancel: async () => {
2921
2897
  await makeCancelRequest(workflowContext.qstashClient.http, workflowRunId);
@@ -2966,12 +2942,12 @@ export {
2966
2942
  SDK_TELEMETRY,
2967
2943
  WorkflowError,
2968
2944
  WorkflowAbort,
2969
- getWorkflowRunId,
2970
2945
  StepTypes,
2971
2946
  triggerFirstInvocation,
2972
- getHeaders,
2947
+ WorkflowTool,
2973
2948
  WorkflowContext,
2974
2949
  WorkflowLogger,
2950
+ getWorkflowRunId,
2975
2951
  serveBase,
2976
2952
  serve
2977
2953
  };
package/cloudflare.d.mts CHANGED
@@ -1,5 +1,4 @@
1
- import { R as RouteFunction, j as PublicServeOptions, t as InvokableWorkflow } from './types-C7Y7WUQd.mjs';
2
- import { s as serveManyBase } from './serve-many-BlBvXfBS.mjs';
1
+ import { R as RouteFunction, k as PublicServeOptions } from './types-B62AnIU3.mjs';
3
2
  import '@upstash/qstash';
4
3
  import 'zod';
5
4
  import 'ai';
@@ -24,7 +23,7 @@ type PagesHandlerArgs = [{
24
23
  */
25
24
  type WorkersHandlerArgs = [Request, Record<string, string | undefined>];
26
25
  /**
27
- * Serve method to serve a Upstash Workflow in a Cloudflare project
26
+ * Serve method to serve a Upstash Workflow in a Nextjs project
28
27
  *
29
28
  * See for options https://upstash.com/docs/qstash/workflows/basics/serve
30
29
  *
@@ -32,12 +31,8 @@ type WorkersHandlerArgs = [Request, Record<string, string | undefined>];
32
31
  * @param options workflow options
33
32
  * @returns
34
33
  */
35
- declare const serve: <TInitialPayload = unknown, TResult = unknown>(routeFunction: RouteFunction<TInitialPayload, TResult>, options?: PublicServeOptions<TInitialPayload>) => {
34
+ declare const serve: <TInitialPayload = unknown>(routeFunction: RouteFunction<TInitialPayload>, options?: PublicServeOptions<TInitialPayload>) => {
36
35
  fetch: (...args: PagesHandlerArgs | WorkersHandlerArgs) => Promise<Response>;
37
36
  };
38
- declare const createWorkflow: <TInitialPayload, TResult>(routeFunction: RouteFunction<TInitialPayload, TResult>, options?: PublicServeOptions<TInitialPayload> | undefined) => InvokableWorkflow<TInitialPayload, TResult, Parameters<ReturnType<typeof serve<TInitialPayload, TResult>>["fetch"]>>;
39
- declare const serveMany: (workflows: Parameters<typeof serveManyBase>[0]["workflows"]) => {
40
- fetch: (...params: PagesHandlerArgs | WorkersHandlerArgs) => Promise<any>;
41
- };
42
37
 
43
- export { type PagesHandlerArgs, type WorkersHandlerArgs, type WorkflowBindings, createWorkflow, serve, serveMany };
38
+ export { type PagesHandlerArgs, type WorkersHandlerArgs, type WorkflowBindings, serve };
package/cloudflare.d.ts CHANGED
@@ -1,5 +1,4 @@
1
- import { R as RouteFunction, j as PublicServeOptions, t as InvokableWorkflow } from './types-C7Y7WUQd.js';
2
- import { s as serveManyBase } from './serve-many-Dw-UUnH6.js';
1
+ import { R as RouteFunction, k as PublicServeOptions } from './types-B62AnIU3.js';
3
2
  import '@upstash/qstash';
4
3
  import 'zod';
5
4
  import 'ai';
@@ -24,7 +23,7 @@ type PagesHandlerArgs = [{
24
23
  */
25
24
  type WorkersHandlerArgs = [Request, Record<string, string | undefined>];
26
25
  /**
27
- * Serve method to serve a Upstash Workflow in a Cloudflare project
26
+ * Serve method to serve a Upstash Workflow in a Nextjs project
28
27
  *
29
28
  * See for options https://upstash.com/docs/qstash/workflows/basics/serve
30
29
  *
@@ -32,12 +31,8 @@ type WorkersHandlerArgs = [Request, Record<string, string | undefined>];
32
31
  * @param options workflow options
33
32
  * @returns
34
33
  */
35
- declare const serve: <TInitialPayload = unknown, TResult = unknown>(routeFunction: RouteFunction<TInitialPayload, TResult>, options?: PublicServeOptions<TInitialPayload>) => {
34
+ declare const serve: <TInitialPayload = unknown>(routeFunction: RouteFunction<TInitialPayload>, options?: PublicServeOptions<TInitialPayload>) => {
36
35
  fetch: (...args: PagesHandlerArgs | WorkersHandlerArgs) => Promise<Response>;
37
36
  };
38
- declare const createWorkflow: <TInitialPayload, TResult>(routeFunction: RouteFunction<TInitialPayload, TResult>, options?: PublicServeOptions<TInitialPayload> | undefined) => InvokableWorkflow<TInitialPayload, TResult, Parameters<ReturnType<typeof serve<TInitialPayload, TResult>>["fetch"]>>;
39
- declare const serveMany: (workflows: Parameters<typeof serveManyBase>[0]["workflows"]) => {
40
- fetch: (...params: PagesHandlerArgs | WorkersHandlerArgs) => Promise<any>;
41
- };
42
37
 
43
- export { type PagesHandlerArgs, type WorkersHandlerArgs, type WorkflowBindings, createWorkflow, serve, serveMany };
38
+ export { type PagesHandlerArgs, type WorkersHandlerArgs, type WorkflowBindings, serve };