@upstash/workflow 0.2.2 → 0.2.4

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/hono.js CHANGED
@@ -77,6 +77,23 @@ var getSteps = async (requester, workflowRunId, messageId, debug) => {
77
77
  }
78
78
  };
79
79
 
80
+ // src/constants.ts
81
+ var WORKFLOW_ID_HEADER = "Upstash-Workflow-RunId";
82
+ var WORKFLOW_INIT_HEADER = "Upstash-Workflow-Init";
83
+ var WORKFLOW_URL_HEADER = "Upstash-Workflow-Url";
84
+ var WORKFLOW_FAILURE_HEADER = "Upstash-Workflow-Is-Failure";
85
+ var WORKFLOW_FEATURE_HEADER = "Upstash-Feature-Set";
86
+ var WORKFLOW_PROTOCOL_VERSION = "1";
87
+ var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
88
+ var DEFAULT_CONTENT_TYPE = "application/json";
89
+ var NO_CONCURRENCY = 1;
90
+ var DEFAULT_RETRIES = 3;
91
+ var VERSION = "v0.2.3";
92
+ var SDK_TELEMETRY = `@upstash/workflow@${VERSION}`;
93
+ var TELEMETRY_HEADER_SDK = "Upstash-Telemetry-Sdk";
94
+ var TELEMETRY_HEADER_FRAMEWORK = "Upstash-Telemetry-Framework";
95
+ var TELEMETRY_HEADER_RUNTIME = "Upstash-Telemetry-Runtime";
96
+
80
97
  // src/error.ts
81
98
  var import_qstash2 = require("@upstash/qstash");
82
99
  var WorkflowError = class extends import_qstash2.QstashError {
@@ -714,18 +731,6 @@ var Err = class {
714
731
  };
715
732
  var fromThrowable = Result.fromThrowable;
716
733
 
717
- // src/constants.ts
718
- var WORKFLOW_ID_HEADER = "Upstash-Workflow-RunId";
719
- var WORKFLOW_INIT_HEADER = "Upstash-Workflow-Init";
720
- var WORKFLOW_URL_HEADER = "Upstash-Workflow-Url";
721
- var WORKFLOW_FAILURE_HEADER = "Upstash-Workflow-Is-Failure";
722
- var WORKFLOW_FEATURE_HEADER = "Upstash-Feature-Set";
723
- var WORKFLOW_PROTOCOL_VERSION = "1";
724
- var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
725
- var DEFAULT_CONTENT_TYPE = "application/json";
726
- var NO_CONCURRENCY = 1;
727
- var DEFAULT_RETRIES = 3;
728
-
729
734
  // src/types.ts
730
735
  var StepTypes = [
731
736
  "Initial",
@@ -739,16 +744,21 @@ var StepTypes = [
739
744
 
740
745
  // src/workflow-requests.ts
741
746
  var import_qstash3 = require("@upstash/qstash");
742
- var triggerFirstInvocation = async (workflowContext, retries, useJSONContent, debug) => {
743
- const { headers } = getHeaders(
744
- "true",
745
- workflowContext.workflowRunId,
746
- workflowContext.url,
747
- workflowContext.headers,
748
- void 0,
749
- workflowContext.failureUrl,
750
- retries
751
- );
747
+ var triggerFirstInvocation = async ({
748
+ workflowContext,
749
+ useJSONContent,
750
+ telemetry,
751
+ debug
752
+ }) => {
753
+ const { headers } = getHeaders({
754
+ initHeaderValue: "true",
755
+ workflowRunId: workflowContext.workflowRunId,
756
+ workflowUrl: workflowContext.url,
757
+ userHeaders: workflowContext.headers,
758
+ failureUrl: workflowContext.failureUrl,
759
+ retries: workflowContext.retries,
760
+ telemetry
761
+ });
752
762
  if (useJSONContent) {
753
763
  headers["content-type"] = "application/json";
754
764
  }
@@ -854,7 +864,16 @@ var recreateUserHeaders = (headers) => {
854
864
  }
855
865
  return filteredHeaders;
856
866
  };
857
- var handleThirdPartyCallResult = async (request, requestPayload, client, workflowUrl, failureUrl, retries, debug) => {
867
+ var handleThirdPartyCallResult = async ({
868
+ request,
869
+ requestPayload,
870
+ client,
871
+ workflowUrl,
872
+ failureUrl,
873
+ retries,
874
+ telemetry,
875
+ debug
876
+ }) => {
858
877
  try {
859
878
  if (request.headers.get("Upstash-Workflow-Callback")) {
860
879
  let callbackPayload;
@@ -913,15 +932,15 @@ ${atob(callbackMessage.body ?? "")}`
913
932
  );
914
933
  }
915
934
  const userHeaders = recreateUserHeaders(request.headers);
916
- const { headers: requestHeaders } = getHeaders(
917
- "false",
935
+ const { headers: requestHeaders } = getHeaders({
936
+ initHeaderValue: "false",
918
937
  workflowRunId,
919
938
  workflowUrl,
920
939
  userHeaders,
921
- void 0,
922
940
  failureUrl,
923
- retries
924
- );
941
+ retries,
942
+ telemetry
943
+ });
925
944
  const callResponse = {
926
945
  status: callbackMessage.status,
927
946
  body: atob(callbackMessage.body ?? ""),
@@ -959,12 +978,31 @@ ${atob(callbackMessage.body ?? "")}`
959
978
  );
960
979
  }
961
980
  };
962
- var getHeaders = (initHeaderValue, workflowRunId, workflowUrl, userHeaders, step, failureUrl, retries, callRetries, callTimeout) => {
981
+ var getTelemetryHeaders = (telemetry) => {
982
+ return {
983
+ [TELEMETRY_HEADER_SDK]: telemetry.sdk,
984
+ [TELEMETRY_HEADER_FRAMEWORK]: telemetry.framework,
985
+ [TELEMETRY_HEADER_RUNTIME]: telemetry.runtime ?? "unknown"
986
+ };
987
+ };
988
+ var getHeaders = ({
989
+ initHeaderValue,
990
+ workflowRunId,
991
+ workflowUrl,
992
+ userHeaders,
993
+ failureUrl,
994
+ retries,
995
+ step,
996
+ callRetries,
997
+ callTimeout,
998
+ telemetry
999
+ }) => {
963
1000
  const baseHeaders = {
964
1001
  [WORKFLOW_INIT_HEADER]: initHeaderValue,
965
1002
  [WORKFLOW_ID_HEADER]: workflowRunId,
966
1003
  [WORKFLOW_URL_HEADER]: workflowUrl,
967
- [WORKFLOW_FEATURE_HEADER]: "LazyFetch,InitialBody"
1004
+ [WORKFLOW_FEATURE_HEADER]: "LazyFetch,InitialBody",
1005
+ ...telemetry ? getTelemetryHeaders(telemetry) : {}
968
1006
  };
969
1007
  if (!step?.callUrl) {
970
1008
  baseHeaders[`Upstash-Forward-${WORKFLOW_PROTOCOL_VERSION_HEADER}`] = WORKFLOW_PROTOCOL_VERSION;
@@ -1038,6 +1076,13 @@ var getHeaders = (initHeaderValue, workflowRunId, workflowUrl, userHeaders, step
1038
1076
  ...Object.fromEntries(
1039
1077
  Object.entries(baseHeaders).map(([header, value]) => [header, [value]])
1040
1078
  ),
1079
+ // to include telemetry headers:
1080
+ ...telemetry ? Object.fromEntries(
1081
+ Object.entries(getTelemetryHeaders(telemetry)).map(([header, value]) => [
1082
+ header,
1083
+ [value]
1084
+ ])
1085
+ ) : {},
1041
1086
  // note: using WORKFLOW_ID_HEADER doesn't work, because Runid -> RunId:
1042
1087
  "Upstash-Workflow-Runid": [workflowRunId],
1043
1088
  [WORKFLOW_INIT_HEADER]: ["false"],
@@ -1076,6 +1121,7 @@ If you want to disable QStash Verification, you should clear env variables QSTAS
1076
1121
  };
1077
1122
 
1078
1123
  // src/context/auto-executor.ts
1124
+ var import_qstash4 = require("@upstash/qstash");
1079
1125
  var AutoExecutor = class _AutoExecutor {
1080
1126
  context;
1081
1127
  promises = /* @__PURE__ */ new WeakMap();
@@ -1084,13 +1130,15 @@ var AutoExecutor = class _AutoExecutor {
1084
1130
  nonPlanStepCount;
1085
1131
  steps;
1086
1132
  indexInCurrentList = 0;
1133
+ telemetry;
1087
1134
  stepCount = 0;
1088
1135
  planStepCount = 0;
1089
1136
  executingStep = false;
1090
- constructor(context, steps, debug) {
1137
+ constructor(context, steps, telemetry, debug) {
1091
1138
  this.context = context;
1092
- this.debug = debug;
1093
1139
  this.steps = steps;
1140
+ this.telemetry = telemetry;
1141
+ this.debug = debug;
1094
1142
  this.nonPlanStepCount = this.steps.filter((step) => !step.targetStep).length;
1095
1143
  }
1096
1144
  /**
@@ -1233,7 +1281,7 @@ var AutoExecutor = class _AutoExecutor {
1233
1281
  );
1234
1282
  await this.submitStepsToQStash([resultStep], [parallelStep]);
1235
1283
  } catch (error) {
1236
- if (error instanceof WorkflowAbort) {
1284
+ if (error instanceof WorkflowAbort || error instanceof import_qstash4.QstashError && error.status === 400) {
1237
1285
  throw error;
1238
1286
  }
1239
1287
  throw new WorkflowError(
@@ -1304,15 +1352,16 @@ var AutoExecutor = class _AutoExecutor {
1304
1352
  });
1305
1353
  if (steps[0].waitEventId && steps.length === 1) {
1306
1354
  const waitStep = steps[0];
1307
- const { headers, timeoutHeaders } = getHeaders(
1308
- "false",
1309
- this.context.workflowRunId,
1310
- this.context.url,
1311
- this.context.headers,
1312
- waitStep,
1313
- this.context.failureUrl,
1314
- this.context.retries
1315
- );
1355
+ const { headers, timeoutHeaders } = getHeaders({
1356
+ initHeaderValue: "false",
1357
+ workflowRunId: this.context.workflowRunId,
1358
+ workflowUrl: this.context.url,
1359
+ userHeaders: this.context.headers,
1360
+ step: waitStep,
1361
+ failureUrl: this.context.failureUrl,
1362
+ retries: this.context.retries,
1363
+ telemetry: this.telemetry
1364
+ });
1316
1365
  const waitBody = {
1317
1366
  url: this.context.url,
1318
1367
  timeout: waitStep.timeout,
@@ -1339,17 +1388,18 @@ var AutoExecutor = class _AutoExecutor {
1339
1388
  const result = await this.context.qstashClient.batchJSON(
1340
1389
  steps.map((singleStep, index) => {
1341
1390
  const lazyStep = lazySteps[index];
1342
- const { headers } = getHeaders(
1343
- "false",
1344
- this.context.workflowRunId,
1345
- this.context.url,
1346
- this.context.headers,
1347
- singleStep,
1348
- this.context.failureUrl,
1349
- this.context.retries,
1350
- lazyStep instanceof LazyCallStep ? lazyStep.retries : void 0,
1351
- lazyStep instanceof LazyCallStep ? lazyStep.timeout : void 0
1352
- );
1391
+ const { headers } = getHeaders({
1392
+ initHeaderValue: "false",
1393
+ workflowRunId: this.context.workflowRunId,
1394
+ workflowUrl: this.context.url,
1395
+ userHeaders: this.context.headers,
1396
+ step: singleStep,
1397
+ failureUrl: this.context.failureUrl,
1398
+ retries: this.context.retries,
1399
+ callRetries: lazyStep instanceof LazyCallStep ? lazyStep.retries : void 0,
1400
+ callTimeout: lazyStep instanceof LazyCallStep ? lazyStep.timeout : void 0,
1401
+ telemetry: this.telemetry
1402
+ });
1353
1403
  const willWait = singleStep.concurrent === NO_CONCURRENCY || singleStep.stepId === 0;
1354
1404
  singleStep.out = JSON.stringify(singleStep.out);
1355
1405
  return singleStep.callUrl ? (
@@ -1461,6 +1511,127 @@ var sortSteps = (steps) => {
1461
1511
  return [...steps].sort((step, stepOther) => getStepId(step) - getStepId(stepOther));
1462
1512
  };
1463
1513
 
1514
+ // src/context/api/anthropic.ts
1515
+ var import_qstash5 = require("@upstash/qstash");
1516
+
1517
+ // src/context/provider.ts
1518
+ var getProviderInfo = (api) => {
1519
+ if (!api.provider) {
1520
+ throw new WorkflowError("A Provider must be provided.");
1521
+ }
1522
+ if (api.provider.owner === "upstash") {
1523
+ throw new WorkflowError("Upstash provider isn't supported.");
1524
+ }
1525
+ const { name, provider, ...parameters } = api;
1526
+ if (!provider.baseUrl) throw new TypeError("baseUrl cannot be empty or undefined!");
1527
+ if (!provider.token) throw new TypeError("token cannot be empty or undefined!");
1528
+ if (provider.apiKind !== name) {
1529
+ throw new TypeError(`Unexpected api name. Expected '${provider.apiKind}', received ${name}`);
1530
+ }
1531
+ const providerInfo = {
1532
+ url: provider.getUrl(),
1533
+ baseUrl: provider.baseUrl,
1534
+ route: provider.getRoute(),
1535
+ appendHeaders: provider.getHeaders(parameters),
1536
+ owner: provider.owner,
1537
+ method: provider.method
1538
+ };
1539
+ return provider.onFinish(providerInfo, parameters);
1540
+ };
1541
+
1542
+ // src/context/api/base.ts
1543
+ var BaseWorkflowApi = class {
1544
+ context;
1545
+ constructor({ context }) {
1546
+ this.context = context;
1547
+ }
1548
+ /**
1549
+ * context.call which uses a QStash API
1550
+ *
1551
+ * @param stepName
1552
+ * @param settings
1553
+ * @returns
1554
+ */
1555
+ async callApi(stepName, settings) {
1556
+ const { url, appendHeaders, method } = getProviderInfo(settings.api);
1557
+ const { method: userMethod, body, headers = {}, retries = 0, timeout } = settings;
1558
+ return await this.context.call(stepName, {
1559
+ url,
1560
+ method: userMethod ?? method,
1561
+ body,
1562
+ headers: {
1563
+ ...appendHeaders,
1564
+ ...headers
1565
+ },
1566
+ retries,
1567
+ timeout
1568
+ });
1569
+ }
1570
+ };
1571
+
1572
+ // src/context/api/anthropic.ts
1573
+ var AnthropicAPI = class extends BaseWorkflowApi {
1574
+ async call(stepName, settings) {
1575
+ const { token, operation, ...parameters } = settings;
1576
+ return await this.callApi(stepName, {
1577
+ api: {
1578
+ name: "llm",
1579
+ provider: (0, import_qstash5.anthropic)({ token })
1580
+ },
1581
+ ...parameters
1582
+ });
1583
+ }
1584
+ };
1585
+
1586
+ // src/context/api/openai.ts
1587
+ var import_qstash6 = require("@upstash/qstash");
1588
+ var OpenAIAPI = class extends BaseWorkflowApi {
1589
+ async call(stepName, settings) {
1590
+ const { token, organization, operation, ...parameters } = settings;
1591
+ return await this.callApi(stepName, {
1592
+ api: {
1593
+ name: "llm",
1594
+ provider: (0, import_qstash6.openai)({ token, organization })
1595
+ },
1596
+ ...parameters
1597
+ });
1598
+ }
1599
+ };
1600
+
1601
+ // src/context/api/resend.ts
1602
+ var import_qstash7 = require("@upstash/qstash");
1603
+ var ResendAPI = class extends BaseWorkflowApi {
1604
+ async call(stepName, settings) {
1605
+ const { token, batch = false, ...parameters } = settings;
1606
+ return await this.callApi(stepName, {
1607
+ api: {
1608
+ name: "email",
1609
+ provider: (0, import_qstash7.resend)({ token, batch })
1610
+ },
1611
+ ...parameters
1612
+ });
1613
+ }
1614
+ };
1615
+
1616
+ // src/context/api/index.ts
1617
+ var WorkflowApi = class extends BaseWorkflowApi {
1618
+ get openai() {
1619
+ return new OpenAIAPI({
1620
+ context: this.context
1621
+ });
1622
+ }
1623
+ get resend() {
1624
+ return new ResendAPI({
1625
+ context: this.context
1626
+ });
1627
+ }
1628
+ get anthropic() {
1629
+ return new AnthropicAPI({
1630
+ context: this.context
1631
+ });
1632
+ }
1633
+ };
1634
+
1464
1635
  // src/context/context.ts
1465
1636
  var WorkflowContext = class {
1466
1637
  executor;
@@ -1593,7 +1764,8 @@ var WorkflowContext = class {
1593
1764
  debug,
1594
1765
  initialPayload,
1595
1766
  env,
1596
- retries
1767
+ retries,
1768
+ telemetry
1597
1769
  }) {
1598
1770
  this.qstashClient = qstashClient;
1599
1771
  this.workflowRunId = workflowRunId;
@@ -1604,7 +1776,7 @@ var WorkflowContext = class {
1604
1776
  this.requestPayload = initialPayload;
1605
1777
  this.env = env ?? {};
1606
1778
  this.retries = retries ?? DEFAULT_RETRIES;
1607
- this.executor = new AutoExecutor(this, this.steps, debug);
1779
+ this.executor = new AutoExecutor(this, this.steps, telemetry, debug);
1608
1780
  }
1609
1781
  /**
1610
1782
  * Executes a workflow step
@@ -1840,6 +2012,11 @@ var WorkflowContext = class {
1840
2012
  async addStep(step) {
1841
2013
  return await this.executor.addStep(step);
1842
2014
  }
2015
+ get api() {
2016
+ return new WorkflowApi({
2017
+ context: this
2018
+ });
2019
+ }
1843
2020
  };
1844
2021
 
1845
2022
  // src/logger.ts
@@ -1917,7 +2094,7 @@ function decodeBase64(base64) {
1917
2094
  }
1918
2095
 
1919
2096
  // src/serve/authorization.ts
1920
- var import_qstash4 = require("@upstash/qstash");
2097
+ var import_qstash8 = require("@upstash/qstash");
1921
2098
  var DisabledWorkflowContext = class _DisabledWorkflowContext extends WorkflowContext {
1922
2099
  static disabledMessage = "disabled-qstash-worklfow-run";
1923
2100
  /**
@@ -1948,7 +2125,7 @@ var DisabledWorkflowContext = class _DisabledWorkflowContext extends WorkflowCon
1948
2125
  */
1949
2126
  static async tryAuthentication(routeFunction, context) {
1950
2127
  const disabledContext = new _DisabledWorkflowContext({
1951
- qstashClient: new import_qstash4.Client({
2128
+ qstashClient: new import_qstash8.Client({
1952
2129
  baseUrl: "disabled-client",
1953
2130
  token: "disabled-client"
1954
2131
  }),
@@ -2112,7 +2289,7 @@ var parseRequest = async (requestPayload, isFirstInvocation, workflowRunId, requ
2112
2289
  };
2113
2290
  }
2114
2291
  };
2115
- var handleFailure = async (request, requestPayload, qstashClient, initialPayloadParser, routeFunction, failureFunction, debug) => {
2292
+ var handleFailure = async (request, requestPayload, qstashClient, initialPayloadParser, routeFunction, failureFunction, env, retries, debug) => {
2116
2293
  if (request.headers.get(WORKFLOW_FAILURE_HEADER) !== "true") {
2117
2294
  return ok("not-failure-callback");
2118
2295
  }
@@ -2137,7 +2314,11 @@ var handleFailure = async (request, requestPayload, qstashClient, initialPayload
2137
2314
  steps: [],
2138
2315
  url,
2139
2316
  failureUrl: url,
2140
- debug
2317
+ debug,
2318
+ env,
2319
+ retries,
2320
+ telemetry: void 0
2321
+ // not going to make requests in authentication check
2141
2322
  });
2142
2323
  const authCheck = await DisabledWorkflowContext.tryAuthentication(
2143
2324
  routeFunction,
@@ -2162,15 +2343,15 @@ var handleFailure = async (request, requestPayload, qstashClient, initialPayload
2162
2343
  };
2163
2344
 
2164
2345
  // src/serve/options.ts
2165
- var import_qstash5 = require("@upstash/qstash");
2166
- var import_qstash6 = require("@upstash/qstash");
2346
+ var import_qstash9 = require("@upstash/qstash");
2347
+ var import_qstash10 = require("@upstash/qstash");
2167
2348
  var processOptions = (options) => {
2168
2349
  const environment = options?.env ?? (typeof process === "undefined" ? {} : process.env);
2169
2350
  const receiverEnvironmentVariablesSet = Boolean(
2170
2351
  environment.QSTASH_CURRENT_SIGNING_KEY && environment.QSTASH_NEXT_SIGNING_KEY
2171
2352
  );
2172
2353
  return {
2173
- qstashClient: new import_qstash6.Client({
2354
+ qstashClient: new import_qstash10.Client({
2174
2355
  baseUrl: environment.QSTASH_URL,
2175
2356
  token: environment.QSTASH_TOKEN
2176
2357
  }),
@@ -2204,7 +2385,7 @@ var processOptions = (options) => {
2204
2385
  throw error;
2205
2386
  }
2206
2387
  },
2207
- receiver: receiverEnvironmentVariablesSet ? new import_qstash5.Receiver({
2388
+ receiver: receiverEnvironmentVariablesSet ? new import_qstash9.Receiver({
2208
2389
  currentSigningKey: environment.QSTASH_CURRENT_SIGNING_KEY,
2209
2390
  nextSigningKey: environment.QSTASH_NEXT_SIGNING_KEY
2210
2391
  }) : void 0,
@@ -2212,6 +2393,7 @@ var processOptions = (options) => {
2212
2393
  env: environment,
2213
2394
  retries: DEFAULT_RETRIES,
2214
2395
  useJSONContent: false,
2396
+ disableTelemetry: false,
2215
2397
  ...options
2216
2398
  };
2217
2399
  };
@@ -2246,7 +2428,7 @@ var determineUrls = async (request, url, baseUrl, failureFunction, failureUrl, d
2246
2428
  var AUTH_FAIL_MESSAGE = `Failed to authenticate Workflow request. If this is unexpected, see the caveat https://upstash.com/docs/workflow/basics/caveats#avoid-non-deterministic-code-outside-context-run`;
2247
2429
 
2248
2430
  // src/serve/index.ts
2249
- var serveBase = (routeFunction, options) => {
2431
+ var serveBase = (routeFunction, telemetry, options) => {
2250
2432
  const {
2251
2433
  qstashClient,
2252
2434
  onStepFinish,
@@ -2259,8 +2441,10 @@ var serveBase = (routeFunction, options) => {
2259
2441
  baseUrl,
2260
2442
  env,
2261
2443
  retries,
2262
- useJSONContent
2444
+ useJSONContent,
2445
+ disableTelemetry
2263
2446
  } = processOptions(options);
2447
+ telemetry = disableTelemetry ? void 0 : telemetry;
2264
2448
  const debug = WorkflowLogger.getLogger(verbose);
2265
2449
  const handler = async (request) => {
2266
2450
  await debug?.log("INFO", "ENDPOINT_START");
@@ -2296,7 +2480,10 @@ var serveBase = (routeFunction, options) => {
2296
2480
  qstashClient,
2297
2481
  initialPayloadParser,
2298
2482
  routeFunction,
2299
- failureFunction
2483
+ failureFunction,
2484
+ env,
2485
+ retries,
2486
+ debug
2300
2487
  );
2301
2488
  if (failureCheck.isErr()) {
2302
2489
  throw failureCheck.error;
@@ -2314,7 +2501,8 @@ var serveBase = (routeFunction, options) => {
2314
2501
  failureUrl: workflowFailureUrl,
2315
2502
  debug,
2316
2503
  env,
2317
- retries
2504
+ retries,
2505
+ telemetry
2318
2506
  });
2319
2507
  const authCheck = await DisabledWorkflowContext.tryAuthentication(
2320
2508
  routeFunction,
@@ -2330,22 +2518,23 @@ var serveBase = (routeFunction, options) => {
2330
2518
  "auth-fail"
2331
2519
  );
2332
2520
  }
2333
- const callReturnCheck = await handleThirdPartyCallResult(
2521
+ const callReturnCheck = await handleThirdPartyCallResult({
2334
2522
  request,
2335
- rawInitialPayload,
2336
- qstashClient,
2523
+ requestPayload: rawInitialPayload,
2524
+ client: qstashClient,
2337
2525
  workflowUrl,
2338
- workflowFailureUrl,
2526
+ failureUrl: workflowFailureUrl,
2339
2527
  retries,
2528
+ telemetry,
2340
2529
  debug
2341
- );
2530
+ });
2342
2531
  if (callReturnCheck.isErr()) {
2343
2532
  await debug?.log("ERROR", "SUBMIT_THIRD_PARTY_RESULT", {
2344
2533
  error: callReturnCheck.error.message
2345
2534
  });
2346
2535
  throw callReturnCheck.error;
2347
2536
  } else if (callReturnCheck.value === "continue-workflow") {
2348
- const result = isFirstInvocation ? await triggerFirstInvocation(workflowContext, retries, useJSONContent, debug) : await triggerRouteFunction({
2537
+ const result = isFirstInvocation ? await triggerFirstInvocation({ workflowContext, useJSONContent, telemetry, debug }) : await triggerRouteFunction({
2349
2538
  onStep: async () => routeFunction(workflowContext),
2350
2539
  onCleanup: async () => {
2351
2540
  await triggerWorkflowDelete(workflowContext, debug);
@@ -2385,12 +2574,19 @@ var serve = (routeFunction, options) => {
2385
2574
  const handler = async (context) => {
2386
2575
  const environment = context.env;
2387
2576
  const request = context.req.raw;
2388
- const { handler: serveHandler } = serveBase(routeFunction, {
2389
- // when hono is used without cf workers, it sends a DebugHTTPServer
2390
- // object in `context.env`. don't pass env if this is the case:
2391
- env: "QSTASH_TOKEN" in environment ? environment : void 0,
2392
- ...options
2393
- });
2577
+ const { handler: serveHandler } = serveBase(
2578
+ routeFunction,
2579
+ {
2580
+ sdk: SDK_TELEMETRY,
2581
+ framework: "hono"
2582
+ },
2583
+ {
2584
+ // when hono is used without cf workers, it sends a DebugHTTPServer
2585
+ // object in `context.env`. don't pass env if this is the case:
2586
+ env: "QSTASH_TOKEN" in environment ? environment : void 0,
2587
+ ...options
2588
+ }
2589
+ );
2394
2590
  return await serveHandler(request);
2395
2591
  };
2396
2592
  return handler;
package/hono.mjs CHANGED
@@ -1,18 +1,26 @@
1
1
  import {
2
+ SDK_TELEMETRY,
2
3
  serveBase
3
- } from "./chunk-Z7WS5XIR.mjs";
4
+ } from "./chunk-ETDFMXER.mjs";
4
5
 
5
6
  // platforms/hono.ts
6
7
  var serve = (routeFunction, options) => {
7
8
  const handler = async (context) => {
8
9
  const environment = context.env;
9
10
  const request = context.req.raw;
10
- const { handler: serveHandler } = serveBase(routeFunction, {
11
- // when hono is used without cf workers, it sends a DebugHTTPServer
12
- // object in `context.env`. don't pass env if this is the case:
13
- env: "QSTASH_TOKEN" in environment ? environment : void 0,
14
- ...options
15
- });
11
+ const { handler: serveHandler } = serveBase(
12
+ routeFunction,
13
+ {
14
+ sdk: SDK_TELEMETRY,
15
+ framework: "hono"
16
+ },
17
+ {
18
+ // when hono is used without cf workers, it sends a DebugHTTPServer
19
+ // object in `context.env`. don't pass env if this is the case:
20
+ env: "QSTASH_TOKEN" in environment ? environment : void 0,
21
+ ...options
22
+ }
23
+ );
16
24
  return await serveHandler(request);
17
25
  };
18
26
  return handler;
package/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { R as RouteFunction, W as WorkflowServeOptions, N as NotifyResponse, a as Waiter, S as Step } from './types-APRap-aV.mjs';
2
- export { A as AsyncStepFunction, C as CallResponse, D as Duration, k as FailureFunctionPayload, F as FinishCondition, L as LogLevel, o as NotifyStepResponse, P as ParallelCallState, j as PublicServeOptions, g as RawStep, l as RequiredExceptFields, i as StepFunction, f as StepType, e as StepTypes, h as SyncStepFunction, p as WaitEventOptions, m as WaitRequest, n as WaitStepResponse, c as WorkflowClient, b as WorkflowContext, r as WorkflowLogger, q as WorkflowLoggerOptions, d as WorkflowReceiver } from './types-APRap-aV.mjs';
1
+ import { R as RouteFunction, W as WorkflowServeOptions, N as NotifyResponse, a as Waiter, S as Step } from './types-Bt4-paRy.mjs';
2
+ export { A as AsyncStepFunction, C as CallResponse, q as CallSettings, D as Duration, k as FailureFunctionPayload, F as FinishCondition, H as HeaderParams, L as LogLevel, o as NotifyStepResponse, P as ParallelCallState, j as PublicServeOptions, g as RawStep, l as RequiredExceptFields, i as StepFunction, f as StepType, e as StepTypes, h as SyncStepFunction, T as Telemetry, p as WaitEventOptions, m as WaitRequest, n as WaitStepResponse, c as WorkflowClient, b as WorkflowContext, s as WorkflowLogger, r as WorkflowLoggerOptions, d as WorkflowReceiver } from './types-Bt4-paRy.mjs';
3
3
  import { Client as Client$1, QstashError } from '@upstash/qstash';
4
4
 
5
5
  /**
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { R as RouteFunction, W as WorkflowServeOptions, N as NotifyResponse, a as Waiter, S as Step } from './types-APRap-aV.js';
2
- export { A as AsyncStepFunction, C as CallResponse, D as Duration, k as FailureFunctionPayload, F as FinishCondition, L as LogLevel, o as NotifyStepResponse, P as ParallelCallState, j as PublicServeOptions, g as RawStep, l as RequiredExceptFields, i as StepFunction, f as StepType, e as StepTypes, h as SyncStepFunction, p as WaitEventOptions, m as WaitRequest, n as WaitStepResponse, c as WorkflowClient, b as WorkflowContext, r as WorkflowLogger, q as WorkflowLoggerOptions, d as WorkflowReceiver } from './types-APRap-aV.js';
1
+ import { R as RouteFunction, W as WorkflowServeOptions, N as NotifyResponse, a as Waiter, S as Step } from './types-Bt4-paRy.js';
2
+ export { A as AsyncStepFunction, C as CallResponse, q as CallSettings, D as Duration, k as FailureFunctionPayload, F as FinishCondition, H as HeaderParams, L as LogLevel, o as NotifyStepResponse, P as ParallelCallState, j as PublicServeOptions, g as RawStep, l as RequiredExceptFields, i as StepFunction, f as StepType, e as StepTypes, h as SyncStepFunction, T as Telemetry, p as WaitEventOptions, m as WaitRequest, n as WaitStepResponse, c as WorkflowClient, b as WorkflowContext, s as WorkflowLogger, r as WorkflowLoggerOptions, d as WorkflowReceiver } from './types-Bt4-paRy.js';
3
3
  import { Client as Client$1, QstashError } from '@upstash/qstash';
4
4
 
5
5
  /**