@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/h3.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as h3 from 'h3';
2
- import { R as RouteFunction, j as PublicServeOptions } from './types-APRap-aV.mjs';
2
+ import { R as RouteFunction, j as PublicServeOptions } from './types-Bt4-paRy.mjs';
3
3
  import '@upstash/qstash';
4
4
 
5
5
  declare const serve: <TInitialPayload = unknown>(routeFunction: RouteFunction<TInitialPayload>, options?: PublicServeOptions<TInitialPayload>) => {
package/h3.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as h3 from 'h3';
2
- import { R as RouteFunction, j as PublicServeOptions } from './types-APRap-aV.js';
2
+ import { R as RouteFunction, j as PublicServeOptions } from './types-Bt4-paRy.js';
3
3
  import '@upstash/qstash';
4
4
 
5
5
  declare const serve: <TInitialPayload = unknown>(routeFunction: RouteFunction<TInitialPayload>, options?: PublicServeOptions<TInitialPayload>) => {
package/h3.js CHANGED
@@ -389,6 +389,23 @@ var getSteps = async (requester, workflowRunId, messageId, debug) => {
389
389
  }
390
390
  };
391
391
 
392
+ // src/constants.ts
393
+ var WORKFLOW_ID_HEADER = "Upstash-Workflow-RunId";
394
+ var WORKFLOW_INIT_HEADER = "Upstash-Workflow-Init";
395
+ var WORKFLOW_URL_HEADER = "Upstash-Workflow-Url";
396
+ var WORKFLOW_FAILURE_HEADER = "Upstash-Workflow-Is-Failure";
397
+ var WORKFLOW_FEATURE_HEADER = "Upstash-Feature-Set";
398
+ var WORKFLOW_PROTOCOL_VERSION = "1";
399
+ var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
400
+ var DEFAULT_CONTENT_TYPE = "application/json";
401
+ var NO_CONCURRENCY = 1;
402
+ var DEFAULT_RETRIES = 3;
403
+ var VERSION = "v0.2.3";
404
+ var SDK_TELEMETRY = `@upstash/workflow@${VERSION}`;
405
+ var TELEMETRY_HEADER_SDK = "Upstash-Telemetry-Sdk";
406
+ var TELEMETRY_HEADER_FRAMEWORK = "Upstash-Telemetry-Framework";
407
+ var TELEMETRY_HEADER_RUNTIME = "Upstash-Telemetry-Runtime";
408
+
392
409
  // src/error.ts
393
410
  var import_qstash2 = require("@upstash/qstash");
394
411
  var WorkflowError = class extends import_qstash2.QstashError {
@@ -1026,18 +1043,6 @@ var Err = class {
1026
1043
  };
1027
1044
  var fromThrowable = Result.fromThrowable;
1028
1045
 
1029
- // src/constants.ts
1030
- var WORKFLOW_ID_HEADER = "Upstash-Workflow-RunId";
1031
- var WORKFLOW_INIT_HEADER = "Upstash-Workflow-Init";
1032
- var WORKFLOW_URL_HEADER = "Upstash-Workflow-Url";
1033
- var WORKFLOW_FAILURE_HEADER = "Upstash-Workflow-Is-Failure";
1034
- var WORKFLOW_FEATURE_HEADER = "Upstash-Feature-Set";
1035
- var WORKFLOW_PROTOCOL_VERSION = "1";
1036
- var WORKFLOW_PROTOCOL_VERSION_HEADER = "Upstash-Workflow-Sdk-Version";
1037
- var DEFAULT_CONTENT_TYPE = "application/json";
1038
- var NO_CONCURRENCY = 1;
1039
- var DEFAULT_RETRIES = 3;
1040
-
1041
1046
  // src/types.ts
1042
1047
  var StepTypes = [
1043
1048
  "Initial",
@@ -1051,16 +1056,21 @@ var StepTypes = [
1051
1056
 
1052
1057
  // src/workflow-requests.ts
1053
1058
  var import_qstash3 = require("@upstash/qstash");
1054
- var triggerFirstInvocation = async (workflowContext, retries, useJSONContent, debug) => {
1055
- const { headers } = getHeaders(
1056
- "true",
1057
- workflowContext.workflowRunId,
1058
- workflowContext.url,
1059
- workflowContext.headers,
1060
- void 0,
1061
- workflowContext.failureUrl,
1062
- retries
1063
- );
1059
+ var triggerFirstInvocation = async ({
1060
+ workflowContext,
1061
+ useJSONContent,
1062
+ telemetry,
1063
+ debug
1064
+ }) => {
1065
+ const { headers } = getHeaders({
1066
+ initHeaderValue: "true",
1067
+ workflowRunId: workflowContext.workflowRunId,
1068
+ workflowUrl: workflowContext.url,
1069
+ userHeaders: workflowContext.headers,
1070
+ failureUrl: workflowContext.failureUrl,
1071
+ retries: workflowContext.retries,
1072
+ telemetry
1073
+ });
1064
1074
  if (useJSONContent) {
1065
1075
  headers["content-type"] = "application/json";
1066
1076
  }
@@ -1166,7 +1176,16 @@ var recreateUserHeaders = (headers) => {
1166
1176
  }
1167
1177
  return filteredHeaders;
1168
1178
  };
1169
- var handleThirdPartyCallResult = async (request, requestPayload, client, workflowUrl, failureUrl, retries, debug) => {
1179
+ var handleThirdPartyCallResult = async ({
1180
+ request,
1181
+ requestPayload,
1182
+ client,
1183
+ workflowUrl,
1184
+ failureUrl,
1185
+ retries,
1186
+ telemetry,
1187
+ debug
1188
+ }) => {
1170
1189
  try {
1171
1190
  if (request.headers.get("Upstash-Workflow-Callback")) {
1172
1191
  let callbackPayload;
@@ -1225,15 +1244,15 @@ ${atob(callbackMessage.body ?? "")}`
1225
1244
  );
1226
1245
  }
1227
1246
  const userHeaders = recreateUserHeaders(request.headers);
1228
- const { headers: requestHeaders } = getHeaders(
1229
- "false",
1247
+ const { headers: requestHeaders } = getHeaders({
1248
+ initHeaderValue: "false",
1230
1249
  workflowRunId,
1231
1250
  workflowUrl,
1232
1251
  userHeaders,
1233
- void 0,
1234
1252
  failureUrl,
1235
- retries
1236
- );
1253
+ retries,
1254
+ telemetry
1255
+ });
1237
1256
  const callResponse = {
1238
1257
  status: callbackMessage.status,
1239
1258
  body: atob(callbackMessage.body ?? ""),
@@ -1271,12 +1290,31 @@ ${atob(callbackMessage.body ?? "")}`
1271
1290
  );
1272
1291
  }
1273
1292
  };
1274
- var getHeaders = (initHeaderValue, workflowRunId, workflowUrl, userHeaders, step, failureUrl, retries, callRetries, callTimeout) => {
1293
+ var getTelemetryHeaders = (telemetry) => {
1294
+ return {
1295
+ [TELEMETRY_HEADER_SDK]: telemetry.sdk,
1296
+ [TELEMETRY_HEADER_FRAMEWORK]: telemetry.framework,
1297
+ [TELEMETRY_HEADER_RUNTIME]: telemetry.runtime ?? "unknown"
1298
+ };
1299
+ };
1300
+ var getHeaders = ({
1301
+ initHeaderValue,
1302
+ workflowRunId,
1303
+ workflowUrl,
1304
+ userHeaders,
1305
+ failureUrl,
1306
+ retries,
1307
+ step,
1308
+ callRetries,
1309
+ callTimeout,
1310
+ telemetry
1311
+ }) => {
1275
1312
  const baseHeaders = {
1276
1313
  [WORKFLOW_INIT_HEADER]: initHeaderValue,
1277
1314
  [WORKFLOW_ID_HEADER]: workflowRunId,
1278
1315
  [WORKFLOW_URL_HEADER]: workflowUrl,
1279
- [WORKFLOW_FEATURE_HEADER]: "LazyFetch,InitialBody"
1316
+ [WORKFLOW_FEATURE_HEADER]: "LazyFetch,InitialBody",
1317
+ ...telemetry ? getTelemetryHeaders(telemetry) : {}
1280
1318
  };
1281
1319
  if (!step?.callUrl) {
1282
1320
  baseHeaders[`Upstash-Forward-${WORKFLOW_PROTOCOL_VERSION_HEADER}`] = WORKFLOW_PROTOCOL_VERSION;
@@ -1350,6 +1388,13 @@ var getHeaders = (initHeaderValue, workflowRunId, workflowUrl, userHeaders, step
1350
1388
  ...Object.fromEntries(
1351
1389
  Object.entries(baseHeaders).map(([header, value]) => [header, [value]])
1352
1390
  ),
1391
+ // to include telemetry headers:
1392
+ ...telemetry ? Object.fromEntries(
1393
+ Object.entries(getTelemetryHeaders(telemetry)).map(([header, value]) => [
1394
+ header,
1395
+ [value]
1396
+ ])
1397
+ ) : {},
1353
1398
  // note: using WORKFLOW_ID_HEADER doesn't work, because Runid -> RunId:
1354
1399
  "Upstash-Workflow-Runid": [workflowRunId],
1355
1400
  [WORKFLOW_INIT_HEADER]: ["false"],
@@ -1388,6 +1433,7 @@ If you want to disable QStash Verification, you should clear env variables QSTAS
1388
1433
  };
1389
1434
 
1390
1435
  // src/context/auto-executor.ts
1436
+ var import_qstash4 = require("@upstash/qstash");
1391
1437
  var AutoExecutor = class _AutoExecutor {
1392
1438
  context;
1393
1439
  promises = /* @__PURE__ */ new WeakMap();
@@ -1396,13 +1442,15 @@ var AutoExecutor = class _AutoExecutor {
1396
1442
  nonPlanStepCount;
1397
1443
  steps;
1398
1444
  indexInCurrentList = 0;
1445
+ telemetry;
1399
1446
  stepCount = 0;
1400
1447
  planStepCount = 0;
1401
1448
  executingStep = false;
1402
- constructor(context, steps, debug) {
1449
+ constructor(context, steps, telemetry, debug) {
1403
1450
  this.context = context;
1404
- this.debug = debug;
1405
1451
  this.steps = steps;
1452
+ this.telemetry = telemetry;
1453
+ this.debug = debug;
1406
1454
  this.nonPlanStepCount = this.steps.filter((step) => !step.targetStep).length;
1407
1455
  }
1408
1456
  /**
@@ -1545,7 +1593,7 @@ var AutoExecutor = class _AutoExecutor {
1545
1593
  );
1546
1594
  await this.submitStepsToQStash([resultStep], [parallelStep]);
1547
1595
  } catch (error) {
1548
- if (error instanceof WorkflowAbort) {
1596
+ if (error instanceof WorkflowAbort || error instanceof import_qstash4.QstashError && error.status === 400) {
1549
1597
  throw error;
1550
1598
  }
1551
1599
  throw new WorkflowError(
@@ -1616,15 +1664,16 @@ var AutoExecutor = class _AutoExecutor {
1616
1664
  });
1617
1665
  if (steps[0].waitEventId && steps.length === 1) {
1618
1666
  const waitStep = steps[0];
1619
- const { headers, timeoutHeaders } = getHeaders(
1620
- "false",
1621
- this.context.workflowRunId,
1622
- this.context.url,
1623
- this.context.headers,
1624
- waitStep,
1625
- this.context.failureUrl,
1626
- this.context.retries
1627
- );
1667
+ const { headers, timeoutHeaders } = getHeaders({
1668
+ initHeaderValue: "false",
1669
+ workflowRunId: this.context.workflowRunId,
1670
+ workflowUrl: this.context.url,
1671
+ userHeaders: this.context.headers,
1672
+ step: waitStep,
1673
+ failureUrl: this.context.failureUrl,
1674
+ retries: this.context.retries,
1675
+ telemetry: this.telemetry
1676
+ });
1628
1677
  const waitBody = {
1629
1678
  url: this.context.url,
1630
1679
  timeout: waitStep.timeout,
@@ -1651,17 +1700,18 @@ var AutoExecutor = class _AutoExecutor {
1651
1700
  const result = await this.context.qstashClient.batchJSON(
1652
1701
  steps.map((singleStep, index) => {
1653
1702
  const lazyStep = lazySteps[index];
1654
- const { headers } = getHeaders(
1655
- "false",
1656
- this.context.workflowRunId,
1657
- this.context.url,
1658
- this.context.headers,
1659
- singleStep,
1660
- this.context.failureUrl,
1661
- this.context.retries,
1662
- lazyStep instanceof LazyCallStep ? lazyStep.retries : void 0,
1663
- lazyStep instanceof LazyCallStep ? lazyStep.timeout : void 0
1664
- );
1703
+ const { headers } = getHeaders({
1704
+ initHeaderValue: "false",
1705
+ workflowRunId: this.context.workflowRunId,
1706
+ workflowUrl: this.context.url,
1707
+ userHeaders: this.context.headers,
1708
+ step: singleStep,
1709
+ failureUrl: this.context.failureUrl,
1710
+ retries: this.context.retries,
1711
+ callRetries: lazyStep instanceof LazyCallStep ? lazyStep.retries : void 0,
1712
+ callTimeout: lazyStep instanceof LazyCallStep ? lazyStep.timeout : void 0,
1713
+ telemetry: this.telemetry
1714
+ });
1665
1715
  const willWait = singleStep.concurrent === NO_CONCURRENCY || singleStep.stepId === 0;
1666
1716
  singleStep.out = JSON.stringify(singleStep.out);
1667
1717
  return singleStep.callUrl ? (
@@ -1773,6 +1823,127 @@ var sortSteps = (steps) => {
1773
1823
  return [...steps].sort((step, stepOther) => getStepId(step) - getStepId(stepOther));
1774
1824
  };
1775
1825
 
1826
+ // src/context/api/anthropic.ts
1827
+ var import_qstash5 = require("@upstash/qstash");
1828
+
1829
+ // src/context/provider.ts
1830
+ var getProviderInfo = (api) => {
1831
+ if (!api.provider) {
1832
+ throw new WorkflowError("A Provider must be provided.");
1833
+ }
1834
+ if (api.provider.owner === "upstash") {
1835
+ throw new WorkflowError("Upstash provider isn't supported.");
1836
+ }
1837
+ const { name, provider, ...parameters } = api;
1838
+ if (!provider.baseUrl) throw new TypeError("baseUrl cannot be empty or undefined!");
1839
+ if (!provider.token) throw new TypeError("token cannot be empty or undefined!");
1840
+ if (provider.apiKind !== name) {
1841
+ throw new TypeError(`Unexpected api name. Expected '${provider.apiKind}', received ${name}`);
1842
+ }
1843
+ const providerInfo = {
1844
+ url: provider.getUrl(),
1845
+ baseUrl: provider.baseUrl,
1846
+ route: provider.getRoute(),
1847
+ appendHeaders: provider.getHeaders(parameters),
1848
+ owner: provider.owner,
1849
+ method: provider.method
1850
+ };
1851
+ return provider.onFinish(providerInfo, parameters);
1852
+ };
1853
+
1854
+ // src/context/api/base.ts
1855
+ var BaseWorkflowApi = class {
1856
+ context;
1857
+ constructor({ context }) {
1858
+ this.context = context;
1859
+ }
1860
+ /**
1861
+ * context.call which uses a QStash API
1862
+ *
1863
+ * @param stepName
1864
+ * @param settings
1865
+ * @returns
1866
+ */
1867
+ async callApi(stepName, settings) {
1868
+ const { url, appendHeaders, method } = getProviderInfo(settings.api);
1869
+ const { method: userMethod, body, headers = {}, retries = 0, timeout } = settings;
1870
+ return await this.context.call(stepName, {
1871
+ url,
1872
+ method: userMethod ?? method,
1873
+ body,
1874
+ headers: {
1875
+ ...appendHeaders,
1876
+ ...headers
1877
+ },
1878
+ retries,
1879
+ timeout
1880
+ });
1881
+ }
1882
+ };
1883
+
1884
+ // src/context/api/anthropic.ts
1885
+ var AnthropicAPI = class extends BaseWorkflowApi {
1886
+ async call(stepName, settings) {
1887
+ const { token, operation, ...parameters } = settings;
1888
+ return await this.callApi(stepName, {
1889
+ api: {
1890
+ name: "llm",
1891
+ provider: (0, import_qstash5.anthropic)({ token })
1892
+ },
1893
+ ...parameters
1894
+ });
1895
+ }
1896
+ };
1897
+
1898
+ // src/context/api/openai.ts
1899
+ var import_qstash6 = require("@upstash/qstash");
1900
+ var OpenAIAPI = class extends BaseWorkflowApi {
1901
+ async call(stepName, settings) {
1902
+ const { token, organization, operation, ...parameters } = settings;
1903
+ return await this.callApi(stepName, {
1904
+ api: {
1905
+ name: "llm",
1906
+ provider: (0, import_qstash6.openai)({ token, organization })
1907
+ },
1908
+ ...parameters
1909
+ });
1910
+ }
1911
+ };
1912
+
1913
+ // src/context/api/resend.ts
1914
+ var import_qstash7 = require("@upstash/qstash");
1915
+ var ResendAPI = class extends BaseWorkflowApi {
1916
+ async call(stepName, settings) {
1917
+ const { token, batch = false, ...parameters } = settings;
1918
+ return await this.callApi(stepName, {
1919
+ api: {
1920
+ name: "email",
1921
+ provider: (0, import_qstash7.resend)({ token, batch })
1922
+ },
1923
+ ...parameters
1924
+ });
1925
+ }
1926
+ };
1927
+
1928
+ // src/context/api/index.ts
1929
+ var WorkflowApi = class extends BaseWorkflowApi {
1930
+ get openai() {
1931
+ return new OpenAIAPI({
1932
+ context: this.context
1933
+ });
1934
+ }
1935
+ get resend() {
1936
+ return new ResendAPI({
1937
+ context: this.context
1938
+ });
1939
+ }
1940
+ get anthropic() {
1941
+ return new AnthropicAPI({
1942
+ context: this.context
1943
+ });
1944
+ }
1945
+ };
1946
+
1776
1947
  // src/context/context.ts
1777
1948
  var WorkflowContext = class {
1778
1949
  executor;
@@ -1905,7 +2076,8 @@ var WorkflowContext = class {
1905
2076
  debug,
1906
2077
  initialPayload,
1907
2078
  env,
1908
- retries
2079
+ retries,
2080
+ telemetry
1909
2081
  }) {
1910
2082
  this.qstashClient = qstashClient;
1911
2083
  this.workflowRunId = workflowRunId;
@@ -1916,7 +2088,7 @@ var WorkflowContext = class {
1916
2088
  this.requestPayload = initialPayload;
1917
2089
  this.env = env ?? {};
1918
2090
  this.retries = retries ?? DEFAULT_RETRIES;
1919
- this.executor = new AutoExecutor(this, this.steps, debug);
2091
+ this.executor = new AutoExecutor(this, this.steps, telemetry, debug);
1920
2092
  }
1921
2093
  /**
1922
2094
  * Executes a workflow step
@@ -2152,6 +2324,11 @@ var WorkflowContext = class {
2152
2324
  async addStep(step) {
2153
2325
  return await this.executor.addStep(step);
2154
2326
  }
2327
+ get api() {
2328
+ return new WorkflowApi({
2329
+ context: this
2330
+ });
2331
+ }
2155
2332
  };
2156
2333
 
2157
2334
  // src/logger.ts
@@ -2229,7 +2406,7 @@ function decodeBase64(base64) {
2229
2406
  }
2230
2407
 
2231
2408
  // src/serve/authorization.ts
2232
- var import_qstash4 = require("@upstash/qstash");
2409
+ var import_qstash8 = require("@upstash/qstash");
2233
2410
  var DisabledWorkflowContext = class _DisabledWorkflowContext extends WorkflowContext {
2234
2411
  static disabledMessage = "disabled-qstash-worklfow-run";
2235
2412
  /**
@@ -2260,7 +2437,7 @@ var DisabledWorkflowContext = class _DisabledWorkflowContext extends WorkflowCon
2260
2437
  */
2261
2438
  static async tryAuthentication(routeFunction, context) {
2262
2439
  const disabledContext = new _DisabledWorkflowContext({
2263
- qstashClient: new import_qstash4.Client({
2440
+ qstashClient: new import_qstash8.Client({
2264
2441
  baseUrl: "disabled-client",
2265
2442
  token: "disabled-client"
2266
2443
  }),
@@ -2424,7 +2601,7 @@ var parseRequest = async (requestPayload, isFirstInvocation, workflowRunId, requ
2424
2601
  };
2425
2602
  }
2426
2603
  };
2427
- var handleFailure = async (request, requestPayload, qstashClient, initialPayloadParser, routeFunction, failureFunction, debug) => {
2604
+ var handleFailure = async (request, requestPayload, qstashClient, initialPayloadParser, routeFunction, failureFunction, env, retries, debug) => {
2428
2605
  if (request.headers.get(WORKFLOW_FAILURE_HEADER) !== "true") {
2429
2606
  return ok("not-failure-callback");
2430
2607
  }
@@ -2449,7 +2626,11 @@ var handleFailure = async (request, requestPayload, qstashClient, initialPayload
2449
2626
  steps: [],
2450
2627
  url,
2451
2628
  failureUrl: url,
2452
- debug
2629
+ debug,
2630
+ env,
2631
+ retries,
2632
+ telemetry: void 0
2633
+ // not going to make requests in authentication check
2453
2634
  });
2454
2635
  const authCheck = await DisabledWorkflowContext.tryAuthentication(
2455
2636
  routeFunction,
@@ -2474,15 +2655,15 @@ var handleFailure = async (request, requestPayload, qstashClient, initialPayload
2474
2655
  };
2475
2656
 
2476
2657
  // src/serve/options.ts
2477
- var import_qstash5 = require("@upstash/qstash");
2478
- var import_qstash6 = require("@upstash/qstash");
2658
+ var import_qstash9 = require("@upstash/qstash");
2659
+ var import_qstash10 = require("@upstash/qstash");
2479
2660
  var processOptions = (options) => {
2480
2661
  const environment = options?.env ?? (typeof process === "undefined" ? {} : process.env);
2481
2662
  const receiverEnvironmentVariablesSet = Boolean(
2482
2663
  environment.QSTASH_CURRENT_SIGNING_KEY && environment.QSTASH_NEXT_SIGNING_KEY
2483
2664
  );
2484
2665
  return {
2485
- qstashClient: new import_qstash6.Client({
2666
+ qstashClient: new import_qstash10.Client({
2486
2667
  baseUrl: environment.QSTASH_URL,
2487
2668
  token: environment.QSTASH_TOKEN
2488
2669
  }),
@@ -2516,7 +2697,7 @@ var processOptions = (options) => {
2516
2697
  throw error;
2517
2698
  }
2518
2699
  },
2519
- receiver: receiverEnvironmentVariablesSet ? new import_qstash5.Receiver({
2700
+ receiver: receiverEnvironmentVariablesSet ? new import_qstash9.Receiver({
2520
2701
  currentSigningKey: environment.QSTASH_CURRENT_SIGNING_KEY,
2521
2702
  nextSigningKey: environment.QSTASH_NEXT_SIGNING_KEY
2522
2703
  }) : void 0,
@@ -2524,6 +2705,7 @@ var processOptions = (options) => {
2524
2705
  env: environment,
2525
2706
  retries: DEFAULT_RETRIES,
2526
2707
  useJSONContent: false,
2708
+ disableTelemetry: false,
2527
2709
  ...options
2528
2710
  };
2529
2711
  };
@@ -2558,7 +2740,7 @@ var determineUrls = async (request, url, baseUrl, failureFunction, failureUrl, d
2558
2740
  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`;
2559
2741
 
2560
2742
  // src/serve/index.ts
2561
- var serveBase = (routeFunction, options) => {
2743
+ var serveBase = (routeFunction, telemetry, options) => {
2562
2744
  const {
2563
2745
  qstashClient,
2564
2746
  onStepFinish,
@@ -2571,8 +2753,10 @@ var serveBase = (routeFunction, options) => {
2571
2753
  baseUrl,
2572
2754
  env,
2573
2755
  retries,
2574
- useJSONContent
2756
+ useJSONContent,
2757
+ disableTelemetry
2575
2758
  } = processOptions(options);
2759
+ telemetry = disableTelemetry ? void 0 : telemetry;
2576
2760
  const debug = WorkflowLogger.getLogger(verbose);
2577
2761
  const handler = async (request) => {
2578
2762
  await debug?.log("INFO", "ENDPOINT_START");
@@ -2608,7 +2792,10 @@ var serveBase = (routeFunction, options) => {
2608
2792
  qstashClient,
2609
2793
  initialPayloadParser,
2610
2794
  routeFunction,
2611
- failureFunction
2795
+ failureFunction,
2796
+ env,
2797
+ retries,
2798
+ debug
2612
2799
  );
2613
2800
  if (failureCheck.isErr()) {
2614
2801
  throw failureCheck.error;
@@ -2626,7 +2813,8 @@ var serveBase = (routeFunction, options) => {
2626
2813
  failureUrl: workflowFailureUrl,
2627
2814
  debug,
2628
2815
  env,
2629
- retries
2816
+ retries,
2817
+ telemetry
2630
2818
  });
2631
2819
  const authCheck = await DisabledWorkflowContext.tryAuthentication(
2632
2820
  routeFunction,
@@ -2642,22 +2830,23 @@ var serveBase = (routeFunction, options) => {
2642
2830
  "auth-fail"
2643
2831
  );
2644
2832
  }
2645
- const callReturnCheck = await handleThirdPartyCallResult(
2833
+ const callReturnCheck = await handleThirdPartyCallResult({
2646
2834
  request,
2647
- rawInitialPayload,
2648
- qstashClient,
2835
+ requestPayload: rawInitialPayload,
2836
+ client: qstashClient,
2649
2837
  workflowUrl,
2650
- workflowFailureUrl,
2838
+ failureUrl: workflowFailureUrl,
2651
2839
  retries,
2840
+ telemetry,
2652
2841
  debug
2653
- );
2842
+ });
2654
2843
  if (callReturnCheck.isErr()) {
2655
2844
  await debug?.log("ERROR", "SUBMIT_THIRD_PARTY_RESULT", {
2656
2845
  error: callReturnCheck.error.message
2657
2846
  });
2658
2847
  throw callReturnCheck.error;
2659
2848
  } else if (callReturnCheck.value === "continue-workflow") {
2660
- const result = isFirstInvocation ? await triggerFirstInvocation(workflowContext, retries, useJSONContent, debug) : await triggerRouteFunction({
2849
+ const result = isFirstInvocation ? await triggerFirstInvocation({ workflowContext, useJSONContent, telemetry, debug }) : await triggerRouteFunction({
2661
2850
  onStep: async () => routeFunction(workflowContext),
2662
2851
  onCleanup: async () => {
2663
2852
  await triggerWorkflowDelete(workflowContext, debug);
@@ -2719,7 +2908,15 @@ var serve = (routeFunction, options) => {
2719
2908
  body: await readRawBody(event),
2720
2909
  method: "POST"
2721
2910
  });
2722
- const { handler: serveHandler } = serveBase(routeFunction, options);
2911
+ const { handler: serveHandler } = serveBase(
2912
+ routeFunction,
2913
+ {
2914
+ sdk: SDK_TELEMETRY,
2915
+ framework: "h3",
2916
+ runtime: process.versions.bun ? `bun@${process.versions.bun}/node@${process.version}` : `node@${process.version}`
2917
+ },
2918
+ options
2919
+ );
2723
2920
  return await serveHandler(request);
2724
2921
  });
2725
2922
  return { handler };
package/h3.mjs CHANGED
@@ -1,6 +1,7 @@
1
1
  import {
2
+ SDK_TELEMETRY,
2
3
  serveBase
3
- } from "./chunk-Z7WS5XIR.mjs";
4
+ } from "./chunk-ETDFMXER.mjs";
4
5
 
5
6
  // node_modules/defu/dist/defu.mjs
6
7
  function isPlainObject(value) {
@@ -341,7 +342,15 @@ var serve = (routeFunction, options) => {
341
342
  body: await readRawBody(event),
342
343
  method: "POST"
343
344
  });
344
- const { handler: serveHandler } = serveBase(routeFunction, options);
345
+ const { handler: serveHandler } = serveBase(
346
+ routeFunction,
347
+ {
348
+ sdk: SDK_TELEMETRY,
349
+ framework: "h3",
350
+ runtime: process.versions.bun ? `bun@${process.versions.bun}/node@${process.version}` : `node@${process.version}`
351
+ },
352
+ options
353
+ );
345
354
  return await serveHandler(request);
346
355
  });
347
356
  return { handler };
package/hono.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Context } from 'hono';
2
- import { R as RouteFunction, j as PublicServeOptions } from './types-APRap-aV.mjs';
2
+ import { R as RouteFunction, j as PublicServeOptions } from './types-Bt4-paRy.mjs';
3
3
  import { Variables } from 'hono/types';
4
4
  import '@upstash/qstash';
5
5
 
package/hono.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Context } from 'hono';
2
- import { R as RouteFunction, j as PublicServeOptions } from './types-APRap-aV.js';
2
+ import { R as RouteFunction, j as PublicServeOptions } from './types-Bt4-paRy.js';
3
3
  import { Variables } from 'hono/types';
4
4
  import '@upstash/qstash';
5
5