@shipfox/api-workflows 2.0.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 (661) hide show
  1. package/.turbo/turbo-build.log +2 -0
  2. package/.turbo/turbo-type$colon$emit.log +1 -0
  3. package/.turbo/turbo-type.log +1 -0
  4. package/CHANGELOG.md +311 -0
  5. package/LICENSE +21 -0
  6. package/dist/core/agent-tool-capability-warning.d.ts +7 -0
  7. package/dist/core/agent-tool-capability-warning.d.ts.map +1 -0
  8. package/dist/core/agent-tool-capability-warning.js +149 -0
  9. package/dist/core/agent-tool-capability-warning.js.map +1 -0
  10. package/dist/core/agent-tools.d.ts +51 -0
  11. package/dist/core/agent-tools.d.ts.map +1 -0
  12. package/dist/core/agent-tools.js +296 -0
  13. package/dist/core/agent-tools.js.map +1 -0
  14. package/dist/core/checkout.d.ts +29 -0
  15. package/dist/core/checkout.d.ts.map +1 -0
  16. package/dist/core/checkout.js +42 -0
  17. package/dist/core/checkout.js.map +1 -0
  18. package/dist/core/condition-trace.d.ts +13 -0
  19. package/dist/core/condition-trace.d.ts.map +1 -0
  20. package/dist/core/condition-trace.js +51 -0
  21. package/dist/core/condition-trace.js.map +1 -0
  22. package/dist/core/entities/index.d.ts +5 -0
  23. package/dist/core/entities/index.d.ts.map +1 -0
  24. package/dist/core/entities/index.js +3 -0
  25. package/dist/core/entities/index.js.map +1 -0
  26. package/dist/core/entities/job-execution.d.ts +30 -0
  27. package/dist/core/entities/job-execution.d.ts.map +1 -0
  28. package/dist/core/entities/job-execution.js +3 -0
  29. package/dist/core/entities/job-execution.js.map +1 -0
  30. package/dist/core/entities/job-listener-event.d.ts +15 -0
  31. package/dist/core/entities/job-listener-event.d.ts.map +1 -0
  32. package/dist/core/entities/job-listener-event.js +3 -0
  33. package/dist/core/entities/job-listener-event.js.map +1 -0
  34. package/dist/core/entities/job.d.ts +54 -0
  35. package/dist/core/entities/job.d.ts.map +1 -0
  36. package/dist/core/entities/job.js +29 -0
  37. package/dist/core/entities/job.js.map +1 -0
  38. package/dist/core/entities/step.d.ts +86 -0
  39. package/dist/core/entities/step.d.ts.map +1 -0
  40. package/dist/core/entities/step.js +12 -0
  41. package/dist/core/entities/step.js.map +1 -0
  42. package/dist/core/entities/workflow-run-attempt.d.ts +20 -0
  43. package/dist/core/entities/workflow-run-attempt.d.ts.map +1 -0
  44. package/dist/core/entities/workflow-run-attempt.js +3 -0
  45. package/dist/core/entities/workflow-run-attempt.js.map +1 -0
  46. package/dist/core/entities/workflow-run.d.ts +66 -0
  47. package/dist/core/entities/workflow-run.d.ts.map +1 -0
  48. package/dist/core/entities/workflow-run.js +10 -0
  49. package/dist/core/entities/workflow-run.js.map +1 -0
  50. package/dist/core/errors.d.ts +85 -0
  51. package/dist/core/errors.d.ts.map +1 -0
  52. package/dist/core/errors.js +134 -0
  53. package/dist/core/errors.js.map +1 -0
  54. package/dist/core/index.d.ts +14 -0
  55. package/dist/core/index.d.ts.map +1 -0
  56. package/dist/core/index.js +9 -0
  57. package/dist/core/index.js.map +1 -0
  58. package/dist/core/job-execution-outcome.d.ts +29 -0
  59. package/dist/core/job-execution-outcome.d.ts.map +1 -0
  60. package/dist/core/job-execution-outcome.js +31 -0
  61. package/dist/core/job-execution-outcome.js.map +1 -0
  62. package/dist/core/job-execution.d.ts +37 -0
  63. package/dist/core/job-execution.d.ts.map +1 -0
  64. package/dist/core/job-execution.js +425 -0
  65. package/dist/core/job-execution.js.map +1 -0
  66. package/dist/core/job-transition/decide-job-activation.d.ts +29 -0
  67. package/dist/core/job-transition/decide-job-activation.d.ts.map +1 -0
  68. package/dist/core/job-transition/decide-job-activation.js +51 -0
  69. package/dist/core/job-transition/decide-job-activation.js.map +1 -0
  70. package/dist/core/job-transition/derive-job-execution-outputs.d.ts +18 -0
  71. package/dist/core/job-transition/derive-job-execution-outputs.d.ts.map +1 -0
  72. package/dist/core/job-transition/derive-job-execution-outputs.js +23 -0
  73. package/dist/core/job-transition/derive-job-execution-outputs.js.map +1 -0
  74. package/dist/core/job-transition/derive-job-success.d.ts +16 -0
  75. package/dist/core/job-transition/derive-job-success.d.ts.map +1 -0
  76. package/dist/core/job-transition/derive-job-success.js +47 -0
  77. package/dist/core/job-transition/derive-job-success.js.map +1 -0
  78. package/dist/core/job-transition/index.d.ts +5 -0
  79. package/dist/core/job-transition/index.d.ts.map +1 -0
  80. package/dist/core/job-transition/index.js +6 -0
  81. package/dist/core/job-transition/index.js.map +1 -0
  82. package/dist/core/job-transition/runtime-completion-status-for-job.d.ts +4 -0
  83. package/dist/core/job-transition/runtime-completion-status-for-job.d.ts.map +1 -0
  84. package/dist/core/job-transition/runtime-completion-status-for-job.js +8 -0
  85. package/dist/core/job-transition/runtime-completion-status-for-job.js.map +1 -0
  86. package/dist/core/listener-execution-materialization.d.ts +30 -0
  87. package/dist/core/listener-execution-materialization.d.ts.map +1 -0
  88. package/dist/core/listener-execution-materialization.js +87 -0
  89. package/dist/core/listener-execution-materialization.js.map +1 -0
  90. package/dist/core/run-workflow.d.ts +11 -0
  91. package/dist/core/run-workflow.d.ts.map +1 -0
  92. package/dist/core/run-workflow.js +28 -0
  93. package/dist/core/run-workflow.js.map +1 -0
  94. package/dist/core/source-control.d.ts +5 -0
  95. package/dist/core/source-control.d.ts.map +1 -0
  96. package/dist/core/source-control.js +19 -0
  97. package/dist/core/source-control.js.map +1 -0
  98. package/dist/core/step-config/agent.d.ts +49 -0
  99. package/dist/core/step-config/agent.d.ts.map +1 -0
  100. package/dist/core/step-config/agent.js +337 -0
  101. package/dist/core/step-config/agent.js.map +1 -0
  102. package/dist/core/step-config/assemble-run-context.d.ts +94 -0
  103. package/dist/core/step-config/assemble-run-context.d.ts.map +1 -0
  104. package/dist/core/step-config/assemble-run-context.js +393 -0
  105. package/dist/core/step-config/assemble-run-context.js.map +1 -0
  106. package/dist/core/step-config/complete-step-dispatch-config.d.ts +13 -0
  107. package/dist/core/step-config/complete-step-dispatch-config.d.ts.map +1 -0
  108. package/dist/core/step-config/complete-step-dispatch-config.js +38 -0
  109. package/dist/core/step-config/complete-step-dispatch-config.js.map +1 -0
  110. package/dist/core/step-config/fields.d.ts +38 -0
  111. package/dist/core/step-config/fields.d.ts.map +1 -0
  112. package/dist/core/step-config/fields.js +72 -0
  113. package/dist/core/step-config/fields.js.map +1 -0
  114. package/dist/core/step-config/index.d.ts +8 -0
  115. package/dist/core/step-config/index.d.ts.map +1 -0
  116. package/dist/core/step-config/index.js +7 -0
  117. package/dist/core/step-config/index.js.map +1 -0
  118. package/dist/core/step-config/materialize-job-execution-steps.d.ts +35 -0
  119. package/dist/core/step-config/materialize-job-execution-steps.d.ts.map +1 -0
  120. package/dist/core/step-config/materialize-job-execution-steps.js +92 -0
  121. package/dist/core/step-config/materialize-job-execution-steps.js.map +1 -0
  122. package/dist/core/step-config/materialize-workflow-model.d.ts +42 -0
  123. package/dist/core/step-config/materialize-workflow-model.d.ts.map +1 -0
  124. package/dist/core/step-config/materialize-workflow-model.js +96 -0
  125. package/dist/core/step-config/materialize-workflow-model.js.map +1 -0
  126. package/dist/core/step-config/resolve-job-execution-name.d.ts +18 -0
  127. package/dist/core/step-config/resolve-job-execution-name.d.ts.map +1 -0
  128. package/dist/core/step-config/resolve-job-execution-name.js +36 -0
  129. package/dist/core/step-config/resolve-job-execution-name.js.map +1 -0
  130. package/dist/core/step-config/resolve-step-config.d.ts +33 -0
  131. package/dist/core/step-config/resolve-step-config.d.ts.map +1 -0
  132. package/dist/core/step-config/resolve-step-config.js +164 -0
  133. package/dist/core/step-config/resolve-step-config.js.map +1 -0
  134. package/dist/core/step-config/run.d.ts +39 -0
  135. package/dist/core/step-config/run.d.ts.map +1 -0
  136. package/dist/core/step-config/run.js +360 -0
  137. package/dist/core/step-config/run.js.map +1 -0
  138. package/dist/core/step-config/workflow-evaluation-context.d.ts +6 -0
  139. package/dist/core/step-config/workflow-evaluation-context.d.ts.map +1 -0
  140. package/dist/core/step-config/workflow-evaluation-context.js +3 -0
  141. package/dist/core/step-config/workflow-evaluation-context.js.map +1 -0
  142. package/dist/core/step-transition/apply-step-transition.d.ts +26 -0
  143. package/dist/core/step-transition/apply-step-transition.d.ts.map +1 -0
  144. package/dist/core/step-transition/apply-step-transition.js +141 -0
  145. package/dist/core/step-transition/apply-step-transition.js.map +1 -0
  146. package/dist/core/step-transition/decide-step-transition.d.ts +71 -0
  147. package/dist/core/step-transition/decide-step-transition.d.ts.map +1 -0
  148. package/dist/core/step-transition/decide-step-transition.js +110 -0
  149. package/dist/core/step-transition/decide-step-transition.js.map +1 -0
  150. package/dist/core/step-transition/evaluate-gate.d.ts +28 -0
  151. package/dist/core/step-transition/evaluate-gate.d.ts.map +1 -0
  152. package/dist/core/step-transition/evaluate-gate.js +159 -0
  153. package/dist/core/step-transition/evaluate-gate.js.map +1 -0
  154. package/dist/core/step-transition/read-step-outputs.d.ts +3 -0
  155. package/dist/core/step-transition/read-step-outputs.d.ts.map +1 -0
  156. package/dist/core/step-transition/read-step-outputs.js +24 -0
  157. package/dist/core/step-transition/read-step-outputs.js.map +1 -0
  158. package/dist/core/workflow-run-creation.d.ts +43 -0
  159. package/dist/core/workflow-run-creation.d.ts.map +1 -0
  160. package/dist/core/workflow-run-creation.js +80 -0
  161. package/dist/core/workflow-run-creation.js.map +1 -0
  162. package/dist/core/workflow-scheduling/index.d.ts +5 -0
  163. package/dist/core/workflow-scheduling/index.d.ts.map +1 -0
  164. package/dist/core/workflow-scheduling/index.js +4 -0
  165. package/dist/core/workflow-scheduling/index.js.map +1 -0
  166. package/dist/core/workflow-scheduling/run-progress.d.ts +20 -0
  167. package/dist/core/workflow-scheduling/run-progress.d.ts.map +1 -0
  168. package/dist/core/workflow-scheduling/run-progress.js +40 -0
  169. package/dist/core/workflow-scheduling/run-progress.js.map +1 -0
  170. package/dist/core/workflow-scheduling/runtime-dag.d.ts +10 -0
  171. package/dist/core/workflow-scheduling/runtime-dag.d.ts.map +1 -0
  172. package/dist/core/workflow-scheduling/runtime-dag.js +3 -0
  173. package/dist/core/workflow-scheduling/runtime-dag.js.map +1 -0
  174. package/dist/core/workflow-scheduling/runtime-scheduling-command.d.ts +16 -0
  175. package/dist/core/workflow-scheduling/runtime-scheduling-command.d.ts.map +1 -0
  176. package/dist/core/workflow-scheduling/runtime-scheduling-command.js +3 -0
  177. package/dist/core/workflow-scheduling/runtime-scheduling-command.js.map +1 -0
  178. package/dist/core/workflow-scheduling/schedule-runtime-dag.d.ts +9 -0
  179. package/dist/core/workflow-scheduling/schedule-runtime-dag.d.ts.map +1 -0
  180. package/dist/core/workflow-scheduling/schedule-runtime-dag.js +72 -0
  181. package/dist/core/workflow-scheduling/schedule-runtime-dag.js.map +1 -0
  182. package/dist/db/db.d.ts +4959 -0
  183. package/dist/db/db.d.ts.map +1 -0
  184. package/dist/db/db.js +37 -0
  185. package/dist/db/db.js.map +1 -0
  186. package/dist/db/index.d.ts +9 -0
  187. package/dist/db/index.d.ts.map +1 -0
  188. package/dist/db/index.js +10 -0
  189. package/dist/db/index.js.map +1 -0
  190. package/dist/db/job-listener-events.d.ts +18 -0
  191. package/dist/db/job-listener-events.d.ts.map +1 -0
  192. package/dist/db/job-listener-events.js +59 -0
  193. package/dist/db/job-listener-events.js.map +1 -0
  194. package/dist/db/job-listeners.d.ts +55 -0
  195. package/dist/db/job-listeners.d.ts.map +1 -0
  196. package/dist/db/job-listeners.js +358 -0
  197. package/dist/db/job-listeners.js.map +1 -0
  198. package/dist/db/outbox-writes.d.ts +12 -0
  199. package/dist/db/outbox-writes.d.ts.map +1 -0
  200. package/dist/db/outbox-writes.js +20 -0
  201. package/dist/db/outbox-writes.js.map +1 -0
  202. package/dist/db/runner-lease-table.d.ts +469 -0
  203. package/dist/db/runner-lease-table.d.ts.map +1 -0
  204. package/dist/db/runner-lease-table.js +42 -0
  205. package/dist/db/runner-lease-table.js.map +1 -0
  206. package/dist/db/schema/common.d.ts +2 -0
  207. package/dist/db/schema/common.d.ts.map +1 -0
  208. package/dist/db/schema/common.js +4 -0
  209. package/dist/db/schema/common.js.map +1 -0
  210. package/dist/db/schema/job-executions.d.ts +311 -0
  211. package/dist/db/schema/job-executions.d.ts.map +1 -0
  212. package/dist/db/schema/job-executions.js +76 -0
  213. package/dist/db/schema/job-executions.js.map +1 -0
  214. package/dist/db/schema/job-listener-events.d.ts +200 -0
  215. package/dist/db/schema/job-listener-events.d.ts.map +1 -0
  216. package/dist/db/schema/job-listener-events.js +50 -0
  217. package/dist/db/schema/job-listener-events.js.map +1 -0
  218. package/dist/db/schema/jobs.d.ts +542 -0
  219. package/dist/db/schema/jobs.d.ts.map +1 -0
  220. package/dist/db/schema/jobs.js +121 -0
  221. package/dist/db/schema/jobs.js.map +1 -0
  222. package/dist/db/schema/outbox.d.ts +195 -0
  223. package/dist/db/schema/outbox.d.ts.map +1 -0
  224. package/dist/db/schema/outbox.js +5 -0
  225. package/dist/db/schema/outbox.js.map +1 -0
  226. package/dist/db/schema/step-attempts.d.ts +330 -0
  227. package/dist/db/schema/step-attempts.d.ts.map +1 -0
  228. package/dist/db/schema/step-attempts.js +80 -0
  229. package/dist/db/schema/step-attempts.js.map +1 -0
  230. package/dist/db/schema/steps.d.ts +352 -0
  231. package/dist/db/schema/steps.d.ts.map +1 -0
  232. package/dist/db/schema/steps.js +80 -0
  233. package/dist/db/schema/steps.js.map +1 -0
  234. package/dist/db/schema/workflow-run-attempts.d.ts +239 -0
  235. package/dist/db/schema/workflow-run-attempts.d.ts.map +1 -0
  236. package/dist/db/schema/workflow-run-attempts.js +53 -0
  237. package/dist/db/schema/workflow-run-attempts.js.map +1 -0
  238. package/dist/db/schema/workflow-runs.d.ts +360 -0
  239. package/dist/db/schema/workflow-runs.d.ts.map +1 -0
  240. package/dist/db/schema/workflow-runs.js +85 -0
  241. package/dist/db/schema/workflow-runs.js.map +1 -0
  242. package/dist/db/workflow-runs/job-executions.d.ts +49 -0
  243. package/dist/db/workflow-runs/job-executions.d.ts.map +1 -0
  244. package/dist/db/workflow-runs/job-executions.js +271 -0
  245. package/dist/db/workflow-runs/job-executions.js.map +1 -0
  246. package/dist/db/workflow-runs/jobs.d.ts +60 -0
  247. package/dist/db/workflow-runs/jobs.d.ts.map +1 -0
  248. package/dist/db/workflow-runs/jobs.js +288 -0
  249. package/dist/db/workflow-runs/jobs.js.map +1 -0
  250. package/dist/db/workflow-runs/outbox.d.ts +20 -0
  251. package/dist/db/workflow-runs/outbox.d.ts.map +1 -0
  252. package/dist/db/workflow-runs/outbox.js +68 -0
  253. package/dist/db/workflow-runs/outbox.js.map +1 -0
  254. package/dist/db/workflow-runs/queries.d.ts +71 -0
  255. package/dist/db/workflow-runs/queries.d.ts.map +1 -0
  256. package/dist/db/workflow-runs/queries.js +253 -0
  257. package/dist/db/workflow-runs/queries.js.map +1 -0
  258. package/dist/db/workflow-runs/run-create.d.ts +32 -0
  259. package/dist/db/workflow-runs/run-create.d.ts.map +1 -0
  260. package/dist/db/workflow-runs/run-create.js +288 -0
  261. package/dist/db/workflow-runs/run-create.js.map +1 -0
  262. package/dist/db/workflow-runs/run-graph.d.ts +27 -0
  263. package/dist/db/workflow-runs/run-graph.d.ts.map +1 -0
  264. package/dist/db/workflow-runs/run-graph.js +63 -0
  265. package/dist/db/workflow-runs/run-graph.js.map +1 -0
  266. package/dist/db/workflow-runs/run-rerun.d.ts +8 -0
  267. package/dist/db/workflow-runs/run-rerun.d.ts.map +1 -0
  268. package/dist/db/workflow-runs/run-rerun.js +207 -0
  269. package/dist/db/workflow-runs/run-rerun.js.map +1 -0
  270. package/dist/db/workflow-runs/run-status.d.ts +24 -0
  271. package/dist/db/workflow-runs/run-status.d.ts.map +1 -0
  272. package/dist/db/workflow-runs/run-status.js +249 -0
  273. package/dist/db/workflow-runs/run-status.js.map +1 -0
  274. package/dist/db/workflow-runs/runs.d.ts +7 -0
  275. package/dist/db/workflow-runs/runs.d.ts.map +1 -0
  276. package/dist/db/workflow-runs/runs.js +5 -0
  277. package/dist/db/workflow-runs/runs.js.map +1 -0
  278. package/dist/db/workflow-runs/shared.d.ts +24 -0
  279. package/dist/db/workflow-runs/shared.d.ts.map +1 -0
  280. package/dist/db/workflow-runs/shared.js +50 -0
  281. package/dist/db/workflow-runs/shared.js.map +1 -0
  282. package/dist/db/workflow-runs/steps.d.ts +83 -0
  283. package/dist/db/workflow-runs/steps.d.ts.map +1 -0
  284. package/dist/db/workflow-runs/steps.js +246 -0
  285. package/dist/db/workflow-runs/steps.js.map +1 -0
  286. package/dist/db/workflow-runs.d.ts +12 -0
  287. package/dist/db/workflow-runs.d.ts.map +1 -0
  288. package/dist/db/workflow-runs.js +8 -0
  289. package/dist/db/workflow-runs.js.map +1 -0
  290. package/dist/index.d.ts +10 -0
  291. package/dist/index.d.ts.map +1 -0
  292. package/dist/index.js +54 -0
  293. package/dist/index.js.map +1 -0
  294. package/dist/metrics/index.d.ts +2 -0
  295. package/dist/metrics/index.d.ts.map +1 -0
  296. package/dist/metrics/index.js +3 -0
  297. package/dist/metrics/index.js.map +1 -0
  298. package/dist/metrics/instance.d.ts +20 -0
  299. package/dist/metrics/instance.d.ts.map +1 -0
  300. package/dist/metrics/instance.js +127 -0
  301. package/dist/metrics/instance.js.map +1 -0
  302. package/dist/metrics/service.d.ts +2 -0
  303. package/dist/metrics/service.d.ts.map +1 -0
  304. package/dist/metrics/service.js +30 -0
  305. package/dist/metrics/service.js.map +1 -0
  306. package/dist/presentation/dto/checkout-token.d.ts +6 -0
  307. package/dist/presentation/dto/checkout-token.d.ts.map +1 -0
  308. package/dist/presentation/dto/checkout-token.js +74 -0
  309. package/dist/presentation/dto/checkout-token.js.map +1 -0
  310. package/dist/presentation/dto/index.d.ts +4 -0
  311. package/dist/presentation/dto/index.d.ts.map +1 -0
  312. package/dist/presentation/dto/index.js +5 -0
  313. package/dist/presentation/dto/index.js.map +1 -0
  314. package/dist/presentation/dto/job.d.ts +6 -0
  315. package/dist/presentation/dto/job.d.ts.map +1 -0
  316. package/dist/presentation/dto/job.js +59 -0
  317. package/dist/presentation/dto/job.js.map +1 -0
  318. package/dist/presentation/dto/step.d.ts +6 -0
  319. package/dist/presentation/dto/step.d.ts.map +1 -0
  320. package/dist/presentation/dto/step.js +162 -0
  321. package/dist/presentation/dto/step.js.map +1 -0
  322. package/dist/presentation/dto/workflow-run.d.ts +6 -0
  323. package/dist/presentation/dto/workflow-run.d.ts.map +1 -0
  324. package/dist/presentation/dto/workflow-run.js +35 -0
  325. package/dist/presentation/dto/workflow-run.js.map +1 -0
  326. package/dist/presentation/index.d.ts +3 -0
  327. package/dist/presentation/index.d.ts.map +1 -0
  328. package/dist/presentation/index.js +4 -0
  329. package/dist/presentation/index.js.map +1 -0
  330. package/dist/presentation/routes/agent-runtime-config.d.ts +2 -0
  331. package/dist/presentation/routes/agent-runtime-config.d.ts.map +1 -0
  332. package/dist/presentation/routes/agent-runtime-config.js +71 -0
  333. package/dist/presentation/routes/agent-runtime-config.js.map +1 -0
  334. package/dist/presentation/routes/cancel-run.d.ts +2 -0
  335. package/dist/presentation/routes/cancel-run.d.ts.map +1 -0
  336. package/dist/presentation/routes/cancel-run.js +46 -0
  337. package/dist/presentation/routes/cancel-run.js.map +1 -0
  338. package/dist/presentation/routes/checkout-token.d.ts +2 -0
  339. package/dist/presentation/routes/checkout-token.d.ts.map +1 -0
  340. package/dist/presentation/routes/checkout-token.js +64 -0
  341. package/dist/presentation/routes/checkout-token.js.map +1 -0
  342. package/dist/presentation/routes/get-run-aggregates.d.ts +2 -0
  343. package/dist/presentation/routes/get-run-aggregates.d.ts.map +1 -0
  344. package/dist/presentation/routes/get-run-aggregates.js +60 -0
  345. package/dist/presentation/routes/get-run-aggregates.js.map +1 -0
  346. package/dist/presentation/routes/get-run.d.ts +2 -0
  347. package/dist/presentation/routes/get-run.d.ts.map +1 -0
  348. package/dist/presentation/routes/get-run.js +60 -0
  349. package/dist/presentation/routes/get-run.js.map +1 -0
  350. package/dist/presentation/routes/get-step-secrets.d.ts +2 -0
  351. package/dist/presentation/routes/get-step-secrets.d.ts.map +1 -0
  352. package/dist/presentation/routes/get-step-secrets.js +115 -0
  353. package/dist/presentation/routes/get-step-secrets.js.map +1 -0
  354. package/dist/presentation/routes/index.d.ts +4 -0
  355. package/dist/presentation/routes/index.d.ts.map +1 -0
  356. package/dist/presentation/routes/index.js +41 -0
  357. package/dist/presentation/routes/index.js.map +1 -0
  358. package/dist/presentation/routes/leased-step.d.ts +14 -0
  359. package/dist/presentation/routes/leased-step.d.ts.map +1 -0
  360. package/dist/presentation/routes/leased-step.js +50 -0
  361. package/dist/presentation/routes/leased-step.js.map +1 -0
  362. package/dist/presentation/routes/list-run-attempts.d.ts +2 -0
  363. package/dist/presentation/routes/list-run-attempts.d.ts.map +1 -0
  364. package/dist/presentation/routes/list-run-attempts.js +35 -0
  365. package/dist/presentation/routes/list-run-attempts.js.map +1 -0
  366. package/dist/presentation/routes/list-runs.d.ts +2 -0
  367. package/dist/presentation/routes/list-runs.d.ts.map +1 -0
  368. package/dist/presentation/routes/list-runs.js +70 -0
  369. package/dist/presentation/routes/list-runs.js.map +1 -0
  370. package/dist/presentation/routes/next-step.d.ts +2 -0
  371. package/dist/presentation/routes/next-step.d.ts.map +1 -0
  372. package/dist/presentation/routes/next-step.js +65 -0
  373. package/dist/presentation/routes/next-step.js.map +1 -0
  374. package/dist/presentation/routes/report-step.d.ts +2 -0
  375. package/dist/presentation/routes/report-step.d.ts.map +1 -0
  376. package/dist/presentation/routes/report-step.js +73 -0
  377. package/dist/presentation/routes/report-step.js.map +1 -0
  378. package/dist/presentation/routes/require-accessible-run.d.ts +7 -0
  379. package/dist/presentation/routes/require-accessible-run.d.ts.map +1 -0
  380. package/dist/presentation/routes/require-accessible-run.js +25 -0
  381. package/dist/presentation/routes/require-accessible-run.js.map +1 -0
  382. package/dist/presentation/routes/rerun-run.d.ts +2 -0
  383. package/dist/presentation/routes/rerun-run.d.ts.map +1 -0
  384. package/dist/presentation/routes/rerun-run.js +56 -0
  385. package/dist/presentation/routes/rerun-run.js.map +1 -0
  386. package/dist/presentation/subscribers/index.d.ts +8 -0
  387. package/dist/presentation/subscribers/index.d.ts.map +1 -0
  388. package/dist/presentation/subscribers/index.js +9 -0
  389. package/dist/presentation/subscribers/index.js.map +1 -0
  390. package/dist/presentation/subscribers/on-job-event-delivered.d.ts +3 -0
  391. package/dist/presentation/subscribers/on-job-event-delivered.d.ts.map +1 -0
  392. package/dist/presentation/subscribers/on-job-event-delivered.js +24 -0
  393. package/dist/presentation/subscribers/on-job-event-delivered.js.map +1 -0
  394. package/dist/presentation/subscribers/on-job-steps-settled.d.ts +3 -0
  395. package/dist/presentation/subscribers/on-job-steps-settled.d.ts.map +1 -0
  396. package/dist/presentation/subscribers/on-job-steps-settled.js +36 -0
  397. package/dist/presentation/subscribers/on-job-steps-settled.js.map +1 -0
  398. package/dist/presentation/subscribers/on-runner-job-claimed.d.ts +3 -0
  399. package/dist/presentation/subscribers/on-runner-job-claimed.d.ts.map +1 -0
  400. package/dist/presentation/subscribers/on-runner-job-claimed.js +20 -0
  401. package/dist/presentation/subscribers/on-runner-job-claimed.js.map +1 -0
  402. package/dist/presentation/subscribers/on-runner-job-lease-expired.d.ts +3 -0
  403. package/dist/presentation/subscribers/on-runner-job-lease-expired.d.ts.map +1 -0
  404. package/dist/presentation/subscribers/on-runner-job-lease-expired.js +35 -0
  405. package/dist/presentation/subscribers/on-runner-job-lease-expired.js.map +1 -0
  406. package/dist/presentation/subscribers/on-runner-job-queued.d.ts +3 -0
  407. package/dist/presentation/subscribers/on-runner-job-queued.d.ts.map +1 -0
  408. package/dist/presentation/subscribers/on-runner-job-queued.js +20 -0
  409. package/dist/presentation/subscribers/on-runner-job-queued.js.map +1 -0
  410. package/dist/presentation/subscribers/on-workflow-run-attempt-created.d.ts +3 -0
  411. package/dist/presentation/subscribers/on-workflow-run-attempt-created.d.ts.map +1 -0
  412. package/dist/presentation/subscribers/on-workflow-run-attempt-created.js +35 -0
  413. package/dist/presentation/subscribers/on-workflow-run-attempt-created.js.map +1 -0
  414. package/dist/presentation/subscribers/on-workflow-run-cancelled.d.ts +3 -0
  415. package/dist/presentation/subscribers/on-workflow-run-cancelled.d.ts.map +1 -0
  416. package/dist/presentation/subscribers/on-workflow-run-cancelled.js +25 -0
  417. package/dist/presentation/subscribers/on-workflow-run-cancelled.js.map +1 -0
  418. package/dist/temporal/activities/index.d.ts +23 -0
  419. package/dist/temporal/activities/index.d.ts.map +1 -0
  420. package/dist/temporal/activities/index.js +26 -0
  421. package/dist/temporal/activities/index.js.map +1 -0
  422. package/dist/temporal/activities/orchestration-activities.d.ts +130 -0
  423. package/dist/temporal/activities/orchestration-activities.d.ts.map +1 -0
  424. package/dist/temporal/activities/orchestration-activities.js +188 -0
  425. package/dist/temporal/activities/orchestration-activities.js.map +1 -0
  426. package/dist/temporal/constants.d.ts +7 -0
  427. package/dist/temporal/constants.d.ts.map +1 -0
  428. package/dist/temporal/constants.js +8 -0
  429. package/dist/temporal/constants.js.map +1 -0
  430. package/dist/temporal/index.d.ts +3 -0
  431. package/dist/temporal/index.d.ts.map +1 -0
  432. package/dist/temporal/index.js +4 -0
  433. package/dist/temporal/index.js.map +1 -0
  434. package/dist/temporal/workflow-not-found.d.ts +2 -0
  435. package/dist/temporal/workflow-not-found.d.ts.map +1 -0
  436. package/dist/temporal/workflow-not-found.js +10 -0
  437. package/dist/temporal/workflow-not-found.js.map +1 -0
  438. package/dist/temporal/workflows/deadline.d.ts +3 -0
  439. package/dist/temporal/workflows/deadline.d.ts.map +1 -0
  440. package/dist/temporal/workflows/deadline.js +8 -0
  441. package/dist/temporal/workflows/deadline.js.map +1 -0
  442. package/dist/temporal/workflows/index.d.ts +4 -0
  443. package/dist/temporal/workflows/index.d.ts.map +1 -0
  444. package/dist/temporal/workflows/index.js +5 -0
  445. package/dist/temporal/workflows/index.js.map +1 -0
  446. package/dist/temporal/workflows/job-execution-orchestration.d.ts +27 -0
  447. package/dist/temporal/workflows/job-execution-orchestration.d.ts.map +1 -0
  448. package/dist/temporal/workflows/job-execution-orchestration.js +265 -0
  449. package/dist/temporal/workflows/job-execution-orchestration.js.map +1 -0
  450. package/dist/temporal/workflows/job-listener-orchestration.d.ts +40 -0
  451. package/dist/temporal/workflows/job-listener-orchestration.d.ts.map +1 -0
  452. package/dist/temporal/workflows/job-listener-orchestration.js +332 -0
  453. package/dist/temporal/workflows/job-listener-orchestration.js.map +1 -0
  454. package/dist/temporal/workflows/run-orchestration.d.ts +8 -0
  455. package/dist/temporal/workflows/run-orchestration.d.ts.map +1 -0
  456. package/dist/temporal/workflows/run-orchestration.js +243 -0
  457. package/dist/temporal/workflows/run-orchestration.js.map +1 -0
  458. package/dist/temporal/workflows/test-env.d.ts +114 -0
  459. package/dist/temporal/workflows/test-env.d.ts.map +1 -0
  460. package/dist/temporal/workflows/test-env.js +323 -0
  461. package/dist/temporal/workflows/test-env.js.map +1 -0
  462. package/dist/tsconfig.test.tsbuildinfo +1 -0
  463. package/drizzle/0000_initial.sql +211 -0
  464. package/drizzle/0001_agent_tool_materialization.sql +1 -0
  465. package/drizzle/meta/0000_snapshot.json +1613 -0
  466. package/drizzle/meta/_journal.json +20 -0
  467. package/drizzle.config.ts +7 -0
  468. package/package.json +91 -0
  469. package/src/core/README.md +79 -0
  470. package/src/core/agent-tool-capability-warning.test.ts +280 -0
  471. package/src/core/agent-tool-capability-warning.ts +200 -0
  472. package/src/core/agent-tools.ts +422 -0
  473. package/src/core/checkout.test.ts +112 -0
  474. package/src/core/checkout.ts +63 -0
  475. package/src/core/condition-trace.ts +64 -0
  476. package/src/core/entities/index.ts +9 -0
  477. package/src/core/entities/job-execution.ts +32 -0
  478. package/src/core/entities/job-listener-event.ts +15 -0
  479. package/src/core/entities/job.ts +91 -0
  480. package/src/core/entities/step.ts +126 -0
  481. package/src/core/entities/workflow-run-attempt.ts +21 -0
  482. package/src/core/entities/workflow-run.ts +94 -0
  483. package/src/core/errors.test.ts +45 -0
  484. package/src/core/errors.ts +209 -0
  485. package/src/core/index.ts +54 -0
  486. package/src/core/job-execution-outcome.ts +64 -0
  487. package/src/core/job-execution.test.ts +1560 -0
  488. package/src/core/job-execution.ts +581 -0
  489. package/src/core/job-transition/decide-job-activation.test.ts +196 -0
  490. package/src/core/job-transition/decide-job-activation.ts +79 -0
  491. package/src/core/job-transition/derive-job-execution-outputs.ts +41 -0
  492. package/src/core/job-transition/derive-job-success.test.ts +133 -0
  493. package/src/core/job-transition/derive-job-success.ts +67 -0
  494. package/src/core/job-transition/index.ts +11 -0
  495. package/src/core/job-transition/runtime-completion-status-for-job.ts +14 -0
  496. package/src/core/listener-execution-materialization.test.ts +49 -0
  497. package/src/core/listener-execution-materialization.ts +162 -0
  498. package/src/core/run-workflow.test.ts +229 -0
  499. package/src/core/run-workflow.ts +41 -0
  500. package/src/core/source-control.test.ts +17 -0
  501. package/src/core/source-control.ts +22 -0
  502. package/src/core/step-config/agent.ts +459 -0
  503. package/src/core/step-config/assemble-run-context.test.ts +1021 -0
  504. package/src/core/step-config/assemble-run-context.ts +535 -0
  505. package/src/core/step-config/complete-step-dispatch-config.test.ts +354 -0
  506. package/src/core/step-config/complete-step-dispatch-config.ts +40 -0
  507. package/src/core/step-config/fields.ts +111 -0
  508. package/src/core/step-config/index.ts +41 -0
  509. package/src/core/step-config/materialize-job-execution-steps.test.ts +494 -0
  510. package/src/core/step-config/materialize-job-execution-steps.ts +136 -0
  511. package/src/core/step-config/materialize-workflow-model.test.ts +1214 -0
  512. package/src/core/step-config/materialize-workflow-model.ts +140 -0
  513. package/src/core/step-config/resolve-job-execution-name.test.ts +94 -0
  514. package/src/core/step-config/resolve-job-execution-name.ts +51 -0
  515. package/src/core/step-config/resolve-step-config.ts +199 -0
  516. package/src/core/step-config/run.ts +467 -0
  517. package/src/core/step-config/workflow-evaluation-context.ts +6 -0
  518. package/src/core/step-transition/apply-step-transition.ts +163 -0
  519. package/src/core/step-transition/decide-step-transition.test.ts +307 -0
  520. package/src/core/step-transition/decide-step-transition.ts +200 -0
  521. package/src/core/step-transition/evaluate-gate.test.ts +317 -0
  522. package/src/core/step-transition/evaluate-gate.ts +168 -0
  523. package/src/core/step-transition/read-step-outputs.ts +27 -0
  524. package/src/core/workflow-run-creation.test.ts +155 -0
  525. package/src/core/workflow-run-creation.ts +131 -0
  526. package/src/core/workflow-scheduling/index.ts +15 -0
  527. package/src/core/workflow-scheduling/run-progress.test.ts +46 -0
  528. package/src/core/workflow-scheduling/run-progress.ts +68 -0
  529. package/src/core/workflow-scheduling/runtime-dag.ts +10 -0
  530. package/src/core/workflow-scheduling/runtime-scheduling-command.ts +20 -0
  531. package/src/core/workflow-scheduling/schedule-runtime-dag.test.ts +197 -0
  532. package/src/core/workflow-scheduling/schedule-runtime-dag.ts +115 -0
  533. package/src/db/db.ts +40 -0
  534. package/src/db/index.ts +86 -0
  535. package/src/db/job-listener-events.test.ts +113 -0
  536. package/src/db/job-listener-events.ts +73 -0
  537. package/src/db/job-listeners.test.ts +865 -0
  538. package/src/db/job-listeners.ts +564 -0
  539. package/src/db/outbox-writes.ts +40 -0
  540. package/src/db/rerun-listener.test.ts +64 -0
  541. package/src/db/run-timeout.test.ts +102 -0
  542. package/src/db/runner-lease-table.ts +39 -0
  543. package/src/db/schema/common.ts +3 -0
  544. package/src/db/schema/job-executions.ts +85 -0
  545. package/src/db/schema/job-listener-events.ts +58 -0
  546. package/src/db/schema/jobs.ts +136 -0
  547. package/src/db/schema/outbox.ts +4 -0
  548. package/src/db/schema/step-attempts.ts +99 -0
  549. package/src/db/schema/steps.ts +99 -0
  550. package/src/db/schema/workflow-run-attempts.ts +59 -0
  551. package/src/db/schema/workflow-runs.ts +112 -0
  552. package/src/db/workflow-runs/job-executions.test.ts +99 -0
  553. package/src/db/workflow-runs/job-executions.ts +421 -0
  554. package/src/db/workflow-runs/job-status.test.ts +532 -0
  555. package/src/db/workflow-runs/jobs.test.ts +194 -0
  556. package/src/db/workflow-runs/jobs.ts +418 -0
  557. package/src/db/workflow-runs/outbox.ts +109 -0
  558. package/src/db/workflow-runs/queries.test.ts +256 -0
  559. package/src/db/workflow-runs/queries.ts +437 -0
  560. package/src/db/workflow-runs/run-create.test.ts +1281 -0
  561. package/src/db/workflow-runs/run-create.ts +373 -0
  562. package/src/db/workflow-runs/run-graph.ts +95 -0
  563. package/src/db/workflow-runs/run-rerun.test.ts +625 -0
  564. package/src/db/workflow-runs/run-rerun.ts +266 -0
  565. package/src/db/workflow-runs/run-status.test.ts +425 -0
  566. package/src/db/workflow-runs/run-status.ts +391 -0
  567. package/src/db/workflow-runs/runs.ts +17 -0
  568. package/src/db/workflow-runs/shared.ts +84 -0
  569. package/src/db/workflow-runs/steps.test.ts +191 -0
  570. package/src/db/workflow-runs/steps.ts +476 -0
  571. package/src/db/workflow-runs.ts +111 -0
  572. package/src/index.ts +99 -0
  573. package/src/metrics/index.ts +1 -0
  574. package/src/metrics/instance.ts +160 -0
  575. package/src/metrics/service.ts +30 -0
  576. package/src/presentation/dto/checkout-token.test.ts +107 -0
  577. package/src/presentation/dto/checkout-token.ts +85 -0
  578. package/src/presentation/dto/index.ts +3 -0
  579. package/src/presentation/dto/job.test.ts +108 -0
  580. package/src/presentation/dto/job.ts +64 -0
  581. package/src/presentation/dto/step.test.ts +307 -0
  582. package/src/presentation/dto/step.ts +145 -0
  583. package/src/presentation/dto/workflow-run.ts +38 -0
  584. package/src/presentation/index.ts +10 -0
  585. package/src/presentation/routes/agent-runtime-config.test.ts +478 -0
  586. package/src/presentation/routes/agent-runtime-config.ts +81 -0
  587. package/src/presentation/routes/cancel-run.test.ts +156 -0
  588. package/src/presentation/routes/cancel-run.ts +37 -0
  589. package/src/presentation/routes/checkout-token.test.ts +366 -0
  590. package/src/presentation/routes/checkout-token.ts +61 -0
  591. package/src/presentation/routes/get-run-aggregates.test.ts +114 -0
  592. package/src/presentation/routes/get-run-aggregates.ts +69 -0
  593. package/src/presentation/routes/get-run.test.ts +604 -0
  594. package/src/presentation/routes/get-run.ts +66 -0
  595. package/src/presentation/routes/get-step-secrets.test.ts +260 -0
  596. package/src/presentation/routes/get-step-secrets.ts +117 -0
  597. package/src/presentation/routes/index.test.ts +71 -0
  598. package/src/presentation/routes/index.ts +42 -0
  599. package/src/presentation/routes/leased-step.ts +54 -0
  600. package/src/presentation/routes/list-run-attempts.test.ts +163 -0
  601. package/src/presentation/routes/list-run-attempts.ts +27 -0
  602. package/src/presentation/routes/list-runs.test.ts +244 -0
  603. package/src/presentation/routes/list-runs.ts +83 -0
  604. package/src/presentation/routes/next-step.test.ts +366 -0
  605. package/src/presentation/routes/next-step.ts +62 -0
  606. package/src/presentation/routes/report-step.test.ts +374 -0
  607. package/src/presentation/routes/report-step.ts +61 -0
  608. package/src/presentation/routes/require-accessible-run.ts +27 -0
  609. package/src/presentation/routes/rerun-run.test.ts +202 -0
  610. package/src/presentation/routes/rerun-run.ts +48 -0
  611. package/src/presentation/subscribers/index.ts +7 -0
  612. package/src/presentation/subscribers/on-job-event-delivered.test.ts +71 -0
  613. package/src/presentation/subscribers/on-job-event-delivered.ts +30 -0
  614. package/src/presentation/subscribers/on-job-steps-settled.test.ts +75 -0
  615. package/src/presentation/subscribers/on-job-steps-settled.ts +42 -0
  616. package/src/presentation/subscribers/on-runner-job-claimed.test.ts +57 -0
  617. package/src/presentation/subscribers/on-runner-job-claimed.ts +23 -0
  618. package/src/presentation/subscribers/on-runner-job-lease-expired.test.ts +73 -0
  619. package/src/presentation/subscribers/on-runner-job-lease-expired.ts +36 -0
  620. package/src/presentation/subscribers/on-runner-job-queued.test.ts +57 -0
  621. package/src/presentation/subscribers/on-runner-job-queued.ts +23 -0
  622. package/src/presentation/subscribers/on-workflow-run-attempt-created.test.ts +69 -0
  623. package/src/presentation/subscribers/on-workflow-run-attempt-created.ts +40 -0
  624. package/src/presentation/subscribers/on-workflow-run-cancelled.test.ts +59 -0
  625. package/src/presentation/subscribers/on-workflow-run-cancelled.ts +29 -0
  626. package/src/temporal/activities/index.ts +45 -0
  627. package/src/temporal/activities/orchestration-activities.test.ts +115 -0
  628. package/src/temporal/activities/orchestration-activities.ts +305 -0
  629. package/src/temporal/constants.ts +6 -0
  630. package/src/temporal/index.ts +6 -0
  631. package/src/temporal/workflow-not-found.ts +9 -0
  632. package/src/temporal/workflows/deadline.ts +7 -0
  633. package/src/temporal/workflows/index.ts +11 -0
  634. package/src/temporal/workflows/job-execution-orchestration-timeout.test.ts +165 -0
  635. package/src/temporal/workflows/job-execution-orchestration.test.ts +311 -0
  636. package/src/temporal/workflows/job-execution-orchestration.ts +314 -0
  637. package/src/temporal/workflows/job-listener-orchestration-continuation.test.ts +93 -0
  638. package/src/temporal/workflows/job-listener-orchestration.test.ts +406 -0
  639. package/src/temporal/workflows/job-listener-orchestration.ts +490 -0
  640. package/src/temporal/workflows/run-orchestration.test.ts +409 -0
  641. package/src/temporal/workflows/run-orchestration.ts +283 -0
  642. package/src/temporal/workflows/test-env.ts +409 -0
  643. package/test/env.ts +11 -0
  644. package/test/factories/job.ts +83 -0
  645. package/test/factories/project.ts +16 -0
  646. package/test/factories/workflow-model.test.ts +26 -0
  647. package/test/factories/workflow-model.ts +268 -0
  648. package/test/factories/workflow-run.ts +58 -0
  649. package/test/fixtures/active-lease-token.ts +85 -0
  650. package/test/fixtures/job-with-steps.ts +42 -0
  651. package/test/fixtures/lease-token.ts +44 -0
  652. package/test/fixtures/strip-setup-step.ts +23 -0
  653. package/test/globalSetup.ts +54 -0
  654. package/test/helpers/workflow-runs.ts +210 -0
  655. package/test/index.ts +3 -0
  656. package/test/setup.ts +17 -0
  657. package/tsconfig.build.json +9 -0
  658. package/tsconfig.build.tsbuildinfo +1 -0
  659. package/tsconfig.json +3 -0
  660. package/tsconfig.test.json +8 -0
  661. package/vitest.config.ts +12 -0
@@ -0,0 +1,393 @@
1
+ import { analyzeContextRootKeyAccess, extractExactContextRoots } from '@shipfox/expression';
2
+ export function assembleWorkflowRunContext(params) {
3
+ return {
4
+ run: {
5
+ id: params.run.id,
6
+ name: params.run.name,
7
+ definition_id: params.run.definitionId,
8
+ project_id: params.run.projectId,
9
+ workspace_id: params.run.workspaceId,
10
+ created_at: params.run.createdAt
11
+ },
12
+ trigger: {
13
+ source: params.triggerPayload.source,
14
+ event: params.triggerPayload.event
15
+ },
16
+ event: 'data' in params.triggerPayload ? params.triggerPayload.data : null,
17
+ inputs: params.inputs ?? null,
18
+ ...params.vars === undefined ? {} : {
19
+ vars: params.vars
20
+ }
21
+ };
22
+ }
23
+ export function assembleCreationContext(params) {
24
+ return {
25
+ site: 'run-creation',
26
+ values: assembleWorkflowRunContext(params)
27
+ };
28
+ }
29
+ export function assembleExecutionCreationContext(params) {
30
+ const execution = {
31
+ id: `${params.jobId}:${params.sequence}`,
32
+ jobId: params.jobId,
33
+ sequence: params.sequence,
34
+ name: params.executionName,
35
+ runner: null,
36
+ status: params.status,
37
+ statusReason: null,
38
+ triggerEvents: [
39
+ ...params.triggerEvents
40
+ ],
41
+ outputs: null,
42
+ version: 1,
43
+ createdAt: new Date(),
44
+ updatedAt: new Date(),
45
+ queuedAt: null,
46
+ startedAt: null,
47
+ finishedAt: null,
48
+ timedOutAt: null
49
+ };
50
+ const executions = assembleExecutionsContext([
51
+ ...params.priorExecutions,
52
+ execution
53
+ ]);
54
+ const executionValues = executions.executions;
55
+ return {
56
+ site: 'execution-creation',
57
+ values: {
58
+ ...assembleWorkflowRunContext(params),
59
+ ...executions,
60
+ execution: executionValues.at(-1)
61
+ }
62
+ };
63
+ }
64
+ /**
65
+ * Keeps job-success predicate values aligned with the registry's `executions`
66
+ * type environment.
67
+ */ export function assembleExecutionsContext(executions) {
68
+ return {
69
+ executions: executions.map((execution, index)=>assembleExecutionContext(execution, index))
70
+ };
71
+ }
72
+ function assembleExecutionContext(execution, index) {
73
+ return {
74
+ index,
75
+ name: execution.name,
76
+ status: execution.status,
77
+ started_at: execution.startedAt,
78
+ finished_at: execution.finishedAt,
79
+ events: execution.triggerEvents,
80
+ outputs: execution.outputs ?? {}
81
+ };
82
+ }
83
+ export function assembleJobsContext(jobs) {
84
+ return {
85
+ jobs: Object.fromEntries(jobs.map((input)=>[
86
+ input.job.key,
87
+ assembleJobContext(input)
88
+ ]))
89
+ };
90
+ }
91
+ export function assembleJobActivationContext(params) {
92
+ return {
93
+ site: 'job-activation',
94
+ values: {
95
+ ...assembleWorkflowRunContext(params),
96
+ ...assembleJobsContext(params.jobs),
97
+ needs: params.jobs.map(assembleJobContext)
98
+ }
99
+ };
100
+ }
101
+ export function planListenerFilterSnapshots(params) {
102
+ const roots = new Set();
103
+ const jobKeys = new Set();
104
+ const on = params.on.map((matcher)=>planMatcherFilterSnapshot(matcher, roots, jobKeys));
105
+ const until = (params.until ?? []).map((matcher)=>planMatcherFilterSnapshot(matcher, roots, jobKeys));
106
+ return {
107
+ on,
108
+ until,
109
+ roots,
110
+ jobKeys
111
+ };
112
+ }
113
+ function planMatcherFilterSnapshot(matcher, allRoots, allJobKeys) {
114
+ if (matcher.filter === undefined) return {
115
+ matcher,
116
+ roots: new Set(),
117
+ jobKeys: new Set()
118
+ };
119
+ let roots;
120
+ try {
121
+ roots = extractExactContextRoots(matcher.filter).filter((root)=>root !== 'event').filter(isListenerSnapshotRoot);
122
+ } catch {
123
+ return {
124
+ matcher,
125
+ roots: new Set(),
126
+ jobKeys: new Set()
127
+ };
128
+ }
129
+ if (roots.length === 0) return {
130
+ matcher,
131
+ roots: new Set(),
132
+ jobKeys: new Set()
133
+ };
134
+ const jobKeys = roots.includes('jobs') && matcher.filter !== undefined ? new Set(analyzeContextRootKeyAccess(matcher.filter, [
135
+ 'jobs'
136
+ ]).references.map((reference)=>reference.key)) : new Set();
137
+ for (const root of roots)allRoots.add(root);
138
+ for (const key of jobKeys)allJobKeys.add(key);
139
+ return {
140
+ matcher,
141
+ roots: new Set(roots),
142
+ jobKeys
143
+ };
144
+ }
145
+ function isListenerSnapshotRoot(root) {
146
+ return root === 'run' || root === 'trigger' || root === 'inputs' || root === 'job' || root === 'jobs';
147
+ }
148
+ export function assembleListenerSnapshotContext(params) {
149
+ const context = {};
150
+ if (params.plan.roots.has('run') || params.plan.roots.has('trigger')) {
151
+ const runContext = assembleWorkflowRunContext({
152
+ run: params.run,
153
+ triggerPayload: params.triggerPayload,
154
+ inputs: params.inputs
155
+ });
156
+ if (params.plan.roots.has('run')) context.run = runContext.run;
157
+ if (params.plan.roots.has('trigger')) context.trigger = runContext.trigger;
158
+ }
159
+ if (params.plan.roots.has('inputs')) {
160
+ context.inputs = params.inputs ?? null;
161
+ }
162
+ if (params.plan.roots.has('job')) {
163
+ context.job = {
164
+ key: params.job.key
165
+ };
166
+ }
167
+ if (params.plan.roots.has('jobs')) {
168
+ context.jobs = requestedJobsContext(params.dependencyJobs, params.plan.jobKeys);
169
+ }
170
+ return context;
171
+ }
172
+ function requestedJobsContext(dependencyJobs, jobKeys) {
173
+ if (jobKeys.size === 0) return assembleJobsContext(dependencyJobs).jobs;
174
+ const filtered = dependencyJobs.filter(({ job })=>jobKeys.has(job.key));
175
+ return assembleJobsContext(filtered).jobs;
176
+ }
177
+ export function applyListenerFilterSnapshots(plans, context) {
178
+ return plans.map((plan)=>{
179
+ const filterSnapshot = filterSnapshotForPlan(plan, context);
180
+ if (filterSnapshot === undefined) return plan.matcher;
181
+ return {
182
+ ...plan.matcher,
183
+ filter_snapshot: filterSnapshot
184
+ };
185
+ });
186
+ }
187
+ function filterSnapshotForPlan(plan, context) {
188
+ const snapshot = {};
189
+ for (const root of plan.roots){
190
+ if (root === 'jobs') {
191
+ const jobsSnapshot = jobsSnapshotForPlan(plan, context);
192
+ if (jobsSnapshot !== undefined) snapshot.jobs = jobsSnapshot;
193
+ continue;
194
+ }
195
+ if (root in context) snapshot[root] = context[root];
196
+ }
197
+ return Object.keys(snapshot).length === 0 ? undefined : snapshot;
198
+ }
199
+ function jobsSnapshotForPlan(plan, context) {
200
+ if (typeof context.jobs !== 'object' || context.jobs === null) {
201
+ return undefined;
202
+ }
203
+ const jobsContext = context.jobs;
204
+ if (plan.jobKeys.size === 0) return {
205
+ ...jobsContext
206
+ };
207
+ const snapshot = Object.fromEntries([
208
+ ...plan.jobKeys
209
+ ].flatMap((key)=>Object.hasOwn(jobsContext, key) ? [
210
+ [
211
+ key,
212
+ jobsContext[key]
213
+ ]
214
+ ] : []));
215
+ return snapshot;
216
+ }
217
+ function assembleJobContext({ job, executions }) {
218
+ return {
219
+ key: job.key,
220
+ status: job.status,
221
+ outputs: job.outputs ?? {},
222
+ executions: assembleExecutionsContext(executions).executions
223
+ };
224
+ }
225
+ function assembleStepsContext(params) {
226
+ return buildStepAttemptContext(params).stepsContext;
227
+ }
228
+ function buildStepAttemptContext(params) {
229
+ const stepsByKey = new Map(params.steps.flatMap((step)=>step.key === null ? [] : [
230
+ [
231
+ step.key,
232
+ step
233
+ ]
234
+ ]));
235
+ const terminalAttemptsByStepId = new Map();
236
+ const orderedAttempts = [
237
+ ...params.attempts
238
+ ].sort((left, right)=>left.executionOrder - right.executionOrder);
239
+ for (const attempt of orderedAttempts){
240
+ if (attempt.status === 'running') continue;
241
+ const attemptsForStep = terminalAttemptsByStepId.get(attempt.stepId) ?? [];
242
+ attemptsForStep.push(attempt);
243
+ terminalAttemptsByStepId.set(attempt.stepId, attemptsForStep);
244
+ }
245
+ const stepsContext = {};
246
+ for (const step of params.steps){
247
+ if (step.key === null) continue;
248
+ const attempts = terminalAttemptsByStepId.get(step.id) ?? [];
249
+ const latestAttempt = attempts.at(-1);
250
+ stepsContext[step.key] = {
251
+ status: step.status,
252
+ ...latestAttempt === undefined ? {} : latestAttemptFields(latestAttempt),
253
+ attempts: attempts.map(attemptFields)
254
+ };
255
+ }
256
+ return {
257
+ stepsContext,
258
+ stepsFailed: params.steps.some((step)=>step.status === 'failed'),
259
+ orderedAttempts,
260
+ stepsByKey,
261
+ terminalAttemptsByStepId
262
+ };
263
+ }
264
+ export function assembleStepDispatchContext(params) {
265
+ const targetStep = params.steps.find((step)=>step.id === params.targetStepId);
266
+ const stepAttemptContext = buildStepAttemptContext(params);
267
+ const restart = targetStep === undefined || targetStep.currentAttempt <= 1 ? undefined : restartProvenance({
268
+ targetStep,
269
+ orderedAttempts: stepAttemptContext.orderedAttempts,
270
+ stepsByKey: stepAttemptContext.stepsByKey,
271
+ terminalAttemptsByStepId: stepAttemptContext.terminalAttemptsByStepId
272
+ });
273
+ return {
274
+ site: 'step-dispatch',
275
+ values: {
276
+ ...params.jobs === undefined ? {} : assembleJobsContext(params.jobs),
277
+ ...params.jobExecution === undefined ? {} : {
278
+ execution: {
279
+ index: params.jobExecution.sequence,
280
+ name: params.jobExecution.name,
281
+ status: params.jobExecution.status,
282
+ failed: stepAttemptContext.stepsFailed,
283
+ started_at: params.jobExecution.startedAt,
284
+ finished_at: params.jobExecution.finishedAt,
285
+ events: params.jobExecution.triggerEvents,
286
+ outputs: params.jobExecution.outputs ?? {}
287
+ }
288
+ },
289
+ ...targetStep === undefined ? {} : {
290
+ step: {
291
+ attempt: BigInt(targetStep.currentAttempt),
292
+ is_retry: targetStep.currentAttempt > 1,
293
+ ...restart === undefined ? {} : {
294
+ restart
295
+ }
296
+ }
297
+ },
298
+ steps: stepAttemptContext.stepsContext
299
+ }
300
+ };
301
+ }
302
+ function restartProvenance(params) {
303
+ for (const attempt of [
304
+ ...params.orderedAttempts
305
+ ].reverse()){
306
+ if (attempt.status !== 'failed' || attempt.restartFeedback === null) continue;
307
+ const restartFromKey = restartFromStepKey(attempt);
308
+ if (restartFromKey === undefined) continue;
309
+ const restartFromStep = params.stepsByKey.get(restartFromKey);
310
+ if (restartFromStep === undefined || restartFromStep.position > params.targetStep.position) {
311
+ continue;
312
+ }
313
+ const gatingAttempts = params.terminalAttemptsByStepId.get(attempt.stepId) ?? [];
314
+ return {
315
+ from: {
316
+ ...attemptFields(attempt),
317
+ attempts: gatingAttempts.map(attemptFields)
318
+ },
319
+ feedback: attempt.restartFeedback
320
+ };
321
+ }
322
+ return undefined;
323
+ }
324
+ function restartFromStepKey(attempt) {
325
+ const gate = attempt.config?.gate;
326
+ if (gate === null || typeof gate !== 'object') return undefined;
327
+ const onFailure = gate.on_failure;
328
+ if (onFailure === null || typeof onFailure !== 'object') return undefined;
329
+ const restartFrom = onFailure.restart_from;
330
+ return typeof restartFrom === 'string' ? restartFrom : undefined;
331
+ }
332
+ function attemptFields(attempt) {
333
+ return {
334
+ status: attempt.status,
335
+ outputs: attempt.output ?? {},
336
+ ...attempt.response === null ? {} : {
337
+ response: attempt.response
338
+ },
339
+ ...attempt.exitCode === null ? {} : {
340
+ exit_code: BigInt(attempt.exitCode)
341
+ },
342
+ ...attempt.gateResult === null ? {} : {
343
+ gate: attempt.gateResult
344
+ }
345
+ };
346
+ }
347
+ function latestAttemptFields(attempt) {
348
+ const fields = attemptFields(attempt);
349
+ delete fields.status;
350
+ return fields;
351
+ }
352
+ export function assembleGateContext(params) {
353
+ return {
354
+ site: 'step-report',
355
+ values: {
356
+ step: {
357
+ ...params.exitCode === null ? {} : {
358
+ exit_code: BigInt(params.exitCode)
359
+ },
360
+ status: params.status,
361
+ outputs: params.output ?? {}
362
+ }
363
+ }
364
+ };
365
+ }
366
+ export function assembleJobResolutionContext(executions) {
367
+ return {
368
+ site: 'job-resolution',
369
+ values: assembleExecutionsContext(executions)
370
+ };
371
+ }
372
+ export function assembleExecutionResolutionContext(params) {
373
+ const executions = assembleExecutionsContext(params.executions);
374
+ const executionIndex = params.executions.findIndex((execution)=>execution.id === params.jobExecution.id);
375
+ return {
376
+ site: 'execution-resolution',
377
+ values: {
378
+ ...assembleWorkflowRunContext(params),
379
+ ...executions,
380
+ ...params.jobs === undefined ? {} : assembleJobsContext(params.jobs),
381
+ execution: assembleExecutionContext(params.jobExecution, executionIndex < 0 ? params.jobExecution.sequence - 1 : executionIndex),
382
+ job: {
383
+ key: params.job.key
384
+ },
385
+ steps: assembleStepsContext({
386
+ steps: params.steps,
387
+ attempts: params.attempts
388
+ })
389
+ }
390
+ };
391
+ }
392
+
393
+ //# sourceMappingURL=assemble-run-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/step-config/assemble-run-context.ts"],"sourcesContent":["import {\n analyzeContextRootKeyAccess,\n extractExactContextRoots,\n type WorkflowExpressionEvaluationContext,\n} from '@shipfox/expression';\nimport type {Job, JobListeningTrigger} from '#core/entities/job.js';\nimport type {JobExecution} from '#core/entities/job-execution.js';\nimport type {Step, StepAttempt, StepStatus} from '#core/entities/step.js';\nimport type {TriggerPayload, WorkflowRun} from '#core/entities/workflow-run.js';\nimport type {WorkflowEvaluationContext} from './workflow-evaluation-context.js';\n\nexport interface JobContextInput {\n readonly job: Pick<Job, 'key' | 'status' | 'outputs'>;\n readonly executions: readonly JobExecution[];\n}\n\nexport interface AssembleWorkflowRunContextParams {\n readonly run: Pick<\n WorkflowRun,\n 'id' | 'name' | 'definitionId' | 'projectId' | 'workspaceId' | 'createdAt'\n >;\n readonly triggerPayload: TriggerPayload;\n readonly inputs?: Record<string, unknown> | null | undefined;\n readonly vars?: Record<string, string> | undefined;\n}\n\nexport function assembleWorkflowRunContext(\n params: AssembleWorkflowRunContextParams,\n): WorkflowExpressionEvaluationContext {\n return {\n run: {\n id: params.run.id,\n name: params.run.name,\n definition_id: params.run.definitionId,\n project_id: params.run.projectId,\n workspace_id: params.run.workspaceId,\n created_at: params.run.createdAt,\n },\n trigger: {\n source: params.triggerPayload.source,\n event: params.triggerPayload.event,\n },\n event: 'data' in params.triggerPayload ? params.triggerPayload.data : null,\n inputs: params.inputs ?? null,\n ...(params.vars === undefined ? {} : {vars: params.vars}),\n };\n}\n\nexport function assembleCreationContext(\n params: AssembleWorkflowRunContextParams,\n): WorkflowEvaluationContext {\n return {\n site: 'run-creation',\n values: assembleWorkflowRunContext(params),\n };\n}\n\nexport interface AssembleExecutionCreationContextParams extends AssembleWorkflowRunContextParams {\n readonly jobId: string;\n readonly sequence: number;\n readonly executionName: string;\n readonly status: JobExecution['status'];\n readonly triggerEvents: readonly JobExecution['triggerEvents'][number][];\n readonly priorExecutions: readonly JobExecution[];\n}\n\nexport function assembleExecutionCreationContext(\n params: AssembleExecutionCreationContextParams,\n): WorkflowEvaluationContext {\n const execution: JobExecution = {\n id: `${params.jobId}:${params.sequence}`,\n jobId: params.jobId,\n sequence: params.sequence,\n name: params.executionName,\n runner: null,\n status: params.status,\n statusReason: null,\n triggerEvents: [...params.triggerEvents],\n outputs: null,\n version: 1,\n createdAt: new Date(),\n updatedAt: new Date(),\n queuedAt: null,\n startedAt: null,\n finishedAt: null,\n timedOutAt: null,\n };\n const executions = assembleExecutionsContext([...params.priorExecutions, execution]);\n const executionValues = executions.executions as unknown[];\n return {\n site: 'execution-creation',\n values: {\n ...assembleWorkflowRunContext(params),\n ...executions,\n execution: executionValues.at(-1),\n },\n };\n}\n\n/**\n * Keeps job-success predicate values aligned with the registry's `executions`\n * type environment.\n */\nexport function assembleExecutionsContext(\n executions: readonly JobExecution[],\n): WorkflowExpressionEvaluationContext {\n return {\n executions: executions.map((execution, index) => assembleExecutionContext(execution, index)),\n };\n}\n\nfunction assembleExecutionContext(execution: JobExecution, index: number): Record<string, unknown> {\n return {\n index,\n name: execution.name,\n status: execution.status,\n started_at: execution.startedAt,\n finished_at: execution.finishedAt,\n events: execution.triggerEvents,\n outputs: execution.outputs ?? {},\n };\n}\n\nexport function assembleJobsContext(\n jobs: readonly JobContextInput[],\n): WorkflowExpressionEvaluationContext & {readonly jobs: Record<string, unknown>} {\n return {\n jobs: Object.fromEntries(jobs.map((input) => [input.job.key, assembleJobContext(input)])),\n };\n}\n\nexport interface AssembleJobActivationContextParams extends AssembleWorkflowRunContextParams {\n readonly jobs: readonly JobContextInput[];\n}\n\nexport function assembleJobActivationContext(\n params: AssembleJobActivationContextParams,\n): WorkflowEvaluationContext {\n return {\n site: 'job-activation',\n values: {\n ...assembleWorkflowRunContext(params),\n ...assembleJobsContext(params.jobs),\n needs: params.jobs.map(assembleJobContext),\n },\n };\n}\n\ntype ListenerSnapshotRoot = 'run' | 'trigger' | 'inputs' | 'job' | 'jobs';\n\nexport interface MatcherSnapshotPlan {\n readonly matcher: JobListeningTrigger;\n readonly roots: ReadonlySet<ListenerSnapshotRoot>;\n readonly jobKeys: ReadonlySet<string>;\n}\n\nexport interface ListenerSnapshotPlan {\n readonly on: readonly MatcherSnapshotPlan[];\n readonly until: readonly MatcherSnapshotPlan[];\n readonly roots: ReadonlySet<ListenerSnapshotRoot>;\n readonly jobKeys: ReadonlySet<string>;\n}\n\nexport function planListenerFilterSnapshots(params: {\n readonly on: readonly JobListeningTrigger[];\n readonly until: readonly JobListeningTrigger[] | null;\n}): ListenerSnapshotPlan {\n const roots = new Set<ListenerSnapshotRoot>();\n const jobKeys = new Set<string>();\n const on = params.on.map((matcher) => planMatcherFilterSnapshot(matcher, roots, jobKeys));\n const until = (params.until ?? []).map((matcher) =>\n planMatcherFilterSnapshot(matcher, roots, jobKeys),\n );\n return {on, until, roots, jobKeys};\n}\n\nfunction planMatcherFilterSnapshot(\n matcher: JobListeningTrigger,\n allRoots: Set<ListenerSnapshotRoot>,\n allJobKeys: Set<string>,\n): MatcherSnapshotPlan {\n if (matcher.filter === undefined) return {matcher, roots: new Set(), jobKeys: new Set()};\n\n let roots: ListenerSnapshotRoot[];\n try {\n roots = extractExactContextRoots(matcher.filter)\n .filter((root) => root !== 'event')\n .filter(isListenerSnapshotRoot);\n } catch {\n return {matcher, roots: new Set(), jobKeys: new Set()};\n }\n\n if (roots.length === 0) return {matcher, roots: new Set(), jobKeys: new Set()};\n\n const jobKeys =\n roots.includes('jobs') && matcher.filter !== undefined\n ? new Set(\n analyzeContextRootKeyAccess(matcher.filter, ['jobs']).references.map(\n (reference) => reference.key,\n ),\n )\n : new Set<string>();\n for (const root of roots) allRoots.add(root);\n for (const key of jobKeys) allJobKeys.add(key);\n return {matcher, roots: new Set(roots), jobKeys};\n}\n\nfunction isListenerSnapshotRoot(root: string): root is ListenerSnapshotRoot {\n return (\n root === 'run' || root === 'trigger' || root === 'inputs' || root === 'job' || root === 'jobs'\n );\n}\n\nexport function assembleListenerSnapshotContext(params: {\n readonly job: Pick<Job, 'key'>;\n readonly run: AssembleWorkflowRunContextParams['run'];\n readonly triggerPayload: TriggerPayload;\n readonly inputs?: Record<string, unknown> | null | undefined;\n readonly plan: ListenerSnapshotPlan;\n readonly dependencyJobs: readonly JobContextInput[];\n}): WorkflowExpressionEvaluationContext {\n const context: Record<string, unknown> = {};\n if (params.plan.roots.has('run') || params.plan.roots.has('trigger')) {\n const runContext = assembleWorkflowRunContext({\n run: params.run,\n triggerPayload: params.triggerPayload,\n inputs: params.inputs,\n });\n if (params.plan.roots.has('run')) context.run = runContext.run;\n if (params.plan.roots.has('trigger')) context.trigger = runContext.trigger;\n }\n\n if (params.plan.roots.has('inputs')) {\n context.inputs = params.inputs ?? null;\n }\n if (params.plan.roots.has('job')) {\n context.job = {key: params.job.key};\n }\n if (params.plan.roots.has('jobs')) {\n context.jobs = requestedJobsContext(params.dependencyJobs, params.plan.jobKeys);\n }\n\n return context;\n}\n\nfunction requestedJobsContext(\n dependencyJobs: readonly JobContextInput[],\n jobKeys: ReadonlySet<string>,\n): Record<string, unknown> {\n if (jobKeys.size === 0) return assembleJobsContext(dependencyJobs).jobs;\n\n const filtered = dependencyJobs.filter(({job}) => jobKeys.has(job.key));\n\n return assembleJobsContext(filtered).jobs;\n}\n\nexport type ListenerTriggerWithSnapshot = JobListeningTrigger & {\n readonly filter_snapshot?: Record<string, unknown>;\n};\n\nexport function applyListenerFilterSnapshots(\n plans: readonly MatcherSnapshotPlan[],\n context: WorkflowExpressionEvaluationContext,\n): ListenerTriggerWithSnapshot[] {\n return plans.map((plan) => {\n const filterSnapshot = filterSnapshotForPlan(plan, context);\n if (filterSnapshot === undefined) return plan.matcher;\n\n return {...plan.matcher, filter_snapshot: filterSnapshot};\n });\n}\n\nfunction filterSnapshotForPlan(\n plan: MatcherSnapshotPlan,\n context: WorkflowExpressionEvaluationContext,\n): Record<string, unknown> | undefined {\n const snapshot: Record<string, unknown> = {};\n for (const root of plan.roots) {\n if (root === 'jobs') {\n const jobsSnapshot = jobsSnapshotForPlan(plan, context);\n if (jobsSnapshot !== undefined) snapshot.jobs = jobsSnapshot;\n continue;\n }\n\n if (root in context) snapshot[root] = context[root];\n }\n\n return Object.keys(snapshot).length === 0 ? undefined : snapshot;\n}\n\nfunction jobsSnapshotForPlan(\n plan: MatcherSnapshotPlan,\n context: WorkflowExpressionEvaluationContext,\n): Record<string, unknown> | undefined {\n if (typeof context.jobs !== 'object' || context.jobs === null) {\n return undefined;\n }\n\n const jobsContext = context.jobs as Record<string, unknown>;\n if (plan.jobKeys.size === 0) return {...jobsContext};\n\n const snapshot = Object.fromEntries(\n [...plan.jobKeys].flatMap((key) =>\n Object.hasOwn(jobsContext, key) ? [[key, jobsContext[key]]] : [],\n ),\n );\n return snapshot;\n}\n\nfunction assembleJobContext({job, executions}: JobContextInput): Record<string, unknown> {\n return {\n key: job.key,\n status: job.status,\n outputs: job.outputs ?? {},\n executions: assembleExecutionsContext(executions).executions,\n };\n}\n\nfunction assembleStepsContext(params: {\n readonly steps: readonly Step[];\n readonly attempts: readonly StepAttempt[];\n}): Record<string, Record<string, unknown>> {\n return buildStepAttemptContext(params).stepsContext;\n}\n\nfunction buildStepAttemptContext(params: {\n readonly steps: readonly Step[];\n readonly attempts: readonly StepAttempt[];\n}): {\n readonly stepsContext: Record<string, Record<string, unknown>>;\n readonly stepsFailed: boolean;\n readonly orderedAttempts: readonly StepAttempt[];\n readonly stepsByKey: ReadonlyMap<string, Step>;\n readonly terminalAttemptsByStepId: ReadonlyMap<string, readonly StepAttempt[]>;\n} {\n const stepsByKey = new Map(\n params.steps.flatMap((step) => (step.key === null ? [] : [[step.key, step] as const])),\n );\n const terminalAttemptsByStepId = new Map<string, StepAttempt[]>();\n const orderedAttempts = [...params.attempts].sort(\n (left, right) => left.executionOrder - right.executionOrder,\n );\n\n for (const attempt of orderedAttempts) {\n if (attempt.status === 'running') continue;\n const attemptsForStep = terminalAttemptsByStepId.get(attempt.stepId) ?? [];\n attemptsForStep.push(attempt);\n terminalAttemptsByStepId.set(attempt.stepId, attemptsForStep);\n }\n\n const stepsContext: Record<string, Record<string, unknown>> = {};\n\n for (const step of params.steps) {\n if (step.key === null) continue;\n const attempts = terminalAttemptsByStepId.get(step.id) ?? [];\n const latestAttempt = attempts.at(-1);\n stepsContext[step.key] = {\n status: step.status,\n ...(latestAttempt === undefined ? {} : latestAttemptFields(latestAttempt)),\n attempts: attempts.map(attemptFields),\n };\n }\n\n return {\n stepsContext,\n stepsFailed: params.steps.some((step) => step.status === 'failed'),\n orderedAttempts,\n stepsByKey,\n terminalAttemptsByStepId,\n };\n}\n\nexport function assembleStepDispatchContext(params: {\n readonly steps: readonly Step[];\n readonly attempts: readonly StepAttempt[];\n readonly targetStepId: string;\n readonly jobExecution?: JobExecution;\n readonly jobs?: readonly JobContextInput[];\n}): WorkflowEvaluationContext {\n const targetStep = params.steps.find((step) => step.id === params.targetStepId);\n const stepAttemptContext = buildStepAttemptContext(params);\n const restart =\n targetStep === undefined || targetStep.currentAttempt <= 1\n ? undefined\n : restartProvenance({\n targetStep,\n orderedAttempts: stepAttemptContext.orderedAttempts,\n stepsByKey: stepAttemptContext.stepsByKey,\n terminalAttemptsByStepId: stepAttemptContext.terminalAttemptsByStepId,\n });\n\n return {\n site: 'step-dispatch',\n values: {\n ...(params.jobs === undefined ? {} : assembleJobsContext(params.jobs)),\n ...(params.jobExecution === undefined\n ? {}\n : {\n execution: {\n index: params.jobExecution.sequence,\n name: params.jobExecution.name,\n status: params.jobExecution.status,\n failed: stepAttemptContext.stepsFailed,\n started_at: params.jobExecution.startedAt,\n finished_at: params.jobExecution.finishedAt,\n events: params.jobExecution.triggerEvents,\n outputs: params.jobExecution.outputs ?? {},\n },\n }),\n ...(targetStep === undefined\n ? {}\n : {\n step: {\n attempt: BigInt(targetStep.currentAttempt),\n is_retry: targetStep.currentAttempt > 1,\n ...(restart === undefined ? {} : {restart}),\n },\n }),\n steps: stepAttemptContext.stepsContext,\n },\n };\n}\n\nfunction restartProvenance(params: {\n readonly targetStep: Step;\n readonly orderedAttempts: readonly StepAttempt[];\n readonly stepsByKey: ReadonlyMap<string, Step>;\n readonly terminalAttemptsByStepId: ReadonlyMap<string, readonly StepAttempt[]>;\n}): Record<string, unknown> | undefined {\n for (const attempt of [...params.orderedAttempts].reverse()) {\n if (attempt.status !== 'failed' || attempt.restartFeedback === null) continue;\n const restartFromKey = restartFromStepKey(attempt);\n if (restartFromKey === undefined) continue;\n\n const restartFromStep = params.stepsByKey.get(restartFromKey);\n if (restartFromStep === undefined || restartFromStep.position > params.targetStep.position) {\n continue;\n }\n\n const gatingAttempts = params.terminalAttemptsByStepId.get(attempt.stepId) ?? [];\n return {\n from: {\n ...attemptFields(attempt),\n attempts: gatingAttempts.map(attemptFields),\n },\n feedback: attempt.restartFeedback,\n };\n }\n\n return undefined;\n}\n\nfunction restartFromStepKey(attempt: StepAttempt): string | undefined {\n const gate = attempt.config?.gate;\n if (gate === null || typeof gate !== 'object') return undefined;\n const onFailure = (gate as Record<string, unknown>).on_failure;\n if (onFailure === null || typeof onFailure !== 'object') return undefined;\n const restartFrom = (onFailure as Record<string, unknown>).restart_from;\n return typeof restartFrom === 'string' ? restartFrom : undefined;\n}\n\nfunction attemptFields(attempt: StepAttempt): Record<string, unknown> {\n return {\n status: attempt.status,\n outputs: attempt.output ?? {},\n ...(attempt.response === null ? {} : {response: attempt.response}),\n ...(attempt.exitCode === null ? {} : {exit_code: BigInt(attempt.exitCode)}),\n ...(attempt.gateResult === null ? {} : {gate: attempt.gateResult}),\n };\n}\n\nfunction latestAttemptFields(attempt: StepAttempt): Record<string, unknown> {\n const fields = attemptFields(attempt);\n delete fields.status;\n return fields;\n}\n\nexport function assembleGateContext(params: {\n readonly status: StepStatus;\n readonly exitCode: number | null;\n readonly output?: Record<string, unknown> | null | undefined;\n}): WorkflowEvaluationContext {\n return {\n site: 'step-report',\n values: {\n step: {\n ...(params.exitCode === null ? {} : {exit_code: BigInt(params.exitCode)}),\n status: params.status,\n outputs: params.output ?? {},\n },\n },\n };\n}\n\nexport function assembleJobResolutionContext(\n executions: readonly JobExecution[],\n): WorkflowEvaluationContext {\n return {\n site: 'job-resolution',\n values: assembleExecutionsContext(executions),\n };\n}\n\nexport function assembleExecutionResolutionContext(params: {\n readonly run: AssembleWorkflowRunContextParams['run'];\n readonly triggerPayload: TriggerPayload;\n readonly inputs?: Record<string, unknown> | null | undefined;\n readonly vars?: Record<string, string> | undefined;\n readonly job: Pick<Job, 'key'>;\n readonly jobExecution: JobExecution;\n readonly executions: readonly JobExecution[];\n readonly steps: readonly Step[];\n readonly attempts: readonly StepAttempt[];\n readonly jobs?: readonly JobContextInput[];\n}): WorkflowEvaluationContext {\n const executions = assembleExecutionsContext(params.executions);\n const executionIndex = params.executions.findIndex(\n (execution) => execution.id === params.jobExecution.id,\n );\n\n return {\n site: 'execution-resolution',\n values: {\n ...assembleWorkflowRunContext(params),\n ...executions,\n ...(params.jobs === undefined ? {} : assembleJobsContext(params.jobs)),\n execution: assembleExecutionContext(\n params.jobExecution,\n executionIndex < 0 ? params.jobExecution.sequence - 1 : executionIndex,\n ),\n job: {key: params.job.key},\n steps: assembleStepsContext({steps: params.steps, attempts: params.attempts}),\n },\n };\n}\n"],"names":["analyzeContextRootKeyAccess","extractExactContextRoots","assembleWorkflowRunContext","params","run","id","name","definition_id","definitionId","project_id","projectId","workspace_id","workspaceId","created_at","createdAt","trigger","source","triggerPayload","event","data","inputs","vars","undefined","assembleCreationContext","site","values","assembleExecutionCreationContext","execution","jobId","sequence","executionName","runner","status","statusReason","triggerEvents","outputs","version","Date","updatedAt","queuedAt","startedAt","finishedAt","timedOutAt","executions","assembleExecutionsContext","priorExecutions","executionValues","at","map","index","assembleExecutionContext","started_at","finished_at","events","assembleJobsContext","jobs","Object","fromEntries","input","job","key","assembleJobContext","assembleJobActivationContext","needs","planListenerFilterSnapshots","roots","Set","jobKeys","on","matcher","planMatcherFilterSnapshot","until","allRoots","allJobKeys","filter","root","isListenerSnapshotRoot","length","includes","references","reference","add","assembleListenerSnapshotContext","context","plan","has","runContext","requestedJobsContext","dependencyJobs","size","filtered","applyListenerFilterSnapshots","plans","filterSnapshot","filterSnapshotForPlan","filter_snapshot","snapshot","jobsSnapshot","jobsSnapshotForPlan","keys","jobsContext","flatMap","hasOwn","assembleStepsContext","buildStepAttemptContext","stepsContext","stepsByKey","Map","steps","step","terminalAttemptsByStepId","orderedAttempts","attempts","sort","left","right","executionOrder","attempt","attemptsForStep","get","stepId","push","set","latestAttempt","latestAttemptFields","attemptFields","stepsFailed","some","assembleStepDispatchContext","targetStep","find","targetStepId","stepAttemptContext","restart","currentAttempt","restartProvenance","jobExecution","failed","BigInt","is_retry","reverse","restartFeedback","restartFromKey","restartFromStepKey","restartFromStep","position","gatingAttempts","from","feedback","gate","config","onFailure","on_failure","restartFrom","restart_from","output","response","exitCode","exit_code","gateResult","fields","assembleGateContext","assembleJobResolutionContext","assembleExecutionResolutionContext","executionIndex","findIndex"],"mappings":"AAAA,SACEA,2BAA2B,EAC3BC,wBAAwB,QAEnB,sBAAsB;AAsB7B,OAAO,SAASC,2BACdC,MAAwC;IAExC,OAAO;QACLC,KAAK;YACHC,IAAIF,OAAOC,GAAG,CAACC,EAAE;YACjBC,MAAMH,OAAOC,GAAG,CAACE,IAAI;YACrBC,eAAeJ,OAAOC,GAAG,CAACI,YAAY;YACtCC,YAAYN,OAAOC,GAAG,CAACM,SAAS;YAChCC,cAAcR,OAAOC,GAAG,CAACQ,WAAW;YACpCC,YAAYV,OAAOC,GAAG,CAACU,SAAS;QAClC;QACAC,SAAS;YACPC,QAAQb,OAAOc,cAAc,CAACD,MAAM;YACpCE,OAAOf,OAAOc,cAAc,CAACC,KAAK;QACpC;QACAA,OAAO,UAAUf,OAAOc,cAAc,GAAGd,OAAOc,cAAc,CAACE,IAAI,GAAG;QACtEC,QAAQjB,OAAOiB,MAAM,IAAI;QACzB,GAAIjB,OAAOkB,IAAI,KAAKC,YAAY,CAAC,IAAI;YAACD,MAAMlB,OAAOkB,IAAI;QAAA,CAAC;IAC1D;AACF;AAEA,OAAO,SAASE,wBACdpB,MAAwC;IAExC,OAAO;QACLqB,MAAM;QACNC,QAAQvB,2BAA2BC;IACrC;AACF;AAWA,OAAO,SAASuB,iCACdvB,MAA8C;IAE9C,MAAMwB,YAA0B;QAC9BtB,IAAI,GAAGF,OAAOyB,KAAK,CAAC,CAAC,EAAEzB,OAAO0B,QAAQ,EAAE;QACxCD,OAAOzB,OAAOyB,KAAK;QACnBC,UAAU1B,OAAO0B,QAAQ;QACzBvB,MAAMH,OAAO2B,aAAa;QAC1BC,QAAQ;QACRC,QAAQ7B,OAAO6B,MAAM;QACrBC,cAAc;QACdC,eAAe;eAAI/B,OAAO+B,aAAa;SAAC;QACxCC,SAAS;QACTC,SAAS;QACTtB,WAAW,IAAIuB;QACfC,WAAW,IAAID;QACfE,UAAU;QACVC,WAAW;QACXC,YAAY;QACZC,YAAY;IACd;IACA,MAAMC,aAAaC,0BAA0B;WAAIzC,OAAO0C,eAAe;QAAElB;KAAU;IACnF,MAAMmB,kBAAkBH,WAAWA,UAAU;IAC7C,OAAO;QACLnB,MAAM;QACNC,QAAQ;YACN,GAAGvB,2BAA2BC,OAAO;YACrC,GAAGwC,UAAU;YACbhB,WAAWmB,gBAAgBC,EAAE,CAAC,CAAC;QACjC;IACF;AACF;AAEA;;;CAGC,GACD,OAAO,SAASH,0BACdD,UAAmC;IAEnC,OAAO;QACLA,YAAYA,WAAWK,GAAG,CAAC,CAACrB,WAAWsB,QAAUC,yBAAyBvB,WAAWsB;IACvF;AACF;AAEA,SAASC,yBAAyBvB,SAAuB,EAAEsB,KAAa;IACtE,OAAO;QACLA;QACA3C,MAAMqB,UAAUrB,IAAI;QACpB0B,QAAQL,UAAUK,MAAM;QACxBmB,YAAYxB,UAAUa,SAAS;QAC/BY,aAAazB,UAAUc,UAAU;QACjCY,QAAQ1B,UAAUO,aAAa;QAC/BC,SAASR,UAAUQ,OAAO,IAAI,CAAC;IACjC;AACF;AAEA,OAAO,SAASmB,oBACdC,IAAgC;IAEhC,OAAO;QACLA,MAAMC,OAAOC,WAAW,CAACF,KAAKP,GAAG,CAAC,CAACU,QAAU;gBAACA,MAAMC,GAAG,CAACC,GAAG;gBAAEC,mBAAmBH;aAAO;IACzF;AACF;AAMA,OAAO,SAASI,6BACd3D,MAA0C;IAE1C,OAAO;QACLqB,MAAM;QACNC,QAAQ;YACN,GAAGvB,2BAA2BC,OAAO;YACrC,GAAGmD,oBAAoBnD,OAAOoD,IAAI,CAAC;YACnCQ,OAAO5D,OAAOoD,IAAI,CAACP,GAAG,CAACa;QACzB;IACF;AACF;AAiBA,OAAO,SAASG,4BAA4B7D,MAG3C;IACC,MAAM8D,QAAQ,IAAIC;IAClB,MAAMC,UAAU,IAAID;IACpB,MAAME,KAAKjE,OAAOiE,EAAE,CAACpB,GAAG,CAAC,CAACqB,UAAYC,0BAA0BD,SAASJ,OAAOE;IAChF,MAAMI,QAAQ,AAACpE,CAAAA,OAAOoE,KAAK,IAAI,EAAE,AAAD,EAAGvB,GAAG,CAAC,CAACqB,UACtCC,0BAA0BD,SAASJ,OAAOE;IAE5C,OAAO;QAACC;QAAIG;QAAON;QAAOE;IAAO;AACnC;AAEA,SAASG,0BACPD,OAA4B,EAC5BG,QAAmC,EACnCC,UAAuB;IAEvB,IAAIJ,QAAQK,MAAM,KAAKpD,WAAW,OAAO;QAAC+C;QAASJ,OAAO,IAAIC;QAAOC,SAAS,IAAID;IAAK;IAEvF,IAAID;IACJ,IAAI;QACFA,QAAQhE,yBAAyBoE,QAAQK,MAAM,EAC5CA,MAAM,CAAC,CAACC,OAASA,SAAS,SAC1BD,MAAM,CAACE;IACZ,EAAE,OAAM;QACN,OAAO;YAACP;YAASJ,OAAO,IAAIC;YAAOC,SAAS,IAAID;QAAK;IACvD;IAEA,IAAID,MAAMY,MAAM,KAAK,GAAG,OAAO;QAACR;QAASJ,OAAO,IAAIC;QAAOC,SAAS,IAAID;IAAK;IAE7E,MAAMC,UACJF,MAAMa,QAAQ,CAAC,WAAWT,QAAQK,MAAM,KAAKpD,YACzC,IAAI4C,IACFlE,4BAA4BqE,QAAQK,MAAM,EAAE;QAAC;KAAO,EAAEK,UAAU,CAAC/B,GAAG,CAClE,CAACgC,YAAcA,UAAUpB,GAAG,KAGhC,IAAIM;IACV,KAAK,MAAMS,QAAQV,MAAOO,SAASS,GAAG,CAACN;IACvC,KAAK,MAAMf,OAAOO,QAASM,WAAWQ,GAAG,CAACrB;IAC1C,OAAO;QAACS;QAASJ,OAAO,IAAIC,IAAID;QAAQE;IAAO;AACjD;AAEA,SAASS,uBAAuBD,IAAY;IAC1C,OACEA,SAAS,SAASA,SAAS,aAAaA,SAAS,YAAYA,SAAS,SAASA,SAAS;AAE5F;AAEA,OAAO,SAASO,gCAAgC/E,MAO/C;IACC,MAAMgF,UAAmC,CAAC;IAC1C,IAAIhF,OAAOiF,IAAI,CAACnB,KAAK,CAACoB,GAAG,CAAC,UAAUlF,OAAOiF,IAAI,CAACnB,KAAK,CAACoB,GAAG,CAAC,YAAY;QACpE,MAAMC,aAAapF,2BAA2B;YAC5CE,KAAKD,OAAOC,GAAG;YACfa,gBAAgBd,OAAOc,cAAc;YACrCG,QAAQjB,OAAOiB,MAAM;QACvB;QACA,IAAIjB,OAAOiF,IAAI,CAACnB,KAAK,CAACoB,GAAG,CAAC,QAAQF,QAAQ/E,GAAG,GAAGkF,WAAWlF,GAAG;QAC9D,IAAID,OAAOiF,IAAI,CAACnB,KAAK,CAACoB,GAAG,CAAC,YAAYF,QAAQpE,OAAO,GAAGuE,WAAWvE,OAAO;IAC5E;IAEA,IAAIZ,OAAOiF,IAAI,CAACnB,KAAK,CAACoB,GAAG,CAAC,WAAW;QACnCF,QAAQ/D,MAAM,GAAGjB,OAAOiB,MAAM,IAAI;IACpC;IACA,IAAIjB,OAAOiF,IAAI,CAACnB,KAAK,CAACoB,GAAG,CAAC,QAAQ;QAChCF,QAAQxB,GAAG,GAAG;YAACC,KAAKzD,OAAOwD,GAAG,CAACC,GAAG;QAAA;IACpC;IACA,IAAIzD,OAAOiF,IAAI,CAACnB,KAAK,CAACoB,GAAG,CAAC,SAAS;QACjCF,QAAQ5B,IAAI,GAAGgC,qBAAqBpF,OAAOqF,cAAc,EAAErF,OAAOiF,IAAI,CAACjB,OAAO;IAChF;IAEA,OAAOgB;AACT;AAEA,SAASI,qBACPC,cAA0C,EAC1CrB,OAA4B;IAE5B,IAAIA,QAAQsB,IAAI,KAAK,GAAG,OAAOnC,oBAAoBkC,gBAAgBjC,IAAI;IAEvE,MAAMmC,WAAWF,eAAed,MAAM,CAAC,CAAC,EAACf,GAAG,EAAC,GAAKQ,QAAQkB,GAAG,CAAC1B,IAAIC,GAAG;IAErE,OAAON,oBAAoBoC,UAAUnC,IAAI;AAC3C;AAMA,OAAO,SAASoC,6BACdC,KAAqC,EACrCT,OAA4C;IAE5C,OAAOS,MAAM5C,GAAG,CAAC,CAACoC;QAChB,MAAMS,iBAAiBC,sBAAsBV,MAAMD;QACnD,IAAIU,mBAAmBvE,WAAW,OAAO8D,KAAKf,OAAO;QAErD,OAAO;YAAC,GAAGe,KAAKf,OAAO;YAAE0B,iBAAiBF;QAAc;IAC1D;AACF;AAEA,SAASC,sBACPV,IAAyB,EACzBD,OAA4C;IAE5C,MAAMa,WAAoC,CAAC;IAC3C,KAAK,MAAMrB,QAAQS,KAAKnB,KAAK,CAAE;QAC7B,IAAIU,SAAS,QAAQ;YACnB,MAAMsB,eAAeC,oBAAoBd,MAAMD;YAC/C,IAAIc,iBAAiB3E,WAAW0E,SAASzC,IAAI,GAAG0C;YAChD;QACF;QAEA,IAAItB,QAAQQ,SAASa,QAAQ,CAACrB,KAAK,GAAGQ,OAAO,CAACR,KAAK;IACrD;IAEA,OAAOnB,OAAO2C,IAAI,CAACH,UAAUnB,MAAM,KAAK,IAAIvD,YAAY0E;AAC1D;AAEA,SAASE,oBACPd,IAAyB,EACzBD,OAA4C;IAE5C,IAAI,OAAOA,QAAQ5B,IAAI,KAAK,YAAY4B,QAAQ5B,IAAI,KAAK,MAAM;QAC7D,OAAOjC;IACT;IAEA,MAAM8E,cAAcjB,QAAQ5B,IAAI;IAChC,IAAI6B,KAAKjB,OAAO,CAACsB,IAAI,KAAK,GAAG,OAAO;QAAC,GAAGW,WAAW;IAAA;IAEnD,MAAMJ,WAAWxC,OAAOC,WAAW,CACjC;WAAI2B,KAAKjB,OAAO;KAAC,CAACkC,OAAO,CAAC,CAACzC,MACzBJ,OAAO8C,MAAM,CAACF,aAAaxC,OAAO;YAAC;gBAACA;gBAAKwC,WAAW,CAACxC,IAAI;aAAC;SAAC,GAAG,EAAE;IAGpE,OAAOoC;AACT;AAEA,SAASnC,mBAAmB,EAACF,GAAG,EAAEhB,UAAU,EAAkB;IAC5D,OAAO;QACLiB,KAAKD,IAAIC,GAAG;QACZ5B,QAAQ2B,IAAI3B,MAAM;QAClBG,SAASwB,IAAIxB,OAAO,IAAI,CAAC;QACzBQ,YAAYC,0BAA0BD,YAAYA,UAAU;IAC9D;AACF;AAEA,SAAS4D,qBAAqBpG,MAG7B;IACC,OAAOqG,wBAAwBrG,QAAQsG,YAAY;AACrD;AAEA,SAASD,wBAAwBrG,MAGhC;IAOC,MAAMuG,aAAa,IAAIC,IACrBxG,OAAOyG,KAAK,CAACP,OAAO,CAAC,CAACQ,OAAUA,KAAKjD,GAAG,KAAK,OAAO,EAAE,GAAG;YAAC;gBAACiD,KAAKjD,GAAG;gBAAEiD;aAAK;SAAU;IAEtF,MAAMC,2BAA2B,IAAIH;IACrC,MAAMI,kBAAkB;WAAI5G,OAAO6G,QAAQ;KAAC,CAACC,IAAI,CAC/C,CAACC,MAAMC,QAAUD,KAAKE,cAAc,GAAGD,MAAMC,cAAc;IAG7D,KAAK,MAAMC,WAAWN,gBAAiB;QACrC,IAAIM,QAAQrF,MAAM,KAAK,WAAW;QAClC,MAAMsF,kBAAkBR,yBAAyBS,GAAG,CAACF,QAAQG,MAAM,KAAK,EAAE;QAC1EF,gBAAgBG,IAAI,CAACJ;QACrBP,yBAAyBY,GAAG,CAACL,QAAQG,MAAM,EAAEF;IAC/C;IAEA,MAAMb,eAAwD,CAAC;IAE/D,KAAK,MAAMI,QAAQ1G,OAAOyG,KAAK,CAAE;QAC/B,IAAIC,KAAKjD,GAAG,KAAK,MAAM;QACvB,MAAMoD,WAAWF,yBAAyBS,GAAG,CAACV,KAAKxG,EAAE,KAAK,EAAE;QAC5D,MAAMsH,gBAAgBX,SAASjE,EAAE,CAAC,CAAC;QACnC0D,YAAY,CAACI,KAAKjD,GAAG,CAAC,GAAG;YACvB5B,QAAQ6E,KAAK7E,MAAM;YACnB,GAAI2F,kBAAkBrG,YAAY,CAAC,IAAIsG,oBAAoBD,cAAc;YACzEX,UAAUA,SAAShE,GAAG,CAAC6E;QACzB;IACF;IAEA,OAAO;QACLpB;QACAqB,aAAa3H,OAAOyG,KAAK,CAACmB,IAAI,CAAC,CAAClB,OAASA,KAAK7E,MAAM,KAAK;QACzD+E;QACAL;QACAI;IACF;AACF;AAEA,OAAO,SAASkB,4BAA4B7H,MAM3C;IACC,MAAM8H,aAAa9H,OAAOyG,KAAK,CAACsB,IAAI,CAAC,CAACrB,OAASA,KAAKxG,EAAE,KAAKF,OAAOgI,YAAY;IAC9E,MAAMC,qBAAqB5B,wBAAwBrG;IACnD,MAAMkI,UACJJ,eAAe3G,aAAa2G,WAAWK,cAAc,IAAI,IACrDhH,YACAiH,kBAAkB;QAChBN;QACAlB,iBAAiBqB,mBAAmBrB,eAAe;QACnDL,YAAY0B,mBAAmB1B,UAAU;QACzCI,0BAA0BsB,mBAAmBtB,wBAAwB;IACvE;IAEN,OAAO;QACLtF,MAAM;QACNC,QAAQ;YACN,GAAItB,OAAOoD,IAAI,KAAKjC,YAAY,CAAC,IAAIgC,oBAAoBnD,OAAOoD,IAAI,CAAC;YACrE,GAAIpD,OAAOqI,YAAY,KAAKlH,YACxB,CAAC,IACD;gBACEK,WAAW;oBACTsB,OAAO9C,OAAOqI,YAAY,CAAC3G,QAAQ;oBACnCvB,MAAMH,OAAOqI,YAAY,CAAClI,IAAI;oBAC9B0B,QAAQ7B,OAAOqI,YAAY,CAACxG,MAAM;oBAClCyG,QAAQL,mBAAmBN,WAAW;oBACtC3E,YAAYhD,OAAOqI,YAAY,CAAChG,SAAS;oBACzCY,aAAajD,OAAOqI,YAAY,CAAC/F,UAAU;oBAC3CY,QAAQlD,OAAOqI,YAAY,CAACtG,aAAa;oBACzCC,SAAShC,OAAOqI,YAAY,CAACrG,OAAO,IAAI,CAAC;gBAC3C;YACF,CAAC;YACL,GAAI8F,eAAe3G,YACf,CAAC,IACD;gBACEuF,MAAM;oBACJQ,SAASqB,OAAOT,WAAWK,cAAc;oBACzCK,UAAUV,WAAWK,cAAc,GAAG;oBACtC,GAAID,YAAY/G,YAAY,CAAC,IAAI;wBAAC+G;oBAAO,CAAC;gBAC5C;YACF,CAAC;YACLzB,OAAOwB,mBAAmB3B,YAAY;QACxC;IACF;AACF;AAEA,SAAS8B,kBAAkBpI,MAK1B;IACC,KAAK,MAAMkH,WAAW;WAAIlH,OAAO4G,eAAe;KAAC,CAAC6B,OAAO,GAAI;QAC3D,IAAIvB,QAAQrF,MAAM,KAAK,YAAYqF,QAAQwB,eAAe,KAAK,MAAM;QACrE,MAAMC,iBAAiBC,mBAAmB1B;QAC1C,IAAIyB,mBAAmBxH,WAAW;QAElC,MAAM0H,kBAAkB7I,OAAOuG,UAAU,CAACa,GAAG,CAACuB;QAC9C,IAAIE,oBAAoB1H,aAAa0H,gBAAgBC,QAAQ,GAAG9I,OAAO8H,UAAU,CAACgB,QAAQ,EAAE;YAC1F;QACF;QAEA,MAAMC,iBAAiB/I,OAAO2G,wBAAwB,CAACS,GAAG,CAACF,QAAQG,MAAM,KAAK,EAAE;QAChF,OAAO;YACL2B,MAAM;gBACJ,GAAGtB,cAAcR,QAAQ;gBACzBL,UAAUkC,eAAelG,GAAG,CAAC6E;YAC/B;YACAuB,UAAU/B,QAAQwB,eAAe;QACnC;IACF;IAEA,OAAOvH;AACT;AAEA,SAASyH,mBAAmB1B,OAAoB;IAC9C,MAAMgC,OAAOhC,QAAQiC,MAAM,EAAED;IAC7B,IAAIA,SAAS,QAAQ,OAAOA,SAAS,UAAU,OAAO/H;IACtD,MAAMiI,YAAY,AAACF,KAAiCG,UAAU;IAC9D,IAAID,cAAc,QAAQ,OAAOA,cAAc,UAAU,OAAOjI;IAChE,MAAMmI,cAAc,AAACF,UAAsCG,YAAY;IACvE,OAAO,OAAOD,gBAAgB,WAAWA,cAAcnI;AACzD;AAEA,SAASuG,cAAcR,OAAoB;IACzC,OAAO;QACLrF,QAAQqF,QAAQrF,MAAM;QACtBG,SAASkF,QAAQsC,MAAM,IAAI,CAAC;QAC5B,GAAItC,QAAQuC,QAAQ,KAAK,OAAO,CAAC,IAAI;YAACA,UAAUvC,QAAQuC,QAAQ;QAAA,CAAC;QACjE,GAAIvC,QAAQwC,QAAQ,KAAK,OAAO,CAAC,IAAI;YAACC,WAAWpB,OAAOrB,QAAQwC,QAAQ;QAAC,CAAC;QAC1E,GAAIxC,QAAQ0C,UAAU,KAAK,OAAO,CAAC,IAAI;YAACV,MAAMhC,QAAQ0C,UAAU;QAAA,CAAC;IACnE;AACF;AAEA,SAASnC,oBAAoBP,OAAoB;IAC/C,MAAM2C,SAASnC,cAAcR;IAC7B,OAAO2C,OAAOhI,MAAM;IACpB,OAAOgI;AACT;AAEA,OAAO,SAASC,oBAAoB9J,MAInC;IACC,OAAO;QACLqB,MAAM;QACNC,QAAQ;YACNoF,MAAM;gBACJ,GAAI1G,OAAO0J,QAAQ,KAAK,OAAO,CAAC,IAAI;oBAACC,WAAWpB,OAAOvI,OAAO0J,QAAQ;gBAAC,CAAC;gBACxE7H,QAAQ7B,OAAO6B,MAAM;gBACrBG,SAAShC,OAAOwJ,MAAM,IAAI,CAAC;YAC7B;QACF;IACF;AACF;AAEA,OAAO,SAASO,6BACdvH,UAAmC;IAEnC,OAAO;QACLnB,MAAM;QACNC,QAAQmB,0BAA0BD;IACpC;AACF;AAEA,OAAO,SAASwH,mCAAmChK,MAWlD;IACC,MAAMwC,aAAaC,0BAA0BzC,OAAOwC,UAAU;IAC9D,MAAMyH,iBAAiBjK,OAAOwC,UAAU,CAAC0H,SAAS,CAChD,CAAC1I,YAAcA,UAAUtB,EAAE,KAAKF,OAAOqI,YAAY,CAACnI,EAAE;IAGxD,OAAO;QACLmB,MAAM;QACNC,QAAQ;YACN,GAAGvB,2BAA2BC,OAAO;YACrC,GAAGwC,UAAU;YACb,GAAIxC,OAAOoD,IAAI,KAAKjC,YAAY,CAAC,IAAIgC,oBAAoBnD,OAAOoD,IAAI,CAAC;YACrE5B,WAAWuB,yBACT/C,OAAOqI,YAAY,EACnB4B,iBAAiB,IAAIjK,OAAOqI,YAAY,CAAC3G,QAAQ,GAAG,IAAIuI;YAE1DzG,KAAK;gBAACC,KAAKzD,OAAOwD,GAAG,CAACC,GAAG;YAAA;YACzBgD,OAAOL,qBAAqB;gBAACK,OAAOzG,OAAOyG,KAAK;gBAAEI,UAAU7G,OAAO6G,QAAQ;YAAA;QAC7E;IACF;AACF"}
@@ -0,0 +1,13 @@
1
+ import type { AgentDefaultsResolver } from '@shipfox/api-agent/core/resolve-agent-config';
2
+ import type { PersistedEvaluationTraceEntry, Step } from '#core/entities/step.js';
3
+ import type { WorkflowEvaluationContext } from './workflow-evaluation-context.js';
4
+ export declare function completeStepDispatchConfig(params: {
5
+ readonly step: Step;
6
+ readonly context: WorkflowEvaluationContext;
7
+ readonly resolveAgentDefaults: AgentDefaultsResolver;
8
+ readonly definitionId: string;
9
+ }): {
10
+ readonly config: Record<string, unknown>;
11
+ readonly trace: readonly PersistedEvaluationTraceEntry[];
12
+ };
13
+ //# sourceMappingURL=complete-step-dispatch-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"complete-step-dispatch-config.d.ts","sourceRoot":"","sources":["../../../src/core/step-config/complete-step-dispatch-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,8CAA8C,CAAC;AAExF,OAAO,KAAK,EAAC,6BAA6B,EAAE,IAAI,EAAC,MAAM,wBAAwB,CAAC;AAGhF,OAAO,KAAK,EAAC,yBAAyB,EAAC,MAAM,kCAAkC,CAAC;AAEhF,wBAAgB,0BAA0B,CAAC,MAAM,EAAE;IACjD,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC;IAC5C,QAAQ,CAAC,oBAAoB,EAAE,qBAAqB,CAAC;IACrD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B,GAAG;IACF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,SAAS,6BAA6B,EAAE,CAAC;CAC1D,CAwBA"}
@@ -0,0 +1,38 @@
1
+ import { capTraceEntries } from '@shipfox/expression';
2
+ import { completeAgentConfig } from './agent.js';
3
+ import { completeRunDispatchConfig } from './run.js';
4
+ export function completeStepDispatchConfig(params) {
5
+ const plan = params.step.configPlan;
6
+ if (plan === null) return {
7
+ config: params.step.config,
8
+ trace: []
9
+ };
10
+ const config = {
11
+ ...params.step.config
12
+ };
13
+ delete config.secret_bindings;
14
+ const trace = [
15
+ ...plan.trace ?? []
16
+ ];
17
+ completeRunDispatchConfig({
18
+ config,
19
+ plan,
20
+ context: params.context,
21
+ definitionId: params.definitionId,
22
+ trace
23
+ });
24
+ completeAgentConfig({
25
+ config,
26
+ plan,
27
+ context: params.context,
28
+ resolveAgentDefaults: params.resolveAgentDefaults,
29
+ definitionId: params.definitionId,
30
+ trace
31
+ });
32
+ return {
33
+ config,
34
+ trace: capTraceEntries(trace)
35
+ };
36
+ }
37
+
38
+ //# sourceMappingURL=complete-step-dispatch-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/step-config/complete-step-dispatch-config.ts"],"sourcesContent":["import type {AgentDefaultsResolver} from '@shipfox/api-agent/core/resolve-agent-config';\nimport {capTraceEntries} from '@shipfox/expression';\nimport type {PersistedEvaluationTraceEntry, Step} from '#core/entities/step.js';\nimport {completeAgentConfig} from './agent.js';\nimport {completeRunDispatchConfig} from './run.js';\nimport type {WorkflowEvaluationContext} from './workflow-evaluation-context.js';\n\nexport function completeStepDispatchConfig(params: {\n readonly step: Step;\n readonly context: WorkflowEvaluationContext;\n readonly resolveAgentDefaults: AgentDefaultsResolver;\n readonly definitionId: string;\n}): {\n readonly config: Record<string, unknown>;\n readonly trace: readonly PersistedEvaluationTraceEntry[];\n} {\n const plan = params.step.configPlan;\n if (plan === null) return {config: params.step.config, trace: []};\n\n const config = {...params.step.config};\n delete config.secret_bindings;\n const trace: PersistedEvaluationTraceEntry[] = [...(plan.trace ?? [])];\n completeRunDispatchConfig({\n config,\n plan,\n context: params.context,\n definitionId: params.definitionId,\n trace,\n });\n completeAgentConfig({\n config,\n plan,\n context: params.context,\n resolveAgentDefaults: params.resolveAgentDefaults,\n definitionId: params.definitionId,\n trace,\n });\n\n return {config, trace: capTraceEntries(trace)};\n}\n"],"names":["capTraceEntries","completeAgentConfig","completeRunDispatchConfig","completeStepDispatchConfig","params","plan","step","configPlan","config","trace","secret_bindings","context","definitionId","resolveAgentDefaults"],"mappings":"AACA,SAAQA,eAAe,QAAO,sBAAsB;AAEpD,SAAQC,mBAAmB,QAAO,aAAa;AAC/C,SAAQC,yBAAyB,QAAO,WAAW;AAGnD,OAAO,SAASC,2BAA2BC,MAK1C;IAIC,MAAMC,OAAOD,OAAOE,IAAI,CAACC,UAAU;IACnC,IAAIF,SAAS,MAAM,OAAO;QAACG,QAAQJ,OAAOE,IAAI,CAACE,MAAM;QAAEC,OAAO,EAAE;IAAA;IAEhE,MAAMD,SAAS;QAAC,GAAGJ,OAAOE,IAAI,CAACE,MAAM;IAAA;IACrC,OAAOA,OAAOE,eAAe;IAC7B,MAAMD,QAAyC;WAAKJ,KAAKI,KAAK,IAAI,EAAE;KAAE;IACtEP,0BAA0B;QACxBM;QACAH;QACAM,SAASP,OAAOO,OAAO;QACvBC,cAAcR,OAAOQ,YAAY;QACjCH;IACF;IACAR,oBAAoB;QAClBO;QACAH;QACAM,SAASP,OAAOO,OAAO;QACvBE,sBAAsBT,OAAOS,oBAAoB;QACjDD,cAAcR,OAAOQ,YAAY;QACjCH;IACF;IAEA,OAAO;QAACD;QAAQC,OAAOT,gBAAgBS;IAAM;AAC/C"}
@@ -0,0 +1,38 @@
1
+ import { type EvaluationTraceEntry, type ResolvedField, type SiteResolvedField, type UnsafeRunInterpolationError, type WorkflowInterpolationField, type WorkflowTemplateDiagnostic, WorkflowTemplateResolutionError } from '@shipfox/expression';
2
+ import { InterpolationUnresolvableError, type InterpolationUnresolvableField } from '#core/errors.js';
3
+ import type { WorkflowEvaluationContext } from './workflow-evaluation-context.js';
4
+ export type StepConfigField = InterpolationUnresolvableField;
5
+ export interface WorkflowStepTemplateDiagnostic extends WorkflowTemplateDiagnostic {
6
+ readonly field: StepConfigField;
7
+ readonly envKey?: string;
8
+ }
9
+ export interface WorkflowStepEvaluationTraceEntry extends EvaluationTraceEntry {
10
+ readonly field: StepConfigField;
11
+ readonly envKey?: string;
12
+ }
13
+ export interface ResolveStepFieldParams {
14
+ readonly field: WorkflowInterpolationField;
15
+ readonly template: ResolvedField;
16
+ readonly context: WorkflowEvaluationContext;
17
+ readonly definitionId: string;
18
+ readonly errorField: InterpolationUnresolvableField;
19
+ readonly envKey?: string;
20
+ }
21
+ export declare function resolveStepField(params: ResolveStepFieldParams): SiteResolvedField;
22
+ export declare function freezeStepField(params: ResolveStepFieldParams): {
23
+ readonly value: string;
24
+ readonly diagnostics: SiteResolvedField['diagnostics'];
25
+ readonly trace: SiteResolvedField['trace'];
26
+ };
27
+ export declare function completeStepField(params: ResolveStepFieldParams): string;
28
+ export declare function completeStepFieldWithTrace(params: ResolveStepFieldParams): {
29
+ readonly value: string;
30
+ readonly trace: SiteResolvedField['trace'];
31
+ };
32
+ export declare function stepConfigInterpolationError(params: {
33
+ readonly definitionId: string;
34
+ readonly errorField: InterpolationUnresolvableField;
35
+ readonly envKey?: string;
36
+ }, error: WorkflowTemplateResolutionError | UnsafeRunInterpolationError): InterpolationUnresolvableError;
37
+ export declare function literalField(value: string): ResolvedField;
38
+ //# sourceMappingURL=fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../src/core/step-config/fields.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,oBAAoB,EAGzB,KAAK,aAAa,EAElB,KAAK,iBAAiB,EACtB,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAC/B,+BAA+B,EAChC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAC,8BAA8B,EAAE,KAAK,8BAA8B,EAAC,MAAM,iBAAiB,CAAC;AACpG,OAAO,KAAK,EAAC,yBAAyB,EAAC,MAAM,kCAAkC,CAAC;AAEhF,MAAM,MAAM,eAAe,GAAG,8BAA8B,CAAC;AAE7D,MAAM,WAAW,8BAA+B,SAAQ,0BAA0B;IAChF,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,gCAAiC,SAAQ,oBAAoB;IAC5E,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,0BAA0B,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC;IAC5C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,8BAA8B,CAAC;IACpD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,GAAG,iBAAiB,CAclF;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG;IAC/D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACvD,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;CAC5C,CAcA;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAExE;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,sBAAsB,GAAG;IAC1E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;CAC5C,CAWA;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE;IACN,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,8BAA8B,CAAC;IACpD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B,EACD,KAAK,EAAE,+BAA+B,GAAG,2BAA2B,GACnE,8BAA8B,CAOhC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAEzD"}
@@ -0,0 +1,72 @@
1
+ import { freezeResolvedFieldAtSite, getWorkflowInterpolationFieldFailurePolicy, resolveFieldAtSite, WorkflowTemplateResolutionError } from '@shipfox/expression';
2
+ import { InterpolationUnresolvableError } from '#core/errors.js';
3
+ export function resolveStepField(params) {
4
+ try {
5
+ return resolveFieldAtSite({
6
+ field: params.template,
7
+ context: params.context.values,
8
+ site: params.context.site,
9
+ failurePolicy: getWorkflowInterpolationFieldFailurePolicy(params.field)
10
+ });
11
+ } catch (error) {
12
+ if (error instanceof WorkflowTemplateResolutionError) {
13
+ throw stepConfigInterpolationError(params, error);
14
+ }
15
+ throw error;
16
+ }
17
+ }
18
+ export function freezeStepField(params) {
19
+ try {
20
+ return freezeResolvedFieldAtSite({
21
+ field: params.template,
22
+ context: params.context.values,
23
+ site: params.context.site,
24
+ failurePolicy: getWorkflowInterpolationFieldFailurePolicy(params.field)
25
+ });
26
+ } catch (error) {
27
+ if (error instanceof WorkflowTemplateResolutionError) {
28
+ throw stepConfigInterpolationError(params, error);
29
+ }
30
+ throw error;
31
+ }
32
+ }
33
+ export function completeStepField(params) {
34
+ return completeStepFieldWithTrace(params).value;
35
+ }
36
+ export function completeStepFieldWithTrace(params) {
37
+ const resolved = resolveStepField(params);
38
+ if (resolved.kind === 'frozen') return {
39
+ value: resolved.value,
40
+ trace: resolved.trace
41
+ };
42
+ const source = resolved.field.segments.find((segment)=>segment.kind === 'deferred')?.expression.source;
43
+ throw new InterpolationUnresolvableError(params.definitionId, {
44
+ field: params.errorField,
45
+ source: source ?? params.field,
46
+ ...params.envKey === undefined ? {} : {
47
+ envKey: params.envKey
48
+ }
49
+ });
50
+ }
51
+ export function stepConfigInterpolationError(params, error) {
52
+ return new InterpolationUnresolvableError(params.definitionId, {
53
+ field: params.errorField,
54
+ source: error.source,
55
+ ...params.envKey === undefined ? {} : {
56
+ envKey: params.envKey
57
+ },
58
+ cause: error
59
+ });
60
+ }
61
+ export function literalField(value) {
62
+ return {
63
+ segments: [
64
+ {
65
+ kind: 'literal',
66
+ value
67
+ }
68
+ ]
69
+ };
70
+ }
71
+
72
+ //# sourceMappingURL=fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/step-config/fields.ts"],"sourcesContent":["import {\n type EvaluationTraceEntry,\n freezeResolvedFieldAtSite,\n getWorkflowInterpolationFieldFailurePolicy,\n type ResolvedField,\n resolveFieldAtSite,\n type SiteResolvedField,\n type UnsafeRunInterpolationError,\n type WorkflowInterpolationField,\n type WorkflowTemplateDiagnostic,\n WorkflowTemplateResolutionError,\n} from '@shipfox/expression';\nimport {InterpolationUnresolvableError, type InterpolationUnresolvableField} from '#core/errors.js';\nimport type {WorkflowEvaluationContext} from './workflow-evaluation-context.js';\n\nexport type StepConfigField = InterpolationUnresolvableField;\n\nexport interface WorkflowStepTemplateDiagnostic extends WorkflowTemplateDiagnostic {\n readonly field: StepConfigField;\n readonly envKey?: string;\n}\n\nexport interface WorkflowStepEvaluationTraceEntry extends EvaluationTraceEntry {\n readonly field: StepConfigField;\n readonly envKey?: string;\n}\n\nexport interface ResolveStepFieldParams {\n readonly field: WorkflowInterpolationField;\n readonly template: ResolvedField;\n readonly context: WorkflowEvaluationContext;\n readonly definitionId: string;\n readonly errorField: InterpolationUnresolvableField;\n readonly envKey?: string;\n}\n\nexport function resolveStepField(params: ResolveStepFieldParams): SiteResolvedField {\n try {\n return resolveFieldAtSite({\n field: params.template,\n context: params.context.values,\n site: params.context.site,\n failurePolicy: getWorkflowInterpolationFieldFailurePolicy(params.field),\n });\n } catch (error) {\n if (error instanceof WorkflowTemplateResolutionError) {\n throw stepConfigInterpolationError(params, error);\n }\n throw error;\n }\n}\n\nexport function freezeStepField(params: ResolveStepFieldParams): {\n readonly value: string;\n readonly diagnostics: SiteResolvedField['diagnostics'];\n readonly trace: SiteResolvedField['trace'];\n} {\n try {\n return freezeResolvedFieldAtSite({\n field: params.template,\n context: params.context.values,\n site: params.context.site,\n failurePolicy: getWorkflowInterpolationFieldFailurePolicy(params.field),\n });\n } catch (error) {\n if (error instanceof WorkflowTemplateResolutionError) {\n throw stepConfigInterpolationError(params, error);\n }\n throw error;\n }\n}\n\nexport function completeStepField(params: ResolveStepFieldParams): string {\n return completeStepFieldWithTrace(params).value;\n}\n\nexport function completeStepFieldWithTrace(params: ResolveStepFieldParams): {\n readonly value: string;\n readonly trace: SiteResolvedField['trace'];\n} {\n const resolved = resolveStepField(params);\n if (resolved.kind === 'frozen') return {value: resolved.value, trace: resolved.trace};\n\n const source = resolved.field.segments.find((segment) => segment.kind === 'deferred')?.expression\n .source;\n throw new InterpolationUnresolvableError(params.definitionId, {\n field: params.errorField,\n source: source ?? params.field,\n ...(params.envKey === undefined ? {} : {envKey: params.envKey}),\n });\n}\n\nexport function stepConfigInterpolationError(\n params: {\n readonly definitionId: string;\n readonly errorField: InterpolationUnresolvableField;\n readonly envKey?: string;\n },\n error: WorkflowTemplateResolutionError | UnsafeRunInterpolationError,\n): InterpolationUnresolvableError {\n return new InterpolationUnresolvableError(params.definitionId, {\n field: params.errorField,\n source: error.source,\n ...(params.envKey === undefined ? {} : {envKey: params.envKey}),\n cause: error,\n });\n}\n\nexport function literalField(value: string): ResolvedField {\n return {segments: [{kind: 'literal', value}]};\n}\n"],"names":["freezeResolvedFieldAtSite","getWorkflowInterpolationFieldFailurePolicy","resolveFieldAtSite","WorkflowTemplateResolutionError","InterpolationUnresolvableError","resolveStepField","params","field","template","context","values","site","failurePolicy","error","stepConfigInterpolationError","freezeStepField","completeStepField","completeStepFieldWithTrace","value","resolved","kind","trace","source","segments","find","segment","expression","definitionId","errorField","envKey","undefined","cause","literalField"],"mappings":"AAAA,SAEEA,yBAAyB,EACzBC,0CAA0C,EAE1CC,kBAAkB,EAKlBC,+BAA+B,QAC1B,sBAAsB;AAC7B,SAAQC,8BAA8B,QAA4C,kBAAkB;AAwBpG,OAAO,SAASC,iBAAiBC,MAA8B;IAC7D,IAAI;QACF,OAAOJ,mBAAmB;YACxBK,OAAOD,OAAOE,QAAQ;YACtBC,SAASH,OAAOG,OAAO,CAACC,MAAM;YAC9BC,MAAML,OAAOG,OAAO,CAACE,IAAI;YACzBC,eAAeX,2CAA2CK,OAAOC,KAAK;QACxE;IACF,EAAE,OAAOM,OAAO;QACd,IAAIA,iBAAiBV,iCAAiC;YACpD,MAAMW,6BAA6BR,QAAQO;QAC7C;QACA,MAAMA;IACR;AACF;AAEA,OAAO,SAASE,gBAAgBT,MAA8B;IAK5D,IAAI;QACF,OAAON,0BAA0B;YAC/BO,OAAOD,OAAOE,QAAQ;YACtBC,SAASH,OAAOG,OAAO,CAACC,MAAM;YAC9BC,MAAML,OAAOG,OAAO,CAACE,IAAI;YACzBC,eAAeX,2CAA2CK,OAAOC,KAAK;QACxE;IACF,EAAE,OAAOM,OAAO;QACd,IAAIA,iBAAiBV,iCAAiC;YACpD,MAAMW,6BAA6BR,QAAQO;QAC7C;QACA,MAAMA;IACR;AACF;AAEA,OAAO,SAASG,kBAAkBV,MAA8B;IAC9D,OAAOW,2BAA2BX,QAAQY,KAAK;AACjD;AAEA,OAAO,SAASD,2BAA2BX,MAA8B;IAIvE,MAAMa,WAAWd,iBAAiBC;IAClC,IAAIa,SAASC,IAAI,KAAK,UAAU,OAAO;QAACF,OAAOC,SAASD,KAAK;QAAEG,OAAOF,SAASE,KAAK;IAAA;IAEpF,MAAMC,SAASH,SAASZ,KAAK,CAACgB,QAAQ,CAACC,IAAI,CAAC,CAACC,UAAYA,QAAQL,IAAI,KAAK,aAAaM,WACpFJ;IACH,MAAM,IAAIlB,+BAA+BE,OAAOqB,YAAY,EAAE;QAC5DpB,OAAOD,OAAOsB,UAAU;QACxBN,QAAQA,UAAUhB,OAAOC,KAAK;QAC9B,GAAID,OAAOuB,MAAM,KAAKC,YAAY,CAAC,IAAI;YAACD,QAAQvB,OAAOuB,MAAM;QAAA,CAAC;IAChE;AACF;AAEA,OAAO,SAASf,6BACdR,MAIC,EACDO,KAAoE;IAEpE,OAAO,IAAIT,+BAA+BE,OAAOqB,YAAY,EAAE;QAC7DpB,OAAOD,OAAOsB,UAAU;QACxBN,QAAQT,MAAMS,MAAM;QACpB,GAAIhB,OAAOuB,MAAM,KAAKC,YAAY,CAAC,IAAI;YAACD,QAAQvB,OAAOuB,MAAM;QAAA,CAAC;QAC9DE,OAAOlB;IACT;AACF;AAEA,OAAO,SAASmB,aAAad,KAAa;IACxC,OAAO;QAACK,UAAU;YAAC;gBAACH,MAAM;gBAAWF;YAAK;SAAE;IAAA;AAC9C"}