@shipfox/api-workflows 7.1.0 → 8.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 +4 -4
- package/CHANGELOG.md +15 -0
- package/dist/core/agent-defaults.d.ts +2 -1
- package/dist/core/agent-defaults.d.ts.map +1 -1
- package/dist/core/agent-defaults.js.map +1 -1
- package/dist/core/agent-tools.d.ts +3 -2
- package/dist/core/agent-tools.d.ts.map +1 -1
- package/dist/core/agent-tools.js.map +1 -1
- package/dist/core/checkout.d.ts +2 -2
- package/dist/core/checkout.d.ts.map +1 -1
- package/dist/core/checkout.js.map +1 -1
- package/dist/core/entities/step.d.ts +2 -1
- package/dist/core/entities/step.d.ts.map +1 -1
- package/dist/core/entities/step.js.map +1 -1
- package/dist/core/run-workflow.d.ts +2 -2
- package/dist/core/run-workflow.d.ts.map +1 -1
- package/dist/core/run-workflow.js.map +1 -1
- package/dist/core/step-config/agent.d.ts +1 -1
- package/dist/core/step-config/agent.d.ts.map +1 -1
- package/dist/core/step-config/agent.js.map +1 -1
- package/dist/db/job-listeners.d.ts +2 -2
- package/dist/db/job-listeners.d.ts.map +1 -1
- package/dist/db/job-listeners.js.map +1 -1
- package/dist/db/workflow-runs/run-create.d.ts +2 -2
- package/dist/db/workflow-runs/run-create.d.ts.map +1 -1
- package/dist/db/workflow-runs/run-create.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/presentation/inter-module.d.ts +2 -2
- package/dist/presentation/inter-module.d.ts.map +1 -1
- package/dist/presentation/inter-module.js +2 -1
- package/dist/presentation/inter-module.js.map +1 -1
- package/dist/presentation/routes/cancel-run.d.ts +1 -1
- package/dist/presentation/routes/cancel-run.d.ts.map +1 -1
- package/dist/presentation/routes/cancel-run.js.map +1 -1
- package/dist/presentation/routes/checkout-token.d.ts +2 -2
- package/dist/presentation/routes/checkout-token.d.ts.map +1 -1
- package/dist/presentation/routes/checkout-token.js +1 -1
- package/dist/presentation/routes/checkout-token.js.map +1 -1
- package/dist/presentation/routes/get-run-aggregates.d.ts +1 -1
- package/dist/presentation/routes/get-run-aggregates.d.ts.map +1 -1
- package/dist/presentation/routes/get-run-aggregates.js.map +1 -1
- package/dist/presentation/routes/get-run.d.ts +1 -1
- package/dist/presentation/routes/get-run.d.ts.map +1 -1
- package/dist/presentation/routes/get-run.js.map +1 -1
- package/dist/presentation/routes/index.d.ts +2 -2
- package/dist/presentation/routes/index.d.ts.map +1 -1
- package/dist/presentation/routes/index.js.map +1 -1
- package/dist/presentation/routes/list-run-attempts.d.ts +1 -1
- package/dist/presentation/routes/list-run-attempts.d.ts.map +1 -1
- package/dist/presentation/routes/list-run-attempts.js.map +1 -1
- package/dist/presentation/routes/list-runs.d.ts +1 -1
- package/dist/presentation/routes/list-runs.d.ts.map +1 -1
- package/dist/presentation/routes/list-runs.js.map +1 -1
- package/dist/presentation/routes/project-access.d.ts +1 -1
- package/dist/presentation/routes/project-access.d.ts.map +1 -1
- package/dist/presentation/routes/project-access.js.map +1 -1
- package/dist/presentation/routes/require-accessible-run.d.ts +1 -1
- package/dist/presentation/routes/require-accessible-run.d.ts.map +1 -1
- package/dist/presentation/routes/require-accessible-run.js.map +1 -1
- package/dist/presentation/routes/rerun-run.d.ts +1 -1
- package/dist/presentation/routes/rerun-run.d.ts.map +1 -1
- package/dist/presentation/routes/rerun-run.js.map +1 -1
- package/dist/temporal/activities/index.d.ts +2 -2
- package/dist/temporal/activities/index.d.ts.map +1 -1
- package/dist/temporal/activities/index.js.map +1 -1
- package/dist/temporal/activities/orchestration-activities.d.ts +2 -2
- package/dist/temporal/activities/orchestration-activities.d.ts.map +1 -1
- package/dist/temporal/activities/orchestration-activities.js.map +1 -1
- package/dist/tsconfig.test.tsbuildinfo +1 -1
- package/package.json +9 -9
- package/src/core/agent-defaults.ts +2 -1
- package/src/core/agent-tool-capability-warning.test.ts +1 -1
- package/src/core/agent-tools.ts +2 -2
- package/src/core/checkout.test.ts +2 -2
- package/src/core/checkout.ts +2 -2
- package/src/core/entities/step.ts +1 -2
- package/src/core/run-workflow.test.ts +2 -0
- package/src/core/run-workflow.ts +2 -2
- package/src/core/step-config/agent.ts +1 -1
- package/src/core/step-config/materialize-workflow-model.test.ts +11 -2
- package/src/db/job-listeners.ts +2 -2
- package/src/db/workflow-runs/run-create.test.ts +11 -2
- package/src/db/workflow-runs/run-create.ts +2 -2
- package/src/index.ts +2 -2
- package/src/presentation/inter-module.ts +4 -7
- package/src/presentation/routes/agent-runtime-config.test.ts +2 -35
- package/src/presentation/routes/cancel-run.test.ts +1 -1
- package/src/presentation/routes/cancel-run.ts +1 -1
- package/src/presentation/routes/checkout-token.test.ts +4 -37
- package/src/presentation/routes/checkout-token.ts +2 -2
- package/src/presentation/routes/get-run-aggregates.test.ts +1 -1
- package/src/presentation/routes/get-run-aggregates.ts +1 -1
- package/src/presentation/routes/get-run.test.ts +1 -1
- package/src/presentation/routes/get-run.ts +1 -1
- package/src/presentation/routes/get-step-secrets.test.ts +2 -2
- package/src/presentation/routes/index.test.ts +3 -3
- package/src/presentation/routes/index.ts +2 -2
- package/src/presentation/routes/list-run-attempts.test.ts +1 -1
- package/src/presentation/routes/list-run-attempts.ts +1 -1
- package/src/presentation/routes/list-runs.test.ts +1 -1
- package/src/presentation/routes/list-runs.ts +1 -1
- package/src/presentation/routes/next-step.test.ts +9 -57
- package/src/presentation/routes/project-access.ts +1 -1
- package/src/presentation/routes/report-step.test.ts +2 -3
- package/src/presentation/routes/require-accessible-run.ts +1 -1
- package/src/presentation/routes/rerun-run.test.ts +1 -1
- package/src/presentation/routes/rerun-run.ts +1 -1
- package/src/temporal/activities/index.ts +2 -2
- package/src/temporal/activities/orchestration-activities.ts +2 -2
- package/test/fixtures/agent-inter-module.ts +31 -1
- package/test/fixtures/auth-inter-module.ts +2 -13
- package/test/fixtures/lease-token.ts +43 -29
- package/test/fixtures/projects-inter-module.ts +1 -1
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-run-aggregates.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/get-run-aggregates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"get-run-aggregates.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/get-run-aggregates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,wCAAwC,CAAC;AAUjF,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,oBAAoB,mDAuDnE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/presentation/routes/get-run-aggregates.ts"],"sourcesContent":["import type {ProjectsModuleClient} from '@shipfox/api-projects-dto';\nimport {\n workflowRunAggregatesQuerySchema,\n workflowRunAggregatesResponseSchema,\n} from '@shipfox/api-workflows-dto';\nimport {defineRoute} from '@shipfox/node-fastify';\nimport {logger} from '@shipfox/node-opentelemetry';\nimport {getWorkflowRunAggregates} from '#db/index.js';\nimport {requireProjectAccess} from './project-access.js';\n\nexport function getRunAggregatesRoute(projects: ProjectsModuleClient) {\n return defineRoute({\n method: 'GET',\n path: '/aggregates',\n description: 'Get faceted workflow run counts for a project',\n schema: {\n querystring: workflowRunAggregatesQuerySchema,\n response: {\n 200: workflowRunAggregatesResponseSchema,\n },\n },\n handler: async (request) => {\n const startedAt = performance.now();\n const {\n project_id: projectId,\n status,\n definition_id: definitionId,\n trigger_source: triggerSource,\n created_from: createdFrom,\n created_to: createdTo,\n } = request.query;\n\n const project = await requireProjectAccess(request, projectId, projects);\n const filters = {\n status,\n definitionId,\n triggerSource,\n createdFrom: createdFrom ? new Date(createdFrom) : undefined,\n createdTo: createdTo ? new Date(createdTo) : undefined,\n };\n const aggregates = await getWorkflowRunAggregates({projectId: project.id, filters});\n\n logger().info(\n {\n projectId: project.id,\n filterKeys: Object.entries(filters)\n .filter(([, value]) => value !== undefined)\n .map(([key]) => key),\n aggregateBucketSizes: {\n status: aggregates.status.length,\n triggerSource: aggregates.triggerSource.length,\n workflow: aggregates.workflow.length,\n },\n durationMs: Math.round(performance.now() - startedAt),\n },\n 'Aggregated workflow runs',\n );\n\n return {\n status: aggregates.status,\n trigger_source: aggregates.triggerSource,\n workflow: aggregates.workflow,\n };\n },\n });\n}\n"],"names":["workflowRunAggregatesQuerySchema","workflowRunAggregatesResponseSchema","defineRoute","logger","getWorkflowRunAggregates","requireProjectAccess","getRunAggregatesRoute","projects","method","path","description","schema","querystring","response","handler","request","startedAt","performance","now","project_id","projectId","status","definition_id","definitionId","trigger_source","triggerSource","created_from","createdFrom","created_to","createdTo","query","project","filters","Date","undefined","aggregates","id","info","filterKeys","Object","entries","filter","value","map","key","aggregateBucketSizes","length","workflow","durationMs","Math","round"],"mappings":"AACA,SACEA,gCAAgC,EAChCC,mCAAmC,QAC9B,6BAA6B;AACpC,SAAQC,WAAW,QAAO,wBAAwB;AAClD,SAAQC,MAAM,QAAO,8BAA8B;AACnD,SAAQC,wBAAwB,QAAO,eAAe;AACtD,SAAQC,oBAAoB,QAAO,sBAAsB;AAEzD,OAAO,SAASC,sBAAsBC,QAA8B;IAClE,OAAOL,YAAY;QACjBM,QAAQ;QACRC,MAAM;QACNC,aAAa;QACbC,QAAQ;YACNC,aAAaZ;YACba,UAAU;gBACR,KAAKZ;YACP;QACF;QACAa,SAAS,OAAOC;YACd,MAAMC,YAAYC,YAAYC,GAAG;YACjC,MAAM,EACJC,YAAYC,SAAS,EACrBC,MAAM,EACNC,eAAeC,YAAY,EAC3BC,gBAAgBC,aAAa,EAC7BC,cAAcC,WAAW,EACzBC,YAAYC,SAAS,EACtB,GAAGd,QAAQe,KAAK;YAEjB,MAAMC,UAAU,MAAM1B,qBAAqBU,SAASK,WAAWb;YAC/D,MAAMyB,UAAU;gBACdX;gBACAE;gBACAE;gBACAE,aAAaA,cAAc,IAAIM,KAAKN,eAAeO;gBACnDL,WAAWA,YAAY,IAAII,KAAKJ,aAAaK;YAC/C;YACA,MAAMC,aAAa,MAAM/B,yBAAyB;gBAACgB,WAAWW,QAAQK,EAAE;gBAAEJ;YAAO;YAEjF7B,SAASkC,IAAI,CACX;gBACEjB,WAAWW,QAAQK,EAAE;gBACrBE,YAAYC,OAAOC,OAAO,CAACR,SACxBS,MAAM,CAAC,CAAC,GAAGC,MAAM,GAAKA,UAAUR,WAChCS,GAAG,CAAC,CAAC,CAACC,IAAI,GAAKA;gBAClBC,sBAAsB;oBACpBxB,QAAQc,WAAWd,MAAM,CAACyB,MAAM;oBAChCrB,eAAeU,WAAWV,aAAa,CAACqB,MAAM;oBAC9CC,UAAUZ,WAAWY,QAAQ,CAACD,MAAM;gBACtC;gBACAE,YAAYC,KAAKC,KAAK,CAACjC,YAAYC,GAAG,KAAKF;YAC7C,GACA;YAGF,OAAO;gBACLK,QAAQc,WAAWd,MAAM;gBACzBG,gBAAgBW,WAAWV,aAAa;gBACxCsB,UAAUZ,WAAWY,QAAQ;YAC/B;QACF;IACF;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/routes/get-run-aggregates.ts"],"sourcesContent":["import type {ProjectsModuleClient} from '@shipfox/api-projects-dto/inter-module';\nimport {\n workflowRunAggregatesQuerySchema,\n workflowRunAggregatesResponseSchema,\n} from '@shipfox/api-workflows-dto';\nimport {defineRoute} from '@shipfox/node-fastify';\nimport {logger} from '@shipfox/node-opentelemetry';\nimport {getWorkflowRunAggregates} from '#db/index.js';\nimport {requireProjectAccess} from './project-access.js';\n\nexport function getRunAggregatesRoute(projects: ProjectsModuleClient) {\n return defineRoute({\n method: 'GET',\n path: '/aggregates',\n description: 'Get faceted workflow run counts for a project',\n schema: {\n querystring: workflowRunAggregatesQuerySchema,\n response: {\n 200: workflowRunAggregatesResponseSchema,\n },\n },\n handler: async (request) => {\n const startedAt = performance.now();\n const {\n project_id: projectId,\n status,\n definition_id: definitionId,\n trigger_source: triggerSource,\n created_from: createdFrom,\n created_to: createdTo,\n } = request.query;\n\n const project = await requireProjectAccess(request, projectId, projects);\n const filters = {\n status,\n definitionId,\n triggerSource,\n createdFrom: createdFrom ? new Date(createdFrom) : undefined,\n createdTo: createdTo ? new Date(createdTo) : undefined,\n };\n const aggregates = await getWorkflowRunAggregates({projectId: project.id, filters});\n\n logger().info(\n {\n projectId: project.id,\n filterKeys: Object.entries(filters)\n .filter(([, value]) => value !== undefined)\n .map(([key]) => key),\n aggregateBucketSizes: {\n status: aggregates.status.length,\n triggerSource: aggregates.triggerSource.length,\n workflow: aggregates.workflow.length,\n },\n durationMs: Math.round(performance.now() - startedAt),\n },\n 'Aggregated workflow runs',\n );\n\n return {\n status: aggregates.status,\n trigger_source: aggregates.triggerSource,\n workflow: aggregates.workflow,\n };\n },\n });\n}\n"],"names":["workflowRunAggregatesQuerySchema","workflowRunAggregatesResponseSchema","defineRoute","logger","getWorkflowRunAggregates","requireProjectAccess","getRunAggregatesRoute","projects","method","path","description","schema","querystring","response","handler","request","startedAt","performance","now","project_id","projectId","status","definition_id","definitionId","trigger_source","triggerSource","created_from","createdFrom","created_to","createdTo","query","project","filters","Date","undefined","aggregates","id","info","filterKeys","Object","entries","filter","value","map","key","aggregateBucketSizes","length","workflow","durationMs","Math","round"],"mappings":"AACA,SACEA,gCAAgC,EAChCC,mCAAmC,QAC9B,6BAA6B;AACpC,SAAQC,WAAW,QAAO,wBAAwB;AAClD,SAAQC,MAAM,QAAO,8BAA8B;AACnD,SAAQC,wBAAwB,QAAO,eAAe;AACtD,SAAQC,oBAAoB,QAAO,sBAAsB;AAEzD,OAAO,SAASC,sBAAsBC,QAA8B;IAClE,OAAOL,YAAY;QACjBM,QAAQ;QACRC,MAAM;QACNC,aAAa;QACbC,QAAQ;YACNC,aAAaZ;YACba,UAAU;gBACR,KAAKZ;YACP;QACF;QACAa,SAAS,OAAOC;YACd,MAAMC,YAAYC,YAAYC,GAAG;YACjC,MAAM,EACJC,YAAYC,SAAS,EACrBC,MAAM,EACNC,eAAeC,YAAY,EAC3BC,gBAAgBC,aAAa,EAC7BC,cAAcC,WAAW,EACzBC,YAAYC,SAAS,EACtB,GAAGd,QAAQe,KAAK;YAEjB,MAAMC,UAAU,MAAM1B,qBAAqBU,SAASK,WAAWb;YAC/D,MAAMyB,UAAU;gBACdX;gBACAE;gBACAE;gBACAE,aAAaA,cAAc,IAAIM,KAAKN,eAAeO;gBACnDL,WAAWA,YAAY,IAAII,KAAKJ,aAAaK;YAC/C;YACA,MAAMC,aAAa,MAAM/B,yBAAyB;gBAACgB,WAAWW,QAAQK,EAAE;gBAAEJ;YAAO;YAEjF7B,SAASkC,IAAI,CACX;gBACEjB,WAAWW,QAAQK,EAAE;gBACrBE,YAAYC,OAAOC,OAAO,CAACR,SACxBS,MAAM,CAAC,CAAC,GAAGC,MAAM,GAAKA,UAAUR,WAChCS,GAAG,CAAC,CAAC,CAACC,IAAI,GAAKA;gBAClBC,sBAAsB;oBACpBxB,QAAQc,WAAWd,MAAM,CAACyB,MAAM;oBAChCrB,eAAeU,WAAWV,aAAa,CAACqB,MAAM;oBAC9CC,UAAUZ,WAAWY,QAAQ,CAACD,MAAM;gBACtC;gBACAE,YAAYC,KAAKC,KAAK,CAACjC,YAAYC,GAAG,KAAKF;YAC7C,GACA;YAGF,OAAO;gBACLK,QAAQc,WAAWd,MAAM;gBACzBG,gBAAgBW,WAAWV,aAAa;gBACxCsB,UAAUZ,WAAWY,QAAQ;YAC/B;QACF;IACF;AACF"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { ProjectsModuleClient } from '@shipfox/api-projects-dto';
|
|
1
|
+
import type { ProjectsModuleClient } from '@shipfox/api-projects-dto/inter-module';
|
|
2
2
|
export declare function getRunRoute(projects: ProjectsModuleClient): import("@shipfox/node-fastify").RouteDefinition;
|
|
3
3
|
//# sourceMappingURL=get-run.d.ts.map
|
|
@@ -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,
|
|
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,mDAqDzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/presentation/routes/get-run.ts"],"sourcesContent":["import type {ProjectsModuleClient} from '@shipfox/api-projects-dto';\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;YACR;QACF;IACF;AACF"}
|
|
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;YACR;QACF;IACF;AACF"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { AnnotationsInterModuleClient } from '@shipfox/annotations-dto/inter-module';
|
|
2
2
|
import type { AgentInterModuleClient } from '@shipfox/api-agent-dto/inter-module';
|
|
3
3
|
import type { AuthInterModuleClient } from '@shipfox/api-auth-dto/inter-module';
|
|
4
|
-
import type { IntegrationsModuleClient } from '@shipfox/api-integration-core-dto';
|
|
5
|
-
import type { ProjectsModuleClient } from '@shipfox/api-projects-dto';
|
|
4
|
+
import type { IntegrationsModuleClient } from '@shipfox/api-integration-core-dto/inter-module';
|
|
5
|
+
import type { ProjectsModuleClient } from '@shipfox/api-projects-dto/inter-module';
|
|
6
6
|
import type { RunnersInterModuleClient } from '@shipfox/api-runners-dto/inter-module';
|
|
7
7
|
import type { SecretsInterModuleClient } from '@shipfox/api-secrets-dto/inter-module';
|
|
8
8
|
import type { RouteGroup } from '@shipfox/node-fastify';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,4BAA4B,EAAC,MAAM,uCAAuC,CAAC;AACxF,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,qCAAqC,CAAC;AAEhF,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,oCAAoC,CAAC;AAC9E,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,4BAA4B,EAAC,MAAM,uCAAuC,CAAC;AACxF,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,qCAAqC,CAAC;AAEhF,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,oCAAoC,CAAC;AAC9E,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,gDAAgD,CAAC;AAC7F,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,wCAAwC,CAAC;AACjF,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,uCAAuC,CAAC;AACpF,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,uCAAuC,CAAC;AACpF,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;AAatD,KAAK,oBAAoB,GAAG;IAC1B,KAAK,EAAE,sBAAsB,CAAC;IAC9B,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;CACnC,CAAC;AAEF,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,oBAAoB,GAAG,UAAU,CAiBnF;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,UAAU,EAAE,CAgB/E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/presentation/routes/index.ts"],"sourcesContent":["import type {AnnotationsInterModuleClient} from '@shipfox/annotations-dto/inter-module';\nimport type {AgentInterModuleClient} from '@shipfox/api-agent-dto/inter-module';\nimport {AUTH_LEASED_JOB, AUTH_USER} from '@shipfox/api-auth-context';\nimport type {AuthInterModuleClient} from '@shipfox/api-auth-dto/inter-module';\nimport type {IntegrationsModuleClient} from '@shipfox/api-integration-core-dto';\nimport type {ProjectsModuleClient} from '@shipfox/api-projects-dto';\nimport type {RunnersInterModuleClient} from '@shipfox/api-runners-dto/inter-module';\nimport type {SecretsInterModuleClient} from '@shipfox/api-secrets-dto/inter-module';\nimport type {RouteGroup} from '@shipfox/node-fastify';\nimport {createAgentRuntimeConfigRoute} from './agent-runtime-config.js';\nimport {cancelRunRoute} from './cancel-run.js';\nimport {createCheckoutTokenRoute} from './checkout-token.js';\nimport {getRunRoute} from './get-run.js';\nimport {getRunAggregatesRoute} from './get-run-aggregates.js';\nimport {createGetStepSecretsRoute} from './get-step-secrets.js';\nimport {listRunAttemptsRoute} from './list-run-attempts.js';\nimport {listRunsRoute} from './list-runs.js';\nimport {createNextStepRoute} from './next-step.js';\nimport {createReportStepRoute} from './report-step.js';\nimport {rerunRunRoute} from './rerun-run.js';\n\ntype WorkflowRouteClients = {\n agent: AgentInterModuleClient;\n annotations: AnnotationsInterModuleClient;\n auth: AuthInterModuleClient;\n integrations: IntegrationsModuleClient;\n projects: ProjectsModuleClient;\n runners: RunnersInterModuleClient;\n secrets: SecretsInterModuleClient;\n};\n\nexport function createLeaseTokenRouteGroup(params: WorkflowRouteClients): RouteGroup {\n return {\n // The lease token names the job, so the path carries no job id (\"current\").\n prefix: '/runs/jobs/current',\n auth: AUTH_LEASED_JOB,\n routes: [\n createNextStepRoute(params),\n createReportStepRoute(params.runners),\n createCheckoutTokenRoute({\n integrations: params.integrations,\n projects: params.projects,\n runners: params.runners,\n }),\n createAgentRuntimeConfigRoute(params),\n createGetStepSecretsRoute(params.runners, params.secrets),\n ],\n };\n}\n\nexport function createWorkflowRoutes(params: WorkflowRouteClients): RouteGroup[] {\n return [\n {\n prefix: '/workflows/runs',\n auth: AUTH_USER,\n routes: [\n listRunsRoute(params.projects),\n getRunAggregatesRoute(params.projects),\n listRunAttemptsRoute(params.projects),\n getRunRoute(params.projects),\n cancelRunRoute(params.projects),\n rerunRunRoute(params.projects),\n ],\n },\n createLeaseTokenRouteGroup(params),\n ];\n}\n"],"names":["AUTH_LEASED_JOB","AUTH_USER","createAgentRuntimeConfigRoute","cancelRunRoute","createCheckoutTokenRoute","getRunRoute","getRunAggregatesRoute","createGetStepSecretsRoute","listRunAttemptsRoute","listRunsRoute","createNextStepRoute","createReportStepRoute","rerunRunRoute","createLeaseTokenRouteGroup","params","prefix","auth","routes","runners","integrations","projects","secrets","createWorkflowRoutes"],"mappings":"AAEA,SAAQA,eAAe,EAAEC,SAAS,QAAO,4BAA4B;AAOrE,SAAQC,6BAA6B,QAAO,4BAA4B;AACxE,SAAQC,cAAc,QAAO,kBAAkB;AAC/C,SAAQC,wBAAwB,QAAO,sBAAsB;AAC7D,SAAQC,WAAW,QAAO,eAAe;AACzC,SAAQC,qBAAqB,QAAO,0BAA0B;AAC9D,SAAQC,yBAAyB,QAAO,wBAAwB;AAChE,SAAQC,oBAAoB,QAAO,yBAAyB;AAC5D,SAAQC,aAAa,QAAO,iBAAiB;AAC7C,SAAQC,mBAAmB,QAAO,iBAAiB;AACnD,SAAQC,qBAAqB,QAAO,mBAAmB;AACvD,SAAQC,aAAa,QAAO,iBAAiB;AAY7C,OAAO,SAASC,2BAA2BC,MAA4B;IACrE,OAAO;QACL,4EAA4E;QAC5EC,QAAQ;QACRC,MAAMhB;QACNiB,QAAQ;YACNP,oBAAoBI;YACpBH,sBAAsBG,OAAOI,OAAO;YACpCd,yBAAyB;gBACvBe,cAAcL,OAAOK,YAAY;gBACjCC,UAAUN,OAAOM,QAAQ;gBACzBF,SAASJ,OAAOI,OAAO;YACzB;YACAhB,8BAA8BY;YAC9BP,0BAA0BO,OAAOI,OAAO,EAAEJ,OAAOO,OAAO;SACzD;IACH;AACF;AAEA,OAAO,SAASC,qBAAqBR,MAA4B;IAC/D,OAAO;QACL;YACEC,QAAQ;YACRC,MAAMf;YACNgB,QAAQ;gBACNR,cAAcK,OAAOM,QAAQ;gBAC7Bd,sBAAsBQ,OAAOM,QAAQ;gBACrCZ,qBAAqBM,OAAOM,QAAQ;gBACpCf,YAAYS,OAAOM,QAAQ;gBAC3BjB,eAAeW,OAAOM,QAAQ;gBAC9BR,cAAcE,OAAOM,QAAQ;aAC9B;QACH;QACAP,2BAA2BC;KAC5B;AACH"}
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/routes/index.ts"],"sourcesContent":["import type {AnnotationsInterModuleClient} from '@shipfox/annotations-dto/inter-module';\nimport type {AgentInterModuleClient} from '@shipfox/api-agent-dto/inter-module';\nimport {AUTH_LEASED_JOB, AUTH_USER} from '@shipfox/api-auth-context';\nimport type {AuthInterModuleClient} from '@shipfox/api-auth-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 type {RunnersInterModuleClient} from '@shipfox/api-runners-dto/inter-module';\nimport type {SecretsInterModuleClient} from '@shipfox/api-secrets-dto/inter-module';\nimport type {RouteGroup} from '@shipfox/node-fastify';\nimport {createAgentRuntimeConfigRoute} from './agent-runtime-config.js';\nimport {cancelRunRoute} from './cancel-run.js';\nimport {createCheckoutTokenRoute} from './checkout-token.js';\nimport {getRunRoute} from './get-run.js';\nimport {getRunAggregatesRoute} from './get-run-aggregates.js';\nimport {createGetStepSecretsRoute} from './get-step-secrets.js';\nimport {listRunAttemptsRoute} from './list-run-attempts.js';\nimport {listRunsRoute} from './list-runs.js';\nimport {createNextStepRoute} from './next-step.js';\nimport {createReportStepRoute} from './report-step.js';\nimport {rerunRunRoute} from './rerun-run.js';\n\ntype WorkflowRouteClients = {\n agent: AgentInterModuleClient;\n annotations: AnnotationsInterModuleClient;\n auth: AuthInterModuleClient;\n integrations: IntegrationsModuleClient;\n projects: ProjectsModuleClient;\n runners: RunnersInterModuleClient;\n secrets: SecretsInterModuleClient;\n};\n\nexport function createLeaseTokenRouteGroup(params: WorkflowRouteClients): RouteGroup {\n return {\n // The lease token names the job, so the path carries no job id (\"current\").\n prefix: '/runs/jobs/current',\n auth: AUTH_LEASED_JOB,\n routes: [\n createNextStepRoute(params),\n createReportStepRoute(params.runners),\n createCheckoutTokenRoute({\n integrations: params.integrations,\n projects: params.projects,\n runners: params.runners,\n }),\n createAgentRuntimeConfigRoute(params),\n createGetStepSecretsRoute(params.runners, params.secrets),\n ],\n };\n}\n\nexport function createWorkflowRoutes(params: WorkflowRouteClients): RouteGroup[] {\n return [\n {\n prefix: '/workflows/runs',\n auth: AUTH_USER,\n routes: [\n listRunsRoute(params.projects),\n getRunAggregatesRoute(params.projects),\n listRunAttemptsRoute(params.projects),\n getRunRoute(params.projects),\n cancelRunRoute(params.projects),\n rerunRunRoute(params.projects),\n ],\n },\n createLeaseTokenRouteGroup(params),\n ];\n}\n"],"names":["AUTH_LEASED_JOB","AUTH_USER","createAgentRuntimeConfigRoute","cancelRunRoute","createCheckoutTokenRoute","getRunRoute","getRunAggregatesRoute","createGetStepSecretsRoute","listRunAttemptsRoute","listRunsRoute","createNextStepRoute","createReportStepRoute","rerunRunRoute","createLeaseTokenRouteGroup","params","prefix","auth","routes","runners","integrations","projects","secrets","createWorkflowRoutes"],"mappings":"AAEA,SAAQA,eAAe,EAAEC,SAAS,QAAO,4BAA4B;AAOrE,SAAQC,6BAA6B,QAAO,4BAA4B;AACxE,SAAQC,cAAc,QAAO,kBAAkB;AAC/C,SAAQC,wBAAwB,QAAO,sBAAsB;AAC7D,SAAQC,WAAW,QAAO,eAAe;AACzC,SAAQC,qBAAqB,QAAO,0BAA0B;AAC9D,SAAQC,yBAAyB,QAAO,wBAAwB;AAChE,SAAQC,oBAAoB,QAAO,yBAAyB;AAC5D,SAAQC,aAAa,QAAO,iBAAiB;AAC7C,SAAQC,mBAAmB,QAAO,iBAAiB;AACnD,SAAQC,qBAAqB,QAAO,mBAAmB;AACvD,SAAQC,aAAa,QAAO,iBAAiB;AAY7C,OAAO,SAASC,2BAA2BC,MAA4B;IACrE,OAAO;QACL,4EAA4E;QAC5EC,QAAQ;QACRC,MAAMhB;QACNiB,QAAQ;YACNP,oBAAoBI;YACpBH,sBAAsBG,OAAOI,OAAO;YACpCd,yBAAyB;gBACvBe,cAAcL,OAAOK,YAAY;gBACjCC,UAAUN,OAAOM,QAAQ;gBACzBF,SAASJ,OAAOI,OAAO;YACzB;YACAhB,8BAA8BY;YAC9BP,0BAA0BO,OAAOI,OAAO,EAAEJ,OAAOO,OAAO;SACzD;IACH;AACF;AAEA,OAAO,SAASC,qBAAqBR,MAA4B;IAC/D,OAAO;QACL;YACEC,QAAQ;YACRC,MAAMf;YACNgB,QAAQ;gBACNR,cAAcK,OAAOM,QAAQ;gBAC7Bd,sBAAsBQ,OAAOM,QAAQ;gBACrCZ,qBAAqBM,OAAOM,QAAQ;gBACpCf,YAAYS,OAAOM,QAAQ;gBAC3BjB,eAAeW,OAAOM,QAAQ;gBAC9BR,cAAcE,OAAOM,QAAQ;aAC9B;QACH;QACAP,2BAA2BC;KAC5B;AACH"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { ProjectsModuleClient } from '@shipfox/api-projects-dto';
|
|
1
|
+
import type { ProjectsModuleClient } from '@shipfox/api-projects-dto/inter-module';
|
|
2
2
|
export declare function listRunAttemptsRoute(projects: ProjectsModuleClient): import("@shipfox/node-fastify").RouteDefinition;
|
|
3
3
|
//# sourceMappingURL=list-run-attempts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-run-attempts.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/list-run-attempts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"list-run-attempts.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/list-run-attempts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,wCAAwC,CAAC;AAQjF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,oBAAoB,mDAqBlE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/presentation/routes/list-run-attempts.ts"],"sourcesContent":["import type {ProjectsModuleClient} from '@shipfox/api-projects-dto';\nimport {workflowRunAttemptsResponseSchema} from '@shipfox/api-workflows-dto';\nimport {defineRoute} from '@shipfox/node-fastify';\nimport {z} from 'zod';\nimport {listRunAttempts} from '#db/index.js';\nimport {toRunAttemptDto} from '#presentation/dto/index.js';\nimport {requireAccessibleRun} from './require-accessible-run.js';\n\nexport function listRunAttemptsRoute(projects: ProjectsModuleClient) {\n return defineRoute({\n method: 'GET',\n path: '/:id/attempts',\n description: 'List attempts in a workflow run lineage',\n schema: {\n params: z.object({\n id: z.string().uuid(),\n }),\n response: {\n 200: workflowRunAttemptsResponseSchema,\n },\n },\n handler: async (request) => {\n const {id} = request.params;\n const run = await requireAccessibleRun({request, id, projects});\n const attempts = await listRunAttempts({workflowRunId: run.id, projectId: run.projectId});\n\n return {attempts: attempts.map(toRunAttemptDto)};\n },\n });\n}\n"],"names":["workflowRunAttemptsResponseSchema","defineRoute","z","listRunAttempts","toRunAttemptDto","requireAccessibleRun","listRunAttemptsRoute","projects","method","path","description","schema","params","object","id","string","uuid","response","handler","request","run","attempts","workflowRunId","projectId","map"],"mappings":"AACA,SAAQA,iCAAiC,QAAO,6BAA6B;AAC7E,SAAQC,WAAW,QAAO,wBAAwB;AAClD,SAAQC,CAAC,QAAO,MAAM;AACtB,SAAQC,eAAe,QAAO,eAAe;AAC7C,SAAQC,eAAe,QAAO,6BAA6B;AAC3D,SAAQC,oBAAoB,QAAO,8BAA8B;AAEjE,OAAO,SAASC,qBAAqBC,QAA8B;IACjE,OAAON,YAAY;QACjBO,QAAQ;QACRC,MAAM;QACNC,aAAa;QACbC,QAAQ;YACNC,QAAQV,EAAEW,MAAM,CAAC;gBACfC,IAAIZ,EAAEa,MAAM,GAAGC,IAAI;YACrB;YACAC,UAAU;gBACR,KAAKjB;YACP;QACF;QACAkB,SAAS,OAAOC;YACd,MAAM,EAACL,EAAE,EAAC,GAAGK,QAAQP,MAAM;YAC3B,MAAMQ,MAAM,MAAMf,qBAAqB;gBAACc;gBAASL;gBAAIP;YAAQ;YAC7D,MAAMc,WAAW,MAAMlB,gBAAgB;gBAACmB,eAAeF,IAAIN,EAAE;gBAAES,WAAWH,IAAIG,SAAS;YAAA;YAEvF,OAAO;gBAACF,UAAUA,SAASG,GAAG,CAACpB;YAAgB;QACjD;IACF;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/routes/list-run-attempts.ts"],"sourcesContent":["import type {ProjectsModuleClient} from '@shipfox/api-projects-dto/inter-module';\nimport {workflowRunAttemptsResponseSchema} from '@shipfox/api-workflows-dto';\nimport {defineRoute} from '@shipfox/node-fastify';\nimport {z} from 'zod';\nimport {listRunAttempts} from '#db/index.js';\nimport {toRunAttemptDto} from '#presentation/dto/index.js';\nimport {requireAccessibleRun} from './require-accessible-run.js';\n\nexport function listRunAttemptsRoute(projects: ProjectsModuleClient) {\n return defineRoute({\n method: 'GET',\n path: '/:id/attempts',\n description: 'List attempts in a workflow run lineage',\n schema: {\n params: z.object({\n id: z.string().uuid(),\n }),\n response: {\n 200: workflowRunAttemptsResponseSchema,\n },\n },\n handler: async (request) => {\n const {id} = request.params;\n const run = await requireAccessibleRun({request, id, projects});\n const attempts = await listRunAttempts({workflowRunId: run.id, projectId: run.projectId});\n\n return {attempts: attempts.map(toRunAttemptDto)};\n },\n });\n}\n"],"names":["workflowRunAttemptsResponseSchema","defineRoute","z","listRunAttempts","toRunAttemptDto","requireAccessibleRun","listRunAttemptsRoute","projects","method","path","description","schema","params","object","id","string","uuid","response","handler","request","run","attempts","workflowRunId","projectId","map"],"mappings":"AACA,SAAQA,iCAAiC,QAAO,6BAA6B;AAC7E,SAAQC,WAAW,QAAO,wBAAwB;AAClD,SAAQC,CAAC,QAAO,MAAM;AACtB,SAAQC,eAAe,QAAO,eAAe;AAC7C,SAAQC,eAAe,QAAO,6BAA6B;AAC3D,SAAQC,oBAAoB,QAAO,8BAA8B;AAEjE,OAAO,SAASC,qBAAqBC,QAA8B;IACjE,OAAON,YAAY;QACjBO,QAAQ;QACRC,MAAM;QACNC,aAAa;QACbC,QAAQ;YACNC,QAAQV,EAAEW,MAAM,CAAC;gBACfC,IAAIZ,EAAEa,MAAM,GAAGC,IAAI;YACrB;YACAC,UAAU;gBACR,KAAKjB;YACP;QACF;QACAkB,SAAS,OAAOC;YACd,MAAM,EAACL,EAAE,EAAC,GAAGK,QAAQP,MAAM;YAC3B,MAAMQ,MAAM,MAAMf,qBAAqB;gBAACc;gBAASL;gBAAIP;YAAQ;YAC7D,MAAMc,WAAW,MAAMlB,gBAAgB;gBAACmB,eAAeF,IAAIN,EAAE;gBAAES,WAAWH,IAAIG,SAAS;YAAA;YAEvF,OAAO;gBAACF,UAAUA,SAASG,GAAG,CAACpB;YAAgB;QACjD;IACF;AACF"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { ProjectsModuleClient } from '@shipfox/api-projects-dto';
|
|
1
|
+
import type { ProjectsModuleClient } from '@shipfox/api-projects-dto/inter-module';
|
|
2
2
|
export declare function listRunsRoute(projects: ProjectsModuleClient): import("@shipfox/node-fastify").RouteDefinition;
|
|
3
3
|
//# sourceMappingURL=list-runs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-runs.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/list-runs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"list-runs.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/list-runs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,wCAAwC,CAAC;AAYjF,wBAAgB,aAAa,CAAC,QAAQ,EAAE,oBAAoB,mDAmE3D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/presentation/routes/list-runs.ts"],"sourcesContent":["import type {ProjectsModuleClient} from '@shipfox/api-projects-dto';\nimport {\n workflowRunListQuerySchema,\n workflowRunListResponseSchema,\n} from '@shipfox/api-workflows-dto';\nimport {decodeTimestampIdCursor, encodeTimestampIdCursor} from '@shipfox/node-drizzle';\nimport {ClientError, defineRoute} from '@shipfox/node-fastify';\nimport {logger} from '@shipfox/node-opentelemetry';\nimport {listWorkflowRuns} from '#db/index.js';\nimport {toRunDto} from '#presentation/dto/index.js';\nimport {requireProjectAccess} from './project-access.js';\n\nexport function listRunsRoute(projects: ProjectsModuleClient) {\n return defineRoute({\n method: 'GET',\n path: '/',\n description: 'List workflow runs for a project',\n schema: {\n querystring: workflowRunListQuerySchema,\n response: {\n 200: workflowRunListResponseSchema,\n },\n },\n handler: async (request) => {\n const startedAt = performance.now();\n const {\n project_id: projectId,\n limit,\n cursor,\n status,\n definition_id: definitionId,\n trigger_source: triggerSource,\n created_from: createdFrom,\n created_to: createdTo,\n } = request.query;\n const decodedCursor = decodeTimestampIdCursor(cursor);\n if (cursor && !decodedCursor) {\n throw new ClientError('Invalid cursor', 'invalid-cursor', {status: 400});\n }\n\n const project = await requireProjectAccess(request, projectId, projects);\n\n const filters = {\n status,\n definitionId,\n triggerSource,\n createdFrom: createdFrom ? new Date(createdFrom) : undefined,\n createdTo: createdTo ? new Date(createdTo) : undefined,\n };\n const result = await listWorkflowRuns({\n projectId: project.id,\n limit,\n cursor: decodedCursor,\n filters,\n includeTotal: !decodedCursor,\n });\n\n logger().info(\n {\n projectId: project.id,\n filterKeys: Object.entries(filters)\n .filter(([, value]) => value !== undefined)\n .map(([key]) => key),\n limit,\n cursorPresent: Boolean(cursor),\n resultCount: result.runs.length,\n nextCursorPresent: Boolean(result.nextCursor),\n durationMs: Math.round(performance.now() - startedAt),\n },\n 'Listed workflow runs',\n );\n\n return {\n runs: result.runs.map((run) => toRunDto(run)),\n next_cursor: result.nextCursor ? encodeTimestampIdCursor(result.nextCursor) : null,\n filtered_total_count: result.filteredTotalCount,\n };\n },\n });\n}\n"],"names":["workflowRunListQuerySchema","workflowRunListResponseSchema","decodeTimestampIdCursor","encodeTimestampIdCursor","ClientError","defineRoute","logger","listWorkflowRuns","toRunDto","requireProjectAccess","listRunsRoute","projects","method","path","description","schema","querystring","response","handler","request","startedAt","performance","now","project_id","projectId","limit","cursor","status","definition_id","definitionId","trigger_source","triggerSource","created_from","createdFrom","created_to","createdTo","query","decodedCursor","project","filters","Date","undefined","result","id","includeTotal","info","filterKeys","Object","entries","filter","value","map","key","cursorPresent","Boolean","resultCount","runs","length","nextCursorPresent","nextCursor","durationMs","Math","round","run","next_cursor","filtered_total_count","filteredTotalCount"],"mappings":"AACA,SACEA,0BAA0B,EAC1BC,6BAA6B,QACxB,6BAA6B;AACpC,SAAQC,uBAAuB,EAAEC,uBAAuB,QAAO,wBAAwB;AACvF,SAAQC,WAAW,EAAEC,WAAW,QAAO,wBAAwB;AAC/D,SAAQC,MAAM,QAAO,8BAA8B;AACnD,SAAQC,gBAAgB,QAAO,eAAe;AAC9C,SAAQC,QAAQ,QAAO,6BAA6B;AACpD,SAAQC,oBAAoB,QAAO,sBAAsB;AAEzD,OAAO,SAASC,cAAcC,QAA8B;IAC1D,OAAON,YAAY;QACjBO,QAAQ;QACRC,MAAM;QACNC,aAAa;QACbC,QAAQ;YACNC,aAAahB;YACbiB,UAAU;gBACR,KAAKhB;YACP;QACF;QACAiB,SAAS,OAAOC;YACd,MAAMC,YAAYC,YAAYC,GAAG;YACjC,MAAM,EACJC,YAAYC,SAAS,EACrBC,KAAK,EACLC,MAAM,EACNC,MAAM,EACNC,eAAeC,YAAY,EAC3BC,gBAAgBC,aAAa,EAC7BC,cAAcC,WAAW,EACzBC,YAAYC,SAAS,EACtB,GAAGhB,QAAQiB,KAAK;YACjB,MAAMC,gBAAgBnC,wBAAwBwB;YAC9C,IAAIA,UAAU,CAACW,eAAe;gBAC5B,MAAM,IAAIjC,YAAY,kBAAkB,kBAAkB;oBAACuB,QAAQ;gBAAG;YACxE;YAEA,MAAMW,UAAU,MAAM7B,qBAAqBU,SAASK,WAAWb;YAE/D,MAAM4B,UAAU;gBACdZ;gBACAE;gBACAE;gBACAE,aAAaA,cAAc,IAAIO,KAAKP,eAAeQ;gBACnDN,WAAWA,YAAY,IAAIK,KAAKL,aAAaM;YAC/C;YACA,MAAMC,SAAS,MAAMnC,iBAAiB;gBACpCiB,WAAWc,QAAQK,EAAE;gBACrBlB;gBACAC,QAAQW;gBACRE;gBACAK,cAAc,CAACP;YACjB;YAEA/B,SAASuC,IAAI,CACX;gBACErB,WAAWc,QAAQK,EAAE;gBACrBG,YAAYC,OAAOC,OAAO,CAACT,SACxBU,MAAM,CAAC,CAAC,GAAGC,MAAM,GAAKA,UAAUT,WAChCU,GAAG,CAAC,CAAC,CAACC,IAAI,GAAKA;gBAClB3B;gBACA4B,eAAeC,QAAQ5B;gBACvB6B,aAAab,OAAOc,IAAI,CAACC,MAAM;gBAC/BC,mBAAmBJ,QAAQZ,OAAOiB,UAAU;gBAC5CC,YAAYC,KAAKC,KAAK,CAACzC,YAAYC,GAAG,KAAKF;YAC7C,GACA;YAGF,OAAO;gBACLoC,MAAMd,OAAOc,IAAI,CAACL,GAAG,CAAC,CAACY,MAAQvD,SAASuD;gBACxCC,aAAatB,OAAOiB,UAAU,GAAGxD,wBAAwBuC,OAAOiB,UAAU,IAAI;gBAC9EM,sBAAsBvB,OAAOwB,kBAAkB;YACjD;QACF;IACF;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/routes/list-runs.ts"],"sourcesContent":["import type {ProjectsModuleClient} from '@shipfox/api-projects-dto/inter-module';\nimport {\n workflowRunListQuerySchema,\n workflowRunListResponseSchema,\n} from '@shipfox/api-workflows-dto';\nimport {decodeTimestampIdCursor, encodeTimestampIdCursor} from '@shipfox/node-drizzle';\nimport {ClientError, defineRoute} from '@shipfox/node-fastify';\nimport {logger} from '@shipfox/node-opentelemetry';\nimport {listWorkflowRuns} from '#db/index.js';\nimport {toRunDto} from '#presentation/dto/index.js';\nimport {requireProjectAccess} from './project-access.js';\n\nexport function listRunsRoute(projects: ProjectsModuleClient) {\n return defineRoute({\n method: 'GET',\n path: '/',\n description: 'List workflow runs for a project',\n schema: {\n querystring: workflowRunListQuerySchema,\n response: {\n 200: workflowRunListResponseSchema,\n },\n },\n handler: async (request) => {\n const startedAt = performance.now();\n const {\n project_id: projectId,\n limit,\n cursor,\n status,\n definition_id: definitionId,\n trigger_source: triggerSource,\n created_from: createdFrom,\n created_to: createdTo,\n } = request.query;\n const decodedCursor = decodeTimestampIdCursor(cursor);\n if (cursor && !decodedCursor) {\n throw new ClientError('Invalid cursor', 'invalid-cursor', {status: 400});\n }\n\n const project = await requireProjectAccess(request, projectId, projects);\n\n const filters = {\n status,\n definitionId,\n triggerSource,\n createdFrom: createdFrom ? new Date(createdFrom) : undefined,\n createdTo: createdTo ? new Date(createdTo) : undefined,\n };\n const result = await listWorkflowRuns({\n projectId: project.id,\n limit,\n cursor: decodedCursor,\n filters,\n includeTotal: !decodedCursor,\n });\n\n logger().info(\n {\n projectId: project.id,\n filterKeys: Object.entries(filters)\n .filter(([, value]) => value !== undefined)\n .map(([key]) => key),\n limit,\n cursorPresent: Boolean(cursor),\n resultCount: result.runs.length,\n nextCursorPresent: Boolean(result.nextCursor),\n durationMs: Math.round(performance.now() - startedAt),\n },\n 'Listed workflow runs',\n );\n\n return {\n runs: result.runs.map((run) => toRunDto(run)),\n next_cursor: result.nextCursor ? encodeTimestampIdCursor(result.nextCursor) : null,\n filtered_total_count: result.filteredTotalCount,\n };\n },\n });\n}\n"],"names":["workflowRunListQuerySchema","workflowRunListResponseSchema","decodeTimestampIdCursor","encodeTimestampIdCursor","ClientError","defineRoute","logger","listWorkflowRuns","toRunDto","requireProjectAccess","listRunsRoute","projects","method","path","description","schema","querystring","response","handler","request","startedAt","performance","now","project_id","projectId","limit","cursor","status","definition_id","definitionId","trigger_source","triggerSource","created_from","createdFrom","created_to","createdTo","query","decodedCursor","project","filters","Date","undefined","result","id","includeTotal","info","filterKeys","Object","entries","filter","value","map","key","cursorPresent","Boolean","resultCount","runs","length","nextCursorPresent","nextCursor","durationMs","Math","round","run","next_cursor","filtered_total_count","filteredTotalCount"],"mappings":"AACA,SACEA,0BAA0B,EAC1BC,6BAA6B,QACxB,6BAA6B;AACpC,SAAQC,uBAAuB,EAAEC,uBAAuB,QAAO,wBAAwB;AACvF,SAAQC,WAAW,EAAEC,WAAW,QAAO,wBAAwB;AAC/D,SAAQC,MAAM,QAAO,8BAA8B;AACnD,SAAQC,gBAAgB,QAAO,eAAe;AAC9C,SAAQC,QAAQ,QAAO,6BAA6B;AACpD,SAAQC,oBAAoB,QAAO,sBAAsB;AAEzD,OAAO,SAASC,cAAcC,QAA8B;IAC1D,OAAON,YAAY;QACjBO,QAAQ;QACRC,MAAM;QACNC,aAAa;QACbC,QAAQ;YACNC,aAAahB;YACbiB,UAAU;gBACR,KAAKhB;YACP;QACF;QACAiB,SAAS,OAAOC;YACd,MAAMC,YAAYC,YAAYC,GAAG;YACjC,MAAM,EACJC,YAAYC,SAAS,EACrBC,KAAK,EACLC,MAAM,EACNC,MAAM,EACNC,eAAeC,YAAY,EAC3BC,gBAAgBC,aAAa,EAC7BC,cAAcC,WAAW,EACzBC,YAAYC,SAAS,EACtB,GAAGhB,QAAQiB,KAAK;YACjB,MAAMC,gBAAgBnC,wBAAwBwB;YAC9C,IAAIA,UAAU,CAACW,eAAe;gBAC5B,MAAM,IAAIjC,YAAY,kBAAkB,kBAAkB;oBAACuB,QAAQ;gBAAG;YACxE;YAEA,MAAMW,UAAU,MAAM7B,qBAAqBU,SAASK,WAAWb;YAE/D,MAAM4B,UAAU;gBACdZ;gBACAE;gBACAE;gBACAE,aAAaA,cAAc,IAAIO,KAAKP,eAAeQ;gBACnDN,WAAWA,YAAY,IAAIK,KAAKL,aAAaM;YAC/C;YACA,MAAMC,SAAS,MAAMnC,iBAAiB;gBACpCiB,WAAWc,QAAQK,EAAE;gBACrBlB;gBACAC,QAAQW;gBACRE;gBACAK,cAAc,CAACP;YACjB;YAEA/B,SAASuC,IAAI,CACX;gBACErB,WAAWc,QAAQK,EAAE;gBACrBG,YAAYC,OAAOC,OAAO,CAACT,SACxBU,MAAM,CAAC,CAAC,GAAGC,MAAM,GAAKA,UAAUT,WAChCU,GAAG,CAAC,CAAC,CAACC,IAAI,GAAKA;gBAClB3B;gBACA4B,eAAeC,QAAQ5B;gBACvB6B,aAAab,OAAOc,IAAI,CAACC,MAAM;gBAC/BC,mBAAmBJ,QAAQZ,OAAOiB,UAAU;gBAC5CC,YAAYC,KAAKC,KAAK,CAACzC,YAAYC,GAAG,KAAKF;YAC7C,GACA;YAGF,OAAO;gBACLoC,MAAMd,OAAOc,IAAI,CAACL,GAAG,CAAC,CAACY,MAAQvD,SAASuD;gBACxCC,aAAatB,OAAOiB,UAAU,GAAGxD,wBAAwBuC,OAAOiB,UAAU,IAAI;gBAC9EM,sBAAsBvB,OAAOwB,kBAAkB;YACjD;QACF;IACF;AACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ProjectsModuleClient } from '@shipfox/api-projects-dto';
|
|
1
|
+
import type { ProjectsModuleClient } from '@shipfox/api-projects-dto/inter-module';
|
|
2
2
|
import type { FastifyRequest } from 'fastify';
|
|
3
3
|
export declare function requireProjectAccess(request: FastifyRequest, projectId: string, projects: ProjectsModuleClient): Promise<{
|
|
4
4
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-access.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/project-access.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"project-access.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/project-access.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,wCAAwC,CAAC;AAEjF,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,SAAS,CAAC;AAE5C,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,oBAAoB;;;;;;GAO/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/presentation/routes/project-access.ts"],"sourcesContent":["import {requireWorkspaceAccess} from '@shipfox/api-auth-context';\nimport type {ProjectsModuleClient} from '@shipfox/api-projects-dto';\nimport {ClientError} from '@shipfox/node-fastify';\nimport type {FastifyRequest} from 'fastify';\n\nexport async function requireProjectAccess(\n request: FastifyRequest,\n projectId: string,\n projects: ProjectsModuleClient,\n) {\n const result = await projects.getProjectById({projectId});\n if (result.project === null)\n throw new ClientError('Project not found', 'project-not-found', {status: 404});\n requireWorkspaceAccess({request, workspaceId: result.project.workspaceId});\n return result.project;\n}\n"],"names":["requireWorkspaceAccess","ClientError","requireProjectAccess","request","projectId","projects","result","getProjectById","project","status","workspaceId"],"mappings":"AAAA,SAAQA,sBAAsB,QAAO,4BAA4B;AAEjE,SAAQC,WAAW,QAAO,wBAAwB;AAGlD,OAAO,eAAeC,qBACpBC,OAAuB,EACvBC,SAAiB,EACjBC,QAA8B;IAE9B,MAAMC,SAAS,MAAMD,SAASE,cAAc,CAAC;QAACH;IAAS;IACvD,IAAIE,OAAOE,OAAO,KAAK,MACrB,MAAM,IAAIP,YAAY,qBAAqB,qBAAqB;QAACQ,QAAQ;IAAG;IAC9ET,uBAAuB;QAACG;QAASO,aAAaJ,OAAOE,OAAO,CAACE,WAAW;IAAA;IACxE,OAAOJ,OAAOE,OAAO;AACvB"}
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/routes/project-access.ts"],"sourcesContent":["import {requireWorkspaceAccess} from '@shipfox/api-auth-context';\nimport type {ProjectsModuleClient} from '@shipfox/api-projects-dto/inter-module';\nimport {ClientError} from '@shipfox/node-fastify';\nimport type {FastifyRequest} from 'fastify';\n\nexport async function requireProjectAccess(\n request: FastifyRequest,\n projectId: string,\n projects: ProjectsModuleClient,\n) {\n const result = await projects.getProjectById({projectId});\n if (result.project === null)\n throw new ClientError('Project not found', 'project-not-found', {status: 404});\n requireWorkspaceAccess({request, workspaceId: result.project.workspaceId});\n return result.project;\n}\n"],"names":["requireWorkspaceAccess","ClientError","requireProjectAccess","request","projectId","projects","result","getProjectById","project","status","workspaceId"],"mappings":"AAAA,SAAQA,sBAAsB,QAAO,4BAA4B;AAEjE,SAAQC,WAAW,QAAO,wBAAwB;AAGlD,OAAO,eAAeC,qBACpBC,OAAuB,EACvBC,SAAiB,EACjBC,QAA8B;IAE9B,MAAMC,SAAS,MAAMD,SAASE,cAAc,CAAC;QAACH;IAAS;IACvD,IAAIE,OAAOE,OAAO,KAAK,MACrB,MAAM,IAAIP,YAAY,qBAAqB,qBAAqB;QAACQ,QAAQ;IAAG;IAC9ET,uBAAuB;QAACG;QAASO,aAAaJ,OAAOE,OAAO,CAACE,WAAW;IAAA;IACxE,OAAOJ,OAAOE,OAAO;AACvB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ProjectsModuleClient } from '@shipfox/api-projects-dto';
|
|
1
|
+
import type { ProjectsModuleClient } from '@shipfox/api-projects-dto/inter-module';
|
|
2
2
|
import type { FastifyRequest } from 'fastify';
|
|
3
3
|
import type { WorkflowRun } from '#core/entities/workflow-run.js';
|
|
4
4
|
export declare function requireAccessibleRun({ request, id, projects, }: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"require-accessible-run.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/require-accessible-run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"require-accessible-run.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/require-accessible-run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,wCAAwC,CAAC;AAEjF,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gCAAgC,CAAC;AAIhE,wBAAsB,oBAAoB,CAAC,EACzC,OAAO,EACP,EAAE,EACF,QAAQ,GACT,EAAE;IACD,OAAO,EAAE,cAAc,CAAC;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,oBAAoB,CAAC;CAChC,GAAG,OAAO,CAAC,WAAW,CAAC,CAcvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/presentation/routes/require-accessible-run.ts"],"sourcesContent":["import type {ProjectsModuleClient} from '@shipfox/api-projects-dto';\nimport {ClientError} from '@shipfox/node-fastify';\nimport type {FastifyRequest} from 'fastify';\nimport type {WorkflowRun} from '#core/entities/workflow-run.js';\nimport {getWorkflowRunById} from '#db/index.js';\nimport {requireProjectAccess} from './project-access.js';\n\nexport async function requireAccessibleRun({\n request,\n id,\n projects,\n}: {\n request: FastifyRequest;\n id: string;\n projects: ProjectsModuleClient;\n}): Promise<WorkflowRun> {\n const run = await getWorkflowRunById(id);\n if (!run) {\n throw new ClientError('Run not found', 'not-found', {status: 404});\n }\n\n await requireProjectAccess(request, run.projectId, projects).catch((err: unknown) => {\n if (err instanceof ClientError && (err.status === 403 || err.status === 404)) {\n throw new ClientError('Run not found', 'not-found', {status: 404});\n }\n throw err;\n });\n\n return run;\n}\n"],"names":["ClientError","getWorkflowRunById","requireProjectAccess","requireAccessibleRun","request","id","projects","run","status","projectId","catch","err"],"mappings":"AACA,SAAQA,WAAW,QAAO,wBAAwB;AAGlD,SAAQC,kBAAkB,QAAO,eAAe;AAChD,SAAQC,oBAAoB,QAAO,sBAAsB;AAEzD,OAAO,eAAeC,qBAAqB,EACzCC,OAAO,EACPC,EAAE,EACFC,QAAQ,EAKT;IACC,MAAMC,MAAM,MAAMN,mBAAmBI;IACrC,IAAI,CAACE,KAAK;QACR,MAAM,IAAIP,YAAY,iBAAiB,aAAa;YAACQ,QAAQ;QAAG;IAClE;IAEA,MAAMN,qBAAqBE,SAASG,IAAIE,SAAS,EAAEH,UAAUI,KAAK,CAAC,CAACC;QAClE,IAAIA,eAAeX,eAAgBW,CAAAA,IAAIH,MAAM,KAAK,OAAOG,IAAIH,MAAM,KAAK,GAAE,GAAI;YAC5E,MAAM,IAAIR,YAAY,iBAAiB,aAAa;gBAACQ,QAAQ;YAAG;QAClE;QACA,MAAMG;IACR;IAEA,OAAOJ;AACT"}
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/routes/require-accessible-run.ts"],"sourcesContent":["import type {ProjectsModuleClient} from '@shipfox/api-projects-dto/inter-module';\nimport {ClientError} from '@shipfox/node-fastify';\nimport type {FastifyRequest} from 'fastify';\nimport type {WorkflowRun} from '#core/entities/workflow-run.js';\nimport {getWorkflowRunById} from '#db/index.js';\nimport {requireProjectAccess} from './project-access.js';\n\nexport async function requireAccessibleRun({\n request,\n id,\n projects,\n}: {\n request: FastifyRequest;\n id: string;\n projects: ProjectsModuleClient;\n}): Promise<WorkflowRun> {\n const run = await getWorkflowRunById(id);\n if (!run) {\n throw new ClientError('Run not found', 'not-found', {status: 404});\n }\n\n await requireProjectAccess(request, run.projectId, projects).catch((err: unknown) => {\n if (err instanceof ClientError && (err.status === 403 || err.status === 404)) {\n throw new ClientError('Run not found', 'not-found', {status: 404});\n }\n throw err;\n });\n\n return run;\n}\n"],"names":["ClientError","getWorkflowRunById","requireProjectAccess","requireAccessibleRun","request","id","projects","run","status","projectId","catch","err"],"mappings":"AACA,SAAQA,WAAW,QAAO,wBAAwB;AAGlD,SAAQC,kBAAkB,QAAO,eAAe;AAChD,SAAQC,oBAAoB,QAAO,sBAAsB;AAEzD,OAAO,eAAeC,qBAAqB,EACzCC,OAAO,EACPC,EAAE,EACFC,QAAQ,EAKT;IACC,MAAMC,MAAM,MAAMN,mBAAmBI;IACrC,IAAI,CAACE,KAAK;QACR,MAAM,IAAIP,YAAY,iBAAiB,aAAa;YAACQ,QAAQ;QAAG;IAClE;IAEA,MAAMN,qBAAqBE,SAASG,IAAIE,SAAS,EAAEH,UAAUI,KAAK,CAAC,CAACC;QAClE,IAAIA,eAAeX,eAAgBW,CAAAA,IAAIH,MAAM,KAAK,OAAOG,IAAIH,MAAM,KAAK,GAAE,GAAI;YAC5E,MAAM,IAAIR,YAAY,iBAAiB,aAAa;gBAACQ,QAAQ;YAAG;QAClE;QACA,MAAMG;IACR;IAEA,OAAOJ;AACT"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { ProjectsModuleClient } from '@shipfox/api-projects-dto';
|
|
1
|
+
import type { ProjectsModuleClient } from '@shipfox/api-projects-dto/inter-module';
|
|
2
2
|
export declare function rerunRunRoute(projects: ProjectsModuleClient): import("@shipfox/node-fastify").RouteDefinition;
|
|
3
3
|
//# sourceMappingURL=rerun-run.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rerun-run.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/rerun-run.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"rerun-run.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/rerun-run.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,wCAAwC,CAAC;AASjF,wBAAgB,aAAa,CAAC,QAAQ,EAAE,oBAAoB,mDAwC3D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/presentation/routes/rerun-run.ts"],"sourcesContent":["import {requireUserContext} from '@shipfox/api-auth-context';\nimport type {ProjectsModuleClient} from '@shipfox/api-projects-dto';\nimport {rerunWorkflowRunBodySchema, workflowRunResponseSchema} from '@shipfox/api-workflows-dto';\nimport {ClientError, defineRoute} from '@shipfox/node-fastify';\nimport {z} from 'zod';\nimport {NoFailedJobsError, RunNotTerminalError, SourceRunNotFoundError} from '#core/errors.js';\nimport {createRerunWorkflowRun} from '#db/index.js';\nimport {toRunDto} from '#presentation/dto/index.js';\nimport {requireAccessibleRun} from './require-accessible-run.js';\n\nexport function rerunRunRoute(projects: ProjectsModuleClient) {\n return defineRoute({\n method: 'POST',\n path: '/:id/rerun',\n description: 'Re-run a terminal workflow run',\n schema: {\n params: z.object({\n id: z.string().uuid(),\n }),\n body: rerunWorkflowRunBodySchema,\n response: {\n 200: workflowRunResponseSchema,\n },\n },\n errorHandler: (error) => {\n if (error instanceof SourceRunNotFoundError) {\n throw new ClientError('Run not found', 'not-found', {status: 404});\n }\n if (error instanceof RunNotTerminalError) {\n throw new ClientError('Run is not terminal', 'run-not-terminal', {status: 409});\n }\n if (error instanceof NoFailedJobsError) {\n throw new ClientError('Run has no failed jobs', 'no-failed-jobs', {status: 409});\n }\n throw error;\n },\n handler: async (request) => {\n const {id} = request.params;\n const sourceRun = await requireAccessibleRun({request, id, projects});\n\n const actor = requireUserContext(request);\n const run = await createRerunWorkflowRun({\n workflowRunId: sourceRun.id,\n mode: request.body.mode,\n actorUserId: actor.userId,\n });\n\n return toRunDto(run, run.currentAttempt);\n },\n });\n}\n"],"names":["requireUserContext","rerunWorkflowRunBodySchema","workflowRunResponseSchema","ClientError","defineRoute","z","NoFailedJobsError","RunNotTerminalError","SourceRunNotFoundError","createRerunWorkflowRun","toRunDto","requireAccessibleRun","rerunRunRoute","projects","method","path","description","schema","params","object","id","string","uuid","body","response","errorHandler","error","status","handler","request","sourceRun","actor","run","workflowRunId","mode","actorUserId","userId","currentAttempt"],"mappings":"AAAA,SAAQA,kBAAkB,QAAO,4BAA4B;AAE7D,SAAQC,0BAA0B,EAAEC,yBAAyB,QAAO,6BAA6B;AACjG,SAAQC,WAAW,EAAEC,WAAW,QAAO,wBAAwB;AAC/D,SAAQC,CAAC,QAAO,MAAM;AACtB,SAAQC,iBAAiB,EAAEC,mBAAmB,EAAEC,sBAAsB,QAAO,kBAAkB;AAC/F,SAAQC,sBAAsB,QAAO,eAAe;AACpD,SAAQC,QAAQ,QAAO,6BAA6B;AACpD,SAAQC,oBAAoB,QAAO,8BAA8B;AAEjE,OAAO,SAASC,cAAcC,QAA8B;IAC1D,OAAOT,YAAY;QACjBU,QAAQ;QACRC,MAAM;QACNC,aAAa;QACbC,QAAQ;YACNC,QAAQb,EAAEc,MAAM,CAAC;gBACfC,IAAIf,EAAEgB,MAAM,GAAGC,IAAI;YACrB;YACAC,MAAMtB;YACNuB,UAAU;gBACR,KAAKtB;YACP;QACF;QACAuB,cAAc,CAACC;YACb,IAAIA,iBAAiBlB,wBAAwB;gBAC3C,MAAM,IAAIL,YAAY,iBAAiB,aAAa;oBAACwB,QAAQ;gBAAG;YAClE;YACA,IAAID,iBAAiBnB,qBAAqB;gBACxC,MAAM,IAAIJ,YAAY,uBAAuB,oBAAoB;oBAACwB,QAAQ;gBAAG;YAC/E;YACA,IAAID,iBAAiBpB,mBAAmB;gBACtC,MAAM,IAAIH,YAAY,0BAA0B,kBAAkB;oBAACwB,QAAQ;gBAAG;YAChF;YACA,MAAMD;QACR;QACAE,SAAS,OAAOC;YACd,MAAM,EAACT,EAAE,EAAC,GAAGS,QAAQX,MAAM;YAC3B,MAAMY,YAAY,MAAMnB,qBAAqB;gBAACkB;gBAAST;gBAAIP;YAAQ;YAEnE,MAAMkB,QAAQ/B,mBAAmB6B;YACjC,MAAMG,MAAM,MAAMvB,uBAAuB;gBACvCwB,eAAeH,UAAUV,EAAE;gBAC3Bc,MAAML,QAAQN,IAAI,CAACW,IAAI;gBACvBC,aAAaJ,MAAMK,MAAM;YAC3B;YAEA,OAAO1B,SAASsB,KAAKA,IAAIK,cAAc;QACzC;IACF;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/routes/rerun-run.ts"],"sourcesContent":["import {requireUserContext} from '@shipfox/api-auth-context';\nimport type {ProjectsModuleClient} from '@shipfox/api-projects-dto/inter-module';\nimport {rerunWorkflowRunBodySchema, workflowRunResponseSchema} from '@shipfox/api-workflows-dto';\nimport {ClientError, defineRoute} from '@shipfox/node-fastify';\nimport {z} from 'zod';\nimport {NoFailedJobsError, RunNotTerminalError, SourceRunNotFoundError} from '#core/errors.js';\nimport {createRerunWorkflowRun} from '#db/index.js';\nimport {toRunDto} from '#presentation/dto/index.js';\nimport {requireAccessibleRun} from './require-accessible-run.js';\n\nexport function rerunRunRoute(projects: ProjectsModuleClient) {\n return defineRoute({\n method: 'POST',\n path: '/:id/rerun',\n description: 'Re-run a terminal workflow run',\n schema: {\n params: z.object({\n id: z.string().uuid(),\n }),\n body: rerunWorkflowRunBodySchema,\n response: {\n 200: workflowRunResponseSchema,\n },\n },\n errorHandler: (error) => {\n if (error instanceof SourceRunNotFoundError) {\n throw new ClientError('Run not found', 'not-found', {status: 404});\n }\n if (error instanceof RunNotTerminalError) {\n throw new ClientError('Run is not terminal', 'run-not-terminal', {status: 409});\n }\n if (error instanceof NoFailedJobsError) {\n throw new ClientError('Run has no failed jobs', 'no-failed-jobs', {status: 409});\n }\n throw error;\n },\n handler: async (request) => {\n const {id} = request.params;\n const sourceRun = await requireAccessibleRun({request, id, projects});\n\n const actor = requireUserContext(request);\n const run = await createRerunWorkflowRun({\n workflowRunId: sourceRun.id,\n mode: request.body.mode,\n actorUserId: actor.userId,\n });\n\n return toRunDto(run, run.currentAttempt);\n },\n });\n}\n"],"names":["requireUserContext","rerunWorkflowRunBodySchema","workflowRunResponseSchema","ClientError","defineRoute","z","NoFailedJobsError","RunNotTerminalError","SourceRunNotFoundError","createRerunWorkflowRun","toRunDto","requireAccessibleRun","rerunRunRoute","projects","method","path","description","schema","params","object","id","string","uuid","body","response","errorHandler","error","status","handler","request","sourceRun","actor","run","workflowRunId","mode","actorUserId","userId","currentAttempt"],"mappings":"AAAA,SAAQA,kBAAkB,QAAO,4BAA4B;AAE7D,SAAQC,0BAA0B,EAAEC,yBAAyB,QAAO,6BAA6B;AACjG,SAAQC,WAAW,EAAEC,WAAW,QAAO,wBAAwB;AAC/D,SAAQC,CAAC,QAAO,MAAM;AACtB,SAAQC,iBAAiB,EAAEC,mBAAmB,EAAEC,sBAAsB,QAAO,kBAAkB;AAC/F,SAAQC,sBAAsB,QAAO,eAAe;AACpD,SAAQC,QAAQ,QAAO,6BAA6B;AACpD,SAAQC,oBAAoB,QAAO,8BAA8B;AAEjE,OAAO,SAASC,cAAcC,QAA8B;IAC1D,OAAOT,YAAY;QACjBU,QAAQ;QACRC,MAAM;QACNC,aAAa;QACbC,QAAQ;YACNC,QAAQb,EAAEc,MAAM,CAAC;gBACfC,IAAIf,EAAEgB,MAAM,GAAGC,IAAI;YACrB;YACAC,MAAMtB;YACNuB,UAAU;gBACR,KAAKtB;YACP;QACF;QACAuB,cAAc,CAACC;YACb,IAAIA,iBAAiBlB,wBAAwB;gBAC3C,MAAM,IAAIL,YAAY,iBAAiB,aAAa;oBAACwB,QAAQ;gBAAG;YAClE;YACA,IAAID,iBAAiBnB,qBAAqB;gBACxC,MAAM,IAAIJ,YAAY,uBAAuB,oBAAoB;oBAACwB,QAAQ;gBAAG;YAC/E;YACA,IAAID,iBAAiBpB,mBAAmB;gBACtC,MAAM,IAAIH,YAAY,0BAA0B,kBAAkB;oBAACwB,QAAQ;gBAAG;YAChF;YACA,MAAMD;QACR;QACAE,SAAS,OAAOC;YACd,MAAM,EAACT,EAAE,EAAC,GAAGS,QAAQX,MAAM;YAC3B,MAAMY,YAAY,MAAMnB,qBAAqB;gBAACkB;gBAAST;gBAAIP;YAAQ;YAEnE,MAAMkB,QAAQ/B,mBAAmB6B;YACjC,MAAMG,MAAM,MAAMvB,uBAAuB;gBACvCwB,eAAeH,UAAUV,EAAE;gBAC3Bc,MAAML,QAAQN,IAAI,CAACW,IAAI;gBACvBC,aAAaJ,MAAMK,MAAM;YAC3B;YAEA,OAAO1B,SAASsB,KAAKA,IAAIK,cAAc;QACzC;IACF;AACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AgentInterModuleClient } from '@shipfox/api-agent-dto/inter-module';
|
|
2
|
-
import type { IntegrationsModuleClient } from '@shipfox/api-integration-core-dto';
|
|
3
|
-
import type { ProjectsModuleClient } from '@shipfox/api-projects-dto';
|
|
2
|
+
import type { IntegrationsModuleClient } from '@shipfox/api-integration-core-dto/inter-module';
|
|
3
|
+
import type { ProjectsModuleClient } from '@shipfox/api-projects-dto/inter-module';
|
|
4
4
|
import type { RunnersInterModuleClient } from '@shipfox/api-runners-dto/inter-module';
|
|
5
5
|
import type { SecretsInterModuleClient } from '@shipfox/api-secrets-dto/inter-module';
|
|
6
6
|
import { activateJobListenerActivity, bulkSetStepStatuses, evaluateJobActivationsActivity, failJobExecutionAsTimedOutActivity, failRunAsTimedOutActivity, loadRunAttemptDag, peekListenerBufferActivity, recordListenerFiringOutcomeActivity, resolveJobListenerActivity, resolveJobStatusFromJobExecutionsActivity, resolveLeaseExpiredJobExecutionActivity, setJobExecutionStatus, setJobStatus, setRunAttemptStatus, settleListenerJobExecutionActivity } from './orchestration-activities.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/temporal/activities/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,qCAAqC,CAAC;AAChF,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/temporal/activities/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,qCAAqC,CAAC;AAChF,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,gDAAgD,CAAC;AAC7F,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,wCAAwC,CAAC;AACjF,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,uCAAuC,CAAC;AACpF,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,uCAAuC,CAAC;AACpF,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,EAKnB,8BAA8B,EAC9B,kCAAkC,EAClC,yBAAyB,EACzB,iBAAiB,EACjB,0BAA0B,EAC1B,mCAAmC,EACnC,0BAA0B,EAC1B,yCAAyC,EACzC,uCAAuC,EACvC,qBAAqB,EACrB,YAAY,EACZ,mBAAmB,EACnB,kCAAkC,EACnC,MAAM,+BAA+B,CAAC;AAEvC,wBAAgB,6BAA6B,CAAC,MAAM,EAAE;IACpD,KAAK,EAAE,sBAAsB,CAAC;IAC9B,YAAY,EAAE,wBAAwB,CAAC;IACvC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,OAAO,EAAE,wBAAwB,CAAC;IAClC,OAAO,EAAE,IAAI,CAAC,wBAAwB,EAAE,yBAAyB,CAAC,CAAC;CACpE;;;;4CAKiD,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;yDAOvE,UAAU,CAAC,OAAO,kCAAkC,CAAC,CAAC,CAAC,CAAC;;;;;;;;eAoBgkP,CAAC;;;;;;8DANznP,UAAU,CAAC,OAAO,uCAAuC,CAAC,CAAC,CAAC,CAAC;;;;;;;;EAKlF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/temporal/activities/index.ts"],"sourcesContent":["import type {AgentInterModuleClient} from '@shipfox/api-agent-dto/inter-module';\nimport type {IntegrationsModuleClient} from '@shipfox/api-integration-core-dto';\nimport type {ProjectsModuleClient} from '@shipfox/api-projects-dto';\nimport type {RunnersInterModuleClient} from '@shipfox/api-runners-dto/inter-module';\nimport type {SecretsInterModuleClient} from '@shipfox/api-secrets-dto/inter-module';\nimport {\n activateJobListenerActivity,\n bulkSetStepStatuses,\n createCancelRunnerJobsActivity,\n createDrainListenerEventsActivity,\n createEnqueueJobExecutionForRunner,\n createReleaseLeaseActivity,\n evaluateJobActivationsActivity,\n failJobExecutionAsTimedOutActivity,\n failRunAsTimedOutActivity,\n loadRunAttemptDag,\n peekListenerBufferActivity,\n recordListenerFiringOutcomeActivity,\n resolveJobListenerActivity,\n resolveJobStatusFromJobExecutionsActivity,\n resolveLeaseExpiredJobExecutionActivity,\n setJobExecutionStatus,\n setJobStatus,\n setRunAttemptStatus,\n settleListenerJobExecutionActivity,\n} from './orchestration-activities.js';\n\nexport function createOrchestrationActivities(params: {\n agent: AgentInterModuleClient;\n integrations: IntegrationsModuleClient;\n projects: ProjectsModuleClient;\n runners: RunnersInterModuleClient;\n secrets: Pick<SecretsInterModuleClient, 'getVariablesByNamespace'>;\n}) {\n return {\n loadRunAttemptDag,\n setRunAttemptStatus,\n setJobStatus,\n setJobExecutionStatus: async (activityParams: Parameters<typeof setJobExecutionStatus>[0]) =>\n await setJobExecutionStatus(activityParams, params.secrets),\n bulkSetStepStatuses,\n cancelRunnerJobsActivity: createCancelRunnerJobsActivity(params.runners),\n enqueueJobExecutionForRunner: createEnqueueJobExecutionForRunner(params.runners),\n evaluateJobActivationsActivity,\n failJobExecutionAsTimedOutActivity: async (\n activityParams: Parameters<typeof failJobExecutionAsTimedOutActivity>[0],\n ) => await failJobExecutionAsTimedOutActivity(activityParams, params.secrets),\n failRunAsTimedOutActivity,\n activateJobListenerActivity,\n drainListenerEventsActivity: createDrainListenerEventsActivity({\n agent: params.agent,\n integrations: params.integrations,\n projects: params.projects,\n }),\n peekListenerBufferActivity,\n resolveJobListenerActivity,\n settleListenerJobExecutionActivity,\n recordListenerFiringOutcomeActivity,\n resolveLeaseExpiredJobExecutionActivity: async (\n activityParams: Parameters<typeof resolveLeaseExpiredJobExecutionActivity>[0],\n ) => await resolveLeaseExpiredJobExecutionActivity(activityParams, params.secrets),\n resolveJobStatusFromJobExecutionsActivity,\n releaseLeaseActivity: createReleaseLeaseActivity(params.runners),\n };\n}\n"],"names":["activateJobListenerActivity","bulkSetStepStatuses","createCancelRunnerJobsActivity","createDrainListenerEventsActivity","createEnqueueJobExecutionForRunner","createReleaseLeaseActivity","evaluateJobActivationsActivity","failJobExecutionAsTimedOutActivity","failRunAsTimedOutActivity","loadRunAttemptDag","peekListenerBufferActivity","recordListenerFiringOutcomeActivity","resolveJobListenerActivity","resolveJobStatusFromJobExecutionsActivity","resolveLeaseExpiredJobExecutionActivity","setJobExecutionStatus","setJobStatus","setRunAttemptStatus","settleListenerJobExecutionActivity","createOrchestrationActivities","params","activityParams","secrets","cancelRunnerJobsActivity","runners","enqueueJobExecutionForRunner","drainListenerEventsActivity","agent","integrations","projects","releaseLeaseActivity"],"mappings":"AAKA,SACEA,2BAA2B,EAC3BC,mBAAmB,EACnBC,8BAA8B,EAC9BC,iCAAiC,EACjCC,kCAAkC,EAClCC,0BAA0B,EAC1BC,8BAA8B,EAC9BC,kCAAkC,EAClCC,yBAAyB,EACzBC,iBAAiB,EACjBC,0BAA0B,EAC1BC,mCAAmC,EACnCC,0BAA0B,EAC1BC,yCAAyC,EACzCC,uCAAuC,EACvCC,qBAAqB,EACrBC,YAAY,EACZC,mBAAmB,EACnBC,kCAAkC,QAC7B,gCAAgC;AAEvC,OAAO,SAASC,8BAA8BC,MAM7C;IACC,OAAO;QACLX;QACAQ;QACAD;QACAD,uBAAuB,OAAOM,iBAC5B,MAAMN,sBAAsBM,gBAAgBD,OAAOE,OAAO;QAC5DrB;QACAsB,0BAA0BrB,+BAA+BkB,OAAOI,OAAO;QACvEC,8BAA8BrB,mCAAmCgB,OAAOI,OAAO;QAC/ElB;QACAC,oCAAoC,OAClCc,iBACG,MAAMd,mCAAmCc,gBAAgBD,OAAOE,OAAO;QAC5Ed;QACAR;QACA0B,6BAA6BvB,kCAAkC;YAC7DwB,OAAOP,OAAOO,KAAK;YACnBC,cAAcR,OAAOQ,YAAY;YACjCC,UAAUT,OAAOS,QAAQ;QAC3B;QACAnB;QACAE;QACAM;QACAP;QACAG,yCAAyC,OACvCO,iBACG,MAAMP,wCAAwCO,gBAAgBD,OAAOE,OAAO;QACjFT;QACAiB,sBAAsBzB,2BAA2Be,OAAOI,OAAO;IACjE;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../../src/temporal/activities/index.ts"],"sourcesContent":["import type {AgentInterModuleClient} from '@shipfox/api-agent-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 type {RunnersInterModuleClient} from '@shipfox/api-runners-dto/inter-module';\nimport type {SecretsInterModuleClient} from '@shipfox/api-secrets-dto/inter-module';\nimport {\n activateJobListenerActivity,\n bulkSetStepStatuses,\n createCancelRunnerJobsActivity,\n createDrainListenerEventsActivity,\n createEnqueueJobExecutionForRunner,\n createReleaseLeaseActivity,\n evaluateJobActivationsActivity,\n failJobExecutionAsTimedOutActivity,\n failRunAsTimedOutActivity,\n loadRunAttemptDag,\n peekListenerBufferActivity,\n recordListenerFiringOutcomeActivity,\n resolveJobListenerActivity,\n resolveJobStatusFromJobExecutionsActivity,\n resolveLeaseExpiredJobExecutionActivity,\n setJobExecutionStatus,\n setJobStatus,\n setRunAttemptStatus,\n settleListenerJobExecutionActivity,\n} from './orchestration-activities.js';\n\nexport function createOrchestrationActivities(params: {\n agent: AgentInterModuleClient;\n integrations: IntegrationsModuleClient;\n projects: ProjectsModuleClient;\n runners: RunnersInterModuleClient;\n secrets: Pick<SecretsInterModuleClient, 'getVariablesByNamespace'>;\n}) {\n return {\n loadRunAttemptDag,\n setRunAttemptStatus,\n setJobStatus,\n setJobExecutionStatus: async (activityParams: Parameters<typeof setJobExecutionStatus>[0]) =>\n await setJobExecutionStatus(activityParams, params.secrets),\n bulkSetStepStatuses,\n cancelRunnerJobsActivity: createCancelRunnerJobsActivity(params.runners),\n enqueueJobExecutionForRunner: createEnqueueJobExecutionForRunner(params.runners),\n evaluateJobActivationsActivity,\n failJobExecutionAsTimedOutActivity: async (\n activityParams: Parameters<typeof failJobExecutionAsTimedOutActivity>[0],\n ) => await failJobExecutionAsTimedOutActivity(activityParams, params.secrets),\n failRunAsTimedOutActivity,\n activateJobListenerActivity,\n drainListenerEventsActivity: createDrainListenerEventsActivity({\n agent: params.agent,\n integrations: params.integrations,\n projects: params.projects,\n }),\n peekListenerBufferActivity,\n resolveJobListenerActivity,\n settleListenerJobExecutionActivity,\n recordListenerFiringOutcomeActivity,\n resolveLeaseExpiredJobExecutionActivity: async (\n activityParams: Parameters<typeof resolveLeaseExpiredJobExecutionActivity>[0],\n ) => await resolveLeaseExpiredJobExecutionActivity(activityParams, params.secrets),\n resolveJobStatusFromJobExecutionsActivity,\n releaseLeaseActivity: createReleaseLeaseActivity(params.runners),\n };\n}\n"],"names":["activateJobListenerActivity","bulkSetStepStatuses","createCancelRunnerJobsActivity","createDrainListenerEventsActivity","createEnqueueJobExecutionForRunner","createReleaseLeaseActivity","evaluateJobActivationsActivity","failJobExecutionAsTimedOutActivity","failRunAsTimedOutActivity","loadRunAttemptDag","peekListenerBufferActivity","recordListenerFiringOutcomeActivity","resolveJobListenerActivity","resolveJobStatusFromJobExecutionsActivity","resolveLeaseExpiredJobExecutionActivity","setJobExecutionStatus","setJobStatus","setRunAttemptStatus","settleListenerJobExecutionActivity","createOrchestrationActivities","params","activityParams","secrets","cancelRunnerJobsActivity","runners","enqueueJobExecutionForRunner","drainListenerEventsActivity","agent","integrations","projects","releaseLeaseActivity"],"mappings":"AAKA,SACEA,2BAA2B,EAC3BC,mBAAmB,EACnBC,8BAA8B,EAC9BC,iCAAiC,EACjCC,kCAAkC,EAClCC,0BAA0B,EAC1BC,8BAA8B,EAC9BC,kCAAkC,EAClCC,yBAAyB,EACzBC,iBAAiB,EACjBC,0BAA0B,EAC1BC,mCAAmC,EACnCC,0BAA0B,EAC1BC,yCAAyC,EACzCC,uCAAuC,EACvCC,qBAAqB,EACrBC,YAAY,EACZC,mBAAmB,EACnBC,kCAAkC,QAC7B,gCAAgC;AAEvC,OAAO,SAASC,8BAA8BC,MAM7C;IACC,OAAO;QACLX;QACAQ;QACAD;QACAD,uBAAuB,OAAOM,iBAC5B,MAAMN,sBAAsBM,gBAAgBD,OAAOE,OAAO;QAC5DrB;QACAsB,0BAA0BrB,+BAA+BkB,OAAOI,OAAO;QACvEC,8BAA8BrB,mCAAmCgB,OAAOI,OAAO;QAC/ElB;QACAC,oCAAoC,OAClCc,iBACG,MAAMd,mCAAmCc,gBAAgBD,OAAOE,OAAO;QAC5Ed;QACAR;QACA0B,6BAA6BvB,kCAAkC;YAC7DwB,OAAOP,OAAOO,KAAK;YACnBC,cAAcR,OAAOQ,YAAY;YACjCC,UAAUT,OAAOS,QAAQ;QAC3B;QACAnB;QACAE;QACAM;QACAP;QACAG,yCAAyC,OACvCO,iBACG,MAAMP,wCAAwCO,gBAAgBD,OAAOE,OAAO;QACjFT;QACAiB,sBAAsBzB,2BAA2Be,OAAOI,OAAO;IACjE;AACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AgentInterModuleClient } from '@shipfox/api-agent-dto/inter-module';
|
|
2
|
-
import type { IntegrationsModuleClient } from '@shipfox/api-integration-core-dto';
|
|
3
|
-
import type { ProjectsModuleClient } from '@shipfox/api-projects-dto';
|
|
2
|
+
import type { IntegrationsModuleClient } from '@shipfox/api-integration-core-dto/inter-module';
|
|
3
|
+
import type { ProjectsModuleClient } from '@shipfox/api-projects-dto/inter-module';
|
|
4
4
|
import { type RunnersInterModuleClient } from '@shipfox/api-runners-dto/inter-module';
|
|
5
5
|
import type { SecretsInterModuleClient } from '@shipfox/api-secrets-dto/inter-module';
|
|
6
6
|
import type { JobStatus, JobStatusReason, ResolutionReason } from '#core/entities/job.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestration-activities.d.ts","sourceRoot":"","sources":["../../../src/temporal/activities/orchestration-activities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,qCAAqC,CAAC;AAChF,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"orchestration-activities.d.ts","sourceRoot":"","sources":["../../../src/temporal/activities/orchestration-activities.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/temporal/activities/orchestration-activities.ts"],"sourcesContent":["import type {AgentInterModuleClient} from '@shipfox/api-agent-dto/inter-module';\nimport type {IntegrationsModuleClient} from '@shipfox/api-integration-core-dto';\nimport type {ProjectsModuleClient} from '@shipfox/api-projects-dto';\nimport {\n type RunnersInterModuleClient,\n runnersInterModuleContract,\n} from '@shipfox/api-runners-dto/inter-module';\nimport type {SecretsInterModuleClient} from '@shipfox/api-secrets-dto/inter-module';\nimport {isInterModuleKnownError} from '@shipfox/inter-module';\nimport {ApplicationFailure} from '@temporalio/common';\nimport {defaultJobConditionTrace} from '#core/condition-trace.js';\nimport type {JobStatus, JobStatusReason, ResolutionReason} from '#core/entities/job.js';\nimport type {PersistedEvaluationTraceEntry, StepStatus} from '#core/entities/step.js';\nimport type {WorkflowRunStatus} from '#core/entities/workflow-run.js';\nimport {JobNotFoundError} from '#core/errors.js';\nimport type {\n RuntimeCompletionStatus,\n RuntimeDagNode,\n} from '#core/workflow-scheduling/runtime-dag.js';\nimport {\n activateJobListener,\n bulkUpdateStepStatuses,\n drainListenerEventsIntoExecution,\n type EvaluateJobActivationsParams,\n evaluateJobActivations,\n failJobExecutionAsTimedOut,\n failWorkflowRunAsTimedOut,\n getJobExecutionsByWorkflowRunAttemptId,\n getJobsByWorkflowRunAttemptId,\n getWorkflowRunAttemptById,\n getWorkflowRunByAttemptId,\n type JobActivationDecision,\n peekListenerBuffer,\n resolveJobExecutionAfterLeaseExpiry,\n resolveJobListener,\n resolveJobStatusFromJobExecutions,\n settleListenerJobExecution,\n updateJobExecutionStatus,\n updateJobStatus,\n updateWorkflowRunStatus,\n} from '#db/index.js';\nimport {recordWorkflowListenerExecution} from '#metrics/instance.js';\n\nexport interface DagJob extends RuntimeDagNode {\n id: string;\n key: string;\n mode: 'one_shot' | 'listening';\n status: JobStatus;\n jobExecutionId?: string | undefined;\n executionVersion?: number;\n executionTimeoutMs?: number | null | undefined;\n listeningTimeoutMs?: number | null | undefined;\n maxExecutions?: number | null | undefined;\n onResolve?: 'finish' | 'cancel' | null | undefined;\n batchDebounceMs?: number | null | undefined;\n batchMaxSize?: number | null | undefined;\n batchMaxWaitMs?: number | null | undefined;\n dependencies: string[];\n runner: string[];\n version: number;\n}\n\nexport interface RunDag {\n workflowRunId: string;\n runAttemptId: string;\n workspaceId: string;\n projectId: string;\n runVersion: number;\n runTimeoutMs: number;\n jobs: DagJob[];\n}\n\nexport async function loadRunAttemptDag(runAttemptId: string): Promise<RunDag> {\n const run = await getWorkflowRunByAttemptId(runAttemptId);\n if (!run) throw new Error(`Run not found for attempt: ${runAttemptId}`);\n const attempt = await getWorkflowRunAttemptById(runAttemptId);\n if (!attempt) throw new Error(`Run attempt not found: ${runAttemptId}`);\n\n const jobs = await getJobsByWorkflowRunAttemptId(runAttemptId);\n const jobExecutions = await getJobExecutionsByWorkflowRunAttemptId(runAttemptId);\n const firstJobExecutions = new Map<string, (typeof jobExecutions)[number]>();\n for (const jobExecution of jobExecutions) {\n if (!firstJobExecutions.has(jobExecution.jobId)) {\n firstJobExecutions.set(jobExecution.jobId, jobExecution);\n }\n }\n\n return {\n workflowRunId: run.id,\n runAttemptId,\n workspaceId: run.workspaceId,\n projectId: run.projectId,\n runVersion: attempt.version,\n runTimeoutMs: run.timeoutMs,\n jobs: jobs.flatMap((job) => {\n const jobExecution = firstJobExecutions.get(job.id);\n const modelJob = attempt.model?.jobs.find((item) => item.key === job.key);\n if (!jobExecution && job.mode !== 'listening') return [];\n return [\n {\n id: job.id,\n key: job.key,\n mode: job.mode,\n status: job.status,\n ...(jobExecution === undefined\n ? {}\n : {jobExecutionId: jobExecution.id, executionVersion: jobExecution.version}),\n executionTimeoutMs: job.executionTimeoutMs,\n listeningTimeoutMs: job.listeningTimeoutMs,\n maxExecutions: job.maxExecutions,\n onResolve: job.onResolve,\n batchDebounceMs: job.batchDebounceMs,\n batchMaxSize: job.batchMaxSize,\n batchMaxWaitMs: job.batchMaxWaitMs,\n dependencies: job.dependencies,\n hasActivationCondition: modelJob?.if !== undefined,\n runner: jobExecution?.runner ?? job.runner ?? [],\n version: job.version,\n },\n ];\n }),\n };\n}\n\nexport async function evaluateJobActivationsActivity(\n params: EvaluateJobActivationsParams,\n): Promise<JobActivationDecision[]> {\n return await evaluateJobActivations(params);\n}\n\nexport async function setRunAttemptStatus(params: {\n runAttemptId: string;\n status: WorkflowRunStatus;\n version: number;\n}): Promise<{newVersion: number; status: WorkflowRunStatus}> {\n const updated = await updateWorkflowRunStatus({\n workflowRunAttemptId: params.runAttemptId,\n status: params.status,\n expectedVersion: params.version,\n });\n return {newVersion: updated.version, status: updated.status};\n}\n\nexport async function setJobStatus(params: {\n jobId: string;\n status: JobStatus;\n version: number;\n statusReason?: JobStatusReason | null | undefined;\n evaluationTrace?: readonly PersistedEvaluationTraceEntry[] | null | undefined;\n}): Promise<{newVersion: number; status: JobStatus}> {\n const updated = await updateJobStatus({\n jobId: params.jobId,\n status: params.status,\n expectedVersion: params.version,\n statusReason: params.statusReason,\n evaluationTrace: jobStatusEvaluationTrace(params),\n });\n return {newVersion: updated.version, status: updated.status};\n}\n\nfunction jobStatusEvaluationTrace(params: {\n status: JobStatus;\n statusReason?: JobStatusReason | null | undefined;\n evaluationTrace?: readonly PersistedEvaluationTraceEntry[] | null | undefined;\n}): readonly PersistedEvaluationTraceEntry[] | null | undefined {\n if (params.evaluationTrace !== undefined) return params.evaluationTrace;\n return params.status === 'skipped' && params.statusReason === 'default_gate_rejected'\n ? defaultJobConditionTrace()\n : undefined;\n}\n\nexport async function setJobExecutionStatus(\n params: {\n jobExecutionId: string;\n status: Exclude<JobStatus, 'skipped'>;\n version: number;\n statusReason?: JobStatusReason | null | undefined;\n },\n secrets?: Pick<SecretsInterModuleClient, 'getVariablesByNamespace'>,\n): Promise<{newVersion: number; status: Exclude<JobStatus, 'skipped'>}> {\n const updated = await updateJobExecutionStatus({\n jobExecutionId: params.jobExecutionId,\n status: params.status,\n expectedVersion: params.version,\n statusReason: params.statusReason,\n secrets,\n });\n return {newVersion: updated.version, status: updated.status};\n}\n\nexport async function bulkSetStepStatuses(params: {\n jobExecutionId: string;\n status: Extract<StepStatus, 'failed' | 'cancelled'>;\n}): Promise<void> {\n await bulkUpdateStepStatuses(params);\n}\n\nexport async function resolveLeaseExpiredJobExecutionActivity(\n params: {jobExecutionId: string; expectedVersion: number},\n secrets: Pick<SecretsInterModuleClient, 'getVariablesByNamespace'>,\n): Promise<{status: RuntimeCompletionStatus; executionVersion: number}> {\n try {\n return await resolveJobExecutionAfterLeaseExpiry({...params, secrets});\n } catch (err) {\n if (err instanceof JobNotFoundError) {\n throw ApplicationFailure.nonRetryable(err.message, err.name);\n }\n throw err;\n }\n}\n\n// Best-effort lease cleanup on job finalization. Idempotent: deleting an\n// already-released (or already-reaped) lease is a no-op. The workflow wraps the\n// call so a persistent failure never blocks the DAG result.\nexport function createReleaseLeaseActivity(runners: RunnersInterModuleClient) {\n return async function releaseLeaseActivity(params: {jobExecutionId: string}): Promise<void> {\n await runners.releaseJobExecution({jobExecutionId: params.jobExecutionId});\n };\n}\n\nexport function createEnqueueJobExecutionForRunner(runners: RunnersInterModuleClient) {\n return async function enqueueJobExecutionForRunner(params: {\n workspaceId: string;\n workflowRunId: string;\n jobId: string;\n jobExecutionId: string;\n runAttemptId: string;\n projectId: string;\n requiredLabels: string[];\n }): Promise<void> {\n try {\n await runners.enqueueJobExecution({\n workspaceId: params.workspaceId,\n workflowRunId: params.workflowRunId,\n workflowRunAttemptId: params.runAttemptId,\n jobId: params.jobId,\n jobExecutionId: params.jobExecutionId,\n projectId: params.projectId,\n requiredLabels: params.requiredLabels,\n });\n } catch (err) {\n if (isInterModuleKnownError(runnersInterModuleContract.methods.enqueueJobExecution, err)) {\n throw ApplicationFailure.nonRetryable(err.message, err.name);\n }\n throw err;\n }\n };\n}\n\nexport function createCancelRunnerJobsActivity(runners: RunnersInterModuleClient) {\n return async function cancelRunnerJobsActivity(params: {jobIds: string[]}): Promise<void> {\n await runners.cancelJobs(params);\n };\n}\n\nexport async function failJobExecutionAsTimedOutActivity(\n params: {jobExecutionId: string; runAttemptId: string; expectedVersion: number},\n secrets: Pick<SecretsInterModuleClient, 'getVariablesByNamespace'>,\n): Promise<{newVersion: number}> {\n const jobExecution = await failJobExecutionAsTimedOut({\n jobExecutionId: params.jobExecutionId,\n workflowRunAttemptId: params.runAttemptId,\n expectedVersion: params.expectedVersion,\n secrets,\n });\n return {newVersion: jobExecution.version};\n}\n\nexport async function failRunAsTimedOutActivity(params: {runAttemptId: string}): Promise<void> {\n await failWorkflowRunAsTimedOut({runAttemptId: params.runAttemptId});\n}\n\nexport async function resolveJobStatusFromJobExecutionsActivity(params: {\n jobId: string;\n}): Promise<{status: RuntimeCompletionStatus; jobVersion: number}> {\n return await resolveJobStatusFromJobExecutions(params);\n}\n\nexport async function activateJobListenerActivity(params: {\n jobId: string;\n expectedVersion: number;\n}) {\n return await activateJobListener(params);\n}\n\nexport function createDrainListenerEventsActivity(clients: {\n agent: AgentInterModuleClient;\n integrations?: IntegrationsModuleClient | undefined;\n projects?: ProjectsModuleClient | undefined;\n}) {\n return async function drainListenerEventsActivity(params: {\n jobId: string;\n expectedSequence: number;\n maxSize?: number | undefined;\n }) {\n return await drainListenerEventsIntoExecution({...params, ...clients});\n };\n}\n\nexport async function peekListenerBufferActivity(params: {jobId: string}) {\n return await peekListenerBuffer(params);\n}\n\nexport async function resolveJobListenerActivity(params: {\n jobId: string;\n reason: ResolutionReason;\n}) {\n return await resolveJobListener(params);\n}\n\nexport async function settleListenerJobExecutionActivity(params: {\n jobExecutionId: string;\n status: 'failed' | 'cancelled';\n}) {\n await settleListenerJobExecution(params);\n}\n\n// The listener workflow owns every firing's terminal outcome, but a workflow\n// sandbox cannot emit metrics. This activity is the single recording point so\n// each firing is counted exactly once, including successes that settle through\n// the child's own resolution path rather than a listener DB write. The body is\n// synchronous; it returns a resolved promise because Temporal invokes activities\n// asynchronously.\nexport function recordListenerFiringOutcomeActivity(params: {\n outcome: 'succeeded' | 'failed' | 'cancelled';\n}): Promise<void> {\n recordWorkflowListenerExecution(params.outcome);\n return Promise.resolve();\n}\n"],"names":["runnersInterModuleContract","isInterModuleKnownError","ApplicationFailure","defaultJobConditionTrace","JobNotFoundError","activateJobListener","bulkUpdateStepStatuses","drainListenerEventsIntoExecution","evaluateJobActivations","failJobExecutionAsTimedOut","failWorkflowRunAsTimedOut","getJobExecutionsByWorkflowRunAttemptId","getJobsByWorkflowRunAttemptId","getWorkflowRunAttemptById","getWorkflowRunByAttemptId","peekListenerBuffer","resolveJobExecutionAfterLeaseExpiry","resolveJobListener","resolveJobStatusFromJobExecutions","settleListenerJobExecution","updateJobExecutionStatus","updateJobStatus","updateWorkflowRunStatus","recordWorkflowListenerExecution","loadRunAttemptDag","runAttemptId","run","Error","attempt","jobs","jobExecutions","firstJobExecutions","Map","jobExecution","has","jobId","set","workflowRunId","id","workspaceId","projectId","runVersion","version","runTimeoutMs","timeoutMs","flatMap","job","get","modelJob","model","find","item","key","mode","status","undefined","jobExecutionId","executionVersion","executionTimeoutMs","listeningTimeoutMs","maxExecutions","onResolve","batchDebounceMs","batchMaxSize","batchMaxWaitMs","dependencies","hasActivationCondition","if","runner","evaluateJobActivationsActivity","params","setRunAttemptStatus","updated","workflowRunAttemptId","expectedVersion","newVersion","setJobStatus","statusReason","evaluationTrace","jobStatusEvaluationTrace","setJobExecutionStatus","secrets","bulkSetStepStatuses","resolveLeaseExpiredJobExecutionActivity","err","nonRetryable","message","name","createReleaseLeaseActivity","runners","releaseLeaseActivity","releaseJobExecution","createEnqueueJobExecutionForRunner","enqueueJobExecutionForRunner","enqueueJobExecution","requiredLabels","methods","createCancelRunnerJobsActivity","cancelRunnerJobsActivity","cancelJobs","failJobExecutionAsTimedOutActivity","failRunAsTimedOutActivity","resolveJobStatusFromJobExecutionsActivity","activateJobListenerActivity","createDrainListenerEventsActivity","clients","drainListenerEventsActivity","peekListenerBufferActivity","resolveJobListenerActivity","settleListenerJobExecutionActivity","recordListenerFiringOutcomeActivity","outcome","Promise","resolve"],"mappings":"AAGA,SAEEA,0BAA0B,QACrB,wCAAwC;AAE/C,SAAQC,uBAAuB,QAAO,wBAAwB;AAC9D,SAAQC,kBAAkB,QAAO,qBAAqB;AACtD,SAAQC,wBAAwB,QAAO,2BAA2B;AAIlE,SAAQC,gBAAgB,QAAO,kBAAkB;AAKjD,SACEC,mBAAmB,EACnBC,sBAAsB,EACtBC,gCAAgC,EAEhCC,sBAAsB,EACtBC,0BAA0B,EAC1BC,yBAAyB,EACzBC,sCAAsC,EACtCC,6BAA6B,EAC7BC,yBAAyB,EACzBC,yBAAyB,EAEzBC,kBAAkB,EAClBC,mCAAmC,EACnCC,kBAAkB,EAClBC,iCAAiC,EACjCC,0BAA0B,EAC1BC,wBAAwB,EACxBC,eAAe,EACfC,uBAAuB,QAClB,eAAe;AACtB,SAAQC,+BAA+B,QAAO,uBAAuB;AA+BrE,OAAO,eAAeC,kBAAkBC,YAAoB;IAC1D,MAAMC,MAAM,MAAMZ,0BAA0BW;IAC5C,IAAI,CAACC,KAAK,MAAM,IAAIC,MAAM,CAAC,2BAA2B,EAAEF,cAAc;IACtE,MAAMG,UAAU,MAAMf,0BAA0BY;IAChD,IAAI,CAACG,SAAS,MAAM,IAAID,MAAM,CAAC,uBAAuB,EAAEF,cAAc;IAEtE,MAAMI,OAAO,MAAMjB,8BAA8Ba;IACjD,MAAMK,gBAAgB,MAAMnB,uCAAuCc;IACnE,MAAMM,qBAAqB,IAAIC;IAC/B,KAAK,MAAMC,gBAAgBH,cAAe;QACxC,IAAI,CAACC,mBAAmBG,GAAG,CAACD,aAAaE,KAAK,GAAG;YAC/CJ,mBAAmBK,GAAG,CAACH,aAAaE,KAAK,EAAEF;QAC7C;IACF;IAEA,OAAO;QACLI,eAAeX,IAAIY,EAAE;QACrBb;QACAc,aAAab,IAAIa,WAAW;QAC5BC,WAAWd,IAAIc,SAAS;QACxBC,YAAYb,QAAQc,OAAO;QAC3BC,cAAcjB,IAAIkB,SAAS;QAC3Bf,MAAMA,KAAKgB,OAAO,CAAC,CAACC;YAClB,MAAMb,eAAeF,mBAAmBgB,GAAG,CAACD,IAAIR,EAAE;YAClD,MAAMU,WAAWpB,QAAQqB,KAAK,EAAEpB,KAAKqB,KAAK,CAACC,OAASA,KAAKC,GAAG,KAAKN,IAAIM,GAAG;YACxE,IAAI,CAACnB,gBAAgBa,IAAIO,IAAI,KAAK,aAAa,OAAO,EAAE;YACxD,OAAO;gBACL;oBACEf,IAAIQ,IAAIR,EAAE;oBACVc,KAAKN,IAAIM,GAAG;oBACZC,MAAMP,IAAIO,IAAI;oBACdC,QAAQR,IAAIQ,MAAM;oBAClB,GAAIrB,iBAAiBsB,YACjB,CAAC,IACD;wBAACC,gBAAgBvB,aAAaK,EAAE;wBAAEmB,kBAAkBxB,aAAaS,OAAO;oBAAA,CAAC;oBAC7EgB,oBAAoBZ,IAAIY,kBAAkB;oBAC1CC,oBAAoBb,IAAIa,kBAAkB;oBAC1CC,eAAed,IAAIc,aAAa;oBAChCC,WAAWf,IAAIe,SAAS;oBACxBC,iBAAiBhB,IAAIgB,eAAe;oBACpCC,cAAcjB,IAAIiB,YAAY;oBAC9BC,gBAAgBlB,IAAIkB,cAAc;oBAClCC,cAAcnB,IAAImB,YAAY;oBAC9BC,wBAAwBlB,UAAUmB,OAAOZ;oBACzCa,QAAQnC,cAAcmC,UAAUtB,IAAIsB,MAAM,IAAI,EAAE;oBAChD1B,SAASI,IAAIJ,OAAO;gBACtB;aACD;QACH;IACF;AACF;AAEA,OAAO,eAAe2B,+BACpBC,MAAoC;IAEpC,OAAO,MAAM9D,uBAAuB8D;AACtC;AAEA,OAAO,eAAeC,oBAAoBD,MAIzC;IACC,MAAME,UAAU,MAAMlD,wBAAwB;QAC5CmD,sBAAsBH,OAAO7C,YAAY;QACzC6B,QAAQgB,OAAOhB,MAAM;QACrBoB,iBAAiBJ,OAAO5B,OAAO;IACjC;IACA,OAAO;QAACiC,YAAYH,QAAQ9B,OAAO;QAAEY,QAAQkB,QAAQlB,MAAM;IAAA;AAC7D;AAEA,OAAO,eAAesB,aAAaN,MAMlC;IACC,MAAME,UAAU,MAAMnD,gBAAgB;QACpCc,OAAOmC,OAAOnC,KAAK;QACnBmB,QAAQgB,OAAOhB,MAAM;QACrBoB,iBAAiBJ,OAAO5B,OAAO;QAC/BmC,cAAcP,OAAOO,YAAY;QACjCC,iBAAiBC,yBAAyBT;IAC5C;IACA,OAAO;QAACK,YAAYH,QAAQ9B,OAAO;QAAEY,QAAQkB,QAAQlB,MAAM;IAAA;AAC7D;AAEA,SAASyB,yBAAyBT,MAIjC;IACC,IAAIA,OAAOQ,eAAe,KAAKvB,WAAW,OAAOe,OAAOQ,eAAe;IACvE,OAAOR,OAAOhB,MAAM,KAAK,aAAagB,OAAOO,YAAY,KAAK,0BAC1D1E,6BACAoD;AACN;AAEA,OAAO,eAAeyB,sBACpBV,MAKC,EACDW,OAAmE;IAEnE,MAAMT,UAAU,MAAMpD,yBAAyB;QAC7CoC,gBAAgBc,OAAOd,cAAc;QACrCF,QAAQgB,OAAOhB,MAAM;QACrBoB,iBAAiBJ,OAAO5B,OAAO;QAC/BmC,cAAcP,OAAOO,YAAY;QACjCI;IACF;IACA,OAAO;QAACN,YAAYH,QAAQ9B,OAAO;QAAEY,QAAQkB,QAAQlB,MAAM;IAAA;AAC7D;AAEA,OAAO,eAAe4B,oBAAoBZ,MAGzC;IACC,MAAMhE,uBAAuBgE;AAC/B;AAEA,OAAO,eAAea,wCACpBb,MAAyD,EACzDW,OAAkE;IAElE,IAAI;QACF,OAAO,MAAMjE,oCAAoC;YAAC,GAAGsD,MAAM;YAAEW;QAAO;IACtE,EAAE,OAAOG,KAAK;QACZ,IAAIA,eAAehF,kBAAkB;YACnC,MAAMF,mBAAmBmF,YAAY,CAACD,IAAIE,OAAO,EAAEF,IAAIG,IAAI;QAC7D;QACA,MAAMH;IACR;AACF;AAEA,yEAAyE;AACzE,gFAAgF;AAChF,4DAA4D;AAC5D,OAAO,SAASI,2BAA2BC,OAAiC;IAC1E,OAAO,eAAeC,qBAAqBpB,MAAgC;QACzE,MAAMmB,QAAQE,mBAAmB,CAAC;YAACnC,gBAAgBc,OAAOd,cAAc;QAAA;IAC1E;AACF;AAEA,OAAO,SAASoC,mCAAmCH,OAAiC;IAClF,OAAO,eAAeI,6BAA6BvB,MAQlD;QACC,IAAI;YACF,MAAMmB,QAAQK,mBAAmB,CAAC;gBAChCvD,aAAa+B,OAAO/B,WAAW;gBAC/BF,eAAeiC,OAAOjC,aAAa;gBACnCoC,sBAAsBH,OAAO7C,YAAY;gBACzCU,OAAOmC,OAAOnC,KAAK;gBACnBqB,gBAAgBc,OAAOd,cAAc;gBACrChB,WAAW8B,OAAO9B,SAAS;gBAC3BuD,gBAAgBzB,OAAOyB,cAAc;YACvC;QACF,EAAE,OAAOX,KAAK;YACZ,IAAInF,wBAAwBD,2BAA2BgG,OAAO,CAACF,mBAAmB,EAAEV,MAAM;gBACxF,MAAMlF,mBAAmBmF,YAAY,CAACD,IAAIE,OAAO,EAAEF,IAAIG,IAAI;YAC7D;YACA,MAAMH;QACR;IACF;AACF;AAEA,OAAO,SAASa,+BAA+BR,OAAiC;IAC9E,OAAO,eAAeS,yBAAyB5B,MAA0B;QACvE,MAAMmB,QAAQU,UAAU,CAAC7B;IAC3B;AACF;AAEA,OAAO,eAAe8B,mCACpB9B,MAA+E,EAC/EW,OAAkE;IAElE,MAAMhD,eAAe,MAAMxB,2BAA2B;QACpD+C,gBAAgBc,OAAOd,cAAc;QACrCiB,sBAAsBH,OAAO7C,YAAY;QACzCiD,iBAAiBJ,OAAOI,eAAe;QACvCO;IACF;IACA,OAAO;QAACN,YAAY1C,aAAaS,OAAO;IAAA;AAC1C;AAEA,OAAO,eAAe2D,0BAA0B/B,MAA8B;IAC5E,MAAM5D,0BAA0B;QAACe,cAAc6C,OAAO7C,YAAY;IAAA;AACpE;AAEA,OAAO,eAAe6E,0CAA0ChC,MAE/D;IACC,OAAO,MAAMpD,kCAAkCoD;AACjD;AAEA,OAAO,eAAeiC,4BAA4BjC,MAGjD;IACC,OAAO,MAAMjE,oBAAoBiE;AACnC;AAEA,OAAO,SAASkC,kCAAkCC,OAIjD;IACC,OAAO,eAAeC,4BAA4BpC,MAIjD;QACC,OAAO,MAAM/D,iCAAiC;YAAC,GAAG+D,MAAM;YAAE,GAAGmC,OAAO;QAAA;IACtE;AACF;AAEA,OAAO,eAAeE,2BAA2BrC,MAAuB;IACtE,OAAO,MAAMvD,mBAAmBuD;AAClC;AAEA,OAAO,eAAesC,2BAA2BtC,MAGhD;IACC,OAAO,MAAMrD,mBAAmBqD;AAClC;AAEA,OAAO,eAAeuC,mCAAmCvC,MAGxD;IACC,MAAMnD,2BAA2BmD;AACnC;AAEA,6EAA6E;AAC7E,8EAA8E;AAC9E,+EAA+E;AAC/E,+EAA+E;AAC/E,iFAAiF;AACjF,kBAAkB;AAClB,OAAO,SAASwC,oCAAoCxC,MAEnD;IACC/C,gCAAgC+C,OAAOyC,OAAO;IAC9C,OAAOC,QAAQC,OAAO;AACxB"}
|
|
1
|
+
{"version":3,"sources":["../../../src/temporal/activities/orchestration-activities.ts"],"sourcesContent":["import type {AgentInterModuleClient} from '@shipfox/api-agent-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 type RunnersInterModuleClient,\n runnersInterModuleContract,\n} from '@shipfox/api-runners-dto/inter-module';\nimport type {SecretsInterModuleClient} from '@shipfox/api-secrets-dto/inter-module';\nimport {isInterModuleKnownError} from '@shipfox/inter-module';\nimport {ApplicationFailure} from '@temporalio/common';\nimport {defaultJobConditionTrace} from '#core/condition-trace.js';\nimport type {JobStatus, JobStatusReason, ResolutionReason} from '#core/entities/job.js';\nimport type {PersistedEvaluationTraceEntry, StepStatus} from '#core/entities/step.js';\nimport type {WorkflowRunStatus} from '#core/entities/workflow-run.js';\nimport {JobNotFoundError} from '#core/errors.js';\nimport type {\n RuntimeCompletionStatus,\n RuntimeDagNode,\n} from '#core/workflow-scheduling/runtime-dag.js';\nimport {\n activateJobListener,\n bulkUpdateStepStatuses,\n drainListenerEventsIntoExecution,\n type EvaluateJobActivationsParams,\n evaluateJobActivations,\n failJobExecutionAsTimedOut,\n failWorkflowRunAsTimedOut,\n getJobExecutionsByWorkflowRunAttemptId,\n getJobsByWorkflowRunAttemptId,\n getWorkflowRunAttemptById,\n getWorkflowRunByAttemptId,\n type JobActivationDecision,\n peekListenerBuffer,\n resolveJobExecutionAfterLeaseExpiry,\n resolveJobListener,\n resolveJobStatusFromJobExecutions,\n settleListenerJobExecution,\n updateJobExecutionStatus,\n updateJobStatus,\n updateWorkflowRunStatus,\n} from '#db/index.js';\nimport {recordWorkflowListenerExecution} from '#metrics/instance.js';\n\nexport interface DagJob extends RuntimeDagNode {\n id: string;\n key: string;\n mode: 'one_shot' | 'listening';\n status: JobStatus;\n jobExecutionId?: string | undefined;\n executionVersion?: number;\n executionTimeoutMs?: number | null | undefined;\n listeningTimeoutMs?: number | null | undefined;\n maxExecutions?: number | null | undefined;\n onResolve?: 'finish' | 'cancel' | null | undefined;\n batchDebounceMs?: number | null | undefined;\n batchMaxSize?: number | null | undefined;\n batchMaxWaitMs?: number | null | undefined;\n dependencies: string[];\n runner: string[];\n version: number;\n}\n\nexport interface RunDag {\n workflowRunId: string;\n runAttemptId: string;\n workspaceId: string;\n projectId: string;\n runVersion: number;\n runTimeoutMs: number;\n jobs: DagJob[];\n}\n\nexport async function loadRunAttemptDag(runAttemptId: string): Promise<RunDag> {\n const run = await getWorkflowRunByAttemptId(runAttemptId);\n if (!run) throw new Error(`Run not found for attempt: ${runAttemptId}`);\n const attempt = await getWorkflowRunAttemptById(runAttemptId);\n if (!attempt) throw new Error(`Run attempt not found: ${runAttemptId}`);\n\n const jobs = await getJobsByWorkflowRunAttemptId(runAttemptId);\n const jobExecutions = await getJobExecutionsByWorkflowRunAttemptId(runAttemptId);\n const firstJobExecutions = new Map<string, (typeof jobExecutions)[number]>();\n for (const jobExecution of jobExecutions) {\n if (!firstJobExecutions.has(jobExecution.jobId)) {\n firstJobExecutions.set(jobExecution.jobId, jobExecution);\n }\n }\n\n return {\n workflowRunId: run.id,\n runAttemptId,\n workspaceId: run.workspaceId,\n projectId: run.projectId,\n runVersion: attempt.version,\n runTimeoutMs: run.timeoutMs,\n jobs: jobs.flatMap((job) => {\n const jobExecution = firstJobExecutions.get(job.id);\n const modelJob = attempt.model?.jobs.find((item) => item.key === job.key);\n if (!jobExecution && job.mode !== 'listening') return [];\n return [\n {\n id: job.id,\n key: job.key,\n mode: job.mode,\n status: job.status,\n ...(jobExecution === undefined\n ? {}\n : {jobExecutionId: jobExecution.id, executionVersion: jobExecution.version}),\n executionTimeoutMs: job.executionTimeoutMs,\n listeningTimeoutMs: job.listeningTimeoutMs,\n maxExecutions: job.maxExecutions,\n onResolve: job.onResolve,\n batchDebounceMs: job.batchDebounceMs,\n batchMaxSize: job.batchMaxSize,\n batchMaxWaitMs: job.batchMaxWaitMs,\n dependencies: job.dependencies,\n hasActivationCondition: modelJob?.if !== undefined,\n runner: jobExecution?.runner ?? job.runner ?? [],\n version: job.version,\n },\n ];\n }),\n };\n}\n\nexport async function evaluateJobActivationsActivity(\n params: EvaluateJobActivationsParams,\n): Promise<JobActivationDecision[]> {\n return await evaluateJobActivations(params);\n}\n\nexport async function setRunAttemptStatus(params: {\n runAttemptId: string;\n status: WorkflowRunStatus;\n version: number;\n}): Promise<{newVersion: number; status: WorkflowRunStatus}> {\n const updated = await updateWorkflowRunStatus({\n workflowRunAttemptId: params.runAttemptId,\n status: params.status,\n expectedVersion: params.version,\n });\n return {newVersion: updated.version, status: updated.status};\n}\n\nexport async function setJobStatus(params: {\n jobId: string;\n status: JobStatus;\n version: number;\n statusReason?: JobStatusReason | null | undefined;\n evaluationTrace?: readonly PersistedEvaluationTraceEntry[] | null | undefined;\n}): Promise<{newVersion: number; status: JobStatus}> {\n const updated = await updateJobStatus({\n jobId: params.jobId,\n status: params.status,\n expectedVersion: params.version,\n statusReason: params.statusReason,\n evaluationTrace: jobStatusEvaluationTrace(params),\n });\n return {newVersion: updated.version, status: updated.status};\n}\n\nfunction jobStatusEvaluationTrace(params: {\n status: JobStatus;\n statusReason?: JobStatusReason | null | undefined;\n evaluationTrace?: readonly PersistedEvaluationTraceEntry[] | null | undefined;\n}): readonly PersistedEvaluationTraceEntry[] | null | undefined {\n if (params.evaluationTrace !== undefined) return params.evaluationTrace;\n return params.status === 'skipped' && params.statusReason === 'default_gate_rejected'\n ? defaultJobConditionTrace()\n : undefined;\n}\n\nexport async function setJobExecutionStatus(\n params: {\n jobExecutionId: string;\n status: Exclude<JobStatus, 'skipped'>;\n version: number;\n statusReason?: JobStatusReason | null | undefined;\n },\n secrets?: Pick<SecretsInterModuleClient, 'getVariablesByNamespace'>,\n): Promise<{newVersion: number; status: Exclude<JobStatus, 'skipped'>}> {\n const updated = await updateJobExecutionStatus({\n jobExecutionId: params.jobExecutionId,\n status: params.status,\n expectedVersion: params.version,\n statusReason: params.statusReason,\n secrets,\n });\n return {newVersion: updated.version, status: updated.status};\n}\n\nexport async function bulkSetStepStatuses(params: {\n jobExecutionId: string;\n status: Extract<StepStatus, 'failed' | 'cancelled'>;\n}): Promise<void> {\n await bulkUpdateStepStatuses(params);\n}\n\nexport async function resolveLeaseExpiredJobExecutionActivity(\n params: {jobExecutionId: string; expectedVersion: number},\n secrets: Pick<SecretsInterModuleClient, 'getVariablesByNamespace'>,\n): Promise<{status: RuntimeCompletionStatus; executionVersion: number}> {\n try {\n return await resolveJobExecutionAfterLeaseExpiry({...params, secrets});\n } catch (err) {\n if (err instanceof JobNotFoundError) {\n throw ApplicationFailure.nonRetryable(err.message, err.name);\n }\n throw err;\n }\n}\n\n// Best-effort lease cleanup on job finalization. Idempotent: deleting an\n// already-released (or already-reaped) lease is a no-op. The workflow wraps the\n// call so a persistent failure never blocks the DAG result.\nexport function createReleaseLeaseActivity(runners: RunnersInterModuleClient) {\n return async function releaseLeaseActivity(params: {jobExecutionId: string}): Promise<void> {\n await runners.releaseJobExecution({jobExecutionId: params.jobExecutionId});\n };\n}\n\nexport function createEnqueueJobExecutionForRunner(runners: RunnersInterModuleClient) {\n return async function enqueueJobExecutionForRunner(params: {\n workspaceId: string;\n workflowRunId: string;\n jobId: string;\n jobExecutionId: string;\n runAttemptId: string;\n projectId: string;\n requiredLabels: string[];\n }): Promise<void> {\n try {\n await runners.enqueueJobExecution({\n workspaceId: params.workspaceId,\n workflowRunId: params.workflowRunId,\n workflowRunAttemptId: params.runAttemptId,\n jobId: params.jobId,\n jobExecutionId: params.jobExecutionId,\n projectId: params.projectId,\n requiredLabels: params.requiredLabels,\n });\n } catch (err) {\n if (isInterModuleKnownError(runnersInterModuleContract.methods.enqueueJobExecution, err)) {\n throw ApplicationFailure.nonRetryable(err.message, err.name);\n }\n throw err;\n }\n };\n}\n\nexport function createCancelRunnerJobsActivity(runners: RunnersInterModuleClient) {\n return async function cancelRunnerJobsActivity(params: {jobIds: string[]}): Promise<void> {\n await runners.cancelJobs(params);\n };\n}\n\nexport async function failJobExecutionAsTimedOutActivity(\n params: {jobExecutionId: string; runAttemptId: string; expectedVersion: number},\n secrets: Pick<SecretsInterModuleClient, 'getVariablesByNamespace'>,\n): Promise<{newVersion: number}> {\n const jobExecution = await failJobExecutionAsTimedOut({\n jobExecutionId: params.jobExecutionId,\n workflowRunAttemptId: params.runAttemptId,\n expectedVersion: params.expectedVersion,\n secrets,\n });\n return {newVersion: jobExecution.version};\n}\n\nexport async function failRunAsTimedOutActivity(params: {runAttemptId: string}): Promise<void> {\n await failWorkflowRunAsTimedOut({runAttemptId: params.runAttemptId});\n}\n\nexport async function resolveJobStatusFromJobExecutionsActivity(params: {\n jobId: string;\n}): Promise<{status: RuntimeCompletionStatus; jobVersion: number}> {\n return await resolveJobStatusFromJobExecutions(params);\n}\n\nexport async function activateJobListenerActivity(params: {\n jobId: string;\n expectedVersion: number;\n}) {\n return await activateJobListener(params);\n}\n\nexport function createDrainListenerEventsActivity(clients: {\n agent: AgentInterModuleClient;\n integrations?: IntegrationsModuleClient | undefined;\n projects?: ProjectsModuleClient | undefined;\n}) {\n return async function drainListenerEventsActivity(params: {\n jobId: string;\n expectedSequence: number;\n maxSize?: number | undefined;\n }) {\n return await drainListenerEventsIntoExecution({...params, ...clients});\n };\n}\n\nexport async function peekListenerBufferActivity(params: {jobId: string}) {\n return await peekListenerBuffer(params);\n}\n\nexport async function resolveJobListenerActivity(params: {\n jobId: string;\n reason: ResolutionReason;\n}) {\n return await resolveJobListener(params);\n}\n\nexport async function settleListenerJobExecutionActivity(params: {\n jobExecutionId: string;\n status: 'failed' | 'cancelled';\n}) {\n await settleListenerJobExecution(params);\n}\n\n// The listener workflow owns every firing's terminal outcome, but a workflow\n// sandbox cannot emit metrics. This activity is the single recording point so\n// each firing is counted exactly once, including successes that settle through\n// the child's own resolution path rather than a listener DB write. The body is\n// synchronous; it returns a resolved promise because Temporal invokes activities\n// asynchronously.\nexport function recordListenerFiringOutcomeActivity(params: {\n outcome: 'succeeded' | 'failed' | 'cancelled';\n}): Promise<void> {\n recordWorkflowListenerExecution(params.outcome);\n return Promise.resolve();\n}\n"],"names":["runnersInterModuleContract","isInterModuleKnownError","ApplicationFailure","defaultJobConditionTrace","JobNotFoundError","activateJobListener","bulkUpdateStepStatuses","drainListenerEventsIntoExecution","evaluateJobActivations","failJobExecutionAsTimedOut","failWorkflowRunAsTimedOut","getJobExecutionsByWorkflowRunAttemptId","getJobsByWorkflowRunAttemptId","getWorkflowRunAttemptById","getWorkflowRunByAttemptId","peekListenerBuffer","resolveJobExecutionAfterLeaseExpiry","resolveJobListener","resolveJobStatusFromJobExecutions","settleListenerJobExecution","updateJobExecutionStatus","updateJobStatus","updateWorkflowRunStatus","recordWorkflowListenerExecution","loadRunAttemptDag","runAttemptId","run","Error","attempt","jobs","jobExecutions","firstJobExecutions","Map","jobExecution","has","jobId","set","workflowRunId","id","workspaceId","projectId","runVersion","version","runTimeoutMs","timeoutMs","flatMap","job","get","modelJob","model","find","item","key","mode","status","undefined","jobExecutionId","executionVersion","executionTimeoutMs","listeningTimeoutMs","maxExecutions","onResolve","batchDebounceMs","batchMaxSize","batchMaxWaitMs","dependencies","hasActivationCondition","if","runner","evaluateJobActivationsActivity","params","setRunAttemptStatus","updated","workflowRunAttemptId","expectedVersion","newVersion","setJobStatus","statusReason","evaluationTrace","jobStatusEvaluationTrace","setJobExecutionStatus","secrets","bulkSetStepStatuses","resolveLeaseExpiredJobExecutionActivity","err","nonRetryable","message","name","createReleaseLeaseActivity","runners","releaseLeaseActivity","releaseJobExecution","createEnqueueJobExecutionForRunner","enqueueJobExecutionForRunner","enqueueJobExecution","requiredLabels","methods","createCancelRunnerJobsActivity","cancelRunnerJobsActivity","cancelJobs","failJobExecutionAsTimedOutActivity","failRunAsTimedOutActivity","resolveJobStatusFromJobExecutionsActivity","activateJobListenerActivity","createDrainListenerEventsActivity","clients","drainListenerEventsActivity","peekListenerBufferActivity","resolveJobListenerActivity","settleListenerJobExecutionActivity","recordListenerFiringOutcomeActivity","outcome","Promise","resolve"],"mappings":"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"}
|