@shipfox/api-runners 5.0.0 → 6.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 +6 -6
- package/CHANGELOG.md +61 -0
- package/dist/config.d.ts +5 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +53 -6
- package/dist/config.js.map +1 -1
- package/dist/core/capacity-assignments.d.ts +7 -0
- package/dist/core/capacity-assignments.d.ts.map +1 -0
- package/dist/core/capacity-assignments.js +6 -0
- package/dist/core/capacity-assignments.js.map +1 -0
- 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/capacity-assignment.d.ts +9 -0
- package/dist/core/entities/capacity-assignment.d.ts.map +1 -0
- package/dist/core/entities/capacity-assignment.js +3 -0
- package/dist/core/entities/capacity-assignment.js.map +1 -0
- 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} +6 -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 +10 -4
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +6 -2
- 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-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 +79 -0
- package/dist/core/runner-instances.d.ts.map +1 -0
- package/dist/core/runner-instances.js +168 -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/capacity-assignments.d.ts +7 -0
- package/dist/db/capacity-assignments.d.ts.map +1 -0
- package/dist/db/capacity-assignments.js +72 -0
- package/dist/db/capacity-assignments.js.map +1 -0
- package/dist/db/db.d.ts +2837 -1009
- package/dist/db/db.d.ts.map +1 -1
- package/dist/db/db.js +11 -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-instances.d.ts +91 -0
- package/dist/db/runner-instances.d.ts.map +1 -0
- package/dist/db/runner-instances.js +511 -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/capacity-assignments.d.ts +113 -0
- package/dist/db/schema/capacity-assignments.d.ts.map +1 -0
- package/dist/db/schema/capacity-assignments.js +29 -0
- package/dist/db/schema/capacity-assignments.js.map +1 -0
- 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} +88 -34
- package/dist/db/schema/runner-instances.d.ts.map +1 -0
- package/dist/db/schema/{provisioned-runners.js → runner-instances.js} +19 -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 +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +45 -38
- 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 +2 -2
- package/dist/presentation/dto/index.d.ts.map +1 -1
- package/dist/presentation/dto/index.js +2 -2
- package/dist/presentation/dto/index.js.map +1 -1
- package/dist/presentation/dto/mint-registration-tokens.d.ts +5 -3
- package/dist/presentation/dto/mint-registration-tokens.d.ts.map +1 -1
- package/dist/presentation/dto/mint-registration-tokens.js +4 -4
- package/dist/presentation/dto/mint-registration-tokens.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-capacity.d.ts +2 -0
- package/dist/presentation/routes/assign-capacity.d.ts.map +1 -0
- package/dist/presentation/routes/assign-capacity.js +44 -0
- package/dist/presentation/routes/assign-capacity.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 +83 -50
- package/dist/presentation/routes/index.js.map +1 -1
- package/dist/presentation/routes/mint-registration-tokens.d.ts.map +1 -1
- package/dist/presentation/routes/mint-registration-tokens.js +5 -5
- package/dist/presentation/routes/mint-registration-tokens.js.map +1 -1
- package/dist/presentation/routes/planned-capacity.d.ts +3 -0
- package/dist/presentation/routes/planned-capacity.d.ts.map +1 -0
- package/dist/presentation/routes/planned-capacity.js +54 -0
- package/dist/presentation/routes/planned-capacity.js.map +1 -0
- 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 +7 -0
- package/dist/presentation/routes/runner-enrollment.d.ts.map +1 -0
- package/dist/presentation/routes/runner-enrollment.js +185 -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 +102 -24
- package/drizzle/meta/0000_snapshot.json +483 -63
- package/package.json +21 -16
- package/src/config.test.ts +0 -26
- package/src/config.ts +47 -6
- package/src/core/capacity-assignments.ts +10 -0
- package/src/core/demand.test.ts +29 -29
- package/src/core/demand.ts +22 -22
- package/src/core/entities/capacity-assignment.ts +8 -0
- 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} +5 -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 +39 -17
- 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-control-sessions.ts +190 -0
- package/src/core/{provisioned-runners.test.ts → runner-instances.test.ts} +24 -24
- package/src/core/runner-instances.ts +310 -0
- package/src/core/runner-sessions.test.ts +112 -22
- package/src/core/runner-sessions.ts +25 -14
- package/src/db/capacity-assignments.test.ts +159 -0
- package/src/db/capacity-assignments.ts +116 -0
- package/src/db/db.ts +11 -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 +31 -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/{provisioned-runners.test.ts → runner-instances.test.ts} +429 -353
- package/src/db/runner-instances.ts +942 -0
- package/src/db/runner-sessions.test.ts +19 -6
- package/src/db/runner-sessions.ts +78 -2
- package/src/db/schema/capacity-assignments.ts +34 -0
- 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} +26 -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 +39 -19
- 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 +5 -5
- package/src/presentation/dto/mint-registration-tokens.ts +8 -15
- 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-capacity.ts +48 -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 +93 -43
- 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/mint-registration-tokens.test.ts +12 -12
- package/src/presentation/routes/mint-registration-tokens.ts +5 -7
- package/src/presentation/routes/planned-capacity.ts +49 -0
- 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 +259 -0
- package/src/presentation/routes/runner-enrollment.ts +174 -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 +5 -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/provisioned-runners.d.ts.map +0 -1
- package/dist/presentation/dto/provisioned-runners.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/routes/reconcile-provisioned-runners.ts +0 -30
- package/test/factories/provisioned-runner.ts +0 -78
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
export
|
|
1
|
+
export type ProvisionerScope = 'installation' | 'workspace';
|
|
2
|
+
export interface ProvisionerTokenBase {
|
|
2
3
|
id: string;
|
|
3
|
-
|
|
4
|
+
scope: ProvisionerScope;
|
|
4
5
|
hashedToken: string;
|
|
5
6
|
prefix: string;
|
|
6
7
|
name: string | null;
|
|
@@ -12,6 +13,13 @@ export interface ProvisionerToken {
|
|
|
12
13
|
createdAt: Date;
|
|
13
14
|
updatedAt: Date;
|
|
14
15
|
}
|
|
16
|
+
export type ProvisionerToken = (ProvisionerTokenBase & {
|
|
17
|
+
scope: 'installation';
|
|
18
|
+
workspaceId: null;
|
|
19
|
+
}) | (ProvisionerTokenBase & {
|
|
20
|
+
scope: 'workspace';
|
|
21
|
+
workspaceId: string;
|
|
22
|
+
});
|
|
15
23
|
export type ActiveProvisionerToken = ProvisionerToken & {
|
|
16
24
|
lastSeenAt: Date;
|
|
17
25
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provisioner-token.d.ts","sourceRoot":"","sources":["../../../src/core/entities/provisioner-token.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"provisioner-token.d.ts","sourceRoot":"","sources":["../../../src/core/entities/provisioner-token.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG,WAAW,CAAC;AAE5D,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,gBAAgB,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,MAAM,gBAAgB,GACxB,CAAC,oBAAoB,GAAG;IAAC,KAAK,EAAE,cAAc,CAAC;IAAC,WAAW,EAAE,IAAI,CAAA;CAAC,CAAC,GACnE,CAAC,oBAAoB,GAAG;IAAC,KAAK,EAAE,WAAW,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAC,CAAC,CAAC;AAEvE,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,GAAG;IAAC,UAAU,EAAE,IAAI,CAAA;CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/entities/provisioner-token.ts"],"sourcesContent":["export interface
|
|
1
|
+
{"version":3,"sources":["../../../src/core/entities/provisioner-token.ts"],"sourcesContent":["export type ProvisionerScope = 'installation' | 'workspace';\n\nexport interface ProvisionerTokenBase {\n id: string;\n scope: ProvisionerScope;\n hashedToken: string;\n prefix: string;\n name: string | null;\n createdByUserId: string;\n revokedByUserId: string | null;\n expiresAt: Date | null;\n revokedAt: Date | null;\n lastSeenAt: Date | null;\n createdAt: Date;\n updatedAt: Date;\n}\n\nexport type ProvisionerToken =\n | (ProvisionerTokenBase & {scope: 'installation'; workspaceId: null})\n | (ProvisionerTokenBase & {scope: 'workspace'; workspaceId: string});\n\nexport type ActiveProvisionerToken = ProvisionerToken & {lastSeenAt: Date};\n"],"names":[],"mappings":"AAqBA,WAA2E"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
export type
|
|
2
|
-
export interface
|
|
1
|
+
export type RunnerInstanceState = 'starting' | 'running' | 'stopping' | 'stopped' | 'failed' | 'terminated';
|
|
2
|
+
export interface RunnerInstance {
|
|
3
3
|
id: string;
|
|
4
|
-
workspaceId: string;
|
|
4
|
+
workspaceId: string | null;
|
|
5
5
|
provisionerId: string;
|
|
6
|
-
|
|
6
|
+
providerRunnerId: string;
|
|
7
7
|
reservationId: string | null;
|
|
8
8
|
templateKey: string | null;
|
|
9
9
|
labels: string[];
|
|
10
|
-
state:
|
|
10
|
+
state: RunnerInstanceState;
|
|
11
11
|
reason: string | null;
|
|
12
12
|
runnerSessionId: string | null;
|
|
13
13
|
providerKind: string | null;
|
|
@@ -21,4 +21,4 @@ export interface ProvisionedRunner {
|
|
|
21
21
|
createdAt: Date;
|
|
22
22
|
updatedAt: Date;
|
|
23
23
|
}
|
|
24
|
-
//# sourceMappingURL=
|
|
24
|
+
//# sourceMappingURL=runner-instance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner-instance.d.ts","sourceRoot":"","sources":["../../../src/core/entities/runner-instance.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAC3B,UAAU,GACV,SAAS,GACT,UAAU,GACV,SAAS,GACT,QAAQ,GACR,YAAY,CAAC;AAEjB,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,mBAAmB,CAAC;IAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,IAAI,CAAC;IACjB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;IAC1B,qBAAqB,EAAE,IAAI,GAAG,IAAI,CAAC;IACnC,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/entities/runner-instance.ts"],"sourcesContent":["export type RunnerInstanceState =\n | 'starting'\n | 'running'\n | 'stopping'\n | 'stopped'\n | 'failed'\n | 'terminated';\n\nexport interface RunnerInstance {\n id: string;\n workspaceId: string | null;\n provisionerId: string;\n providerRunnerId: string;\n reservationId: string | null;\n templateKey: string | null;\n labels: string[];\n state: RunnerInstanceState;\n reason: string | null;\n runnerSessionId: string | null;\n providerKind: string | null;\n reportedAt: Date;\n startedAt: Date | null;\n stoppingAt: Date | null;\n stoppedAt: Date | null;\n failedAt: Date | null;\n terminatedAt: Date | null;\n reservationReleasedAt: Date | null;\n createdAt: Date;\n updatedAt: Date;\n}\n"],"names":[],"mappings":"AAQA,WAqBC"}
|
|
@@ -4,14 +4,16 @@ export interface RunnerSession {
|
|
|
4
4
|
workspaceId: string;
|
|
5
5
|
scope: 'workspace';
|
|
6
6
|
registrationTokenId: string;
|
|
7
|
-
registrationTokenKind: 'manual' | 'ephemeral';
|
|
7
|
+
registrationTokenKind: 'manual' | 'ephemeral' | 'activation';
|
|
8
|
+
runnerInstanceId: string | null;
|
|
8
9
|
provisionerId: string | null;
|
|
9
|
-
|
|
10
|
+
providerRunnerId: string | null;
|
|
10
11
|
labels: string[];
|
|
11
12
|
toolCapabilities: RunnerToolCapabilitiesDto | null;
|
|
12
13
|
toolCapabilitiesReportedAt: Date | null;
|
|
13
14
|
maxClaims: number | null;
|
|
14
15
|
claimsUsed: number;
|
|
16
|
+
revokedAt: Date | null;
|
|
15
17
|
createdAt: Date;
|
|
16
18
|
updatedAt: Date;
|
|
17
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-session.d.ts","sourceRoot":"","sources":["../../../src/core/entities/runner-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,yBAAyB,EAAC,MAAM,0BAA0B,CAAC;AAExE,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,WAAW,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,QAAQ,GAAG,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"runner-session.d.ts","sourceRoot":"","sources":["../../../src/core/entities/runner-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,yBAAyB,EAAC,MAAM,0BAA0B,CAAC;AAExE,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,WAAW,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,QAAQ,GAAG,WAAW,GAAG,YAAY,CAAC;IAC7D,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,gBAAgB,EAAE,yBAAyB,GAAG,IAAI,CAAC;IACnD,0BAA0B,EAAE,IAAI,GAAG,IAAI,CAAC;IACxC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/entities/runner-session.ts"],"sourcesContent":["import type {RunnerToolCapabilitiesDto} from '@shipfox/api-runners-dto';\n\nexport interface RunnerSession {\n id: string;\n workspaceId: string;\n scope: 'workspace';\n registrationTokenId: string;\n registrationTokenKind: 'manual' | 'ephemeral';\n provisionerId: string | null;\n
|
|
1
|
+
{"version":3,"sources":["../../../src/core/entities/runner-session.ts"],"sourcesContent":["import type {RunnerToolCapabilitiesDto} from '@shipfox/api-runners-dto';\n\nexport interface RunnerSession {\n id: string;\n workspaceId: string;\n scope: 'workspace';\n registrationTokenId: string;\n registrationTokenKind: 'manual' | 'ephemeral' | 'activation';\n runnerInstanceId: string | null;\n provisionerId: string | null;\n providerRunnerId: string | null;\n labels: string[];\n toolCapabilities: RunnerToolCapabilitiesDto | null;\n toolCapabilitiesReportedAt: Date | null;\n maxClaims: number | null;\n claimsUsed: number;\n revokedAt: Date | null;\n createdAt: Date;\n updatedAt: Date;\n}\n"],"names":[],"mappings":"AAEA,WAiBC"}
|
|
@@ -2,7 +2,7 @@ import type { EphemeralRegistrationToken } from './entities/ephemeral-registrati
|
|
|
2
2
|
export interface MintEphemeralRegistrationTokenParams {
|
|
3
3
|
workspaceId: string;
|
|
4
4
|
provisionerId: string;
|
|
5
|
-
|
|
5
|
+
providerRunnerId: string;
|
|
6
6
|
reservationId?: string | null | undefined;
|
|
7
7
|
ttlSeconds: number;
|
|
8
8
|
}
|
|
@@ -10,19 +10,19 @@ export interface MintEphemeralRegistrationTokenResult {
|
|
|
10
10
|
token: EphemeralRegistrationToken;
|
|
11
11
|
rawToken: string;
|
|
12
12
|
}
|
|
13
|
-
export interface
|
|
14
|
-
|
|
13
|
+
export interface MintEphemeralRegistrationTokensBatchRunnerInstance {
|
|
14
|
+
providerRunnerId: string;
|
|
15
15
|
}
|
|
16
16
|
export interface MintEphemeralRegistrationTokensBatchParams {
|
|
17
17
|
workspaceId: string;
|
|
18
18
|
provisionerId: string;
|
|
19
19
|
reservationId: string;
|
|
20
|
-
|
|
20
|
+
providerRunners: MintEphemeralRegistrationTokensBatchRunnerInstance[];
|
|
21
21
|
ttlSeconds: number;
|
|
22
22
|
maxBatchSize: number;
|
|
23
23
|
}
|
|
24
24
|
export interface MintEphemeralRegistrationTokensBatchResult {
|
|
25
|
-
|
|
25
|
+
providerRunnerId: string;
|
|
26
26
|
token: EphemeralRegistrationToken;
|
|
27
27
|
rawToken: string;
|
|
28
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ephemeral-registration-tokens.d.ts","sourceRoot":"","sources":["../../src/core/ephemeral-registration-tokens.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,0BAA0B,EAAC,MAAM,4CAA4C,CAAC;AAG3F,MAAM,WAAW,oCAAoC;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,
|
|
1
|
+
{"version":3,"file":"ephemeral-registration-tokens.d.ts","sourceRoot":"","sources":["../../src/core/ephemeral-registration-tokens.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,0BAA0B,EAAC,MAAM,4CAA4C,CAAC;AAG3F,MAAM,WAAW,oCAAoC;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oCAAoC;IACnD,KAAK,EAAE,0BAA0B,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kDAAkD;IACjE,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,0CAA0C;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,kDAAkD,EAAE,CAAC;IACtE,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,0CAA0C;IACzD,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,0BAA0B,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,oCAAoC,GAC3C,OAAO,CAAC,oCAAoC,CAAC,CAc/C;AAED,wBAAsB,oCAAoC,CACxD,MAAM,EAAE,0CAA0C,GACjD,OAAO,CAAC,0CAA0C,EAAE,CAAC,CA8BvD"}
|
|
@@ -3,12 +3,12 @@ import { createEphemeralRegistrationToken, createEphemeralRegistrationTokensBatc
|
|
|
3
3
|
import { RegistrationTokenBatchTooLargeError } from './errors.js';
|
|
4
4
|
export async function mintEphemeralRegistrationToken(params) {
|
|
5
5
|
const expiresAt = new Date(Date.now() + params.ttlSeconds * 1000);
|
|
6
|
-
const row = buildEphemeralTokenRow(params.
|
|
6
|
+
const row = buildEphemeralTokenRow(params.providerRunnerId, expiresAt);
|
|
7
7
|
const token = await createEphemeralRegistrationToken({
|
|
8
8
|
workspaceId: params.workspaceId,
|
|
9
9
|
provisionerId: params.provisionerId,
|
|
10
10
|
reservationId: params.reservationId ?? null,
|
|
11
|
-
|
|
11
|
+
providerRunnerId: params.providerRunnerId,
|
|
12
12
|
hashedToken: row.hashedToken,
|
|
13
13
|
prefix: row.prefix,
|
|
14
14
|
expiresAt: row.expiresAt
|
|
@@ -19,11 +19,11 @@ export async function mintEphemeralRegistrationToken(params) {
|
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
21
|
export async function mintEphemeralRegistrationTokensBatch(params) {
|
|
22
|
-
if (params.
|
|
23
|
-
throw new RegistrationTokenBatchTooLargeError(params.
|
|
22
|
+
if (params.providerRunners.length > params.maxBatchSize) {
|
|
23
|
+
throw new RegistrationTokenBatchTooLargeError(params.providerRunners.length, params.maxBatchSize);
|
|
24
24
|
}
|
|
25
25
|
const expiresAt = new Date(Date.now() + params.ttlSeconds * 1000);
|
|
26
|
-
const rows = params.
|
|
26
|
+
const rows = params.providerRunners.map((providerRunner)=>buildEphemeralTokenRow(providerRunner.providerRunnerId, expiresAt));
|
|
27
27
|
const tokens = await createEphemeralRegistrationTokensBatch({
|
|
28
28
|
workspaceId: params.workspaceId,
|
|
29
29
|
provisionerId: params.provisionerId,
|
|
@@ -31,26 +31,26 @@ export async function mintEphemeralRegistrationTokensBatch(params) {
|
|
|
31
31
|
expiresAt,
|
|
32
32
|
rows
|
|
33
33
|
});
|
|
34
|
-
const
|
|
35
|
-
token.
|
|
34
|
+
const tokensByRunnerInstanceId = new Map(tokens.map((token)=>[
|
|
35
|
+
token.providerRunnerId,
|
|
36
36
|
token
|
|
37
37
|
]));
|
|
38
38
|
return rows.map((row)=>{
|
|
39
|
-
const token =
|
|
39
|
+
const token = tokensByRunnerInstanceId.get(row.providerRunnerId);
|
|
40
40
|
if (!token) {
|
|
41
|
-
throw new Error(`Inserted token not returned for provisioned runner: ${row.
|
|
41
|
+
throw new Error(`Inserted token not returned for provisioned runner: ${row.providerRunnerId}`);
|
|
42
42
|
}
|
|
43
43
|
return {
|
|
44
|
-
|
|
44
|
+
providerRunnerId: row.providerRunnerId,
|
|
45
45
|
rawToken: row.rawToken,
|
|
46
46
|
token
|
|
47
47
|
};
|
|
48
48
|
});
|
|
49
49
|
}
|
|
50
|
-
function buildEphemeralTokenRow(
|
|
50
|
+
function buildEphemeralTokenRow(providerRunnerId, expiresAt) {
|
|
51
51
|
const rawToken = generateOpaqueToken('ephemeralRegistrationToken');
|
|
52
52
|
return {
|
|
53
|
-
|
|
53
|
+
providerRunnerId,
|
|
54
54
|
rawToken,
|
|
55
55
|
hashedToken: hashOpaqueToken(rawToken),
|
|
56
56
|
prefix: extractDisplayPrefix(rawToken),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/ephemeral-registration-tokens.ts"],"sourcesContent":["import {extractDisplayPrefix, generateOpaqueToken, hashOpaqueToken} from '@shipfox/node-tokens';\nimport {\n createEphemeralRegistrationToken,\n createEphemeralRegistrationTokensBatch,\n} from '#db/ephemeral-registration-tokens.js';\nimport type {EphemeralRegistrationToken} from './entities/ephemeral-registration-token.js';\nimport {RegistrationTokenBatchTooLargeError} from './errors.js';\n\nexport interface MintEphemeralRegistrationTokenParams {\n workspaceId: string;\n provisionerId: string;\n
|
|
1
|
+
{"version":3,"sources":["../../src/core/ephemeral-registration-tokens.ts"],"sourcesContent":["import {extractDisplayPrefix, generateOpaqueToken, hashOpaqueToken} from '@shipfox/node-tokens';\nimport {\n createEphemeralRegistrationToken,\n createEphemeralRegistrationTokensBatch,\n} from '#db/ephemeral-registration-tokens.js';\nimport type {EphemeralRegistrationToken} from './entities/ephemeral-registration-token.js';\nimport {RegistrationTokenBatchTooLargeError} from './errors.js';\n\nexport interface MintEphemeralRegistrationTokenParams {\n workspaceId: string;\n provisionerId: string;\n providerRunnerId: string;\n reservationId?: string | null | undefined;\n ttlSeconds: number;\n}\n\nexport interface MintEphemeralRegistrationTokenResult {\n token: EphemeralRegistrationToken;\n rawToken: string;\n}\n\nexport interface MintEphemeralRegistrationTokensBatchRunnerInstance {\n providerRunnerId: string;\n}\n\nexport interface MintEphemeralRegistrationTokensBatchParams {\n workspaceId: string;\n provisionerId: string;\n reservationId: string;\n providerRunners: MintEphemeralRegistrationTokensBatchRunnerInstance[];\n ttlSeconds: number;\n maxBatchSize: number;\n}\n\nexport interface MintEphemeralRegistrationTokensBatchResult {\n providerRunnerId: string;\n token: EphemeralRegistrationToken;\n rawToken: string;\n}\n\nexport async function mintEphemeralRegistrationToken(\n params: MintEphemeralRegistrationTokenParams,\n): Promise<MintEphemeralRegistrationTokenResult> {\n const expiresAt = new Date(Date.now() + params.ttlSeconds * 1000);\n const row = buildEphemeralTokenRow(params.providerRunnerId, expiresAt);\n const token = await createEphemeralRegistrationToken({\n workspaceId: params.workspaceId,\n provisionerId: params.provisionerId,\n reservationId: params.reservationId ?? null,\n providerRunnerId: params.providerRunnerId,\n hashedToken: row.hashedToken,\n prefix: row.prefix,\n expiresAt: row.expiresAt,\n });\n\n return {token, rawToken: row.rawToken};\n}\n\nexport async function mintEphemeralRegistrationTokensBatch(\n params: MintEphemeralRegistrationTokensBatchParams,\n): Promise<MintEphemeralRegistrationTokensBatchResult[]> {\n if (params.providerRunners.length > params.maxBatchSize) {\n throw new RegistrationTokenBatchTooLargeError(\n params.providerRunners.length,\n params.maxBatchSize,\n );\n }\n\n const expiresAt = new Date(Date.now() + params.ttlSeconds * 1000);\n const rows = params.providerRunners.map((providerRunner) =>\n buildEphemeralTokenRow(providerRunner.providerRunnerId, expiresAt),\n );\n const tokens = await createEphemeralRegistrationTokensBatch({\n workspaceId: params.workspaceId,\n provisionerId: params.provisionerId,\n reservationId: params.reservationId,\n expiresAt,\n rows,\n });\n const tokensByRunnerInstanceId = new Map(tokens.map((token) => [token.providerRunnerId, token]));\n\n return rows.map((row) => {\n const token = tokensByRunnerInstanceId.get(row.providerRunnerId);\n if (!token) {\n throw new Error(\n `Inserted token not returned for provisioned runner: ${row.providerRunnerId}`,\n );\n }\n return {providerRunnerId: row.providerRunnerId, rawToken: row.rawToken, token};\n });\n}\n\ninterface EphemeralTokenRow {\n providerRunnerId: string;\n rawToken: string;\n hashedToken: string;\n prefix: string;\n expiresAt: Date;\n}\n\nfunction buildEphemeralTokenRow(providerRunnerId: string, expiresAt: Date): EphemeralTokenRow {\n const rawToken = generateOpaqueToken('ephemeralRegistrationToken');\n return {\n providerRunnerId,\n rawToken,\n hashedToken: hashOpaqueToken(rawToken),\n prefix: extractDisplayPrefix(rawToken),\n expiresAt,\n };\n}\n"],"names":["extractDisplayPrefix","generateOpaqueToken","hashOpaqueToken","createEphemeralRegistrationToken","createEphemeralRegistrationTokensBatch","RegistrationTokenBatchTooLargeError","mintEphemeralRegistrationToken","params","expiresAt","Date","now","ttlSeconds","row","buildEphemeralTokenRow","providerRunnerId","token","workspaceId","provisionerId","reservationId","hashedToken","prefix","rawToken","mintEphemeralRegistrationTokensBatch","providerRunners","length","maxBatchSize","rows","map","providerRunner","tokens","tokensByRunnerInstanceId","Map","get","Error"],"mappings":"AAAA,SAAQA,oBAAoB,EAAEC,mBAAmB,EAAEC,eAAe,QAAO,uBAAuB;AAChG,SACEC,gCAAgC,EAChCC,sCAAsC,QACjC,uCAAuC;AAE9C,SAAQC,mCAAmC,QAAO,cAAc;AAkChE,OAAO,eAAeC,+BACpBC,MAA4C;IAE5C,MAAMC,YAAY,IAAIC,KAAKA,KAAKC,GAAG,KAAKH,OAAOI,UAAU,GAAG;IAC5D,MAAMC,MAAMC,uBAAuBN,OAAOO,gBAAgB,EAAEN;IAC5D,MAAMO,QAAQ,MAAMZ,iCAAiC;QACnDa,aAAaT,OAAOS,WAAW;QAC/BC,eAAeV,OAAOU,aAAa;QACnCC,eAAeX,OAAOW,aAAa,IAAI;QACvCJ,kBAAkBP,OAAOO,gBAAgB;QACzCK,aAAaP,IAAIO,WAAW;QAC5BC,QAAQR,IAAIQ,MAAM;QAClBZ,WAAWI,IAAIJ,SAAS;IAC1B;IAEA,OAAO;QAACO;QAAOM,UAAUT,IAAIS,QAAQ;IAAA;AACvC;AAEA,OAAO,eAAeC,qCACpBf,MAAkD;IAElD,IAAIA,OAAOgB,eAAe,CAACC,MAAM,GAAGjB,OAAOkB,YAAY,EAAE;QACvD,MAAM,IAAIpB,oCACRE,OAAOgB,eAAe,CAACC,MAAM,EAC7BjB,OAAOkB,YAAY;IAEvB;IAEA,MAAMjB,YAAY,IAAIC,KAAKA,KAAKC,GAAG,KAAKH,OAAOI,UAAU,GAAG;IAC5D,MAAMe,OAAOnB,OAAOgB,eAAe,CAACI,GAAG,CAAC,CAACC,iBACvCf,uBAAuBe,eAAed,gBAAgB,EAAEN;IAE1D,MAAMqB,SAAS,MAAMzB,uCAAuC;QAC1DY,aAAaT,OAAOS,WAAW;QAC/BC,eAAeV,OAAOU,aAAa;QACnCC,eAAeX,OAAOW,aAAa;QACnCV;QACAkB;IACF;IACA,MAAMI,2BAA2B,IAAIC,IAAIF,OAAOF,GAAG,CAAC,CAACZ,QAAU;YAACA,MAAMD,gBAAgB;YAAEC;SAAM;IAE9F,OAAOW,KAAKC,GAAG,CAAC,CAACf;QACf,MAAMG,QAAQe,yBAAyBE,GAAG,CAACpB,IAAIE,gBAAgB;QAC/D,IAAI,CAACC,OAAO;YACV,MAAM,IAAIkB,MACR,CAAC,oDAAoD,EAAErB,IAAIE,gBAAgB,EAAE;QAEjF;QACA,OAAO;YAACA,kBAAkBF,IAAIE,gBAAgB;YAAEO,UAAUT,IAAIS,QAAQ;YAAEN;QAAK;IAC/E;AACF;AAUA,SAASF,uBAAuBC,gBAAwB,EAAEN,SAAe;IACvE,MAAMa,WAAWpB,oBAAoB;IACrC,OAAO;QACLa;QACAO;QACAF,aAAajB,gBAAgBmB;QAC7BD,QAAQpB,qBAAqBqB;QAC7Bb;IACF;AACF"}
|
package/dist/core/errors.d.ts
CHANGED
|
@@ -29,8 +29,8 @@ export declare class RegistrationTokenWorkspaceMismatchError extends Error {
|
|
|
29
29
|
export declare class ActiveEphemeralRegistrationTokenExistsError extends Error {
|
|
30
30
|
readonly workspaceId: string;
|
|
31
31
|
readonly provisionerId: string;
|
|
32
|
-
readonly
|
|
33
|
-
constructor(workspaceId: string, provisionerId: string,
|
|
32
|
+
readonly providerRunnerId: string;
|
|
33
|
+
constructor(workspaceId: string, provisionerId: string, providerRunnerId: string);
|
|
34
34
|
}
|
|
35
35
|
export declare class ReservationNotFoundError extends Error {
|
|
36
36
|
readonly reservationId: string;
|
|
@@ -40,6 +40,18 @@ export declare class ReservationExpiredError extends Error {
|
|
|
40
40
|
readonly reservationId: string;
|
|
41
41
|
constructor(reservationId: string);
|
|
42
42
|
}
|
|
43
|
+
export declare class CapacityNotAssignableError extends Error {
|
|
44
|
+
readonly capacityId: string;
|
|
45
|
+
constructor(capacityId: string);
|
|
46
|
+
}
|
|
47
|
+
export declare class CapacityAlreadyAssignedError extends Error {
|
|
48
|
+
readonly capacityId: string;
|
|
49
|
+
constructor(capacityId: string);
|
|
50
|
+
}
|
|
51
|
+
export declare class ReservationAlreadyAssignedError extends Error {
|
|
52
|
+
readonly reservationId: string;
|
|
53
|
+
constructor(reservationId: string);
|
|
54
|
+
}
|
|
43
55
|
export declare class RegistrationTokenBatchTooLargeError extends Error {
|
|
44
56
|
readonly requested: number;
|
|
45
57
|
readonly max: number;
|
|
@@ -52,8 +64,8 @@ export declare class RegistrationTokenBatchExceedsReservationError extends Error
|
|
|
52
64
|
constructor(requested: number, reservationCount: number, alreadyMinted?: number);
|
|
53
65
|
}
|
|
54
66
|
export declare class ActiveEphemeralRegistrationTokensExistError extends Error {
|
|
55
|
-
readonly
|
|
56
|
-
constructor(
|
|
67
|
+
readonly providerRunnerIds: string[];
|
|
68
|
+
constructor(providerRunnerIds: string[]);
|
|
57
69
|
}
|
|
58
70
|
export declare class RunnerSessionExhaustedError extends Error {
|
|
59
71
|
readonly runnerSessionId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,gCAAiC,SAAQ,KAAK;gBAC7C,cAAc,EAAE,MAAM;CAInC;AAED,qBAAa,oCAAqC,SAAQ,KAAK;gBACjD,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,6BAA8B,SAAQ,KAAK;gBAC1C,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,sBAAuB,SAAQ,KAAK;;CAKhD;AAED,qBAAa,wBAAyB,SAAQ,KAAK;;CAKlD;AAED,qBAAa,8BAA+B,SAAQ,KAAK;aAC3B,gBAAgB,EAAE,MAAM;gBAAxB,gBAAgB,EAAE,MAAM;CAIrD;AAED,qBAAa,6BAA8B,SAAQ,KAAK;aAC1B,gBAAgB,EAAE,MAAM;gBAAxB,gBAAgB,EAAE,MAAM;CAIrD;AAED,qBAAa,uCAAwC,SAAQ,KAAK;aAE9C,gBAAgB,EAAE,MAAM;aACxB,WAAW,EAAE,MAAM;gBADnB,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM;CAOtC;AAED,qBAAa,2CAA4C,SAAQ,KAAK;aAElD,WAAW,EAAE,MAAM;aACnB,aAAa,EAAE,MAAM;aACrB,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,gCAAiC,SAAQ,KAAK;gBAC7C,cAAc,EAAE,MAAM;CAInC;AAED,qBAAa,oCAAqC,SAAQ,KAAK;gBACjD,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,6BAA8B,SAAQ,KAAK;gBAC1C,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,sBAAuB,SAAQ,KAAK;;CAKhD;AAED,qBAAa,wBAAyB,SAAQ,KAAK;;CAKlD;AAED,qBAAa,8BAA+B,SAAQ,KAAK;aAC3B,gBAAgB,EAAE,MAAM;gBAAxB,gBAAgB,EAAE,MAAM;CAIrD;AAED,qBAAa,6BAA8B,SAAQ,KAAK;aAC1B,gBAAgB,EAAE,MAAM;gBAAxB,gBAAgB,EAAE,MAAM;CAIrD;AAED,qBAAa,uCAAwC,SAAQ,KAAK;aAE9C,gBAAgB,EAAE,MAAM;aACxB,WAAW,EAAE,MAAM;gBADnB,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM;CAOtC;AAED,qBAAa,2CAA4C,SAAQ,KAAK;aAElD,WAAW,EAAE,MAAM;aACnB,aAAa,EAAE,MAAM;aACrB,gBAAgB,EAAE,MAAM;gBAFxB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,gBAAgB,EAAE,MAAM;CAO3C;AAED,qBAAa,wBAAyB,SAAQ,KAAK;aACrB,aAAa,EAAE,MAAM;gBAArB,aAAa,EAAE,MAAM;CAIlD;AAED,qBAAa,uBAAwB,SAAQ,KAAK;aACpB,aAAa,EAAE,MAAM;gBAArB,aAAa,EAAE,MAAM;CAIlD;AAED,qBAAa,0BAA2B,SAAQ,KAAK;aACvB,UAAU,EAAE,MAAM;gBAAlB,UAAU,EAAE,MAAM;CAI/C;AACD,qBAAa,4BAA6B,SAAQ,KAAK;aACzB,UAAU,EAAE,MAAM;gBAAlB,UAAU,EAAE,MAAM;CAI/C;AACD,qBAAa,+BAAgC,SAAQ,KAAK;aAC5B,aAAa,EAAE,MAAM;gBAArB,aAAa,EAAE,MAAM;CAIlD;AAED,qBAAa,mCAAoC,SAAQ,KAAK;aAE1C,SAAS,EAAE,MAAM;aACjB,GAAG,EAAE,MAAM;gBADX,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM;CAO9B;AAED,qBAAa,6CAA8C,SAAQ,KAAK;aAEpD,SAAS,EAAE,MAAM;aACjB,gBAAgB,EAAE,MAAM;aACxB,aAAa,EAAE,MAAM;gBAFrB,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,MAAM,EACxB,aAAa,GAAE,MAAU;CAO5C;AAED,qBAAa,2CAA4C,SAAQ,KAAK;aACxC,iBAAiB,EAAE,MAAM,EAAE;gBAA3B,iBAAiB,EAAE,MAAM,EAAE;CAMxD;AAED,qBAAa,2BAA4B,SAAQ,KAAK;aACxB,eAAe,EAAE,MAAM;gBAAvB,eAAe,EAAE,MAAM;CAIpD"}
|
package/dist/core/errors.js
CHANGED
|
@@ -47,8 +47,8 @@ export class RegistrationTokenWorkspaceMismatchError extends Error {
|
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
export class ActiveEphemeralRegistrationTokenExistsError extends Error {
|
|
50
|
-
constructor(workspaceId, provisionerId,
|
|
51
|
-
super(`Active ephemeral registration token already exists for provisioned runner ${
|
|
50
|
+
constructor(workspaceId, provisionerId, providerRunnerId){
|
|
51
|
+
super(`Active ephemeral registration token already exists for provisioned runner ${providerRunnerId} in workspace ${workspaceId}`), this.workspaceId = workspaceId, this.provisionerId = provisionerId, this.providerRunnerId = providerRunnerId;
|
|
52
52
|
this.name = 'ActiveEphemeralRegistrationTokenExistsError';
|
|
53
53
|
}
|
|
54
54
|
}
|
|
@@ -64,6 +64,24 @@ export class ReservationExpiredError extends Error {
|
|
|
64
64
|
this.name = 'ReservationExpiredError';
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
|
+
export class CapacityNotAssignableError extends Error {
|
|
68
|
+
constructor(capacityId){
|
|
69
|
+
super(`Capacity cannot be assigned: ${capacityId}`), this.capacityId = capacityId;
|
|
70
|
+
this.name = 'CapacityNotAssignableError';
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
export class CapacityAlreadyAssignedError extends Error {
|
|
74
|
+
constructor(capacityId){
|
|
75
|
+
super(`Capacity is already assigned: ${capacityId}`), this.capacityId = capacityId;
|
|
76
|
+
this.name = 'CapacityAlreadyAssignedError';
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
export class ReservationAlreadyAssignedError extends Error {
|
|
80
|
+
constructor(reservationId){
|
|
81
|
+
super(`Reservation is already assigned: ${reservationId}`), this.reservationId = reservationId;
|
|
82
|
+
this.name = 'ReservationAlreadyAssignedError';
|
|
83
|
+
}
|
|
84
|
+
}
|
|
67
85
|
export class RegistrationTokenBatchTooLargeError extends Error {
|
|
68
86
|
constructor(requested, max){
|
|
69
87
|
super(`Registration token batch requested ${requested} provisioned runners, exceeding max ${max}`), this.requested = requested, this.max = max;
|
|
@@ -77,8 +95,8 @@ export class RegistrationTokenBatchExceedsReservationError extends Error {
|
|
|
77
95
|
}
|
|
78
96
|
}
|
|
79
97
|
export class ActiveEphemeralRegistrationTokensExistError extends Error {
|
|
80
|
-
constructor(
|
|
81
|
-
super(`Active ephemeral registration tokens already exist for provisioned runners: ${
|
|
98
|
+
constructor(providerRunnerIds){
|
|
99
|
+
super(`Active ephemeral registration tokens already exist for provisioned runners: ${providerRunnerIds.join(', ')}`), this.providerRunnerIds = providerRunnerIds;
|
|
82
100
|
this.name = 'ActiveEphemeralRegistrationTokensExistError';
|
|
83
101
|
}
|
|
84
102
|
}
|
package/dist/core/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/errors.ts"],"sourcesContent":["export class RunningJobExecutionNotFoundError extends Error {\n constructor(jobExecutionId: string) {\n super(`Running job execution not found: ${jobExecutionId}`);\n this.name = 'RunningJobExecutionNotFoundError';\n }\n}\n\nexport class ManualRegistrationTokenNotFoundError extends Error {\n constructor(tokenId: string) {\n super(`Manual registration token not found: ${tokenId}`);\n this.name = 'ManualRegistrationTokenNotFoundError';\n }\n}\n\nexport class ProvisionerTokenNotFoundError extends Error {\n constructor(tokenId: string) {\n super(`Provisioner token not found: ${tokenId}`);\n this.name = 'ProvisionerTokenNotFoundError';\n }\n}\n\nexport class EmptyRunnerLabelsError extends Error {\n constructor() {\n super('Runner labels cannot be empty');\n this.name = 'EmptyRunnerLabelsError';\n }\n}\n\nexport class EmptyRequiredLabelsError extends Error {\n constructor() {\n super('Required labels cannot be empty');\n this.name = 'EmptyRequiredLabelsError';\n }\n}\n\nexport class RegistrationTokenConsumedError extends Error {\n constructor(public readonly ephemeralTokenId: string) {\n super(`Ephemeral registration token has already been consumed: ${ephemeralTokenId}`);\n this.name = 'RegistrationTokenConsumedError';\n }\n}\n\nexport class RegistrationTokenExpiredError extends Error {\n constructor(public readonly ephemeralTokenId: string) {\n super(`Ephemeral registration token has expired: ${ephemeralTokenId}`);\n this.name = 'RegistrationTokenExpiredError';\n }\n}\n\nexport class RegistrationTokenWorkspaceMismatchError extends Error {\n constructor(\n public readonly ephemeralTokenId: string,\n public readonly workspaceId: string,\n ) {\n super(\n `Ephemeral registration token ${ephemeralTokenId} does not belong to workspace ${workspaceId}`,\n );\n this.name = 'RegistrationTokenWorkspaceMismatchError';\n }\n}\n\nexport class ActiveEphemeralRegistrationTokenExistsError extends Error {\n constructor(\n public readonly workspaceId: string,\n public readonly provisionerId: string,\n public readonly
|
|
1
|
+
{"version":3,"sources":["../../src/core/errors.ts"],"sourcesContent":["export class RunningJobExecutionNotFoundError extends Error {\n constructor(jobExecutionId: string) {\n super(`Running job execution not found: ${jobExecutionId}`);\n this.name = 'RunningJobExecutionNotFoundError';\n }\n}\n\nexport class ManualRegistrationTokenNotFoundError extends Error {\n constructor(tokenId: string) {\n super(`Manual registration token not found: ${tokenId}`);\n this.name = 'ManualRegistrationTokenNotFoundError';\n }\n}\n\nexport class ProvisionerTokenNotFoundError extends Error {\n constructor(tokenId: string) {\n super(`Provisioner token not found: ${tokenId}`);\n this.name = 'ProvisionerTokenNotFoundError';\n }\n}\n\nexport class EmptyRunnerLabelsError extends Error {\n constructor() {\n super('Runner labels cannot be empty');\n this.name = 'EmptyRunnerLabelsError';\n }\n}\n\nexport class EmptyRequiredLabelsError extends Error {\n constructor() {\n super('Required labels cannot be empty');\n this.name = 'EmptyRequiredLabelsError';\n }\n}\n\nexport class RegistrationTokenConsumedError extends Error {\n constructor(public readonly ephemeralTokenId: string) {\n super(`Ephemeral registration token has already been consumed: ${ephemeralTokenId}`);\n this.name = 'RegistrationTokenConsumedError';\n }\n}\n\nexport class RegistrationTokenExpiredError extends Error {\n constructor(public readonly ephemeralTokenId: string) {\n super(`Ephemeral registration token has expired: ${ephemeralTokenId}`);\n this.name = 'RegistrationTokenExpiredError';\n }\n}\n\nexport class RegistrationTokenWorkspaceMismatchError extends Error {\n constructor(\n public readonly ephemeralTokenId: string,\n public readonly workspaceId: string,\n ) {\n super(\n `Ephemeral registration token ${ephemeralTokenId} does not belong to workspace ${workspaceId}`,\n );\n this.name = 'RegistrationTokenWorkspaceMismatchError';\n }\n}\n\nexport class ActiveEphemeralRegistrationTokenExistsError extends Error {\n constructor(\n public readonly workspaceId: string,\n public readonly provisionerId: string,\n public readonly providerRunnerId: string,\n ) {\n super(\n `Active ephemeral registration token already exists for provisioned runner ${providerRunnerId} in workspace ${workspaceId}`,\n );\n this.name = 'ActiveEphemeralRegistrationTokenExistsError';\n }\n}\n\nexport class ReservationNotFoundError extends Error {\n constructor(public readonly reservationId: string) {\n super(`Reservation not found: ${reservationId}`);\n this.name = 'ReservationNotFoundError';\n }\n}\n\nexport class ReservationExpiredError extends Error {\n constructor(public readonly reservationId: string) {\n super(`Reservation has expired: ${reservationId}`);\n this.name = 'ReservationExpiredError';\n }\n}\n\nexport class CapacityNotAssignableError extends Error {\n constructor(public readonly capacityId: string) {\n super(`Capacity cannot be assigned: ${capacityId}`);\n this.name = 'CapacityNotAssignableError';\n }\n}\nexport class CapacityAlreadyAssignedError extends Error {\n constructor(public readonly capacityId: string) {\n super(`Capacity is already assigned: ${capacityId}`);\n this.name = 'CapacityAlreadyAssignedError';\n }\n}\nexport class ReservationAlreadyAssignedError extends Error {\n constructor(public readonly reservationId: string) {\n super(`Reservation is already assigned: ${reservationId}`);\n this.name = 'ReservationAlreadyAssignedError';\n }\n}\n\nexport class RegistrationTokenBatchTooLargeError extends Error {\n constructor(\n public readonly requested: number,\n public readonly max: number,\n ) {\n super(\n `Registration token batch requested ${requested} provisioned runners, exceeding max ${max}`,\n );\n this.name = 'RegistrationTokenBatchTooLargeError';\n }\n}\n\nexport class RegistrationTokenBatchExceedsReservationError extends Error {\n constructor(\n public readonly requested: number,\n public readonly reservationCount: number,\n public readonly alreadyMinted: number = 0,\n ) {\n super(\n `Registration token batch requested ${requested} provisioned runners with ${alreadyMinted} already minted, exceeding reservation count ${reservationCount}`,\n );\n this.name = 'RegistrationTokenBatchExceedsReservationError';\n }\n}\n\nexport class ActiveEphemeralRegistrationTokensExistError extends Error {\n constructor(public readonly providerRunnerIds: string[]) {\n super(\n `Active ephemeral registration tokens already exist for provisioned runners: ${providerRunnerIds.join(', ')}`,\n );\n this.name = 'ActiveEphemeralRegistrationTokensExistError';\n }\n}\n\nexport class RunnerSessionExhaustedError extends Error {\n constructor(public readonly runnerSessionId: string) {\n super(`Runner session claim limit exhausted: ${runnerSessionId}`);\n this.name = 'RunnerSessionExhaustedError';\n }\n}\n"],"names":["RunningJobExecutionNotFoundError","Error","jobExecutionId","name","ManualRegistrationTokenNotFoundError","tokenId","ProvisionerTokenNotFoundError","EmptyRunnerLabelsError","EmptyRequiredLabelsError","RegistrationTokenConsumedError","ephemeralTokenId","RegistrationTokenExpiredError","RegistrationTokenWorkspaceMismatchError","workspaceId","ActiveEphemeralRegistrationTokenExistsError","provisionerId","providerRunnerId","ReservationNotFoundError","reservationId","ReservationExpiredError","CapacityNotAssignableError","capacityId","CapacityAlreadyAssignedError","ReservationAlreadyAssignedError","RegistrationTokenBatchTooLargeError","requested","max","RegistrationTokenBatchExceedsReservationError","reservationCount","alreadyMinted","ActiveEphemeralRegistrationTokensExistError","providerRunnerIds","join","RunnerSessionExhaustedError","runnerSessionId"],"mappings":"AAAA,OAAO,MAAMA,yCAAyCC;IACpD,YAAYC,cAAsB,CAAE;QAClC,KAAK,CAAC,CAAC,iCAAiC,EAAEA,gBAAgB;QAC1D,IAAI,CAACC,IAAI,GAAG;IACd;AACF;AAEA,OAAO,MAAMC,6CAA6CH;IACxD,YAAYI,OAAe,CAAE;QAC3B,KAAK,CAAC,CAAC,qCAAqC,EAAEA,SAAS;QACvD,IAAI,CAACF,IAAI,GAAG;IACd;AACF;AAEA,OAAO,MAAMG,sCAAsCL;IACjD,YAAYI,OAAe,CAAE;QAC3B,KAAK,CAAC,CAAC,6BAA6B,EAAEA,SAAS;QAC/C,IAAI,CAACF,IAAI,GAAG;IACd;AACF;AAEA,OAAO,MAAMI,+BAA+BN;IAC1C,aAAc;QACZ,KAAK,CAAC;QACN,IAAI,CAACE,IAAI,GAAG;IACd;AACF;AAEA,OAAO,MAAMK,iCAAiCP;IAC5C,aAAc;QACZ,KAAK,CAAC;QACN,IAAI,CAACE,IAAI,GAAG;IACd;AACF;AAEA,OAAO,MAAMM,uCAAuCR;IAClD,YAAY,AAAgBS,gBAAwB,CAAE;QACpD,KAAK,CAAC,CAAC,wDAAwD,EAAEA,kBAAkB,QADzDA,mBAAAA;QAE1B,IAAI,CAACP,IAAI,GAAG;IACd;AACF;AAEA,OAAO,MAAMQ,sCAAsCV;IACjD,YAAY,AAAgBS,gBAAwB,CAAE;QACpD,KAAK,CAAC,CAAC,0CAA0C,EAAEA,kBAAkB,QAD3CA,mBAAAA;QAE1B,IAAI,CAACP,IAAI,GAAG;IACd;AACF;AAEA,OAAO,MAAMS,gDAAgDX;IAC3D,YACE,AAAgBS,gBAAwB,EACxC,AAAgBG,WAAmB,CACnC;QACA,KAAK,CACH,CAAC,6BAA6B,EAAEH,iBAAiB,8BAA8B,EAAEG,aAAa,QAJhFH,mBAAAA,uBACAG,cAAAA;QAKhB,IAAI,CAACV,IAAI,GAAG;IACd;AACF;AAEA,OAAO,MAAMW,oDAAoDb;IAC/D,YACE,AAAgBY,WAAmB,EACnC,AAAgBE,aAAqB,EACrC,AAAgBC,gBAAwB,CACxC;QACA,KAAK,CACH,CAAC,0EAA0E,EAAEA,iBAAiB,cAAc,EAAEH,aAAa,QAL7GA,cAAAA,kBACAE,gBAAAA,oBACAC,mBAAAA;QAKhB,IAAI,CAACb,IAAI,GAAG;IACd;AACF;AAEA,OAAO,MAAMc,iCAAiChB;IAC5C,YAAY,AAAgBiB,aAAqB,CAAE;QACjD,KAAK,CAAC,CAAC,uBAAuB,EAAEA,eAAe,QADrBA,gBAAAA;QAE1B,IAAI,CAACf,IAAI,GAAG;IACd;AACF;AAEA,OAAO,MAAMgB,gCAAgClB;IAC3C,YAAY,AAAgBiB,aAAqB,CAAE;QACjD,KAAK,CAAC,CAAC,yBAAyB,EAAEA,eAAe,QADvBA,gBAAAA;QAE1B,IAAI,CAACf,IAAI,GAAG;IACd;AACF;AAEA,OAAO,MAAMiB,mCAAmCnB;IAC9C,YAAY,AAAgBoB,UAAkB,CAAE;QAC9C,KAAK,CAAC,CAAC,6BAA6B,EAAEA,YAAY,QADxBA,aAAAA;QAE1B,IAAI,CAAClB,IAAI,GAAG;IACd;AACF;AACA,OAAO,MAAMmB,qCAAqCrB;IAChD,YAAY,AAAgBoB,UAAkB,CAAE;QAC9C,KAAK,CAAC,CAAC,8BAA8B,EAAEA,YAAY,QADzBA,aAAAA;QAE1B,IAAI,CAAClB,IAAI,GAAG;IACd;AACF;AACA,OAAO,MAAMoB,wCAAwCtB;IACnD,YAAY,AAAgBiB,aAAqB,CAAE;QACjD,KAAK,CAAC,CAAC,iCAAiC,EAAEA,eAAe,QAD/BA,gBAAAA;QAE1B,IAAI,CAACf,IAAI,GAAG;IACd;AACF;AAEA,OAAO,MAAMqB,4CAA4CvB;IACvD,YACE,AAAgBwB,SAAiB,EACjC,AAAgBC,GAAW,CAC3B;QACA,KAAK,CACH,CAAC,mCAAmC,EAAED,UAAU,oCAAoC,EAAEC,KAAK,QAJ7ED,YAAAA,gBACAC,MAAAA;QAKhB,IAAI,CAACvB,IAAI,GAAG;IACd;AACF;AAEA,OAAO,MAAMwB,sDAAsD1B;IACjE,YACE,AAAgBwB,SAAiB,EACjC,AAAgBG,gBAAwB,EACxC,AAAgBC,gBAAwB,CAAC,CACzC;QACA,KAAK,CACH,CAAC,mCAAmC,EAAEJ,UAAU,0BAA0B,EAAEI,cAAc,6CAA6C,EAAED,kBAAkB,QAL7IH,YAAAA,gBACAG,mBAAAA,uBACAC,gBAAAA;QAKhB,IAAI,CAAC1B,IAAI,GAAG;IACd;AACF;AAEA,OAAO,MAAM2B,oDAAoD7B;IAC/D,YAAY,AAAgB8B,iBAA2B,CAAE;QACvD,KAAK,CACH,CAAC,4EAA4E,EAAEA,kBAAkBC,IAAI,CAAC,OAAO,QAFrFD,oBAAAA;QAI1B,IAAI,CAAC5B,IAAI,GAAG;IACd;AACF;AAEA,OAAO,MAAM8B,oCAAoChC;IAC/C,YAAY,AAAgBiC,eAAuB,CAAE;QACnD,KAAK,CAAC,CAAC,sCAAsC,EAAEA,iBAAiB,QADtCA,kBAAAA;QAE1B,IAAI,CAAC/B,IAAI,GAAG;IACd;AACF"}
|
package/dist/core/index.d.ts
CHANGED
|
@@ -1,14 +1,20 @@
|
|
|
1
|
+
export { assignCapacityBatch } from './capacity-assignments.js';
|
|
2
|
+
export type { CapacityAssignment } from './entities/capacity-assignment.js';
|
|
1
3
|
export type { EphemeralRegistrationToken } from './entities/ephemeral-registration-token.js';
|
|
2
4
|
export type { ManualRegistrationToken } from './entities/manual-registration-token.js';
|
|
3
|
-
export type {
|
|
4
|
-
export type { ActiveProvisionerToken, ProvisionerToken } from './entities/provisioner-token.js';
|
|
5
|
+
export type { ProvisionerCapabilitySnapshot } from './entities/provisioner-capability-snapshot.js';
|
|
6
|
+
export type { ActiveProvisionerToken, ProvisionerScope, ProvisionerToken, } from './entities/provisioner-token.js';
|
|
7
|
+
export type { RunnerInstance, RunnerInstanceState, } from './entities/runner-instance.js';
|
|
5
8
|
export type { RunnerSession } from './entities/runner-session.js';
|
|
6
9
|
export { type MintEphemeralRegistrationTokenParams, type MintEphemeralRegistrationTokenResult, mintEphemeralRegistrationToken, } from './ephemeral-registration-tokens.js';
|
|
7
10
|
export { EmptyRunnerLabelsError, ManualRegistrationTokenNotFoundError, ProvisionerTokenNotFoundError, RegistrationTokenConsumedError, RegistrationTokenExpiredError, RunnerSessionExhaustedError, RunningJobExecutionNotFoundError, } from './errors.js';
|
|
8
11
|
export { type ClaimJobExecutionResult, claimJobExecution } from './job-executions.js';
|
|
9
12
|
export { createWorkspaceManualRegistrationToken, listUsableManualRegistrationTokens, revokeWorkspaceManualRegistrationToken, } from './manual-registration-tokens.js';
|
|
10
|
-
export {
|
|
11
|
-
export { createWorkspaceProvisionerToken, listActiveProvisioners, listUsableProvisionerTokens, revokeWorkspaceProvisionerToken, } from './provisioner-tokens.js';
|
|
13
|
+
export { hasActiveWorkspaceProvisionerCapability } from './provisioner-capability-snapshots.js';
|
|
14
|
+
export { createInstallationProvisionerToken, createWorkspaceProvisionerToken, listActiveProvisioners, listUsableProvisionerTokens, revokeInstallationProvisionerToken, revokeWorkspaceProvisionerToken, } from './provisioner-tokens.js';
|
|
15
|
+
export { getRunnerAssignment, issueRunnerActivationToken } from './runner-activation.js';
|
|
16
|
+
export { attachRunnerControlProviderId, createRunnerInstancesWithBootstrapTokens, enrollRunnerControlSession, exchangeRunnerBootstrapToken, RunnerBootstrapTokenInvalidError, RunnerControlSessionInvalidError, touchRunnerControlSession, } from './runner-control-sessions.js';
|
|
17
|
+
export { type ActiveRunner, attachProviderRunnerId, createPlannedProvisionedCapacity, listActiveRunners, type ReconcileDesiredIntent, type ReconciledBoundJobExecution, type ReconciledRunnerInstance, type ReconcileRunnerInstancesParams, type ReconcileRunnerInstancesResult, type ReportRunnerInstancesParams, type ReportRunnerInstancesResult, reconcileRunnerInstances, reportRunnerInstances, } from './runner-instances.js';
|
|
12
18
|
export { type RegisterRunnerSessionResult, type RunnerRegistrationCredential, registerRunnerSession, } from './runner-sessions.js';
|
|
13
19
|
export { EMPTY_RUNNER_TOOL_CAPABILITIES, effectiveRunnerToolCapabilities, } from './runner-tool-capabilities.js';
|
|
14
20
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAC,0BAA0B,EAAC,MAAM,4CAA4C,CAAC;AAC3F,YAAY,EAAC,uBAAuB,EAAC,MAAM,yCAAyC,CAAC;AACrF,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,2BAA2B,CAAC;AAC9D,YAAY,EAAC,kBAAkB,EAAC,MAAM,mCAAmC,CAAC;AAC1E,YAAY,EAAC,0BAA0B,EAAC,MAAM,4CAA4C,CAAC;AAC3F,YAAY,EAAC,uBAAuB,EAAC,MAAM,yCAAyC,CAAC;AACrF,YAAY,EAAC,6BAA6B,EAAC,MAAM,+CAA+C,CAAC;AACjG,YAAY,EACV,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACV,cAAc,EACd,mBAAmB,GACpB,MAAM,+BAA+B,CAAC;AACvC,YAAY,EAAC,aAAa,EAAC,MAAM,8BAA8B,CAAC;AAChE,OAAO,EACL,KAAK,oCAAoC,EACzC,KAAK,oCAAoC,EACzC,8BAA8B,GAC/B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,sBAAsB,EACtB,oCAAoC,EACpC,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,EAC7B,2BAA2B,EAC3B,gCAAgC,GACjC,MAAM,aAAa,CAAC;AACrB,OAAO,EAAC,KAAK,uBAAuB,EAAE,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACpF,OAAO,EACL,sCAAsC,EACtC,kCAAkC,EAClC,sCAAsC,GACvC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAC,uCAAuC,EAAC,MAAM,uCAAuC,CAAC;AAC9F,OAAO,EACL,kCAAkC,EAClC,+BAA+B,EAC/B,sBAAsB,EACtB,2BAA2B,EAC3B,kCAAkC,EAClC,+BAA+B,GAChC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAC,mBAAmB,EAAE,0BAA0B,EAAC,MAAM,wBAAwB,CAAC;AACvF,OAAO,EACL,6BAA6B,EAC7B,wCAAwC,EACxC,0BAA0B,EAC1B,4BAA4B,EAC5B,gCAAgC,EAChC,gCAAgC,EAChC,yBAAyB,GAC1B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,KAAK,YAAY,EACjB,sBAAsB,EACtB,gCAAgC,EAChC,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,EACnC,KAAK,8BAA8B,EACnC,KAAK,2BAA2B,EAChC,KAAK,2BAA2B,EAChC,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,8BAA8B,EAC9B,+BAA+B,GAChC,MAAM,+BAA+B,CAAC"}
|
package/dist/core/index.js
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
export { assignCapacityBatch } from './capacity-assignments.js';
|
|
1
2
|
export { mintEphemeralRegistrationToken } from './ephemeral-registration-tokens.js';
|
|
2
3
|
export { EmptyRunnerLabelsError, ManualRegistrationTokenNotFoundError, ProvisionerTokenNotFoundError, RegistrationTokenConsumedError, RegistrationTokenExpiredError, RunnerSessionExhaustedError, RunningJobExecutionNotFoundError } from './errors.js';
|
|
3
4
|
export { claimJobExecution } from './job-executions.js';
|
|
4
5
|
export { createWorkspaceManualRegistrationToken, listUsableManualRegistrationTokens, revokeWorkspaceManualRegistrationToken } from './manual-registration-tokens.js';
|
|
5
|
-
export {
|
|
6
|
-
export { createWorkspaceProvisionerToken, listActiveProvisioners, listUsableProvisionerTokens, revokeWorkspaceProvisionerToken } from './provisioner-tokens.js';
|
|
6
|
+
export { hasActiveWorkspaceProvisionerCapability } from './provisioner-capability-snapshots.js';
|
|
7
|
+
export { createInstallationProvisionerToken, createWorkspaceProvisionerToken, listActiveProvisioners, listUsableProvisionerTokens, revokeInstallationProvisionerToken, revokeWorkspaceProvisionerToken } from './provisioner-tokens.js';
|
|
8
|
+
export { getRunnerAssignment, issueRunnerActivationToken } from './runner-activation.js';
|
|
9
|
+
export { attachRunnerControlProviderId, createRunnerInstancesWithBootstrapTokens, enrollRunnerControlSession, exchangeRunnerBootstrapToken, RunnerBootstrapTokenInvalidError, RunnerControlSessionInvalidError, touchRunnerControlSession } from './runner-control-sessions.js';
|
|
10
|
+
export { attachProviderRunnerId, createPlannedProvisionedCapacity, listActiveRunners, reconcileRunnerInstances, reportRunnerInstances } from './runner-instances.js';
|
|
7
11
|
export { registerRunnerSession } from './runner-sessions.js';
|
|
8
12
|
export { EMPTY_RUNNER_TOOL_CAPABILITIES, effectiveRunnerToolCapabilities } from './runner-tool-capabilities.js';
|
|
9
13
|
|
package/dist/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/index.ts"],"sourcesContent":["export type {EphemeralRegistrationToken} from './entities/ephemeral-registration-token.js';\nexport type {ManualRegistrationToken} from './entities/manual-registration-token.js';\nexport type {\n
|
|
1
|
+
{"version":3,"sources":["../../src/core/index.ts"],"sourcesContent":["export {assignCapacityBatch} from './capacity-assignments.js';\nexport type {CapacityAssignment} from './entities/capacity-assignment.js';\nexport type {EphemeralRegistrationToken} from './entities/ephemeral-registration-token.js';\nexport type {ManualRegistrationToken} from './entities/manual-registration-token.js';\nexport type {ProvisionerCapabilitySnapshot} from './entities/provisioner-capability-snapshot.js';\nexport type {\n ActiveProvisionerToken,\n ProvisionerScope,\n ProvisionerToken,\n} from './entities/provisioner-token.js';\nexport type {\n RunnerInstance,\n RunnerInstanceState,\n} from './entities/runner-instance.js';\nexport type {RunnerSession} from './entities/runner-session.js';\nexport {\n type MintEphemeralRegistrationTokenParams,\n type MintEphemeralRegistrationTokenResult,\n mintEphemeralRegistrationToken,\n} from './ephemeral-registration-tokens.js';\nexport {\n EmptyRunnerLabelsError,\n ManualRegistrationTokenNotFoundError,\n ProvisionerTokenNotFoundError,\n RegistrationTokenConsumedError,\n RegistrationTokenExpiredError,\n RunnerSessionExhaustedError,\n RunningJobExecutionNotFoundError,\n} from './errors.js';\nexport {type ClaimJobExecutionResult, claimJobExecution} from './job-executions.js';\nexport {\n createWorkspaceManualRegistrationToken,\n listUsableManualRegistrationTokens,\n revokeWorkspaceManualRegistrationToken,\n} from './manual-registration-tokens.js';\nexport {hasActiveWorkspaceProvisionerCapability} from './provisioner-capability-snapshots.js';\nexport {\n createInstallationProvisionerToken,\n createWorkspaceProvisionerToken,\n listActiveProvisioners,\n listUsableProvisionerTokens,\n revokeInstallationProvisionerToken,\n revokeWorkspaceProvisionerToken,\n} from './provisioner-tokens.js';\nexport {getRunnerAssignment, issueRunnerActivationToken} from './runner-activation.js';\nexport {\n attachRunnerControlProviderId,\n createRunnerInstancesWithBootstrapTokens,\n enrollRunnerControlSession,\n exchangeRunnerBootstrapToken,\n RunnerBootstrapTokenInvalidError,\n RunnerControlSessionInvalidError,\n touchRunnerControlSession,\n} from './runner-control-sessions.js';\nexport {\n type ActiveRunner,\n attachProviderRunnerId,\n createPlannedProvisionedCapacity,\n listActiveRunners,\n type ReconcileDesiredIntent,\n type ReconciledBoundJobExecution,\n type ReconciledRunnerInstance,\n type ReconcileRunnerInstancesParams,\n type ReconcileRunnerInstancesResult,\n type ReportRunnerInstancesParams,\n type ReportRunnerInstancesResult,\n reconcileRunnerInstances,\n reportRunnerInstances,\n} from './runner-instances.js';\nexport {\n type RegisterRunnerSessionResult,\n type RunnerRegistrationCredential,\n registerRunnerSession,\n} from './runner-sessions.js';\nexport {\n EMPTY_RUNNER_TOOL_CAPABILITIES,\n effectiveRunnerToolCapabilities,\n} from './runner-tool-capabilities.js';\n"],"names":["assignCapacityBatch","mintEphemeralRegistrationToken","EmptyRunnerLabelsError","ManualRegistrationTokenNotFoundError","ProvisionerTokenNotFoundError","RegistrationTokenConsumedError","RegistrationTokenExpiredError","RunnerSessionExhaustedError","RunningJobExecutionNotFoundError","claimJobExecution","createWorkspaceManualRegistrationToken","listUsableManualRegistrationTokens","revokeWorkspaceManualRegistrationToken","hasActiveWorkspaceProvisionerCapability","createInstallationProvisionerToken","createWorkspaceProvisionerToken","listActiveProvisioners","listUsableProvisionerTokens","revokeInstallationProvisionerToken","revokeWorkspaceProvisionerToken","getRunnerAssignment","issueRunnerActivationToken","attachRunnerControlProviderId","createRunnerInstancesWithBootstrapTokens","enrollRunnerControlSession","exchangeRunnerBootstrapToken","RunnerBootstrapTokenInvalidError","RunnerControlSessionInvalidError","touchRunnerControlSession","attachProviderRunnerId","createPlannedProvisionedCapacity","listActiveRunners","reconcileRunnerInstances","reportRunnerInstances","registerRunnerSession","EMPTY_RUNNER_TOOL_CAPABILITIES","effectiveRunnerToolCapabilities"],"mappings":"AAAA,SAAQA,mBAAmB,QAAO,4BAA4B;AAe9D,SAGEC,8BAA8B,QACzB,qCAAqC;AAC5C,SACEC,sBAAsB,EACtBC,oCAAoC,EACpCC,6BAA6B,EAC7BC,8BAA8B,EAC9BC,6BAA6B,EAC7BC,2BAA2B,EAC3BC,gCAAgC,QAC3B,cAAc;AACrB,SAAsCC,iBAAiB,QAAO,sBAAsB;AACpF,SACEC,sCAAsC,EACtCC,kCAAkC,EAClCC,sCAAsC,QACjC,kCAAkC;AACzC,SAAQC,uCAAuC,QAAO,wCAAwC;AAC9F,SACEC,kCAAkC,EAClCC,+BAA+B,EAC/BC,sBAAsB,EACtBC,2BAA2B,EAC3BC,kCAAkC,EAClCC,+BAA+B,QAC1B,0BAA0B;AACjC,SAAQC,mBAAmB,EAAEC,0BAA0B,QAAO,yBAAyB;AACvF,SACEC,6BAA6B,EAC7BC,wCAAwC,EACxCC,0BAA0B,EAC1BC,4BAA4B,EAC5BC,gCAAgC,EAChCC,gCAAgC,EAChCC,yBAAyB,QACpB,+BAA+B;AACtC,SAEEC,sBAAsB,EACtBC,gCAAgC,EAChCC,iBAAiB,EAQjBC,wBAAwB,EACxBC,qBAAqB,QAChB,wBAAwB;AAC/B,SAGEC,qBAAqB,QAChB,uBAAuB;AAC9B,SACEC,8BAA8B,EAC9BC,+BAA+B,QAC1B,gCAAgC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { AuthInterModuleClient } from '@shipfox/api-auth-dto/inter-module';
|
|
1
2
|
export interface ClaimJobExecutionResult {
|
|
2
3
|
workflowRunId: string;
|
|
3
4
|
workflowRunAttemptId: string;
|
|
@@ -6,6 +7,7 @@ export interface ClaimJobExecutionResult {
|
|
|
6
7
|
leaseToken: string;
|
|
7
8
|
}
|
|
8
9
|
export declare function claimJobExecution(params: {
|
|
10
|
+
auth: AuthInterModuleClient;
|
|
9
11
|
workspaceId: string;
|
|
10
12
|
runnerSessionId: string;
|
|
11
13
|
sessionLabels: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-executions.d.ts","sourceRoot":"","sources":["../../src/core/job-executions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"job-executions.d.ts","sourceRoot":"","sources":["../../src/core/job-executions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,oCAAoC,CAAC;AAK9E,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE;IAC9C,IAAI,EAAE,qBAAqB,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,GAAG,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CA4B1C"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { issueJobLeaseToken } from '@shipfox/api-auth';
|
|
2
1
|
import { claimPendingJobExecution } from '#db/job-executions.js';
|
|
3
2
|
import { jobExecutionClaimedCount } from '#metrics/instance.js';
|
|
4
3
|
import { config } from '../config.js';
|
|
@@ -16,7 +15,7 @@ export async function claimJobExecution(params) {
|
|
|
16
15
|
jobExecutionClaimedCount.add(1, {
|
|
17
16
|
outcome: 'claimed'
|
|
18
17
|
});
|
|
19
|
-
const leaseToken = await
|
|
18
|
+
const { token: leaseToken } = await params.auth.mintJobLeaseToken({
|
|
20
19
|
workflowRunId: claimed.workflowRunId,
|
|
21
20
|
workflowRunAttemptId: claimed.workflowRunAttemptId,
|
|
22
21
|
jobId: claimed.jobId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/job-executions.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../src/core/job-executions.ts"],"sourcesContent":["import type {AuthInterModuleClient} from '@shipfox/api-auth-dto/inter-module';\nimport {claimPendingJobExecution} from '#db/job-executions.js';\nimport {jobExecutionClaimedCount} from '#metrics/instance.js';\nimport {config} from '../config.js';\n\nexport interface ClaimJobExecutionResult {\n workflowRunId: string;\n workflowRunAttemptId: string;\n jobId: string;\n jobExecutionId: string;\n leaseToken: string;\n}\n\nexport async function claimJobExecution(params: {\n auth: AuthInterModuleClient;\n workspaceId: string;\n runnerSessionId: string;\n sessionLabels: string[];\n maxClaims: number | null;\n}): Promise<ClaimJobExecutionResult | null> {\n const claimed = await claimPendingJobExecution({\n ...params,\n runnerSessionLivenessThrottleSeconds: config.RUNNER_SESSION_LIVENESS_THROTTLE_SECONDS,\n });\n if (!claimed) {\n jobExecutionClaimedCount.add(1, {outcome: 'empty'});\n return null;\n }\n jobExecutionClaimedCount.add(1, {outcome: 'claimed'});\n\n const {token: leaseToken} = await params.auth.mintJobLeaseToken({\n workflowRunId: claimed.workflowRunId,\n workflowRunAttemptId: claimed.workflowRunAttemptId,\n jobId: claimed.jobId,\n jobExecutionId: claimed.jobExecutionId,\n projectId: claimed.projectId,\n workspaceId: params.workspaceId,\n runnerSessionId: params.runnerSessionId,\n });\n\n return {\n workflowRunId: claimed.workflowRunId,\n workflowRunAttemptId: claimed.workflowRunAttemptId,\n jobId: claimed.jobId,\n jobExecutionId: claimed.jobExecutionId,\n leaseToken,\n };\n}\n"],"names":["claimPendingJobExecution","jobExecutionClaimedCount","config","claimJobExecution","params","claimed","runnerSessionLivenessThrottleSeconds","RUNNER_SESSION_LIVENESS_THROTTLE_SECONDS","add","outcome","token","leaseToken","auth","mintJobLeaseToken","workflowRunId","workflowRunAttemptId","jobId","jobExecutionId","projectId","workspaceId","runnerSessionId"],"mappings":"AACA,SAAQA,wBAAwB,QAAO,wBAAwB;AAC/D,SAAQC,wBAAwB,QAAO,uBAAuB;AAC9D,SAAQC,MAAM,QAAO,eAAe;AAUpC,OAAO,eAAeC,kBAAkBC,MAMvC;IACC,MAAMC,UAAU,MAAML,yBAAyB;QAC7C,GAAGI,MAAM;QACTE,sCAAsCJ,OAAOK,wCAAwC;IACvF;IACA,IAAI,CAACF,SAAS;QACZJ,yBAAyBO,GAAG,CAAC,GAAG;YAACC,SAAS;QAAO;QACjD,OAAO;IACT;IACAR,yBAAyBO,GAAG,CAAC,GAAG;QAACC,SAAS;IAAS;IAEnD,MAAM,EAACC,OAAOC,UAAU,EAAC,GAAG,MAAMP,OAAOQ,IAAI,CAACC,iBAAiB,CAAC;QAC9DC,eAAeT,QAAQS,aAAa;QACpCC,sBAAsBV,QAAQU,oBAAoB;QAClDC,OAAOX,QAAQW,KAAK;QACpBC,gBAAgBZ,QAAQY,cAAc;QACtCC,WAAWb,QAAQa,SAAS;QAC5BC,aAAaf,OAAOe,WAAW;QAC/BC,iBAAiBhB,OAAOgB,eAAe;IACzC;IAEA,OAAO;QACLN,eAAeT,QAAQS,aAAa;QACpCC,sBAAsBV,QAAQU,oBAAoB;QAClDC,OAAOX,QAAQW,KAAK;QACpBC,gBAAgBZ,QAAQY,cAAc;QACtCN;IACF;AACF"}
|
|
@@ -10,7 +10,7 @@ export declare function deleteExpiredRunnerReservations(params?: {
|
|
|
10
10
|
}): Promise<{
|
|
11
11
|
deleted: number;
|
|
12
12
|
}>;
|
|
13
|
-
export declare function
|
|
13
|
+
export declare function reapStaleRunnerInstances(params?: {
|
|
14
14
|
thresholdSeconds?: number;
|
|
15
15
|
limit?: number;
|
|
16
16
|
}): Promise<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"maintenance.d.ts","sourceRoot":"","sources":["../../src/core/maintenance.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,8BAA8B;IAC7C,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,GAAE,8BAAmC,GAC1C,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,CAAC,CAO5B;AAED,wBAAsB,+BAA+B,CAAC,MAAM,CAAC,EAAE;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,CAAC,CAG7B;AAED,wBAAsB,
|
|
1
|
+
{"version":3,"file":"maintenance.d.ts","sourceRoot":"","sources":["../../src/core/maintenance.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,8BAA8B;IAC7C,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,GAAE,8BAAmC,GAC1C,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,CAAC,CAO5B;AAED,wBAAsB,+BAA+B,CAAC,MAAM,CAAC,EAAE;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,CAAC,CAG7B;AAED,wBAAsB,wBAAwB,CAAC,MAAM,CAAC,EAAE;IACtD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAA;CAAC,CAAC,CAa1D;AAED,wBAAsB,2BAA2B,CAAC,MAAM,CAAC,EAAE;IACzD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,CAAC,CAQ7B;AAED,wBAAsB,wCAAwC,CAAC,MAAM,CAAC,EAAE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,CAAC,CAM7B"}
|
package/dist/core/maintenance.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { config } from '#config.js';
|
|
2
2
|
import { deleteExpiredEphemeralRegistrationTokens as deleteExpiredEphemeralRegistrationTokensDb } from '#db/ephemeral-registration-tokens.js';
|
|
3
3
|
import { expireStuckJobExecutions } from '#db/job-executions.js';
|
|
4
|
-
import { reapStaleProvisionedRunners as reapStaleProvisionedRunnersDb } from '#db/provisioned-runners.js';
|
|
5
4
|
import { deleteExpiredReservations } from '#db/reservations.js';
|
|
5
|
+
import { reapStaleRunnerInstances as reapStaleRunnerInstancesDb } from '#db/runner-instances.js';
|
|
6
6
|
import { deleteExpiredRunnerSessions as deleteExpiredRunnerSessionsDb } from '#db/runner-sessions.js';
|
|
7
|
-
import {
|
|
7
|
+
import { providerRunnerReapedCount, reservationReleasedCount } from '#metrics/instance.js';
|
|
8
8
|
import { STUCK_JOB_THRESHOLD_SECONDS } from './maintenance-policy.js';
|
|
9
9
|
export async function detectAndExpireStuckJobs(params = {}) {
|
|
10
10
|
const reaped = await expireStuckJobExecutions({
|
|
@@ -21,12 +21,12 @@ export async function deleteExpiredRunnerReservations(params) {
|
|
|
21
21
|
deleted
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
|
-
export async function
|
|
25
|
-
const result = await
|
|
24
|
+
export async function reapStaleRunnerInstances(params) {
|
|
25
|
+
const result = await reapStaleRunnerInstancesDb({
|
|
26
26
|
thresholdSeconds: params?.thresholdSeconds ?? config.RUNNER_STALE_PROVISIONED_RUNNER_THRESHOLD_SECONDS,
|
|
27
27
|
limit: params?.limit ?? config.RUNNER_STALE_PROVISIONED_RUNNER_REAPER_LIMIT
|
|
28
28
|
});
|
|
29
|
-
if (result.reaped > 0)
|
|
29
|
+
if (result.reaped > 0) providerRunnerReapedCount.add(result.reaped);
|
|
30
30
|
if (result.reservationsReleased > 0) {
|
|
31
31
|
reservationReleasedCount.add(result.reservationsReleased);
|
|
32
32
|
}
|