@shipfox/api-workflows 12.6.0 → 13.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 +8 -8
- package/CHANGELOG.md +23 -0
- package/dist/core/entities/workflow-run.d.ts +3 -0
- package/dist/core/entities/workflow-run.d.ts.map +1 -1
- package/dist/core/entities/workflow-run.js.map +1 -1
- package/dist/db/index.d.ts +1 -1
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +1 -1
- package/dist/db/index.js.map +1 -1
- package/dist/db/job-listeners.d.ts.map +1 -1
- package/dist/db/job-listeners.js +17 -1
- package/dist/db/job-listeners.js.map +1 -1
- package/dist/db/workflow-runs/job-executions.d.ts +2 -3
- package/dist/db/workflow-runs/job-executions.d.ts.map +1 -1
- package/dist/db/workflow-runs/job-executions.js +48 -20
- package/dist/db/workflow-runs/job-executions.js.map +1 -1
- package/dist/db/workflow-runs/outbox.d.ts +15 -0
- package/dist/db/workflow-runs/outbox.d.ts.map +1 -1
- package/dist/db/workflow-runs/outbox.js +35 -1
- package/dist/db/workflow-runs/outbox.js.map +1 -1
- package/dist/db/workflow-runs/queries.d.ts +5 -3
- package/dist/db/workflow-runs/queries.d.ts.map +1 -1
- package/dist/db/workflow-runs/queries.js +20 -6
- package/dist/db/workflow-runs/queries.js.map +1 -1
- package/dist/db/workflow-runs/run-graph.d.ts.map +1 -1
- package/dist/db/workflow-runs/run-graph.js +12 -0
- package/dist/db/workflow-runs/run-graph.js.map +1 -1
- package/dist/db/workflow-runs/run-status.d.ts.map +1 -1
- package/dist/db/workflow-runs/run-status.js +13 -1
- package/dist/db/workflow-runs/run-status.js.map +1 -1
- package/dist/db/workflow-runs.d.ts +2 -2
- package/dist/db/workflow-runs.d.ts.map +1 -1
- package/dist/db/workflow-runs.js +2 -2
- package/dist/db/workflow-runs.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -4
- package/dist/index.js.map +1 -1
- package/dist/presentation/dto/workflow-run.d.ts.map +1 -1
- package/dist/presentation/dto/workflow-run.js +4 -2
- package/dist/presentation/dto/workflow-run.js.map +1 -1
- package/dist/presentation/index.d.ts +1 -1
- package/dist/presentation/index.d.ts.map +1 -1
- package/dist/presentation/index.js +1 -1
- package/dist/presentation/index.js.map +1 -1
- package/dist/presentation/routes/get-run.d.ts.map +1 -1
- package/dist/presentation/routes/get-run.js +2 -1
- package/dist/presentation/routes/get-run.js.map +1 -1
- package/dist/presentation/subscribers/index.d.ts +0 -1
- package/dist/presentation/subscribers/index.d.ts.map +1 -1
- package/dist/presentation/subscribers/index.js +0 -1
- package/dist/presentation/subscribers/index.js.map +1 -1
- package/dist/temporal/activities/index.d.ts +2 -18
- package/dist/temporal/activities/index.d.ts.map +1 -1
- package/dist/temporal/activities/index.js +3 -5
- package/dist/temporal/activities/index.js.map +1 -1
- package/dist/temporal/activities/orchestration-activities.d.ts +5 -14
- package/dist/temporal/activities/orchestration-activities.d.ts.map +1 -1
- package/dist/temporal/activities/orchestration-activities.js +13 -34
- package/dist/temporal/activities/orchestration-activities.js.map +1 -1
- package/dist/temporal/workflows/index.bundle.js +20 -68
- package/dist/temporal/workflows/job-execution-orchestration.d.ts +0 -3
- package/dist/temporal/workflows/job-execution-orchestration.d.ts.map +1 -1
- package/dist/temporal/workflows/job-execution-orchestration.js +17 -41
- package/dist/temporal/workflows/job-execution-orchestration.js.map +1 -1
- package/dist/temporal/workflows/job-listener-orchestration.d.ts +0 -3
- package/dist/temporal/workflows/job-listener-orchestration.d.ts.map +1 -1
- package/dist/temporal/workflows/job-listener-orchestration.js +1 -9
- package/dist/temporal/workflows/job-listener-orchestration.js.map +1 -1
- package/dist/temporal/workflows/run-orchestration.d.ts.map +1 -1
- package/dist/temporal/workflows/run-orchestration.js +2 -18
- package/dist/temporal/workflows/run-orchestration.js.map +1 -1
- package/dist/temporal/workflows/test-env.d.ts +4 -6
- package/dist/temporal/workflows/test-env.d.ts.map +1 -1
- package/dist/temporal/workflows/test-env.js +13 -24
- package/dist/temporal/workflows/test-env.js.map +1 -1
- package/dist/tsconfig.test.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/core/entities/workflow-run.ts +3 -0
- package/src/db/index.ts +1 -1
- package/src/db/job-listeners.test.ts +21 -0
- package/src/db/job-listeners.ts +18 -0
- package/src/db/workflow-runs/job-executions.test.ts +110 -12
- package/src/db/workflow-runs/job-executions.ts +54 -29
- package/src/db/workflow-runs/outbox.ts +63 -0
- package/src/db/workflow-runs/queries.test.ts +27 -0
- package/src/db/workflow-runs/queries.ts +31 -5
- package/src/db/workflow-runs/run-graph.ts +17 -0
- package/src/db/workflow-runs/run-status.test.ts +13 -0
- package/src/db/workflow-runs/run-status.ts +15 -1
- package/src/db/workflow-runs.ts +3 -1
- package/src/index.ts +1 -5
- package/src/presentation/dto/workflow-run.ts +7 -1
- package/src/presentation/index.ts +0 -1
- package/src/presentation/routes/get-run.test.ts +31 -0
- package/src/presentation/routes/get-run.ts +1 -0
- package/src/presentation/routes/list-runs.test.ts +5 -1
- package/src/presentation/subscribers/index.ts +0 -1
- package/src/temporal/activities/index.ts +2 -8
- package/src/temporal/activities/orchestration-activities.test.ts +17 -1
- package/src/temporal/activities/orchestration-activities.ts +13 -46
- package/src/temporal/workflows/job-execution-orchestration.test.ts +6 -25
- package/src/temporal/workflows/job-execution-orchestration.ts +17 -43
- package/src/temporal/workflows/job-listener-orchestration-continuation.test.ts +0 -3
- package/src/temporal/workflows/job-listener-orchestration.test.ts +9 -12
- package/src/temporal/workflows/job-listener-orchestration.ts +0 -8
- package/src/temporal/workflows/run-orchestration.test.ts +22 -33
- package/src/temporal/workflows/run-orchestration.ts +4 -28
- package/src/temporal/workflows/test-env.ts +14 -34
- package/test/fixtures/runners-inter-module.ts +0 -3
- package/test/helpers/workflow-runs.ts +25 -0
- package/tsconfig.build.tsbuildinfo +1 -1
- package/dist/presentation/subscribers/on-runner-job-queued.d.ts +0 -3
- package/dist/presentation/subscribers/on-runner-job-queued.d.ts.map +0 -1
- package/dist/presentation/subscribers/on-runner-job-queued.js +0 -20
- package/dist/presentation/subscribers/on-runner-job-queued.js.map +0 -1
- package/src/presentation/subscribers/on-runner-job-queued.test.ts +0 -57
- package/src/presentation/subscribers/on-runner-job-queued.ts +0 -23
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-graph.d.ts","sourceRoot":"","sources":["../../../src/db/workflow-runs/run-graph.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,aAAa,CAAC;AACrC,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gCAAgC,CAAC;AAChE,OAAO,KAAK,EAAC,EAAE,EAAC,MAAM,UAAU,CAAC;AAEjC,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,cAAc,EAEpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAC,KAAK,WAAW,EAAE,KAAK,KAAK,EAAO,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAC,KAAK,YAAY,EAAQ,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"run-graph.d.ts","sourceRoot":"","sources":["../../../src/db/workflow-runs/run-graph.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,aAAa,CAAC;AACrC,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gCAAgC,CAAC;AAChE,OAAO,KAAK,EAAC,EAAE,EAAC,MAAM,UAAU,CAAC;AAEjC,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,cAAc,EAEpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAC,KAAK,WAAW,EAAE,KAAK,KAAK,EAAO,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAC,KAAK,YAAY,EAAQ,MAAM,oBAAoB,CAAC;AAG5D,KAAK,gCAAgC,GAAG,IAAI,CAAC,oBAAoB,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG;IAC3F,QAAQ,CAAC,UAAU,CAAC,EAAE,oBAAoB,CAAC,YAAY,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC;CAC5E,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;IACxD,QAAQ,CAAC,eAAe,CAAC,EACrB,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,gCAAgC,GAAG,SAAS,CAAC,GAC9D,SAAS,CAAC;IACd,QAAQ,CAAC,WAAW,CAAC,EACjB,CAAC,CAAC,MAAM,EAAE;QACR,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;QACpB,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAC;KACvC,KAAK,SAAS,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAAE,CAAC,GACtD,SAAS,CAAC;CACf;AAED,wBAAsB,2BAA2B,CAC/C,EAAE,EAAE,EAAE,EACN,MAAM,EAAE;IACN,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,aAAa,GAAG,WAAW,GAAG,cAAc,CAAC,CAAC;IACrF,QAAQ,CAAC,kBAAkB,EAAE;QAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAC,CAAC;IAC7E,QAAQ,CAAC,gBAAgB,EAAE,SAAS,uBAAuB,EAAE,CAAC;CAC/D,GACA,OAAO,CAAC,IAAI,CAAC,CAyEf"}
|
|
@@ -3,6 +3,7 @@ import { writeWorkflowsOutboxEvent } from '../outbox-writes.js';
|
|
|
3
3
|
import { jobExecutions } from '../schema/job-executions.js';
|
|
4
4
|
import { jobs } from '../schema/jobs.js';
|
|
5
5
|
import { steps } from '../schema/steps.js';
|
|
6
|
+
import { writeJobExecutionTerminatedOutbox } from './outbox.js';
|
|
6
7
|
export async function persistMaterializedRunGraph(tx, params) {
|
|
7
8
|
const jobRows = params.materializedJobs.length === 0 ? [] : await tx.insert(jobs).values(params.materializedJobs.map((materializedJob)=>({
|
|
8
9
|
...materializedJob.job,
|
|
@@ -19,6 +20,17 @@ export async function persistMaterializedRunGraph(tx, params) {
|
|
|
19
20
|
];
|
|
20
21
|
});
|
|
21
22
|
const jobExecutionRows = jobExecutionValues.length === 0 ? [] : await tx.insert(jobExecutions).values(jobExecutionValues).returning();
|
|
23
|
+
for (const jobExecution of jobExecutionRows){
|
|
24
|
+
if (jobExecution.status === 'succeeded' || jobExecution.status === 'failed' || jobExecution.status === 'cancelled') {
|
|
25
|
+
await writeJobExecutionTerminatedOutbox(tx, {
|
|
26
|
+
jobId: jobExecution.jobId,
|
|
27
|
+
jobExecutionId: jobExecution.id,
|
|
28
|
+
status: jobExecution.status,
|
|
29
|
+
statusReason: jobExecution.statusReason,
|
|
30
|
+
statusReasonMessage: jobExecution.statusReasonMessage
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
22
34
|
const jobById = new Map(jobRows.map((job)=>[
|
|
23
35
|
job.id,
|
|
24
36
|
job
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/db/workflow-runs/run-graph.ts"],"sourcesContent":["import {WORKFLOWS_WORKFLOW_RUN_ATTEMPT_CREATED} from '@shipfox/api-workflows-dto';\nimport type {SQL} from 'drizzle-orm';\nimport type {WorkflowRun} from '#core/entities/workflow-run.js';\nimport type {Tx} from '../db.js';\nimport {writeWorkflowsOutboxEvent} from '../outbox-writes.js';\nimport {\n type JobExecutionCreateDb,\n type JobExecutionDb,\n jobExecutions,\n} from '../schema/job-executions.js';\nimport {type JobCreateDb, type JobDb, jobs} from '../schema/jobs.js';\nimport {type StepCreateDb, steps} from '../schema/steps.js';\n\ntype MaterializedRunGraphJobExecution = Omit<JobExecutionCreateDb, 'finishedAt' | 'jobId'> & {\n readonly finishedAt?: JobExecutionCreateDb['finishedAt'] | SQL | undefined;\n};\n\nexport interface MaterializedRunGraphJob {\n readonly job: Omit<JobCreateDb, 'workflowRunAttemptId'>;\n readonly createExecution?:\n | ((job: JobDb) => MaterializedRunGraphJobExecution | undefined)\n | undefined;\n readonly createSteps?:\n | ((params: {\n readonly job: JobDb;\n readonly jobExecution: JobExecutionDb;\n }) => readonly Omit<StepCreateDb, 'jobExecutionId'>[])\n | undefined;\n}\n\nexport async function persistMaterializedRunGraph(\n tx: Tx,\n params: {\n readonly run: Pick<WorkflowRun, 'id' | 'workspaceId' | 'projectId' | 'definitionId'>;\n readonly workflowRunAttempt: {readonly id: string; readonly attempt: number};\n readonly materializedJobs: readonly MaterializedRunGraphJob[];\n },\n): Promise<void> {\n const jobRows =\n params.materializedJobs.length === 0\n ? []\n : await tx\n .insert(jobs)\n .values(\n params.materializedJobs.map((materializedJob) => ({\n ...materializedJob.job,\n workflowRunAttemptId: params.workflowRunAttempt.id,\n })),\n )\n .returning();\n\n const jobExecutionValues = jobRows.flatMap((jobRow, jobIndex) => {\n const materializedJob = params.materializedJobs[jobIndex];\n const jobExecution = materializedJob?.createExecution?.(jobRow);\n return jobExecution === undefined ? [] : [{...jobExecution, jobId: jobRow.id}];\n });\n const jobExecutionRows =\n jobExecutionValues.length === 0\n ? []\n : await tx.insert(jobExecutions).values(jobExecutionValues).returning();\n\n const jobById = new Map(jobRows.map((job) => [job.id, job]));\n const materializedJobByJobId = new Map(\n jobRows.flatMap((jobRow, index) => {\n const materializedJob = params.materializedJobs[index];\n return materializedJob === undefined ? [] : [[jobRow.id, materializedJob] as const];\n }),\n );\n const stepValues = jobExecutionRows.flatMap((jobExecution) => {\n const job = jobById.get(jobExecution.jobId);\n const materializedJob = materializedJobByJobId.get(jobExecution.jobId);\n if (!job || !materializedJob) return [];\n\n return (materializedJob.createSteps?.({job, jobExecution}) ?? []).map((step) => ({\n ...step,\n jobExecutionId: jobExecution.id,\n }));\n });\n\n if (stepValues.length > 0) {\n await tx.insert(steps).values(stepValues);\n }\n\n await writeWorkflowsOutboxEvent(tx, {\n type: WORKFLOWS_WORKFLOW_RUN_ATTEMPT_CREATED,\n payload: {\n workflowRunId: params.run.id,\n workflowRunAttemptId: params.workflowRunAttempt.id,\n attempt: params.workflowRunAttempt.attempt,\n workspaceId: params.run.workspaceId,\n projectId: params.run.projectId,\n definitionId: params.run.definitionId,\n },\n });\n}\n"],"names":["WORKFLOWS_WORKFLOW_RUN_ATTEMPT_CREATED","writeWorkflowsOutboxEvent","jobExecutions","jobs","steps","persistMaterializedRunGraph","tx","params","jobRows","materializedJobs","length","insert","values","map","materializedJob","job","workflowRunAttemptId","workflowRunAttempt","id","returning","jobExecutionValues","flatMap","jobRow","jobIndex","jobExecution","createExecution","undefined","jobId","jobExecutionRows","jobById","Map","materializedJobByJobId","index","stepValues","get","createSteps","step","
|
|
1
|
+
{"version":3,"sources":["../../../src/db/workflow-runs/run-graph.ts"],"sourcesContent":["import {WORKFLOWS_WORKFLOW_RUN_ATTEMPT_CREATED} from '@shipfox/api-workflows-dto';\nimport type {SQL} from 'drizzle-orm';\nimport type {WorkflowRun} from '#core/entities/workflow-run.js';\nimport type {Tx} from '../db.js';\nimport {writeWorkflowsOutboxEvent} from '../outbox-writes.js';\nimport {\n type JobExecutionCreateDb,\n type JobExecutionDb,\n jobExecutions,\n} from '../schema/job-executions.js';\nimport {type JobCreateDb, type JobDb, jobs} from '../schema/jobs.js';\nimport {type StepCreateDb, steps} from '../schema/steps.js';\nimport {writeJobExecutionTerminatedOutbox} from './outbox.js';\n\ntype MaterializedRunGraphJobExecution = Omit<JobExecutionCreateDb, 'finishedAt' | 'jobId'> & {\n readonly finishedAt?: JobExecutionCreateDb['finishedAt'] | SQL | undefined;\n};\n\nexport interface MaterializedRunGraphJob {\n readonly job: Omit<JobCreateDb, 'workflowRunAttemptId'>;\n readonly createExecution?:\n | ((job: JobDb) => MaterializedRunGraphJobExecution | undefined)\n | undefined;\n readonly createSteps?:\n | ((params: {\n readonly job: JobDb;\n readonly jobExecution: JobExecutionDb;\n }) => readonly Omit<StepCreateDb, 'jobExecutionId'>[])\n | undefined;\n}\n\nexport async function persistMaterializedRunGraph(\n tx: Tx,\n params: {\n readonly run: Pick<WorkflowRun, 'id' | 'workspaceId' | 'projectId' | 'definitionId'>;\n readonly workflowRunAttempt: {readonly id: string; readonly attempt: number};\n readonly materializedJobs: readonly MaterializedRunGraphJob[];\n },\n): Promise<void> {\n const jobRows =\n params.materializedJobs.length === 0\n ? []\n : await tx\n .insert(jobs)\n .values(\n params.materializedJobs.map((materializedJob) => ({\n ...materializedJob.job,\n workflowRunAttemptId: params.workflowRunAttempt.id,\n })),\n )\n .returning();\n\n const jobExecutionValues = jobRows.flatMap((jobRow, jobIndex) => {\n const materializedJob = params.materializedJobs[jobIndex];\n const jobExecution = materializedJob?.createExecution?.(jobRow);\n return jobExecution === undefined ? [] : [{...jobExecution, jobId: jobRow.id}];\n });\n const jobExecutionRows =\n jobExecutionValues.length === 0\n ? []\n : await tx.insert(jobExecutions).values(jobExecutionValues).returning();\n\n for (const jobExecution of jobExecutionRows) {\n if (\n jobExecution.status === 'succeeded' ||\n jobExecution.status === 'failed' ||\n jobExecution.status === 'cancelled'\n ) {\n await writeJobExecutionTerminatedOutbox(tx, {\n jobId: jobExecution.jobId,\n jobExecutionId: jobExecution.id,\n status: jobExecution.status,\n statusReason: jobExecution.statusReason,\n statusReasonMessage: jobExecution.statusReasonMessage,\n });\n }\n }\n\n const jobById = new Map(jobRows.map((job) => [job.id, job]));\n const materializedJobByJobId = new Map(\n jobRows.flatMap((jobRow, index) => {\n const materializedJob = params.materializedJobs[index];\n return materializedJob === undefined ? [] : [[jobRow.id, materializedJob] as const];\n }),\n );\n const stepValues = jobExecutionRows.flatMap((jobExecution) => {\n const job = jobById.get(jobExecution.jobId);\n const materializedJob = materializedJobByJobId.get(jobExecution.jobId);\n if (!job || !materializedJob) return [];\n\n return (materializedJob.createSteps?.({job, jobExecution}) ?? []).map((step) => ({\n ...step,\n jobExecutionId: jobExecution.id,\n }));\n });\n\n if (stepValues.length > 0) {\n await tx.insert(steps).values(stepValues);\n }\n\n await writeWorkflowsOutboxEvent(tx, {\n type: WORKFLOWS_WORKFLOW_RUN_ATTEMPT_CREATED,\n payload: {\n workflowRunId: params.run.id,\n workflowRunAttemptId: params.workflowRunAttempt.id,\n attempt: params.workflowRunAttempt.attempt,\n workspaceId: params.run.workspaceId,\n projectId: params.run.projectId,\n definitionId: params.run.definitionId,\n },\n });\n}\n"],"names":["WORKFLOWS_WORKFLOW_RUN_ATTEMPT_CREATED","writeWorkflowsOutboxEvent","jobExecutions","jobs","steps","writeJobExecutionTerminatedOutbox","persistMaterializedRunGraph","tx","params","jobRows","materializedJobs","length","insert","values","map","materializedJob","job","workflowRunAttemptId","workflowRunAttempt","id","returning","jobExecutionValues","flatMap","jobRow","jobIndex","jobExecution","createExecution","undefined","jobId","jobExecutionRows","status","jobExecutionId","statusReason","statusReasonMessage","jobById","Map","materializedJobByJobId","index","stepValues","get","createSteps","step","type","payload","workflowRunId","run","attempt","workspaceId","projectId","definitionId"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-status.d.ts","sourceRoot":"","sources":["../../../src/db/workflow-runs/run-status.ts"],"names":[],"mappings":"AAKA,OAAO,EAA0B,KAAK,eAAe,EAAC,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACvB,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"run-status.d.ts","sourceRoot":"","sources":["../../../src/db/workflow-runs/run-status.ts"],"names":[],"mappings":"AAKA,OAAO,EAA0B,KAAK,eAAe,EAAC,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACvB,MAAM,gCAAgC,CAAC;AAmBxC,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,+BAA+B;IAC9C,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,OAAO,CAAC,iBAAiB,EAAE,QAAQ,GAAG,WAAW,CAAC,CAAC;IACnE,YAAY,EAAE,OAAO,CAAC,eAAe,EAAE,WAAW,GAAG,eAAe,CAAC,CAAC;IACtE,qBAAqB,EAAE,OAAO,CAAC;IAC/B,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAwJD,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,+BAA+B,GACtC,OAAO,CAAC,WAAW,CAAC,CAgCtB;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC,CA4C7F;AAED,MAAM,WAAW,6BAA6B;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,6BAA6B,GACpC,OAAO,CAAC,WAAW,CAAC,CAuHtB"}
|
|
@@ -12,6 +12,7 @@ import { steps } from '../schema/steps.js';
|
|
|
12
12
|
import { workflowRunAttempts } from '../schema/workflow-run-attempts.js';
|
|
13
13
|
import { toWorkflowRun, workflowRuns } from '../schema/workflow-runs.js';
|
|
14
14
|
import { updateJobStatusAtVersion } from './jobs.js';
|
|
15
|
+
import { writeJobExecutionTerminatedOutbox } from './outbox.js';
|
|
15
16
|
import { lockWorkflowRun, TERMINAL_EXECUTION_STATUSES, TERMINAL_WORKFLOW_RUN_STATUSES } from './shared.js';
|
|
16
17
|
import { bulkUpdateStepStatuses } from './steps.js';
|
|
17
18
|
/**
|
|
@@ -57,9 +58,20 @@ import { bulkUpdateStepStatuses } from './steps.js';
|
|
|
57
58
|
timedOutAt: sql`now()`
|
|
58
59
|
} : {}
|
|
59
60
|
}).where(and(eq(jobExecutions.jobId, jobRow.id), notInArray(jobExecutions.status, TERMINAL_EXECUTION_STATUSES))).returning({
|
|
60
|
-
id: jobExecutions.id
|
|
61
|
+
id: jobExecutions.id,
|
|
62
|
+
jobId: jobExecutions.jobId,
|
|
63
|
+
status: jobExecutions.status,
|
|
64
|
+
statusReason: jobExecutions.statusReason,
|
|
65
|
+
statusReasonMessage: jobExecutions.statusReasonMessage
|
|
61
66
|
});
|
|
62
67
|
for (const jobExecution of terminatedExecutions){
|
|
68
|
+
await writeJobExecutionTerminatedOutbox(tx, {
|
|
69
|
+
jobId: jobExecution.jobId,
|
|
70
|
+
jobExecutionId: jobExecution.id,
|
|
71
|
+
status: jobExecution.status,
|
|
72
|
+
statusReason: jobExecution.statusReason,
|
|
73
|
+
statusReasonMessage: jobExecution.statusReasonMessage
|
|
74
|
+
});
|
|
63
75
|
await bulkUpdateStepStatuses({
|
|
64
76
|
jobExecutionId: jobExecution.id,
|
|
65
77
|
status: spec.terminalStatus
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/db/workflow-runs/run-status.ts"],"sourcesContent":["import {\n WORKFLOWS_WORKFLOW_RUN_CANCELLED,\n WORKFLOWS_WORKFLOW_RUN_TERMINATED,\n} from '@shipfox/api-workflows-dto';\nimport {and, asc, eq, inArray, notInArray, sql} from 'drizzle-orm';\nimport {isJobTerminal, type Job, type JobStatusReason} from '#core/entities/job.js';\nimport {\n isWorkflowRunTerminal,\n type WorkflowRun,\n type WorkflowRunStatus,\n} from '#core/entities/workflow-run.js';\nimport {WorkflowRunNotCancellableError, WorkflowRunNotFoundError} from '#core/errors.js';\nimport {recordWorkflowJobStatusChanged, recordWorkflowRunStatusChanged} from '#metrics/instance.js';\nimport {db, type Tx} from '../db.js';\nimport {writeWorkflowsOutboxEvent} from '../outbox-writes.js';\nimport {jobExecutions} from '../schema/job-executions.js';\nimport {jobs} from '../schema/jobs.js';\nimport {steps} from '../schema/steps.js';\nimport {workflowRunAttempts} from '../schema/workflow-run-attempts.js';\nimport {toWorkflowRun, workflowRuns} from '../schema/workflow-runs.js';\nimport {updateJobStatusAtVersion} from './jobs.js';\nimport {\n lockWorkflowRun,\n TERMINAL_EXECUTION_STATUSES,\n TERMINAL_WORKFLOW_RUN_STATUSES,\n} from './shared.js';\nimport {bulkUpdateStepStatuses} from './steps.js';\n\nexport interface CancelWorkflowRunParams {\n workflowRunId: string;\n}\n\nexport interface FailWorkflowRunAsTimedOutParams {\n runAttemptId: string;\n}\n\nexport interface RunTerminationSpec {\n terminalStatus: Extract<WorkflowRunStatus, 'failed' | 'cancelled'>;\n statusReason: Extract<JobStatusReason, 'timed_out' | 'run_cancelled'>;\n markExecutionTimedOut: boolean;\n emitCancelledEvent: boolean;\n}\n\n/**\n * Shared terminal transition for a run attempt. The caller locks the run and the\n * attempt (and decides how an already-terminal run is handled: timeout returns\n * idempotently, cancellation rejects), then this drives every non-terminal job,\n * execution, and step to `spec.terminalStatus`, resolves still-listening jobs,\n * flips the attempt and run, and writes the outbox. Callers record metrics after\n * the transaction commits.\n */\nasync function terminateRunAttempt(\n tx: Tx,\n params: {\n lockedRun: typeof workflowRuns.$inferSelect;\n lockedAttempt: typeof workflowRunAttempts.$inferSelect;\n spec: RunTerminationSpec;\n },\n): Promise<{run: WorkflowRun; changedJobs: Job[]}> {\n const {lockedRun, lockedAttempt, spec} = params;\n\n const runJobExecutionIds = tx\n .select({id: jobExecutions.id})\n .from(jobExecutions)\n .innerJoin(jobs, eq(jobExecutions.jobId, jobs.id))\n .where(eq(jobs.workflowRunAttemptId, lockedAttempt.id));\n\n await tx\n .select({id: steps.id})\n .from(steps)\n .where(inArray(steps.jobExecutionId, runJobExecutionIds))\n .orderBy(asc(steps.jobExecutionId), asc(steps.position))\n .for('update');\n\n const jobRows = await tx\n .select()\n .from(jobs)\n .where(eq(jobs.workflowRunAttemptId, lockedAttempt.id))\n .orderBy(asc(jobs.position), asc(jobs.id))\n .for('update');\n\n const changedJobs: Job[] = [];\n for (const jobRow of jobRows) {\n if (isJobTerminal(jobRow.status)) continue;\n\n const updated = await updateJobStatusAtVersion(tx, {\n jobId: jobRow.id,\n status: spec.terminalStatus,\n expectedVersion: jobRow.version,\n statusReason: spec.statusReason,\n });\n if (updated?.changed) changedJobs.push(updated.job);\n\n if (jobRow.mode === 'listening') {\n await tx\n .update(jobs)\n .set({listenerStatus: 'resolved', resolutionReason: 'cancelled', updatedAt: new Date()})\n .where(eq(jobs.id, jobRow.id));\n }\n\n const terminatedExecutions = await tx\n .update(jobExecutions)\n .set({\n status: spec.terminalStatus,\n statusReason: spec.statusReason,\n version: sql`${jobExecutions.version} + 1`,\n updatedAt: new Date(),\n finishedAt: sql`now()`,\n ...(spec.markExecutionTimedOut ? {timedOutAt: sql`now()`} : {}),\n })\n .where(\n and(\n eq(jobExecutions.jobId, jobRow.id),\n notInArray(jobExecutions.status, TERMINAL_EXECUTION_STATUSES),\n ),\n )\n .returning({id: jobExecutions.id});\n for (const jobExecution of terminatedExecutions) {\n await bulkUpdateStepStatuses(\n {jobExecutionId: jobExecution.id, status: spec.terminalStatus},\n tx,\n );\n }\n }\n\n await tx\n .update(workflowRunAttempts)\n .set({\n status: spec.terminalStatus,\n version: sql`${workflowRunAttempts.version} + 1`,\n updatedAt: new Date(),\n finishedAt: sql`now()`,\n })\n .where(\n and(\n eq(workflowRunAttempts.id, lockedAttempt.id),\n notInArray(workflowRunAttempts.status, TERMINAL_WORKFLOW_RUN_STATUSES),\n ),\n );\n\n const [terminatedRunRow] = await tx\n .update(workflowRuns)\n .set({\n status: spec.terminalStatus,\n version: sql`${workflowRuns.version} + 1`,\n updatedAt: new Date(),\n finishedAt: sql`now()`,\n })\n .where(\n and(\n eq(workflowRuns.id, lockedRun.id),\n notInArray(workflowRuns.status, TERMINAL_WORKFLOW_RUN_STATUSES),\n ),\n )\n .returning();\n\n const run = toWorkflowRun(terminatedRunRow ?? lockedRun);\n await writeWorkflowsOutboxEvent(tx, {\n type: WORKFLOWS_WORKFLOW_RUN_TERMINATED,\n payload: {\n workflowRunId: run.id,\n workflowRunAttemptId: lockedAttempt.id,\n projectId: run.projectId,\n status: spec.terminalStatus,\n },\n });\n if (spec.emitCancelledEvent) {\n await writeWorkflowsOutboxEvent(tx, {\n type: WORKFLOWS_WORKFLOW_RUN_CANCELLED,\n payload: {\n workflowRunId: run.id,\n workflowRunAttemptId: lockedAttempt.id,\n projectId: run.projectId,\n },\n });\n }\n\n return {run, changedJobs};\n}\n\nexport async function failWorkflowRunAsTimedOut(\n params: FailWorkflowRunAsTimedOutParams,\n): Promise<WorkflowRun> {\n const result = await db().transaction(async (tx) => {\n const [lockedAttempt] = await tx\n .select()\n .from(workflowRunAttempts)\n .where(eq(workflowRunAttempts.id, params.runAttemptId))\n .limit(1)\n .for('update');\n if (!lockedAttempt) throw new WorkflowRunNotFoundError(params.runAttemptId);\n\n const lockedRun = await lockWorkflowRun(lockedAttempt.workflowRunId, tx);\n if (!lockedRun) throw new WorkflowRunNotFoundError(lockedAttempt.workflowRunId);\n if (isWorkflowRunTerminal(lockedRun.status)) {\n return {run: toWorkflowRun(lockedRun), changedJobs: [], changed: false};\n }\n\n const result = await terminateRunAttempt(tx, {\n lockedRun,\n lockedAttempt,\n spec: {\n terminalStatus: 'failed',\n statusReason: 'timed_out',\n markExecutionTimedOut: true,\n emitCancelledEvent: false,\n },\n });\n return {...result, changed: true};\n });\n\n if (result.changed) recordWorkflowRunStatusChanged(result.run.status);\n for (const job of result.changedJobs) recordWorkflowJobStatusChanged(job.status);\n return result.run;\n}\n\nexport async function cancelWorkflowRun(params: CancelWorkflowRunParams): Promise<WorkflowRun> {\n const result = await db().transaction(async (tx) => {\n const lockedRun = await lockWorkflowRun(params.workflowRunId, tx);\n\n if (!lockedRun) {\n throw new WorkflowRunNotFoundError(params.workflowRunId);\n }\n if (isWorkflowRunTerminal(lockedRun.status)) {\n throw new WorkflowRunNotCancellableError(lockedRun.id, lockedRun.status);\n }\n\n const [lockedAttempt] = await tx\n .select()\n .from(workflowRunAttempts)\n .where(\n and(\n eq(workflowRunAttempts.workflowRunId, lockedRun.id),\n eq(workflowRunAttempts.attempt, lockedRun.currentAttempt),\n ),\n )\n .limit(1)\n .for('update');\n if (!lockedAttempt) {\n throw new Error(\n `Current attempt ${lockedRun.currentAttempt} missing for run ${lockedRun.id}`,\n );\n }\n\n return terminateRunAttempt(tx, {\n lockedRun,\n lockedAttempt,\n spec: {\n terminalStatus: 'cancelled',\n statusReason: 'run_cancelled',\n markExecutionTimedOut: false,\n emitCancelledEvent: true,\n },\n });\n });\n\n recordWorkflowRunStatusChanged(result.run.status);\n for (const job of result.changedJobs) recordWorkflowJobStatusChanged(job.status);\n\n return result.run;\n}\n\nexport interface UpdateWorkflowRunStatusParams {\n workflowRunId?: string;\n workflowRunAttemptId?: string;\n status: WorkflowRunStatus;\n expectedVersion: number;\n}\n\nexport async function updateWorkflowRunStatus(\n params: UpdateWorkflowRunStatusParams,\n): Promise<WorkflowRun> {\n const result = await db().transaction(async (tx) => {\n const [attemptRef] = params.workflowRunAttemptId\n ? await tx\n .select({\n id: workflowRunAttempts.id,\n workflowRunId: workflowRunAttempts.workflowRunId,\n })\n .from(workflowRunAttempts)\n .where(eq(workflowRunAttempts.id, params.workflowRunAttemptId))\n .limit(1)\n : [];\n\n const workflowRunId = attemptRef?.workflowRunId ?? params.workflowRunId ?? '';\n const lockedRun = await lockWorkflowRun(workflowRunId, tx);\n\n if (!lockedRun) {\n throw new WorkflowRunNotFoundError(params.workflowRunId ?? params.workflowRunAttemptId ?? '');\n }\n\n const [lockedAttempt] = await tx\n .select()\n .from(workflowRunAttempts)\n .where(\n params.workflowRunAttemptId\n ? eq(workflowRunAttempts.id, params.workflowRunAttemptId)\n : and(\n eq(workflowRunAttempts.workflowRunId, lockedRun.id),\n eq(workflowRunAttempts.attempt, lockedRun.currentAttempt),\n ),\n )\n .limit(1)\n .for('update');\n\n if (!lockedAttempt) {\n throw new WorkflowRunNotFoundError(params.workflowRunId ?? params.workflowRunAttemptId ?? '');\n }\n\n const target = {run: lockedRun, attempt: lockedAttempt};\n\n const rows = await tx\n .update(workflowRunAttempts)\n .set({\n status: params.status,\n version: sql`${workflowRunAttempts.version} + 1`,\n updatedAt: new Date(),\n ...(params.status === 'running'\n ? {startedAt: sql`coalesce(${workflowRunAttempts.startedAt}, now())`}\n : {}),\n ...(isWorkflowRunTerminal(params.status) ? {finishedAt: sql`now()`} : {}),\n })\n .where(\n and(\n eq(workflowRunAttempts.id, target.attempt.id),\n eq(workflowRunAttempts.version, params.expectedVersion),\n notInArray(workflowRunAttempts.status, TERMINAL_WORKFLOW_RUN_STATUSES),\n ),\n )\n .returning();\n\n const attemptRow = rows[0];\n if (!attemptRow) {\n const existing = await tx\n .select()\n .from(workflowRunAttempts)\n .where(eq(workflowRunAttempts.id, target.attempt.id))\n .limit(1);\n const existingRow = existing[0];\n if (\n existingRow &&\n (existingRow.status === params.status || isWorkflowRunTerminal(existingRow.status))\n ) {\n return {\n run: {...toWorkflowRun(target.run), version: existingRow.version},\n changed: false,\n };\n }\n throw new Error(\n `Optimistic lock failure: run attempt ${target.attempt.id} version ${params.expectedVersion}`,\n );\n }\n\n const shouldMirror = target.run.currentAttempt === attemptRow.attempt;\n const [runRow] = shouldMirror\n ? await tx\n .update(workflowRuns)\n .set({\n status: params.status,\n version: sql`${workflowRuns.version} + 1`,\n updatedAt: new Date(),\n ...(params.status === 'running'\n ? {startedAt: sql`coalesce(${workflowRuns.startedAt}, now())`}\n : {}),\n ...(isWorkflowRunTerminal(params.status) ? {finishedAt: sql`now()`} : {}),\n })\n .where(eq(workflowRuns.id, target.run.id))\n .returning()\n : [target.run];\n\n const run = {...toWorkflowRun(runRow ?? target.run), version: attemptRow.version};\n\n if (shouldMirror && isWorkflowRunTerminal(run.status)) {\n await writeWorkflowsOutboxEvent(tx, {\n type: WORKFLOWS_WORKFLOW_RUN_TERMINATED,\n payload: {\n workflowRunId: run.id,\n workflowRunAttemptId: attemptRow.id,\n projectId: run.projectId,\n status: run.status,\n },\n });\n }\n\n return {run, changed: true};\n });\n\n if (result.changed) recordWorkflowRunStatusChanged(result.run.status);\n\n return result.run;\n}\n"],"names":["WORKFLOWS_WORKFLOW_RUN_CANCELLED","WORKFLOWS_WORKFLOW_RUN_TERMINATED","and","asc","eq","inArray","notInArray","sql","isJobTerminal","isWorkflowRunTerminal","WorkflowRunNotCancellableError","WorkflowRunNotFoundError","recordWorkflowJobStatusChanged","recordWorkflowRunStatusChanged","db","writeWorkflowsOutboxEvent","jobExecutions","jobs","steps","workflowRunAttempts","toWorkflowRun","workflowRuns","updateJobStatusAtVersion","lockWorkflowRun","TERMINAL_EXECUTION_STATUSES","TERMINAL_WORKFLOW_RUN_STATUSES","bulkUpdateStepStatuses","terminateRunAttempt","tx","params","lockedRun","lockedAttempt","spec","runJobExecutionIds","select","id","from","innerJoin","jobId","where","workflowRunAttemptId","jobExecutionId","orderBy","position","for","jobRows","changedJobs","jobRow","status","updated","terminalStatus","expectedVersion","version","statusReason","changed","push","job","mode","update","set","listenerStatus","resolutionReason","updatedAt","Date","terminatedExecutions","finishedAt","markExecutionTimedOut","timedOutAt","returning","jobExecution","terminatedRunRow","run","type","payload","workflowRunId","projectId","emitCancelledEvent","failWorkflowRunAsTimedOut","result","transaction","runAttemptId","limit","cancelWorkflowRun","attempt","currentAttempt","Error","updateWorkflowRunStatus","attemptRef","target","rows","startedAt","attemptRow","existing","existingRow","shouldMirror","runRow"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/db/workflow-runs/run-status.ts"],"sourcesContent":["import {\n WORKFLOWS_WORKFLOW_RUN_CANCELLED,\n WORKFLOWS_WORKFLOW_RUN_TERMINATED,\n} from '@shipfox/api-workflows-dto';\nimport {and, asc, eq, inArray, notInArray, sql} from 'drizzle-orm';\nimport {isJobTerminal, type Job, type JobStatusReason} from '#core/entities/job.js';\nimport {\n isWorkflowRunTerminal,\n type WorkflowRun,\n type WorkflowRunStatus,\n} from '#core/entities/workflow-run.js';\nimport {WorkflowRunNotCancellableError, WorkflowRunNotFoundError} from '#core/errors.js';\nimport {recordWorkflowJobStatusChanged, recordWorkflowRunStatusChanged} from '#metrics/instance.js';\nimport {db, type Tx} from '../db.js';\nimport {writeWorkflowsOutboxEvent} from '../outbox-writes.js';\nimport {jobExecutions} from '../schema/job-executions.js';\nimport {jobs} from '../schema/jobs.js';\nimport {steps} from '../schema/steps.js';\nimport {workflowRunAttempts} from '../schema/workflow-run-attempts.js';\nimport {toWorkflowRun, workflowRuns} from '../schema/workflow-runs.js';\nimport {updateJobStatusAtVersion} from './jobs.js';\nimport {writeJobExecutionTerminatedOutbox} from './outbox.js';\nimport {\n lockWorkflowRun,\n TERMINAL_EXECUTION_STATUSES,\n TERMINAL_WORKFLOW_RUN_STATUSES,\n} from './shared.js';\nimport {bulkUpdateStepStatuses} from './steps.js';\n\nexport interface CancelWorkflowRunParams {\n workflowRunId: string;\n}\n\nexport interface FailWorkflowRunAsTimedOutParams {\n runAttemptId: string;\n}\n\nexport interface RunTerminationSpec {\n terminalStatus: Extract<WorkflowRunStatus, 'failed' | 'cancelled'>;\n statusReason: Extract<JobStatusReason, 'timed_out' | 'run_cancelled'>;\n markExecutionTimedOut: boolean;\n emitCancelledEvent: boolean;\n}\n\n/**\n * Shared terminal transition for a run attempt. The caller locks the run and the\n * attempt (and decides how an already-terminal run is handled: timeout returns\n * idempotently, cancellation rejects), then this drives every non-terminal job,\n * execution, and step to `spec.terminalStatus`, resolves still-listening jobs,\n * flips the attempt and run, and writes the outbox. Callers record metrics after\n * the transaction commits.\n */\nasync function terminateRunAttempt(\n tx: Tx,\n params: {\n lockedRun: typeof workflowRuns.$inferSelect;\n lockedAttempt: typeof workflowRunAttempts.$inferSelect;\n spec: RunTerminationSpec;\n },\n): Promise<{run: WorkflowRun; changedJobs: Job[]}> {\n const {lockedRun, lockedAttempt, spec} = params;\n\n const runJobExecutionIds = tx\n .select({id: jobExecutions.id})\n .from(jobExecutions)\n .innerJoin(jobs, eq(jobExecutions.jobId, jobs.id))\n .where(eq(jobs.workflowRunAttemptId, lockedAttempt.id));\n\n await tx\n .select({id: steps.id})\n .from(steps)\n .where(inArray(steps.jobExecutionId, runJobExecutionIds))\n .orderBy(asc(steps.jobExecutionId), asc(steps.position))\n .for('update');\n\n const jobRows = await tx\n .select()\n .from(jobs)\n .where(eq(jobs.workflowRunAttemptId, lockedAttempt.id))\n .orderBy(asc(jobs.position), asc(jobs.id))\n .for('update');\n\n const changedJobs: Job[] = [];\n for (const jobRow of jobRows) {\n if (isJobTerminal(jobRow.status)) continue;\n\n const updated = await updateJobStatusAtVersion(tx, {\n jobId: jobRow.id,\n status: spec.terminalStatus,\n expectedVersion: jobRow.version,\n statusReason: spec.statusReason,\n });\n if (updated?.changed) changedJobs.push(updated.job);\n\n if (jobRow.mode === 'listening') {\n await tx\n .update(jobs)\n .set({listenerStatus: 'resolved', resolutionReason: 'cancelled', updatedAt: new Date()})\n .where(eq(jobs.id, jobRow.id));\n }\n\n const terminatedExecutions = await tx\n .update(jobExecutions)\n .set({\n status: spec.terminalStatus,\n statusReason: spec.statusReason,\n version: sql`${jobExecutions.version} + 1`,\n updatedAt: new Date(),\n finishedAt: sql`now()`,\n ...(spec.markExecutionTimedOut ? {timedOutAt: sql`now()`} : {}),\n })\n .where(\n and(\n eq(jobExecutions.jobId, jobRow.id),\n notInArray(jobExecutions.status, TERMINAL_EXECUTION_STATUSES),\n ),\n )\n .returning({\n id: jobExecutions.id,\n jobId: jobExecutions.jobId,\n status: jobExecutions.status,\n statusReason: jobExecutions.statusReason,\n statusReasonMessage: jobExecutions.statusReasonMessage,\n });\n for (const jobExecution of terminatedExecutions) {\n await writeJobExecutionTerminatedOutbox(tx, {\n jobId: jobExecution.jobId,\n jobExecutionId: jobExecution.id,\n status: jobExecution.status,\n statusReason: jobExecution.statusReason,\n statusReasonMessage: jobExecution.statusReasonMessage,\n });\n await bulkUpdateStepStatuses(\n {jobExecutionId: jobExecution.id, status: spec.terminalStatus},\n tx,\n );\n }\n }\n\n await tx\n .update(workflowRunAttempts)\n .set({\n status: spec.terminalStatus,\n version: sql`${workflowRunAttempts.version} + 1`,\n updatedAt: new Date(),\n finishedAt: sql`now()`,\n })\n .where(\n and(\n eq(workflowRunAttempts.id, lockedAttempt.id),\n notInArray(workflowRunAttempts.status, TERMINAL_WORKFLOW_RUN_STATUSES),\n ),\n );\n\n const [terminatedRunRow] = await tx\n .update(workflowRuns)\n .set({\n status: spec.terminalStatus,\n version: sql`${workflowRuns.version} + 1`,\n updatedAt: new Date(),\n finishedAt: sql`now()`,\n })\n .where(\n and(\n eq(workflowRuns.id, lockedRun.id),\n notInArray(workflowRuns.status, TERMINAL_WORKFLOW_RUN_STATUSES),\n ),\n )\n .returning();\n\n const run = toWorkflowRun(terminatedRunRow ?? lockedRun);\n await writeWorkflowsOutboxEvent(tx, {\n type: WORKFLOWS_WORKFLOW_RUN_TERMINATED,\n payload: {\n workflowRunId: run.id,\n workflowRunAttemptId: lockedAttempt.id,\n projectId: run.projectId,\n status: spec.terminalStatus,\n },\n });\n if (spec.emitCancelledEvent) {\n await writeWorkflowsOutboxEvent(tx, {\n type: WORKFLOWS_WORKFLOW_RUN_CANCELLED,\n payload: {\n workflowRunId: run.id,\n workflowRunAttemptId: lockedAttempt.id,\n projectId: run.projectId,\n },\n });\n }\n\n return {run, changedJobs};\n}\n\nexport async function failWorkflowRunAsTimedOut(\n params: FailWorkflowRunAsTimedOutParams,\n): Promise<WorkflowRun> {\n const result = await db().transaction(async (tx) => {\n const [lockedAttempt] = await tx\n .select()\n .from(workflowRunAttempts)\n .where(eq(workflowRunAttempts.id, params.runAttemptId))\n .limit(1)\n .for('update');\n if (!lockedAttempt) throw new WorkflowRunNotFoundError(params.runAttemptId);\n\n const lockedRun = await lockWorkflowRun(lockedAttempt.workflowRunId, tx);\n if (!lockedRun) throw new WorkflowRunNotFoundError(lockedAttempt.workflowRunId);\n if (isWorkflowRunTerminal(lockedRun.status)) {\n return {run: toWorkflowRun(lockedRun), changedJobs: [], changed: false};\n }\n\n const result = await terminateRunAttempt(tx, {\n lockedRun,\n lockedAttempt,\n spec: {\n terminalStatus: 'failed',\n statusReason: 'timed_out',\n markExecutionTimedOut: true,\n emitCancelledEvent: false,\n },\n });\n return {...result, changed: true};\n });\n\n if (result.changed) recordWorkflowRunStatusChanged(result.run.status);\n for (const job of result.changedJobs) recordWorkflowJobStatusChanged(job.status);\n return result.run;\n}\n\nexport async function cancelWorkflowRun(params: CancelWorkflowRunParams): Promise<WorkflowRun> {\n const result = await db().transaction(async (tx) => {\n const lockedRun = await lockWorkflowRun(params.workflowRunId, tx);\n\n if (!lockedRun) {\n throw new WorkflowRunNotFoundError(params.workflowRunId);\n }\n if (isWorkflowRunTerminal(lockedRun.status)) {\n throw new WorkflowRunNotCancellableError(lockedRun.id, lockedRun.status);\n }\n\n const [lockedAttempt] = await tx\n .select()\n .from(workflowRunAttempts)\n .where(\n and(\n eq(workflowRunAttempts.workflowRunId, lockedRun.id),\n eq(workflowRunAttempts.attempt, lockedRun.currentAttempt),\n ),\n )\n .limit(1)\n .for('update');\n if (!lockedAttempt) {\n throw new Error(\n `Current attempt ${lockedRun.currentAttempt} missing for run ${lockedRun.id}`,\n );\n }\n\n return terminateRunAttempt(tx, {\n lockedRun,\n lockedAttempt,\n spec: {\n terminalStatus: 'cancelled',\n statusReason: 'run_cancelled',\n markExecutionTimedOut: false,\n emitCancelledEvent: true,\n },\n });\n });\n\n recordWorkflowRunStatusChanged(result.run.status);\n for (const job of result.changedJobs) recordWorkflowJobStatusChanged(job.status);\n\n return result.run;\n}\n\nexport interface UpdateWorkflowRunStatusParams {\n workflowRunId?: string;\n workflowRunAttemptId?: string;\n status: WorkflowRunStatus;\n expectedVersion: number;\n}\n\nexport async function updateWorkflowRunStatus(\n params: UpdateWorkflowRunStatusParams,\n): Promise<WorkflowRun> {\n const result = await db().transaction(async (tx) => {\n const [attemptRef] = params.workflowRunAttemptId\n ? await tx\n .select({\n id: workflowRunAttempts.id,\n workflowRunId: workflowRunAttempts.workflowRunId,\n })\n .from(workflowRunAttempts)\n .where(eq(workflowRunAttempts.id, params.workflowRunAttemptId))\n .limit(1)\n : [];\n\n const workflowRunId = attemptRef?.workflowRunId ?? params.workflowRunId ?? '';\n const lockedRun = await lockWorkflowRun(workflowRunId, tx);\n\n if (!lockedRun) {\n throw new WorkflowRunNotFoundError(params.workflowRunId ?? params.workflowRunAttemptId ?? '');\n }\n\n const [lockedAttempt] = await tx\n .select()\n .from(workflowRunAttempts)\n .where(\n params.workflowRunAttemptId\n ? eq(workflowRunAttempts.id, params.workflowRunAttemptId)\n : and(\n eq(workflowRunAttempts.workflowRunId, lockedRun.id),\n eq(workflowRunAttempts.attempt, lockedRun.currentAttempt),\n ),\n )\n .limit(1)\n .for('update');\n\n if (!lockedAttempt) {\n throw new WorkflowRunNotFoundError(params.workflowRunId ?? params.workflowRunAttemptId ?? '');\n }\n\n const target = {run: lockedRun, attempt: lockedAttempt};\n\n const rows = await tx\n .update(workflowRunAttempts)\n .set({\n status: params.status,\n version: sql`${workflowRunAttempts.version} + 1`,\n updatedAt: new Date(),\n ...(params.status === 'running'\n ? {startedAt: sql`coalesce(${workflowRunAttempts.startedAt}, now())`}\n : {}),\n ...(isWorkflowRunTerminal(params.status) ? {finishedAt: sql`now()`} : {}),\n })\n .where(\n and(\n eq(workflowRunAttempts.id, target.attempt.id),\n eq(workflowRunAttempts.version, params.expectedVersion),\n notInArray(workflowRunAttempts.status, TERMINAL_WORKFLOW_RUN_STATUSES),\n ),\n )\n .returning();\n\n const attemptRow = rows[0];\n if (!attemptRow) {\n const existing = await tx\n .select()\n .from(workflowRunAttempts)\n .where(eq(workflowRunAttempts.id, target.attempt.id))\n .limit(1);\n const existingRow = existing[0];\n if (\n existingRow &&\n (existingRow.status === params.status || isWorkflowRunTerminal(existingRow.status))\n ) {\n return {\n run: {...toWorkflowRun(target.run), version: existingRow.version},\n changed: false,\n };\n }\n throw new Error(\n `Optimistic lock failure: run attempt ${target.attempt.id} version ${params.expectedVersion}`,\n );\n }\n\n const shouldMirror = target.run.currentAttempt === attemptRow.attempt;\n const [runRow] = shouldMirror\n ? await tx\n .update(workflowRuns)\n .set({\n status: params.status,\n version: sql`${workflowRuns.version} + 1`,\n updatedAt: new Date(),\n ...(params.status === 'running'\n ? {startedAt: sql`coalesce(${workflowRuns.startedAt}, now())`}\n : {}),\n ...(isWorkflowRunTerminal(params.status) ? {finishedAt: sql`now()`} : {}),\n })\n .where(eq(workflowRuns.id, target.run.id))\n .returning()\n : [target.run];\n\n const run = {...toWorkflowRun(runRow ?? target.run), version: attemptRow.version};\n\n if (shouldMirror && isWorkflowRunTerminal(run.status)) {\n await writeWorkflowsOutboxEvent(tx, {\n type: WORKFLOWS_WORKFLOW_RUN_TERMINATED,\n payload: {\n workflowRunId: run.id,\n workflowRunAttemptId: attemptRow.id,\n projectId: run.projectId,\n status: run.status,\n },\n });\n }\n\n return {run, changed: true};\n });\n\n if (result.changed) recordWorkflowRunStatusChanged(result.run.status);\n\n return result.run;\n}\n"],"names":["WORKFLOWS_WORKFLOW_RUN_CANCELLED","WORKFLOWS_WORKFLOW_RUN_TERMINATED","and","asc","eq","inArray","notInArray","sql","isJobTerminal","isWorkflowRunTerminal","WorkflowRunNotCancellableError","WorkflowRunNotFoundError","recordWorkflowJobStatusChanged","recordWorkflowRunStatusChanged","db","writeWorkflowsOutboxEvent","jobExecutions","jobs","steps","workflowRunAttempts","toWorkflowRun","workflowRuns","updateJobStatusAtVersion","writeJobExecutionTerminatedOutbox","lockWorkflowRun","TERMINAL_EXECUTION_STATUSES","TERMINAL_WORKFLOW_RUN_STATUSES","bulkUpdateStepStatuses","terminateRunAttempt","tx","params","lockedRun","lockedAttempt","spec","runJobExecutionIds","select","id","from","innerJoin","jobId","where","workflowRunAttemptId","jobExecutionId","orderBy","position","for","jobRows","changedJobs","jobRow","status","updated","terminalStatus","expectedVersion","version","statusReason","changed","push","job","mode","update","set","listenerStatus","resolutionReason","updatedAt","Date","terminatedExecutions","finishedAt","markExecutionTimedOut","timedOutAt","returning","statusReasonMessage","jobExecution","terminatedRunRow","run","type","payload","workflowRunId","projectId","emitCancelledEvent","failWorkflowRunAsTimedOut","result","transaction","runAttemptId","limit","cancelWorkflowRun","attempt","currentAttempt","Error","updateWorkflowRunStatus","attemptRef","target","rows","startedAt","attemptRow","existing","existingRow","shouldMirror","runRow"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export type { UpdateJobExecutionStatusAtVersionParams, UpdateJobExecutionStatusParams, } from './workflow-runs/job-executions.js';
|
|
2
|
-
export { failJobExecutionAsTimedOut, getFirstJobExecutionByJobId, getJobExecutionById, getJobExecutionsByJobId, getJobExecutionsByWorkflowRunAttemptId, getLatestJobExecutionByJobId,
|
|
2
|
+
export { failJobExecutionAsTimedOut, getFirstJobExecutionByJobId, getJobExecutionById, getJobExecutionsByJobId, getJobExecutionsByWorkflowRunAttemptId, getLatestJobExecutionByJobId, queueJobExecution, recordJobExecutionStartedAt, resolveJobExecutionAfterLeaseExpiry, updateJobExecutionStatus, } from './workflow-runs/job-executions.js';
|
|
3
3
|
export type { EvaluateJobActivationsParams, EvaluateJobSuccessResult, JobActivationDecision, JobScope, UpdateJobStatusAtVersionParams, UpdateJobStatusParams, } from './workflow-runs/jobs.js';
|
|
4
4
|
export { evaluateJobActivations, evaluateJobSuccess, getDirectDependencyJobContexts, getJobById, getJobScope, getJobsByWorkflowRunAttemptId, getJobsByWorkflowRunId, resolveJobStatusFromJobExecutions, updateJobStatus, updateJobStatusAtVersion, } from './workflow-runs/jobs.js';
|
|
5
|
-
export { writeJobStepsSettledOutbox, writeStepAttemptTerminatedOutbox, writeStepRestartEnqueuedOutbox, } from './workflow-runs/outbox.js';
|
|
5
|
+
export { writeJobExecutionQueuedOutbox, writeJobExecutionTerminatedOutbox, writeJobStepsSettledOutbox, writeStepAttemptTerminatedOutbox, writeStepRestartEnqueuedOutbox, } from './workflow-runs/outbox.js';
|
|
6
6
|
export type { ListWorkflowRunsParams, ListWorkflowRunsResult, WorkflowJobExecutionDepth, WorkflowJobExecutionDepthParams, WorkflowRunAggregates, WorkflowRunCursor, WorkflowRunFilters, WorkflowRunJobRawStatusCount, WorkflowRunJobStatusCount, WorkflowRunJobSummary, WorkflowRunJobSummaryTarget, WorkflowRunJobsSummary, } from './workflow-runs/queries.js';
|
|
7
7
|
export { buildWorkflowRunListConditions, getJobExecutionDetail, getLatestAttempt, getWorkflowJobExecutionDepth, getWorkflowRunAggregates, getWorkflowRunAttemptById, getWorkflowRunByAttemptId, getWorkflowRunById, getWorkflowRunDetail, listRunAttempts, listWorkflowRunJobSummaries, listWorkflowRuns, listWorkflowRunsByProject, } from './workflow-runs/queries.js';
|
|
8
8
|
export type { CancelWorkflowRunParams, CreateRerunWorkflowRunParams, CreateWorkflowRunParams, FailWorkflowRunAsTimedOutParams, UpdateWorkflowRunStatusParams, } from './workflow-runs/runs.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-runs.d.ts","sourceRoot":"","sources":["../../src/db/workflow-runs.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,uCAAuC,EACvC,8BAA8B,GAC/B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,mBAAmB,EACnB,uBAAuB,EACvB,sCAAsC,EACtC,4BAA4B,EAC5B,
|
|
1
|
+
{"version":3,"file":"workflow-runs.d.ts","sourceRoot":"","sources":["../../src/db/workflow-runs.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,uCAAuC,EACvC,8BAA8B,GAC/B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,mBAAmB,EACnB,uBAAuB,EACvB,sCAAsC,EACtC,4BAA4B,EAC5B,iBAAiB,EACjB,2BAA2B,EAC3B,mCAAmC,EACnC,wBAAwB,GACzB,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EACV,4BAA4B,EAC5B,wBAAwB,EACxB,qBAAqB,EACrB,QAAQ,EACR,8BAA8B,EAC9B,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,8BAA8B,EAC9B,UAAU,EACV,WAAW,EACX,6BAA6B,EAC7B,sBAAsB,EACtB,iCAAiC,EACjC,eAAe,EACf,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,6BAA6B,EAC7B,iCAAiC,EACjC,0BAA0B,EAC1B,gCAAgC,EAChC,8BAA8B,GAC/B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,+BAA+B,EAC/B,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,4BAA4B,EAC5B,yBAAyB,EACzB,qBAAqB,EACrB,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,8BAA8B,EAC9B,qBAAqB,EACrB,gBAAgB,EAChB,4BAA4B,EAC5B,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,2BAA2B,EAC3B,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,uBAAuB,EACvB,4BAA4B,EAC5B,uBAAuB,EACvB,+BAA+B,EAC/B,6BAA6B,GAC9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,yBAAyB,EACzB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAC,wBAAwB,EAAC,MAAM,2BAA2B,CAAC;AACnE,YAAY,EACV,qBAAqB,EACrB,4BAA4B,EAC5B,0BAA0B,EAC1B,qCAAqC,EACrC,uBAAuB,EACvB,8BAA8B,EAC9B,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,+BAA+B,EAC/B,iBAAiB,EACjB,4BAA4B,EAC5B,oBAAoB,EACpB,eAAe,EACf,+BAA+B,EAC/B,uBAAuB,EACvB,WAAW,EACX,0BAA0B,EAC1B,wBAAwB,EACxB,iCAAiC,EACjC,eAAe,EACf,wBAAwB,EACxB,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,eAAe,GAChB,MAAM,0BAA0B,CAAC"}
|
package/dist/db/workflow-runs.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { failJobExecutionAsTimedOut, getFirstJobExecutionByJobId, getJobExecutionById, getJobExecutionsByJobId, getJobExecutionsByWorkflowRunAttemptId, getLatestJobExecutionByJobId,
|
|
1
|
+
export { failJobExecutionAsTimedOut, getFirstJobExecutionByJobId, getJobExecutionById, getJobExecutionsByJobId, getJobExecutionsByWorkflowRunAttemptId, getLatestJobExecutionByJobId, queueJobExecution, recordJobExecutionStartedAt, resolveJobExecutionAfterLeaseExpiry, updateJobExecutionStatus } from './workflow-runs/job-executions.js';
|
|
2
2
|
export { evaluateJobActivations, evaluateJobSuccess, getDirectDependencyJobContexts, getJobById, getJobScope, getJobsByWorkflowRunAttemptId, getJobsByWorkflowRunId, resolveJobStatusFromJobExecutions, updateJobStatus, updateJobStatusAtVersion } from './workflow-runs/jobs.js';
|
|
3
|
-
export { writeJobStepsSettledOutbox, writeStepAttemptTerminatedOutbox, writeStepRestartEnqueuedOutbox } from './workflow-runs/outbox.js';
|
|
3
|
+
export { writeJobExecutionQueuedOutbox, writeJobExecutionTerminatedOutbox, writeJobStepsSettledOutbox, writeStepAttemptTerminatedOutbox, writeStepRestartEnqueuedOutbox } from './workflow-runs/outbox.js';
|
|
4
4
|
export { buildWorkflowRunListConditions, getJobExecutionDetail, getLatestAttempt, getWorkflowJobExecutionDepth, getWorkflowRunAggregates, getWorkflowRunAttemptById, getWorkflowRunByAttemptId, getWorkflowRunById, getWorkflowRunDetail, listRunAttempts, listWorkflowRunJobSummaries, listWorkflowRuns, listWorkflowRunsByProject } from './workflow-runs/queries.js';
|
|
5
5
|
export { cancelWorkflowRun, createRerunWorkflowRun, createWorkflowRun, failWorkflowRunAsTimedOut, loadReferencedVariables, updateWorkflowRunStatus } from './workflow-runs/runs.js';
|
|
6
6
|
export { getWorkflowContextForJob } from './workflow-runs/shared.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/db/workflow-runs.ts"],"sourcesContent":["export type {\n UpdateJobExecutionStatusAtVersionParams,\n UpdateJobExecutionStatusParams,\n} from './workflow-runs/job-executions.js';\nexport {\n failJobExecutionAsTimedOut,\n getFirstJobExecutionByJobId,\n getJobExecutionById,\n getJobExecutionsByJobId,\n getJobExecutionsByWorkflowRunAttemptId,\n getLatestJobExecutionByJobId,\n
|
|
1
|
+
{"version":3,"sources":["../../src/db/workflow-runs.ts"],"sourcesContent":["export type {\n UpdateJobExecutionStatusAtVersionParams,\n UpdateJobExecutionStatusParams,\n} from './workflow-runs/job-executions.js';\nexport {\n failJobExecutionAsTimedOut,\n getFirstJobExecutionByJobId,\n getJobExecutionById,\n getJobExecutionsByJobId,\n getJobExecutionsByWorkflowRunAttemptId,\n getLatestJobExecutionByJobId,\n queueJobExecution,\n recordJobExecutionStartedAt,\n resolveJobExecutionAfterLeaseExpiry,\n updateJobExecutionStatus,\n} from './workflow-runs/job-executions.js';\nexport type {\n EvaluateJobActivationsParams,\n EvaluateJobSuccessResult,\n JobActivationDecision,\n JobScope,\n UpdateJobStatusAtVersionParams,\n UpdateJobStatusParams,\n} from './workflow-runs/jobs.js';\nexport {\n evaluateJobActivations,\n evaluateJobSuccess,\n getDirectDependencyJobContexts,\n getJobById,\n getJobScope,\n getJobsByWorkflowRunAttemptId,\n getJobsByWorkflowRunId,\n resolveJobStatusFromJobExecutions,\n updateJobStatus,\n updateJobStatusAtVersion,\n} from './workflow-runs/jobs.js';\nexport {\n writeJobExecutionQueuedOutbox,\n writeJobExecutionTerminatedOutbox,\n writeJobStepsSettledOutbox,\n writeStepAttemptTerminatedOutbox,\n writeStepRestartEnqueuedOutbox,\n} from './workflow-runs/outbox.js';\nexport type {\n ListWorkflowRunsParams,\n ListWorkflowRunsResult,\n WorkflowJobExecutionDepth,\n WorkflowJobExecutionDepthParams,\n WorkflowRunAggregates,\n WorkflowRunCursor,\n WorkflowRunFilters,\n WorkflowRunJobRawStatusCount,\n WorkflowRunJobStatusCount,\n WorkflowRunJobSummary,\n WorkflowRunJobSummaryTarget,\n WorkflowRunJobsSummary,\n} from './workflow-runs/queries.js';\nexport {\n buildWorkflowRunListConditions,\n getJobExecutionDetail,\n getLatestAttempt,\n getWorkflowJobExecutionDepth,\n getWorkflowRunAggregates,\n getWorkflowRunAttemptById,\n getWorkflowRunByAttemptId,\n getWorkflowRunById,\n getWorkflowRunDetail,\n listRunAttempts,\n listWorkflowRunJobSummaries,\n listWorkflowRuns,\n listWorkflowRunsByProject,\n} from './workflow-runs/queries.js';\nexport type {\n CancelWorkflowRunParams,\n CreateRerunWorkflowRunParams,\n CreateWorkflowRunParams,\n FailWorkflowRunAsTimedOutParams,\n UpdateWorkflowRunStatusParams,\n} from './workflow-runs/runs.js';\nexport {\n cancelWorkflowRun,\n createRerunWorkflowRun,\n createWorkflowRun,\n failWorkflowRunAsTimedOut,\n loadReferencedVariables,\n updateWorkflowRunStatus,\n} from './workflow-runs/runs.js';\nexport {getWorkflowContextForJob} from './workflow-runs/shared.js';\nexport type {\n ApplyStepResultParams,\n BulkUpdateStepStatusesParams,\n CancelRemainingStepsParams,\n DispatchStepWithCompletedConfigParams,\n FinishStepAttemptParams,\n InsertRunningStepAttemptParams,\n JobExecutionFailureOrigin,\n MarkStepRunningParams,\n MarkStepSkippedParams,\n RewindStepsToPendingParams,\n StepAttemptDetail,\n} from './workflow-runs/steps.js';\nexport {\n applyStepResult,\n bulkUpdateStepStatuses,\n cancelRemainingSteps,\n countStepAttempts,\n dispatchStepWithCompletedConfig,\n finishStepAttempt,\n getJobExecutionFailureOrigin,\n getStepAttemptDetail,\n getStepAttempts,\n getStepAttemptsByJobExecutionId,\n getStepAttemptsByJobIds,\n getStepById,\n getStepByIdForJobExecution,\n getStepsByJobExecutionId,\n getStepsByJobExecutionIdForUpdate,\n getStepsByJobId,\n insertRunningStepAttempt,\n markStepRunning,\n markStepSkipped,\n rewindStepsToPending,\n settleJobFailed,\n} from './workflow-runs/steps.js';\n"],"names":["failJobExecutionAsTimedOut","getFirstJobExecutionByJobId","getJobExecutionById","getJobExecutionsByJobId","getJobExecutionsByWorkflowRunAttemptId","getLatestJobExecutionByJobId","queueJobExecution","recordJobExecutionStartedAt","resolveJobExecutionAfterLeaseExpiry","updateJobExecutionStatus","evaluateJobActivations","evaluateJobSuccess","getDirectDependencyJobContexts","getJobById","getJobScope","getJobsByWorkflowRunAttemptId","getJobsByWorkflowRunId","resolveJobStatusFromJobExecutions","updateJobStatus","updateJobStatusAtVersion","writeJobExecutionQueuedOutbox","writeJobExecutionTerminatedOutbox","writeJobStepsSettledOutbox","writeStepAttemptTerminatedOutbox","writeStepRestartEnqueuedOutbox","buildWorkflowRunListConditions","getJobExecutionDetail","getLatestAttempt","getWorkflowJobExecutionDepth","getWorkflowRunAggregates","getWorkflowRunAttemptById","getWorkflowRunByAttemptId","getWorkflowRunById","getWorkflowRunDetail","listRunAttempts","listWorkflowRunJobSummaries","listWorkflowRuns","listWorkflowRunsByProject","cancelWorkflowRun","createRerunWorkflowRun","createWorkflowRun","failWorkflowRunAsTimedOut","loadReferencedVariables","updateWorkflowRunStatus","getWorkflowContextForJob","applyStepResult","bulkUpdateStepStatuses","cancelRemainingSteps","countStepAttempts","dispatchStepWithCompletedConfig","finishStepAttempt","getJobExecutionFailureOrigin","getStepAttemptDetail","getStepAttempts","getStepAttemptsByJobExecutionId","getStepAttemptsByJobIds","getStepById","getStepByIdForJobExecution","getStepsByJobExecutionId","getStepsByJobExecutionIdForUpdate","getStepsByJobId","insertRunningStepAttempt","markStepRunning","markStepSkipped","rewindStepsToPending","settleJobFailed"],"mappings":"AAIA,SACEA,0BAA0B,EAC1BC,2BAA2B,EAC3BC,mBAAmB,EACnBC,uBAAuB,EACvBC,sCAAsC,EACtCC,4BAA4B,EAC5BC,iBAAiB,EACjBC,2BAA2B,EAC3BC,mCAAmC,EACnCC,wBAAwB,QACnB,oCAAoC;AAS3C,SACEC,sBAAsB,EACtBC,kBAAkB,EAClBC,8BAA8B,EAC9BC,UAAU,EACVC,WAAW,EACXC,6BAA6B,EAC7BC,sBAAsB,EACtBC,iCAAiC,EACjCC,eAAe,EACfC,wBAAwB,QACnB,0BAA0B;AACjC,SACEC,6BAA6B,EAC7BC,iCAAiC,EACjCC,0BAA0B,EAC1BC,gCAAgC,EAChCC,8BAA8B,QACzB,4BAA4B;AAenC,SACEC,8BAA8B,EAC9BC,qBAAqB,EACrBC,gBAAgB,EAChBC,4BAA4B,EAC5BC,wBAAwB,EACxBC,yBAAyB,EACzBC,yBAAyB,EACzBC,kBAAkB,EAClBC,oBAAoB,EACpBC,eAAe,EACfC,2BAA2B,EAC3BC,gBAAgB,EAChBC,yBAAyB,QACpB,6BAA6B;AAQpC,SACEC,iBAAiB,EACjBC,sBAAsB,EACtBC,iBAAiB,EACjBC,yBAAyB,EACzBC,uBAAuB,EACvBC,uBAAuB,QAClB,0BAA0B;AACjC,SAAQC,wBAAwB,QAAO,4BAA4B;AAcnE,SACEC,eAAe,EACfC,sBAAsB,EACtBC,oBAAoB,EACpBC,iBAAiB,EACjBC,+BAA+B,EAC/BC,iBAAiB,EACjBC,4BAA4B,EAC5BC,oBAAoB,EACpBC,eAAe,EACfC,+BAA+B,EAC/BC,uBAAuB,EACvBC,WAAW,EACXC,0BAA0B,EAC1BC,wBAAwB,EACxBC,iCAAiC,EACjCC,eAAe,EACfC,wBAAwB,EACxBC,eAAe,EACfC,eAAe,EACfC,oBAAoB,EACpBC,eAAe,QACV,2BAA2B"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,4BAA4B,EAAC,MAAM,uCAAuC,CAAC;AACxF,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,qCAAqC,CAAC;AAChF,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,oCAAoC,CAAC;AAC9E,OAAO,KAAK,EAAC,4BAA4B,EAAC,MAAM,2CAA2C,CAAC;AAC5F,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,gDAAgD,CAAC;AAC7F,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,4BAA4B,EAAC,MAAM,uCAAuC,CAAC;AACxF,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,qCAAqC,CAAC;AAChF,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,oCAAoC,CAAC;AAC9E,OAAO,KAAK,EAAC,4BAA4B,EAAC,MAAM,2CAA2C,CAAC;AAC5F,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,gDAAgD,CAAC;AAC7F,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,wCAAwC,CAAC;AAMjF,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,uCAAuC,CAAC;AACpF,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,uCAAuC,CAAC;AAWpF,OAAO,KAAK,EAAC,2BAA2B,EAAC,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAC,KAAK,aAAa,EAAoB,MAAM,sBAAsB,CAAC;AAiB3E,YAAY,EACV,GAAG,EACH,gBAAgB,EAChB,2BAA2B,EAC3B,iBAAiB,EACjB,IAAI,EACJ,cAAc,EACd,WAAW,EACX,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,uBAAuB,EACvB,8BAA8B,EAC9B,2BAA2B,EAC3B,oBAAoB,EACpB,WAAW,EACX,8BAA8B,GAC/B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,OAAO,EACP,KAAK,4BAA4B,EACjC,KAAK,4BAA4B,EACjC,EAAE,EACF,sBAAsB,EACtB,WAAW,EACX,0BAA0B,EAC1B,cAAc,EACd,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,qBAAqB,EAAC,MAAM,qCAAqC,CAAC;AAO1E,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,WAAW,EACX,WAAW,EACX,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,OAAO,EACP,UAAU,GACX,EAAE;IACD,KAAK,EAAE,sBAAsB,CAAC;IAC9B,WAAW,EAAE,4BAA4B,CAAC;IAC1C,WAAW,EAAE,4BAA4B,CAAC;IAC1C,IAAI,EAAE,qBAAqB,CAAC;IAC5B,YAAY,EAAE,wBAAwB,CAAC;IACvC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,OAAO,EAAE,wBAAwB,CAAC;IAClC,OAAO,EAAE,wBAAwB,CAAC;IAClC,UAAU,EAAE,2BAA2B,CAAC;CACzC,GAAG,aAAa,CAmDhB"}
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { dirname, resolve } from 'node:path';
|
|
2
2
|
import { fileURLToPath } from 'node:url';
|
|
3
|
-
import { RUNNER_JOB_CLAIMED, RUNNER_JOB_LEASE_EXPIRED
|
|
3
|
+
import { RUNNER_JOB_CLAIMED, RUNNER_JOB_LEASE_EXPIRED } from '@shipfox/api-runners-dto';
|
|
4
4
|
import { WORKFLOWS_JOB_EVENT_DELIVERED, WORKFLOWS_JOB_STEPS_SETTLED, WORKFLOWS_JOB_TERMINATED, WORKFLOWS_STEP_ATTEMPT_TERMINATED, WORKFLOWS_WORKFLOW_RUN_ATTEMPT_CREATED, WORKFLOWS_WORKFLOW_RUN_CANCELLED, workflowsEventSchemas } from '@shipfox/api-workflows-dto';
|
|
5
5
|
import { subscriberFactory } from '@shipfox/node-module';
|
|
6
6
|
import { db, migrationsPath, workflowsOutbox } from '#db/index.js';
|
|
7
7
|
import { registerWorkflowsServiceMetrics } from '#metrics/index.js';
|
|
8
|
-
import { createWorkflowRoutes, onJobEventDelivered, onJobStepsSettled, onJobTerminatedFailureAnnotation, onRunnerJobClaimed, onRunnerJobLeaseExpired,
|
|
8
|
+
import { createWorkflowRoutes, onJobEventDelivered, onJobStepsSettled, onJobTerminatedFailureAnnotation, onRunnerJobClaimed, onRunnerJobLeaseExpired, onStepAttemptTerminatedFailureAnnotation, onWorkflowRunAttemptCreated, onWorkflowRunCancelled } from '#presentation/index.js';
|
|
9
9
|
import { createWorkflowsInterModulePresentation } from '#presentation/inter-module.js';
|
|
10
10
|
import { createOrchestrationActivities, WORKFLOWS_TASK_QUEUE } from '#temporal/index.js';
|
|
11
11
|
export { DefinitionNotFoundError, InterpolationUnresolvableError, isPermanentRunWorkflowError, ProjectMismatchError, runWorkflow, WorkflowRunNotCancellableError } from '#core/index.js';
|
|
@@ -49,7 +49,6 @@ export function createWorkflowsModule({ agent, definitions, annotations, auth, i
|
|
|
49
49
|
subscriber(WORKFLOWS_STEP_ATTEMPT_TERMINATED, onStepAttemptTerminatedFailureAnnotation(annotations)),
|
|
50
50
|
subscriber(WORKFLOWS_JOB_TERMINATED, onJobTerminatedFailureAnnotation(annotations)),
|
|
51
51
|
subscriber(RUNNER_JOB_LEASE_EXPIRED, onRunnerJobLeaseExpired),
|
|
52
|
-
subscriber(RUNNER_JOB_QUEUED, onRunnerJobQueued),
|
|
53
52
|
subscriber(RUNNER_JOB_CLAIMED, onRunnerJobClaimed)
|
|
54
53
|
],
|
|
55
54
|
workers: [
|
|
@@ -60,7 +59,6 @@ export function createWorkflowsModule({ agent, definitions, annotations, auth, i
|
|
|
60
59
|
agent,
|
|
61
60
|
integrations,
|
|
62
61
|
projects,
|
|
63
|
-
runners,
|
|
64
62
|
secrets
|
|
65
63
|
}),
|
|
66
64
|
workflows: []
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {dirname, resolve} from 'node:path';\nimport {fileURLToPath} from 'node:url';\nimport type {AnnotationsInterModuleClient} from '@shipfox/annotations-dto/inter-module';\nimport type {AgentInterModuleClient} from '@shipfox/api-agent-dto/inter-module';\nimport type {AuthInterModuleClient} from '@shipfox/api-auth-dto/inter-module';\nimport type {DefinitionsInterModuleClient} from '@shipfox/api-definitions-dto/inter-module';\nimport type {IntegrationsModuleClient} from '@shipfox/api-integration-core-dto/inter-module';\nimport type {ProjectsModuleClient} from '@shipfox/api-projects-dto/inter-module';\nimport {\n RUNNER_JOB_CLAIMED,\n RUNNER_JOB_LEASE_EXPIRED,\n
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {dirname, resolve} from 'node:path';\nimport {fileURLToPath} from 'node:url';\nimport type {AnnotationsInterModuleClient} from '@shipfox/annotations-dto/inter-module';\nimport type {AgentInterModuleClient} from '@shipfox/api-agent-dto/inter-module';\nimport type {AuthInterModuleClient} from '@shipfox/api-auth-dto/inter-module';\nimport type {DefinitionsInterModuleClient} from '@shipfox/api-definitions-dto/inter-module';\nimport type {IntegrationsModuleClient} from '@shipfox/api-integration-core-dto/inter-module';\nimport type {ProjectsModuleClient} from '@shipfox/api-projects-dto/inter-module';\nimport {\n RUNNER_JOB_CLAIMED,\n RUNNER_JOB_LEASE_EXPIRED,\n type RunnersEventMap,\n} from '@shipfox/api-runners-dto';\nimport type {RunnersInterModuleClient} from '@shipfox/api-runners-dto/inter-module';\nimport type {SecretsInterModuleClient} from '@shipfox/api-secrets-dto/inter-module';\nimport {\n WORKFLOWS_JOB_EVENT_DELIVERED,\n WORKFLOWS_JOB_STEPS_SETTLED,\n WORKFLOWS_JOB_TERMINATED,\n WORKFLOWS_STEP_ATTEMPT_TERMINATED,\n WORKFLOWS_WORKFLOW_RUN_ATTEMPT_CREATED,\n WORKFLOWS_WORKFLOW_RUN_CANCELLED,\n type WorkflowsEventMapDto,\n workflowsEventSchemas,\n} from '@shipfox/api-workflows-dto';\nimport type {WorkspacesInterModuleClient} from '@shipfox/api-workspaces-dto/inter-module';\nimport {type ShipfoxModule, subscriberFactory} from '@shipfox/node-module';\nimport {db, migrationsPath, workflowsOutbox} from '#db/index.js';\nimport {registerWorkflowsServiceMetrics} from '#metrics/index.js';\nimport {\n createWorkflowRoutes,\n onJobEventDelivered,\n onJobStepsSettled,\n onJobTerminatedFailureAnnotation,\n onRunnerJobClaimed,\n onRunnerJobLeaseExpired,\n onStepAttemptTerminatedFailureAnnotation,\n onWorkflowRunAttemptCreated,\n onWorkflowRunCancelled,\n} from '#presentation/index.js';\nimport {createWorkflowsInterModulePresentation} from '#presentation/inter-module.js';\nimport {createOrchestrationActivities, WORKFLOWS_TASK_QUEUE} from '#temporal/index.js';\n\nexport type {\n Job,\n JobListenerEvent,\n JobListenerEventDisposition,\n RunWorkflowParams,\n Step,\n TriggerPayload,\n WorkflowRun,\n WorkflowSourceSnapshot,\n} from '#core/index.js';\nexport {\n DefinitionNotFoundError,\n InterpolationUnresolvableError,\n isPermanentRunWorkflowError,\n ProjectMismatchError,\n runWorkflow,\n WorkflowRunNotCancellableError,\n} from '#core/index.js';\nexport {\n closeDb,\n type DeliverEventToListenerParams,\n type DeliverEventToListenerResult,\n db,\n deliverEventToListener,\n getStepById,\n getStepByIdForJobExecution,\n migrationsPath,\n workflowsOutbox,\n} from '#db/index.js';\nexport {loadRunningLeasedStep} from '#presentation/routes/leased-step.js';\n\nconst packageRoot = resolve(dirname(fileURLToPath(import.meta.url)), '..');\nconst workflowsPath = resolve(packageRoot, 'dist/temporal/workflows/index.js');\n\nconst subscriber = subscriberFactory<WorkflowsEventMapDto & RunnersEventMap>();\n\nexport function createWorkflowsModule({\n agent,\n definitions,\n annotations,\n auth,\n integrations,\n projects,\n runners,\n secrets,\n workspaces,\n}: {\n agent: AgentInterModuleClient;\n definitions: DefinitionsInterModuleClient;\n annotations: AnnotationsInterModuleClient;\n auth: AuthInterModuleClient;\n integrations: IntegrationsModuleClient;\n projects: ProjectsModuleClient;\n runners: RunnersInterModuleClient;\n secrets: SecretsInterModuleClient;\n workspaces: WorkspacesInterModuleClient;\n}): ShipfoxModule {\n return {\n name: 'workflows',\n database: {db, migrationsPath, databaseNamespace: 'workflows'},\n routes: createWorkflowRoutes({\n agent,\n annotations,\n auth,\n integrations,\n projects,\n runners,\n secrets,\n workspaces,\n }),\n metrics: registerWorkflowsServiceMetrics,\n publishers: [\n {name: 'workflows', table: workflowsOutbox, db, eventSchemas: workflowsEventSchemas},\n ],\n subscribers: [\n subscriber(WORKFLOWS_WORKFLOW_RUN_ATTEMPT_CREATED, onWorkflowRunAttemptCreated),\n subscriber(WORKFLOWS_WORKFLOW_RUN_CANCELLED, onWorkflowRunCancelled),\n subscriber(WORKFLOWS_JOB_EVENT_DELIVERED, onJobEventDelivered),\n subscriber(WORKFLOWS_JOB_STEPS_SETTLED, onJobStepsSettled),\n subscriber(\n WORKFLOWS_STEP_ATTEMPT_TERMINATED,\n onStepAttemptTerminatedFailureAnnotation(annotations),\n ),\n subscriber(WORKFLOWS_JOB_TERMINATED, onJobTerminatedFailureAnnotation(annotations)),\n subscriber(RUNNER_JOB_LEASE_EXPIRED, onRunnerJobLeaseExpired),\n subscriber(RUNNER_JOB_CLAIMED, onRunnerJobClaimed),\n ],\n workers: [\n {\n taskQueue: WORKFLOWS_TASK_QUEUE,\n workflowsPath,\n activities: () => createOrchestrationActivities({agent, integrations, projects, secrets}),\n workflows: [],\n },\n ],\n interModulePresentations: [\n createWorkflowsInterModulePresentation({\n agent,\n definitions,\n integrations,\n projects,\n runners,\n secrets,\n workspaces,\n }),\n ],\n };\n}\n"],"names":["dirname","resolve","fileURLToPath","RUNNER_JOB_CLAIMED","RUNNER_JOB_LEASE_EXPIRED","WORKFLOWS_JOB_EVENT_DELIVERED","WORKFLOWS_JOB_STEPS_SETTLED","WORKFLOWS_JOB_TERMINATED","WORKFLOWS_STEP_ATTEMPT_TERMINATED","WORKFLOWS_WORKFLOW_RUN_ATTEMPT_CREATED","WORKFLOWS_WORKFLOW_RUN_CANCELLED","workflowsEventSchemas","subscriberFactory","db","migrationsPath","workflowsOutbox","registerWorkflowsServiceMetrics","createWorkflowRoutes","onJobEventDelivered","onJobStepsSettled","onJobTerminatedFailureAnnotation","onRunnerJobClaimed","onRunnerJobLeaseExpired","onStepAttemptTerminatedFailureAnnotation","onWorkflowRunAttemptCreated","onWorkflowRunCancelled","createWorkflowsInterModulePresentation","createOrchestrationActivities","WORKFLOWS_TASK_QUEUE","DefinitionNotFoundError","InterpolationUnresolvableError","isPermanentRunWorkflowError","ProjectMismatchError","runWorkflow","WorkflowRunNotCancellableError","closeDb","deliverEventToListener","getStepById","getStepByIdForJobExecution","loadRunningLeasedStep","packageRoot","url","workflowsPath","subscriber","createWorkflowsModule","agent","definitions","annotations","auth","integrations","projects","runners","secrets","workspaces","name","database","databaseNamespace","routes","metrics","publishers","table","eventSchemas","subscribers","workers","taskQueue","activities","workflows","interModulePresentations"],"mappings":"AAAA,SAAQA,OAAO,EAAEC,OAAO,QAAO,YAAY;AAC3C,SAAQC,aAAa,QAAO,WAAW;AAOvC,SACEC,kBAAkB,EAClBC,wBAAwB,QAEnB,2BAA2B;AAGlC,SACEC,6BAA6B,EAC7BC,2BAA2B,EAC3BC,wBAAwB,EACxBC,iCAAiC,EACjCC,sCAAsC,EACtCC,gCAAgC,EAEhCC,qBAAqB,QAChB,6BAA6B;AAEpC,SAA4BC,iBAAiB,QAAO,uBAAuB;AAC3E,SAAQC,EAAE,EAAEC,cAAc,EAAEC,eAAe,QAAO,eAAe;AACjE,SAAQC,+BAA+B,QAAO,oBAAoB;AAClE,SACEC,oBAAoB,EACpBC,mBAAmB,EACnBC,iBAAiB,EACjBC,gCAAgC,EAChCC,kBAAkB,EAClBC,uBAAuB,EACvBC,wCAAwC,EACxCC,2BAA2B,EAC3BC,sBAAsB,QACjB,yBAAyB;AAChC,SAAQC,sCAAsC,QAAO,gCAAgC;AACrF,SAAQC,6BAA6B,EAAEC,oBAAoB,QAAO,qBAAqB;AAYvF,SACEC,uBAAuB,EACvBC,8BAA8B,EAC9BC,2BAA2B,EAC3BC,oBAAoB,EACpBC,WAAW,EACXC,8BAA8B,QACzB,iBAAiB;AACxB,SACEC,OAAO,EAGPtB,EAAE,EACFuB,sBAAsB,EACtBC,WAAW,EACXC,0BAA0B,EAC1BxB,cAAc,EACdC,eAAe,QACV,eAAe;AACtB,SAAQwB,qBAAqB,QAAO,sCAAsC;AAE1E,MAAMC,cAAcvC,QAAQD,QAAQE,cAAc,YAAYuC,GAAG,IAAI;AACrE,MAAMC,gBAAgBzC,QAAQuC,aAAa;AAE3C,MAAMG,aAAa/B;AAEnB,OAAO,SAASgC,sBAAsB,EACpCC,KAAK,EACLC,WAAW,EACXC,WAAW,EACXC,IAAI,EACJC,YAAY,EACZC,QAAQ,EACRC,OAAO,EACPC,OAAO,EACPC,UAAU,EAWX;IACC,OAAO;QACLC,MAAM;QACNC,UAAU;YAAC1C;YAAIC;YAAgB0C,mBAAmB;QAAW;QAC7DC,QAAQxC,qBAAqB;YAC3B4B;YACAE;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;QACF;QACAK,SAAS1C;QACT2C,YAAY;YACV;gBAACL,MAAM;gBAAaM,OAAO7C;gBAAiBF;gBAAIgD,cAAclD;YAAqB;SACpF;QACDmD,aAAa;YACXnB,WAAWlC,wCAAwCe;YACnDmB,WAAWjC,kCAAkCe;YAC7CkB,WAAWtC,+BAA+Ba;YAC1CyB,WAAWrC,6BAA6Ba;YACxCwB,WACEnC,mCACAe,yCAAyCwB;YAE3CJ,WAAWpC,0BAA0Ba,iCAAiC2B;YACtEJ,WAAWvC,0BAA0BkB;YACrCqB,WAAWxC,oBAAoBkB;SAChC;QACD0C,SAAS;YACP;gBACEC,WAAWpC;gBACXc;gBACAuB,YAAY,IAAMtC,8BAA8B;wBAACkB;wBAAOI;wBAAcC;wBAAUE;oBAAO;gBACvFc,WAAW,EAAE;YACf;SACD;QACDC,0BAA0B;YACxBzC,uCAAuC;gBACrCmB;gBACAC;gBACAG;gBACAC;gBACAC;gBACAC;gBACAC;YACF;SACD;IACH;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-run.d.ts","sourceRoot":"","sources":["../../../src/presentation/dto/workflow-run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EACd,sBAAsB,EAEvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAC,WAAW,EAA8B,MAAM,gCAAgC,CAAC;AAC7F,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,wCAAwC,CAAC;AAC/E,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,cAAc,CAAC;AAEzD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,WAAW,EAAE,aAAa,SAAqB,GAAG,cAAc,CAuB7F;
|
|
1
|
+
{"version":3,"file":"workflow-run.d.ts","sourceRoot":"","sources":["../../../src/presentation/dto/workflow-run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EACd,sBAAsB,EAEvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAC,WAAW,EAA8B,MAAM,gCAAgC,CAAC;AAC7F,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,wCAAwC,CAAC;AAC/E,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,cAAc,CAAC;AAEzD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,WAAW,EAAE,aAAa,SAAqB,GAAG,cAAc,CAuB7F;AASD,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,WAAW,EAChB,IAAI,GAAE,sBAAmC,GACxC,sBAAsB,CAiBxB;AAgBD,wBAAgB,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,qBAAqB,CAWlF"}
|
|
@@ -25,7 +25,8 @@ export function toRunDto(run, latestAttempt = run.currentAttempt) {
|
|
|
25
25
|
const EMPTY_JOBS = {
|
|
26
26
|
preview: [],
|
|
27
27
|
statusCounts: [],
|
|
28
|
-
rawStatusCounts: []
|
|
28
|
+
rawStatusCounts: [],
|
|
29
|
+
hasStartedJobExecution: false
|
|
29
30
|
};
|
|
30
31
|
export function toRunListItemDto(run, jobs = EMPTY_JOBS) {
|
|
31
32
|
return {
|
|
@@ -47,7 +48,8 @@ export function toRunListItemDto(run, jobs = EMPTY_JOBS) {
|
|
|
47
48
|
job_display_status_counts: jobs.statusCounts.map(({ status, count })=>({
|
|
48
49
|
status,
|
|
49
50
|
count
|
|
50
|
-
}))
|
|
51
|
+
})),
|
|
52
|
+
has_started_job_execution: jobs.hasStartedJobExecution
|
|
51
53
|
};
|
|
52
54
|
}
|
|
53
55
|
// The persisted reference predates `actor` and carries an internal project id the client has
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/presentation/dto/workflow-run.ts"],"sourcesContent":["import type {\n WorkflowRunAttemptDto,\n WorkflowRunDto,\n WorkflowRunListItemDto,\n WorkflowRunTriggerReferenceDto,\n} from '@shipfox/api-workflows-dto';\nimport type {WorkflowRun, WorkflowRunTriggerReference} from '#core/entities/workflow-run.js';\nimport type {WorkflowRunAttempt} from '#core/entities/workflow-run-attempt.js';\nimport type {WorkflowRunJobsSummary} from '#db/index.js';\n\nexport function toRunDto(run: WorkflowRun, latestAttempt = run.currentAttempt): WorkflowRunDto {\n return {\n id: run.id,\n project_id: run.projectId,\n definition_id: run.definitionId,\n number: run.number,\n name: run.name,\n workflow_name: run.workflowName,\n status: run.status,\n current_attempt: run.currentAttempt,\n latest_attempt: latestAttempt,\n trigger_provider: run.triggerProvider,\n trigger_source: run.triggerSource,\n trigger_event: run.triggerEvent,\n trigger_payload: run.triggerPayload,\n trigger_reference: toTriggerReferenceDto(run.triggerReference),\n inputs: run.inputs,\n source_snapshot: run.sourceSnapshot,\n created_at: run.createdAt.toISOString(),\n updated_at: run.updatedAt.toISOString(),\n started_at: run.startedAt?.toISOString() ?? null,\n finished_at: run.finishedAt?.toISOString() ?? null,\n };\n}\n\nconst EMPTY_JOBS: WorkflowRunJobsSummary = {preview: []
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/dto/workflow-run.ts"],"sourcesContent":["import type {\n WorkflowRunAttemptDto,\n WorkflowRunDto,\n WorkflowRunListItemDto,\n WorkflowRunTriggerReferenceDto,\n} from '@shipfox/api-workflows-dto';\nimport type {WorkflowRun, WorkflowRunTriggerReference} from '#core/entities/workflow-run.js';\nimport type {WorkflowRunAttempt} from '#core/entities/workflow-run-attempt.js';\nimport type {WorkflowRunJobsSummary} from '#db/index.js';\n\nexport function toRunDto(run: WorkflowRun, latestAttempt = run.currentAttempt): WorkflowRunDto {\n return {\n id: run.id,\n project_id: run.projectId,\n definition_id: run.definitionId,\n number: run.number,\n name: run.name,\n workflow_name: run.workflowName,\n status: run.status,\n current_attempt: run.currentAttempt,\n latest_attempt: latestAttempt,\n trigger_provider: run.triggerProvider,\n trigger_source: run.triggerSource,\n trigger_event: run.triggerEvent,\n trigger_payload: run.triggerPayload,\n trigger_reference: toTriggerReferenceDto(run.triggerReference),\n inputs: run.inputs,\n source_snapshot: run.sourceSnapshot,\n created_at: run.createdAt.toISOString(),\n updated_at: run.updatedAt.toISOString(),\n started_at: run.startedAt?.toISOString() ?? null,\n finished_at: run.finishedAt?.toISOString() ?? null,\n };\n}\n\nconst EMPTY_JOBS: WorkflowRunJobsSummary = {\n preview: [],\n statusCounts: [],\n rawStatusCounts: [],\n hasStartedJobExecution: false,\n};\n\nexport function toRunListItemDto(\n run: WorkflowRun,\n jobs: WorkflowRunJobsSummary = EMPTY_JOBS,\n): WorkflowRunListItemDto {\n return {\n ...toRunDto(run),\n jobs: jobs.preview.map((job) => ({\n id: job.id,\n key: job.key,\n name: job.name,\n status: job.status,\n mode: job.mode,\n listener_status: job.listenerStatus,\n execution_status: job.executionStatus,\n position: job.position,\n })),\n job_status_counts: jobs.rawStatusCounts.map(({status, count}) => ({status, count})),\n job_display_status_counts: jobs.statusCounts.map(({status, count}) => ({status, count})),\n has_started_job_execution: jobs.hasStartedJobExecution,\n };\n}\n\n// The persisted reference predates `actor` and carries an internal project id the client has\n// no use for, so each field is read defensively rather than spread onto the response.\nfunction toTriggerReferenceDto(\n reference: WorkflowRunTriggerReference | null | undefined,\n): WorkflowRunTriggerReferenceDto | null {\n if (!reference) return null;\n return {\n repository: reference.repository ?? null,\n ref: reference.ref ?? null,\n commit: reference.commit ?? null,\n actor: reference.actor ?? null,\n };\n}\n\nexport function toRunAttemptDto(attempt: WorkflowRunAttempt): WorkflowRunAttemptDto {\n return {\n id: attempt.id,\n workflow_run_id: attempt.workflowRunId,\n attempt: attempt.attempt,\n status: attempt.status,\n created_at: attempt.createdAt.toISOString(),\n started_at: attempt.startedAt?.toISOString() ?? null,\n finished_at: attempt.finishedAt?.toISOString() ?? null,\n rerun_mode: attempt.rerunMode,\n };\n}\n"],"names":["toRunDto","run","latestAttempt","currentAttempt","id","project_id","projectId","definition_id","definitionId","number","name","workflow_name","workflowName","status","current_attempt","latest_attempt","trigger_provider","triggerProvider","trigger_source","triggerSource","trigger_event","triggerEvent","trigger_payload","triggerPayload","trigger_reference","toTriggerReferenceDto","triggerReference","inputs","source_snapshot","sourceSnapshot","created_at","createdAt","toISOString","updated_at","updatedAt","started_at","startedAt","finished_at","finishedAt","EMPTY_JOBS","preview","statusCounts","rawStatusCounts","hasStartedJobExecution","toRunListItemDto","jobs","map","job","key","mode","listener_status","listenerStatus","execution_status","executionStatus","position","job_status_counts","count","job_display_status_counts","has_started_job_execution","reference","repository","ref","commit","actor","toRunAttemptDto","attempt","workflow_run_id","workflowRunId","rerun_mode","rerunMode"],"mappings":"AAUA,OAAO,SAASA,SAASC,GAAgB,EAAEC,gBAAgBD,IAAIE,cAAc;IAC3E,OAAO;QACLC,IAAIH,IAAIG,EAAE;QACVC,YAAYJ,IAAIK,SAAS;QACzBC,eAAeN,IAAIO,YAAY;QAC/BC,QAAQR,IAAIQ,MAAM;QAClBC,MAAMT,IAAIS,IAAI;QACdC,eAAeV,IAAIW,YAAY;QAC/BC,QAAQZ,IAAIY,MAAM;QAClBC,iBAAiBb,IAAIE,cAAc;QACnCY,gBAAgBb;QAChBc,kBAAkBf,IAAIgB,eAAe;QACrCC,gBAAgBjB,IAAIkB,aAAa;QACjCC,eAAenB,IAAIoB,YAAY;QAC/BC,iBAAiBrB,IAAIsB,cAAc;QACnCC,mBAAmBC,sBAAsBxB,IAAIyB,gBAAgB;QAC7DC,QAAQ1B,IAAI0B,MAAM;QAClBC,iBAAiB3B,IAAI4B,cAAc;QACnCC,YAAY7B,IAAI8B,SAAS,CAACC,WAAW;QACrCC,YAAYhC,IAAIiC,SAAS,CAACF,WAAW;QACrCG,YAAYlC,IAAImC,SAAS,EAAEJ,iBAAiB;QAC5CK,aAAapC,IAAIqC,UAAU,EAAEN,iBAAiB;IAChD;AACF;AAEA,MAAMO,aAAqC;IACzCC,SAAS,EAAE;IACXC,cAAc,EAAE;IAChBC,iBAAiB,EAAE;IACnBC,wBAAwB;AAC1B;AAEA,OAAO,SAASC,iBACd3C,GAAgB,EAChB4C,OAA+BN,UAAU;IAEzC,OAAO;QACL,GAAGvC,SAASC,IAAI;QAChB4C,MAAMA,KAAKL,OAAO,CAACM,GAAG,CAAC,CAACC,MAAS,CAAA;gBAC/B3C,IAAI2C,IAAI3C,EAAE;gBACV4C,KAAKD,IAAIC,GAAG;gBACZtC,MAAMqC,IAAIrC,IAAI;gBACdG,QAAQkC,IAAIlC,MAAM;gBAClBoC,MAAMF,IAAIE,IAAI;gBACdC,iBAAiBH,IAAII,cAAc;gBACnCC,kBAAkBL,IAAIM,eAAe;gBACrCC,UAAUP,IAAIO,QAAQ;YACxB,CAAA;QACAC,mBAAmBV,KAAKH,eAAe,CAACI,GAAG,CAAC,CAAC,EAACjC,MAAM,EAAE2C,KAAK,EAAC,GAAM,CAAA;gBAAC3C;gBAAQ2C;YAAK,CAAA;QAChFC,2BAA2BZ,KAAKJ,YAAY,CAACK,GAAG,CAAC,CAAC,EAACjC,MAAM,EAAE2C,KAAK,EAAC,GAAM,CAAA;gBAAC3C;gBAAQ2C;YAAK,CAAA;QACrFE,2BAA2Bb,KAAKF,sBAAsB;IACxD;AACF;AAEA,6FAA6F;AAC7F,sFAAsF;AACtF,SAASlB,sBACPkC,SAAyD;IAEzD,IAAI,CAACA,WAAW,OAAO;IACvB,OAAO;QACLC,YAAYD,UAAUC,UAAU,IAAI;QACpCC,KAAKF,UAAUE,GAAG,IAAI;QACtBC,QAAQH,UAAUG,MAAM,IAAI;QAC5BC,OAAOJ,UAAUI,KAAK,IAAI;IAC5B;AACF;AAEA,OAAO,SAASC,gBAAgBC,OAA2B;IACzD,OAAO;QACL7D,IAAI6D,QAAQ7D,EAAE;QACd8D,iBAAiBD,QAAQE,aAAa;QACtCF,SAASA,QAAQA,OAAO;QACxBpD,QAAQoD,QAAQpD,MAAM;QACtBiB,YAAYmC,QAAQlC,SAAS,CAACC,WAAW;QACzCG,YAAY8B,QAAQ7B,SAAS,EAAEJ,iBAAiB;QAChDK,aAAa4B,QAAQ3B,UAAU,EAAEN,iBAAiB;QAClDoC,YAAYH,QAAQI,SAAS;IAC/B;AACF"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { createWorkflowRoutes } from './routes/index.js';
|
|
2
|
-
export { onJobEventDelivered, onJobStepsSettled, onJobTerminatedFailureAnnotation, onRunnerJobClaimed, onRunnerJobLeaseExpired,
|
|
2
|
+
export { onJobEventDelivered, onJobStepsSettled, onJobTerminatedFailureAnnotation, onRunnerJobClaimed, onRunnerJobLeaseExpired, onStepAttemptTerminatedFailureAnnotation, onWorkflowRunAttemptCreated, onWorkflowRunCancelled, } from './subscribers/index.js';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/presentation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,oBAAoB,EAAC,MAAM,mBAAmB,CAAC;AACvD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,gCAAgC,EAChC,kBAAkB,EAClB,uBAAuB,EACvB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/presentation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,oBAAoB,EAAC,MAAM,mBAAmB,CAAC;AACvD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,gCAAgC,EAChC,kBAAkB,EAClB,uBAAuB,EACvB,wCAAwC,EACxC,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,wBAAwB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { createWorkflowRoutes } from './routes/index.js';
|
|
2
|
-
export { onJobEventDelivered, onJobStepsSettled, onJobTerminatedFailureAnnotation, onRunnerJobClaimed, onRunnerJobLeaseExpired,
|
|
2
|
+
export { onJobEventDelivered, onJobStepsSettled, onJobTerminatedFailureAnnotation, onRunnerJobClaimed, onRunnerJobLeaseExpired, onStepAttemptTerminatedFailureAnnotation, onWorkflowRunAttemptCreated, onWorkflowRunCancelled } from './subscribers/index.js';
|
|
3
3
|
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/presentation/index.ts"],"sourcesContent":["export {createWorkflowRoutes} from './routes/index.js';\nexport {\n onJobEventDelivered,\n onJobStepsSettled,\n onJobTerminatedFailureAnnotation,\n onRunnerJobClaimed,\n onRunnerJobLeaseExpired,\n
|
|
1
|
+
{"version":3,"sources":["../../src/presentation/index.ts"],"sourcesContent":["export {createWorkflowRoutes} from './routes/index.js';\nexport {\n onJobEventDelivered,\n onJobStepsSettled,\n onJobTerminatedFailureAnnotation,\n onRunnerJobClaimed,\n onRunnerJobLeaseExpired,\n onStepAttemptTerminatedFailureAnnotation,\n onWorkflowRunAttemptCreated,\n onWorkflowRunCancelled,\n} from './subscribers/index.js';\n"],"names":["createWorkflowRoutes","onJobEventDelivered","onJobStepsSettled","onJobTerminatedFailureAnnotation","onRunnerJobClaimed","onRunnerJobLeaseExpired","onStepAttemptTerminatedFailureAnnotation","onWorkflowRunAttemptCreated","onWorkflowRunCancelled"],"mappings":"AAAA,SAAQA,oBAAoB,QAAO,oBAAoB;AACvD,SACEC,mBAAmB,EACnBC,iBAAiB,EACjBC,gCAAgC,EAChCC,kBAAkB,EAClBC,uBAAuB,EACvBC,wCAAwC,EACxCC,2BAA2B,EAC3BC,sBAAsB,QACjB,yBAAyB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-run.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/get-run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,wCAAwC,CAAC;AAejF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"get-run.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/get-run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,wCAAwC,CAAC;AAejF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,oBAAoB,mDAsDzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/presentation/routes/get-run.ts"],"sourcesContent":["import type {ProjectsModuleClient} from '@shipfox/api-projects-dto/inter-module';\nimport {workflowRunDetailResponseSchema} from '@shipfox/api-workflows-dto';\nimport {ClientError, defineRoute} from '@shipfox/node-fastify';\nimport {z} from 'zod';\nimport {getWorkflowRunDetail} from '#db/index.js';\nimport {\n toJobDto,\n toJobExecutionDto,\n toRunAttemptDto,\n toRunDto,\n toStepAttemptDto,\n toStepDto,\n} from '#presentation/dto/index.js';\nimport {requireAccessibleRun} from './require-accessible-run.js';\n\nexport function getRunRoute(projects: ProjectsModuleClient) {\n return defineRoute({\n method: 'GET',\n path: '/:id',\n description: 'Get a workflow run by ID with jobs and steps',\n schema: {\n params: z.object({\n id: z.string().uuid(),\n }),\n querystring: z.object({\n attempt: z.coerce.number().int().positive().optional(),\n }),\n response: {\n 200: workflowRunDetailResponseSchema,\n },\n },\n handler: async (request) => {\n const {id} = request.params;\n await requireAccessibleRun({request, id, projects});\n\n const run = await getWorkflowRunDetail(id, request.query.attempt);\n if (!run) {\n throw new ClientError('Run not found', 'not-found', {status: 404});\n }\n\n const jobDtos = run.jobs.map((job) => ({\n ...toJobDto(job),\n job_executions: job.jobExecutions.map((jobExecution) => ({\n ...toJobExecutionDto(jobExecution),\n steps: jobExecution.steps.map((step) => {\n const attempts = step.attempts.map(toStepAttemptDto);\n const latestTerminalAttempt = attempts\n .filter((attempt) => attempt.status !== 'running')\n .at(-1);\n return {\n ...toStepDto(step),\n exit_code: latestTerminalAttempt?.exit_code ?? null,\n outputs: latestTerminalAttempt?.outputs ?? null,\n response: latestTerminalAttempt?.response ?? null,\n gate_result: latestTerminalAttempt?.gate_result ?? null,\n attempts,\n };\n }),\n })),\n }));\n\n return {\n ...toRunDto(run, run.latestAttempt),\n run_attempt: toRunAttemptDto(run.runAttempt),\n jobs: jobDtos,\n };\n },\n });\n}\n"],"names":["workflowRunDetailResponseSchema","ClientError","defineRoute","z","getWorkflowRunDetail","toJobDto","toJobExecutionDto","toRunAttemptDto","toRunDto","toStepAttemptDto","toStepDto","requireAccessibleRun","getRunRoute","projects","method","path","description","schema","params","object","id","string","uuid","querystring","attempt","coerce","number","int","positive","optional","response","handler","request","run","query","status","jobDtos","jobs","map","job","job_executions","jobExecutions","jobExecution","steps","step","attempts","latestTerminalAttempt","filter","at","exit_code","outputs","gate_result","latestAttempt","run_attempt","runAttempt"],"mappings":"AACA,SAAQA,+BAA+B,QAAO,6BAA6B;AAC3E,SAAQC,WAAW,EAAEC,WAAW,QAAO,wBAAwB;AAC/D,SAAQC,CAAC,QAAO,MAAM;AACtB,SAAQC,oBAAoB,QAAO,eAAe;AAClD,SACEC,QAAQ,EACRC,iBAAiB,EACjBC,eAAe,EACfC,QAAQ,EACRC,gBAAgB,EAChBC,SAAS,QACJ,6BAA6B;AACpC,SAAQC,oBAAoB,QAAO,8BAA8B;AAEjE,OAAO,SAASC,YAAYC,QAA8B;IACxD,OAAOX,YAAY;QACjBY,QAAQ;QACRC,MAAM;QACNC,aAAa;QACbC,QAAQ;YACNC,QAAQf,EAAEgB,MAAM,CAAC;gBACfC,IAAIjB,EAAEkB,MAAM,GAAGC,IAAI;YACrB;YACAC,aAAapB,EAAEgB,MAAM,CAAC;gBACpBK,SAASrB,EAAEsB,MAAM,CAACC,MAAM,GAAGC,GAAG,GAAGC,QAAQ,GAAGC,QAAQ;YACtD;YACAC,UAAU;gBACR,KAAK9B;YACP;QACF;QACA+B,SAAS,OAAOC;YACd,MAAM,EAACZ,EAAE,EAAC,GAAGY,QAAQd,MAAM;YAC3B,MAAMP,qBAAqB;gBAACqB;gBAASZ;gBAAIP;YAAQ;YAEjD,MAAMoB,MAAM,MAAM7B,qBAAqBgB,IAAIY,QAAQE,KAAK,CAACV,OAAO;YAChE,IAAI,CAACS,KAAK;gBACR,MAAM,IAAIhC,YAAY,iBAAiB,aAAa;oBAACkC,QAAQ;gBAAG;YAClE;YAEA,MAAMC,UAAUH,IAAII,IAAI,CAACC,GAAG,CAAC,CAACC,MAAS,CAAA;oBACrC,GAAGlC,SAASkC,IAAI;oBAChBC,gBAAgBD,IAAIE,aAAa,CAACH,GAAG,CAAC,CAACI,eAAkB,CAAA;4BACvD,GAAGpC,kBAAkBoC,aAAa;4BAClCC,OAAOD,aAAaC,KAAK,CAACL,GAAG,CAAC,CAACM;gCAC7B,MAAMC,WAAWD,KAAKC,QAAQ,CAACP,GAAG,CAAC7B;gCACnC,MAAMqC,wBAAwBD,SAC3BE,MAAM,CAAC,CAACvB,UAAYA,QAAQW,MAAM,KAAK,WACvCa,EAAE,CAAC,CAAC;gCACP,OAAO;oCACL,GAAGtC,UAAUkC,KAAK;oCAClBK,WAAWH,uBAAuBG,aAAa;oCAC/CC,SAASJ,uBAAuBI,WAAW;oCAC3CpB,UAAUgB,uBAAuBhB,YAAY;oCAC7CqB,aAAaL,uBAAuBK,eAAe;oCACnDN;gCACF;4BACF;wBACF,CAAA;gBACF,CAAA;YAEA,OAAO;gBACL,GAAGrC,SAASyB,KAAKA,IAAImB,aAAa,CAAC;gBACnCC,aAAa9C,gBAAgB0B,IAAIqB,UAAU;gBAC3CjB,MAAMD;
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/routes/get-run.ts"],"sourcesContent":["import type {ProjectsModuleClient} from '@shipfox/api-projects-dto/inter-module';\nimport {workflowRunDetailResponseSchema} from '@shipfox/api-workflows-dto';\nimport {ClientError, defineRoute} from '@shipfox/node-fastify';\nimport {z} from 'zod';\nimport {getWorkflowRunDetail} from '#db/index.js';\nimport {\n toJobDto,\n toJobExecutionDto,\n toRunAttemptDto,\n toRunDto,\n toStepAttemptDto,\n toStepDto,\n} from '#presentation/dto/index.js';\nimport {requireAccessibleRun} from './require-accessible-run.js';\n\nexport function getRunRoute(projects: ProjectsModuleClient) {\n return defineRoute({\n method: 'GET',\n path: '/:id',\n description: 'Get a workflow run by ID with jobs and steps',\n schema: {\n params: z.object({\n id: z.string().uuid(),\n }),\n querystring: z.object({\n attempt: z.coerce.number().int().positive().optional(),\n }),\n response: {\n 200: workflowRunDetailResponseSchema,\n },\n },\n handler: async (request) => {\n const {id} = request.params;\n await requireAccessibleRun({request, id, projects});\n\n const run = await getWorkflowRunDetail(id, request.query.attempt);\n if (!run) {\n throw new ClientError('Run not found', 'not-found', {status: 404});\n }\n\n const jobDtos = run.jobs.map((job) => ({\n ...toJobDto(job),\n job_executions: job.jobExecutions.map((jobExecution) => ({\n ...toJobExecutionDto(jobExecution),\n steps: jobExecution.steps.map((step) => {\n const attempts = step.attempts.map(toStepAttemptDto);\n const latestTerminalAttempt = attempts\n .filter((attempt) => attempt.status !== 'running')\n .at(-1);\n return {\n ...toStepDto(step),\n exit_code: latestTerminalAttempt?.exit_code ?? null,\n outputs: latestTerminalAttempt?.outputs ?? null,\n response: latestTerminalAttempt?.response ?? null,\n gate_result: latestTerminalAttempt?.gate_result ?? null,\n attempts,\n };\n }),\n })),\n }));\n\n return {\n ...toRunDto(run, run.latestAttempt),\n run_attempt: toRunAttemptDto(run.runAttempt),\n jobs: jobDtos,\n has_started_job_execution: run.hasStartedJobExecution,\n };\n },\n });\n}\n"],"names":["workflowRunDetailResponseSchema","ClientError","defineRoute","z","getWorkflowRunDetail","toJobDto","toJobExecutionDto","toRunAttemptDto","toRunDto","toStepAttemptDto","toStepDto","requireAccessibleRun","getRunRoute","projects","method","path","description","schema","params","object","id","string","uuid","querystring","attempt","coerce","number","int","positive","optional","response","handler","request","run","query","status","jobDtos","jobs","map","job","job_executions","jobExecutions","jobExecution","steps","step","attempts","latestTerminalAttempt","filter","at","exit_code","outputs","gate_result","latestAttempt","run_attempt","runAttempt","has_started_job_execution","hasStartedJobExecution"],"mappings":"AACA,SAAQA,+BAA+B,QAAO,6BAA6B;AAC3E,SAAQC,WAAW,EAAEC,WAAW,QAAO,wBAAwB;AAC/D,SAAQC,CAAC,QAAO,MAAM;AACtB,SAAQC,oBAAoB,QAAO,eAAe;AAClD,SACEC,QAAQ,EACRC,iBAAiB,EACjBC,eAAe,EACfC,QAAQ,EACRC,gBAAgB,EAChBC,SAAS,QACJ,6BAA6B;AACpC,SAAQC,oBAAoB,QAAO,8BAA8B;AAEjE,OAAO,SAASC,YAAYC,QAA8B;IACxD,OAAOX,YAAY;QACjBY,QAAQ;QACRC,MAAM;QACNC,aAAa;QACbC,QAAQ;YACNC,QAAQf,EAAEgB,MAAM,CAAC;gBACfC,IAAIjB,EAAEkB,MAAM,GAAGC,IAAI;YACrB;YACAC,aAAapB,EAAEgB,MAAM,CAAC;gBACpBK,SAASrB,EAAEsB,MAAM,CAACC,MAAM,GAAGC,GAAG,GAAGC,QAAQ,GAAGC,QAAQ;YACtD;YACAC,UAAU;gBACR,KAAK9B;YACP;QACF;QACA+B,SAAS,OAAOC;YACd,MAAM,EAACZ,EAAE,EAAC,GAAGY,QAAQd,MAAM;YAC3B,MAAMP,qBAAqB;gBAACqB;gBAASZ;gBAAIP;YAAQ;YAEjD,MAAMoB,MAAM,MAAM7B,qBAAqBgB,IAAIY,QAAQE,KAAK,CAACV,OAAO;YAChE,IAAI,CAACS,KAAK;gBACR,MAAM,IAAIhC,YAAY,iBAAiB,aAAa;oBAACkC,QAAQ;gBAAG;YAClE;YAEA,MAAMC,UAAUH,IAAII,IAAI,CAACC,GAAG,CAAC,CAACC,MAAS,CAAA;oBACrC,GAAGlC,SAASkC,IAAI;oBAChBC,gBAAgBD,IAAIE,aAAa,CAACH,GAAG,CAAC,CAACI,eAAkB,CAAA;4BACvD,GAAGpC,kBAAkBoC,aAAa;4BAClCC,OAAOD,aAAaC,KAAK,CAACL,GAAG,CAAC,CAACM;gCAC7B,MAAMC,WAAWD,KAAKC,QAAQ,CAACP,GAAG,CAAC7B;gCACnC,MAAMqC,wBAAwBD,SAC3BE,MAAM,CAAC,CAACvB,UAAYA,QAAQW,MAAM,KAAK,WACvCa,EAAE,CAAC,CAAC;gCACP,OAAO;oCACL,GAAGtC,UAAUkC,KAAK;oCAClBK,WAAWH,uBAAuBG,aAAa;oCAC/CC,SAASJ,uBAAuBI,WAAW;oCAC3CpB,UAAUgB,uBAAuBhB,YAAY;oCAC7CqB,aAAaL,uBAAuBK,eAAe;oCACnDN;gCACF;4BACF;wBACF,CAAA;gBACF,CAAA;YAEA,OAAO;gBACL,GAAGrC,SAASyB,KAAKA,IAAImB,aAAa,CAAC;gBACnCC,aAAa9C,gBAAgB0B,IAAIqB,UAAU;gBAC3CjB,MAAMD;gBACNmB,2BAA2BtB,IAAIuB,sBAAsB;YACvD;QACF;IACF;AACF"}
|
|
@@ -3,7 +3,6 @@ export { onJobEventDelivered } from './on-job-event-delivered.js';
|
|
|
3
3
|
export { onJobStepsSettled } from './on-job-steps-settled.js';
|
|
4
4
|
export { onRunnerJobClaimed } from './on-runner-job-claimed.js';
|
|
5
5
|
export { onRunnerJobLeaseExpired } from './on-runner-job-lease-expired.js';
|
|
6
|
-
export { onRunnerJobQueued } from './on-runner-job-queued.js';
|
|
7
6
|
export { onWorkflowRunAttemptCreated } from './on-workflow-run-attempt-created.js';
|
|
8
7
|
export { onWorkflowRunCancelled } from './on-workflow-run-cancelled.js';
|
|
9
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/presentation/subscribers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gCAAgC,EAChC,wCAAwC,GACzC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAC,mBAAmB,EAAC,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAC,iBAAiB,EAAC,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAC,uBAAuB,EAAC,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/presentation/subscribers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gCAAgC,EAChC,wCAAwC,GACzC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAC,mBAAmB,EAAC,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAC,iBAAiB,EAAC,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAC,uBAAuB,EAAC,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAC,2BAA2B,EAAC,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAC,sBAAsB,EAAC,MAAM,gCAAgC,CAAC"}
|
|
@@ -3,7 +3,6 @@ export { onJobEventDelivered } from './on-job-event-delivered.js';
|
|
|
3
3
|
export { onJobStepsSettled } from './on-job-steps-settled.js';
|
|
4
4
|
export { onRunnerJobClaimed } from './on-runner-job-claimed.js';
|
|
5
5
|
export { onRunnerJobLeaseExpired } from './on-runner-job-lease-expired.js';
|
|
6
|
-
export { onRunnerJobQueued } from './on-runner-job-queued.js';
|
|
7
6
|
export { onWorkflowRunAttemptCreated } from './on-workflow-run-attempt-created.js';
|
|
8
7
|
export { onWorkflowRunCancelled } from './on-workflow-run-cancelled.js';
|
|
9
8
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/presentation/subscribers/index.ts"],"sourcesContent":["export {\n onJobTerminatedFailureAnnotation,\n onStepAttemptTerminatedFailureAnnotation,\n} from './on-failure-annotations.js';\nexport {onJobEventDelivered} from './on-job-event-delivered.js';\nexport {onJobStepsSettled} from './on-job-steps-settled.js';\nexport {onRunnerJobClaimed} from './on-runner-job-claimed.js';\nexport {onRunnerJobLeaseExpired} from './on-runner-job-lease-expired.js';\nexport {
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/subscribers/index.ts"],"sourcesContent":["export {\n onJobTerminatedFailureAnnotation,\n onStepAttemptTerminatedFailureAnnotation,\n} from './on-failure-annotations.js';\nexport {onJobEventDelivered} from './on-job-event-delivered.js';\nexport {onJobStepsSettled} from './on-job-steps-settled.js';\nexport {onRunnerJobClaimed} from './on-runner-job-claimed.js';\nexport {onRunnerJobLeaseExpired} from './on-runner-job-lease-expired.js';\nexport {onWorkflowRunAttemptCreated} from './on-workflow-run-attempt-created.js';\nexport {onWorkflowRunCancelled} from './on-workflow-run-cancelled.js';\n"],"names":["onJobTerminatedFailureAnnotation","onStepAttemptTerminatedFailureAnnotation","onJobEventDelivered","onJobStepsSettled","onRunnerJobClaimed","onRunnerJobLeaseExpired","onWorkflowRunAttemptCreated","onWorkflowRunCancelled"],"mappings":"AAAA,SACEA,gCAAgC,EAChCC,wCAAwC,QACnC,8BAA8B;AACrC,SAAQC,mBAAmB,QAAO,8BAA8B;AAChE,SAAQC,iBAAiB,QAAO,4BAA4B;AAC5D,SAAQC,kBAAkB,QAAO,6BAA6B;AAC9D,SAAQC,uBAAuB,QAAO,mCAAmC;AACzE,SAAQC,2BAA2B,QAAO,uCAAuC;AACjF,SAAQC,sBAAsB,QAAO,iCAAiC"}
|