@trigger.dev/core 3.3.16 → 4.0.0-v4-beta.0

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.
Files changed (856) hide show
  1. package/dist/commonjs/debounce.d.ts +2 -0
  2. package/dist/commonjs/debounce.js +19 -0
  3. package/dist/commonjs/debounce.js.map +1 -0
  4. package/dist/commonjs/index.d.ts +2 -7
  5. package/dist/commonjs/index.js +2 -7
  6. package/dist/commonjs/index.js.map +1 -1
  7. package/dist/commonjs/retry.d.ts +0 -2
  8. package/dist/commonjs/retry.js +0 -24
  9. package/dist/commonjs/retry.js.map +1 -1
  10. package/dist/commonjs/schemas/index.d.ts +0 -16
  11. package/dist/commonjs/schemas/index.js +0 -16
  12. package/dist/commonjs/schemas/index.js.map +1 -1
  13. package/dist/commonjs/types.d.ts +0 -6
  14. package/dist/commonjs/utils.d.ts +1 -2
  15. package/dist/commonjs/utils.js +10 -27
  16. package/dist/commonjs/utils.js.map +1 -1
  17. package/dist/commonjs/v3/apiClient/core.d.ts +11 -3
  18. package/dist/commonjs/v3/apiClient/core.js +42 -2
  19. package/dist/commonjs/v3/apiClient/core.js.map +1 -1
  20. package/dist/commonjs/v3/apiClient/index.d.ts +193 -115
  21. package/dist/commonjs/v3/apiClient/index.js +153 -7
  22. package/dist/commonjs/v3/apiClient/index.js.map +1 -1
  23. package/dist/commonjs/v3/apiClient/runStream.d.ts +1 -1
  24. package/dist/commonjs/v3/apiClient/runStream.js +10 -3
  25. package/dist/commonjs/v3/apiClient/runStream.js.map +1 -1
  26. package/dist/commonjs/v3/apiClient/stream.d.ts +1 -3
  27. package/dist/commonjs/v3/apiClient/stream.js +53 -68
  28. package/dist/commonjs/v3/apiClient/stream.js.map +1 -1
  29. package/dist/commonjs/v3/apiClient/types.d.ts +9 -1
  30. package/dist/commonjs/v3/apps/exec.d.ts +30 -0
  31. package/dist/commonjs/v3/apps/exec.js +82 -0
  32. package/dist/commonjs/v3/apps/exec.js.map +1 -0
  33. package/dist/commonjs/v3/apps/http.d.ts +8 -6
  34. package/dist/commonjs/v3/apps/http.js +38 -2
  35. package/dist/commonjs/v3/apps/http.js.map +1 -1
  36. package/dist/commonjs/v3/apps/index.d.ts +1 -3
  37. package/dist/commonjs/v3/apps/index.js +1 -3
  38. package/dist/commonjs/v3/apps/index.js.map +1 -1
  39. package/dist/commonjs/v3/apps/provider.d.ts +1 -0
  40. package/dist/commonjs/v3/apps/provider.js +1 -0
  41. package/dist/commonjs/v3/apps/provider.js.map +1 -1
  42. package/dist/commonjs/v3/build/flags.d.ts +20 -0
  43. package/dist/commonjs/v3/build/flags.js +49 -0
  44. package/dist/commonjs/v3/build/flags.js.map +1 -0
  45. package/dist/commonjs/v3/build/flags.test.d.ts +1 -0
  46. package/dist/commonjs/v3/build/flags.test.js +50 -0
  47. package/dist/commonjs/v3/build/flags.test.js.map +1 -0
  48. package/dist/commonjs/v3/build/index.d.ts +1 -0
  49. package/dist/commonjs/v3/build/index.js +1 -0
  50. package/dist/commonjs/v3/build/index.js.map +1 -1
  51. package/dist/commonjs/v3/build/resolvedConfig.d.ts +3 -1
  52. package/dist/commonjs/v3/build/runtime.d.ts +2 -2
  53. package/dist/commonjs/v3/build/runtime.js +11 -4
  54. package/dist/commonjs/v3/build/runtime.js.map +1 -1
  55. package/dist/commonjs/v3/config.d.ts +19 -7
  56. package/dist/commonjs/v3/errors.d.ts +10 -0
  57. package/dist/commonjs/v3/errors.js +121 -2
  58. package/dist/commonjs/v3/errors.js.map +1 -1
  59. package/dist/commonjs/v3/idempotencyKeys.d.ts +1 -0
  60. package/dist/commonjs/v3/idempotencyKeys.js +19 -0
  61. package/dist/commonjs/v3/idempotencyKeys.js.map +1 -1
  62. package/dist/commonjs/v3/index.d.ts +10 -2
  63. package/dist/commonjs/v3/index.js +13 -2
  64. package/dist/commonjs/v3/index.js.map +1 -1
  65. package/dist/commonjs/v3/isomorphic/consts.d.ts +2 -0
  66. package/dist/commonjs/v3/isomorphic/consts.js +6 -0
  67. package/dist/commonjs/v3/isomorphic/consts.js.map +1 -0
  68. package/dist/commonjs/v3/{apps → isomorphic}/duration.d.ts +1 -0
  69. package/dist/commonjs/v3/{apps → isomorphic}/duration.js +19 -0
  70. package/dist/commonjs/v3/isomorphic/duration.js.map +1 -0
  71. package/dist/commonjs/v3/isomorphic/friendlyId.d.ts +36 -0
  72. package/dist/commonjs/v3/isomorphic/friendlyId.js +102 -0
  73. package/dist/commonjs/v3/isomorphic/friendlyId.js.map +1 -0
  74. package/dist/commonjs/v3/isomorphic/index.d.ts +5 -0
  75. package/dist/commonjs/v3/isomorphic/index.js +22 -0
  76. package/dist/commonjs/v3/isomorphic/index.js.map +1 -0
  77. package/dist/commonjs/v3/isomorphic/maxDuration.d.ts +2 -0
  78. package/dist/commonjs/v3/isomorphic/maxDuration.js +20 -0
  79. package/dist/commonjs/v3/isomorphic/maxDuration.js.map +1 -0
  80. package/dist/commonjs/v3/isomorphic/queueName.d.ts +1 -0
  81. package/dist/commonjs/v3/isomorphic/queueName.js +8 -0
  82. package/dist/commonjs/v3/isomorphic/queueName.js.map +1 -0
  83. package/dist/commonjs/v3/lifecycle-hooks-api.d.ts +4 -0
  84. package/dist/commonjs/v3/{task-catalog-api.js → lifecycle-hooks-api.js} +4 -4
  85. package/dist/commonjs/v3/lifecycle-hooks-api.js.map +1 -0
  86. package/dist/commonjs/v3/lifecycleHooks/index.d.ts +53 -0
  87. package/dist/commonjs/v3/lifecycleHooks/index.js +160 -0
  88. package/dist/commonjs/v3/lifecycleHooks/index.js.map +1 -0
  89. package/dist/commonjs/v3/lifecycleHooks/manager.d.ts +115 -0
  90. package/dist/commonjs/v3/lifecycleHooks/manager.js +401 -0
  91. package/dist/commonjs/v3/lifecycleHooks/manager.js.map +1 -0
  92. package/dist/commonjs/v3/lifecycleHooks/types.d.ts +179 -0
  93. package/dist/commonjs/v3/lifecycleHooks/types.js +3 -0
  94. package/dist/commonjs/v3/lifecycleHooks/types.js.map +1 -0
  95. package/dist/commonjs/v3/links.d.ts +3 -0
  96. package/dist/commonjs/v3/links.js +3 -0
  97. package/dist/commonjs/v3/links.js.map +1 -1
  98. package/dist/commonjs/v3/locals/index.d.ts +12 -0
  99. package/dist/commonjs/v3/locals/index.js +37 -0
  100. package/dist/commonjs/v3/locals/index.js.map +1 -0
  101. package/dist/commonjs/v3/locals/manager.d.ts +12 -0
  102. package/dist/commonjs/v3/locals/manager.js +35 -0
  103. package/dist/commonjs/v3/locals/manager.js.map +1 -0
  104. package/dist/commonjs/v3/locals/types.d.ts +14 -0
  105. package/dist/commonjs/v3/locals/types.js +3 -0
  106. package/dist/commonjs/v3/locals/types.js.map +1 -0
  107. package/dist/commonjs/v3/locals-api.d.ts +12 -0
  108. package/dist/commonjs/v3/locals-api.js +28 -0
  109. package/dist/commonjs/v3/locals-api.js.map +1 -0
  110. package/dist/commonjs/v3/logger/index.d.ts +3 -2
  111. package/dist/commonjs/v3/logger/index.js +5 -2
  112. package/dist/commonjs/v3/logger/index.js.map +1 -1
  113. package/dist/commonjs/v3/logger/taskLogger.d.ts +9 -2
  114. package/dist/commonjs/v3/logger/taskLogger.js +21 -1
  115. package/dist/commonjs/v3/logger/taskLogger.js.map +1 -1
  116. package/dist/commonjs/v3/machines/index.d.ts +27 -0
  117. package/dist/commonjs/v3/machines/index.js +51 -0
  118. package/dist/commonjs/v3/machines/index.js.map +1 -0
  119. package/dist/commonjs/v3/machines/max-old-space.test.d.ts +1 -0
  120. package/dist/commonjs/v3/machines/max-old-space.test.js +44 -0
  121. package/dist/commonjs/v3/machines/max-old-space.test.js.map +1 -0
  122. package/dist/commonjs/v3/otel/tracingSDK.js +1 -1
  123. package/dist/commonjs/v3/otel/tracingSDK.js.map +1 -1
  124. package/dist/commonjs/v3/otel/utils.d.ts +1 -0
  125. package/dist/commonjs/v3/otel/utils.js +6 -0
  126. package/dist/commonjs/v3/otel/utils.js.map +1 -1
  127. package/dist/{esm/v3/task-catalog → commonjs/v3/resource-catalog}/catalog.d.ts +7 -3
  128. package/dist/commonjs/v3/resource-catalog/catalog.js.map +1 -0
  129. package/dist/commonjs/v3/resource-catalog/index.d.ts +22 -0
  130. package/dist/commonjs/v3/resource-catalog/index.js +61 -0
  131. package/dist/commonjs/v3/resource-catalog/index.js.map +1 -0
  132. package/dist/commonjs/v3/resource-catalog/noopResourceCatalog.d.ts +17 -0
  133. package/dist/commonjs/v3/{task-catalog/noopTaskCatalog.js → resource-catalog/noopResourceCatalog.js} +17 -5
  134. package/dist/commonjs/v3/resource-catalog/noopResourceCatalog.js.map +1 -0
  135. package/dist/commonjs/v3/resource-catalog/standardResourceCatalog.d.ts +22 -0
  136. package/dist/commonjs/v3/resource-catalog/standardResourceCatalog.js +129 -0
  137. package/dist/commonjs/v3/resource-catalog/standardResourceCatalog.js.map +1 -0
  138. package/dist/commonjs/v3/resource-catalog-api.d.ts +3 -0
  139. package/dist/commonjs/v3/resource-catalog-api.js +9 -0
  140. package/dist/commonjs/v3/resource-catalog-api.js.map +1 -0
  141. package/dist/commonjs/v3/run-timeline-metrics-api.d.ts +2 -0
  142. package/dist/commonjs/v3/run-timeline-metrics-api.js +8 -0
  143. package/dist/commonjs/v3/run-timeline-metrics-api.js.map +1 -0
  144. package/dist/commonjs/v3/runEngineWorker/consts.d.ts +12 -0
  145. package/dist/commonjs/v3/runEngineWorker/consts.js +16 -0
  146. package/dist/commonjs/v3/runEngineWorker/consts.js.map +1 -0
  147. package/dist/commonjs/v3/runEngineWorker/index.d.ts +7 -0
  148. package/dist/commonjs/v3/runEngineWorker/index.js +24 -0
  149. package/dist/commonjs/v3/runEngineWorker/index.js.map +1 -0
  150. package/dist/commonjs/v3/runEngineWorker/supervisor/events.d.ts +49 -0
  151. package/dist/commonjs/v3/runEngineWorker/supervisor/events.js +3 -0
  152. package/dist/commonjs/v3/runEngineWorker/supervisor/events.js.map +1 -0
  153. package/dist/commonjs/v3/runEngineWorker/supervisor/http.d.ts +351 -0
  154. package/dist/commonjs/v3/runEngineWorker/supervisor/http.js +154 -0
  155. package/dist/commonjs/v3/runEngineWorker/supervisor/http.js.map +1 -0
  156. package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.d.ts +26 -0
  157. package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.js +92 -0
  158. package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.js.map +1 -0
  159. package/dist/commonjs/v3/runEngineWorker/supervisor/schemas.d.ts +3537 -0
  160. package/dist/commonjs/v3/runEngineWorker/supervisor/schemas.js +91 -0
  161. package/dist/commonjs/v3/runEngineWorker/supervisor/schemas.js.map +1 -0
  162. package/dist/commonjs/v3/runEngineWorker/supervisor/session.d.ts +32 -0
  163. package/dist/commonjs/v3/runEngineWorker/supervisor/session.js +174 -0
  164. package/dist/commonjs/v3/runEngineWorker/supervisor/session.js.map +1 -0
  165. package/dist/commonjs/v3/runEngineWorker/supervisor/types.d.ts +13 -0
  166. package/dist/commonjs/v3/runEngineWorker/supervisor/types.js +3 -0
  167. package/dist/commonjs/v3/runEngineWorker/supervisor/types.js.map +1 -0
  168. package/dist/commonjs/v3/runEngineWorker/supervisor/util.d.ts +3 -0
  169. package/dist/commonjs/v3/runEngineWorker/supervisor/util.js +39 -0
  170. package/dist/commonjs/v3/runEngineWorker/supervisor/util.js.map +1 -0
  171. package/dist/commonjs/v3/runEngineWorker/types.d.ts +52 -0
  172. package/dist/commonjs/v3/runEngineWorker/types.js +3 -0
  173. package/dist/commonjs/v3/runEngineWorker/types.js.map +1 -0
  174. package/dist/commonjs/v3/runEngineWorker/util.d.ts +4 -0
  175. package/dist/commonjs/v3/runEngineWorker/util.js +15 -0
  176. package/dist/commonjs/v3/runEngineWorker/util.js.map +1 -0
  177. package/dist/commonjs/v3/runEngineWorker/workload/http.d.ts +266 -0
  178. package/dist/commonjs/v3/runEngineWorker/workload/http.js +117 -0
  179. package/dist/commonjs/v3/runEngineWorker/workload/http.js.map +1 -0
  180. package/dist/commonjs/v3/runEngineWorker/workload/schemas.d.ts +2996 -0
  181. package/dist/commonjs/v3/runEngineWorker/workload/schemas.js +25 -0
  182. package/dist/commonjs/v3/runEngineWorker/workload/schemas.js.map +1 -0
  183. package/dist/commonjs/v3/runEngineWorker/workload/types.d.ts +7 -0
  184. package/dist/commonjs/v3/runEngineWorker/workload/types.js +3 -0
  185. package/dist/commonjs/v3/runEngineWorker/workload/types.js.map +1 -0
  186. package/dist/commonjs/v3/runEngineWorker/workload/util.d.ts +2 -0
  187. package/dist/commonjs/v3/runEngineWorker/workload/util.js +14 -0
  188. package/dist/commonjs/v3/runEngineWorker/workload/util.js.map +1 -0
  189. package/dist/commonjs/v3/runMetadata/index.d.ts +1 -1
  190. package/dist/commonjs/v3/runMetadata/manager.d.ts +1 -1
  191. package/dist/commonjs/v3/runMetadata/manager.js.map +1 -1
  192. package/dist/commonjs/v3/runMetadata/noopManager.d.ts +1 -1
  193. package/dist/commonjs/v3/runMetadata/types.d.ts +1 -1
  194. package/dist/commonjs/v3/runTimelineMetrics/index.d.ts +23 -0
  195. package/dist/commonjs/v3/runTimelineMetrics/index.js +160 -0
  196. package/dist/commonjs/v3/runTimelineMetrics/index.js.map +1 -0
  197. package/dist/commonjs/v3/runTimelineMetrics/runTimelineMetricsManager.d.ts +13 -0
  198. package/dist/commonjs/v3/runTimelineMetrics/runTimelineMetricsManager.js +55 -0
  199. package/dist/commonjs/v3/runTimelineMetrics/runTimelineMetricsManager.js.map +1 -0
  200. package/dist/commonjs/v3/runTimelineMetrics/types.d.ts +11 -0
  201. package/dist/commonjs/v3/runTimelineMetrics/types.js +3 -0
  202. package/dist/commonjs/v3/runTimelineMetrics/types.js.map +1 -0
  203. package/dist/commonjs/v3/runtime/index.d.ts +4 -4
  204. package/dist/commonjs/v3/runtime/index.js +5 -5
  205. package/dist/commonjs/v3/runtime/index.js.map +1 -1
  206. package/dist/commonjs/v3/runtime/managedRuntimeManager.d.ts +30 -0
  207. package/dist/commonjs/v3/runtime/managedRuntimeManager.js +185 -0
  208. package/dist/commonjs/v3/runtime/managedRuntimeManager.js.map +1 -0
  209. package/dist/commonjs/v3/runtime/manager.d.ts +6 -4
  210. package/dist/commonjs/v3/runtime/noopRuntimeManager.d.ts +6 -4
  211. package/dist/commonjs/v3/runtime/noopRuntimeManager.js +4 -5
  212. package/dist/commonjs/v3/runtime/noopRuntimeManager.js.map +1 -1
  213. package/dist/commonjs/v3/schemas/api.d.ts +1981 -584
  214. package/dist/commonjs/v3/schemas/api.js +258 -11
  215. package/dist/commonjs/v3/schemas/api.js.map +1 -1
  216. package/dist/commonjs/v3/schemas/build.d.ts +464 -356
  217. package/dist/commonjs/v3/schemas/build.js +5 -2
  218. package/dist/commonjs/v3/schemas/build.js.map +1 -1
  219. package/dist/commonjs/v3/schemas/checkpoints.d.ts +419 -0
  220. package/dist/commonjs/v3/schemas/checkpoints.js +26 -0
  221. package/dist/commonjs/v3/schemas/checkpoints.js.map +1 -0
  222. package/dist/commonjs/v3/schemas/common.d.ts +302 -189
  223. package/dist/commonjs/v3/schemas/common.js +51 -9
  224. package/dist/commonjs/v3/schemas/common.js.map +1 -1
  225. package/dist/commonjs/v3/schemas/fetch.d.ts +42 -42
  226. package/dist/commonjs/v3/schemas/index.d.ts +4 -0
  227. package/dist/commonjs/v3/schemas/index.js +4 -0
  228. package/dist/commonjs/v3/schemas/index.js.map +1 -1
  229. package/dist/commonjs/v3/schemas/messages.d.ts +6379 -3126
  230. package/dist/commonjs/v3/schemas/messages.js +49 -0
  231. package/dist/commonjs/v3/schemas/messages.js.map +1 -1
  232. package/dist/commonjs/v3/schemas/openTelemetry.d.ts +18 -18
  233. package/dist/commonjs/v3/schemas/queues.d.ts +97 -0
  234. package/dist/commonjs/v3/schemas/queues.js +70 -0
  235. package/dist/commonjs/v3/schemas/queues.js.map +1 -0
  236. package/dist/commonjs/v3/schemas/resources.d.ts +153 -114
  237. package/dist/commonjs/v3/schemas/resources.js +3 -2
  238. package/dist/commonjs/v3/schemas/resources.js.map +1 -1
  239. package/dist/commonjs/v3/schemas/runEngine.d.ts +1630 -0
  240. package/dist/commonjs/v3/schemas/runEngine.js +202 -0
  241. package/dist/commonjs/v3/schemas/runEngine.js.map +1 -0
  242. package/dist/commonjs/v3/schemas/schemas.d.ts +644 -389
  243. package/dist/commonjs/v3/schemas/schemas.js +39 -5
  244. package/dist/commonjs/v3/schemas/schemas.js.map +1 -1
  245. package/dist/commonjs/v3/schemas/style.d.ts +6 -4
  246. package/dist/commonjs/v3/schemas/style.js +4 -2
  247. package/dist/commonjs/v3/schemas/style.js.map +1 -1
  248. package/dist/commonjs/v3/schemas/warmStart.d.ts +12 -0
  249. package/dist/commonjs/v3/schemas/warmStart.js +9 -0
  250. package/dist/commonjs/v3/schemas/warmStart.js.map +1 -0
  251. package/dist/commonjs/v3/schemas/webhooks.d.ts +204 -204
  252. package/dist/commonjs/v3/schemas/webhooks.js +6 -7
  253. package/dist/commonjs/v3/schemas/webhooks.js.map +1 -1
  254. package/dist/commonjs/v3/semanticInternalAttributes.d.ts +8 -0
  255. package/dist/commonjs/v3/semanticInternalAttributes.js +8 -0
  256. package/dist/commonjs/v3/semanticInternalAttributes.js.map +1 -1
  257. package/dist/commonjs/v3/serverOnly/checkpointClient.d.ts +23 -0
  258. package/dist/commonjs/v3/serverOnly/checkpointClient.js +80 -0
  259. package/dist/commonjs/v3/serverOnly/checkpointClient.js.map +1 -0
  260. package/dist/commonjs/v3/{apps/checkpoints.js → serverOnly/checkpointTest.js} +2 -2
  261. package/dist/commonjs/v3/serverOnly/checkpointTest.js.map +1 -0
  262. package/dist/commonjs/v3/serverOnly/httpServer.d.ts +49 -0
  263. package/dist/commonjs/v3/serverOnly/httpServer.js +244 -0
  264. package/dist/commonjs/v3/serverOnly/httpServer.js.map +1 -0
  265. package/dist/commonjs/v3/serverOnly/index.d.ts +6 -0
  266. package/dist/commonjs/v3/serverOnly/index.js +23 -0
  267. package/dist/commonjs/v3/serverOnly/index.js.map +1 -0
  268. package/dist/commonjs/v3/serverOnly/k8s.d.ts +1 -0
  269. package/dist/commonjs/v3/serverOnly/k8s.js +18 -0
  270. package/dist/commonjs/v3/serverOnly/k8s.js.map +1 -0
  271. package/dist/commonjs/v3/serverOnly/shutdownManager.d.ts +20 -0
  272. package/dist/commonjs/v3/serverOnly/shutdownManager.js +92 -0
  273. package/dist/commonjs/v3/serverOnly/shutdownManager.js.map +1 -0
  274. package/dist/commonjs/v3/serverOnly/shutdownManager.test.d.ts +1 -0
  275. package/dist/commonjs/v3/serverOnly/shutdownManager.test.js +139 -0
  276. package/dist/commonjs/v3/serverOnly/shutdownManager.test.js.map +1 -0
  277. package/dist/commonjs/v3/serverOnly/singleton.d.ts +1 -0
  278. package/dist/commonjs/v3/serverOnly/singleton.js +10 -0
  279. package/dist/commonjs/v3/serverOnly/singleton.js.map +1 -0
  280. package/dist/commonjs/v3/streams/asyncIterableStream.d.ts +4 -0
  281. package/dist/commonjs/v3/streams/asyncIterableStream.js +77 -0
  282. package/dist/commonjs/v3/streams/asyncIterableStream.js.map +1 -0
  283. package/dist/commonjs/v3/taskContext/index.d.ts +1 -0
  284. package/dist/commonjs/v3/taskContext/index.js +5 -1
  285. package/dist/commonjs/v3/taskContext/index.js.map +1 -1
  286. package/dist/commonjs/v3/taskContext/otelProcessors.d.ts +3 -1
  287. package/dist/commonjs/v3/taskContext/otelProcessors.js +34 -1
  288. package/dist/commonjs/v3/taskContext/otelProcessors.js.map +1 -1
  289. package/dist/commonjs/v3/taskContext/types.d.ts +1 -0
  290. package/dist/commonjs/v3/tracer.d.ts +10 -2
  291. package/dist/commonjs/v3/tracer.js +34 -20
  292. package/dist/commonjs/v3/tracer.js.map +1 -1
  293. package/dist/commonjs/v3/tryCatch.d.ts +5 -0
  294. package/dist/commonjs/v3/tryCatch.js +14 -0
  295. package/dist/commonjs/v3/tryCatch.js.map +1 -0
  296. package/dist/commonjs/v3/types/index.d.ts +1 -0
  297. package/dist/commonjs/v3/types/index.js +1 -0
  298. package/dist/commonjs/v3/types/index.js.map +1 -1
  299. package/dist/commonjs/v3/types/queues.d.ts +43 -0
  300. package/dist/commonjs/v3/types/queues.js +3 -0
  301. package/dist/commonjs/v3/types/queues.js.map +1 -0
  302. package/dist/commonjs/v3/types/schemas.d.ts +3 -0
  303. package/dist/commonjs/v3/types/schemas.js +16 -0
  304. package/dist/commonjs/v3/types/schemas.js.map +1 -1
  305. package/dist/commonjs/v3/types/tasks.d.ts +92 -34
  306. package/dist/commonjs/v3/types/tasks.js.map +1 -1
  307. package/dist/commonjs/v3/utils/durations.d.ts +1 -0
  308. package/dist/commonjs/v3/utils/durations.js +1 -1
  309. package/dist/commonjs/v3/utils/durations.js.map +1 -1
  310. package/dist/commonjs/v3/utils/flattenAttributes.js.map +1 -1
  311. package/dist/commonjs/v3/utils/globals.d.ts +8 -2
  312. package/dist/commonjs/v3/utils/globals.js.map +1 -1
  313. package/dist/commonjs/v3/utils/heartbeat.d.ts +21 -0
  314. package/dist/commonjs/v3/utils/heartbeat.js +79 -0
  315. package/dist/commonjs/v3/utils/heartbeat.js.map +1 -0
  316. package/dist/commonjs/v3/utils/imageRef.d.ts +8 -0
  317. package/dist/commonjs/v3/utils/imageRef.js +55 -0
  318. package/dist/commonjs/v3/utils/imageRef.js.map +1 -0
  319. package/dist/commonjs/v3/workers/index.d.ts +9 -2
  320. package/dist/commonjs/v3/workers/index.js +17 -3
  321. package/dist/commonjs/v3/workers/index.js.map +1 -1
  322. package/dist/commonjs/v3/workers/populateEnv.d.ts +23 -0
  323. package/dist/commonjs/v3/workers/populateEnv.js +33 -0
  324. package/dist/commonjs/v3/workers/populateEnv.js.map +1 -0
  325. package/dist/commonjs/v3/workers/taskExecutor.d.ts +10 -9
  326. package/dist/commonjs/v3/workers/taskExecutor.js +654 -243
  327. package/dist/commonjs/v3/workers/taskExecutor.js.map +1 -1
  328. package/dist/commonjs/v3/workers/warmStartClient.d.ts +27 -0
  329. package/dist/commonjs/v3/workers/warmStartClient.js +112 -0
  330. package/dist/commonjs/v3/workers/warmStartClient.js.map +1 -0
  331. package/dist/commonjs/v3/zodSocket.d.ts +2 -2
  332. package/dist/commonjs/v3/zodSocket.js +3 -2
  333. package/dist/commonjs/v3/zodSocket.js.map +1 -1
  334. package/dist/commonjs/version.js +1 -1
  335. package/dist/esm/debounce.d.ts +2 -0
  336. package/dist/esm/debounce.js +16 -0
  337. package/dist/esm/debounce.js.map +1 -0
  338. package/dist/esm/index.d.ts +2 -7
  339. package/dist/esm/index.js +2 -7
  340. package/dist/esm/index.js.map +1 -1
  341. package/dist/esm/retry.d.ts +0 -2
  342. package/dist/esm/retry.js +0 -23
  343. package/dist/esm/retry.js.map +1 -1
  344. package/dist/esm/schemas/index.d.ts +0 -16
  345. package/dist/esm/schemas/index.js +0 -16
  346. package/dist/esm/schemas/index.js.map +1 -1
  347. package/dist/esm/types.d.ts +0 -6
  348. package/dist/esm/utils.d.ts +1 -2
  349. package/dist/esm/utils.js +9 -26
  350. package/dist/esm/utils.js.map +1 -1
  351. package/dist/esm/v3/apiClient/core.d.ts +11 -3
  352. package/dist/esm/v3/apiClient/core.js +41 -2
  353. package/dist/esm/v3/apiClient/core.js.map +1 -1
  354. package/dist/esm/v3/apiClient/index.d.ts +193 -115
  355. package/dist/esm/v3/apiClient/index.js +154 -8
  356. package/dist/esm/v3/apiClient/index.js.map +1 -1
  357. package/dist/esm/v3/apiClient/runStream.d.ts +1 -1
  358. package/dist/esm/v3/apiClient/runStream.js +9 -2
  359. package/dist/esm/v3/apiClient/runStream.js.map +1 -1
  360. package/dist/esm/v3/apiClient/stream.d.ts +1 -3
  361. package/dist/esm/v3/apiClient/stream.js +52 -65
  362. package/dist/esm/v3/apiClient/stream.js.map +1 -1
  363. package/dist/esm/v3/apiClient/types.d.ts +9 -1
  364. package/dist/esm/v3/apps/exec.d.ts +30 -0
  365. package/dist/esm/v3/apps/exec.js +77 -0
  366. package/dist/esm/v3/apps/exec.js.map +1 -0
  367. package/dist/esm/v3/apps/http.d.ts +8 -6
  368. package/dist/esm/v3/apps/http.js +37 -2
  369. package/dist/esm/v3/apps/http.js.map +1 -1
  370. package/dist/esm/v3/apps/index.d.ts +1 -3
  371. package/dist/esm/v3/apps/index.js +1 -3
  372. package/dist/esm/v3/apps/index.js.map +1 -1
  373. package/dist/esm/v3/apps/provider.d.ts +1 -0
  374. package/dist/esm/v3/apps/provider.js +1 -0
  375. package/dist/esm/v3/apps/provider.js.map +1 -1
  376. package/dist/esm/v3/build/flags.d.ts +20 -0
  377. package/dist/esm/v3/build/flags.js +46 -0
  378. package/dist/esm/v3/build/flags.js.map +1 -0
  379. package/dist/esm/v3/build/flags.test.d.ts +1 -0
  380. package/dist/esm/v3/build/flags.test.js +48 -0
  381. package/dist/esm/v3/build/flags.test.js.map +1 -0
  382. package/dist/esm/v3/build/index.d.ts +1 -0
  383. package/dist/esm/v3/build/index.js +1 -0
  384. package/dist/esm/v3/build/index.js.map +1 -1
  385. package/dist/esm/v3/build/resolvedConfig.d.ts +3 -1
  386. package/dist/esm/v3/build/runtime.d.ts +2 -2
  387. package/dist/esm/v3/build/runtime.js +11 -4
  388. package/dist/esm/v3/build/runtime.js.map +1 -1
  389. package/dist/esm/v3/config.d.ts +19 -7
  390. package/dist/esm/v3/errors.d.ts +10 -0
  391. package/dist/esm/v3/errors.js +115 -1
  392. package/dist/esm/v3/errors.js.map +1 -1
  393. package/dist/esm/v3/idempotencyKeys.d.ts +1 -0
  394. package/dist/esm/v3/idempotencyKeys.js +18 -0
  395. package/dist/esm/v3/idempotencyKeys.js.map +1 -1
  396. package/dist/esm/v3/index.d.ts +10 -2
  397. package/dist/esm/v3/index.js +10 -2
  398. package/dist/esm/v3/index.js.map +1 -1
  399. package/dist/esm/v3/isomorphic/consts.d.ts +2 -0
  400. package/dist/esm/v3/isomorphic/consts.js +3 -0
  401. package/dist/esm/v3/isomorphic/consts.js.map +1 -0
  402. package/dist/esm/v3/{apps → isomorphic}/duration.d.ts +1 -0
  403. package/dist/esm/v3/{apps → isomorphic}/duration.js +18 -0
  404. package/dist/esm/v3/isomorphic/duration.js.map +1 -0
  405. package/dist/esm/v3/isomorphic/friendlyId.d.ts +36 -0
  406. package/dist/esm/v3/isomorphic/friendlyId.js +90 -0
  407. package/dist/esm/v3/isomorphic/friendlyId.js.map +1 -0
  408. package/dist/esm/v3/isomorphic/index.d.ts +5 -0
  409. package/dist/esm/v3/isomorphic/index.js +6 -0
  410. package/dist/esm/v3/isomorphic/index.js.map +1 -0
  411. package/dist/esm/v3/isomorphic/maxDuration.d.ts +2 -0
  412. package/dist/esm/v3/isomorphic/maxDuration.js +16 -0
  413. package/dist/esm/v3/isomorphic/maxDuration.js.map +1 -0
  414. package/dist/esm/v3/isomorphic/queueName.d.ts +1 -0
  415. package/dist/esm/v3/isomorphic/queueName.js +5 -0
  416. package/dist/esm/v3/isomorphic/queueName.js.map +1 -0
  417. package/dist/esm/v3/lifecycle-hooks-api.d.ts +4 -0
  418. package/dist/esm/v3/lifecycle-hooks-api.js +6 -0
  419. package/dist/esm/v3/lifecycle-hooks-api.js.map +1 -0
  420. package/dist/esm/v3/lifecycleHooks/index.d.ts +53 -0
  421. package/dist/esm/v3/lifecycleHooks/index.js +156 -0
  422. package/dist/esm/v3/lifecycleHooks/index.js.map +1 -0
  423. package/dist/esm/v3/lifecycleHooks/manager.d.ts +115 -0
  424. package/dist/esm/v3/lifecycleHooks/manager.js +396 -0
  425. package/dist/esm/v3/lifecycleHooks/manager.js.map +1 -0
  426. package/dist/esm/v3/lifecycleHooks/types.d.ts +179 -0
  427. package/dist/esm/v3/lifecycleHooks/types.js +2 -0
  428. package/dist/esm/v3/lifecycleHooks/types.js.map +1 -0
  429. package/dist/esm/v3/links.d.ts +3 -0
  430. package/dist/esm/v3/links.js +3 -0
  431. package/dist/esm/v3/links.js.map +1 -1
  432. package/dist/esm/v3/locals/index.d.ts +12 -0
  433. package/dist/esm/v3/locals/index.js +33 -0
  434. package/dist/esm/v3/locals/index.js.map +1 -0
  435. package/dist/esm/v3/locals/manager.d.ts +12 -0
  436. package/dist/esm/v3/locals/manager.js +30 -0
  437. package/dist/esm/v3/locals/manager.js.map +1 -0
  438. package/dist/esm/v3/locals/types.d.ts +14 -0
  439. package/dist/esm/v3/locals/types.js +2 -0
  440. package/dist/esm/v3/locals/types.js.map +1 -0
  441. package/dist/esm/v3/locals-api.d.ts +12 -0
  442. package/dist/esm/v3/locals-api.js +25 -0
  443. package/dist/esm/v3/locals-api.js.map +1 -0
  444. package/dist/esm/v3/logger/index.d.ts +3 -2
  445. package/dist/esm/v3/logger/index.js +5 -2
  446. package/dist/esm/v3/logger/index.js.map +1 -1
  447. package/dist/esm/v3/logger/taskLogger.d.ts +9 -2
  448. package/dist/esm/v3/logger/taskLogger.js +21 -1
  449. package/dist/esm/v3/logger/taskLogger.js.map +1 -1
  450. package/dist/esm/v3/machines/index.d.ts +27 -0
  451. package/dist/esm/v3/machines/index.js +46 -0
  452. package/dist/esm/v3/machines/index.js.map +1 -0
  453. package/dist/esm/v3/machines/max-old-space.test.d.ts +1 -0
  454. package/dist/esm/v3/machines/max-old-space.test.js +42 -0
  455. package/dist/esm/v3/machines/max-old-space.test.js.map +1 -0
  456. package/dist/esm/v3/otel/tracingSDK.js +1 -1
  457. package/dist/esm/v3/otel/tracingSDK.js.map +1 -1
  458. package/dist/esm/v3/otel/utils.d.ts +1 -0
  459. package/dist/esm/v3/otel/utils.js +6 -1
  460. package/dist/esm/v3/otel/utils.js.map +1 -1
  461. package/dist/{commonjs/v3/task-catalog → esm/v3/resource-catalog}/catalog.d.ts +7 -3
  462. package/dist/esm/v3/resource-catalog/catalog.js.map +1 -0
  463. package/dist/esm/v3/resource-catalog/index.d.ts +22 -0
  464. package/dist/esm/v3/resource-catalog/index.js +57 -0
  465. package/dist/esm/v3/resource-catalog/index.js.map +1 -0
  466. package/dist/esm/v3/resource-catalog/noopResourceCatalog.d.ts +17 -0
  467. package/dist/esm/v3/{task-catalog/noopTaskCatalog.js → resource-catalog/noopResourceCatalog.js} +15 -3
  468. package/dist/esm/v3/resource-catalog/noopResourceCatalog.js.map +1 -0
  469. package/dist/esm/v3/resource-catalog/standardResourceCatalog.d.ts +22 -0
  470. package/dist/esm/v3/resource-catalog/standardResourceCatalog.js +125 -0
  471. package/dist/esm/v3/resource-catalog/standardResourceCatalog.js.map +1 -0
  472. package/dist/esm/v3/resource-catalog-api.d.ts +3 -0
  473. package/dist/esm/v3/resource-catalog-api.js +6 -0
  474. package/dist/esm/v3/resource-catalog-api.js.map +1 -0
  475. package/dist/esm/v3/run-timeline-metrics-api.d.ts +2 -0
  476. package/dist/esm/v3/run-timeline-metrics-api.js +5 -0
  477. package/dist/esm/v3/run-timeline-metrics-api.js.map +1 -0
  478. package/dist/esm/v3/runEngineWorker/consts.d.ts +12 -0
  479. package/dist/esm/v3/runEngineWorker/consts.js +13 -0
  480. package/dist/esm/v3/runEngineWorker/consts.js.map +1 -0
  481. package/dist/esm/v3/runEngineWorker/index.d.ts +7 -0
  482. package/dist/esm/v3/runEngineWorker/index.js +8 -0
  483. package/dist/esm/v3/runEngineWorker/index.js.map +1 -0
  484. package/dist/esm/v3/runEngineWorker/supervisor/events.d.ts +49 -0
  485. package/dist/esm/v3/runEngineWorker/supervisor/events.js +2 -0
  486. package/dist/esm/v3/runEngineWorker/supervisor/events.js.map +1 -0
  487. package/dist/esm/v3/runEngineWorker/supervisor/http.d.ts +351 -0
  488. package/dist/esm/v3/runEngineWorker/supervisor/http.js +150 -0
  489. package/dist/esm/v3/runEngineWorker/supervisor/http.js.map +1 -0
  490. package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.d.ts +26 -0
  491. package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.js +88 -0
  492. package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.js.map +1 -0
  493. package/dist/esm/v3/runEngineWorker/supervisor/schemas.d.ts +3537 -0
  494. package/dist/esm/v3/runEngineWorker/supervisor/schemas.js +88 -0
  495. package/dist/esm/v3/runEngineWorker/supervisor/schemas.js.map +1 -0
  496. package/dist/esm/v3/runEngineWorker/supervisor/session.d.ts +32 -0
  497. package/dist/esm/v3/runEngineWorker/supervisor/session.js +167 -0
  498. package/dist/esm/v3/runEngineWorker/supervisor/session.js.map +1 -0
  499. package/dist/esm/v3/runEngineWorker/supervisor/types.d.ts +13 -0
  500. package/dist/esm/v3/runEngineWorker/supervisor/types.js +2 -0
  501. package/dist/esm/v3/runEngineWorker/supervisor/types.js.map +1 -0
  502. package/dist/esm/v3/runEngineWorker/supervisor/util.d.ts +3 -0
  503. package/dist/esm/v3/runEngineWorker/supervisor/util.js +35 -0
  504. package/dist/esm/v3/runEngineWorker/supervisor/util.js.map +1 -0
  505. package/dist/esm/v3/runEngineWorker/types.d.ts +52 -0
  506. package/dist/esm/v3/runEngineWorker/types.js +2 -0
  507. package/dist/esm/v3/runEngineWorker/types.js.map +1 -0
  508. package/dist/esm/v3/runEngineWorker/util.d.ts +4 -0
  509. package/dist/esm/v3/runEngineWorker/util.js +12 -0
  510. package/dist/esm/v3/runEngineWorker/util.js.map +1 -0
  511. package/dist/esm/v3/runEngineWorker/workload/http.d.ts +266 -0
  512. package/dist/esm/v3/runEngineWorker/workload/http.js +113 -0
  513. package/dist/esm/v3/runEngineWorker/workload/http.js.map +1 -0
  514. package/dist/esm/v3/runEngineWorker/workload/schemas.d.ts +2996 -0
  515. package/dist/esm/v3/runEngineWorker/workload/schemas.js +22 -0
  516. package/dist/esm/v3/runEngineWorker/workload/schemas.js.map +1 -0
  517. package/dist/esm/v3/runEngineWorker/workload/types.d.ts +7 -0
  518. package/dist/esm/v3/runEngineWorker/workload/types.js +2 -0
  519. package/dist/esm/v3/runEngineWorker/workload/types.js.map +1 -0
  520. package/dist/esm/v3/runEngineWorker/workload/util.d.ts +2 -0
  521. package/dist/esm/v3/runEngineWorker/workload/util.js +11 -0
  522. package/dist/esm/v3/runEngineWorker/workload/util.js.map +1 -0
  523. package/dist/esm/v3/runMetadata/index.d.ts +1 -1
  524. package/dist/esm/v3/runMetadata/manager.d.ts +1 -1
  525. package/dist/esm/v3/runMetadata/manager.js.map +1 -1
  526. package/dist/esm/v3/runMetadata/noopManager.d.ts +1 -1
  527. package/dist/esm/v3/runMetadata/types.d.ts +1 -1
  528. package/dist/esm/v3/runTimelineMetrics/index.d.ts +23 -0
  529. package/dist/esm/v3/runTimelineMetrics/index.js +156 -0
  530. package/dist/esm/v3/runTimelineMetrics/index.js.map +1 -0
  531. package/dist/esm/v3/runTimelineMetrics/runTimelineMetricsManager.d.ts +13 -0
  532. package/dist/esm/v3/runTimelineMetrics/runTimelineMetricsManager.js +50 -0
  533. package/dist/esm/v3/runTimelineMetrics/runTimelineMetricsManager.js.map +1 -0
  534. package/dist/esm/v3/runTimelineMetrics/types.d.ts +11 -0
  535. package/dist/esm/v3/runTimelineMetrics/types.js +2 -0
  536. package/dist/esm/v3/runTimelineMetrics/types.js.map +1 -0
  537. package/dist/esm/v3/runtime/index.d.ts +4 -4
  538. package/dist/esm/v3/runtime/index.js +5 -5
  539. package/dist/esm/v3/runtime/index.js.map +1 -1
  540. package/dist/esm/v3/runtime/managedRuntimeManager.d.ts +30 -0
  541. package/dist/esm/v3/runtime/managedRuntimeManager.js +181 -0
  542. package/dist/esm/v3/runtime/managedRuntimeManager.js.map +1 -0
  543. package/dist/esm/v3/runtime/manager.d.ts +6 -4
  544. package/dist/esm/v3/runtime/noopRuntimeManager.d.ts +6 -4
  545. package/dist/esm/v3/runtime/noopRuntimeManager.js +4 -5
  546. package/dist/esm/v3/runtime/noopRuntimeManager.js.map +1 -1
  547. package/dist/esm/v3/schemas/api.d.ts +1981 -584
  548. package/dist/esm/v3/schemas/api.js +255 -10
  549. package/dist/esm/v3/schemas/api.js.map +1 -1
  550. package/dist/esm/v3/schemas/build.d.ts +464 -356
  551. package/dist/esm/v3/schemas/build.js +6 -3
  552. package/dist/esm/v3/schemas/build.js.map +1 -1
  553. package/dist/esm/v3/schemas/checkpoints.d.ts +419 -0
  554. package/dist/esm/v3/schemas/checkpoints.js +20 -0
  555. package/dist/esm/v3/schemas/checkpoints.js.map +1 -0
  556. package/dist/esm/v3/schemas/common.d.ts +302 -189
  557. package/dist/esm/v3/schemas/common.js +50 -8
  558. package/dist/esm/v3/schemas/common.js.map +1 -1
  559. package/dist/esm/v3/schemas/fetch.d.ts +42 -42
  560. package/dist/esm/v3/schemas/index.d.ts +4 -0
  561. package/dist/esm/v3/schemas/index.js +4 -0
  562. package/dist/esm/v3/schemas/index.js.map +1 -1
  563. package/dist/esm/v3/schemas/messages.d.ts +6379 -3126
  564. package/dist/esm/v3/schemas/messages.js +50 -1
  565. package/dist/esm/v3/schemas/messages.js.map +1 -1
  566. package/dist/esm/v3/schemas/openTelemetry.d.ts +18 -18
  567. package/dist/esm/v3/schemas/queues.d.ts +97 -0
  568. package/dist/esm/v3/schemas/queues.js +67 -0
  569. package/dist/esm/v3/schemas/queues.js.map +1 -0
  570. package/dist/esm/v3/schemas/resources.d.ts +153 -114
  571. package/dist/esm/v3/schemas/resources.js +4 -3
  572. package/dist/esm/v3/schemas/resources.js.map +1 -1
  573. package/dist/esm/v3/schemas/runEngine.d.ts +1630 -0
  574. package/dist/esm/v3/schemas/runEngine.js +199 -0
  575. package/dist/esm/v3/schemas/runEngine.js.map +1 -0
  576. package/dist/esm/v3/schemas/schemas.d.ts +644 -389
  577. package/dist/esm/v3/schemas/schemas.js +38 -4
  578. package/dist/esm/v3/schemas/schemas.js.map +1 -1
  579. package/dist/esm/v3/schemas/style.d.ts +6 -4
  580. package/dist/esm/v3/schemas/style.js +3 -1
  581. package/dist/esm/v3/schemas/style.js.map +1 -1
  582. package/dist/esm/v3/schemas/warmStart.d.ts +12 -0
  583. package/dist/esm/v3/schemas/warmStart.js +6 -0
  584. package/dist/esm/v3/schemas/warmStart.js.map +1 -0
  585. package/dist/esm/v3/schemas/webhooks.d.ts +204 -204
  586. package/dist/esm/v3/schemas/webhooks.js +3 -4
  587. package/dist/esm/v3/schemas/webhooks.js.map +1 -1
  588. package/dist/esm/v3/semanticInternalAttributes.d.ts +8 -0
  589. package/dist/esm/v3/semanticInternalAttributes.js +8 -0
  590. package/dist/esm/v3/semanticInternalAttributes.js.map +1 -1
  591. package/dist/esm/v3/serverOnly/checkpointClient.d.ts +23 -0
  592. package/dist/esm/v3/serverOnly/checkpointClient.js +76 -0
  593. package/dist/esm/v3/serverOnly/checkpointClient.js.map +1 -0
  594. package/dist/esm/v3/{apps/checkpoints.js → serverOnly/checkpointTest.js} +2 -2
  595. package/dist/esm/v3/serverOnly/checkpointTest.js.map +1 -0
  596. package/dist/esm/v3/serverOnly/httpServer.d.ts +49 -0
  597. package/dist/esm/v3/serverOnly/httpServer.js +240 -0
  598. package/dist/esm/v3/serverOnly/httpServer.js.map +1 -0
  599. package/dist/esm/v3/serverOnly/index.d.ts +6 -0
  600. package/dist/esm/v3/serverOnly/index.js +7 -0
  601. package/dist/esm/v3/serverOnly/index.js.map +1 -0
  602. package/dist/esm/v3/serverOnly/k8s.d.ts +1 -0
  603. package/dist/esm/v3/serverOnly/k8s.js +15 -0
  604. package/dist/esm/v3/serverOnly/k8s.js.map +1 -0
  605. package/dist/esm/v3/serverOnly/shutdownManager.d.ts +20 -0
  606. package/dist/esm/v3/serverOnly/shutdownManager.js +88 -0
  607. package/dist/esm/v3/serverOnly/shutdownManager.js.map +1 -0
  608. package/dist/esm/v3/serverOnly/shutdownManager.test.d.ts +1 -0
  609. package/dist/esm/v3/serverOnly/shutdownManager.test.js +137 -0
  610. package/dist/esm/v3/serverOnly/shutdownManager.test.js.map +1 -0
  611. package/dist/esm/v3/serverOnly/singleton.d.ts +1 -0
  612. package/dist/esm/v3/serverOnly/singleton.js +7 -0
  613. package/dist/esm/v3/serverOnly/singleton.js.map +1 -0
  614. package/dist/esm/v3/streams/asyncIterableStream.d.ts +4 -0
  615. package/dist/esm/v3/streams/asyncIterableStream.js +72 -0
  616. package/dist/esm/v3/streams/asyncIterableStream.js.map +1 -0
  617. package/dist/esm/v3/taskContext/index.d.ts +1 -0
  618. package/dist/esm/v3/taskContext/index.js +5 -1
  619. package/dist/esm/v3/taskContext/index.js.map +1 -1
  620. package/dist/esm/v3/taskContext/otelProcessors.d.ts +3 -1
  621. package/dist/esm/v3/taskContext/otelProcessors.js +34 -1
  622. package/dist/esm/v3/taskContext/otelProcessors.js.map +1 -1
  623. package/dist/esm/v3/taskContext/types.d.ts +1 -0
  624. package/dist/esm/v3/tracer.d.ts +10 -2
  625. package/dist/esm/v3/tracer.js +34 -20
  626. package/dist/esm/v3/tracer.js.map +1 -1
  627. package/dist/esm/v3/tryCatch.d.ts +5 -0
  628. package/dist/esm/v3/tryCatch.js +11 -0
  629. package/dist/esm/v3/tryCatch.js.map +1 -0
  630. package/dist/esm/v3/types/index.d.ts +1 -0
  631. package/dist/esm/v3/types/index.js +1 -0
  632. package/dist/esm/v3/types/index.js.map +1 -1
  633. package/dist/esm/v3/types/queues.d.ts +43 -0
  634. package/dist/esm/v3/types/queues.js +2 -0
  635. package/dist/esm/v3/types/queues.js.map +1 -0
  636. package/dist/esm/v3/types/schemas.d.ts +3 -0
  637. package/dist/esm/v3/types/schemas.js +13 -0
  638. package/dist/esm/v3/types/schemas.js.map +1 -1
  639. package/dist/esm/v3/types/tasks.d.ts +92 -34
  640. package/dist/esm/v3/types/tasks.js.map +1 -1
  641. package/dist/esm/v3/utils/durations.d.ts +1 -0
  642. package/dist/esm/v3/utils/durations.js +1 -1
  643. package/dist/esm/v3/utils/durations.js.map +1 -1
  644. package/dist/esm/v3/utils/flattenAttributes.js.map +1 -1
  645. package/dist/esm/v3/utils/globals.d.ts +8 -2
  646. package/dist/esm/v3/utils/globals.js.map +1 -1
  647. package/dist/esm/v3/utils/heartbeat.d.ts +21 -0
  648. package/dist/esm/v3/utils/heartbeat.js +75 -0
  649. package/dist/esm/v3/utils/heartbeat.js.map +1 -0
  650. package/dist/esm/v3/utils/imageRef.d.ts +8 -0
  651. package/dist/esm/v3/utils/imageRef.js +51 -0
  652. package/dist/esm/v3/utils/imageRef.js.map +1 -0
  653. package/dist/esm/v3/workers/index.d.ts +9 -2
  654. package/dist/esm/v3/workers/index.js +9 -2
  655. package/dist/esm/v3/workers/index.js.map +1 -1
  656. package/dist/esm/v3/workers/populateEnv.d.ts +23 -0
  657. package/dist/esm/v3/workers/populateEnv.js +30 -0
  658. package/dist/esm/v3/workers/populateEnv.js.map +1 -0
  659. package/dist/esm/v3/workers/taskExecutor.d.ts +10 -9
  660. package/dist/esm/v3/workers/taskExecutor.js +657 -246
  661. package/dist/esm/v3/workers/taskExecutor.js.map +1 -1
  662. package/dist/esm/v3/workers/warmStartClient.d.ts +27 -0
  663. package/dist/esm/v3/workers/warmStartClient.js +108 -0
  664. package/dist/esm/v3/workers/warmStartClient.js.map +1 -0
  665. package/dist/esm/v3/zodSocket.d.ts +2 -2
  666. package/dist/esm/v3/zodSocket.js +3 -2
  667. package/dist/esm/v3/zodSocket.js.map +1 -1
  668. package/dist/esm/version.js +1 -1
  669. package/package.json +72 -128
  670. package/dist/commonjs/bloom.d.ts +0 -10
  671. package/dist/commonjs/bloom.js +0 -58
  672. package/dist/commonjs/bloom.js.map +0 -1
  673. package/dist/commonjs/replacements.d.ts +0 -19
  674. package/dist/commonjs/replacements.js +0 -27
  675. package/dist/commonjs/replacements.js.map +0 -1
  676. package/dist/commonjs/requestFilterMatches.d.ts +0 -7
  677. package/dist/commonjs/requestFilterMatches.js +0 -62
  678. package/dist/commonjs/requestFilterMatches.js.map +0 -1
  679. package/dist/commonjs/schemas/addMissingVersionField.d.ts +0 -1
  680. package/dist/commonjs/schemas/addMissingVersionField.js +0 -13
  681. package/dist/commonjs/schemas/addMissingVersionField.js.map +0 -1
  682. package/dist/commonjs/schemas/api.d.ts +0 -13789
  683. package/dist/commonjs/schemas/api.js +0 -852
  684. package/dist/commonjs/schemas/api.js.map +0 -1
  685. package/dist/commonjs/schemas/errors.d.ts +0 -26
  686. package/dist/commonjs/schemas/errors.js +0 -14
  687. package/dist/commonjs/schemas/errors.js.map +0 -1
  688. package/dist/commonjs/schemas/events.d.ts +0 -66
  689. package/dist/commonjs/schemas/events.js +0 -31
  690. package/dist/commonjs/schemas/events.js.map +0 -1
  691. package/dist/commonjs/schemas/fetch.d.ts +0 -682
  692. package/dist/commonjs/schemas/fetch.js +0 -68
  693. package/dist/commonjs/schemas/fetch.js.map +0 -1
  694. package/dist/commonjs/schemas/integrations.d.ts +0 -66
  695. package/dist/commonjs/schemas/integrations.js +0 -21
  696. package/dist/commonjs/schemas/integrations.js.map +0 -1
  697. package/dist/commonjs/schemas/jobs.d.ts +0 -12
  698. package/dist/commonjs/schemas/jobs.js +0 -9
  699. package/dist/commonjs/schemas/jobs.js.map +0 -1
  700. package/dist/commonjs/schemas/notifications.d.ts +0 -587
  701. package/dist/commonjs/schemas/notifications.js +0 -59
  702. package/dist/commonjs/schemas/notifications.js.map +0 -1
  703. package/dist/commonjs/schemas/properties.d.ts +0 -57
  704. package/dist/commonjs/schemas/properties.js +0 -23
  705. package/dist/commonjs/schemas/properties.js.map +0 -1
  706. package/dist/commonjs/schemas/request.d.ts +0 -17
  707. package/dist/commonjs/schemas/request.js +0 -11
  708. package/dist/commonjs/schemas/request.js.map +0 -1
  709. package/dist/commonjs/schemas/requestFilter.d.ts +0 -225
  710. package/dist/commonjs/schemas/requestFilter.js +0 -60
  711. package/dist/commonjs/schemas/requestFilter.js.map +0 -1
  712. package/dist/commonjs/schemas/runs.d.ts +0 -344
  713. package/dist/commonjs/schemas/runs.js +0 -91
  714. package/dist/commonjs/schemas/runs.js.map +0 -1
  715. package/dist/commonjs/schemas/schedules.d.ts +0 -185
  716. package/dist/commonjs/schemas/schedules.js +0 -48
  717. package/dist/commonjs/schemas/schedules.js.map +0 -1
  718. package/dist/commonjs/schemas/statuses.d.ts +0 -89
  719. package/dist/commonjs/schemas/statuses.js +0 -23
  720. package/dist/commonjs/schemas/statuses.js.map +0 -1
  721. package/dist/commonjs/schemas/tasks.d.ts +0 -294
  722. package/dist/commonjs/schemas/tasks.js +0 -50
  723. package/dist/commonjs/schemas/tasks.js.map +0 -1
  724. package/dist/commonjs/schemas/triggers.d.ts +0 -532
  725. package/dist/commonjs/schemas/triggers.js +0 -57
  726. package/dist/commonjs/schemas/triggers.js.map +0 -1
  727. package/dist/commonjs/searchParams.d.ts +0 -1
  728. package/dist/commonjs/searchParams.js +0 -16
  729. package/dist/commonjs/searchParams.js.map +0 -1
  730. package/dist/commonjs/v3/apps/checkpoints.js.map +0 -1
  731. package/dist/commonjs/v3/apps/duration.js.map +0 -1
  732. package/dist/commonjs/v3/apps/friendlyId.d.ts +0 -1
  733. package/dist/commonjs/v3/apps/friendlyId.js +0 -9
  734. package/dist/commonjs/v3/apps/friendlyId.js.map +0 -1
  735. package/dist/commonjs/v3/dev/index.d.ts +0 -1
  736. package/dist/commonjs/v3/dev/index.js +0 -6
  737. package/dist/commonjs/v3/dev/index.js.map +0 -1
  738. package/dist/commonjs/v3/prod/index.d.ts +0 -1
  739. package/dist/commonjs/v3/prod/index.js +0 -6
  740. package/dist/commonjs/v3/prod/index.js.map +0 -1
  741. package/dist/commonjs/v3/runtime/devRuntimeManager.d.ts +0 -27
  742. package/dist/commonjs/v3/runtime/devRuntimeManager.js +0 -77
  743. package/dist/commonjs/v3/runtime/devRuntimeManager.js.map +0 -1
  744. package/dist/commonjs/v3/runtime/prodRuntimeManager.d.ts +0 -38
  745. package/dist/commonjs/v3/runtime/prodRuntimeManager.js +0 -94
  746. package/dist/commonjs/v3/runtime/prodRuntimeManager.js.map +0 -1
  747. package/dist/commonjs/v3/task-catalog/catalog.js.map +0 -1
  748. package/dist/commonjs/v3/task-catalog/index.d.ts +0 -18
  749. package/dist/commonjs/v3/task-catalog/index.js +0 -49
  750. package/dist/commonjs/v3/task-catalog/index.js.map +0 -1
  751. package/dist/commonjs/v3/task-catalog/noopTaskCatalog.d.ts +0 -13
  752. package/dist/commonjs/v3/task-catalog/noopTaskCatalog.js.map +0 -1
  753. package/dist/commonjs/v3/task-catalog/standardTaskCatalog.d.ts +0 -16
  754. package/dist/commonjs/v3/task-catalog/standardTaskCatalog.js +0 -84
  755. package/dist/commonjs/v3/task-catalog/standardTaskCatalog.js.map +0 -1
  756. package/dist/commonjs/v3/task-catalog-api.d.ts +0 -3
  757. package/dist/commonjs/v3/task-catalog-api.js.map +0 -1
  758. package/dist/commonjs/versions.d.ts +0 -9
  759. package/dist/commonjs/versions.js +0 -23
  760. package/dist/commonjs/versions.js.map +0 -1
  761. package/dist/esm/bloom.d.ts +0 -10
  762. package/dist/esm/bloom.js +0 -54
  763. package/dist/esm/bloom.js.map +0 -1
  764. package/dist/esm/replacements.d.ts +0 -19
  765. package/dist/esm/replacements.js +0 -24
  766. package/dist/esm/replacements.js.map +0 -1
  767. package/dist/esm/requestFilterMatches.d.ts +0 -7
  768. package/dist/esm/requestFilterMatches.js +0 -58
  769. package/dist/esm/requestFilterMatches.js.map +0 -1
  770. package/dist/esm/schemas/addMissingVersionField.d.ts +0 -1
  771. package/dist/esm/schemas/addMissingVersionField.js +0 -10
  772. package/dist/esm/schemas/addMissingVersionField.js.map +0 -1
  773. package/dist/esm/schemas/api.d.ts +0 -13789
  774. package/dist/esm/schemas/api.js +0 -847
  775. package/dist/esm/schemas/api.js.map +0 -1
  776. package/dist/esm/schemas/errors.d.ts +0 -26
  777. package/dist/esm/schemas/errors.js +0 -11
  778. package/dist/esm/schemas/errors.js.map +0 -1
  779. package/dist/esm/schemas/events.d.ts +0 -66
  780. package/dist/esm/schemas/events.js +0 -28
  781. package/dist/esm/schemas/events.js.map +0 -1
  782. package/dist/esm/schemas/fetch.d.ts +0 -682
  783. package/dist/esm/schemas/fetch.js +0 -65
  784. package/dist/esm/schemas/fetch.js.map +0 -1
  785. package/dist/esm/schemas/integrations.d.ts +0 -66
  786. package/dist/esm/schemas/integrations.js +0 -18
  787. package/dist/esm/schemas/integrations.js.map +0 -1
  788. package/dist/esm/schemas/jobs.d.ts +0 -12
  789. package/dist/esm/schemas/jobs.js +0 -6
  790. package/dist/esm/schemas/jobs.js.map +0 -1
  791. package/dist/esm/schemas/notifications.d.ts +0 -587
  792. package/dist/esm/schemas/notifications.js +0 -56
  793. package/dist/esm/schemas/notifications.js.map +0 -1
  794. package/dist/esm/schemas/properties.d.ts +0 -57
  795. package/dist/esm/schemas/properties.js +0 -20
  796. package/dist/esm/schemas/properties.js.map +0 -1
  797. package/dist/esm/schemas/request.d.ts +0 -17
  798. package/dist/esm/schemas/request.js +0 -8
  799. package/dist/esm/schemas/request.js.map +0 -1
  800. package/dist/esm/schemas/requestFilter.d.ts +0 -225
  801. package/dist/esm/schemas/requestFilter.js +0 -57
  802. package/dist/esm/schemas/requestFilter.js.map +0 -1
  803. package/dist/esm/schemas/runs.d.ts +0 -344
  804. package/dist/esm/schemas/runs.js +0 -88
  805. package/dist/esm/schemas/runs.js.map +0 -1
  806. package/dist/esm/schemas/schedules.d.ts +0 -185
  807. package/dist/esm/schemas/schedules.js +0 -45
  808. package/dist/esm/schemas/schedules.js.map +0 -1
  809. package/dist/esm/schemas/statuses.d.ts +0 -89
  810. package/dist/esm/schemas/statuses.js +0 -20
  811. package/dist/esm/schemas/statuses.js.map +0 -1
  812. package/dist/esm/schemas/tasks.d.ts +0 -294
  813. package/dist/esm/schemas/tasks.js +0 -47
  814. package/dist/esm/schemas/tasks.js.map +0 -1
  815. package/dist/esm/schemas/triggers.d.ts +0 -532
  816. package/dist/esm/schemas/triggers.js +0 -54
  817. package/dist/esm/schemas/triggers.js.map +0 -1
  818. package/dist/esm/searchParams.d.ts +0 -1
  819. package/dist/esm/searchParams.js +0 -13
  820. package/dist/esm/searchParams.js.map +0 -1
  821. package/dist/esm/v3/apps/checkpoints.js.map +0 -1
  822. package/dist/esm/v3/apps/duration.js.map +0 -1
  823. package/dist/esm/v3/apps/friendlyId.d.ts +0 -1
  824. package/dist/esm/v3/apps/friendlyId.js +0 -6
  825. package/dist/esm/v3/apps/friendlyId.js.map +0 -1
  826. package/dist/esm/v3/dev/index.d.ts +0 -1
  827. package/dist/esm/v3/dev/index.js +0 -2
  828. package/dist/esm/v3/dev/index.js.map +0 -1
  829. package/dist/esm/v3/prod/index.d.ts +0 -1
  830. package/dist/esm/v3/prod/index.js +0 -2
  831. package/dist/esm/v3/prod/index.js.map +0 -1
  832. package/dist/esm/v3/runtime/devRuntimeManager.d.ts +0 -27
  833. package/dist/esm/v3/runtime/devRuntimeManager.js +0 -73
  834. package/dist/esm/v3/runtime/devRuntimeManager.js.map +0 -1
  835. package/dist/esm/v3/runtime/prodRuntimeManager.d.ts +0 -38
  836. package/dist/esm/v3/runtime/prodRuntimeManager.js +0 -90
  837. package/dist/esm/v3/runtime/prodRuntimeManager.js.map +0 -1
  838. package/dist/esm/v3/task-catalog/catalog.js.map +0 -1
  839. package/dist/esm/v3/task-catalog/index.d.ts +0 -18
  840. package/dist/esm/v3/task-catalog/index.js +0 -45
  841. package/dist/esm/v3/task-catalog/index.js.map +0 -1
  842. package/dist/esm/v3/task-catalog/noopTaskCatalog.d.ts +0 -13
  843. package/dist/esm/v3/task-catalog/noopTaskCatalog.js.map +0 -1
  844. package/dist/esm/v3/task-catalog/standardTaskCatalog.d.ts +0 -16
  845. package/dist/esm/v3/task-catalog/standardTaskCatalog.js +0 -80
  846. package/dist/esm/v3/task-catalog/standardTaskCatalog.js.map +0 -1
  847. package/dist/esm/v3/task-catalog-api.d.ts +0 -3
  848. package/dist/esm/v3/task-catalog-api.js +0 -6
  849. package/dist/esm/v3/task-catalog-api.js.map +0 -1
  850. package/dist/esm/versions.d.ts +0 -9
  851. package/dist/esm/versions.js +0 -19
  852. package/dist/esm/versions.js.map +0 -1
  853. /package/dist/commonjs/v3/{task-catalog → resource-catalog}/catalog.js +0 -0
  854. /package/dist/commonjs/v3/{apps/checkpoints.d.ts → serverOnly/checkpointTest.d.ts} +0 -0
  855. /package/dist/esm/v3/{task-catalog → resource-catalog}/catalog.js +0 -0
  856. /package/dist/esm/v3/{apps/checkpoints.d.ts → serverOnly/checkpointTest.d.ts} +0 -0
@@ -1,11 +1,13 @@
1
1
  import { SpanKind } from "@opentelemetry/api";
2
2
  import { VERSION } from "../../version.js";
3
- import { isInternalError, parseError, sanitizeError, TaskPayloadParsedError, } from "../errors.js";
4
- import { runMetadata, waitUntil } from "../index.js";
3
+ import { InternalError, isCompleteTaskWithOutput, isInternalError, parseError, sanitizeError, TaskPayloadParsedError, } from "../errors.js";
4
+ import { accessoryAttributes, flattenAttributes, lifecycleHooks, runMetadata, waitUntil, } from "../index.js";
5
5
  import { recordSpanException } from "../otel/index.js";
6
- import { TaskRunContext, TaskRunErrorCodes, } from "../schemas/index.js";
6
+ import { runTimelineMetrics } from "../run-timeline-metrics-api.js";
7
+ import { COLD_VARIANT, TaskRunContext, TaskRunErrorCodes, WARM_VARIANT, } from "../schemas/index.js";
7
8
  import { SemanticInternalAttributes } from "../semanticInternalAttributes.js";
8
9
  import { taskContext } from "../task-context-api.js";
10
+ import { tryCatch } from "../tryCatch.js";
9
11
  import { conditionallyExportPacket, conditionallyImportPacket, createPacketAttributes, parsePacket, stringifyIO, } from "../utils/ioSerialization.js";
10
12
  import { calculateNextRetryDelay } from "../utils/retries.js";
11
13
  export class TaskExecutor {
@@ -13,17 +15,17 @@ export class TaskExecutor {
13
15
  _tracingSDK;
14
16
  _tracer;
15
17
  _consoleInterceptor;
16
- _importedConfig;
17
- _handleErrorFn;
18
+ _retries;
19
+ _isWarmStart;
18
20
  constructor(task, options) {
19
21
  this.task = task;
20
22
  this._tracingSDK = options.tracingSDK;
21
23
  this._tracer = options.tracer;
22
24
  this._consoleInterceptor = options.consoleInterceptor;
23
- this._importedConfig = options.config;
24
- this._handleErrorFn = options.handleErrorFn;
25
+ this._retries = options.retries;
26
+ this._isWarmStart = options.isWarmStart;
25
27
  }
26
- async execute(execution, worker, traceContext, usage, signal) {
28
+ async execute(execution, worker, traceContext, signal, isWarmStart) {
27
29
  const ctx = TaskRunContext.parse(execution);
28
30
  const attemptMessage = `Attempt ${execution.attempt.number}`;
29
31
  const originalPacket = {
@@ -33,6 +35,7 @@ export class TaskExecutor {
33
35
  taskContext.setGlobalTaskContext({
34
36
  ctx,
35
37
  worker,
38
+ isWarmStart: isWarmStart ?? this._isWarmStart,
36
39
  });
37
40
  if (execution.run.metadata) {
38
41
  runMetadata.enterWithMetadata(execution.run.metadata);
@@ -46,73 +49,49 @@ export class TaskExecutor {
46
49
  return await this._consoleInterceptor.intercept(console, async () => {
47
50
  let parsedPayload;
48
51
  let initOutput;
49
- try {
52
+ const [inputError, payloadResult] = await tryCatch(runTimelineMetrics.measureMetric("trigger.dev/execution", "payload", async () => {
50
53
  const payloadPacket = await conditionallyImportPacket(originalPacket, this._tracer);
51
- parsedPayload = await parsePacket(payloadPacket);
52
- }
53
- catch (inputError) {
54
+ return await parsePacket(payloadPacket);
55
+ }));
56
+ if (inputError) {
54
57
  recordSpanException(span, inputError);
55
- return {
56
- ok: false,
57
- id: execution.run.id,
58
- error: {
59
- type: "INTERNAL_ERROR",
60
- code: TaskRunErrorCodes.TASK_INPUT_ERROR,
61
- message: inputError instanceof Error
62
- ? `${inputError.name}: ${inputError.message}`
63
- : typeof inputError === "string"
64
- ? inputError
65
- : undefined,
66
- stackTrace: inputError instanceof Error ? inputError.stack : undefined,
67
- },
68
- };
58
+ return this.#internalErrorResult(execution, TaskRunErrorCodes.TASK_INPUT_ERROR, inputError);
69
59
  }
70
- try {
71
- parsedPayload = await this.#parsePayload(parsedPayload);
72
- if (execution.attempt.number === 1) {
73
- await this.#callOnStartFunctions(parsedPayload, ctx, signal);
74
- }
75
- initOutput = await this.#callInitFunctions(parsedPayload, ctx, signal);
76
- const output = await this.#callRun(parsedPayload, ctx, initOutput, signal);
77
- await this.#callOnSuccessFunctions(parsedPayload, output, ctx, initOutput, signal);
78
- try {
79
- const stringifiedOutput = await stringifyIO(output);
80
- const finalOutput = await conditionallyExportPacket(stringifiedOutput, `${execution.attempt.id}/output`, this._tracer);
81
- const attributes = await createPacketAttributes(finalOutput, SemanticInternalAttributes.OUTPUT, SemanticInternalAttributes.OUTPUT_TYPE);
82
- if (attributes) {
83
- span.setAttributes(attributes);
60
+ parsedPayload = await this.#parsePayload(payloadResult);
61
+ lifecycleHooks.registerOnWaitHookListener(async (wait) => {
62
+ await this.#callOnWaitFunctions(wait, parsedPayload, ctx, initOutput, signal);
63
+ });
64
+ lifecycleHooks.registerOnResumeHookListener(async (wait) => {
65
+ await this.#callOnResumeFunctions(wait, parsedPayload, ctx, initOutput, signal);
66
+ });
67
+ const executeTask = async (payload) => {
68
+ const [runError, output] = await tryCatch((async () => {
69
+ initOutput = await this.#callInitFunctions(payload, ctx, signal);
70
+ if (execution.attempt.number === 1) {
71
+ await this.#callOnStartFunctions(payload, ctx, initOutput, signal);
72
+ }
73
+ try {
74
+ return await this.#callRun(payload, ctx, initOutput, signal);
75
+ }
76
+ catch (error) {
77
+ if (isCompleteTaskWithOutput(error)) {
78
+ return error.output;
79
+ }
80
+ throw error;
81
+ }
82
+ })());
83
+ if (runError) {
84
+ const [handleErrorError, handleErrorResult] = await tryCatch(this.#handleError(execution, runError, payload, ctx, initOutput, signal));
85
+ if (handleErrorError) {
86
+ recordSpanException(span, handleErrorError);
87
+ return this.#internalErrorResult(execution, TaskRunErrorCodes.HANDLE_ERROR_ERROR, handleErrorError);
84
88
  }
85
- return {
86
- ok: true,
87
- id: execution.run.id,
88
- output: finalOutput.data,
89
- outputType: finalOutput.dataType,
90
- };
91
- }
92
- catch (outputError) {
93
- recordSpanException(span, outputError);
94
- return {
95
- ok: false,
96
- id: execution.run.id,
97
- error: {
98
- type: "INTERNAL_ERROR",
99
- code: TaskRunErrorCodes.TASK_OUTPUT_ERROR,
100
- message: outputError instanceof Error
101
- ? outputError.message
102
- : typeof outputError === "string"
103
- ? outputError
104
- : undefined,
105
- },
106
- };
107
- }
108
- }
109
- catch (runError) {
110
- try {
111
- const handleErrorResult = await this.#handleError(execution, runError, parsedPayload, ctx, initOutput, signal);
112
89
  recordSpanException(span, handleErrorResult.error ?? runError);
113
90
  if (handleErrorResult.status !== "retry") {
114
- await this.#callOnFailureFunctions(parsedPayload, handleErrorResult.error ?? runError, ctx, initOutput, signal);
91
+ await this.#callOnFailureFunctions(payload, handleErrorResult.error ?? runError, ctx, initOutput, signal);
92
+ await this.#callOnCompleteFunctions(payload, { ok: false, error: handleErrorResult.error ?? runError }, ctx, initOutput, signal);
115
93
  }
94
+ await this.#cleanupAndWaitUntil(payload, ctx, initOutput, signal);
116
95
  return {
117
96
  id: execution.run.id,
118
97
  ok: false,
@@ -123,160 +102,483 @@ export class TaskExecutor {
123
102
  skippedRetrying: handleErrorResult.status === "skipped",
124
103
  };
125
104
  }
126
- catch (handleErrorError) {
127
- recordSpanException(span, handleErrorError);
128
- return {
129
- ok: false,
130
- id: execution.run.id,
131
- error: {
132
- type: "INTERNAL_ERROR",
133
- code: TaskRunErrorCodes.HANDLE_ERROR_ERROR,
134
- message: handleErrorError instanceof Error
135
- ? handleErrorError.message
136
- : typeof handleErrorError === "string"
137
- ? handleErrorError
138
- : undefined,
139
- },
140
- };
105
+ const [outputError, stringifiedOutput] = await tryCatch(stringifyIO(output));
106
+ if (outputError) {
107
+ recordSpanException(span, outputError);
108
+ await this.#cleanupAndWaitUntil(payload, ctx, initOutput, signal);
109
+ return this.#internalErrorResult(execution, TaskRunErrorCodes.TASK_OUTPUT_ERROR, outputError);
141
110
  }
142
- }
143
- finally {
144
- await this.#callTaskCleanup(parsedPayload, ctx, initOutput, signal);
145
- await this.#blockForWaitUntil();
146
- }
111
+ const [exportError, finalOutput] = await tryCatch(conditionallyExportPacket(stringifiedOutput, `${execution.attempt.id}/output`, this._tracer));
112
+ if (exportError) {
113
+ recordSpanException(span, exportError);
114
+ await this.#cleanupAndWaitUntil(payload, ctx, initOutput, signal);
115
+ return this.#internalErrorResult(execution, TaskRunErrorCodes.TASK_OUTPUT_ERROR, exportError);
116
+ }
117
+ const [attrError, attributes] = await tryCatch(createPacketAttributes(finalOutput, SemanticInternalAttributes.OUTPUT, SemanticInternalAttributes.OUTPUT_TYPE));
118
+ if (!attrError && attributes) {
119
+ span.setAttributes(attributes);
120
+ }
121
+ await this.#callOnSuccessFunctions(payload, output, ctx, initOutput, signal);
122
+ await this.#callOnCompleteFunctions(payload, { ok: true, data: output }, ctx, initOutput, signal);
123
+ await this.#cleanupAndWaitUntil(payload, ctx, initOutput, signal);
124
+ return {
125
+ ok: true,
126
+ id: execution.run.id,
127
+ output: finalOutput.data,
128
+ outputType: finalOutput.dataType,
129
+ };
130
+ };
131
+ const globalMiddlewareHooks = lifecycleHooks.getGlobalMiddlewareHooks();
132
+ const taskMiddlewareHook = lifecycleHooks.getTaskMiddlewareHook(this.task.id);
133
+ const middlewareHooks = [
134
+ ...globalMiddlewareHooks,
135
+ taskMiddlewareHook ? { id: this.task.id, fn: taskMiddlewareHook } : undefined,
136
+ ].filter(Boolean);
137
+ return await this.#executeTaskWithMiddlewareHooks(parsedPayload, ctx, execution, middlewareHooks, executeTask, signal);
147
138
  });
148
139
  }, {
149
140
  kind: SpanKind.CONSUMER,
150
141
  attributes: {
151
142
  [SemanticInternalAttributes.STYLE_ICON]: "attempt",
143
+ [SemanticInternalAttributes.ENTITY_TYPE]: "attempt",
152
144
  [SemanticInternalAttributes.SPAN_ATTEMPT]: true,
145
+ ...(execution.attempt.number === 1
146
+ ? runTimelineMetrics.convertMetricsToSpanAttributes()
147
+ : {}),
148
+ ...(execution.environment.type !== "DEVELOPMENT"
149
+ ? {
150
+ [SemanticInternalAttributes.STYLE_VARIANT]: this._isWarmStart
151
+ ? WARM_VARIANT
152
+ : COLD_VARIANT,
153
+ }
154
+ : {}),
153
155
  },
156
+ events: execution.attempt.number === 1
157
+ ? runTimelineMetrics.convertMetricsToSpanEvents()
158
+ : undefined,
154
159
  }, this._tracer.extractContext(traceContext), signal);
155
160
  return { result };
156
161
  }
162
+ async #executeTaskWithMiddlewareHooks(payload, ctx, execution, hooks, executeTask, signal) {
163
+ let output;
164
+ let executeError;
165
+ const runner = hooks.reduceRight((next, hook) => {
166
+ return async () => {
167
+ await this._tracer.startActiveSpan("middleware()", async (span) => {
168
+ await hook.fn({ payload, ctx, signal, task: this.task.id, next });
169
+ }, {
170
+ attributes: {
171
+ [SemanticInternalAttributes.STYLE_ICON]: "task-middleware",
172
+ ...this.#lifecycleHookAccessoryAttributes(hook.name),
173
+ },
174
+ });
175
+ };
176
+ }, async () => {
177
+ const [error, result] = await tryCatch(executeTask(payload));
178
+ if (error) {
179
+ executeError = error;
180
+ }
181
+ else {
182
+ output = result;
183
+ }
184
+ });
185
+ const [runnerError] = await tryCatch(runner());
186
+ if (runnerError) {
187
+ return this.#internalErrorResult(execution, TaskRunErrorCodes.TASK_MIDDLEWARE_ERROR, runnerError);
188
+ }
189
+ if (executeError) {
190
+ throw executeError;
191
+ }
192
+ return output;
193
+ }
157
194
  async #callRun(payload, ctx, init, signal) {
158
195
  const runFn = this.task.fns.run;
159
- const middlewareFn = this.task.fns.middleware;
160
196
  if (!runFn) {
161
197
  throw new Error("Task does not have a run function");
162
198
  }
163
- if (!middlewareFn) {
164
- return runFn(payload, { ctx, init, signal });
199
+ // Create a promise that rejects when the signal aborts
200
+ const abortPromise = signal
201
+ ? new Promise((_, reject) => {
202
+ signal.addEventListener("abort", () => {
203
+ const maxDuration = ctx.run.maxDuration;
204
+ reject(new InternalError({
205
+ code: TaskRunErrorCodes.MAX_DURATION_EXCEEDED,
206
+ message: `Run exceeded maximum compute time (maxDuration) of ${maxDuration} seconds`,
207
+ }));
208
+ });
209
+ })
210
+ : undefined;
211
+ return runTimelineMetrics.measureMetric("trigger.dev/execution", "run", async () => {
212
+ return await this._tracer.startActiveSpan("run()", async (span) => {
213
+ if (abortPromise) {
214
+ // Race between the run function and the abort promise
215
+ return await Promise.race([runFn(payload, { ctx, init, signal }), abortPromise]);
216
+ }
217
+ return await runFn(payload, { ctx, init, signal });
218
+ }, {
219
+ attributes: { [SemanticInternalAttributes.STYLE_ICON]: "task-fn-run" },
220
+ });
221
+ });
222
+ }
223
+ async #callOnWaitFunctions(wait, payload, ctx, initOutput, signal) {
224
+ const globalWaitHooks = lifecycleHooks.getGlobalWaitHooks();
225
+ const taskWaitHook = lifecycleHooks.getTaskWaitHook(this.task.id);
226
+ if (globalWaitHooks.length === 0 && !taskWaitHook) {
227
+ return;
165
228
  }
166
- return middlewareFn(payload, {
167
- ctx,
168
- signal,
169
- next: async () => runFn(payload, { ctx, init, signal }),
229
+ const result = await runTimelineMetrics.measureMetric("trigger.dev/execution", "onWait", async () => {
230
+ for (const hook of globalWaitHooks) {
231
+ const [hookError] = await tryCatch(this._tracer.startActiveSpan("onWait()", async (span) => {
232
+ await hook.fn({ payload, ctx, signal, task: this.task.id, wait, init: initOutput });
233
+ }, {
234
+ attributes: {
235
+ [SemanticInternalAttributes.STYLE_ICON]: "task-hook-onWait",
236
+ [SemanticInternalAttributes.COLLAPSED]: true,
237
+ ...this.#lifecycleHookAccessoryAttributes(hook.name),
238
+ },
239
+ }));
240
+ if (hookError) {
241
+ throw hookError;
242
+ }
243
+ }
244
+ if (taskWaitHook) {
245
+ const [hookError] = await tryCatch(this._tracer.startActiveSpan("onWait()", async (span) => {
246
+ await taskWaitHook({
247
+ payload,
248
+ ctx,
249
+ signal,
250
+ task: this.task.id,
251
+ wait,
252
+ init: initOutput,
253
+ });
254
+ }, {
255
+ attributes: {
256
+ [SemanticInternalAttributes.STYLE_ICON]: "task-hook-onWait",
257
+ [SemanticInternalAttributes.COLLAPSED]: true,
258
+ ...this.#lifecycleHookAccessoryAttributes("task"),
259
+ },
260
+ }));
261
+ if (hookError) {
262
+ throw hookError;
263
+ }
264
+ }
170
265
  });
171
266
  }
172
- async #callInitFunctions(payload, ctx, signal) {
173
- await this.#callConfigInit(payload, ctx, signal);
174
- const initFn = this.task.fns.init;
175
- if (!initFn) {
176
- return {};
267
+ async #callOnResumeFunctions(wait, payload, ctx, initOutput, signal) {
268
+ const globalResumeHooks = lifecycleHooks.getGlobalResumeHooks();
269
+ const taskResumeHook = lifecycleHooks.getTaskResumeHook(this.task.id);
270
+ if (globalResumeHooks.length === 0 && !taskResumeHook) {
271
+ return;
177
272
  }
178
- return this._tracer.startActiveSpan("init", async (span) => {
179
- return await initFn(payload, { ctx, signal });
180
- }, {
181
- attributes: {
182
- [SemanticInternalAttributes.STYLE_ICON]: "function",
183
- },
273
+ const result = await runTimelineMetrics.measureMetric("trigger.dev/execution", "onResume", async () => {
274
+ for (const hook of globalResumeHooks) {
275
+ const [hookError] = await tryCatch(this._tracer.startActiveSpan("onResume()", async (span) => {
276
+ await hook.fn({ payload, ctx, signal, task: this.task.id, wait, init: initOutput });
277
+ }, {
278
+ attributes: {
279
+ [SemanticInternalAttributes.STYLE_ICON]: "task-hook-onResume",
280
+ [SemanticInternalAttributes.COLLAPSED]: true,
281
+ ...this.#lifecycleHookAccessoryAttributes(hook.name),
282
+ },
283
+ }));
284
+ if (hookError) {
285
+ throw hookError;
286
+ }
287
+ }
288
+ if (taskResumeHook) {
289
+ const [hookError] = await tryCatch(this._tracer.startActiveSpan("onResume()", async (span) => {
290
+ await taskResumeHook({
291
+ payload,
292
+ ctx,
293
+ signal,
294
+ task: this.task.id,
295
+ wait,
296
+ init: initOutput,
297
+ });
298
+ }, {
299
+ attributes: {
300
+ [SemanticInternalAttributes.STYLE_ICON]: "task-hook-onResume",
301
+ [SemanticInternalAttributes.COLLAPSED]: true,
302
+ ...this.#lifecycleHookAccessoryAttributes("task"),
303
+ },
304
+ }));
305
+ if (hookError) {
306
+ throw hookError;
307
+ }
308
+ }
184
309
  });
185
310
  }
186
- async #callConfigInit(payload, ctx, signal) {
187
- const initFn = this._importedConfig?.init;
188
- if (!initFn) {
311
+ async #callInitFunctions(payload, ctx, signal) {
312
+ const globalInitHooks = lifecycleHooks.getGlobalInitHooks();
313
+ const taskInitHook = lifecycleHooks.getTaskInitHook(this.task.id);
314
+ if (globalInitHooks.length === 0 && !taskInitHook) {
189
315
  return {};
190
316
  }
191
- return this._tracer.startActiveSpan("config.init", async (span) => {
192
- return await initFn(payload, { ctx, signal });
193
- }, {
194
- attributes: {
195
- [SemanticInternalAttributes.STYLE_ICON]: "function",
196
- },
317
+ const result = await runTimelineMetrics.measureMetric("trigger.dev/execution", "init", async () => {
318
+ // Store global hook results in an array
319
+ const globalResults = [];
320
+ for (const hook of globalInitHooks) {
321
+ const [hookError, result] = await tryCatch(this._tracer.startActiveSpan("init()", async (span) => {
322
+ const result = await hook.fn({ payload, ctx, signal, task: this.task.id });
323
+ if (result && typeof result === "object" && !Array.isArray(result)) {
324
+ span.setAttributes(flattenAttributes(result));
325
+ return result;
326
+ }
327
+ return {};
328
+ }, {
329
+ attributes: {
330
+ [SemanticInternalAttributes.STYLE_ICON]: "task-hook-init",
331
+ [SemanticInternalAttributes.COLLAPSED]: true,
332
+ ...this.#lifecycleHookAccessoryAttributes(hook.name),
333
+ },
334
+ }));
335
+ if (hookError) {
336
+ throw hookError;
337
+ }
338
+ if (result && typeof result === "object" && !Array.isArray(result)) {
339
+ globalResults.push(result);
340
+ }
341
+ }
342
+ // Merge all global results into a single object
343
+ const mergedGlobalResults = Object.assign({}, ...globalResults);
344
+ if (taskInitHook) {
345
+ const [hookError, taskResult] = await tryCatch(this._tracer.startActiveSpan("init()", async (span) => {
346
+ const result = await taskInitHook({ payload, ctx, signal, task: this.task.id });
347
+ if (result && typeof result === "object" && !Array.isArray(result)) {
348
+ span.setAttributes(flattenAttributes(result));
349
+ return result;
350
+ }
351
+ return {};
352
+ }, {
353
+ attributes: {
354
+ [SemanticInternalAttributes.STYLE_ICON]: "task-hook-init",
355
+ [SemanticInternalAttributes.COLLAPSED]: true,
356
+ ...this.#lifecycleHookAccessoryAttributes("task"),
357
+ },
358
+ }));
359
+ if (hookError) {
360
+ throw hookError;
361
+ }
362
+ // Only merge if taskResult is an object
363
+ if (taskResult && typeof taskResult === "object" && !Array.isArray(taskResult)) {
364
+ return { ...mergedGlobalResults, ...taskResult };
365
+ }
366
+ // If taskResult isn't an object, return global results
367
+ return mergedGlobalResults;
368
+ }
369
+ return mergedGlobalResults;
197
370
  });
371
+ if (result && typeof result === "object" && !Array.isArray(result)) {
372
+ return result;
373
+ }
374
+ return;
198
375
  }
199
376
  async #callOnSuccessFunctions(payload, output, ctx, initOutput, signal) {
200
- await this.#callOnSuccessFunction(this.task.fns.onSuccess, "task.onSuccess", payload, output, ctx, initOutput, signal);
201
- await this.#callOnSuccessFunction(this._importedConfig?.onSuccess, "config.onSuccess", payload, output, ctx, initOutput, signal);
202
- }
203
- async #callOnSuccessFunction(onSuccessFn, name, payload, output, ctx, initOutput, signal) {
204
- if (!onSuccessFn) {
377
+ const globalSuccessHooks = lifecycleHooks.getGlobalSuccessHooks();
378
+ const taskSuccessHook = lifecycleHooks.getTaskSuccessHook(this.task.id);
379
+ if (globalSuccessHooks.length === 0 && !taskSuccessHook) {
205
380
  return;
206
381
  }
207
- try {
208
- await this._tracer.startActiveSpan(name, async (span) => {
209
- return await onSuccessFn(payload, output, { ctx, init: initOutput, signal });
210
- }, {
211
- attributes: {
212
- [SemanticInternalAttributes.STYLE_ICON]: "function",
213
- },
214
- });
215
- }
216
- catch {
217
- // Ignore errors from onSuccess functions
218
- }
382
+ return await runTimelineMetrics.measureMetric("trigger.dev/execution", "success", async () => {
383
+ for (const hook of globalSuccessHooks) {
384
+ const [hookError] = await tryCatch(this._tracer.startActiveSpan("onSuccess()", async (span) => {
385
+ await hook.fn({
386
+ payload,
387
+ output,
388
+ ctx,
389
+ signal,
390
+ task: this.task.id,
391
+ init: initOutput,
392
+ });
393
+ }, {
394
+ attributes: {
395
+ [SemanticInternalAttributes.STYLE_ICON]: "task-hook-onSuccess",
396
+ [SemanticInternalAttributes.COLLAPSED]: true,
397
+ ...this.#lifecycleHookAccessoryAttributes(hook.name),
398
+ },
399
+ }));
400
+ if (hookError) {
401
+ throw hookError;
402
+ }
403
+ }
404
+ if (taskSuccessHook) {
405
+ const [hookError] = await tryCatch(this._tracer.startActiveSpan("onSuccess()", async (span) => {
406
+ await taskSuccessHook({
407
+ payload,
408
+ output,
409
+ ctx,
410
+ signal,
411
+ task: this.task.id,
412
+ init: initOutput,
413
+ });
414
+ }, {
415
+ attributes: {
416
+ [SemanticInternalAttributes.STYLE_ICON]: "task-hook-onSuccess",
417
+ [SemanticInternalAttributes.COLLAPSED]: true,
418
+ ...this.#lifecycleHookAccessoryAttributes("task"),
419
+ },
420
+ }));
421
+ if (hookError) {
422
+ throw hookError;
423
+ }
424
+ }
425
+ });
219
426
  }
220
427
  async #callOnFailureFunctions(payload, error, ctx, initOutput, signal) {
221
- await this.#callOnFailureFunction(this.task.fns.onFailure, "task.onFailure", payload, error, ctx, initOutput, signal);
222
- await this.#callOnFailureFunction(this._importedConfig?.onFailure, "config.onFailure", payload, error, ctx, initOutput, signal);
223
- }
224
- async #callOnFailureFunction(onFailureFn, name, payload, error, ctx, initOutput, signal) {
225
- if (!onFailureFn) {
428
+ const globalFailureHooks = lifecycleHooks.getGlobalFailureHooks();
429
+ const taskFailureHook = lifecycleHooks.getTaskFailureHook(this.task.id);
430
+ if (globalFailureHooks.length === 0 && !taskFailureHook) {
226
431
  return;
227
432
  }
228
- try {
229
- return await this._tracer.startActiveSpan(name, async (span) => {
230
- return await onFailureFn(payload, error, { ctx, init: initOutput, signal });
231
- }, {
232
- attributes: {
233
- [SemanticInternalAttributes.STYLE_ICON]: "function",
234
- },
235
- });
236
- }
237
- catch (e) {
238
- // Ignore errors from onFailure functions
239
- }
433
+ return await runTimelineMetrics.measureMetric("trigger.dev/execution", "failure", async () => {
434
+ for (const hook of globalFailureHooks) {
435
+ const [hookError] = await tryCatch(this._tracer.startActiveSpan("onFailure()", async (span) => {
436
+ await hook.fn({
437
+ payload,
438
+ error,
439
+ ctx,
440
+ signal,
441
+ task: this.task.id,
442
+ init: initOutput,
443
+ });
444
+ }, {
445
+ attributes: {
446
+ [SemanticInternalAttributes.STYLE_ICON]: "task-hook-onFailure",
447
+ [SemanticInternalAttributes.COLLAPSED]: true,
448
+ ...this.#lifecycleHookAccessoryAttributes(hook.name),
449
+ },
450
+ }));
451
+ if (hookError) {
452
+ throw hookError;
453
+ }
454
+ }
455
+ if (taskFailureHook) {
456
+ const [hookError] = await tryCatch(this._tracer.startActiveSpan("onFailure()", async (span) => {
457
+ await taskFailureHook({
458
+ payload,
459
+ error,
460
+ ctx,
461
+ signal,
462
+ task: this.task.id,
463
+ init: initOutput,
464
+ });
465
+ }, {
466
+ attributes: {
467
+ [SemanticInternalAttributes.STYLE_ICON]: "task-hook-onFailure",
468
+ [SemanticInternalAttributes.COLLAPSED]: true,
469
+ ...this.#lifecycleHookAccessoryAttributes("task"),
470
+ },
471
+ }));
472
+ if (hookError) {
473
+ throw hookError;
474
+ }
475
+ }
476
+ });
240
477
  }
241
478
  async #parsePayload(payload) {
242
479
  if (!this.task.fns.parsePayload) {
243
480
  return payload;
244
481
  }
245
- try {
246
- return await this.task.fns.parsePayload(payload);
247
- }
248
- catch (e) {
249
- throw new TaskPayloadParsedError(e);
482
+ const [parseError, result] = await tryCatch(this.task.fns.parsePayload(payload));
483
+ if (parseError) {
484
+ throw new TaskPayloadParsedError(parseError);
250
485
  }
486
+ return result;
251
487
  }
252
- async #callOnStartFunctions(payload, ctx, signal) {
253
- await this.#callOnStartFunction(this._importedConfig?.onStart, "config.onStart", payload, ctx, {}, signal);
254
- await this.#callOnStartFunction(this.task.fns.onStart, "task.onStart", payload, ctx, {}, signal);
255
- }
256
- async #callOnStartFunction(onStartFn, name, payload, ctx, initOutput, signal) {
257
- if (!onStartFn) {
488
+ async #callOnStartFunctions(payload, ctx, initOutput, signal) {
489
+ const globalStartHooks = lifecycleHooks.getGlobalStartHooks();
490
+ const taskStartHook = lifecycleHooks.getTaskStartHook(this.task.id);
491
+ if (globalStartHooks.length === 0 && !taskStartHook) {
258
492
  return;
259
493
  }
260
- try {
261
- await this._tracer.startActiveSpan(name, async (span) => {
262
- return await onStartFn(payload, { ctx, signal });
263
- }, {
264
- attributes: {
265
- [SemanticInternalAttributes.STYLE_ICON]: "function",
266
- },
267
- });
268
- }
269
- catch {
270
- // Ignore errors from onStart functions
271
- }
494
+ return await runTimelineMetrics.measureMetric("trigger.dev/execution", "start", async () => {
495
+ for (const hook of globalStartHooks) {
496
+ const [hookError] = await tryCatch(this._tracer.startActiveSpan("onStart()", async (span) => {
497
+ await hook.fn({ payload, ctx, signal, task: this.task.id, init: initOutput });
498
+ }, {
499
+ attributes: {
500
+ [SemanticInternalAttributes.STYLE_ICON]: "task-hook-onStart",
501
+ [SemanticInternalAttributes.COLLAPSED]: true,
502
+ ...this.#lifecycleHookAccessoryAttributes(hook.name),
503
+ },
504
+ }));
505
+ if (hookError) {
506
+ throw hookError;
507
+ }
508
+ }
509
+ if (taskStartHook) {
510
+ const [hookError] = await tryCatch(this._tracer.startActiveSpan("onStart()", async (span) => {
511
+ await taskStartHook({
512
+ payload,
513
+ ctx,
514
+ signal,
515
+ task: this.task.id,
516
+ init: initOutput,
517
+ });
518
+ }, {
519
+ attributes: {
520
+ [SemanticInternalAttributes.STYLE_ICON]: "task-hook-onStart",
521
+ [SemanticInternalAttributes.COLLAPSED]: true,
522
+ ...this.#lifecycleHookAccessoryAttributes("task"),
523
+ },
524
+ }));
525
+ if (hookError) {
526
+ throw hookError;
527
+ }
528
+ }
529
+ });
530
+ }
531
+ async #cleanupAndWaitUntil(payload, ctx, initOutput, signal) {
532
+ await this.#callCleanupFunctions(payload, ctx, initOutput, signal);
533
+ await this.#blockForWaitUntil();
272
534
  }
273
- async #callTaskCleanup(payload, ctx, init, signal) {
274
- const cleanupFn = this.task.fns.cleanup;
275
- if (!cleanupFn) {
535
+ async #callCleanupFunctions(payload, ctx, initOutput, signal) {
536
+ const globalCleanupHooks = lifecycleHooks.getGlobalCleanupHooks();
537
+ const taskCleanupHook = lifecycleHooks.getTaskCleanupHook(this.task.id);
538
+ if (globalCleanupHooks.length === 0 && !taskCleanupHook) {
276
539
  return;
277
540
  }
278
- return this._tracer.startActiveSpan("cleanup", async (span) => {
279
- return await cleanupFn(payload, { ctx, init, signal });
541
+ return await runTimelineMetrics.measureMetric("trigger.dev/execution", "cleanup", async () => {
542
+ for (const hook of globalCleanupHooks) {
543
+ const [hookError] = await tryCatch(this._tracer.startActiveSpan("cleanup()", async (span) => {
544
+ await hook.fn({
545
+ payload,
546
+ ctx,
547
+ signal,
548
+ task: this.task.id,
549
+ init: initOutput,
550
+ });
551
+ }, {
552
+ attributes: {
553
+ [SemanticInternalAttributes.STYLE_ICON]: "task-hook-cleanup",
554
+ [SemanticInternalAttributes.COLLAPSED]: true,
555
+ ...this.#lifecycleHookAccessoryAttributes(hook.name),
556
+ },
557
+ }));
558
+ if (hookError) {
559
+ throw hookError;
560
+ }
561
+ }
562
+ if (taskCleanupHook) {
563
+ const [hookError] = await tryCatch(this._tracer.startActiveSpan("cleanup()", async (span) => {
564
+ await taskCleanupHook({
565
+ payload,
566
+ ctx,
567
+ signal,
568
+ task: this.task.id,
569
+ init: initOutput,
570
+ });
571
+ }, {
572
+ attributes: {
573
+ [SemanticInternalAttributes.STYLE_ICON]: "task-hook-cleanup",
574
+ [SemanticInternalAttributes.COLLAPSED]: true,
575
+ ...this.#lifecycleHookAccessoryAttributes("task"),
576
+ },
577
+ }));
578
+ if (hookError) {
579
+ throw hookError;
580
+ }
581
+ }
280
582
  });
281
583
  }
282
584
  async #blockForWaitUntil() {
@@ -287,103 +589,212 @@ export class TaskExecutor {
287
589
  return await waitUntil.blockUntilSettled(60_000);
288
590
  }, {
289
591
  attributes: {
290
- [SemanticInternalAttributes.STYLE_ICON]: "clock",
592
+ [SemanticInternalAttributes.STYLE_ICON]: "tabler-clock",
593
+ [SemanticInternalAttributes.COLLAPSED]: true,
291
594
  },
292
595
  });
293
596
  }
294
597
  async #handleError(execution, error, payload, ctx, init, signal) {
295
- const retriesConfig = this._importedConfig?.retries;
598
+ const retriesConfig = this._retries;
296
599
  const retry = this.task.retry ?? retriesConfig?.default;
297
- if (!retry) {
298
- return { status: "noop" };
600
+ // Early exit conditions that prevent retrying
601
+ if (isInternalError(error) && error.skipRetrying) {
602
+ return { status: "skipped", error };
299
603
  }
300
604
  if (error instanceof Error &&
301
605
  (error.name === "AbortTaskRunError" || error.name === "TaskPayloadParsedError")) {
302
606
  return { status: "skipped" };
303
607
  }
304
- if (isInternalError(error) && error.skipRetrying) {
305
- return { status: "skipped", error };
306
- }
307
- if (execution.run.maxAttempts) {
308
- retry.maxAttempts = Math.max(execution.run.maxAttempts, 1);
309
- }
310
- let delay = calculateNextRetryDelay(retry, execution.attempt.number);
311
- if (delay &&
312
- error instanceof Error &&
313
- error.name === "TriggerApiError" &&
314
- error.status === 429) {
315
- const rateLimitError = error;
316
- delay = rateLimitError.millisecondsUntilReset;
608
+ // Calculate default retry delay if retry config exists
609
+ let defaultDelay;
610
+ if (retry) {
611
+ if (execution.run.maxAttempts) {
612
+ retry.maxAttempts = Math.max(execution.run.maxAttempts, 1);
613
+ }
614
+ defaultDelay = calculateNextRetryDelay(retry, execution.attempt.number);
615
+ // Handle rate limit errors
616
+ if (defaultDelay &&
617
+ error instanceof Error &&
618
+ error.name === "TriggerApiError" &&
619
+ error.status === 429) {
620
+ const rateLimitError = error;
621
+ defaultDelay = rateLimitError.millisecondsUntilReset;
622
+ }
317
623
  }
624
+ const defaultRetryResult = typeof defaultDelay === "undefined"
625
+ ? { status: "noop" }
626
+ : {
627
+ status: "retry",
628
+ retry: { timestamp: Date.now() + defaultDelay, delay: defaultDelay },
629
+ };
630
+ // Check if retries are enabled in dev environment
318
631
  if (execution.environment.type === "DEVELOPMENT" &&
319
632
  typeof retriesConfig?.enabledInDev === "boolean" &&
320
633
  !retriesConfig.enabledInDev) {
321
634
  return { status: "skipped" };
322
635
  }
323
- return this._tracer.startActiveSpan("handleError()", async (span) => {
324
- const handleErrorResult = this.task.fns.handleError
325
- ? await this.task.fns.handleError(payload, error, {
636
+ const taskCatchErrorHook = lifecycleHooks.getTaskCatchErrorHook(this.task.id);
637
+ const globalCatchErrorHooks = lifecycleHooks.getGlobalCatchErrorHooks();
638
+ if (globalCatchErrorHooks.length === 0 && !taskCatchErrorHook) {
639
+ return defaultRetryResult;
640
+ }
641
+ return this._tracer.startActiveSpan("catchError", async (span) => {
642
+ // Try task-specific catch error hook first
643
+ if (taskCatchErrorHook) {
644
+ const result = await taskCatchErrorHook({
645
+ payload,
646
+ error,
326
647
  ctx,
327
648
  init,
328
649
  retry,
329
- retryDelayInMs: delay,
330
- retryAt: delay ? new Date(Date.now() + delay) : undefined,
650
+ retryDelayInMs: defaultDelay,
651
+ retryAt: defaultDelay ? new Date(Date.now() + defaultDelay) : undefined,
331
652
  signal,
332
- })
333
- : this._importedConfig
334
- ? await this._handleErrorFn?.(payload, error, {
335
- ctx,
336
- init,
337
- retry,
338
- retryDelayInMs: delay,
339
- retryAt: delay ? new Date(Date.now() + delay) : undefined,
340
- signal,
341
- })
342
- : undefined;
343
- // If handleErrorResult
344
- if (!handleErrorResult) {
345
- return typeof delay === "undefined"
346
- ? { status: "noop" }
347
- : { status: "retry", retry: { timestamp: Date.now() + delay, delay } };
653
+ task: this.task.id,
654
+ });
655
+ if (result) {
656
+ return this.#processHandleErrorResult(result, execution.attempt.number, defaultDelay);
657
+ }
348
658
  }
349
- if (handleErrorResult.skipRetrying) {
350
- return { status: "skipped", error: handleErrorResult.error };
659
+ // Try global catch error hooks in order
660
+ for (const hook of globalCatchErrorHooks) {
661
+ const result = await hook.fn({
662
+ payload,
663
+ error,
664
+ ctx,
665
+ init,
666
+ retry,
667
+ retryDelayInMs: defaultDelay,
668
+ retryAt: defaultDelay ? new Date(Date.now() + defaultDelay) : undefined,
669
+ signal,
670
+ task: this.task.id,
671
+ });
672
+ if (result) {
673
+ return this.#processHandleErrorResult(result, execution.attempt.number, defaultDelay);
674
+ }
351
675
  }
352
- if (typeof handleErrorResult.retryAt !== "undefined") {
353
- return {
676
+ // If no hooks handled the error, use default retry behavior
677
+ return defaultRetryResult;
678
+ }, {
679
+ attributes: {
680
+ [SemanticInternalAttributes.STYLE_ICON]: "task-hook-catchError",
681
+ [SemanticInternalAttributes.COLLAPSED]: true,
682
+ },
683
+ });
684
+ }
685
+ // Helper method to process handle error results
686
+ #processHandleErrorResult(result, attemptNumber, defaultDelay) {
687
+ if (result.skipRetrying) {
688
+ return { status: "skipped", error: result.error };
689
+ }
690
+ if (typeof result.retryAt !== "undefined") {
691
+ return {
692
+ status: "retry",
693
+ retry: {
694
+ timestamp: result.retryAt.getTime(),
695
+ delay: result.retryAt.getTime() - Date.now(),
696
+ },
697
+ error: result.error,
698
+ };
699
+ }
700
+ if (typeof result.retryDelayInMs === "number") {
701
+ return {
702
+ status: "retry",
703
+ retry: {
704
+ timestamp: Date.now() + result.retryDelayInMs,
705
+ delay: result.retryDelayInMs,
706
+ },
707
+ error: result.error,
708
+ };
709
+ }
710
+ if (result.retry && typeof result.retry === "object") {
711
+ const delay = calculateNextRetryDelay(result.retry, attemptNumber);
712
+ return typeof delay === "undefined"
713
+ ? { status: "noop", error: result.error }
714
+ : {
354
715
  status: "retry",
355
- retry: {
356
- timestamp: handleErrorResult.retryAt.getTime(),
357
- delay: handleErrorResult.retryAt.getTime() - Date.now(),
358
- },
359
- error: handleErrorResult.error,
716
+ retry: { timestamp: Date.now() + delay, delay },
717
+ error: result.error,
360
718
  };
361
- }
362
- if (typeof handleErrorResult.retryDelayInMs === "number") {
363
- return {
364
- status: "retry",
365
- retry: {
366
- timestamp: Date.now() + handleErrorResult.retryDelayInMs,
367
- delay: handleErrorResult.retryDelayInMs,
719
+ }
720
+ return { status: "noop", error: result.error };
721
+ }
722
+ async #callOnCompleteFunctions(payload, result, ctx, initOutput, signal) {
723
+ const globalCompleteHooks = lifecycleHooks.getGlobalCompleteHooks();
724
+ const taskCompleteHook = lifecycleHooks.getTaskCompleteHook(this.task.id);
725
+ if (globalCompleteHooks.length === 0 && !taskCompleteHook) {
726
+ return;
727
+ }
728
+ return await runTimelineMetrics.measureMetric("trigger.dev/execution", "complete", async () => {
729
+ for (const hook of globalCompleteHooks) {
730
+ const [hookError] = await tryCatch(this._tracer.startActiveSpan("onComplete()", async (span) => {
731
+ await hook.fn({
732
+ payload,
733
+ result,
734
+ ctx,
735
+ signal,
736
+ task: this.task.id,
737
+ init: initOutput,
738
+ });
739
+ }, {
740
+ attributes: {
741
+ [SemanticInternalAttributes.STYLE_ICON]: "task-hook-onComplete",
742
+ [SemanticInternalAttributes.COLLAPSED]: true,
743
+ ...this.#lifecycleHookAccessoryAttributes(hook.name),
368
744
  },
369
- error: handleErrorResult.error,
370
- };
745
+ }));
746
+ if (hookError) {
747
+ throw hookError;
748
+ }
371
749
  }
372
- if (handleErrorResult.retry && typeof handleErrorResult.retry === "object") {
373
- const delay = calculateNextRetryDelay(handleErrorResult.retry, execution.attempt.number);
374
- return typeof delay === "undefined"
375
- ? { status: "noop", error: handleErrorResult.error }
376
- : {
377
- status: "retry",
378
- retry: { timestamp: Date.now() + delay, delay },
379
- error: handleErrorResult.error,
380
- };
750
+ if (taskCompleteHook) {
751
+ const [hookError] = await tryCatch(this._tracer.startActiveSpan("onComplete()", async (span) => {
752
+ await taskCompleteHook({
753
+ payload,
754
+ result,
755
+ ctx,
756
+ signal,
757
+ task: this.task.id,
758
+ init: initOutput,
759
+ });
760
+ }, {
761
+ attributes: {
762
+ [SemanticInternalAttributes.STYLE_ICON]: "task-hook-onComplete",
763
+ [SemanticInternalAttributes.COLLAPSED]: true,
764
+ ...this.#lifecycleHookAccessoryAttributes("task"),
765
+ },
766
+ }));
767
+ if (hookError) {
768
+ throw hookError;
769
+ }
381
770
  }
382
- return { status: "noop", error: handleErrorResult.error };
383
- }, {
384
- attributes: {
385
- [SemanticInternalAttributes.STYLE_ICON]: "exclamation-circle",
771
+ });
772
+ }
773
+ #internalErrorResult(execution, code, error) {
774
+ return {
775
+ ok: false,
776
+ id: execution.run.id,
777
+ error: {
778
+ type: "INTERNAL_ERROR",
779
+ code,
780
+ message: error instanceof Error
781
+ ? `${error.name}: ${error.message}`
782
+ : typeof error === "string"
783
+ ? error
784
+ : undefined,
785
+ stackTrace: error instanceof Error ? error.stack : undefined,
386
786
  },
787
+ };
788
+ }
789
+ #lifecycleHookAccessoryAttributes(name) {
790
+ return accessoryAttributes({
791
+ items: [
792
+ {
793
+ text: name ?? "global",
794
+ variant: "normal",
795
+ },
796
+ ],
797
+ style: "codepath",
387
798
  });
388
799
  }
389
800
  }