@shipfox/api-runners 5.0.0 → 7.0.1
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 +6 -6
- package/CHANGELOG.md +80 -0
- package/dist/config.d.ts +5 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +54 -7
- package/dist/config.js.map +1 -1
- package/dist/core/demand.d.ts +6 -6
- package/dist/core/demand.d.ts.map +1 -1
- package/dist/core/demand.js +10 -10
- package/dist/core/demand.js.map +1 -1
- package/dist/core/entities/ephemeral-registration-token.d.ts +1 -1
- package/dist/core/entities/ephemeral-registration-token.d.ts.map +1 -1
- package/dist/core/entities/ephemeral-registration-token.js.map +1 -1
- package/dist/core/entities/provisioner-capability-snapshot.d.ts +13 -0
- package/dist/core/entities/provisioner-capability-snapshot.d.ts.map +1 -0
- package/dist/core/entities/provisioner-capability-snapshot.js +3 -0
- package/dist/core/entities/provisioner-capability-snapshot.js.map +1 -0
- package/dist/core/entities/provisioner-token.d.ts +10 -2
- package/dist/core/entities/provisioner-token.d.ts.map +1 -1
- package/dist/core/entities/provisioner-token.js.map +1 -1
- package/dist/core/entities/{provisioned-runner.d.ts → runner-instance.d.ts} +7 -6
- package/dist/core/entities/runner-instance.d.ts.map +1 -0
- package/dist/core/entities/runner-instance.js +3 -0
- package/dist/core/entities/runner-instance.js.map +1 -0
- package/dist/core/entities/runner-session.d.ts +4 -2
- package/dist/core/entities/runner-session.d.ts.map +1 -1
- package/dist/core/entities/runner-session.js.map +1 -1
- package/dist/core/ephemeral-registration-tokens.d.ts +5 -5
- package/dist/core/ephemeral-registration-tokens.d.ts.map +1 -1
- package/dist/core/ephemeral-registration-tokens.js +12 -12
- package/dist/core/ephemeral-registration-tokens.js.map +1 -1
- package/dist/core/errors.d.ts +16 -4
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +22 -4
- package/dist/core/errors.js.map +1 -1
- package/dist/core/index.d.ts +9 -5
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +6 -3
- package/dist/core/index.js.map +1 -1
- package/dist/core/job-executions.d.ts +2 -0
- package/dist/core/job-executions.d.ts.map +1 -1
- package/dist/core/job-executions.js +1 -2
- package/dist/core/job-executions.js.map +1 -1
- package/dist/core/maintenance.d.ts +1 -1
- package/dist/core/maintenance.d.ts.map +1 -1
- package/dist/core/maintenance.js +5 -5
- package/dist/core/maintenance.js.map +1 -1
- package/dist/core/provisioner-capability-snapshots.d.ts +5 -0
- package/dist/core/provisioner-capability-snapshots.d.ts.map +1 -0
- package/dist/core/provisioner-capability-snapshots.js +10 -0
- package/dist/core/provisioner-capability-snapshots.js.map +1 -0
- package/dist/core/provisioner-tokens.d.ts +10 -0
- package/dist/core/provisioner-tokens.d.ts.map +1 -1
- package/dist/core/provisioner-tokens.js +23 -1
- package/dist/core/provisioner-tokens.js.map +1 -1
- package/dist/core/rate-limit.d.ts.map +1 -1
- package/dist/core/rate-limit.js +2 -7
- package/dist/core/rate-limit.js.map +1 -1
- package/dist/core/runner-activation.d.ts +13 -0
- package/dist/core/runner-activation.d.ts.map +1 -0
- package/dist/core/runner-activation.js +36 -0
- package/dist/core/runner-activation.js.map +1 -0
- package/dist/core/runner-assignments.d.ts +6 -0
- package/dist/core/runner-assignments.d.ts.map +1 -0
- package/dist/core/runner-assignments.js +6 -0
- package/dist/core/runner-assignments.js.map +1 -0
- package/dist/core/runner-control-sessions.d.ts +46 -0
- package/dist/core/runner-control-sessions.d.ts.map +1 -0
- package/dist/core/runner-control-sessions.js +121 -0
- package/dist/core/runner-control-sessions.js.map +1 -0
- package/dist/core/runner-instances.d.ts +72 -0
- package/dist/core/runner-instances.d.ts.map +1 -0
- package/dist/core/runner-instances.js +165 -0
- package/dist/core/runner-instances.js.map +1 -0
- package/dist/core/runner-sessions.d.ts +8 -2
- package/dist/core/runner-sessions.d.ts.map +1 -1
- package/dist/core/runner-sessions.js +8 -5
- package/dist/core/runner-sessions.js.map +1 -1
- package/dist/db/db.d.ts +2698 -1054
- package/dist/db/db.d.ts.map +1 -1
- package/dist/db/db.js +9 -2
- package/dist/db/db.js.map +1 -1
- package/dist/db/ephemeral-registration-tokens.d.ts +2 -2
- package/dist/db/ephemeral-registration-tokens.d.ts.map +1 -1
- package/dist/db/ephemeral-registration-tokens.js +21 -21
- package/dist/db/ephemeral-registration-tokens.js.map +1 -1
- package/dist/db/index.d.ts +7 -4
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +5 -2
- package/dist/db/index.js.map +1 -1
- package/dist/db/job-executions.d.ts +6 -6
- package/dist/db/job-executions.d.ts.map +1 -1
- package/dist/db/job-executions.js +20 -19
- package/dist/db/job-executions.js.map +1 -1
- package/dist/db/provisioner-capability-snapshots.d.ts +21 -0
- package/dist/db/provisioner-capability-snapshots.d.ts.map +1 -0
- package/dist/db/provisioner-capability-snapshots.js +57 -0
- package/dist/db/provisioner-capability-snapshots.js.map +1 -0
- package/dist/db/provisioner-tokens.d.ts +7 -2
- package/dist/db/provisioner-tokens.d.ts.map +1 -1
- package/dist/db/provisioner-tokens.js +59 -10
- package/dist/db/provisioner-tokens.js.map +1 -1
- package/dist/db/reservations.d.ts +18 -0
- package/dist/db/reservations.d.ts.map +1 -1
- package/dist/db/reservations.js +88 -1
- package/dist/db/reservations.js.map +1 -1
- package/dist/db/runner-assignments.d.ts +7 -0
- package/dist/db/runner-assignments.d.ts.map +1 -0
- package/dist/db/runner-assignments.js +55 -0
- package/dist/db/runner-assignments.js.map +1 -0
- package/dist/db/runner-instances.d.ts +84 -0
- package/dist/db/runner-instances.d.ts.map +1 -0
- package/dist/db/runner-instances.js +497 -0
- package/dist/db/runner-instances.js.map +1 -0
- package/dist/db/runner-sessions.d.ts +5 -0
- package/dist/db/runner-sessions.d.ts.map +1 -1
- package/dist/db/runner-sessions.js +48 -2
- package/dist/db/runner-sessions.js.map +1 -1
- package/dist/db/schema/ephemeral-registration-tokens.d.ts +2 -2
- package/dist/db/schema/ephemeral-registration-tokens.js +3 -3
- package/dist/db/schema/ephemeral-registration-tokens.js.map +1 -1
- package/dist/db/schema/provisioner-capability-snapshots.d.ts +207 -0
- package/dist/db/schema/provisioner-capability-snapshots.d.ts.map +1 -0
- package/dist/db/schema/provisioner-capability-snapshots.js +38 -0
- package/dist/db/schema/provisioner-capability-snapshots.js.map +1 -0
- package/dist/db/schema/provisioner-tokens.d.ts +19 -1
- package/dist/db/schema/provisioner-tokens.d.ts.map +1 -1
- package/dist/db/schema/provisioner-tokens.js +29 -3
- package/dist/db/schema/provisioner-tokens.js.map +1 -1
- package/dist/db/schema/runner-activation-tokens.d.ts +161 -0
- package/dist/db/schema/runner-activation-tokens.d.ts.map +1 -0
- package/dist/db/schema/runner-activation-tokens.js +27 -0
- package/dist/db/schema/runner-activation-tokens.js.map +1 -0
- package/dist/db/schema/runner-control-sessions.d.ts +338 -0
- package/dist/db/schema/runner-control-sessions.d.ts.map +1 -0
- package/dist/db/schema/runner-control-sessions.js +52 -0
- package/dist/db/schema/runner-control-sessions.js.map +1 -0
- package/dist/db/schema/{provisioned-runners.d.ts → runner-instances.d.ts} +105 -34
- package/dist/db/schema/runner-instances.d.ts.map +1 -0
- package/dist/db/schema/{provisioned-runners.js → runner-instances.js} +23 -14
- package/dist/db/schema/runner-instances.js.map +1 -0
- package/dist/db/schema/runner-sessions.d.ts +39 -5
- package/dist/db/schema/runner-sessions.d.ts.map +1 -1
- package/dist/db/schema/runner-sessions.js +13 -6
- package/dist/db/schema/runner-sessions.js.map +1 -1
- package/dist/db/schema/running-job-executions.d.ts +2 -2
- package/dist/db/schema/running-job-executions.js +4 -4
- package/dist/db/schema/running-job-executions.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +45 -39
- package/dist/index.js.map +1 -1
- package/dist/installation-provisioning.d.ts +14 -0
- package/dist/installation-provisioning.d.ts.map +1 -0
- package/dist/installation-provisioning.js +7 -0
- package/dist/installation-provisioning.js.map +1 -0
- package/dist/metrics/index.d.ts +1 -1
- package/dist/metrics/index.d.ts.map +1 -1
- package/dist/metrics/index.js +1 -1
- package/dist/metrics/index.js.map +1 -1
- package/dist/metrics/instance.d.ts +11 -7
- package/dist/metrics/instance.d.ts.map +1 -1
- package/dist/metrics/instance.js +13 -7
- package/dist/metrics/instance.js.map +1 -1
- package/dist/presentation/auth/index.d.ts +1 -0
- package/dist/presentation/auth/index.d.ts.map +1 -1
- package/dist/presentation/auth/index.js +1 -0
- package/dist/presentation/auth/index.js.map +1 -1
- package/dist/presentation/auth/provisioner-token-auth.d.ts.map +1 -1
- package/dist/presentation/auth/provisioner-token-auth.js +5 -1
- package/dist/presentation/auth/provisioner-token-auth.js.map +1 -1
- package/dist/presentation/auth/runner-control-session-auth.d.ts +4 -0
- package/dist/presentation/auth/runner-control-session-auth.d.ts.map +1 -0
- package/dist/presentation/auth/runner-control-session-auth.js +29 -0
- package/dist/presentation/auth/runner-control-session-auth.js.map +1 -0
- package/dist/presentation/auth/runner-registration-token-auth.d.ts +5 -1
- package/dist/presentation/auth/runner-registration-token-auth.d.ts.map +1 -1
- package/dist/presentation/auth/runner-registration-token-auth.js +21 -1
- package/dist/presentation/auth/runner-registration-token-auth.js.map +1 -1
- package/dist/presentation/dto/index.d.ts +1 -2
- package/dist/presentation/dto/index.d.ts.map +1 -1
- package/dist/presentation/dto/index.js +1 -2
- package/dist/presentation/dto/index.js.map +1 -1
- package/dist/presentation/dto/poll-demand.d.ts.map +1 -1
- package/dist/presentation/dto/poll-demand.js +7 -1
- package/dist/presentation/dto/poll-demand.js.map +1 -1
- package/dist/presentation/dto/provisioner-token.d.ts +1 -0
- package/dist/presentation/dto/provisioner-token.d.ts.map +1 -1
- package/dist/presentation/dto/provisioner-token.js +5 -1
- package/dist/presentation/dto/provisioner-token.js.map +1 -1
- package/dist/presentation/dto/{provisioned-runners.d.ts → runner-instances.d.ts} +9 -9
- package/dist/presentation/dto/runner-instances.d.ts.map +1 -0
- package/dist/presentation/dto/{provisioned-runners.js → runner-instances.js} +6 -6
- package/dist/presentation/dto/runner-instances.js.map +1 -0
- package/dist/presentation/index.d.ts +2 -2
- package/dist/presentation/index.d.ts.map +1 -1
- package/dist/presentation/index.js +2 -2
- package/dist/presentation/index.js.map +1 -1
- package/dist/presentation/inter-module.d.ts +5 -0
- package/dist/presentation/inter-module.d.ts.map +1 -0
- package/dist/presentation/inter-module.js +43 -0
- package/dist/presentation/inter-module.js.map +1 -0
- package/dist/presentation/routes/assign-runner-instances.d.ts +2 -0
- package/dist/presentation/routes/assign-runner-instances.d.ts.map +1 -0
- package/dist/presentation/routes/assign-runner-instances.js +40 -0
- package/dist/presentation/routes/assign-runner-instances.js.map +1 -0
- package/dist/presentation/routes/get-provisioner-me.d.ts.map +1 -1
- package/dist/presentation/routes/get-provisioner-me.js +5 -1
- package/dist/presentation/routes/get-provisioner-me.js.map +1 -1
- package/dist/presentation/routes/heartbeat.d.ts +2 -1
- package/dist/presentation/routes/heartbeat.d.ts.map +1 -1
- package/dist/presentation/routes/heartbeat.js +60 -50
- package/dist/presentation/routes/heartbeat.js.map +1 -1
- package/dist/presentation/routes/index.d.ts +3 -1
- package/dist/presentation/routes/index.d.ts.map +1 -1
- package/dist/presentation/routes/index.js +80 -51
- package/dist/presentation/routes/index.js.map +1 -1
- package/dist/presentation/routes/poll-demand.d.ts +2 -0
- package/dist/presentation/routes/poll-demand.d.ts.map +1 -1
- package/dist/presentation/routes/poll-demand.js +86 -45
- package/dist/presentation/routes/poll-demand.js.map +1 -1
- package/dist/presentation/routes/reconcile-runner-instances.d.ts +2 -0
- package/dist/presentation/routes/reconcile-runner-instances.d.ts.map +1 -0
- package/dist/presentation/routes/reconcile-runner-instances.js +27 -0
- package/dist/presentation/routes/reconcile-runner-instances.js.map +1 -0
- package/dist/presentation/routes/register.d.ts +2 -1
- package/dist/presentation/routes/register.d.ts.map +1 -1
- package/dist/presentation/routes/register.js +55 -52
- package/dist/presentation/routes/register.js.map +1 -1
- package/dist/presentation/routes/report-runner-instances.d.ts +2 -0
- package/dist/presentation/routes/report-runner-instances.d.ts.map +1 -0
- package/dist/presentation/routes/report-runner-instances.js +37 -0
- package/dist/presentation/routes/report-runner-instances.js.map +1 -0
- package/dist/presentation/routes/request-job.d.ts +2 -1
- package/dist/presentation/routes/request-job.d.ts.map +1 -1
- package/dist/presentation/routes/request-job.js +39 -36
- package/dist/presentation/routes/request-job.js.map +1 -1
- package/dist/presentation/routes/runner-enrollment.d.ts +8 -0
- package/dist/presentation/routes/runner-enrollment.d.ts.map +1 -0
- package/dist/presentation/routes/runner-enrollment.js +212 -0
- package/dist/presentation/routes/runner-enrollment.js.map +1 -0
- 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 +2 -2
- package/dist/temporal/activities/index.js.map +1 -1
- package/dist/temporal/activities/maintenance-activities.d.ts +1 -1
- package/dist/temporal/activities/maintenance-activities.d.ts.map +1 -1
- package/dist/temporal/activities/maintenance-activities.js +3 -3
- package/dist/temporal/activities/maintenance-activities.js.map +1 -1
- package/dist/temporal/workflows/index.bundle.js +3 -3
- package/dist/temporal/workflows/stuck-job-detector.js +2 -2
- package/dist/temporal/workflows/stuck-job-detector.js.map +1 -1
- package/dist/tsconfig.test.tsbuildinfo +1 -1
- package/drizzle/0000_initial.sql +91 -24
- package/drizzle/meta/0000_snapshot.json +392 -63
- package/package.json +21 -16
- package/src/config.test.ts +0 -26
- package/src/config.ts +48 -7
- package/src/core/demand.test.ts +29 -29
- package/src/core/demand.ts +22 -22
- package/src/core/entities/ephemeral-registration-token.ts +1 -1
- package/src/core/entities/provisioner-capability-snapshot.ts +12 -0
- package/src/core/entities/provisioner-token.ts +8 -2
- package/src/core/entities/{provisioned-runner.ts → runner-instance.ts} +6 -5
- package/src/core/entities/runner-session.ts +4 -2
- package/src/core/ephemeral-registration-tokens.test.ts +11 -11
- package/src/core/ephemeral-registration-tokens.ts +18 -20
- package/src/core/errors.ts +23 -4
- package/src/core/index.ts +37 -22
- package/src/core/job-executions.ts +3 -2
- package/src/core/maintenance.test.ts +13 -17
- package/src/core/maintenance.ts +5 -5
- package/src/core/provisioner-capability-snapshots.test.ts +35 -0
- package/src/core/provisioner-capability-snapshots.ts +12 -0
- package/src/core/provisioner-tokens.test.ts +20 -0
- package/src/core/provisioner-tokens.ts +33 -0
- package/src/core/rate-limit.test.ts +11 -27
- package/src/core/rate-limit.ts +3 -11
- package/src/core/runner-activation.ts +72 -0
- package/src/core/runner-assignments.ts +9 -0
- package/src/core/runner-control-sessions.ts +190 -0
- package/src/core/{provisioned-runners.test.ts → runner-instances.test.ts} +24 -24
- package/src/core/runner-instances.ts +301 -0
- package/src/core/runner-sessions.test.ts +112 -22
- package/src/core/runner-sessions.ts +25 -14
- package/src/db/db.ts +9 -2
- package/src/db/ephemeral-registration-tokens.test.ts +9 -9
- package/src/db/ephemeral-registration-tokens.ts +26 -26
- package/src/db/index.ts +30 -21
- package/src/db/job-executions.test.ts +13 -11
- package/src/db/job-executions.ts +33 -27
- package/src/db/provisioner-capability-snapshots.test.ts +175 -0
- package/src/db/provisioner-capability-snapshots.ts +130 -0
- package/src/db/provisioner-tokens.test.ts +139 -2
- package/src/db/provisioner-tokens.ts +123 -15
- package/src/db/reservations.test.ts +49 -0
- package/src/db/reservations.ts +146 -1
- package/src/db/runner-assignments.test.ts +163 -0
- package/src/db/runner-assignments.ts +115 -0
- package/src/db/{provisioned-runners.test.ts → runner-instances.test.ts} +442 -353
- package/src/db/runner-instances.ts +922 -0
- package/src/db/runner-sessions.test.ts +19 -6
- package/src/db/runner-sessions.ts +78 -2
- package/src/db/schema/ephemeral-registration-tokens.ts +4 -4
- package/src/db/schema/provisioner-capability-snapshots.ts +46 -0
- package/src/db/schema/provisioner-tokens.ts +33 -2
- package/src/db/schema/runner-activation-tokens.ts +22 -0
- package/src/db/schema/runner-control-sessions.ts +46 -0
- package/src/db/schema/{provisioned-runners.ts → runner-instances.ts} +28 -27
- package/src/db/schema/runner-sessions.ts +11 -7
- package/src/db/schema/running-job-executions.ts +5 -5
- package/src/index.test.ts +26 -0
- package/src/index.ts +38 -27
- package/src/installation-provisioning.ts +14 -0
- package/src/metrics/index.ts +5 -5
- package/src/metrics/instance.ts +25 -14
- package/src/presentation/auth/index.ts +4 -0
- package/src/presentation/auth/provisioner-token-auth.ts +8 -4
- package/src/presentation/auth/runner-control-session-auth.ts +31 -0
- package/src/presentation/auth/runner-registration-token-auth.ts +39 -3
- package/src/presentation/dto/index.ts +4 -8
- package/src/presentation/dto/poll-demand.ts +3 -1
- package/src/presentation/dto/provisioner-token.ts +5 -0
- package/src/presentation/dto/{provisioned-runners.ts → runner-instances.ts} +13 -15
- package/src/presentation/index.ts +2 -1
- package/src/presentation/inter-module.test.ts +15 -0
- package/src/presentation/inter-module.ts +53 -0
- package/src/presentation/routes/assign-runner-instances.ts +49 -0
- package/src/presentation/routes/get-provisioner-me.ts +3 -4
- package/src/presentation/routes/heartbeat.test.ts +4 -3
- package/src/presentation/routes/heartbeat.ts +67 -64
- package/src/presentation/routes/index.ts +91 -44
- package/src/presentation/routes/list-active-runners.test.ts +23 -23
- package/src/presentation/routes/manual-registration-tokens.test.ts +4 -3
- package/src/presentation/routes/poll-demand-release.test.ts +4 -4
- package/src/presentation/routes/poll-demand.test.ts +161 -22
- package/src/presentation/routes/poll-demand.ts +105 -45
- package/src/presentation/routes/provisioner-me.test.ts +37 -3
- package/src/presentation/routes/{reconcile-provisioned-runners.test.ts → reconcile-runner-instances.test.ts} +66 -61
- package/src/presentation/routes/reconcile-runner-instances.ts +30 -0
- package/src/presentation/routes/register.test.ts +9 -5
- package/src/presentation/routes/register.ts +61 -57
- package/src/presentation/routes/{report-provisioned-runners.test.ts → report-runner-instances.test.ts} +28 -28
- package/src/presentation/routes/{report-provisioned-runners.ts → report-runner-instances.ts} +14 -14
- package/src/presentation/routes/request-job.test.ts +5 -3
- package/src/presentation/routes/request-job.ts +41 -37
- package/src/presentation/routes/runner-enrollment.test.ts +319 -0
- package/src/presentation/routes/runner-enrollment.ts +196 -0
- package/src/temporal/activities/index.ts +2 -2
- package/src/temporal/activities/maintenance-activities.test.ts +7 -7
- package/src/temporal/activities/maintenance-activities.ts +3 -3
- package/src/temporal/workflows/stuck-job-detector.test.ts +3 -3
- package/src/temporal/workflows/stuck-job-detector.ts +2 -2
- package/test/env.ts +1 -3
- package/test/factories/ephemeral-registration-token.ts +2 -2
- package/test/factories/provisioner-token.ts +3 -1
- package/test/factories/runner-instance.ts +57 -0
- package/test/factories/runner-session.ts +3 -1
- package/test/fixtures/auth-inter-module.ts +30 -0
- package/test/globalSetup.ts +4 -1
- package/test/index.ts +2 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/dist/core/entities/provisioned-runner.d.ts.map +0 -1
- package/dist/core/entities/provisioned-runner.js +0 -3
- package/dist/core/entities/provisioned-runner.js.map +0 -1
- package/dist/core/provisioned-runners.d.ts +0 -67
- package/dist/core/provisioned-runners.d.ts.map +0 -1
- package/dist/core/provisioned-runners.js +0 -162
- package/dist/core/provisioned-runners.js.map +0 -1
- package/dist/db/provisioned-runners.d.ts +0 -79
- package/dist/db/provisioned-runners.d.ts.map +0 -1
- package/dist/db/provisioned-runners.js +0 -466
- package/dist/db/provisioned-runners.js.map +0 -1
- package/dist/db/schema/provisioned-runners.d.ts.map +0 -1
- package/dist/db/schema/provisioned-runners.js.map +0 -1
- package/dist/presentation/dto/mint-registration-tokens.d.ts +0 -5
- package/dist/presentation/dto/mint-registration-tokens.d.ts.map +0 -1
- package/dist/presentation/dto/mint-registration-tokens.js +0 -19
- package/dist/presentation/dto/mint-registration-tokens.js.map +0 -1
- package/dist/presentation/dto/provisioned-runners.d.ts.map +0 -1
- package/dist/presentation/dto/provisioned-runners.js.map +0 -1
- package/dist/presentation/routes/mint-registration-tokens.d.ts +0 -2
- package/dist/presentation/routes/mint-registration-tokens.d.ts.map +0 -1
- package/dist/presentation/routes/mint-registration-tokens.js +0 -74
- package/dist/presentation/routes/mint-registration-tokens.js.map +0 -1
- package/dist/presentation/routes/reconcile-provisioned-runners.d.ts +0 -2
- package/dist/presentation/routes/reconcile-provisioned-runners.d.ts.map +0 -1
- package/dist/presentation/routes/reconcile-provisioned-runners.js +0 -27
- package/dist/presentation/routes/reconcile-provisioned-runners.js.map +0 -1
- package/dist/presentation/routes/report-provisioned-runners.d.ts +0 -2
- package/dist/presentation/routes/report-provisioned-runners.d.ts.map +0 -1
- package/dist/presentation/routes/report-provisioned-runners.js +0 -37
- package/dist/presentation/routes/report-provisioned-runners.js.map +0 -1
- package/src/core/provisioned-runners.ts +0 -301
- package/src/db/provisioned-runners.ts +0 -886
- package/src/presentation/dto/mint-registration-tokens.ts +0 -35
- package/src/presentation/routes/mint-registration-tokens.test.ts +0 -453
- package/src/presentation/routes/mint-registration-tokens.ts +0 -82
- package/src/presentation/routes/reconcile-provisioned-runners.ts +0 -30
- package/test/factories/provisioned-runner.ts +0 -78
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const
|
|
4
|
-
name: "
|
|
1
|
+
import type { RunnerInstance } from '#core/entities/runner-instance.js';
|
|
2
|
+
export declare const providerRunnerStateEnum: import("drizzle-orm/pg-core").PgEnum<["starting", "running", "stopping", "stopped", "failed", "terminated"]>;
|
|
3
|
+
export declare const providerRunners: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
4
|
+
name: "runner_instances";
|
|
5
5
|
schema: undefined;
|
|
6
6
|
columns: {
|
|
7
7
|
id: import("drizzle-orm/pg-core").PgColumn<{
|
|
8
8
|
name: "id";
|
|
9
|
-
tableName: "
|
|
9
|
+
tableName: "runner_instances";
|
|
10
10
|
dataType: "string";
|
|
11
11
|
columnType: "PgUUID";
|
|
12
12
|
data: string;
|
|
@@ -23,12 +23,12 @@ export declare const provisionedRunners: import("drizzle-orm/pg-core").PgTableWi
|
|
|
23
23
|
}, {}, {}>;
|
|
24
24
|
workspaceId: import("drizzle-orm/pg-core").PgColumn<{
|
|
25
25
|
name: "workspace_id";
|
|
26
|
-
tableName: "
|
|
26
|
+
tableName: "runner_instances";
|
|
27
27
|
dataType: "string";
|
|
28
28
|
columnType: "PgUUID";
|
|
29
29
|
data: string;
|
|
30
30
|
driverParam: string;
|
|
31
|
-
notNull:
|
|
31
|
+
notNull: false;
|
|
32
32
|
hasDefault: false;
|
|
33
33
|
isPrimaryKey: false;
|
|
34
34
|
isAutoincrement: false;
|
|
@@ -40,7 +40,7 @@ export declare const provisionedRunners: import("drizzle-orm/pg-core").PgTableWi
|
|
|
40
40
|
}, {}, {}>;
|
|
41
41
|
provisionerId: import("drizzle-orm/pg-core").PgColumn<{
|
|
42
42
|
name: "provisioner_id";
|
|
43
|
-
tableName: "
|
|
43
|
+
tableName: "runner_instances";
|
|
44
44
|
dataType: "string";
|
|
45
45
|
columnType: "PgUUID";
|
|
46
46
|
data: string;
|
|
@@ -55,14 +55,14 @@ export declare const provisionedRunners: import("drizzle-orm/pg-core").PgTableWi
|
|
|
55
55
|
identity: undefined;
|
|
56
56
|
generated: undefined;
|
|
57
57
|
}, {}, {}>;
|
|
58
|
-
|
|
59
|
-
name: "
|
|
60
|
-
tableName: "
|
|
58
|
+
providerRunnerId: import("drizzle-orm/pg-core").PgColumn<{
|
|
59
|
+
name: "provider_runner_id";
|
|
60
|
+
tableName: "runner_instances";
|
|
61
61
|
dataType: "string";
|
|
62
62
|
columnType: "PgText";
|
|
63
63
|
data: string;
|
|
64
64
|
driverParam: string;
|
|
65
|
-
notNull:
|
|
65
|
+
notNull: false;
|
|
66
66
|
hasDefault: false;
|
|
67
67
|
isPrimaryKey: false;
|
|
68
68
|
isAutoincrement: false;
|
|
@@ -74,7 +74,7 @@ export declare const provisionedRunners: import("drizzle-orm/pg-core").PgTableWi
|
|
|
74
74
|
}, {}, {}>;
|
|
75
75
|
reservationId: import("drizzle-orm/pg-core").PgColumn<{
|
|
76
76
|
name: "reservation_id";
|
|
77
|
-
tableName: "
|
|
77
|
+
tableName: "runner_instances";
|
|
78
78
|
dataType: "string";
|
|
79
79
|
columnType: "PgUUID";
|
|
80
80
|
data: string;
|
|
@@ -89,9 +89,26 @@ export declare const provisionedRunners: import("drizzle-orm/pg-core").PgTableWi
|
|
|
89
89
|
identity: undefined;
|
|
90
90
|
generated: undefined;
|
|
91
91
|
}, {}, {}>;
|
|
92
|
+
assignedAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
93
|
+
name: "assigned_at";
|
|
94
|
+
tableName: "runner_instances";
|
|
95
|
+
dataType: "date";
|
|
96
|
+
columnType: "PgTimestamp";
|
|
97
|
+
data: Date;
|
|
98
|
+
driverParam: string;
|
|
99
|
+
notNull: false;
|
|
100
|
+
hasDefault: false;
|
|
101
|
+
isPrimaryKey: false;
|
|
102
|
+
isAutoincrement: false;
|
|
103
|
+
hasRuntimeDefault: false;
|
|
104
|
+
enumValues: undefined;
|
|
105
|
+
baseColumn: never;
|
|
106
|
+
identity: undefined;
|
|
107
|
+
generated: undefined;
|
|
108
|
+
}, {}, {}>;
|
|
92
109
|
templateKey: import("drizzle-orm/pg-core").PgColumn<{
|
|
93
110
|
name: "template_key";
|
|
94
|
-
tableName: "
|
|
111
|
+
tableName: "runner_instances";
|
|
95
112
|
dataType: "string";
|
|
96
113
|
columnType: "PgText";
|
|
97
114
|
data: string;
|
|
@@ -108,20 +125,20 @@ export declare const provisionedRunners: import("drizzle-orm/pg-core").PgTableWi
|
|
|
108
125
|
}, {}, {}>;
|
|
109
126
|
labels: import("drizzle-orm/pg-core").PgColumn<{
|
|
110
127
|
name: "labels";
|
|
111
|
-
tableName: "
|
|
128
|
+
tableName: "runner_instances";
|
|
112
129
|
dataType: "array";
|
|
113
130
|
columnType: "PgArray";
|
|
114
131
|
data: string[];
|
|
115
132
|
driverParam: string | string[];
|
|
116
133
|
notNull: true;
|
|
117
|
-
hasDefault:
|
|
134
|
+
hasDefault: true;
|
|
118
135
|
isPrimaryKey: false;
|
|
119
136
|
isAutoincrement: false;
|
|
120
137
|
hasRuntimeDefault: false;
|
|
121
138
|
enumValues: [string, ...string[]];
|
|
122
139
|
baseColumn: import("drizzle-orm").Column<{
|
|
123
140
|
name: "labels";
|
|
124
|
-
tableName: "
|
|
141
|
+
tableName: "runner_instances";
|
|
125
142
|
dataType: "string";
|
|
126
143
|
columnType: "PgText";
|
|
127
144
|
data: string;
|
|
@@ -151,7 +168,7 @@ export declare const provisionedRunners: import("drizzle-orm/pg-core").PgTableWi
|
|
|
151
168
|
}>;
|
|
152
169
|
state: import("drizzle-orm/pg-core").PgColumn<{
|
|
153
170
|
name: "state";
|
|
154
|
-
tableName: "
|
|
171
|
+
tableName: "runner_instances";
|
|
155
172
|
dataType: "string";
|
|
156
173
|
columnType: "PgEnumColumn";
|
|
157
174
|
data: "starting" | "running" | "stopping" | "stopped" | "failed" | "terminated";
|
|
@@ -168,7 +185,7 @@ export declare const provisionedRunners: import("drizzle-orm/pg-core").PgTableWi
|
|
|
168
185
|
}, {}, {}>;
|
|
169
186
|
reason: import("drizzle-orm/pg-core").PgColumn<{
|
|
170
187
|
name: "reason";
|
|
171
|
-
tableName: "
|
|
188
|
+
tableName: "runner_instances";
|
|
172
189
|
dataType: "string";
|
|
173
190
|
columnType: "PgText";
|
|
174
191
|
data: string;
|
|
@@ -185,7 +202,7 @@ export declare const provisionedRunners: import("drizzle-orm/pg-core").PgTableWi
|
|
|
185
202
|
}, {}, {}>;
|
|
186
203
|
runnerSessionId: import("drizzle-orm/pg-core").PgColumn<{
|
|
187
204
|
name: "runner_session_id";
|
|
188
|
-
tableName: "
|
|
205
|
+
tableName: "runner_instances";
|
|
189
206
|
dataType: "string";
|
|
190
207
|
columnType: "PgUUID";
|
|
191
208
|
data: string;
|
|
@@ -202,7 +219,7 @@ export declare const provisionedRunners: import("drizzle-orm/pg-core").PgTableWi
|
|
|
202
219
|
}, {}, {}>;
|
|
203
220
|
providerKind: import("drizzle-orm/pg-core").PgColumn<{
|
|
204
221
|
name: "provider_kind";
|
|
205
|
-
tableName: "
|
|
222
|
+
tableName: "runner_instances";
|
|
206
223
|
dataType: "string";
|
|
207
224
|
columnType: "PgText";
|
|
208
225
|
data: string;
|
|
@@ -217,9 +234,63 @@ export declare const provisionedRunners: import("drizzle-orm/pg-core").PgTableWi
|
|
|
217
234
|
identity: undefined;
|
|
218
235
|
generated: undefined;
|
|
219
236
|
}, {}, {}>;
|
|
237
|
+
protocolVersion: import("drizzle-orm/pg-core").PgColumn<{
|
|
238
|
+
name: "protocol_version";
|
|
239
|
+
tableName: "runner_instances";
|
|
240
|
+
dataType: "string";
|
|
241
|
+
columnType: "PgText";
|
|
242
|
+
data: string;
|
|
243
|
+
driverParam: string;
|
|
244
|
+
notNull: false;
|
|
245
|
+
hasDefault: false;
|
|
246
|
+
isPrimaryKey: false;
|
|
247
|
+
isAutoincrement: false;
|
|
248
|
+
hasRuntimeDefault: false;
|
|
249
|
+
enumValues: [string, ...string[]];
|
|
250
|
+
baseColumn: never;
|
|
251
|
+
identity: undefined;
|
|
252
|
+
generated: undefined;
|
|
253
|
+
}, {}, {}>;
|
|
254
|
+
capabilities: import("drizzle-orm/pg-core").PgColumn<{
|
|
255
|
+
name: "capabilities";
|
|
256
|
+
tableName: "runner_instances";
|
|
257
|
+
dataType: "json";
|
|
258
|
+
columnType: "PgJsonb";
|
|
259
|
+
data: {
|
|
260
|
+
harnesses: {
|
|
261
|
+
pi?: {
|
|
262
|
+
tools: string[];
|
|
263
|
+
} | undefined;
|
|
264
|
+
claude?: {
|
|
265
|
+
tools: string[];
|
|
266
|
+
} | undefined;
|
|
267
|
+
};
|
|
268
|
+
} | null;
|
|
269
|
+
driverParam: unknown;
|
|
270
|
+
notNull: false;
|
|
271
|
+
hasDefault: false;
|
|
272
|
+
isPrimaryKey: false;
|
|
273
|
+
isAutoincrement: false;
|
|
274
|
+
hasRuntimeDefault: false;
|
|
275
|
+
enumValues: undefined;
|
|
276
|
+
baseColumn: never;
|
|
277
|
+
identity: undefined;
|
|
278
|
+
generated: undefined;
|
|
279
|
+
}, {}, {
|
|
280
|
+
$type: {
|
|
281
|
+
harnesses: {
|
|
282
|
+
pi?: {
|
|
283
|
+
tools: string[];
|
|
284
|
+
} | undefined;
|
|
285
|
+
claude?: {
|
|
286
|
+
tools: string[];
|
|
287
|
+
} | undefined;
|
|
288
|
+
};
|
|
289
|
+
} | null;
|
|
290
|
+
}>;
|
|
220
291
|
reportedAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
221
292
|
name: "reported_at";
|
|
222
|
-
tableName: "
|
|
293
|
+
tableName: "runner_instances";
|
|
223
294
|
dataType: "date";
|
|
224
295
|
columnType: "PgTimestamp";
|
|
225
296
|
data: Date;
|
|
@@ -236,7 +307,7 @@ export declare const provisionedRunners: import("drizzle-orm/pg-core").PgTableWi
|
|
|
236
307
|
}, {}, {}>;
|
|
237
308
|
startedAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
238
309
|
name: "started_at";
|
|
239
|
-
tableName: "
|
|
310
|
+
tableName: "runner_instances";
|
|
240
311
|
dataType: "date";
|
|
241
312
|
columnType: "PgTimestamp";
|
|
242
313
|
data: Date;
|
|
@@ -253,7 +324,7 @@ export declare const provisionedRunners: import("drizzle-orm/pg-core").PgTableWi
|
|
|
253
324
|
}, {}, {}>;
|
|
254
325
|
stoppingAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
255
326
|
name: "stopping_at";
|
|
256
|
-
tableName: "
|
|
327
|
+
tableName: "runner_instances";
|
|
257
328
|
dataType: "date";
|
|
258
329
|
columnType: "PgTimestamp";
|
|
259
330
|
data: Date;
|
|
@@ -270,7 +341,7 @@ export declare const provisionedRunners: import("drizzle-orm/pg-core").PgTableWi
|
|
|
270
341
|
}, {}, {}>;
|
|
271
342
|
stoppedAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
272
343
|
name: "stopped_at";
|
|
273
|
-
tableName: "
|
|
344
|
+
tableName: "runner_instances";
|
|
274
345
|
dataType: "date";
|
|
275
346
|
columnType: "PgTimestamp";
|
|
276
347
|
data: Date;
|
|
@@ -287,7 +358,7 @@ export declare const provisionedRunners: import("drizzle-orm/pg-core").PgTableWi
|
|
|
287
358
|
}, {}, {}>;
|
|
288
359
|
failedAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
289
360
|
name: "failed_at";
|
|
290
|
-
tableName: "
|
|
361
|
+
tableName: "runner_instances";
|
|
291
362
|
dataType: "date";
|
|
292
363
|
columnType: "PgTimestamp";
|
|
293
364
|
data: Date;
|
|
@@ -304,7 +375,7 @@ export declare const provisionedRunners: import("drizzle-orm/pg-core").PgTableWi
|
|
|
304
375
|
}, {}, {}>;
|
|
305
376
|
terminatedAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
306
377
|
name: "terminated_at";
|
|
307
|
-
tableName: "
|
|
378
|
+
tableName: "runner_instances";
|
|
308
379
|
dataType: "date";
|
|
309
380
|
columnType: "PgTimestamp";
|
|
310
381
|
data: Date;
|
|
@@ -321,7 +392,7 @@ export declare const provisionedRunners: import("drizzle-orm/pg-core").PgTableWi
|
|
|
321
392
|
}, {}, {}>;
|
|
322
393
|
reservationReleasedAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
323
394
|
name: "reservation_released_at";
|
|
324
|
-
tableName: "
|
|
395
|
+
tableName: "runner_instances";
|
|
325
396
|
dataType: "date";
|
|
326
397
|
columnType: "PgTimestamp";
|
|
327
398
|
data: Date;
|
|
@@ -338,7 +409,7 @@ export declare const provisionedRunners: import("drizzle-orm/pg-core").PgTableWi
|
|
|
338
409
|
}, {}, {}>;
|
|
339
410
|
createdAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
340
411
|
name: "created_at";
|
|
341
|
-
tableName: "
|
|
412
|
+
tableName: "runner_instances";
|
|
342
413
|
dataType: "date";
|
|
343
414
|
columnType: "PgTimestamp";
|
|
344
415
|
data: Date;
|
|
@@ -355,7 +426,7 @@ export declare const provisionedRunners: import("drizzle-orm/pg-core").PgTableWi
|
|
|
355
426
|
}, {}, {}>;
|
|
356
427
|
updatedAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
357
428
|
name: "updated_at";
|
|
358
|
-
tableName: "
|
|
429
|
+
tableName: "runner_instances";
|
|
359
430
|
dataType: "date";
|
|
360
431
|
columnType: "PgTimestamp";
|
|
361
432
|
data: Date;
|
|
@@ -373,7 +444,7 @@ export declare const provisionedRunners: import("drizzle-orm/pg-core").PgTableWi
|
|
|
373
444
|
};
|
|
374
445
|
dialect: "pg";
|
|
375
446
|
}>;
|
|
376
|
-
export type
|
|
377
|
-
export type
|
|
378
|
-
export declare function
|
|
379
|
-
//# sourceMappingURL=
|
|
447
|
+
export type RunnerInstanceDb = typeof providerRunners.$inferSelect;
|
|
448
|
+
export type RunnerInstanceInsertDb = typeof providerRunners.$inferInsert;
|
|
449
|
+
export declare function toRunnerInstance(row: RunnerInstanceDb): RunnerInstance;
|
|
450
|
+
//# sourceMappingURL=runner-instances.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner-instances.d.ts","sourceRoot":"","sources":["../../../src/db/schema/runner-instances.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,mCAAmC,CAAC;AAGtE,eAAO,MAAM,uBAAuB,8GAOlC,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2C3B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,OAAO,eAAe,CAAC,YAAY,CAAC;AACnE,MAAM,MAAM,sBAAsB,GAAG,OAAO,eAAe,CAAC,YAAY,CAAC;AAEzE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,GAAG,cAAc,CAyBtE"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { uuidv7PrimaryKey } from '@shipfox/node-drizzle';
|
|
2
2
|
import { sql } from 'drizzle-orm';
|
|
3
|
-
import { index, pgEnum, text, timestamp, uniqueIndex, uuid } from 'drizzle-orm/pg-core';
|
|
3
|
+
import { index, jsonb, pgEnum, text, timestamp, uniqueIndex, uuid } from 'drizzle-orm/pg-core';
|
|
4
4
|
import { pgTable } from './common.js';
|
|
5
|
-
export const
|
|
5
|
+
export const providerRunnerStateEnum = pgEnum('runners_provider_runner_state', [
|
|
6
6
|
'starting',
|
|
7
7
|
'running',
|
|
8
8
|
'stopping',
|
|
@@ -10,18 +10,25 @@ export const provisionedRunnerStateEnum = pgEnum('runners_provisioned_runner_sta
|
|
|
10
10
|
'failed',
|
|
11
11
|
'terminated'
|
|
12
12
|
]);
|
|
13
|
-
export const
|
|
13
|
+
export const providerRunners = pgTable('runner_instances', {
|
|
14
14
|
id: uuidv7PrimaryKey(),
|
|
15
|
-
|
|
15
|
+
// Kept during the protocol migration for legacy workspace capacity. New capacity is owned
|
|
16
|
+
// only by its provisioner and has no workspace assignment.
|
|
17
|
+
workspaceId: uuid('workspace_id'),
|
|
16
18
|
provisionerId: uuid('provisioner_id').notNull(),
|
|
17
|
-
|
|
19
|
+
providerRunnerId: text('provider_runner_id'),
|
|
18
20
|
reservationId: uuid('reservation_id'),
|
|
21
|
+
assignedAt: timestamp('assigned_at', {
|
|
22
|
+
withTimezone: true
|
|
23
|
+
}),
|
|
19
24
|
templateKey: text('template_key'),
|
|
20
|
-
labels: text('labels').array().notNull(),
|
|
21
|
-
state:
|
|
25
|
+
labels: text('labels').array().notNull().default([]),
|
|
26
|
+
state: providerRunnerStateEnum('state').notNull(),
|
|
22
27
|
reason: text('reason'),
|
|
23
28
|
runnerSessionId: uuid('runner_session_id'),
|
|
24
29
|
providerKind: text('provider_kind'),
|
|
30
|
+
protocolVersion: text('protocol_version'),
|
|
31
|
+
capabilities: jsonb('capabilities').$type(),
|
|
25
32
|
reportedAt: timestamp('reported_at', {
|
|
26
33
|
withTimezone: true
|
|
27
34
|
}).notNull(),
|
|
@@ -50,18 +57,20 @@ export const provisionedRunners = pgTable('provisioned_runners', {
|
|
|
50
57
|
withTimezone: true
|
|
51
58
|
}).notNull().defaultNow()
|
|
52
59
|
}, (table)=>[
|
|
53
|
-
uniqueIndex('
|
|
54
|
-
index('
|
|
55
|
-
index('
|
|
56
|
-
index('
|
|
60
|
+
uniqueIndex('runners_runner_instances_provisioner_runner_unique').on(table.provisionerId, table.providerRunnerId).where(sql`${table.providerRunnerId} is not null`),
|
|
61
|
+
index('runners_runner_instances_workspace_state_updated_idx').on(table.state, table.updatedAt),
|
|
62
|
+
index('runners_runner_instances_stale_reaper_idx').on(table.state, table.updatedAt, table.reportedAt),
|
|
63
|
+
index('runners_runner_instances_active_template_counts_idx').on(table.provisionerId, table.state, table.templateKey).where(sql`"state" in ('starting', 'running') and "template_key" is not null`)
|
|
57
64
|
]);
|
|
58
|
-
export function
|
|
65
|
+
export function toRunnerInstance(row) {
|
|
66
|
+
if (!row.providerRunnerId) throw new Error('Runner instance has no provider runner identity');
|
|
59
67
|
return {
|
|
60
68
|
id: row.id,
|
|
61
69
|
workspaceId: row.workspaceId,
|
|
62
70
|
provisionerId: row.provisionerId,
|
|
63
|
-
|
|
71
|
+
providerRunnerId: row.providerRunnerId,
|
|
64
72
|
reservationId: row.reservationId,
|
|
73
|
+
assignedAt: row.assignedAt,
|
|
65
74
|
templateKey: row.templateKey,
|
|
66
75
|
labels: row.labels,
|
|
67
76
|
state: row.state,
|
|
@@ -80,4 +89,4 @@ export function toProvisionedRunner(row) {
|
|
|
80
89
|
};
|
|
81
90
|
}
|
|
82
91
|
|
|
83
|
-
//# sourceMappingURL=
|
|
92
|
+
//# sourceMappingURL=runner-instances.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/db/schema/runner-instances.ts"],"sourcesContent":["import type {RunnerToolCapabilitiesDto} from '@shipfox/api-runners-dto';\nimport {uuidv7PrimaryKey} from '@shipfox/node-drizzle';\nimport {sql} from 'drizzle-orm';\nimport {index, jsonb, pgEnum, text, timestamp, uniqueIndex, uuid} from 'drizzle-orm/pg-core';\nimport type {RunnerInstance} from '#core/entities/runner-instance.js';\nimport {pgTable} from './common.js';\n\nexport const providerRunnerStateEnum = pgEnum('runners_provider_runner_state', [\n 'starting',\n 'running',\n 'stopping',\n 'stopped',\n 'failed',\n 'terminated',\n]);\n\nexport const providerRunners = pgTable(\n 'runner_instances',\n {\n id: uuidv7PrimaryKey(),\n // Kept during the protocol migration for legacy workspace capacity. New capacity is owned\n // only by its provisioner and has no workspace assignment.\n workspaceId: uuid('workspace_id'),\n provisionerId: uuid('provisioner_id').notNull(),\n providerRunnerId: text('provider_runner_id'),\n reservationId: uuid('reservation_id'),\n assignedAt: timestamp('assigned_at', {withTimezone: true}),\n templateKey: text('template_key'),\n labels: text('labels').array().notNull().default([]),\n state: providerRunnerStateEnum('state').notNull(),\n reason: text('reason'),\n runnerSessionId: uuid('runner_session_id'),\n providerKind: text('provider_kind'),\n protocolVersion: text('protocol_version'),\n capabilities: jsonb('capabilities').$type<RunnerToolCapabilitiesDto | null>(),\n reportedAt: timestamp('reported_at', {withTimezone: true}).notNull(),\n startedAt: timestamp('started_at', {withTimezone: true}),\n stoppingAt: timestamp('stopping_at', {withTimezone: true}),\n stoppedAt: timestamp('stopped_at', {withTimezone: true}),\n failedAt: timestamp('failed_at', {withTimezone: true}),\n terminatedAt: timestamp('terminated_at', {withTimezone: true}),\n reservationReleasedAt: timestamp('reservation_released_at', {withTimezone: true}),\n createdAt: timestamp('created_at', {withTimezone: true}).notNull().defaultNow(),\n updatedAt: timestamp('updated_at', {withTimezone: true}).notNull().defaultNow(),\n },\n (table) => [\n uniqueIndex('runners_runner_instances_provisioner_runner_unique')\n .on(table.provisionerId, table.providerRunnerId)\n .where(sql`${table.providerRunnerId} is not null`),\n index('runners_runner_instances_workspace_state_updated_idx').on(table.state, table.updatedAt),\n index('runners_runner_instances_stale_reaper_idx').on(\n table.state,\n table.updatedAt,\n table.reportedAt,\n ),\n index('runners_runner_instances_active_template_counts_idx')\n .on(table.provisionerId, table.state, table.templateKey)\n .where(sql`\"state\" in ('starting', 'running') and \"template_key\" is not null`),\n ],\n);\n\nexport type RunnerInstanceDb = typeof providerRunners.$inferSelect;\nexport type RunnerInstanceInsertDb = typeof providerRunners.$inferInsert;\n\nexport function toRunnerInstance(row: RunnerInstanceDb): RunnerInstance {\n if (!row.providerRunnerId) throw new Error('Runner instance has no provider runner identity');\n return {\n id: row.id,\n workspaceId: row.workspaceId,\n provisionerId: row.provisionerId,\n providerRunnerId: row.providerRunnerId,\n reservationId: row.reservationId,\n assignedAt: row.assignedAt,\n templateKey: row.templateKey,\n labels: row.labels,\n state: row.state,\n reason: row.reason,\n runnerSessionId: row.runnerSessionId,\n providerKind: row.providerKind,\n reportedAt: row.reportedAt,\n startedAt: row.startedAt,\n stoppingAt: row.stoppingAt,\n stoppedAt: row.stoppedAt,\n failedAt: row.failedAt,\n terminatedAt: row.terminatedAt,\n reservationReleasedAt: row.reservationReleasedAt,\n createdAt: row.createdAt,\n updatedAt: row.updatedAt,\n };\n}\n"],"names":["uuidv7PrimaryKey","sql","index","jsonb","pgEnum","text","timestamp","uniqueIndex","uuid","pgTable","providerRunnerStateEnum","providerRunners","id","workspaceId","provisionerId","notNull","providerRunnerId","reservationId","assignedAt","withTimezone","templateKey","labels","array","default","state","reason","runnerSessionId","providerKind","protocolVersion","capabilities","$type","reportedAt","startedAt","stoppingAt","stoppedAt","failedAt","terminatedAt","reservationReleasedAt","createdAt","defaultNow","updatedAt","table","on","where","toRunnerInstance","row","Error"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { RunnerSession } from '#core/entities/runner-session.js';
|
|
2
2
|
export declare const runnerSessionScopeEnum: import("drizzle-orm/pg-core").PgEnum<["workspace"]>;
|
|
3
|
-
export declare const runnerSessionRegistrationTokenKindEnum: import("drizzle-orm/pg-core").PgEnum<["manual", "ephemeral"]>;
|
|
3
|
+
export declare const runnerSessionRegistrationTokenKindEnum: import("drizzle-orm/pg-core").PgEnum<["manual", "ephemeral", "activation"]>;
|
|
4
4
|
export declare const runnerSessions: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
5
5
|
name: "runner_sessions";
|
|
6
6
|
schema: undefined;
|
|
@@ -78,14 +78,31 @@ export declare const runnerSessions: import("drizzle-orm/pg-core").PgTableWithCo
|
|
|
78
78
|
tableName: "runner_sessions";
|
|
79
79
|
dataType: "string";
|
|
80
80
|
columnType: "PgEnumColumn";
|
|
81
|
-
data: "manual" | "ephemeral";
|
|
81
|
+
data: "manual" | "ephemeral" | "activation";
|
|
82
82
|
driverParam: string;
|
|
83
83
|
notNull: true;
|
|
84
84
|
hasDefault: false;
|
|
85
85
|
isPrimaryKey: false;
|
|
86
86
|
isAutoincrement: false;
|
|
87
87
|
hasRuntimeDefault: false;
|
|
88
|
-
enumValues: ["manual", "ephemeral"];
|
|
88
|
+
enumValues: ["manual", "ephemeral", "activation"];
|
|
89
|
+
baseColumn: never;
|
|
90
|
+
identity: undefined;
|
|
91
|
+
generated: undefined;
|
|
92
|
+
}, {}, {}>;
|
|
93
|
+
runnerInstanceId: import("drizzle-orm/pg-core").PgColumn<{
|
|
94
|
+
name: "runner_instance_id";
|
|
95
|
+
tableName: "runner_sessions";
|
|
96
|
+
dataType: "string";
|
|
97
|
+
columnType: "PgUUID";
|
|
98
|
+
data: string;
|
|
99
|
+
driverParam: string;
|
|
100
|
+
notNull: false;
|
|
101
|
+
hasDefault: false;
|
|
102
|
+
isPrimaryKey: false;
|
|
103
|
+
isAutoincrement: false;
|
|
104
|
+
hasRuntimeDefault: false;
|
|
105
|
+
enumValues: undefined;
|
|
89
106
|
baseColumn: never;
|
|
90
107
|
identity: undefined;
|
|
91
108
|
generated: undefined;
|
|
@@ -107,8 +124,8 @@ export declare const runnerSessions: import("drizzle-orm/pg-core").PgTableWithCo
|
|
|
107
124
|
identity: undefined;
|
|
108
125
|
generated: undefined;
|
|
109
126
|
}, {}, {}>;
|
|
110
|
-
|
|
111
|
-
name: "
|
|
127
|
+
providerRunnerId: import("drizzle-orm/pg-core").PgColumn<{
|
|
128
|
+
name: "provider_runner_id";
|
|
112
129
|
tableName: "runner_sessions";
|
|
113
130
|
dataType: "string";
|
|
114
131
|
columnType: "PgText";
|
|
@@ -255,6 +272,23 @@ export declare const runnerSessions: import("drizzle-orm/pg-core").PgTableWithCo
|
|
|
255
272
|
identity: undefined;
|
|
256
273
|
generated: undefined;
|
|
257
274
|
}, {}, {}>;
|
|
275
|
+
revokedAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
276
|
+
name: "revoked_at";
|
|
277
|
+
tableName: "runner_sessions";
|
|
278
|
+
dataType: "date";
|
|
279
|
+
columnType: "PgTimestamp";
|
|
280
|
+
data: Date;
|
|
281
|
+
driverParam: string;
|
|
282
|
+
notNull: false;
|
|
283
|
+
hasDefault: false;
|
|
284
|
+
isPrimaryKey: false;
|
|
285
|
+
isAutoincrement: false;
|
|
286
|
+
hasRuntimeDefault: false;
|
|
287
|
+
enumValues: undefined;
|
|
288
|
+
baseColumn: never;
|
|
289
|
+
identity: undefined;
|
|
290
|
+
generated: undefined;
|
|
291
|
+
}, {}, {}>;
|
|
258
292
|
createdAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
259
293
|
name: "created_at";
|
|
260
294
|
tableName: "runner_sessions";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-sessions.d.ts","sourceRoot":"","sources":["../../../src/db/schema/runner-sessions.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,kCAAkC,CAAC;AAGpE,eAAO,MAAM,sBAAsB,qDAAwD,CAAC;AAC5F,eAAO,MAAM,sCAAsC
|
|
1
|
+
{"version":3,"file":"runner-sessions.d.ts","sourceRoot":"","sources":["../../../src/db/schema/runner-sessions.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,kCAAkC,CAAC;AAGpE,eAAO,MAAM,sBAAsB,qDAAwD,CAAC;AAC5F,eAAO,MAAM,sCAAsC,6EAGlD,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuC1B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,OAAO,cAAc,CAAC,YAAY,CAAC;AACjE,MAAM,MAAM,qBAAqB,GAAG,OAAO,cAAc,CAAC,YAAY,CAAC;AAEvE,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,GAAG,aAAa,CAuBnE"}
|
|
@@ -7,7 +7,8 @@ export const runnerSessionScopeEnum = pgEnum('runners_runner_session_scope', [
|
|
|
7
7
|
]);
|
|
8
8
|
export const runnerSessionRegistrationTokenKindEnum = pgEnum('runners_runner_session_registration_token_kind', [
|
|
9
9
|
'manual',
|
|
10
|
-
'ephemeral'
|
|
10
|
+
'ephemeral',
|
|
11
|
+
'activation'
|
|
11
12
|
]);
|
|
12
13
|
export const runnerSessions = pgTable('runner_sessions', {
|
|
13
14
|
id: uuidv7PrimaryKey(),
|
|
@@ -15,8 +16,9 @@ export const runnerSessions = pgTable('runner_sessions', {
|
|
|
15
16
|
scope: runnerSessionScopeEnum('scope').notNull().default('workspace'),
|
|
16
17
|
registrationTokenId: uuid('registration_token_id').notNull(),
|
|
17
18
|
registrationTokenKind: runnerSessionRegistrationTokenKindEnum('registration_token_kind').notNull(),
|
|
19
|
+
runnerInstanceId: uuid('runner_instance_id'),
|
|
18
20
|
provisionerId: uuid('provisioner_id'),
|
|
19
|
-
|
|
21
|
+
providerRunnerId: text('provider_runner_id'),
|
|
20
22
|
labels: text('labels').array().notNull(),
|
|
21
23
|
toolCapabilities: jsonb('tool_capabilities').$type(),
|
|
22
24
|
toolCapabilitiesReportedAt: timestamp('tool_capabilities_reported_at', {
|
|
@@ -24,6 +26,9 @@ export const runnerSessions = pgTable('runner_sessions', {
|
|
|
24
26
|
}),
|
|
25
27
|
maxClaims: integer('max_claims'),
|
|
26
28
|
claimsUsed: integer('claims_used').notNull().default(0),
|
|
29
|
+
revokedAt: timestamp('revoked_at', {
|
|
30
|
+
withTimezone: true
|
|
31
|
+
}),
|
|
27
32
|
createdAt: timestamp('created_at', {
|
|
28
33
|
withTimezone: true
|
|
29
34
|
}).notNull().defaultNow(),
|
|
@@ -32,9 +37,9 @@ export const runnerSessions = pgTable('runner_sessions', {
|
|
|
32
37
|
}).notNull().defaultNow()
|
|
33
38
|
}, (table)=>[
|
|
34
39
|
index('runners_runner_sessions_kind_created_id_idx').on(table.registrationTokenKind, table.createdAt, table.id),
|
|
35
|
-
check('runners_runner_sessions_claims_ck', sql`${table.claimsUsed} >= 0 AND ((${table.registrationTokenKind} = 'manual' AND ${table.maxClaims} IS NULL) OR (${table.registrationTokenKind}
|
|
36
|
-
check('runners_runner_sessions_link_ck', sql`((${table.registrationTokenKind} = 'manual' AND ${table.provisionerId} IS NULL AND ${table.
|
|
37
|
-
index('
|
|
40
|
+
check('runners_runner_sessions_claims_ck', sql`${table.claimsUsed} >= 0 AND ((${table.registrationTokenKind} = 'manual' AND ${table.maxClaims} IS NULL) OR (${table.registrationTokenKind} in ('ephemeral', 'activation') AND ${table.maxClaims} IS NOT NULL AND ${table.maxClaims} > 0 AND ${table.claimsUsed} <= ${table.maxClaims}))`),
|
|
41
|
+
check('runners_runner_sessions_link_ck', sql`((${table.registrationTokenKind} = 'manual' AND ${table.runnerInstanceId} IS NULL AND ${table.provisionerId} IS NULL AND ${table.providerRunnerId} IS NULL) OR (${table.registrationTokenKind} = 'ephemeral' AND ${table.runnerInstanceId} IS NULL AND ${table.provisionerId} IS NOT NULL AND ${table.providerRunnerId} IS NOT NULL) OR (${table.registrationTokenKind} = 'activation' AND ${table.runnerInstanceId} IS NOT NULL AND ${table.provisionerId} IS NOT NULL AND ${table.providerRunnerId} IS NOT NULL))`),
|
|
42
|
+
index('runners_runner_sessions_provider_runner_updated_idx').on(table.workspaceId, table.provisionerId, table.providerRunnerId, table.updatedAt).where(sql`"provisioner_id" IS NOT NULL`)
|
|
38
43
|
]);
|
|
39
44
|
export function toRunnerSession(row) {
|
|
40
45
|
if (row.scope !== 'workspace') {
|
|
@@ -46,13 +51,15 @@ export function toRunnerSession(row) {
|
|
|
46
51
|
scope: row.scope,
|
|
47
52
|
registrationTokenId: row.registrationTokenId,
|
|
48
53
|
registrationTokenKind: row.registrationTokenKind,
|
|
54
|
+
runnerInstanceId: row.runnerInstanceId,
|
|
49
55
|
provisionerId: row.provisionerId,
|
|
50
|
-
|
|
56
|
+
providerRunnerId: row.providerRunnerId,
|
|
51
57
|
labels: row.labels,
|
|
52
58
|
toolCapabilities: row.toolCapabilities,
|
|
53
59
|
toolCapabilitiesReportedAt: row.toolCapabilitiesReportedAt,
|
|
54
60
|
maxClaims: row.maxClaims,
|
|
55
61
|
claimsUsed: row.claimsUsed,
|
|
62
|
+
revokedAt: row.revokedAt,
|
|
56
63
|
createdAt: row.createdAt,
|
|
57
64
|
updatedAt: row.updatedAt
|
|
58
65
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/db/schema/runner-sessions.ts"],"sourcesContent":["import type {RunnerToolCapabilitiesDto} from '@shipfox/api-runners-dto';\nimport {uuidv7PrimaryKey} from '@shipfox/node-drizzle';\nimport {sql} from 'drizzle-orm';\nimport {check, index, integer, jsonb, pgEnum, text, timestamp, uuid} from 'drizzle-orm/pg-core';\nimport type {RunnerSession} from '#core/entities/runner-session.js';\nimport {pgTable} from './common.js';\n\nexport const runnerSessionScopeEnum = pgEnum('runners_runner_session_scope', ['workspace']);\nexport const runnerSessionRegistrationTokenKindEnum = pgEnum(\n 'runners_runner_session_registration_token_kind',\n ['manual', 'ephemeral'],\n);\n\nexport const runnerSessions = pgTable(\n 'runner_sessions',\n {\n id: uuidv7PrimaryKey(),\n workspaceId: uuid('workspace_id').notNull(),\n scope: runnerSessionScopeEnum('scope').notNull().default('workspace'),\n registrationTokenId: uuid('registration_token_id').notNull(),\n registrationTokenKind:\n runnerSessionRegistrationTokenKindEnum('registration_token_kind').notNull(),\n provisionerId: uuid('provisioner_id'),\n
|
|
1
|
+
{"version":3,"sources":["../../../src/db/schema/runner-sessions.ts"],"sourcesContent":["import type {RunnerToolCapabilitiesDto} from '@shipfox/api-runners-dto';\nimport {uuidv7PrimaryKey} from '@shipfox/node-drizzle';\nimport {sql} from 'drizzle-orm';\nimport {check, index, integer, jsonb, pgEnum, text, timestamp, uuid} from 'drizzle-orm/pg-core';\nimport type {RunnerSession} from '#core/entities/runner-session.js';\nimport {pgTable} from './common.js';\n\nexport const runnerSessionScopeEnum = pgEnum('runners_runner_session_scope', ['workspace']);\nexport const runnerSessionRegistrationTokenKindEnum = pgEnum(\n 'runners_runner_session_registration_token_kind',\n ['manual', 'ephemeral', 'activation'],\n);\n\nexport const runnerSessions = pgTable(\n 'runner_sessions',\n {\n id: uuidv7PrimaryKey(),\n workspaceId: uuid('workspace_id').notNull(),\n scope: runnerSessionScopeEnum('scope').notNull().default('workspace'),\n registrationTokenId: uuid('registration_token_id').notNull(),\n registrationTokenKind:\n runnerSessionRegistrationTokenKindEnum('registration_token_kind').notNull(),\n runnerInstanceId: uuid('runner_instance_id'),\n provisionerId: uuid('provisioner_id'),\n providerRunnerId: text('provider_runner_id'),\n labels: text('labels').array().notNull(),\n toolCapabilities: jsonb('tool_capabilities').$type<RunnerToolCapabilitiesDto | null>(),\n toolCapabilitiesReportedAt: timestamp('tool_capabilities_reported_at', {withTimezone: true}),\n maxClaims: integer('max_claims'),\n claimsUsed: integer('claims_used').notNull().default(0),\n revokedAt: timestamp('revoked_at', {withTimezone: true}),\n createdAt: timestamp('created_at', {withTimezone: true}).notNull().defaultNow(),\n updatedAt: timestamp('updated_at', {withTimezone: true}).notNull().defaultNow(),\n },\n (table) => [\n index('runners_runner_sessions_kind_created_id_idx').on(\n table.registrationTokenKind,\n table.createdAt,\n table.id,\n ),\n check(\n 'runners_runner_sessions_claims_ck',\n sql`${table.claimsUsed} >= 0 AND ((${table.registrationTokenKind} = 'manual' AND ${table.maxClaims} IS NULL) OR (${table.registrationTokenKind} in ('ephemeral', 'activation') AND ${table.maxClaims} IS NOT NULL AND ${table.maxClaims} > 0 AND ${table.claimsUsed} <= ${table.maxClaims}))`,\n ),\n check(\n 'runners_runner_sessions_link_ck',\n sql`((${table.registrationTokenKind} = 'manual' AND ${table.runnerInstanceId} IS NULL AND ${table.provisionerId} IS NULL AND ${table.providerRunnerId} IS NULL) OR (${table.registrationTokenKind} = 'ephemeral' AND ${table.runnerInstanceId} IS NULL AND ${table.provisionerId} IS NOT NULL AND ${table.providerRunnerId} IS NOT NULL) OR (${table.registrationTokenKind} = 'activation' AND ${table.runnerInstanceId} IS NOT NULL AND ${table.provisionerId} IS NOT NULL AND ${table.providerRunnerId} IS NOT NULL))`,\n ),\n index('runners_runner_sessions_provider_runner_updated_idx')\n .on(table.workspaceId, table.provisionerId, table.providerRunnerId, table.updatedAt)\n .where(sql`\"provisioner_id\" IS NOT NULL`),\n ],\n);\n\nexport type RunnerSessionDb = typeof runnerSessions.$inferSelect;\nexport type RunnerSessionInsertDb = typeof runnerSessions.$inferInsert;\n\nexport function toRunnerSession(row: RunnerSessionDb): RunnerSession {\n if (row.scope !== 'workspace') {\n throw new Error(`Unexpected runner session scope: ${row.scope}`);\n }\n\n return {\n id: row.id,\n workspaceId: row.workspaceId,\n scope: row.scope,\n registrationTokenId: row.registrationTokenId,\n registrationTokenKind: row.registrationTokenKind,\n runnerInstanceId: row.runnerInstanceId,\n provisionerId: row.provisionerId,\n providerRunnerId: row.providerRunnerId,\n labels: row.labels,\n toolCapabilities: row.toolCapabilities,\n toolCapabilitiesReportedAt: row.toolCapabilitiesReportedAt,\n maxClaims: row.maxClaims,\n claimsUsed: row.claimsUsed,\n revokedAt: row.revokedAt,\n createdAt: row.createdAt,\n updatedAt: row.updatedAt,\n };\n}\n"],"names":["uuidv7PrimaryKey","sql","check","index","integer","jsonb","pgEnum","text","timestamp","uuid","pgTable","runnerSessionScopeEnum","runnerSessionRegistrationTokenKindEnum","runnerSessions","id","workspaceId","notNull","scope","default","registrationTokenId","registrationTokenKind","runnerInstanceId","provisionerId","providerRunnerId","labels","array","toolCapabilities","$type","toolCapabilitiesReportedAt","withTimezone","maxClaims","claimsUsed","revokedAt","createdAt","defaultNow","updatedAt","table","on","where","toRunnerSession","row","Error"],"mappings":"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"}
|
|
@@ -155,8 +155,8 @@ export declare const runningJobExecutions: import("drizzle-orm/pg-core").PgTable
|
|
|
155
155
|
identity: undefined;
|
|
156
156
|
generated: undefined;
|
|
157
157
|
}, {}, {}>;
|
|
158
|
-
|
|
159
|
-
name: "
|
|
158
|
+
providerRunnerId: import("drizzle-orm/pg-core").PgColumn<{
|
|
159
|
+
name: "provider_runner_id";
|
|
160
160
|
tableName: "running_jobs";
|
|
161
161
|
dataType: "string";
|
|
162
162
|
columnType: "PgText";
|
|
@@ -13,7 +13,7 @@ export const runningJobExecutions = pgTable('running_jobs', {
|
|
|
13
13
|
projectId: uuid('project_id').notNull(),
|
|
14
14
|
runnerSessionId: uuid('runner_session_id').notNull().references(()=>runnerSessions.id),
|
|
15
15
|
provisionerId: uuid('provisioner_id'),
|
|
16
|
-
|
|
16
|
+
providerRunnerId: text('provider_runner_id'),
|
|
17
17
|
requiredLabels: text('required_labels').array().notNull(),
|
|
18
18
|
runnerLabels: text('runner_labels').array().notNull(),
|
|
19
19
|
startedAt: timestamp('started_at', {
|
|
@@ -31,11 +31,11 @@ export const runningJobExecutions = pgTable('running_jobs', {
|
|
|
31
31
|
}, (table)=>[
|
|
32
32
|
index('runners_running_jobs_no_first_heartbeat_started_idx').on(table.startedAt).where(sql`"first_heartbeat_at" IS NULL`),
|
|
33
33
|
index('runners_running_jobs_last_heartbeat_at_idx').on(table.lastHeartbeatAt),
|
|
34
|
-
index('
|
|
35
|
-
index('runners_running_jobs_cancellation_requested_idx').on(table.workspaceId, table.provisionerId, table.
|
|
34
|
+
index('runners_running_jobs_provider_runner_started_idx').on(table.workspaceId, table.provisionerId, table.providerRunnerId, table.startedAt.desc()).where(sql`"provisioner_id" IS NOT NULL`),
|
|
35
|
+
index('runners_running_jobs_cancellation_requested_idx').on(table.workspaceId, table.provisionerId, table.providerRunnerId).where(sql`"cancellation_requested_at" IS NOT NULL`),
|
|
36
36
|
index('runners_running_jobs_job_id_idx').on(table.jobId),
|
|
37
37
|
index('runners_running_jobs_runner_session_id_idx').on(table.runnerSessionId),
|
|
38
|
-
check('runners_running_jobs_link_ck', sql`(${table.provisionerId} IS NULL) = (${table.
|
|
38
|
+
check('runners_running_jobs_link_ck', sql`(${table.provisionerId} IS NULL) = (${table.providerRunnerId} IS NULL)`)
|
|
39
39
|
]);
|
|
40
40
|
|
|
41
41
|
//# sourceMappingURL=running-job-executions.js.map
|