@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.
- package/.turbo/turbo-build.log +2 -0
- package/.turbo/turbo-type$colon$emit.log +1 -0
- package/.turbo/turbo-type.log +1 -0
- package/CHANGELOG.md +311 -0
- package/LICENSE +21 -0
- package/dist/core/agent-tool-capability-warning.d.ts +7 -0
- package/dist/core/agent-tool-capability-warning.d.ts.map +1 -0
- package/dist/core/agent-tool-capability-warning.js +149 -0
- package/dist/core/agent-tool-capability-warning.js.map +1 -0
- package/dist/core/agent-tools.d.ts +51 -0
- package/dist/core/agent-tools.d.ts.map +1 -0
- package/dist/core/agent-tools.js +296 -0
- package/dist/core/agent-tools.js.map +1 -0
- package/dist/core/checkout.d.ts +29 -0
- package/dist/core/checkout.d.ts.map +1 -0
- package/dist/core/checkout.js +42 -0
- package/dist/core/checkout.js.map +1 -0
- package/dist/core/condition-trace.d.ts +13 -0
- package/dist/core/condition-trace.d.ts.map +1 -0
- package/dist/core/condition-trace.js +51 -0
- package/dist/core/condition-trace.js.map +1 -0
- package/dist/core/entities/index.d.ts +5 -0
- package/dist/core/entities/index.d.ts.map +1 -0
- package/dist/core/entities/index.js +3 -0
- package/dist/core/entities/index.js.map +1 -0
- package/dist/core/entities/job-execution.d.ts +30 -0
- package/dist/core/entities/job-execution.d.ts.map +1 -0
- package/dist/core/entities/job-execution.js +3 -0
- package/dist/core/entities/job-execution.js.map +1 -0
- package/dist/core/entities/job-listener-event.d.ts +15 -0
- package/dist/core/entities/job-listener-event.d.ts.map +1 -0
- package/dist/core/entities/job-listener-event.js +3 -0
- package/dist/core/entities/job-listener-event.js.map +1 -0
- package/dist/core/entities/job.d.ts +54 -0
- package/dist/core/entities/job.d.ts.map +1 -0
- package/dist/core/entities/job.js +29 -0
- package/dist/core/entities/job.js.map +1 -0
- package/dist/core/entities/step.d.ts +86 -0
- package/dist/core/entities/step.d.ts.map +1 -0
- package/dist/core/entities/step.js +12 -0
- package/dist/core/entities/step.js.map +1 -0
- package/dist/core/entities/workflow-run-attempt.d.ts +20 -0
- package/dist/core/entities/workflow-run-attempt.d.ts.map +1 -0
- package/dist/core/entities/workflow-run-attempt.js +3 -0
- package/dist/core/entities/workflow-run-attempt.js.map +1 -0
- package/dist/core/entities/workflow-run.d.ts +66 -0
- package/dist/core/entities/workflow-run.d.ts.map +1 -0
- package/dist/core/entities/workflow-run.js +10 -0
- package/dist/core/entities/workflow-run.js.map +1 -0
- package/dist/core/errors.d.ts +85 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +134 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/index.d.ts +14 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +9 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/job-execution-outcome.d.ts +29 -0
- package/dist/core/job-execution-outcome.d.ts.map +1 -0
- package/dist/core/job-execution-outcome.js +31 -0
- package/dist/core/job-execution-outcome.js.map +1 -0
- package/dist/core/job-execution.d.ts +37 -0
- package/dist/core/job-execution.d.ts.map +1 -0
- package/dist/core/job-execution.js +425 -0
- package/dist/core/job-execution.js.map +1 -0
- package/dist/core/job-transition/decide-job-activation.d.ts +29 -0
- package/dist/core/job-transition/decide-job-activation.d.ts.map +1 -0
- package/dist/core/job-transition/decide-job-activation.js +51 -0
- package/dist/core/job-transition/decide-job-activation.js.map +1 -0
- package/dist/core/job-transition/derive-job-execution-outputs.d.ts +18 -0
- package/dist/core/job-transition/derive-job-execution-outputs.d.ts.map +1 -0
- package/dist/core/job-transition/derive-job-execution-outputs.js +23 -0
- package/dist/core/job-transition/derive-job-execution-outputs.js.map +1 -0
- package/dist/core/job-transition/derive-job-success.d.ts +16 -0
- package/dist/core/job-transition/derive-job-success.d.ts.map +1 -0
- package/dist/core/job-transition/derive-job-success.js +47 -0
- package/dist/core/job-transition/derive-job-success.js.map +1 -0
- package/dist/core/job-transition/index.d.ts +5 -0
- package/dist/core/job-transition/index.d.ts.map +1 -0
- package/dist/core/job-transition/index.js +6 -0
- package/dist/core/job-transition/index.js.map +1 -0
- package/dist/core/job-transition/runtime-completion-status-for-job.d.ts +4 -0
- package/dist/core/job-transition/runtime-completion-status-for-job.d.ts.map +1 -0
- package/dist/core/job-transition/runtime-completion-status-for-job.js +8 -0
- package/dist/core/job-transition/runtime-completion-status-for-job.js.map +1 -0
- package/dist/core/listener-execution-materialization.d.ts +30 -0
- package/dist/core/listener-execution-materialization.d.ts.map +1 -0
- package/dist/core/listener-execution-materialization.js +87 -0
- package/dist/core/listener-execution-materialization.js.map +1 -0
- package/dist/core/run-workflow.d.ts +11 -0
- package/dist/core/run-workflow.d.ts.map +1 -0
- package/dist/core/run-workflow.js +28 -0
- package/dist/core/run-workflow.js.map +1 -0
- package/dist/core/source-control.d.ts +5 -0
- package/dist/core/source-control.d.ts.map +1 -0
- package/dist/core/source-control.js +19 -0
- package/dist/core/source-control.js.map +1 -0
- package/dist/core/step-config/agent.d.ts +49 -0
- package/dist/core/step-config/agent.d.ts.map +1 -0
- package/dist/core/step-config/agent.js +337 -0
- package/dist/core/step-config/agent.js.map +1 -0
- package/dist/core/step-config/assemble-run-context.d.ts +94 -0
- package/dist/core/step-config/assemble-run-context.d.ts.map +1 -0
- package/dist/core/step-config/assemble-run-context.js +393 -0
- package/dist/core/step-config/assemble-run-context.js.map +1 -0
- package/dist/core/step-config/complete-step-dispatch-config.d.ts +13 -0
- package/dist/core/step-config/complete-step-dispatch-config.d.ts.map +1 -0
- package/dist/core/step-config/complete-step-dispatch-config.js +38 -0
- package/dist/core/step-config/complete-step-dispatch-config.js.map +1 -0
- package/dist/core/step-config/fields.d.ts +38 -0
- package/dist/core/step-config/fields.d.ts.map +1 -0
- package/dist/core/step-config/fields.js +72 -0
- package/dist/core/step-config/fields.js.map +1 -0
- package/dist/core/step-config/index.d.ts +8 -0
- package/dist/core/step-config/index.d.ts.map +1 -0
- package/dist/core/step-config/index.js +7 -0
- package/dist/core/step-config/index.js.map +1 -0
- package/dist/core/step-config/materialize-job-execution-steps.d.ts +35 -0
- package/dist/core/step-config/materialize-job-execution-steps.d.ts.map +1 -0
- package/dist/core/step-config/materialize-job-execution-steps.js +92 -0
- package/dist/core/step-config/materialize-job-execution-steps.js.map +1 -0
- package/dist/core/step-config/materialize-workflow-model.d.ts +42 -0
- package/dist/core/step-config/materialize-workflow-model.d.ts.map +1 -0
- package/dist/core/step-config/materialize-workflow-model.js +96 -0
- package/dist/core/step-config/materialize-workflow-model.js.map +1 -0
- package/dist/core/step-config/resolve-job-execution-name.d.ts +18 -0
- package/dist/core/step-config/resolve-job-execution-name.d.ts.map +1 -0
- package/dist/core/step-config/resolve-job-execution-name.js +36 -0
- package/dist/core/step-config/resolve-job-execution-name.js.map +1 -0
- package/dist/core/step-config/resolve-step-config.d.ts +33 -0
- package/dist/core/step-config/resolve-step-config.d.ts.map +1 -0
- package/dist/core/step-config/resolve-step-config.js +164 -0
- package/dist/core/step-config/resolve-step-config.js.map +1 -0
- package/dist/core/step-config/run.d.ts +39 -0
- package/dist/core/step-config/run.d.ts.map +1 -0
- package/dist/core/step-config/run.js +360 -0
- package/dist/core/step-config/run.js.map +1 -0
- package/dist/core/step-config/workflow-evaluation-context.d.ts +6 -0
- package/dist/core/step-config/workflow-evaluation-context.d.ts.map +1 -0
- package/dist/core/step-config/workflow-evaluation-context.js +3 -0
- package/dist/core/step-config/workflow-evaluation-context.js.map +1 -0
- package/dist/core/step-transition/apply-step-transition.d.ts +26 -0
- package/dist/core/step-transition/apply-step-transition.d.ts.map +1 -0
- package/dist/core/step-transition/apply-step-transition.js +141 -0
- package/dist/core/step-transition/apply-step-transition.js.map +1 -0
- package/dist/core/step-transition/decide-step-transition.d.ts +71 -0
- package/dist/core/step-transition/decide-step-transition.d.ts.map +1 -0
- package/dist/core/step-transition/decide-step-transition.js +110 -0
- package/dist/core/step-transition/decide-step-transition.js.map +1 -0
- package/dist/core/step-transition/evaluate-gate.d.ts +28 -0
- package/dist/core/step-transition/evaluate-gate.d.ts.map +1 -0
- package/dist/core/step-transition/evaluate-gate.js +159 -0
- package/dist/core/step-transition/evaluate-gate.js.map +1 -0
- package/dist/core/step-transition/read-step-outputs.d.ts +3 -0
- package/dist/core/step-transition/read-step-outputs.d.ts.map +1 -0
- package/dist/core/step-transition/read-step-outputs.js +24 -0
- package/dist/core/step-transition/read-step-outputs.js.map +1 -0
- package/dist/core/workflow-run-creation.d.ts +43 -0
- package/dist/core/workflow-run-creation.d.ts.map +1 -0
- package/dist/core/workflow-run-creation.js +80 -0
- package/dist/core/workflow-run-creation.js.map +1 -0
- package/dist/core/workflow-scheduling/index.d.ts +5 -0
- package/dist/core/workflow-scheduling/index.d.ts.map +1 -0
- package/dist/core/workflow-scheduling/index.js +4 -0
- package/dist/core/workflow-scheduling/index.js.map +1 -0
- package/dist/core/workflow-scheduling/run-progress.d.ts +20 -0
- package/dist/core/workflow-scheduling/run-progress.d.ts.map +1 -0
- package/dist/core/workflow-scheduling/run-progress.js +40 -0
- package/dist/core/workflow-scheduling/run-progress.js.map +1 -0
- package/dist/core/workflow-scheduling/runtime-dag.d.ts +10 -0
- package/dist/core/workflow-scheduling/runtime-dag.d.ts.map +1 -0
- package/dist/core/workflow-scheduling/runtime-dag.js +3 -0
- package/dist/core/workflow-scheduling/runtime-dag.js.map +1 -0
- package/dist/core/workflow-scheduling/runtime-scheduling-command.d.ts +16 -0
- package/dist/core/workflow-scheduling/runtime-scheduling-command.d.ts.map +1 -0
- package/dist/core/workflow-scheduling/runtime-scheduling-command.js +3 -0
- package/dist/core/workflow-scheduling/runtime-scheduling-command.js.map +1 -0
- package/dist/core/workflow-scheduling/schedule-runtime-dag.d.ts +9 -0
- package/dist/core/workflow-scheduling/schedule-runtime-dag.d.ts.map +1 -0
- package/dist/core/workflow-scheduling/schedule-runtime-dag.js +72 -0
- package/dist/core/workflow-scheduling/schedule-runtime-dag.js.map +1 -0
- package/dist/db/db.d.ts +4959 -0
- package/dist/db/db.d.ts.map +1 -0
- package/dist/db/db.js +37 -0
- package/dist/db/db.js.map +1 -0
- package/dist/db/index.d.ts +9 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +10 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/job-listener-events.d.ts +18 -0
- package/dist/db/job-listener-events.d.ts.map +1 -0
- package/dist/db/job-listener-events.js +59 -0
- package/dist/db/job-listener-events.js.map +1 -0
- package/dist/db/job-listeners.d.ts +55 -0
- package/dist/db/job-listeners.d.ts.map +1 -0
- package/dist/db/job-listeners.js +358 -0
- package/dist/db/job-listeners.js.map +1 -0
- package/dist/db/outbox-writes.d.ts +12 -0
- package/dist/db/outbox-writes.d.ts.map +1 -0
- package/dist/db/outbox-writes.js +20 -0
- package/dist/db/outbox-writes.js.map +1 -0
- package/dist/db/runner-lease-table.d.ts +469 -0
- package/dist/db/runner-lease-table.d.ts.map +1 -0
- package/dist/db/runner-lease-table.js +42 -0
- package/dist/db/runner-lease-table.js.map +1 -0
- package/dist/db/schema/common.d.ts +2 -0
- package/dist/db/schema/common.d.ts.map +1 -0
- package/dist/db/schema/common.js +4 -0
- package/dist/db/schema/common.js.map +1 -0
- package/dist/db/schema/job-executions.d.ts +311 -0
- package/dist/db/schema/job-executions.d.ts.map +1 -0
- package/dist/db/schema/job-executions.js +76 -0
- package/dist/db/schema/job-executions.js.map +1 -0
- package/dist/db/schema/job-listener-events.d.ts +200 -0
- package/dist/db/schema/job-listener-events.d.ts.map +1 -0
- package/dist/db/schema/job-listener-events.js +50 -0
- package/dist/db/schema/job-listener-events.js.map +1 -0
- package/dist/db/schema/jobs.d.ts +542 -0
- package/dist/db/schema/jobs.d.ts.map +1 -0
- package/dist/db/schema/jobs.js +121 -0
- package/dist/db/schema/jobs.js.map +1 -0
- package/dist/db/schema/outbox.d.ts +195 -0
- package/dist/db/schema/outbox.d.ts.map +1 -0
- package/dist/db/schema/outbox.js +5 -0
- package/dist/db/schema/outbox.js.map +1 -0
- package/dist/db/schema/step-attempts.d.ts +330 -0
- package/dist/db/schema/step-attempts.d.ts.map +1 -0
- package/dist/db/schema/step-attempts.js +80 -0
- package/dist/db/schema/step-attempts.js.map +1 -0
- package/dist/db/schema/steps.d.ts +352 -0
- package/dist/db/schema/steps.d.ts.map +1 -0
- package/dist/db/schema/steps.js +80 -0
- package/dist/db/schema/steps.js.map +1 -0
- package/dist/db/schema/workflow-run-attempts.d.ts +239 -0
- package/dist/db/schema/workflow-run-attempts.d.ts.map +1 -0
- package/dist/db/schema/workflow-run-attempts.js +53 -0
- package/dist/db/schema/workflow-run-attempts.js.map +1 -0
- package/dist/db/schema/workflow-runs.d.ts +360 -0
- package/dist/db/schema/workflow-runs.d.ts.map +1 -0
- package/dist/db/schema/workflow-runs.js +85 -0
- package/dist/db/schema/workflow-runs.js.map +1 -0
- package/dist/db/workflow-runs/job-executions.d.ts +49 -0
- package/dist/db/workflow-runs/job-executions.d.ts.map +1 -0
- package/dist/db/workflow-runs/job-executions.js +271 -0
- package/dist/db/workflow-runs/job-executions.js.map +1 -0
- package/dist/db/workflow-runs/jobs.d.ts +60 -0
- package/dist/db/workflow-runs/jobs.d.ts.map +1 -0
- package/dist/db/workflow-runs/jobs.js +288 -0
- package/dist/db/workflow-runs/jobs.js.map +1 -0
- package/dist/db/workflow-runs/outbox.d.ts +20 -0
- package/dist/db/workflow-runs/outbox.d.ts.map +1 -0
- package/dist/db/workflow-runs/outbox.js +68 -0
- package/dist/db/workflow-runs/outbox.js.map +1 -0
- package/dist/db/workflow-runs/queries.d.ts +71 -0
- package/dist/db/workflow-runs/queries.d.ts.map +1 -0
- package/dist/db/workflow-runs/queries.js +253 -0
- package/dist/db/workflow-runs/queries.js.map +1 -0
- package/dist/db/workflow-runs/run-create.d.ts +32 -0
- package/dist/db/workflow-runs/run-create.d.ts.map +1 -0
- package/dist/db/workflow-runs/run-create.js +288 -0
- package/dist/db/workflow-runs/run-create.js.map +1 -0
- package/dist/db/workflow-runs/run-graph.d.ts +27 -0
- package/dist/db/workflow-runs/run-graph.d.ts.map +1 -0
- package/dist/db/workflow-runs/run-graph.js +63 -0
- package/dist/db/workflow-runs/run-graph.js.map +1 -0
- package/dist/db/workflow-runs/run-rerun.d.ts +8 -0
- package/dist/db/workflow-runs/run-rerun.d.ts.map +1 -0
- package/dist/db/workflow-runs/run-rerun.js +207 -0
- package/dist/db/workflow-runs/run-rerun.js.map +1 -0
- package/dist/db/workflow-runs/run-status.d.ts +24 -0
- package/dist/db/workflow-runs/run-status.d.ts.map +1 -0
- package/dist/db/workflow-runs/run-status.js +249 -0
- package/dist/db/workflow-runs/run-status.js.map +1 -0
- package/dist/db/workflow-runs/runs.d.ts +7 -0
- package/dist/db/workflow-runs/runs.d.ts.map +1 -0
- package/dist/db/workflow-runs/runs.js +5 -0
- package/dist/db/workflow-runs/runs.js.map +1 -0
- package/dist/db/workflow-runs/shared.d.ts +24 -0
- package/dist/db/workflow-runs/shared.d.ts.map +1 -0
- package/dist/db/workflow-runs/shared.js +50 -0
- package/dist/db/workflow-runs/shared.js.map +1 -0
- package/dist/db/workflow-runs/steps.d.ts +83 -0
- package/dist/db/workflow-runs/steps.d.ts.map +1 -0
- package/dist/db/workflow-runs/steps.js +246 -0
- package/dist/db/workflow-runs/steps.js.map +1 -0
- package/dist/db/workflow-runs.d.ts +12 -0
- package/dist/db/workflow-runs.d.ts.map +1 -0
- package/dist/db/workflow-runs.js +8 -0
- package/dist/db/workflow-runs.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +54 -0
- package/dist/index.js.map +1 -0
- package/dist/metrics/index.d.ts +2 -0
- package/dist/metrics/index.d.ts.map +1 -0
- package/dist/metrics/index.js +3 -0
- package/dist/metrics/index.js.map +1 -0
- package/dist/metrics/instance.d.ts +20 -0
- package/dist/metrics/instance.d.ts.map +1 -0
- package/dist/metrics/instance.js +127 -0
- package/dist/metrics/instance.js.map +1 -0
- package/dist/metrics/service.d.ts +2 -0
- package/dist/metrics/service.d.ts.map +1 -0
- package/dist/metrics/service.js +30 -0
- package/dist/metrics/service.js.map +1 -0
- package/dist/presentation/dto/checkout-token.d.ts +6 -0
- package/dist/presentation/dto/checkout-token.d.ts.map +1 -0
- package/dist/presentation/dto/checkout-token.js +74 -0
- package/dist/presentation/dto/checkout-token.js.map +1 -0
- package/dist/presentation/dto/index.d.ts +4 -0
- package/dist/presentation/dto/index.d.ts.map +1 -0
- package/dist/presentation/dto/index.js +5 -0
- package/dist/presentation/dto/index.js.map +1 -0
- package/dist/presentation/dto/job.d.ts +6 -0
- package/dist/presentation/dto/job.d.ts.map +1 -0
- package/dist/presentation/dto/job.js +59 -0
- package/dist/presentation/dto/job.js.map +1 -0
- package/dist/presentation/dto/step.d.ts +6 -0
- package/dist/presentation/dto/step.d.ts.map +1 -0
- package/dist/presentation/dto/step.js +162 -0
- package/dist/presentation/dto/step.js.map +1 -0
- package/dist/presentation/dto/workflow-run.d.ts +6 -0
- package/dist/presentation/dto/workflow-run.d.ts.map +1 -0
- package/dist/presentation/dto/workflow-run.js +35 -0
- package/dist/presentation/dto/workflow-run.js.map +1 -0
- package/dist/presentation/index.d.ts +3 -0
- package/dist/presentation/index.d.ts.map +1 -0
- package/dist/presentation/index.js +4 -0
- package/dist/presentation/index.js.map +1 -0
- package/dist/presentation/routes/agent-runtime-config.d.ts +2 -0
- package/dist/presentation/routes/agent-runtime-config.d.ts.map +1 -0
- package/dist/presentation/routes/agent-runtime-config.js +71 -0
- package/dist/presentation/routes/agent-runtime-config.js.map +1 -0
- package/dist/presentation/routes/cancel-run.d.ts +2 -0
- package/dist/presentation/routes/cancel-run.d.ts.map +1 -0
- package/dist/presentation/routes/cancel-run.js +46 -0
- package/dist/presentation/routes/cancel-run.js.map +1 -0
- package/dist/presentation/routes/checkout-token.d.ts +2 -0
- package/dist/presentation/routes/checkout-token.d.ts.map +1 -0
- package/dist/presentation/routes/checkout-token.js +64 -0
- package/dist/presentation/routes/checkout-token.js.map +1 -0
- package/dist/presentation/routes/get-run-aggregates.d.ts +2 -0
- package/dist/presentation/routes/get-run-aggregates.d.ts.map +1 -0
- package/dist/presentation/routes/get-run-aggregates.js +60 -0
- package/dist/presentation/routes/get-run-aggregates.js.map +1 -0
- package/dist/presentation/routes/get-run.d.ts +2 -0
- package/dist/presentation/routes/get-run.d.ts.map +1 -0
- package/dist/presentation/routes/get-run.js +60 -0
- package/dist/presentation/routes/get-run.js.map +1 -0
- package/dist/presentation/routes/get-step-secrets.d.ts +2 -0
- package/dist/presentation/routes/get-step-secrets.d.ts.map +1 -0
- package/dist/presentation/routes/get-step-secrets.js +115 -0
- package/dist/presentation/routes/get-step-secrets.js.map +1 -0
- package/dist/presentation/routes/index.d.ts +4 -0
- package/dist/presentation/routes/index.d.ts.map +1 -0
- package/dist/presentation/routes/index.js +41 -0
- package/dist/presentation/routes/index.js.map +1 -0
- package/dist/presentation/routes/leased-step.d.ts +14 -0
- package/dist/presentation/routes/leased-step.d.ts.map +1 -0
- package/dist/presentation/routes/leased-step.js +50 -0
- package/dist/presentation/routes/leased-step.js.map +1 -0
- package/dist/presentation/routes/list-run-attempts.d.ts +2 -0
- package/dist/presentation/routes/list-run-attempts.d.ts.map +1 -0
- package/dist/presentation/routes/list-run-attempts.js +35 -0
- package/dist/presentation/routes/list-run-attempts.js.map +1 -0
- package/dist/presentation/routes/list-runs.d.ts +2 -0
- package/dist/presentation/routes/list-runs.d.ts.map +1 -0
- package/dist/presentation/routes/list-runs.js +70 -0
- package/dist/presentation/routes/list-runs.js.map +1 -0
- package/dist/presentation/routes/next-step.d.ts +2 -0
- package/dist/presentation/routes/next-step.d.ts.map +1 -0
- package/dist/presentation/routes/next-step.js +65 -0
- package/dist/presentation/routes/next-step.js.map +1 -0
- package/dist/presentation/routes/report-step.d.ts +2 -0
- package/dist/presentation/routes/report-step.d.ts.map +1 -0
- package/dist/presentation/routes/report-step.js +73 -0
- package/dist/presentation/routes/report-step.js.map +1 -0
- package/dist/presentation/routes/require-accessible-run.d.ts +7 -0
- package/dist/presentation/routes/require-accessible-run.d.ts.map +1 -0
- package/dist/presentation/routes/require-accessible-run.js +25 -0
- package/dist/presentation/routes/require-accessible-run.js.map +1 -0
- package/dist/presentation/routes/rerun-run.d.ts +2 -0
- package/dist/presentation/routes/rerun-run.d.ts.map +1 -0
- package/dist/presentation/routes/rerun-run.js +56 -0
- package/dist/presentation/routes/rerun-run.js.map +1 -0
- package/dist/presentation/subscribers/index.d.ts +8 -0
- package/dist/presentation/subscribers/index.d.ts.map +1 -0
- package/dist/presentation/subscribers/index.js +9 -0
- package/dist/presentation/subscribers/index.js.map +1 -0
- package/dist/presentation/subscribers/on-job-event-delivered.d.ts +3 -0
- package/dist/presentation/subscribers/on-job-event-delivered.d.ts.map +1 -0
- package/dist/presentation/subscribers/on-job-event-delivered.js +24 -0
- package/dist/presentation/subscribers/on-job-event-delivered.js.map +1 -0
- package/dist/presentation/subscribers/on-job-steps-settled.d.ts +3 -0
- package/dist/presentation/subscribers/on-job-steps-settled.d.ts.map +1 -0
- package/dist/presentation/subscribers/on-job-steps-settled.js +36 -0
- package/dist/presentation/subscribers/on-job-steps-settled.js.map +1 -0
- package/dist/presentation/subscribers/on-runner-job-claimed.d.ts +3 -0
- package/dist/presentation/subscribers/on-runner-job-claimed.d.ts.map +1 -0
- package/dist/presentation/subscribers/on-runner-job-claimed.js +20 -0
- package/dist/presentation/subscribers/on-runner-job-claimed.js.map +1 -0
- package/dist/presentation/subscribers/on-runner-job-lease-expired.d.ts +3 -0
- package/dist/presentation/subscribers/on-runner-job-lease-expired.d.ts.map +1 -0
- package/dist/presentation/subscribers/on-runner-job-lease-expired.js +35 -0
- package/dist/presentation/subscribers/on-runner-job-lease-expired.js.map +1 -0
- package/dist/presentation/subscribers/on-runner-job-queued.d.ts +3 -0
- package/dist/presentation/subscribers/on-runner-job-queued.d.ts.map +1 -0
- package/dist/presentation/subscribers/on-runner-job-queued.js +20 -0
- package/dist/presentation/subscribers/on-runner-job-queued.js.map +1 -0
- package/dist/presentation/subscribers/on-workflow-run-attempt-created.d.ts +3 -0
- package/dist/presentation/subscribers/on-workflow-run-attempt-created.d.ts.map +1 -0
- package/dist/presentation/subscribers/on-workflow-run-attempt-created.js +35 -0
- package/dist/presentation/subscribers/on-workflow-run-attempt-created.js.map +1 -0
- package/dist/presentation/subscribers/on-workflow-run-cancelled.d.ts +3 -0
- package/dist/presentation/subscribers/on-workflow-run-cancelled.d.ts.map +1 -0
- package/dist/presentation/subscribers/on-workflow-run-cancelled.js +25 -0
- package/dist/presentation/subscribers/on-workflow-run-cancelled.js.map +1 -0
- package/dist/temporal/activities/index.d.ts +23 -0
- package/dist/temporal/activities/index.d.ts.map +1 -0
- package/dist/temporal/activities/index.js +26 -0
- package/dist/temporal/activities/index.js.map +1 -0
- package/dist/temporal/activities/orchestration-activities.d.ts +130 -0
- package/dist/temporal/activities/orchestration-activities.d.ts.map +1 -0
- package/dist/temporal/activities/orchestration-activities.js +188 -0
- package/dist/temporal/activities/orchestration-activities.js.map +1 -0
- package/dist/temporal/constants.d.ts +7 -0
- package/dist/temporal/constants.d.ts.map +1 -0
- package/dist/temporal/constants.js +8 -0
- package/dist/temporal/constants.js.map +1 -0
- package/dist/temporal/index.d.ts +3 -0
- package/dist/temporal/index.d.ts.map +1 -0
- package/dist/temporal/index.js +4 -0
- package/dist/temporal/index.js.map +1 -0
- package/dist/temporal/workflow-not-found.d.ts +2 -0
- package/dist/temporal/workflow-not-found.d.ts.map +1 -0
- package/dist/temporal/workflow-not-found.js +10 -0
- package/dist/temporal/workflow-not-found.js.map +1 -0
- package/dist/temporal/workflows/deadline.d.ts +3 -0
- package/dist/temporal/workflows/deadline.d.ts.map +1 -0
- package/dist/temporal/workflows/deadline.js +8 -0
- package/dist/temporal/workflows/deadline.js.map +1 -0
- package/dist/temporal/workflows/index.d.ts +4 -0
- package/dist/temporal/workflows/index.d.ts.map +1 -0
- package/dist/temporal/workflows/index.js +5 -0
- package/dist/temporal/workflows/index.js.map +1 -0
- package/dist/temporal/workflows/job-execution-orchestration.d.ts +27 -0
- package/dist/temporal/workflows/job-execution-orchestration.d.ts.map +1 -0
- package/dist/temporal/workflows/job-execution-orchestration.js +265 -0
- package/dist/temporal/workflows/job-execution-orchestration.js.map +1 -0
- package/dist/temporal/workflows/job-listener-orchestration.d.ts +40 -0
- package/dist/temporal/workflows/job-listener-orchestration.d.ts.map +1 -0
- package/dist/temporal/workflows/job-listener-orchestration.js +332 -0
- package/dist/temporal/workflows/job-listener-orchestration.js.map +1 -0
- package/dist/temporal/workflows/run-orchestration.d.ts +8 -0
- package/dist/temporal/workflows/run-orchestration.d.ts.map +1 -0
- package/dist/temporal/workflows/run-orchestration.js +243 -0
- package/dist/temporal/workflows/run-orchestration.js.map +1 -0
- package/dist/temporal/workflows/test-env.d.ts +114 -0
- package/dist/temporal/workflows/test-env.d.ts.map +1 -0
- package/dist/temporal/workflows/test-env.js +323 -0
- package/dist/temporal/workflows/test-env.js.map +1 -0
- package/dist/tsconfig.test.tsbuildinfo +1 -0
- package/drizzle/0000_initial.sql +211 -0
- package/drizzle/0001_agent_tool_materialization.sql +1 -0
- package/drizzle/meta/0000_snapshot.json +1613 -0
- package/drizzle/meta/_journal.json +20 -0
- package/drizzle.config.ts +7 -0
- package/package.json +91 -0
- package/src/core/README.md +79 -0
- package/src/core/agent-tool-capability-warning.test.ts +280 -0
- package/src/core/agent-tool-capability-warning.ts +200 -0
- package/src/core/agent-tools.ts +422 -0
- package/src/core/checkout.test.ts +112 -0
- package/src/core/checkout.ts +63 -0
- package/src/core/condition-trace.ts +64 -0
- package/src/core/entities/index.ts +9 -0
- package/src/core/entities/job-execution.ts +32 -0
- package/src/core/entities/job-listener-event.ts +15 -0
- package/src/core/entities/job.ts +91 -0
- package/src/core/entities/step.ts +126 -0
- package/src/core/entities/workflow-run-attempt.ts +21 -0
- package/src/core/entities/workflow-run.ts +94 -0
- package/src/core/errors.test.ts +45 -0
- package/src/core/errors.ts +209 -0
- package/src/core/index.ts +54 -0
- package/src/core/job-execution-outcome.ts +64 -0
- package/src/core/job-execution.test.ts +1560 -0
- package/src/core/job-execution.ts +581 -0
- package/src/core/job-transition/decide-job-activation.test.ts +196 -0
- package/src/core/job-transition/decide-job-activation.ts +79 -0
- package/src/core/job-transition/derive-job-execution-outputs.ts +41 -0
- package/src/core/job-transition/derive-job-success.test.ts +133 -0
- package/src/core/job-transition/derive-job-success.ts +67 -0
- package/src/core/job-transition/index.ts +11 -0
- package/src/core/job-transition/runtime-completion-status-for-job.ts +14 -0
- package/src/core/listener-execution-materialization.test.ts +49 -0
- package/src/core/listener-execution-materialization.ts +162 -0
- package/src/core/run-workflow.test.ts +229 -0
- package/src/core/run-workflow.ts +41 -0
- package/src/core/source-control.test.ts +17 -0
- package/src/core/source-control.ts +22 -0
- package/src/core/step-config/agent.ts +459 -0
- package/src/core/step-config/assemble-run-context.test.ts +1021 -0
- package/src/core/step-config/assemble-run-context.ts +535 -0
- package/src/core/step-config/complete-step-dispatch-config.test.ts +354 -0
- package/src/core/step-config/complete-step-dispatch-config.ts +40 -0
- package/src/core/step-config/fields.ts +111 -0
- package/src/core/step-config/index.ts +41 -0
- package/src/core/step-config/materialize-job-execution-steps.test.ts +494 -0
- package/src/core/step-config/materialize-job-execution-steps.ts +136 -0
- package/src/core/step-config/materialize-workflow-model.test.ts +1214 -0
- package/src/core/step-config/materialize-workflow-model.ts +140 -0
- package/src/core/step-config/resolve-job-execution-name.test.ts +94 -0
- package/src/core/step-config/resolve-job-execution-name.ts +51 -0
- package/src/core/step-config/resolve-step-config.ts +199 -0
- package/src/core/step-config/run.ts +467 -0
- package/src/core/step-config/workflow-evaluation-context.ts +6 -0
- package/src/core/step-transition/apply-step-transition.ts +163 -0
- package/src/core/step-transition/decide-step-transition.test.ts +307 -0
- package/src/core/step-transition/decide-step-transition.ts +200 -0
- package/src/core/step-transition/evaluate-gate.test.ts +317 -0
- package/src/core/step-transition/evaluate-gate.ts +168 -0
- package/src/core/step-transition/read-step-outputs.ts +27 -0
- package/src/core/workflow-run-creation.test.ts +155 -0
- package/src/core/workflow-run-creation.ts +131 -0
- package/src/core/workflow-scheduling/index.ts +15 -0
- package/src/core/workflow-scheduling/run-progress.test.ts +46 -0
- package/src/core/workflow-scheduling/run-progress.ts +68 -0
- package/src/core/workflow-scheduling/runtime-dag.ts +10 -0
- package/src/core/workflow-scheduling/runtime-scheduling-command.ts +20 -0
- package/src/core/workflow-scheduling/schedule-runtime-dag.test.ts +197 -0
- package/src/core/workflow-scheduling/schedule-runtime-dag.ts +115 -0
- package/src/db/db.ts +40 -0
- package/src/db/index.ts +86 -0
- package/src/db/job-listener-events.test.ts +113 -0
- package/src/db/job-listener-events.ts +73 -0
- package/src/db/job-listeners.test.ts +865 -0
- package/src/db/job-listeners.ts +564 -0
- package/src/db/outbox-writes.ts +40 -0
- package/src/db/rerun-listener.test.ts +64 -0
- package/src/db/run-timeout.test.ts +102 -0
- package/src/db/runner-lease-table.ts +39 -0
- package/src/db/schema/common.ts +3 -0
- package/src/db/schema/job-executions.ts +85 -0
- package/src/db/schema/job-listener-events.ts +58 -0
- package/src/db/schema/jobs.ts +136 -0
- package/src/db/schema/outbox.ts +4 -0
- package/src/db/schema/step-attempts.ts +99 -0
- package/src/db/schema/steps.ts +99 -0
- package/src/db/schema/workflow-run-attempts.ts +59 -0
- package/src/db/schema/workflow-runs.ts +112 -0
- package/src/db/workflow-runs/job-executions.test.ts +99 -0
- package/src/db/workflow-runs/job-executions.ts +421 -0
- package/src/db/workflow-runs/job-status.test.ts +532 -0
- package/src/db/workflow-runs/jobs.test.ts +194 -0
- package/src/db/workflow-runs/jobs.ts +418 -0
- package/src/db/workflow-runs/outbox.ts +109 -0
- package/src/db/workflow-runs/queries.test.ts +256 -0
- package/src/db/workflow-runs/queries.ts +437 -0
- package/src/db/workflow-runs/run-create.test.ts +1281 -0
- package/src/db/workflow-runs/run-create.ts +373 -0
- package/src/db/workflow-runs/run-graph.ts +95 -0
- package/src/db/workflow-runs/run-rerun.test.ts +625 -0
- package/src/db/workflow-runs/run-rerun.ts +266 -0
- package/src/db/workflow-runs/run-status.test.ts +425 -0
- package/src/db/workflow-runs/run-status.ts +391 -0
- package/src/db/workflow-runs/runs.ts +17 -0
- package/src/db/workflow-runs/shared.ts +84 -0
- package/src/db/workflow-runs/steps.test.ts +191 -0
- package/src/db/workflow-runs/steps.ts +476 -0
- package/src/db/workflow-runs.ts +111 -0
- package/src/index.ts +99 -0
- package/src/metrics/index.ts +1 -0
- package/src/metrics/instance.ts +160 -0
- package/src/metrics/service.ts +30 -0
- package/src/presentation/dto/checkout-token.test.ts +107 -0
- package/src/presentation/dto/checkout-token.ts +85 -0
- package/src/presentation/dto/index.ts +3 -0
- package/src/presentation/dto/job.test.ts +108 -0
- package/src/presentation/dto/job.ts +64 -0
- package/src/presentation/dto/step.test.ts +307 -0
- package/src/presentation/dto/step.ts +145 -0
- package/src/presentation/dto/workflow-run.ts +38 -0
- package/src/presentation/index.ts +10 -0
- package/src/presentation/routes/agent-runtime-config.test.ts +478 -0
- package/src/presentation/routes/agent-runtime-config.ts +81 -0
- package/src/presentation/routes/cancel-run.test.ts +156 -0
- package/src/presentation/routes/cancel-run.ts +37 -0
- package/src/presentation/routes/checkout-token.test.ts +366 -0
- package/src/presentation/routes/checkout-token.ts +61 -0
- package/src/presentation/routes/get-run-aggregates.test.ts +114 -0
- package/src/presentation/routes/get-run-aggregates.ts +69 -0
- package/src/presentation/routes/get-run.test.ts +604 -0
- package/src/presentation/routes/get-run.ts +66 -0
- package/src/presentation/routes/get-step-secrets.test.ts +260 -0
- package/src/presentation/routes/get-step-secrets.ts +117 -0
- package/src/presentation/routes/index.test.ts +71 -0
- package/src/presentation/routes/index.ts +42 -0
- package/src/presentation/routes/leased-step.ts +54 -0
- package/src/presentation/routes/list-run-attempts.test.ts +163 -0
- package/src/presentation/routes/list-run-attempts.ts +27 -0
- package/src/presentation/routes/list-runs.test.ts +244 -0
- package/src/presentation/routes/list-runs.ts +83 -0
- package/src/presentation/routes/next-step.test.ts +366 -0
- package/src/presentation/routes/next-step.ts +62 -0
- package/src/presentation/routes/report-step.test.ts +374 -0
- package/src/presentation/routes/report-step.ts +61 -0
- package/src/presentation/routes/require-accessible-run.ts +27 -0
- package/src/presentation/routes/rerun-run.test.ts +202 -0
- package/src/presentation/routes/rerun-run.ts +48 -0
- package/src/presentation/subscribers/index.ts +7 -0
- package/src/presentation/subscribers/on-job-event-delivered.test.ts +71 -0
- package/src/presentation/subscribers/on-job-event-delivered.ts +30 -0
- package/src/presentation/subscribers/on-job-steps-settled.test.ts +75 -0
- package/src/presentation/subscribers/on-job-steps-settled.ts +42 -0
- package/src/presentation/subscribers/on-runner-job-claimed.test.ts +57 -0
- package/src/presentation/subscribers/on-runner-job-claimed.ts +23 -0
- package/src/presentation/subscribers/on-runner-job-lease-expired.test.ts +73 -0
- package/src/presentation/subscribers/on-runner-job-lease-expired.ts +36 -0
- package/src/presentation/subscribers/on-runner-job-queued.test.ts +57 -0
- package/src/presentation/subscribers/on-runner-job-queued.ts +23 -0
- package/src/presentation/subscribers/on-workflow-run-attempt-created.test.ts +69 -0
- package/src/presentation/subscribers/on-workflow-run-attempt-created.ts +40 -0
- package/src/presentation/subscribers/on-workflow-run-cancelled.test.ts +59 -0
- package/src/presentation/subscribers/on-workflow-run-cancelled.ts +29 -0
- package/src/temporal/activities/index.ts +45 -0
- package/src/temporal/activities/orchestration-activities.test.ts +115 -0
- package/src/temporal/activities/orchestration-activities.ts +305 -0
- package/src/temporal/constants.ts +6 -0
- package/src/temporal/index.ts +6 -0
- package/src/temporal/workflow-not-found.ts +9 -0
- package/src/temporal/workflows/deadline.ts +7 -0
- package/src/temporal/workflows/index.ts +11 -0
- package/src/temporal/workflows/job-execution-orchestration-timeout.test.ts +165 -0
- package/src/temporal/workflows/job-execution-orchestration.test.ts +311 -0
- package/src/temporal/workflows/job-execution-orchestration.ts +314 -0
- package/src/temporal/workflows/job-listener-orchestration-continuation.test.ts +93 -0
- package/src/temporal/workflows/job-listener-orchestration.test.ts +406 -0
- package/src/temporal/workflows/job-listener-orchestration.ts +490 -0
- package/src/temporal/workflows/run-orchestration.test.ts +409 -0
- package/src/temporal/workflows/run-orchestration.ts +283 -0
- package/src/temporal/workflows/test-env.ts +409 -0
- package/test/env.ts +11 -0
- package/test/factories/job.ts +83 -0
- package/test/factories/project.ts +16 -0
- package/test/factories/workflow-model.test.ts +26 -0
- package/test/factories/workflow-model.ts +268 -0
- package/test/factories/workflow-run.ts +58 -0
- package/test/fixtures/active-lease-token.ts +85 -0
- package/test/fixtures/job-with-steps.ts +42 -0
- package/test/fixtures/lease-token.ts +44 -0
- package/test/fixtures/strip-setup-step.ts +23 -0
- package/test/globalSetup.ts +54 -0
- package/test/helpers/workflow-runs.ts +210 -0
- package/test/index.ts +3 -0
- package/test/setup.ts +17 -0
- package/tsconfig.build.json +9 -0
- package/tsconfig.build.tsbuildinfo +1 -0
- package/tsconfig.json +3 -0
- package/tsconfig.test.json +8 -0
- package/vitest.config.ts +12 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/step-config/resolve-step-config.ts"],"sourcesContent":["import type {AgentDefaultsResolver} from '@shipfox/api-agent/core/resolve-agent-config';\nimport type {WorkflowEnvTemplates, WorkflowModel} from '@shipfox/api-definitions';\nimport {\n type AvailabilitySite,\n capTraceEntries,\n type EvaluationTraceLimitEntry,\n type WorkflowExpressionEvaluationContext,\n} from '@shipfox/expression';\nimport type {\n AgentToolMaterializationContext,\n AgentToolMaterializationSnapshot,\n} from '#core/agent-tools.js';\nimport type {StepConfigDispatchPlan} from '#core/entities/step.js';\nimport {resolveAgentStepConfig} from './agent.js';\nimport {\n freezeStepField,\n type StepConfigField,\n type WorkflowStepEvaluationTraceEntry,\n type WorkflowStepTemplateDiagnostic,\n} from './fields.js';\nimport {resolveRunStepConfig, type StepConfigMode} from './run.js';\nimport type {WorkflowEvaluationContext} from './workflow-evaluation-context.js';\n\ntype WorkflowModelJob = WorkflowModel['jobs'][number];\ntype WorkflowModelStep = WorkflowModelJob['steps'][number];\ntype WorkflowModelRunStep = Extract<WorkflowModelStep, {kind: 'run'}>;\ntype WorkflowModelAgentStep = Extract<WorkflowModelStep, {kind: 'agent'}>;\n\nexport type {StepConfigField, WorkflowStepTemplateDiagnostic};\n\nexport interface ResolvedStepConfig {\n readonly config: Record<string, unknown>;\n readonly configPlan: StepConfigDispatchPlan | null;\n readonly authoredConfig: Record<string, unknown> | null;\n readonly name?: string;\n readonly diagnostics: readonly WorkflowStepTemplateDiagnostic[];\n readonly trace: readonly (WorkflowStepEvaluationTraceEntry | EvaluationTraceLimitEntry)[];\n}\n\nexport interface ResolveStepConfigParams {\n readonly jobKey: string;\n readonly step: WorkflowModelStep;\n readonly workflowEnv: WorkflowModel['env'];\n readonly workflowEnvTemplates: WorkflowEnvTemplates | undefined;\n readonly jobEnv: WorkflowModelJob['env'];\n readonly jobEnvTemplates: WorkflowEnvTemplates | undefined;\n readonly context: WorkflowExpressionEvaluationContext;\n readonly site: AvailabilitySite;\n readonly resolveAgentDefaults: AgentDefaultsResolver;\n readonly definitionId: string;\n readonly agentToolContext?: AgentToolMaterializationContext | undefined;\n readonly agentToolSnapshot?: AgentToolMaterializationSnapshot | null | undefined;\n}\n\ntype BuildStepConfigParams = ResolveStepConfigParams & {readonly mode: StepConfigMode};\n\ninterface BuiltStepConfig {\n readonly config: Record<string, unknown>;\n readonly configPlan: StepConfigDispatchPlan | null;\n readonly diagnostics: readonly WorkflowStepTemplateDiagnostic[];\n readonly trace: readonly WorkflowStepEvaluationTraceEntry[];\n readonly hasTemplates: boolean;\n}\n\nexport function resolveStepConfig(params: ResolveStepConfigParams): ResolvedStepConfig {\n const context = evaluationContext(params);\n const effective = buildStepConfig({...params, context, mode: 'effective'});\n const authoredConfig = effective.hasTemplates\n ? buildStepConfig({...params, context, mode: 'authored'}).config\n : null;\n const name = resolveStepName(params.step, context, params.definitionId);\n\n return {\n config: effective.config,\n configPlan: effective.configPlan,\n authoredConfig,\n ...(name.value === undefined || name.value === '' ? {} : {name: name.value}),\n diagnostics: [...effective.diagnostics, ...name.diagnostics],\n trace: capTraceEntries([...effective.trace, ...name.trace]),\n };\n}\n\nfunction buildStepConfig(\n params: Omit<BuildStepConfigParams, 'context'> & {readonly context: WorkflowEvaluationContext},\n): BuiltStepConfig {\n const gate = gateConfigForStep(params.step);\n const outputs = outputsConfigForStep(params.step);\n const runStep = runStepOrNull(params.step);\n const isRunStep = runStep !== null;\n\n if (isRunStep) {\n const run = resolveRunStepConfig({...params, step: runStep});\n return {\n config: {...run.config, ...gate, ...outputs},\n configPlan: run.configPlan,\n diagnostics: run.diagnostics,\n trace: run.trace,\n hasTemplates: run.hasTemplates,\n };\n }\n\n const agentStep = agentStepOrNull(params.step);\n if (agentStep === null) throw new Error(`Unsupported workflow step kind: ${params.step.kind}`);\n\n const agent = resolveAgentStepConfig({...params, step: agentStep});\n return {\n config: {...agent.config, ...gate, ...outputs},\n configPlan: agent.configPlan,\n diagnostics: agent.diagnostics,\n trace: agent.trace,\n hasTemplates: agent.hasTemplates,\n };\n}\n\nfunction evaluationContext(params: {\n readonly context: WorkflowExpressionEvaluationContext;\n readonly site: AvailabilitySite;\n}): WorkflowEvaluationContext {\n return {site: params.site, values: params.context};\n}\n\nfunction runStepOrNull(step: WorkflowModelStep): WorkflowModelRunStep | null {\n const isRunStep = step.kind === 'run';\n return isRunStep ? step : null;\n}\n\nfunction agentStepOrNull(step: WorkflowModelStep): WorkflowModelAgentStep | null {\n const isAgentStep = step.kind === 'agent';\n return isAgentStep ? step : null;\n}\n\nfunction gateConfigForStep(step: WorkflowModelStep): Record<string, unknown> {\n const hasGate = step.gate !== undefined;\n return hasGate ? {gate: stepGateConfig(step.gate)} : {};\n}\n\nfunction outputsConfigForStep(step: WorkflowModelStep): Record<string, unknown> {\n const hasOutputs = step.outputs !== undefined;\n return hasOutputs ? {outputs: step.outputs} : {};\n}\n\nfunction resolveStepName(\n step: WorkflowModelStep,\n context: WorkflowEvaluationContext,\n definitionId: string,\n): {\n readonly value: string | undefined;\n readonly diagnostics: readonly WorkflowStepTemplateDiagnostic[];\n readonly trace: readonly WorkflowStepEvaluationTraceEntry[];\n} {\n const hasName = step.name !== undefined;\n if (!hasName) return {value: undefined, diagnostics: [], trace: []};\n\n const hasNameTemplate = step.templates?.name !== undefined;\n if (!hasNameTemplate) return {value: step.name, diagnostics: [], trace: []};\n\n const resolved = freezeStepField({\n field: 'step.name',\n template: {segments: step.templates.name},\n context,\n definitionId,\n errorField: 'step.name',\n });\n return {\n value: resolved.value,\n diagnostics: resolved.diagnostics.map((diagnostic) => ({...diagnostic, field: 'step.name'})),\n trace: resolved.trace.map((entry) => ({...entry, field: 'step.name'})),\n };\n}\n\nfunction stepGateConfig(gate: NonNullable<WorkflowModelStep['gate']>): Record<string, unknown> {\n const hasSuccess = gate.success !== undefined;\n const hasOnFailure = gate.onFailure !== undefined;\n const hasOnFailureFeedback = gate.onFailure?.feedback !== undefined;\n const hasOnFailureFeedbackTemplate = gate.onFailure?.feedbackTemplate !== undefined;\n\n return {\n ...(hasSuccess\n ? {\n success: {\n language: gate.success.language,\n check: gate.success.check,\n source: gate.success.source,\n },\n }\n : {}),\n ...(hasOnFailure\n ? {\n on_failure: {\n restart_from: gate.onFailure.restartFrom,\n ...(hasOnFailureFeedback ? {feedback: gate.onFailure.feedback} : {}),\n ...(hasOnFailureFeedbackTemplate\n ? {feedback_template: {segments: gate.onFailure.feedbackTemplate}}\n : {}),\n },\n }\n : {}),\n };\n}\n"],"names":["capTraceEntries","resolveAgentStepConfig","freezeStepField","resolveRunStepConfig","resolveStepConfig","params","context","evaluationContext","effective","buildStepConfig","mode","authoredConfig","hasTemplates","config","name","resolveStepName","step","definitionId","configPlan","value","undefined","diagnostics","trace","gate","gateConfigForStep","outputs","outputsConfigForStep","runStep","runStepOrNull","isRunStep","run","agentStep","agentStepOrNull","Error","kind","agent","site","values","isAgentStep","hasGate","stepGateConfig","hasOutputs","hasName","hasNameTemplate","templates","resolved","field","template","segments","errorField","map","diagnostic","entry","hasSuccess","success","hasOnFailure","onFailure","hasOnFailureFeedback","feedback","hasOnFailureFeedbackTemplate","feedbackTemplate","language","check","source","on_failure","restart_from","restartFrom","feedback_template"],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { WorkflowModel } from '@shipfox/api-definitions';
|
|
2
|
+
import { type ResolvedField } from '@shipfox/expression';
|
|
3
|
+
import type { PersistedEvaluationTraceEntry, StepConfigDispatchPlan } from '#core/entities/step.js';
|
|
4
|
+
import { type WorkflowStepEvaluationTraceEntry, type WorkflowStepTemplateDiagnostic } from './fields.js';
|
|
5
|
+
import type { WorkflowEvaluationContext } from './workflow-evaluation-context.js';
|
|
6
|
+
type WorkflowModelJob = WorkflowModel['jobs'][number];
|
|
7
|
+
type WorkflowModelStep = WorkflowModelJob['steps'][number];
|
|
8
|
+
type WorkflowModelRunStep = Extract<WorkflowModelStep, {
|
|
9
|
+
kind: 'run';
|
|
10
|
+
}>;
|
|
11
|
+
export type StepConfigMode = 'effective' | 'authored';
|
|
12
|
+
export interface ResolveRunStepConfigParams {
|
|
13
|
+
readonly step: WorkflowModelRunStep;
|
|
14
|
+
readonly workflowEnv: WorkflowModel['env'];
|
|
15
|
+
readonly workflowEnvTemplates: WorkflowEnvTemplates | undefined;
|
|
16
|
+
readonly jobEnv: WorkflowModelJob['env'];
|
|
17
|
+
readonly jobEnvTemplates: WorkflowEnvTemplates | undefined;
|
|
18
|
+
readonly context: WorkflowEvaluationContext;
|
|
19
|
+
readonly mode: StepConfigMode;
|
|
20
|
+
readonly definitionId: string;
|
|
21
|
+
}
|
|
22
|
+
type WorkflowEnvTemplates = Readonly<Record<string, ResolvedField['segments']>>;
|
|
23
|
+
export interface RunStepConfig {
|
|
24
|
+
readonly config: Record<string, unknown>;
|
|
25
|
+
readonly configPlan: StepConfigDispatchPlan | null;
|
|
26
|
+
readonly diagnostics: readonly WorkflowStepTemplateDiagnostic[];
|
|
27
|
+
readonly trace: readonly WorkflowStepEvaluationTraceEntry[];
|
|
28
|
+
readonly hasTemplates: boolean;
|
|
29
|
+
}
|
|
30
|
+
export declare function resolveRunStepConfig(params: ResolveRunStepConfigParams): RunStepConfig;
|
|
31
|
+
export declare function completeRunDispatchConfig(params: {
|
|
32
|
+
readonly config: Record<string, unknown>;
|
|
33
|
+
readonly plan: StepConfigDispatchPlan;
|
|
34
|
+
readonly context: WorkflowEvaluationContext;
|
|
35
|
+
readonly definitionId: string;
|
|
36
|
+
readonly trace: PersistedEvaluationTraceEntry[];
|
|
37
|
+
}): void;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/core/step-config/run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAO5D,OAAO,EAKL,KAAK,aAAa,EAInB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAC,6BAA6B,EAAE,sBAAsB,EAAC,MAAM,wBAAwB,CAAC;AAElG,OAAO,EAIL,KAAK,gCAAgC,EACrC,KAAK,8BAA8B,EACpC,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAC,yBAAyB,EAAC,MAAM,kCAAkC,CAAC;AAEhF,KAAK,gBAAgB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;AACtD,KAAK,iBAAiB,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3D,KAAK,oBAAoB,GAAG,OAAO,CAAC,iBAAiB,EAAE;IAAC,IAAI,EAAE,KAAK,CAAA;CAAC,CAAC,CAAC;AAEtE,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,UAAU,CAAC;AAOtD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3C,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAChE,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACzC,QAAQ,CAAC,eAAe,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,KAAK,oBAAoB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAEhF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACnD,QAAQ,CAAC,WAAW,EAAE,SAAS,8BAA8B,EAAE,CAAC;IAChE,QAAQ,CAAC,KAAK,EAAE,SAAS,gCAAgC,EAAE,CAAC;IAC5D,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;CAChC;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,0BAA0B,GAAG,aAAa,CAyBtF;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAChD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC;IAC5C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,6BAA6B,EAAE,CAAC;CACjD,GAAG,IAAI,CAoCP"}
|
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
import { materializedSecretBindingSchema, secretStoreSchema } from '@shipfox/api-secrets-dto';
|
|
2
|
+
import { analyzeContextKeyAccess, evaluationTraceEntry, hoistPlannedRunCommand, runnerFillTarget, UnsafeRunInterpolationError } from '@shipfox/expression';
|
|
3
|
+
import { InterpolationUnresolvableError } from '#core/errors.js';
|
|
4
|
+
import { resolveStepField, stepConfigInterpolationError } from './fields.js';
|
|
5
|
+
export function resolveRunStepConfig(params) {
|
|
6
|
+
const env = winningEnv(params);
|
|
7
|
+
const envResolution = resolveEnv(env, params.context, params.mode, params.definitionId);
|
|
8
|
+
const commandResolution = resolveCommand({
|
|
9
|
+
step: params.step,
|
|
10
|
+
envKeys: [
|
|
11
|
+
...Object.keys(envResolution.env),
|
|
12
|
+
...Object.keys(envResolution.configPlan)
|
|
13
|
+
],
|
|
14
|
+
context: params.context,
|
|
15
|
+
mode: params.mode,
|
|
16
|
+
definitionId: params.definitionId
|
|
17
|
+
});
|
|
18
|
+
const mergedEnv = {
|
|
19
|
+
...envResolution.env,
|
|
20
|
+
...commandResolution.env
|
|
21
|
+
};
|
|
22
|
+
const hasEnvConfig = Object.keys(mergedEnv).length > 0;
|
|
23
|
+
const envConfig = hasEnvConfig ? {
|
|
24
|
+
env: mergedEnv
|
|
25
|
+
} : {};
|
|
26
|
+
const planEnv = {
|
|
27
|
+
...envResolution.configPlan,
|
|
28
|
+
...commandResolution.configPlan
|
|
29
|
+
};
|
|
30
|
+
const hasConfigPlan = Object.keys(planEnv).length > 0;
|
|
31
|
+
const configPlan = hasConfigPlan ? {
|
|
32
|
+
env: planEnv
|
|
33
|
+
} : null;
|
|
34
|
+
const hasTemplates = envResolution.hasTemplates || commandResolution.hasTemplate;
|
|
35
|
+
return {
|
|
36
|
+
config: {
|
|
37
|
+
run: commandResolution.command,
|
|
38
|
+
...envConfig
|
|
39
|
+
},
|
|
40
|
+
configPlan,
|
|
41
|
+
diagnostics: [
|
|
42
|
+
...envResolution.diagnostics,
|
|
43
|
+
...commandResolution.diagnostics
|
|
44
|
+
],
|
|
45
|
+
trace: [
|
|
46
|
+
...envResolution.trace,
|
|
47
|
+
...commandResolution.trace
|
|
48
|
+
],
|
|
49
|
+
hasTemplates
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export function completeRunDispatchConfig(params) {
|
|
53
|
+
const env = {
|
|
54
|
+
...readConfigEnv(params.config)
|
|
55
|
+
};
|
|
56
|
+
const secretBindings = [];
|
|
57
|
+
if (params.plan.run !== undefined) {
|
|
58
|
+
const resolved = completeRunCommand({
|
|
59
|
+
field: params.plan.run,
|
|
60
|
+
context: params.context,
|
|
61
|
+
definitionId: params.definitionId,
|
|
62
|
+
reservedNames: Object.keys(env),
|
|
63
|
+
trace: params.trace
|
|
64
|
+
});
|
|
65
|
+
params.config.run = resolved.command;
|
|
66
|
+
Object.assign(env, resolved.env);
|
|
67
|
+
secretBindings.push(...resolved.secretBindings);
|
|
68
|
+
}
|
|
69
|
+
if (params.plan.env !== undefined) {
|
|
70
|
+
for (const [key, field] of Object.entries(params.plan.env)){
|
|
71
|
+
const completed = completeDispatchField({
|
|
72
|
+
field: 'env.value',
|
|
73
|
+
traceField: 'env',
|
|
74
|
+
errorField: 'env',
|
|
75
|
+
template: field,
|
|
76
|
+
context: params.context,
|
|
77
|
+
definitionId: params.definitionId,
|
|
78
|
+
envKey: key,
|
|
79
|
+
trace: params.trace
|
|
80
|
+
});
|
|
81
|
+
if (completed.kind === 'binding') secretBindings.push(completed.binding);
|
|
82
|
+
else env[key] = completed.value;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (Object.keys(env).length > 0) params.config.env = env;
|
|
86
|
+
if (secretBindings.length > 0) params.config.secret_bindings = secretBindings;
|
|
87
|
+
}
|
|
88
|
+
function completeRunCommand(params) {
|
|
89
|
+
const hoisted = hoistPlannedRunCommand({
|
|
90
|
+
field: params.field,
|
|
91
|
+
reservedNames: params.reservedNames
|
|
92
|
+
});
|
|
93
|
+
const env = {};
|
|
94
|
+
const secretBindings = [];
|
|
95
|
+
for (const binding of hoisted.bindings){
|
|
96
|
+
const completed = completeDispatchField({
|
|
97
|
+
field: 'run',
|
|
98
|
+
traceField: 'run',
|
|
99
|
+
errorField: 'run',
|
|
100
|
+
template: {
|
|
101
|
+
segments: [
|
|
102
|
+
binding.segment
|
|
103
|
+
]
|
|
104
|
+
},
|
|
105
|
+
context: params.context,
|
|
106
|
+
definitionId: params.definitionId,
|
|
107
|
+
envKey: binding.name,
|
|
108
|
+
trace: params.trace
|
|
109
|
+
});
|
|
110
|
+
if (completed.kind === 'binding') secretBindings.push(completed.binding);
|
|
111
|
+
else env[binding.name] = completed.value;
|
|
112
|
+
}
|
|
113
|
+
return {
|
|
114
|
+
command: hoisted.command,
|
|
115
|
+
env,
|
|
116
|
+
secretBindings
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
function completeDispatchField(params) {
|
|
120
|
+
const resolved = resolveStepField(params);
|
|
121
|
+
params.trace.push(...tagTrace(resolved.trace, params.traceField, params.envKey));
|
|
122
|
+
if (resolved.kind === 'frozen') return {
|
|
123
|
+
kind: 'value',
|
|
124
|
+
value: resolved.value
|
|
125
|
+
};
|
|
126
|
+
if (params.envKey !== undefined && containsOnlyRunnerSecretSegments(resolved.field)) {
|
|
127
|
+
params.trace.push(...runnerSecretReferenceTrace(resolved.field, params.traceField, params.envKey));
|
|
128
|
+
return {
|
|
129
|
+
kind: 'binding',
|
|
130
|
+
binding: secretBindingFromField(params.envKey, resolved.field)
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
const source = resolved.field.segments.find((segment)=>segment.kind === 'deferred')?.expression.source;
|
|
134
|
+
throw new InterpolationUnresolvableError(params.definitionId, {
|
|
135
|
+
field: params.errorField,
|
|
136
|
+
source: source ?? params.field,
|
|
137
|
+
...params.envKey === undefined ? {} : {
|
|
138
|
+
envKey: params.envKey
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
function containsOnlyRunnerSecretSegments(field) {
|
|
143
|
+
return field.segments.every((segment)=>{
|
|
144
|
+
if (segment.kind === 'literal') return true;
|
|
145
|
+
return segment.fillTarget === runnerFillTarget && segment.roots.length === 1 && segment.roots[0] === 'secrets';
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
function secretBindingFromField(target, field) {
|
|
149
|
+
const binding = {
|
|
150
|
+
target,
|
|
151
|
+
segments: field.segments.map(secretBindingSegment)
|
|
152
|
+
};
|
|
153
|
+
return materializedSecretBindingSchema.parse(binding);
|
|
154
|
+
}
|
|
155
|
+
function secretBindingSegment(segment) {
|
|
156
|
+
if (segment.kind === 'literal') return {
|
|
157
|
+
kind: 'literal',
|
|
158
|
+
value: segment.value
|
|
159
|
+
};
|
|
160
|
+
const keyAccess = analyzeContextKeyAccess(segment.expression);
|
|
161
|
+
const reference = keyAccess.references.find((candidate)=>candidate.root === 'secrets');
|
|
162
|
+
if (reference === undefined) {
|
|
163
|
+
throw new Error(`Runner secret segment did not contain a secret reference: ${segment.expression.source}`);
|
|
164
|
+
}
|
|
165
|
+
return {
|
|
166
|
+
kind: 'secret',
|
|
167
|
+
store: secretStoreSchema.parse(reference.store ?? 'local'),
|
|
168
|
+
key: reference.key
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
function resolveCommand(params) {
|
|
172
|
+
const template = params.step.templates?.command;
|
|
173
|
+
const hasTemplate = template !== undefined;
|
|
174
|
+
if (!hasTemplate) {
|
|
175
|
+
return {
|
|
176
|
+
command: params.step.command.value,
|
|
177
|
+
env: {},
|
|
178
|
+
configPlan: {},
|
|
179
|
+
diagnostics: [],
|
|
180
|
+
trace: [],
|
|
181
|
+
hasTemplate: false
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
const usesAuthoredMode = params.mode === 'authored';
|
|
185
|
+
if (usesAuthoredMode) {
|
|
186
|
+
return {
|
|
187
|
+
command: params.step.command.value,
|
|
188
|
+
env: {},
|
|
189
|
+
configPlan: {},
|
|
190
|
+
diagnostics: [],
|
|
191
|
+
trace: [],
|
|
192
|
+
hasTemplate: true
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
const env = {};
|
|
196
|
+
const configPlan = {};
|
|
197
|
+
const diagnostics = [];
|
|
198
|
+
const trace = [];
|
|
199
|
+
const hoisted = hoistCommand(template, params.envKeys, params.definitionId);
|
|
200
|
+
for (const binding of hoisted.bindings){
|
|
201
|
+
const resolved = resolveStepField({
|
|
202
|
+
field: 'run',
|
|
203
|
+
template: {
|
|
204
|
+
segments: [
|
|
205
|
+
binding.segment
|
|
206
|
+
]
|
|
207
|
+
},
|
|
208
|
+
context: params.context,
|
|
209
|
+
definitionId: params.definitionId,
|
|
210
|
+
errorField: 'run'
|
|
211
|
+
});
|
|
212
|
+
const resolvedToDispatchPlan = resolved.kind === 'residual';
|
|
213
|
+
if (resolvedToDispatchPlan) configPlan[binding.name] = resolved.field;
|
|
214
|
+
else env[binding.name] = resolved.value;
|
|
215
|
+
diagnostics.push(...resolved.diagnostics.map((diagnostic)=>({
|
|
216
|
+
...diagnostic,
|
|
217
|
+
field: 'run'
|
|
218
|
+
})));
|
|
219
|
+
trace.push(...tagTrace(resolved.trace, 'run'));
|
|
220
|
+
}
|
|
221
|
+
return {
|
|
222
|
+
command: hoisted.command,
|
|
223
|
+
env,
|
|
224
|
+
configPlan,
|
|
225
|
+
diagnostics,
|
|
226
|
+
trace,
|
|
227
|
+
hasTemplate: true
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
function hoistCommand(template, reservedNames, definitionId) {
|
|
231
|
+
try {
|
|
232
|
+
return hoistPlannedRunCommand({
|
|
233
|
+
field: {
|
|
234
|
+
segments: template
|
|
235
|
+
},
|
|
236
|
+
reservedNames
|
|
237
|
+
});
|
|
238
|
+
} catch (error) {
|
|
239
|
+
if (error instanceof UnsafeRunInterpolationError) {
|
|
240
|
+
throw stepConfigInterpolationError({
|
|
241
|
+
definitionId,
|
|
242
|
+
errorField: 'run'
|
|
243
|
+
}, error);
|
|
244
|
+
}
|
|
245
|
+
throw error;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
function resolveEnv(env, context, mode, definitionId) {
|
|
249
|
+
const resolvedEnv = {};
|
|
250
|
+
const configPlan = {};
|
|
251
|
+
const diagnostics = [];
|
|
252
|
+
const trace = [];
|
|
253
|
+
let hasTemplates = false;
|
|
254
|
+
for (const [key, entry] of Object.entries(env)){
|
|
255
|
+
const template = entry.template;
|
|
256
|
+
const hasTemplate = template !== undefined;
|
|
257
|
+
const usesAuthoredMode = mode === 'authored';
|
|
258
|
+
const shouldUseAuthoredValue = !hasTemplate || usesAuthoredMode;
|
|
259
|
+
if (shouldUseAuthoredValue) {
|
|
260
|
+
resolvedEnv[key] = entry.value;
|
|
261
|
+
hasTemplates ||= hasTemplate;
|
|
262
|
+
continue;
|
|
263
|
+
}
|
|
264
|
+
hasTemplates = true;
|
|
265
|
+
const resolved = resolveStepField({
|
|
266
|
+
field: 'env.value',
|
|
267
|
+
template: {
|
|
268
|
+
segments: template
|
|
269
|
+
},
|
|
270
|
+
context,
|
|
271
|
+
definitionId,
|
|
272
|
+
errorField: 'env',
|
|
273
|
+
envKey: key
|
|
274
|
+
});
|
|
275
|
+
const resolvedToDispatchPlan = resolved.kind === 'residual';
|
|
276
|
+
if (resolvedToDispatchPlan) configPlan[key] = resolved.field;
|
|
277
|
+
else resolvedEnv[key] = resolved.value;
|
|
278
|
+
diagnostics.push(...resolved.diagnostics.map((diagnostic)=>({
|
|
279
|
+
...diagnostic,
|
|
280
|
+
field: 'env',
|
|
281
|
+
envKey: key
|
|
282
|
+
})));
|
|
283
|
+
trace.push(...tagTrace(resolved.trace, 'env', key));
|
|
284
|
+
}
|
|
285
|
+
return {
|
|
286
|
+
env: resolvedEnv,
|
|
287
|
+
configPlan,
|
|
288
|
+
diagnostics,
|
|
289
|
+
trace,
|
|
290
|
+
hasTemplates
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
function tagTrace(trace, field, envKey) {
|
|
294
|
+
return trace.map((entry)=>({
|
|
295
|
+
...entry,
|
|
296
|
+
field,
|
|
297
|
+
...envKey === undefined ? {} : {
|
|
298
|
+
envKey
|
|
299
|
+
}
|
|
300
|
+
}));
|
|
301
|
+
}
|
|
302
|
+
function runnerSecretReferenceTrace(field, stepField, envKey) {
|
|
303
|
+
return field.segments.flatMap((segment)=>{
|
|
304
|
+
if (segment.kind === 'literal') return [];
|
|
305
|
+
return [
|
|
306
|
+
{
|
|
307
|
+
...evaluationTraceEntry({
|
|
308
|
+
expression: segment.expression.source,
|
|
309
|
+
roots: segment.roots,
|
|
310
|
+
fillTarget: runnerFillTarget,
|
|
311
|
+
evaluatedAt: 'step-dispatch',
|
|
312
|
+
reference: true
|
|
313
|
+
}),
|
|
314
|
+
field: stepField,
|
|
315
|
+
envKey
|
|
316
|
+
}
|
|
317
|
+
];
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
function winningEnv(params) {
|
|
321
|
+
if (params.step.kind !== 'run') return {};
|
|
322
|
+
return mergeEnvLayers({
|
|
323
|
+
env: params.workflowEnv,
|
|
324
|
+
templates: params.workflowEnvTemplates
|
|
325
|
+
}, {
|
|
326
|
+
env: params.jobEnv,
|
|
327
|
+
templates: params.jobEnvTemplates
|
|
328
|
+
}, {
|
|
329
|
+
env: params.step.env,
|
|
330
|
+
templates: params.step.templates?.env
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
function mergeEnvLayers(...layers) {
|
|
334
|
+
const merged = {};
|
|
335
|
+
for (const layer of layers){
|
|
336
|
+
for (const [key, value] of Object.entries(layer.env ?? {})){
|
|
337
|
+
const template = layer.templates?.[key];
|
|
338
|
+
const hasTemplate = template !== undefined;
|
|
339
|
+
merged[key] = hasTemplate ? {
|
|
340
|
+
value,
|
|
341
|
+
template
|
|
342
|
+
} : {
|
|
343
|
+
value
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
return merged;
|
|
348
|
+
}
|
|
349
|
+
function readConfigEnv(config) {
|
|
350
|
+
const env = config.env;
|
|
351
|
+
if (env === null || typeof env !== 'object' || Array.isArray(env)) return {};
|
|
352
|
+
return Object.fromEntries(Object.entries(env).flatMap(([key, value])=>typeof value === 'string' ? [
|
|
353
|
+
[
|
|
354
|
+
key,
|
|
355
|
+
value
|
|
356
|
+
]
|
|
357
|
+
] : []));
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/step-config/run.ts"],"sourcesContent":["import type {WorkflowModel} from '@shipfox/api-definitions';\nimport {\n type MaterializedSecretBindingDto,\n materializedSecretBindingSchema,\n type SecretBindingSegmentDto,\n secretStoreSchema,\n} from '@shipfox/api-secrets-dto';\nimport {\n analyzeContextKeyAccess,\n type EvaluationTraceEntry,\n evaluationTraceEntry,\n hoistPlannedRunCommand,\n type ResolvedField,\n type ResolvedFieldSegment,\n runnerFillTarget,\n UnsafeRunInterpolationError,\n} from '@shipfox/expression';\nimport type {PersistedEvaluationTraceEntry, StepConfigDispatchPlan} from '#core/entities/step.js';\nimport {InterpolationUnresolvableError} from '#core/errors.js';\nimport {\n resolveStepField,\n type StepConfigField,\n stepConfigInterpolationError,\n type WorkflowStepEvaluationTraceEntry,\n type WorkflowStepTemplateDiagnostic,\n} from './fields.js';\nimport type {WorkflowEvaluationContext} from './workflow-evaluation-context.js';\n\ntype WorkflowModelJob = WorkflowModel['jobs'][number];\ntype WorkflowModelStep = WorkflowModelJob['steps'][number];\ntype WorkflowModelRunStep = Extract<WorkflowModelStep, {kind: 'run'}>;\n\nexport type StepConfigMode = 'effective' | 'authored';\n\ninterface WinningEnvValue {\n readonly value: string;\n readonly template?: ResolvedField['segments'];\n}\n\nexport interface ResolveRunStepConfigParams {\n readonly step: WorkflowModelRunStep;\n readonly workflowEnv: WorkflowModel['env'];\n readonly workflowEnvTemplates: WorkflowEnvTemplates | undefined;\n readonly jobEnv: WorkflowModelJob['env'];\n readonly jobEnvTemplates: WorkflowEnvTemplates | undefined;\n readonly context: WorkflowEvaluationContext;\n readonly mode: StepConfigMode;\n readonly definitionId: string;\n}\n\ntype WorkflowEnvTemplates = Readonly<Record<string, ResolvedField['segments']>>;\n\nexport interface RunStepConfig {\n readonly config: Record<string, unknown>;\n readonly configPlan: StepConfigDispatchPlan | null;\n readonly diagnostics: readonly WorkflowStepTemplateDiagnostic[];\n readonly trace: readonly WorkflowStepEvaluationTraceEntry[];\n readonly hasTemplates: boolean;\n}\n\nexport function resolveRunStepConfig(params: ResolveRunStepConfigParams): RunStepConfig {\n const env = winningEnv(params);\n const envResolution = resolveEnv(env, params.context, params.mode, params.definitionId);\n const commandResolution = resolveCommand({\n step: params.step,\n envKeys: [...Object.keys(envResolution.env), ...Object.keys(envResolution.configPlan)],\n context: params.context,\n mode: params.mode,\n definitionId: params.definitionId,\n });\n const mergedEnv = {...envResolution.env, ...commandResolution.env};\n const hasEnvConfig = Object.keys(mergedEnv).length > 0;\n const envConfig = hasEnvConfig ? {env: mergedEnv} : {};\n const planEnv = {...envResolution.configPlan, ...commandResolution.configPlan};\n const hasConfigPlan = Object.keys(planEnv).length > 0;\n const configPlan = hasConfigPlan ? ({env: planEnv} satisfies StepConfigDispatchPlan) : null;\n const hasTemplates = envResolution.hasTemplates || commandResolution.hasTemplate;\n\n return {\n config: {run: commandResolution.command, ...envConfig},\n configPlan,\n diagnostics: [...envResolution.diagnostics, ...commandResolution.diagnostics],\n trace: [...envResolution.trace, ...commandResolution.trace],\n hasTemplates,\n };\n}\n\nexport function completeRunDispatchConfig(params: {\n readonly config: Record<string, unknown>;\n readonly plan: StepConfigDispatchPlan;\n readonly context: WorkflowEvaluationContext;\n readonly definitionId: string;\n readonly trace: PersistedEvaluationTraceEntry[];\n}): void {\n const env = {...readConfigEnv(params.config)};\n const secretBindings: MaterializedSecretBindingDto[] = [];\n\n if (params.plan.run !== undefined) {\n const resolved = completeRunCommand({\n field: params.plan.run,\n context: params.context,\n definitionId: params.definitionId,\n reservedNames: Object.keys(env),\n trace: params.trace,\n });\n params.config.run = resolved.command;\n Object.assign(env, resolved.env);\n secretBindings.push(...resolved.secretBindings);\n }\n\n if (params.plan.env !== undefined) {\n for (const [key, field] of Object.entries(params.plan.env)) {\n const completed = completeDispatchField({\n field: 'env.value',\n traceField: 'env',\n errorField: 'env',\n template: field,\n context: params.context,\n definitionId: params.definitionId,\n envKey: key,\n trace: params.trace,\n });\n if (completed.kind === 'binding') secretBindings.push(completed.binding);\n else env[key] = completed.value;\n }\n }\n\n if (Object.keys(env).length > 0) params.config.env = env;\n if (secretBindings.length > 0) params.config.secret_bindings = secretBindings;\n}\n\nfunction completeRunCommand(params: {\n readonly field: ResolvedField;\n readonly context: WorkflowEvaluationContext;\n readonly definitionId: string;\n readonly reservedNames: Iterable<string>;\n readonly trace: PersistedEvaluationTraceEntry[];\n}): {\n readonly command: string;\n readonly env: Readonly<Record<string, string>>;\n readonly secretBindings: readonly MaterializedSecretBindingDto[];\n} {\n const hoisted = hoistPlannedRunCommand({\n field: params.field,\n reservedNames: params.reservedNames,\n });\n const env: Record<string, string> = {};\n const secretBindings: MaterializedSecretBindingDto[] = [];\n\n for (const binding of hoisted.bindings) {\n const completed = completeDispatchField({\n field: 'run',\n traceField: 'run',\n errorField: 'run',\n template: {segments: [binding.segment]},\n context: params.context,\n definitionId: params.definitionId,\n envKey: binding.name,\n trace: params.trace,\n });\n if (completed.kind === 'binding') secretBindings.push(completed.binding);\n else env[binding.name] = completed.value;\n }\n\n return {command: hoisted.command, env, secretBindings};\n}\n\ntype CompletedDispatchField =\n | {readonly kind: 'value'; readonly value: string}\n | {readonly kind: 'binding'; readonly binding: MaterializedSecretBindingDto};\n\nfunction completeDispatchField(params: {\n readonly field: 'run' | 'env.value';\n readonly traceField: StepConfigField;\n readonly errorField: StepConfigField;\n readonly template: ResolvedField;\n readonly context: WorkflowEvaluationContext;\n readonly definitionId: string;\n readonly envKey?: string;\n readonly trace: PersistedEvaluationTraceEntry[];\n}): CompletedDispatchField {\n const resolved = resolveStepField(params);\n params.trace.push(...tagTrace(resolved.trace, params.traceField, params.envKey));\n if (resolved.kind === 'frozen') return {kind: 'value', value: resolved.value};\n if (params.envKey !== undefined && containsOnlyRunnerSecretSegments(resolved.field)) {\n params.trace.push(\n ...runnerSecretReferenceTrace(resolved.field, params.traceField, params.envKey),\n );\n return {\n kind: 'binding',\n binding: secretBindingFromField(params.envKey, resolved.field),\n };\n }\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\nfunction containsOnlyRunnerSecretSegments(field: ResolvedField): boolean {\n return field.segments.every((segment) => {\n if (segment.kind === 'literal') return true;\n return (\n segment.fillTarget === runnerFillTarget &&\n segment.roots.length === 1 &&\n segment.roots[0] === 'secrets'\n );\n });\n}\n\nfunction secretBindingFromField(\n target: string,\n field: ResolvedField,\n): MaterializedSecretBindingDto {\n const binding = {\n target,\n segments: field.segments.map(secretBindingSegment),\n };\n return materializedSecretBindingSchema.parse(binding);\n}\n\nfunction secretBindingSegment(segment: ResolvedFieldSegment): SecretBindingSegmentDto {\n if (segment.kind === 'literal') return {kind: 'literal', value: segment.value};\n\n const keyAccess = analyzeContextKeyAccess(segment.expression);\n const reference = keyAccess.references.find((candidate) => candidate.root === 'secrets');\n if (reference === undefined) {\n throw new Error(\n `Runner secret segment did not contain a secret reference: ${segment.expression.source}`,\n );\n }\n\n return {\n kind: 'secret',\n store: secretStoreSchema.parse(reference.store ?? 'local'),\n key: reference.key,\n };\n}\n\nfunction resolveCommand(params: {\n readonly step: WorkflowModelRunStep;\n readonly envKeys: readonly string[];\n readonly context: WorkflowEvaluationContext;\n readonly mode: StepConfigMode;\n readonly definitionId: string;\n}): {\n readonly command: string;\n readonly env: Readonly<Record<string, string>>;\n readonly configPlan: Readonly<Record<string, ResolvedField>>;\n readonly diagnostics: readonly WorkflowStepTemplateDiagnostic[];\n readonly trace: readonly WorkflowStepEvaluationTraceEntry[];\n readonly hasTemplate: boolean;\n} {\n const template = params.step.templates?.command;\n const hasTemplate = template !== undefined;\n if (!hasTemplate) {\n return {\n command: params.step.command.value,\n env: {},\n configPlan: {},\n diagnostics: [],\n trace: [],\n hasTemplate: false,\n };\n }\n\n const usesAuthoredMode = params.mode === 'authored';\n if (usesAuthoredMode) {\n return {\n command: params.step.command.value,\n env: {},\n configPlan: {},\n diagnostics: [],\n trace: [],\n hasTemplate: true,\n };\n }\n\n const env: Record<string, string> = {};\n const configPlan: Record<string, ResolvedField> = {};\n const diagnostics: WorkflowStepTemplateDiagnostic[] = [];\n const trace: WorkflowStepEvaluationTraceEntry[] = [];\n const hoisted = hoistCommand(template, params.envKeys, params.definitionId);\n\n for (const binding of hoisted.bindings) {\n const resolved = resolveStepField({\n field: 'run',\n template: {segments: [binding.segment]},\n context: params.context,\n definitionId: params.definitionId,\n errorField: 'run',\n });\n const resolvedToDispatchPlan = resolved.kind === 'residual';\n if (resolvedToDispatchPlan) configPlan[binding.name] = resolved.field;\n else env[binding.name] = resolved.value;\n diagnostics.push(\n ...resolved.diagnostics.map((diagnostic) => ({...diagnostic, field: 'run' as const})),\n );\n trace.push(...tagTrace(resolved.trace, 'run'));\n }\n\n return {\n command: hoisted.command,\n env,\n configPlan,\n diagnostics,\n trace,\n hasTemplate: true,\n };\n}\n\nfunction hoistCommand(\n template: ResolvedField['segments'],\n reservedNames: readonly string[],\n definitionId: string,\n): ReturnType<typeof hoistPlannedRunCommand> {\n try {\n return hoistPlannedRunCommand({\n field: {segments: template},\n reservedNames,\n });\n } catch (error) {\n if (error instanceof UnsafeRunInterpolationError) {\n throw stepConfigInterpolationError({definitionId, errorField: 'run'}, error);\n }\n throw error;\n }\n}\n\nfunction resolveEnv(\n env: Readonly<Record<string, WinningEnvValue>>,\n context: WorkflowEvaluationContext,\n mode: StepConfigMode,\n definitionId: string,\n): {\n readonly env: Readonly<Record<string, string>>;\n readonly configPlan: Readonly<Record<string, ResolvedField>>;\n readonly diagnostics: readonly WorkflowStepTemplateDiagnostic[];\n readonly trace: readonly WorkflowStepEvaluationTraceEntry[];\n readonly hasTemplates: boolean;\n} {\n const resolvedEnv: Record<string, string> = {};\n const configPlan: Record<string, ResolvedField> = {};\n const diagnostics: WorkflowStepTemplateDiagnostic[] = [];\n const trace: WorkflowStepEvaluationTraceEntry[] = [];\n let hasTemplates = false;\n\n for (const [key, entry] of Object.entries(env)) {\n const template = entry.template;\n const hasTemplate = template !== undefined;\n const usesAuthoredMode = mode === 'authored';\n const shouldUseAuthoredValue = !hasTemplate || usesAuthoredMode;\n\n if (shouldUseAuthoredValue) {\n resolvedEnv[key] = entry.value;\n hasTemplates ||= hasTemplate;\n continue;\n }\n\n hasTemplates = true;\n const resolved = resolveStepField({\n field: 'env.value',\n template: {segments: template},\n context,\n definitionId,\n errorField: 'env',\n envKey: key,\n });\n const resolvedToDispatchPlan = resolved.kind === 'residual';\n if (resolvedToDispatchPlan) configPlan[key] = resolved.field;\n else resolvedEnv[key] = resolved.value;\n diagnostics.push(\n ...resolved.diagnostics.map((diagnostic) => ({\n ...diagnostic,\n field: 'env' as const,\n envKey: key,\n })),\n );\n trace.push(...tagTrace(resolved.trace, 'env', key));\n }\n\n return {env: resolvedEnv, configPlan, diagnostics, trace, hasTemplates};\n}\n\nfunction tagTrace(\n trace: readonly EvaluationTraceEntry[],\n field: StepConfigField,\n envKey?: string,\n): WorkflowStepEvaluationTraceEntry[] {\n return trace.map((entry) => ({\n ...entry,\n field,\n ...(envKey === undefined ? {} : {envKey}),\n }));\n}\n\nfunction runnerSecretReferenceTrace(\n field: ResolvedField,\n stepField: StepConfigField,\n envKey: string,\n): WorkflowStepEvaluationTraceEntry[] {\n return field.segments.flatMap((segment) => {\n if (segment.kind === 'literal') return [];\n return [\n {\n ...evaluationTraceEntry({\n expression: segment.expression.source,\n roots: segment.roots,\n fillTarget: runnerFillTarget,\n evaluatedAt: 'step-dispatch',\n reference: true,\n }),\n field: stepField,\n envKey,\n },\n ];\n });\n}\n\nfunction winningEnv(params: {\n readonly workflowEnv: WorkflowModel['env'];\n readonly workflowEnvTemplates: WorkflowEnvTemplates | undefined;\n readonly jobEnv: WorkflowModelJob['env'];\n readonly jobEnvTemplates: WorkflowEnvTemplates | undefined;\n readonly step: WorkflowModelStep;\n}): Readonly<Record<string, WinningEnvValue>> {\n if (params.step.kind !== 'run') return {};\n\n return mergeEnvLayers(\n {env: params.workflowEnv, templates: params.workflowEnvTemplates},\n {env: params.jobEnv, templates: params.jobEnvTemplates},\n {env: params.step.env, templates: params.step.templates?.env},\n );\n}\n\nfunction mergeEnvLayers(\n ...layers: readonly {\n readonly env: Readonly<Record<string, string>> | undefined;\n readonly templates: WorkflowEnvTemplates | undefined;\n }[]\n): Readonly<Record<string, WinningEnvValue>> {\n const merged: Record<string, WinningEnvValue> = {};\n\n for (const layer of layers) {\n for (const [key, value] of Object.entries(layer.env ?? {})) {\n const template = layer.templates?.[key];\n const hasTemplate = template !== undefined;\n merged[key] = hasTemplate ? {value, template} : {value};\n }\n }\n\n return merged;\n}\n\nfunction readConfigEnv(config: Record<string, unknown>): Record<string, string> {\n const env = config.env;\n if (env === null || typeof env !== 'object' || Array.isArray(env)) return {};\n return Object.fromEntries(\n Object.entries(env).flatMap(([key, value]) =>\n typeof value === 'string' ? [[key, value]] : [],\n ),\n );\n}\n"],"names":["materializedSecretBindingSchema","secretStoreSchema","analyzeContextKeyAccess","evaluationTraceEntry","hoistPlannedRunCommand","runnerFillTarget","UnsafeRunInterpolationError","InterpolationUnresolvableError","resolveStepField","stepConfigInterpolationError","resolveRunStepConfig","params","env","winningEnv","envResolution","resolveEnv","context","mode","definitionId","commandResolution","resolveCommand","step","envKeys","Object","keys","configPlan","mergedEnv","hasEnvConfig","length","envConfig","planEnv","hasConfigPlan","hasTemplates","hasTemplate","config","run","command","diagnostics","trace","completeRunDispatchConfig","readConfigEnv","secretBindings","plan","undefined","resolved","completeRunCommand","field","reservedNames","assign","push","key","entries","completed","completeDispatchField","traceField","errorField","template","envKey","kind","binding","value","secret_bindings","hoisted","bindings","segments","segment","name","tagTrace","containsOnlyRunnerSecretSegments","runnerSecretReferenceTrace","secretBindingFromField","source","find","expression","every","fillTarget","roots","target","map","secretBindingSegment","parse","keyAccess","reference","references","candidate","root","Error","store","templates","usesAuthoredMode","hoistCommand","resolvedToDispatchPlan","diagnostic","error","resolvedEnv","entry","shouldUseAuthoredValue","stepField","flatMap","evaluatedAt","mergeEnvLayers","workflowEnv","workflowEnvTemplates","jobEnv","jobEnvTemplates","layers","merged","layer","Array","isArray","fromEntries"],"mappings":"AACA,SAEEA,+BAA+B,EAE/BC,iBAAiB,QACZ,2BAA2B;AAClC,SACEC,uBAAuB,EAEvBC,oBAAoB,EACpBC,sBAAsB,EAGtBC,gBAAgB,EAChBC,2BAA2B,QACtB,sBAAsB;AAE7B,SAAQC,8BAA8B,QAAO,kBAAkB;AAC/D,SACEC,gBAAgB,EAEhBC,4BAA4B,QAGvB,cAAc;AAmCrB,OAAO,SAASC,qBAAqBC,MAAkC;IACrE,MAAMC,MAAMC,WAAWF;IACvB,MAAMG,gBAAgBC,WAAWH,KAAKD,OAAOK,OAAO,EAAEL,OAAOM,IAAI,EAAEN,OAAOO,YAAY;IACtF,MAAMC,oBAAoBC,eAAe;QACvCC,MAAMV,OAAOU,IAAI;QACjBC,SAAS;eAAIC,OAAOC,IAAI,CAACV,cAAcF,GAAG;eAAMW,OAAOC,IAAI,CAACV,cAAcW,UAAU;SAAE;QACtFT,SAASL,OAAOK,OAAO;QACvBC,MAAMN,OAAOM,IAAI;QACjBC,cAAcP,OAAOO,YAAY;IACnC;IACA,MAAMQ,YAAY;QAAC,GAAGZ,cAAcF,GAAG;QAAE,GAAGO,kBAAkBP,GAAG;IAAA;IACjE,MAAMe,eAAeJ,OAAOC,IAAI,CAACE,WAAWE,MAAM,GAAG;IACrD,MAAMC,YAAYF,eAAe;QAACf,KAAKc;IAAS,IAAI,CAAC;IACrD,MAAMI,UAAU;QAAC,GAAGhB,cAAcW,UAAU;QAAE,GAAGN,kBAAkBM,UAAU;IAAA;IAC7E,MAAMM,gBAAgBR,OAAOC,IAAI,CAACM,SAASF,MAAM,GAAG;IACpD,MAAMH,aAAaM,gBAAiB;QAACnB,KAAKkB;IAAO,IAAsC;IACvF,MAAME,eAAelB,cAAckB,YAAY,IAAIb,kBAAkBc,WAAW;IAEhF,OAAO;QACLC,QAAQ;YAACC,KAAKhB,kBAAkBiB,OAAO;YAAE,GAAGP,SAAS;QAAA;QACrDJ;QACAY,aAAa;eAAIvB,cAAcuB,WAAW;eAAKlB,kBAAkBkB,WAAW;SAAC;QAC7EC,OAAO;eAAIxB,cAAcwB,KAAK;eAAKnB,kBAAkBmB,KAAK;SAAC;QAC3DN;IACF;AACF;AAEA,OAAO,SAASO,0BAA0B5B,MAMzC;IACC,MAAMC,MAAM;QAAC,GAAG4B,cAAc7B,OAAOuB,MAAM,CAAC;IAAA;IAC5C,MAAMO,iBAAiD,EAAE;IAEzD,IAAI9B,OAAO+B,IAAI,CAACP,GAAG,KAAKQ,WAAW;QACjC,MAAMC,WAAWC,mBAAmB;YAClCC,OAAOnC,OAAO+B,IAAI,CAACP,GAAG;YACtBnB,SAASL,OAAOK,OAAO;YACvBE,cAAcP,OAAOO,YAAY;YACjC6B,eAAexB,OAAOC,IAAI,CAACZ;YAC3B0B,OAAO3B,OAAO2B,KAAK;QACrB;QACA3B,OAAOuB,MAAM,CAACC,GAAG,GAAGS,SAASR,OAAO;QACpCb,OAAOyB,MAAM,CAACpC,KAAKgC,SAAShC,GAAG;QAC/B6B,eAAeQ,IAAI,IAAIL,SAASH,cAAc;IAChD;IAEA,IAAI9B,OAAO+B,IAAI,CAAC9B,GAAG,KAAK+B,WAAW;QACjC,KAAK,MAAM,CAACO,KAAKJ,MAAM,IAAIvB,OAAO4B,OAAO,CAACxC,OAAO+B,IAAI,CAAC9B,GAAG,EAAG;YAC1D,MAAMwC,YAAYC,sBAAsB;gBACtCP,OAAO;gBACPQ,YAAY;gBACZC,YAAY;gBACZC,UAAUV;gBACV9B,SAASL,OAAOK,OAAO;gBACvBE,cAAcP,OAAOO,YAAY;gBACjCuC,QAAQP;gBACRZ,OAAO3B,OAAO2B,KAAK;YACrB;YACA,IAAIc,UAAUM,IAAI,KAAK,WAAWjB,eAAeQ,IAAI,CAACG,UAAUO,OAAO;iBAClE/C,GAAG,CAACsC,IAAI,GAAGE,UAAUQ,KAAK;QACjC;IACF;IAEA,IAAIrC,OAAOC,IAAI,CAACZ,KAAKgB,MAAM,GAAG,GAAGjB,OAAOuB,MAAM,CAACtB,GAAG,GAAGA;IACrD,IAAI6B,eAAeb,MAAM,GAAG,GAAGjB,OAAOuB,MAAM,CAAC2B,eAAe,GAAGpB;AACjE;AAEA,SAASI,mBAAmBlC,MAM3B;IAKC,MAAMmD,UAAU1D,uBAAuB;QACrC0C,OAAOnC,OAAOmC,KAAK;QACnBC,eAAepC,OAAOoC,aAAa;IACrC;IACA,MAAMnC,MAA8B,CAAC;IACrC,MAAM6B,iBAAiD,EAAE;IAEzD,KAAK,MAAMkB,WAAWG,QAAQC,QAAQ,CAAE;QACtC,MAAMX,YAAYC,sBAAsB;YACtCP,OAAO;YACPQ,YAAY;YACZC,YAAY;YACZC,UAAU;gBAACQ,UAAU;oBAACL,QAAQM,OAAO;iBAAC;YAAA;YACtCjD,SAASL,OAAOK,OAAO;YACvBE,cAAcP,OAAOO,YAAY;YACjCuC,QAAQE,QAAQO,IAAI;YACpB5B,OAAO3B,OAAO2B,KAAK;QACrB;QACA,IAAIc,UAAUM,IAAI,KAAK,WAAWjB,eAAeQ,IAAI,CAACG,UAAUO,OAAO;aAClE/C,GAAG,CAAC+C,QAAQO,IAAI,CAAC,GAAGd,UAAUQ,KAAK;IAC1C;IAEA,OAAO;QAACxB,SAAS0B,QAAQ1B,OAAO;QAAExB;QAAK6B;IAAc;AACvD;AAMA,SAASY,sBAAsB1C,MAS9B;IACC,MAAMiC,WAAWpC,iBAAiBG;IAClCA,OAAO2B,KAAK,CAACW,IAAI,IAAIkB,SAASvB,SAASN,KAAK,EAAE3B,OAAO2C,UAAU,EAAE3C,OAAO8C,MAAM;IAC9E,IAAIb,SAASc,IAAI,KAAK,UAAU,OAAO;QAACA,MAAM;QAASE,OAAOhB,SAASgB,KAAK;IAAA;IAC5E,IAAIjD,OAAO8C,MAAM,KAAKd,aAAayB,iCAAiCxB,SAASE,KAAK,GAAG;QACnFnC,OAAO2B,KAAK,CAACW,IAAI,IACZoB,2BAA2BzB,SAASE,KAAK,EAAEnC,OAAO2C,UAAU,EAAE3C,OAAO8C,MAAM;QAEhF,OAAO;YACLC,MAAM;YACNC,SAASW,uBAAuB3D,OAAO8C,MAAM,EAAEb,SAASE,KAAK;QAC/D;IACF;IAEA,MAAMyB,SAAS3B,SAASE,KAAK,CAACkB,QAAQ,CAACQ,IAAI,CAAC,CAACP,UAAYA,QAAQP,IAAI,KAAK,aAAae,WACpFF;IACH,MAAM,IAAIhE,+BAA+BI,OAAOO,YAAY,EAAE;QAC5D4B,OAAOnC,OAAO4C,UAAU;QACxBgB,QAAQA,UAAU5D,OAAOmC,KAAK;QAC9B,GAAInC,OAAO8C,MAAM,KAAKd,YAAY,CAAC,IAAI;YAACc,QAAQ9C,OAAO8C,MAAM;QAAA,CAAC;IAChE;AACF;AAEA,SAASW,iCAAiCtB,KAAoB;IAC5D,OAAOA,MAAMkB,QAAQ,CAACU,KAAK,CAAC,CAACT;QAC3B,IAAIA,QAAQP,IAAI,KAAK,WAAW,OAAO;QACvC,OACEO,QAAQU,UAAU,KAAKtE,oBACvB4D,QAAQW,KAAK,CAAChD,MAAM,KAAK,KACzBqC,QAAQW,KAAK,CAAC,EAAE,KAAK;IAEzB;AACF;AAEA,SAASN,uBACPO,MAAc,EACd/B,KAAoB;IAEpB,MAAMa,UAAU;QACdkB;QACAb,UAAUlB,MAAMkB,QAAQ,CAACc,GAAG,CAACC;IAC/B;IACA,OAAO/E,gCAAgCgF,KAAK,CAACrB;AAC/C;AAEA,SAASoB,qBAAqBd,OAA6B;IACzD,IAAIA,QAAQP,IAAI,KAAK,WAAW,OAAO;QAACA,MAAM;QAAWE,OAAOK,QAAQL,KAAK;IAAA;IAE7E,MAAMqB,YAAY/E,wBAAwB+D,QAAQQ,UAAU;IAC5D,MAAMS,YAAYD,UAAUE,UAAU,CAACX,IAAI,CAAC,CAACY,YAAcA,UAAUC,IAAI,KAAK;IAC9E,IAAIH,cAAcvC,WAAW;QAC3B,MAAM,IAAI2C,MACR,CAAC,0DAA0D,EAAErB,QAAQQ,UAAU,CAACF,MAAM,EAAE;IAE5F;IAEA,OAAO;QACLb,MAAM;QACN6B,OAAOtF,kBAAkB+E,KAAK,CAACE,UAAUK,KAAK,IAAI;QAClDrC,KAAKgC,UAAUhC,GAAG;IACpB;AACF;AAEA,SAAS9B,eAAeT,MAMvB;IAQC,MAAM6C,WAAW7C,OAAOU,IAAI,CAACmE,SAAS,EAAEpD;IACxC,MAAMH,cAAcuB,aAAab;IACjC,IAAI,CAACV,aAAa;QAChB,OAAO;YACLG,SAASzB,OAAOU,IAAI,CAACe,OAAO,CAACwB,KAAK;YAClChD,KAAK,CAAC;YACNa,YAAY,CAAC;YACbY,aAAa,EAAE;YACfC,OAAO,EAAE;YACTL,aAAa;QACf;IACF;IAEA,MAAMwD,mBAAmB9E,OAAOM,IAAI,KAAK;IACzC,IAAIwE,kBAAkB;QACpB,OAAO;YACLrD,SAASzB,OAAOU,IAAI,CAACe,OAAO,CAACwB,KAAK;YAClChD,KAAK,CAAC;YACNa,YAAY,CAAC;YACbY,aAAa,EAAE;YACfC,OAAO,EAAE;YACTL,aAAa;QACf;IACF;IAEA,MAAMrB,MAA8B,CAAC;IACrC,MAAMa,aAA4C,CAAC;IACnD,MAAMY,cAAgD,EAAE;IACxD,MAAMC,QAA4C,EAAE;IACpD,MAAMwB,UAAU4B,aAAalC,UAAU7C,OAAOW,OAAO,EAAEX,OAAOO,YAAY;IAE1E,KAAK,MAAMyC,WAAWG,QAAQC,QAAQ,CAAE;QACtC,MAAMnB,WAAWpC,iBAAiB;YAChCsC,OAAO;YACPU,UAAU;gBAACQ,UAAU;oBAACL,QAAQM,OAAO;iBAAC;YAAA;YACtCjD,SAASL,OAAOK,OAAO;YACvBE,cAAcP,OAAOO,YAAY;YACjCqC,YAAY;QACd;QACA,MAAMoC,yBAAyB/C,SAASc,IAAI,KAAK;QACjD,IAAIiC,wBAAwBlE,UAAU,CAACkC,QAAQO,IAAI,CAAC,GAAGtB,SAASE,KAAK;aAChElC,GAAG,CAAC+C,QAAQO,IAAI,CAAC,GAAGtB,SAASgB,KAAK;QACvCvB,YAAYY,IAAI,IACXL,SAASP,WAAW,CAACyC,GAAG,CAAC,CAACc,aAAgB,CAAA;gBAAC,GAAGA,UAAU;gBAAE9C,OAAO;YAAc,CAAA;QAEpFR,MAAMW,IAAI,IAAIkB,SAASvB,SAASN,KAAK,EAAE;IACzC;IAEA,OAAO;QACLF,SAAS0B,QAAQ1B,OAAO;QACxBxB;QACAa;QACAY;QACAC;QACAL,aAAa;IACf;AACF;AAEA,SAASyD,aACPlC,QAAmC,EACnCT,aAAgC,EAChC7B,YAAoB;IAEpB,IAAI;QACF,OAAOd,uBAAuB;YAC5B0C,OAAO;gBAACkB,UAAUR;YAAQ;YAC1BT;QACF;IACF,EAAE,OAAO8C,OAAO;QACd,IAAIA,iBAAiBvF,6BAA6B;YAChD,MAAMG,6BAA6B;gBAACS;gBAAcqC,YAAY;YAAK,GAAGsC;QACxE;QACA,MAAMA;IACR;AACF;AAEA,SAAS9E,WACPH,GAA8C,EAC9CI,OAAkC,EAClCC,IAAoB,EACpBC,YAAoB;IAQpB,MAAM4E,cAAsC,CAAC;IAC7C,MAAMrE,aAA4C,CAAC;IACnD,MAAMY,cAAgD,EAAE;IACxD,MAAMC,QAA4C,EAAE;IACpD,IAAIN,eAAe;IAEnB,KAAK,MAAM,CAACkB,KAAK6C,MAAM,IAAIxE,OAAO4B,OAAO,CAACvC,KAAM;QAC9C,MAAM4C,WAAWuC,MAAMvC,QAAQ;QAC/B,MAAMvB,cAAcuB,aAAab;QACjC,MAAM8C,mBAAmBxE,SAAS;QAClC,MAAM+E,yBAAyB,CAAC/D,eAAewD;QAE/C,IAAIO,wBAAwB;YAC1BF,WAAW,CAAC5C,IAAI,GAAG6C,MAAMnC,KAAK;YAC9B5B,iBAAiBC;YACjB;QACF;QAEAD,eAAe;QACf,MAAMY,WAAWpC,iBAAiB;YAChCsC,OAAO;YACPU,UAAU;gBAACQ,UAAUR;YAAQ;YAC7BxC;YACAE;YACAqC,YAAY;YACZE,QAAQP;QACV;QACA,MAAMyC,yBAAyB/C,SAASc,IAAI,KAAK;QACjD,IAAIiC,wBAAwBlE,UAAU,CAACyB,IAAI,GAAGN,SAASE,KAAK;aACvDgD,WAAW,CAAC5C,IAAI,GAAGN,SAASgB,KAAK;QACtCvB,YAAYY,IAAI,IACXL,SAASP,WAAW,CAACyC,GAAG,CAAC,CAACc,aAAgB,CAAA;gBAC3C,GAAGA,UAAU;gBACb9C,OAAO;gBACPW,QAAQP;YACV,CAAA;QAEFZ,MAAMW,IAAI,IAAIkB,SAASvB,SAASN,KAAK,EAAE,OAAOY;IAChD;IAEA,OAAO;QAACtC,KAAKkF;QAAarE;QAAYY;QAAaC;QAAON;IAAY;AACxE;AAEA,SAASmC,SACP7B,KAAsC,EACtCQ,KAAsB,EACtBW,MAAe;IAEf,OAAOnB,MAAMwC,GAAG,CAAC,CAACiB,QAAW,CAAA;YAC3B,GAAGA,KAAK;YACRjD;YACA,GAAIW,WAAWd,YAAY,CAAC,IAAI;gBAACc;YAAM,CAAC;QAC1C,CAAA;AACF;AAEA,SAASY,2BACPvB,KAAoB,EACpBmD,SAA0B,EAC1BxC,MAAc;IAEd,OAAOX,MAAMkB,QAAQ,CAACkC,OAAO,CAAC,CAACjC;QAC7B,IAAIA,QAAQP,IAAI,KAAK,WAAW,OAAO,EAAE;QACzC,OAAO;YACL;gBACE,GAAGvD,qBAAqB;oBACtBsE,YAAYR,QAAQQ,UAAU,CAACF,MAAM;oBACrCK,OAAOX,QAAQW,KAAK;oBACpBD,YAAYtE;oBACZ8F,aAAa;oBACbjB,WAAW;gBACb,EAAE;gBACFpC,OAAOmD;gBACPxC;YACF;SACD;IACH;AACF;AAEA,SAAS5C,WAAWF,MAMnB;IACC,IAAIA,OAAOU,IAAI,CAACqC,IAAI,KAAK,OAAO,OAAO,CAAC;IAExC,OAAO0C,eACL;QAACxF,KAAKD,OAAO0F,WAAW;QAAEb,WAAW7E,OAAO2F,oBAAoB;IAAA,GAChE;QAAC1F,KAAKD,OAAO4F,MAAM;QAAEf,WAAW7E,OAAO6F,eAAe;IAAA,GACtD;QAAC5F,KAAKD,OAAOU,IAAI,CAACT,GAAG;QAAE4E,WAAW7E,OAAOU,IAAI,CAACmE,SAAS,EAAE5E;IAAG;AAEhE;AAEA,SAASwF,eACP,GAAGK,MAGA;IAEH,MAAMC,SAA0C,CAAC;IAEjD,KAAK,MAAMC,SAASF,OAAQ;QAC1B,KAAK,MAAM,CAACvD,KAAKU,MAAM,IAAIrC,OAAO4B,OAAO,CAACwD,MAAM/F,GAAG,IAAI,CAAC,GAAI;YAC1D,MAAM4C,WAAWmD,MAAMnB,SAAS,EAAE,CAACtC,IAAI;YACvC,MAAMjB,cAAcuB,aAAab;YACjC+D,MAAM,CAACxD,IAAI,GAAGjB,cAAc;gBAAC2B;gBAAOJ;YAAQ,IAAI;gBAACI;YAAK;QACxD;IACF;IAEA,OAAO8C;AACT;AAEA,SAASlE,cAAcN,MAA+B;IACpD,MAAMtB,MAAMsB,OAAOtB,GAAG;IACtB,IAAIA,QAAQ,QAAQ,OAAOA,QAAQ,YAAYgG,MAAMC,OAAO,CAACjG,MAAM,OAAO,CAAC;IAC3E,OAAOW,OAAOuF,WAAW,CACvBvF,OAAO4B,OAAO,CAACvC,KAAKsF,OAAO,CAAC,CAAC,CAAChD,KAAKU,MAAM,GACvC,OAAOA,UAAU,WAAW;YAAC;gBAACV;gBAAKU;aAAM;SAAC,GAAG,EAAE;AAGrD"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AvailabilitySite, WorkflowExpressionEvaluationContext } from '@shipfox/expression';
|
|
2
|
+
export interface WorkflowEvaluationContext {
|
|
3
|
+
readonly site: AvailabilitySite;
|
|
4
|
+
readonly values: WorkflowExpressionEvaluationContext;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=workflow-evaluation-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-evaluation-context.d.ts","sourceRoot":"","sources":["../../../src/core/step-config/workflow-evaluation-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAE,mCAAmC,EAAC,MAAM,qBAAqB,CAAC;AAE/F,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,mCAAmC,CAAC;CACtD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/step-config/workflow-evaluation-context.ts"],"sourcesContent":["import type {AvailabilitySite, WorkflowExpressionEvaluationContext} from '@shipfox/expression';\n\nexport interface WorkflowEvaluationContext {\n readonly site: AvailabilitySite;\n readonly values: WorkflowExpressionEvaluationContext;\n}\n"],"names":[],"mappings":"AAEA,WAGC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { LogOutcomeDto } from '@shipfox/api-workflows-dto';
|
|
2
|
+
import type { Tx } from '#db/db.js';
|
|
3
|
+
import { type StepReport, type StepTransitionDecision } from './decide-step-transition.js';
|
|
4
|
+
export type StepProgressionOutcome = {
|
|
5
|
+
jobFinished: false;
|
|
6
|
+
} | {
|
|
7
|
+
jobFinished: true;
|
|
8
|
+
status: 'succeeded' | 'failed';
|
|
9
|
+
};
|
|
10
|
+
export interface StepProgressionMetrics {
|
|
11
|
+
jobStepsSettledStatus?: 'succeeded' | 'failed';
|
|
12
|
+
stepRestartEnqueued?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface StepProgressionResult {
|
|
15
|
+
outcome: StepProgressionOutcome;
|
|
16
|
+
metrics: StepProgressionMetrics;
|
|
17
|
+
}
|
|
18
|
+
export interface ApplyStepTransitionContext {
|
|
19
|
+
jobId: string;
|
|
20
|
+
jobExecutionId: string;
|
|
21
|
+
result: StepReport;
|
|
22
|
+
logOutcome: LogOutcomeDto;
|
|
23
|
+
gateResult?: Record<string, unknown> | null;
|
|
24
|
+
}
|
|
25
|
+
export declare function applyStepTransition(decision: StepTransitionDecision, ctx: ApplyStepTransitionContext, tx: Tx): Promise<StepProgressionResult>;
|
|
26
|
+
//# sourceMappingURL=apply-step-transition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-step-transition.d.ts","sourceRoot":"","sources":["../../../src/core/step-transition/apply-step-transition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAC,EAAE,EAAC,MAAM,WAAW,CAAC;AAUlC,OAAO,EAGL,KAAK,UAAU,EACf,KAAK,sBAAsB,EAC5B,MAAM,6BAA6B,CAAC;AAErC,MAAM,MAAM,sBAAsB,GAC9B;IAAC,WAAW,EAAE,KAAK,CAAA;CAAC,GACpB;IAAC,WAAW,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAA;CAAC,CAAC;AAExD,MAAM,WAAW,sBAAsB;IACrC,qBAAqB,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC/C,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,sBAAsB,CAAC;IAChC,OAAO,EAAE,sBAAsB,CAAC;CACjC;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,aAAa,CAAC;IAE1B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC7C;AAOD,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,sBAAsB,EAChC,GAAG,EAAE,0BAA0B,EAC/B,EAAE,EAAE,EAAE,GACL,OAAO,CAAC,qBAAqB,CAAC,CAgHhC"}
|