@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.
Files changed (400) hide show
  1. package/.turbo/turbo-build.log +6 -6
  2. package/CHANGELOG.md +80 -0
  3. package/dist/config.d.ts +5 -1
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +54 -7
  6. package/dist/config.js.map +1 -1
  7. package/dist/core/demand.d.ts +6 -6
  8. package/dist/core/demand.d.ts.map +1 -1
  9. package/dist/core/demand.js +10 -10
  10. package/dist/core/demand.js.map +1 -1
  11. package/dist/core/entities/ephemeral-registration-token.d.ts +1 -1
  12. package/dist/core/entities/ephemeral-registration-token.d.ts.map +1 -1
  13. package/dist/core/entities/ephemeral-registration-token.js.map +1 -1
  14. package/dist/core/entities/provisioner-capability-snapshot.d.ts +13 -0
  15. package/dist/core/entities/provisioner-capability-snapshot.d.ts.map +1 -0
  16. package/dist/core/entities/provisioner-capability-snapshot.js +3 -0
  17. package/dist/core/entities/provisioner-capability-snapshot.js.map +1 -0
  18. package/dist/core/entities/provisioner-token.d.ts +10 -2
  19. package/dist/core/entities/provisioner-token.d.ts.map +1 -1
  20. package/dist/core/entities/provisioner-token.js.map +1 -1
  21. package/dist/core/entities/{provisioned-runner.d.ts → runner-instance.d.ts} +7 -6
  22. package/dist/core/entities/runner-instance.d.ts.map +1 -0
  23. package/dist/core/entities/runner-instance.js +3 -0
  24. package/dist/core/entities/runner-instance.js.map +1 -0
  25. package/dist/core/entities/runner-session.d.ts +4 -2
  26. package/dist/core/entities/runner-session.d.ts.map +1 -1
  27. package/dist/core/entities/runner-session.js.map +1 -1
  28. package/dist/core/ephemeral-registration-tokens.d.ts +5 -5
  29. package/dist/core/ephemeral-registration-tokens.d.ts.map +1 -1
  30. package/dist/core/ephemeral-registration-tokens.js +12 -12
  31. package/dist/core/ephemeral-registration-tokens.js.map +1 -1
  32. package/dist/core/errors.d.ts +16 -4
  33. package/dist/core/errors.d.ts.map +1 -1
  34. package/dist/core/errors.js +22 -4
  35. package/dist/core/errors.js.map +1 -1
  36. package/dist/core/index.d.ts +9 -5
  37. package/dist/core/index.d.ts.map +1 -1
  38. package/dist/core/index.js +6 -3
  39. package/dist/core/index.js.map +1 -1
  40. package/dist/core/job-executions.d.ts +2 -0
  41. package/dist/core/job-executions.d.ts.map +1 -1
  42. package/dist/core/job-executions.js +1 -2
  43. package/dist/core/job-executions.js.map +1 -1
  44. package/dist/core/maintenance.d.ts +1 -1
  45. package/dist/core/maintenance.d.ts.map +1 -1
  46. package/dist/core/maintenance.js +5 -5
  47. package/dist/core/maintenance.js.map +1 -1
  48. package/dist/core/provisioner-capability-snapshots.d.ts +5 -0
  49. package/dist/core/provisioner-capability-snapshots.d.ts.map +1 -0
  50. package/dist/core/provisioner-capability-snapshots.js +10 -0
  51. package/dist/core/provisioner-capability-snapshots.js.map +1 -0
  52. package/dist/core/provisioner-tokens.d.ts +10 -0
  53. package/dist/core/provisioner-tokens.d.ts.map +1 -1
  54. package/dist/core/provisioner-tokens.js +23 -1
  55. package/dist/core/provisioner-tokens.js.map +1 -1
  56. package/dist/core/rate-limit.d.ts.map +1 -1
  57. package/dist/core/rate-limit.js +2 -7
  58. package/dist/core/rate-limit.js.map +1 -1
  59. package/dist/core/runner-activation.d.ts +13 -0
  60. package/dist/core/runner-activation.d.ts.map +1 -0
  61. package/dist/core/runner-activation.js +36 -0
  62. package/dist/core/runner-activation.js.map +1 -0
  63. package/dist/core/runner-assignments.d.ts +6 -0
  64. package/dist/core/runner-assignments.d.ts.map +1 -0
  65. package/dist/core/runner-assignments.js +6 -0
  66. package/dist/core/runner-assignments.js.map +1 -0
  67. package/dist/core/runner-control-sessions.d.ts +46 -0
  68. package/dist/core/runner-control-sessions.d.ts.map +1 -0
  69. package/dist/core/runner-control-sessions.js +121 -0
  70. package/dist/core/runner-control-sessions.js.map +1 -0
  71. package/dist/core/runner-instances.d.ts +72 -0
  72. package/dist/core/runner-instances.d.ts.map +1 -0
  73. package/dist/core/runner-instances.js +165 -0
  74. package/dist/core/runner-instances.js.map +1 -0
  75. package/dist/core/runner-sessions.d.ts +8 -2
  76. package/dist/core/runner-sessions.d.ts.map +1 -1
  77. package/dist/core/runner-sessions.js +8 -5
  78. package/dist/core/runner-sessions.js.map +1 -1
  79. package/dist/db/db.d.ts +2698 -1054
  80. package/dist/db/db.d.ts.map +1 -1
  81. package/dist/db/db.js +9 -2
  82. package/dist/db/db.js.map +1 -1
  83. package/dist/db/ephemeral-registration-tokens.d.ts +2 -2
  84. package/dist/db/ephemeral-registration-tokens.d.ts.map +1 -1
  85. package/dist/db/ephemeral-registration-tokens.js +21 -21
  86. package/dist/db/ephemeral-registration-tokens.js.map +1 -1
  87. package/dist/db/index.d.ts +7 -4
  88. package/dist/db/index.d.ts.map +1 -1
  89. package/dist/db/index.js +5 -2
  90. package/dist/db/index.js.map +1 -1
  91. package/dist/db/job-executions.d.ts +6 -6
  92. package/dist/db/job-executions.d.ts.map +1 -1
  93. package/dist/db/job-executions.js +20 -19
  94. package/dist/db/job-executions.js.map +1 -1
  95. package/dist/db/provisioner-capability-snapshots.d.ts +21 -0
  96. package/dist/db/provisioner-capability-snapshots.d.ts.map +1 -0
  97. package/dist/db/provisioner-capability-snapshots.js +57 -0
  98. package/dist/db/provisioner-capability-snapshots.js.map +1 -0
  99. package/dist/db/provisioner-tokens.d.ts +7 -2
  100. package/dist/db/provisioner-tokens.d.ts.map +1 -1
  101. package/dist/db/provisioner-tokens.js +59 -10
  102. package/dist/db/provisioner-tokens.js.map +1 -1
  103. package/dist/db/reservations.d.ts +18 -0
  104. package/dist/db/reservations.d.ts.map +1 -1
  105. package/dist/db/reservations.js +88 -1
  106. package/dist/db/reservations.js.map +1 -1
  107. package/dist/db/runner-assignments.d.ts +7 -0
  108. package/dist/db/runner-assignments.d.ts.map +1 -0
  109. package/dist/db/runner-assignments.js +55 -0
  110. package/dist/db/runner-assignments.js.map +1 -0
  111. package/dist/db/runner-instances.d.ts +84 -0
  112. package/dist/db/runner-instances.d.ts.map +1 -0
  113. package/dist/db/runner-instances.js +497 -0
  114. package/dist/db/runner-instances.js.map +1 -0
  115. package/dist/db/runner-sessions.d.ts +5 -0
  116. package/dist/db/runner-sessions.d.ts.map +1 -1
  117. package/dist/db/runner-sessions.js +48 -2
  118. package/dist/db/runner-sessions.js.map +1 -1
  119. package/dist/db/schema/ephemeral-registration-tokens.d.ts +2 -2
  120. package/dist/db/schema/ephemeral-registration-tokens.js +3 -3
  121. package/dist/db/schema/ephemeral-registration-tokens.js.map +1 -1
  122. package/dist/db/schema/provisioner-capability-snapshots.d.ts +207 -0
  123. package/dist/db/schema/provisioner-capability-snapshots.d.ts.map +1 -0
  124. package/dist/db/schema/provisioner-capability-snapshots.js +38 -0
  125. package/dist/db/schema/provisioner-capability-snapshots.js.map +1 -0
  126. package/dist/db/schema/provisioner-tokens.d.ts +19 -1
  127. package/dist/db/schema/provisioner-tokens.d.ts.map +1 -1
  128. package/dist/db/schema/provisioner-tokens.js +29 -3
  129. package/dist/db/schema/provisioner-tokens.js.map +1 -1
  130. package/dist/db/schema/runner-activation-tokens.d.ts +161 -0
  131. package/dist/db/schema/runner-activation-tokens.d.ts.map +1 -0
  132. package/dist/db/schema/runner-activation-tokens.js +27 -0
  133. package/dist/db/schema/runner-activation-tokens.js.map +1 -0
  134. package/dist/db/schema/runner-control-sessions.d.ts +338 -0
  135. package/dist/db/schema/runner-control-sessions.d.ts.map +1 -0
  136. package/dist/db/schema/runner-control-sessions.js +52 -0
  137. package/dist/db/schema/runner-control-sessions.js.map +1 -0
  138. package/dist/db/schema/{provisioned-runners.d.ts → runner-instances.d.ts} +105 -34
  139. package/dist/db/schema/runner-instances.d.ts.map +1 -0
  140. package/dist/db/schema/{provisioned-runners.js → runner-instances.js} +23 -14
  141. package/dist/db/schema/runner-instances.js.map +1 -0
  142. package/dist/db/schema/runner-sessions.d.ts +39 -5
  143. package/dist/db/schema/runner-sessions.d.ts.map +1 -1
  144. package/dist/db/schema/runner-sessions.js +13 -6
  145. package/dist/db/schema/runner-sessions.js.map +1 -1
  146. package/dist/db/schema/running-job-executions.d.ts +2 -2
  147. package/dist/db/schema/running-job-executions.js +4 -4
  148. package/dist/db/schema/running-job-executions.js.map +1 -1
  149. package/dist/index.d.ts +6 -2
  150. package/dist/index.d.ts.map +1 -1
  151. package/dist/index.js +45 -39
  152. package/dist/index.js.map +1 -1
  153. package/dist/installation-provisioning.d.ts +14 -0
  154. package/dist/installation-provisioning.d.ts.map +1 -0
  155. package/dist/installation-provisioning.js +7 -0
  156. package/dist/installation-provisioning.js.map +1 -0
  157. package/dist/metrics/index.d.ts +1 -1
  158. package/dist/metrics/index.d.ts.map +1 -1
  159. package/dist/metrics/index.js +1 -1
  160. package/dist/metrics/index.js.map +1 -1
  161. package/dist/metrics/instance.d.ts +11 -7
  162. package/dist/metrics/instance.d.ts.map +1 -1
  163. package/dist/metrics/instance.js +13 -7
  164. package/dist/metrics/instance.js.map +1 -1
  165. package/dist/presentation/auth/index.d.ts +1 -0
  166. package/dist/presentation/auth/index.d.ts.map +1 -1
  167. package/dist/presentation/auth/index.js +1 -0
  168. package/dist/presentation/auth/index.js.map +1 -1
  169. package/dist/presentation/auth/provisioner-token-auth.d.ts.map +1 -1
  170. package/dist/presentation/auth/provisioner-token-auth.js +5 -1
  171. package/dist/presentation/auth/provisioner-token-auth.js.map +1 -1
  172. package/dist/presentation/auth/runner-control-session-auth.d.ts +4 -0
  173. package/dist/presentation/auth/runner-control-session-auth.d.ts.map +1 -0
  174. package/dist/presentation/auth/runner-control-session-auth.js +29 -0
  175. package/dist/presentation/auth/runner-control-session-auth.js.map +1 -0
  176. package/dist/presentation/auth/runner-registration-token-auth.d.ts +5 -1
  177. package/dist/presentation/auth/runner-registration-token-auth.d.ts.map +1 -1
  178. package/dist/presentation/auth/runner-registration-token-auth.js +21 -1
  179. package/dist/presentation/auth/runner-registration-token-auth.js.map +1 -1
  180. package/dist/presentation/dto/index.d.ts +1 -2
  181. package/dist/presentation/dto/index.d.ts.map +1 -1
  182. package/dist/presentation/dto/index.js +1 -2
  183. package/dist/presentation/dto/index.js.map +1 -1
  184. package/dist/presentation/dto/poll-demand.d.ts.map +1 -1
  185. package/dist/presentation/dto/poll-demand.js +7 -1
  186. package/dist/presentation/dto/poll-demand.js.map +1 -1
  187. package/dist/presentation/dto/provisioner-token.d.ts +1 -0
  188. package/dist/presentation/dto/provisioner-token.d.ts.map +1 -1
  189. package/dist/presentation/dto/provisioner-token.js +5 -1
  190. package/dist/presentation/dto/provisioner-token.js.map +1 -1
  191. package/dist/presentation/dto/{provisioned-runners.d.ts → runner-instances.d.ts} +9 -9
  192. package/dist/presentation/dto/runner-instances.d.ts.map +1 -0
  193. package/dist/presentation/dto/{provisioned-runners.js → runner-instances.js} +6 -6
  194. package/dist/presentation/dto/runner-instances.js.map +1 -0
  195. package/dist/presentation/index.d.ts +2 -2
  196. package/dist/presentation/index.d.ts.map +1 -1
  197. package/dist/presentation/index.js +2 -2
  198. package/dist/presentation/index.js.map +1 -1
  199. package/dist/presentation/inter-module.d.ts +5 -0
  200. package/dist/presentation/inter-module.d.ts.map +1 -0
  201. package/dist/presentation/inter-module.js +43 -0
  202. package/dist/presentation/inter-module.js.map +1 -0
  203. package/dist/presentation/routes/assign-runner-instances.d.ts +2 -0
  204. package/dist/presentation/routes/assign-runner-instances.d.ts.map +1 -0
  205. package/dist/presentation/routes/assign-runner-instances.js +40 -0
  206. package/dist/presentation/routes/assign-runner-instances.js.map +1 -0
  207. package/dist/presentation/routes/get-provisioner-me.d.ts.map +1 -1
  208. package/dist/presentation/routes/get-provisioner-me.js +5 -1
  209. package/dist/presentation/routes/get-provisioner-me.js.map +1 -1
  210. package/dist/presentation/routes/heartbeat.d.ts +2 -1
  211. package/dist/presentation/routes/heartbeat.d.ts.map +1 -1
  212. package/dist/presentation/routes/heartbeat.js +60 -50
  213. package/dist/presentation/routes/heartbeat.js.map +1 -1
  214. package/dist/presentation/routes/index.d.ts +3 -1
  215. package/dist/presentation/routes/index.d.ts.map +1 -1
  216. package/dist/presentation/routes/index.js +80 -51
  217. package/dist/presentation/routes/index.js.map +1 -1
  218. package/dist/presentation/routes/poll-demand.d.ts +2 -0
  219. package/dist/presentation/routes/poll-demand.d.ts.map +1 -1
  220. package/dist/presentation/routes/poll-demand.js +86 -45
  221. package/dist/presentation/routes/poll-demand.js.map +1 -1
  222. package/dist/presentation/routes/reconcile-runner-instances.d.ts +2 -0
  223. package/dist/presentation/routes/reconcile-runner-instances.d.ts.map +1 -0
  224. package/dist/presentation/routes/reconcile-runner-instances.js +27 -0
  225. package/dist/presentation/routes/reconcile-runner-instances.js.map +1 -0
  226. package/dist/presentation/routes/register.d.ts +2 -1
  227. package/dist/presentation/routes/register.d.ts.map +1 -1
  228. package/dist/presentation/routes/register.js +55 -52
  229. package/dist/presentation/routes/register.js.map +1 -1
  230. package/dist/presentation/routes/report-runner-instances.d.ts +2 -0
  231. package/dist/presentation/routes/report-runner-instances.d.ts.map +1 -0
  232. package/dist/presentation/routes/report-runner-instances.js +37 -0
  233. package/dist/presentation/routes/report-runner-instances.js.map +1 -0
  234. package/dist/presentation/routes/request-job.d.ts +2 -1
  235. package/dist/presentation/routes/request-job.d.ts.map +1 -1
  236. package/dist/presentation/routes/request-job.js +39 -36
  237. package/dist/presentation/routes/request-job.js.map +1 -1
  238. package/dist/presentation/routes/runner-enrollment.d.ts +8 -0
  239. package/dist/presentation/routes/runner-enrollment.d.ts.map +1 -0
  240. package/dist/presentation/routes/runner-enrollment.js +212 -0
  241. package/dist/presentation/routes/runner-enrollment.js.map +1 -0
  242. package/dist/temporal/activities/index.d.ts +2 -2
  243. package/dist/temporal/activities/index.d.ts.map +1 -1
  244. package/dist/temporal/activities/index.js +2 -2
  245. package/dist/temporal/activities/index.js.map +1 -1
  246. package/dist/temporal/activities/maintenance-activities.d.ts +1 -1
  247. package/dist/temporal/activities/maintenance-activities.d.ts.map +1 -1
  248. package/dist/temporal/activities/maintenance-activities.js +3 -3
  249. package/dist/temporal/activities/maintenance-activities.js.map +1 -1
  250. package/dist/temporal/workflows/index.bundle.js +3 -3
  251. package/dist/temporal/workflows/stuck-job-detector.js +2 -2
  252. package/dist/temporal/workflows/stuck-job-detector.js.map +1 -1
  253. package/dist/tsconfig.test.tsbuildinfo +1 -1
  254. package/drizzle/0000_initial.sql +91 -24
  255. package/drizzle/meta/0000_snapshot.json +392 -63
  256. package/package.json +21 -16
  257. package/src/config.test.ts +0 -26
  258. package/src/config.ts +48 -7
  259. package/src/core/demand.test.ts +29 -29
  260. package/src/core/demand.ts +22 -22
  261. package/src/core/entities/ephemeral-registration-token.ts +1 -1
  262. package/src/core/entities/provisioner-capability-snapshot.ts +12 -0
  263. package/src/core/entities/provisioner-token.ts +8 -2
  264. package/src/core/entities/{provisioned-runner.ts → runner-instance.ts} +6 -5
  265. package/src/core/entities/runner-session.ts +4 -2
  266. package/src/core/ephemeral-registration-tokens.test.ts +11 -11
  267. package/src/core/ephemeral-registration-tokens.ts +18 -20
  268. package/src/core/errors.ts +23 -4
  269. package/src/core/index.ts +37 -22
  270. package/src/core/job-executions.ts +3 -2
  271. package/src/core/maintenance.test.ts +13 -17
  272. package/src/core/maintenance.ts +5 -5
  273. package/src/core/provisioner-capability-snapshots.test.ts +35 -0
  274. package/src/core/provisioner-capability-snapshots.ts +12 -0
  275. package/src/core/provisioner-tokens.test.ts +20 -0
  276. package/src/core/provisioner-tokens.ts +33 -0
  277. package/src/core/rate-limit.test.ts +11 -27
  278. package/src/core/rate-limit.ts +3 -11
  279. package/src/core/runner-activation.ts +72 -0
  280. package/src/core/runner-assignments.ts +9 -0
  281. package/src/core/runner-control-sessions.ts +190 -0
  282. package/src/core/{provisioned-runners.test.ts → runner-instances.test.ts} +24 -24
  283. package/src/core/runner-instances.ts +301 -0
  284. package/src/core/runner-sessions.test.ts +112 -22
  285. package/src/core/runner-sessions.ts +25 -14
  286. package/src/db/db.ts +9 -2
  287. package/src/db/ephemeral-registration-tokens.test.ts +9 -9
  288. package/src/db/ephemeral-registration-tokens.ts +26 -26
  289. package/src/db/index.ts +30 -21
  290. package/src/db/job-executions.test.ts +13 -11
  291. package/src/db/job-executions.ts +33 -27
  292. package/src/db/provisioner-capability-snapshots.test.ts +175 -0
  293. package/src/db/provisioner-capability-snapshots.ts +130 -0
  294. package/src/db/provisioner-tokens.test.ts +139 -2
  295. package/src/db/provisioner-tokens.ts +123 -15
  296. package/src/db/reservations.test.ts +49 -0
  297. package/src/db/reservations.ts +146 -1
  298. package/src/db/runner-assignments.test.ts +163 -0
  299. package/src/db/runner-assignments.ts +115 -0
  300. package/src/db/{provisioned-runners.test.ts → runner-instances.test.ts} +442 -353
  301. package/src/db/runner-instances.ts +922 -0
  302. package/src/db/runner-sessions.test.ts +19 -6
  303. package/src/db/runner-sessions.ts +78 -2
  304. package/src/db/schema/ephemeral-registration-tokens.ts +4 -4
  305. package/src/db/schema/provisioner-capability-snapshots.ts +46 -0
  306. package/src/db/schema/provisioner-tokens.ts +33 -2
  307. package/src/db/schema/runner-activation-tokens.ts +22 -0
  308. package/src/db/schema/runner-control-sessions.ts +46 -0
  309. package/src/db/schema/{provisioned-runners.ts → runner-instances.ts} +28 -27
  310. package/src/db/schema/runner-sessions.ts +11 -7
  311. package/src/db/schema/running-job-executions.ts +5 -5
  312. package/src/index.test.ts +26 -0
  313. package/src/index.ts +38 -27
  314. package/src/installation-provisioning.ts +14 -0
  315. package/src/metrics/index.ts +5 -5
  316. package/src/metrics/instance.ts +25 -14
  317. package/src/presentation/auth/index.ts +4 -0
  318. package/src/presentation/auth/provisioner-token-auth.ts +8 -4
  319. package/src/presentation/auth/runner-control-session-auth.ts +31 -0
  320. package/src/presentation/auth/runner-registration-token-auth.ts +39 -3
  321. package/src/presentation/dto/index.ts +4 -8
  322. package/src/presentation/dto/poll-demand.ts +3 -1
  323. package/src/presentation/dto/provisioner-token.ts +5 -0
  324. package/src/presentation/dto/{provisioned-runners.ts → runner-instances.ts} +13 -15
  325. package/src/presentation/index.ts +2 -1
  326. package/src/presentation/inter-module.test.ts +15 -0
  327. package/src/presentation/inter-module.ts +53 -0
  328. package/src/presentation/routes/assign-runner-instances.ts +49 -0
  329. package/src/presentation/routes/get-provisioner-me.ts +3 -4
  330. package/src/presentation/routes/heartbeat.test.ts +4 -3
  331. package/src/presentation/routes/heartbeat.ts +67 -64
  332. package/src/presentation/routes/index.ts +91 -44
  333. package/src/presentation/routes/list-active-runners.test.ts +23 -23
  334. package/src/presentation/routes/manual-registration-tokens.test.ts +4 -3
  335. package/src/presentation/routes/poll-demand-release.test.ts +4 -4
  336. package/src/presentation/routes/poll-demand.test.ts +161 -22
  337. package/src/presentation/routes/poll-demand.ts +105 -45
  338. package/src/presentation/routes/provisioner-me.test.ts +37 -3
  339. package/src/presentation/routes/{reconcile-provisioned-runners.test.ts → reconcile-runner-instances.test.ts} +66 -61
  340. package/src/presentation/routes/reconcile-runner-instances.ts +30 -0
  341. package/src/presentation/routes/register.test.ts +9 -5
  342. package/src/presentation/routes/register.ts +61 -57
  343. package/src/presentation/routes/{report-provisioned-runners.test.ts → report-runner-instances.test.ts} +28 -28
  344. package/src/presentation/routes/{report-provisioned-runners.ts → report-runner-instances.ts} +14 -14
  345. package/src/presentation/routes/request-job.test.ts +5 -3
  346. package/src/presentation/routes/request-job.ts +41 -37
  347. package/src/presentation/routes/runner-enrollment.test.ts +319 -0
  348. package/src/presentation/routes/runner-enrollment.ts +196 -0
  349. package/src/temporal/activities/index.ts +2 -2
  350. package/src/temporal/activities/maintenance-activities.test.ts +7 -7
  351. package/src/temporal/activities/maintenance-activities.ts +3 -3
  352. package/src/temporal/workflows/stuck-job-detector.test.ts +3 -3
  353. package/src/temporal/workflows/stuck-job-detector.ts +2 -2
  354. package/test/env.ts +1 -3
  355. package/test/factories/ephemeral-registration-token.ts +2 -2
  356. package/test/factories/provisioner-token.ts +3 -1
  357. package/test/factories/runner-instance.ts +57 -0
  358. package/test/factories/runner-session.ts +3 -1
  359. package/test/fixtures/auth-inter-module.ts +30 -0
  360. package/test/globalSetup.ts +4 -1
  361. package/test/index.ts +2 -1
  362. package/tsconfig.build.tsbuildinfo +1 -1
  363. package/dist/core/entities/provisioned-runner.d.ts.map +0 -1
  364. package/dist/core/entities/provisioned-runner.js +0 -3
  365. package/dist/core/entities/provisioned-runner.js.map +0 -1
  366. package/dist/core/provisioned-runners.d.ts +0 -67
  367. package/dist/core/provisioned-runners.d.ts.map +0 -1
  368. package/dist/core/provisioned-runners.js +0 -162
  369. package/dist/core/provisioned-runners.js.map +0 -1
  370. package/dist/db/provisioned-runners.d.ts +0 -79
  371. package/dist/db/provisioned-runners.d.ts.map +0 -1
  372. package/dist/db/provisioned-runners.js +0 -466
  373. package/dist/db/provisioned-runners.js.map +0 -1
  374. package/dist/db/schema/provisioned-runners.d.ts.map +0 -1
  375. package/dist/db/schema/provisioned-runners.js.map +0 -1
  376. package/dist/presentation/dto/mint-registration-tokens.d.ts +0 -5
  377. package/dist/presentation/dto/mint-registration-tokens.d.ts.map +0 -1
  378. package/dist/presentation/dto/mint-registration-tokens.js +0 -19
  379. package/dist/presentation/dto/mint-registration-tokens.js.map +0 -1
  380. package/dist/presentation/dto/provisioned-runners.d.ts.map +0 -1
  381. package/dist/presentation/dto/provisioned-runners.js.map +0 -1
  382. package/dist/presentation/routes/mint-registration-tokens.d.ts +0 -2
  383. package/dist/presentation/routes/mint-registration-tokens.d.ts.map +0 -1
  384. package/dist/presentation/routes/mint-registration-tokens.js +0 -74
  385. package/dist/presentation/routes/mint-registration-tokens.js.map +0 -1
  386. package/dist/presentation/routes/reconcile-provisioned-runners.d.ts +0 -2
  387. package/dist/presentation/routes/reconcile-provisioned-runners.d.ts.map +0 -1
  388. package/dist/presentation/routes/reconcile-provisioned-runners.js +0 -27
  389. package/dist/presentation/routes/reconcile-provisioned-runners.js.map +0 -1
  390. package/dist/presentation/routes/report-provisioned-runners.d.ts +0 -2
  391. package/dist/presentation/routes/report-provisioned-runners.d.ts.map +0 -1
  392. package/dist/presentation/routes/report-provisioned-runners.js +0 -37
  393. package/dist/presentation/routes/report-provisioned-runners.js.map +0 -1
  394. package/src/core/provisioned-runners.ts +0 -301
  395. package/src/db/provisioned-runners.ts +0 -886
  396. package/src/presentation/dto/mint-registration-tokens.ts +0 -35
  397. package/src/presentation/routes/mint-registration-tokens.test.ts +0 -453
  398. package/src/presentation/routes/mint-registration-tokens.ts +0 -82
  399. package/src/presentation/routes/reconcile-provisioned-runners.ts +0 -30
  400. package/test/factories/provisioned-runner.ts +0 -78
@@ -1,12 +1,13 @@
1
- CREATE TYPE "public"."runners_provisioned_runner_state" AS ENUM('starting', 'running', 'stopping', 'stopped', 'failed', 'terminated');--> statement-breakpoint
2
- CREATE TYPE "public"."runners_runner_session_registration_token_kind" AS ENUM('manual', 'ephemeral');--> statement-breakpoint
1
+ CREATE TYPE "public"."runners_provider_runner_state" AS ENUM('starting', 'running', 'stopping', 'stopped', 'failed', 'terminated');--> statement-breakpoint
2
+ CREATE TYPE "public"."runners_provisioner_scope" AS ENUM('workspace', 'installation');--> statement-breakpoint
3
+ CREATE TYPE "public"."runners_runner_session_registration_token_kind" AS ENUM('manual', 'ephemeral', 'activation');--> statement-breakpoint
3
4
  CREATE TYPE "public"."runners_runner_session_scope" AS ENUM('workspace');--> statement-breakpoint
4
5
  CREATE TABLE "runners_ephemeral_registration_tokens" (
5
6
  "id" uuid PRIMARY KEY DEFAULT uuidv7() NOT NULL,
6
- "workspace_id" uuid NOT NULL,
7
+ "workspace_id" uuid,
7
8
  "provisioner_id" uuid NOT NULL,
8
9
  "reservation_id" uuid,
9
- "provisioned_runner_id" text NOT NULL,
10
+ "provider_runner_id" text,
10
11
  "hashed_token" text NOT NULL,
11
12
  "prefix" text NOT NULL,
12
13
  "expires_at" timestamp with time zone NOT NULL,
@@ -54,18 +55,21 @@ CREATE TABLE "runners_pending_jobs" (
54
55
  CONSTRAINT "runners_pending_jobs_job_execution_id_unique" UNIQUE("job_execution_id")
55
56
  );
56
57
  --> statement-breakpoint
57
- CREATE TABLE "runners_provisioned_runners" (
58
+ CREATE TABLE "runners_runner_instances" (
58
59
  "id" uuid PRIMARY KEY DEFAULT uuidv7() NOT NULL,
59
- "workspace_id" uuid NOT NULL,
60
+ "workspace_id" uuid,
60
61
  "provisioner_id" uuid NOT NULL,
61
- "provisioned_runner_id" text NOT NULL,
62
+ "provider_runner_id" text,
62
63
  "reservation_id" uuid,
64
+ "assigned_at" timestamp with time zone,
63
65
  "template_key" text,
64
- "labels" text[] NOT NULL,
65
- "state" "runners_provisioned_runner_state" NOT NULL,
66
+ "labels" text[] DEFAULT '{}' NOT NULL,
67
+ "state" "runners_provider_runner_state" NOT NULL,
66
68
  "reason" text,
67
69
  "runner_session_id" uuid,
68
70
  "provider_kind" text,
71
+ "protocol_version" text,
72
+ "capabilities" jsonb,
69
73
  "reported_at" timestamp with time zone NOT NULL,
70
74
  "started_at" timestamp with time zone,
71
75
  "stopping_at" timestamp with time zone,
@@ -77,9 +81,60 @@ CREATE TABLE "runners_provisioned_runners" (
77
81
  "updated_at" timestamp with time zone DEFAULT now() NOT NULL
78
82
  );
79
83
  --> statement-breakpoint
80
- CREATE TABLE "runners_provisioner_tokens" (
84
+ CREATE TABLE "runners_runner_bootstrap_tokens" (
85
+ "id" uuid PRIMARY KEY DEFAULT uuidv7() NOT NULL,
86
+ "runner_instance_id" uuid NOT NULL,
87
+ "provisioner_id" uuid NOT NULL,
88
+ "hashed_token" text NOT NULL,
89
+ "prefix" text NOT NULL,
90
+ "expires_at" timestamp with time zone NOT NULL,
91
+ "consumed_at" timestamp with time zone,
92
+ "revoked_at" timestamp with time zone,
93
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL
94
+ );
95
+ --> statement-breakpoint
96
+ CREATE TABLE "runners_runner_activation_tokens" (
97
+ "id" uuid PRIMARY KEY DEFAULT uuidv7() NOT NULL,
98
+ "runner_instance_id" uuid NOT NULL,
99
+ "hashed_token" text NOT NULL,
100
+ "prefix" text NOT NULL,
101
+ "expires_at" timestamp with time zone NOT NULL,
102
+ "consumed_at" timestamp with time zone,
103
+ "revoked_at" timestamp with time zone,
104
+ "consumed_session_id" uuid,
105
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL
106
+ );
107
+ --> statement-breakpoint
108
+ CREATE TABLE "runners_runner_control_sessions" (
109
+ "id" uuid PRIMARY KEY DEFAULT uuidv7() NOT NULL,
110
+ "runner_instance_id" uuid NOT NULL,
111
+ "provisioner_id" uuid NOT NULL,
112
+ "hashed_token" text NOT NULL,
113
+ "prefix" text NOT NULL,
114
+ "expires_at" timestamp with time zone NOT NULL,
115
+ "last_seen_at" timestamp with time zone DEFAULT now() NOT NULL,
116
+ "closed_at" timestamp with time zone,
117
+ "close_reason" text,
118
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL
119
+ );
120
+ --> statement-breakpoint
121
+ CREATE TABLE "runners_provisioner_capability_snapshots" (
81
122
  "id" uuid PRIMARY KEY DEFAULT uuidv7() NOT NULL,
82
123
  "workspace_id" uuid NOT NULL,
124
+ "provisioner_id" uuid NOT NULL,
125
+ "template_key" text NOT NULL,
126
+ "labels" text[] NOT NULL,
127
+ "available_slots" integer NOT NULL,
128
+ "starting" integer NOT NULL,
129
+ "running" integer NOT NULL,
130
+ "advertised_at" timestamp with time zone DEFAULT now() NOT NULL,
131
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL
132
+ );
133
+ --> statement-breakpoint
134
+ CREATE TABLE "runners_provisioner_tokens" (
135
+ "id" uuid PRIMARY KEY DEFAULT uuidv7() NOT NULL,
136
+ "scope" "runners_provisioner_scope" NOT NULL,
137
+ "workspace_id" uuid,
83
138
  "hashed_token" text NOT NULL,
84
139
  "prefix" text NOT NULL,
85
140
  "name" text,
@@ -89,7 +144,8 @@ CREATE TABLE "runners_provisioner_tokens" (
89
144
  "revoked_at" timestamp with time zone,
90
145
  "last_seen_at" timestamp with time zone,
91
146
  "created_at" timestamp with time zone DEFAULT now() NOT NULL,
92
- "updated_at" timestamp with time zone DEFAULT now() NOT NULL
147
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL,
148
+ CONSTRAINT "runners_provisioner_tokens_scope_workspace_ck" CHECK ((scope = 'workspace' AND workspace_id IS NOT NULL) OR (scope = 'installation' AND workspace_id IS NULL))
93
149
  );
94
150
  --> statement-breakpoint
95
151
  CREATE TABLE "runners_rate_limits" (
@@ -120,17 +176,19 @@ CREATE TABLE "runners_runner_sessions" (
120
176
  "scope" "runners_runner_session_scope" DEFAULT 'workspace' NOT NULL,
121
177
  "registration_token_id" uuid NOT NULL,
122
178
  "registration_token_kind" "runners_runner_session_registration_token_kind" NOT NULL,
179
+ "runner_instance_id" uuid,
123
180
  "provisioner_id" uuid,
124
- "provisioned_runner_id" text,
181
+ "provider_runner_id" text,
125
182
  "labels" text[] NOT NULL,
126
183
  "tool_capabilities" jsonb,
127
184
  "tool_capabilities_reported_at" timestamp with time zone,
128
185
  "max_claims" integer,
129
186
  "claims_used" integer DEFAULT 0 NOT NULL,
187
+ "revoked_at" timestamp with time zone,
130
188
  "created_at" timestamp with time zone DEFAULT now() NOT NULL,
131
189
  "updated_at" timestamp with time zone DEFAULT now() NOT NULL,
132
- CONSTRAINT "runners_runner_sessions_claims_ck" CHECK ("runners_runner_sessions"."claims_used" >= 0 AND (("runners_runner_sessions"."registration_token_kind" = 'manual' AND "runners_runner_sessions"."max_claims" IS NULL) OR ("runners_runner_sessions"."registration_token_kind" = 'ephemeral' AND "runners_runner_sessions"."max_claims" IS NOT NULL AND "runners_runner_sessions"."max_claims" > 0 AND "runners_runner_sessions"."claims_used" <= "runners_runner_sessions"."max_claims"))),
133
- CONSTRAINT "runners_runner_sessions_link_ck" CHECK ((("runners_runner_sessions"."registration_token_kind" = 'manual' AND "runners_runner_sessions"."provisioner_id" IS NULL AND "runners_runner_sessions"."provisioned_runner_id" IS NULL) OR ("runners_runner_sessions"."registration_token_kind" = 'ephemeral' AND "runners_runner_sessions"."provisioner_id" IS NOT NULL AND "runners_runner_sessions"."provisioned_runner_id" IS NOT NULL)))
190
+ CONSTRAINT "runners_runner_sessions_claims_ck" CHECK ("runners_runner_sessions"."claims_used" >= 0 AND (("runners_runner_sessions"."registration_token_kind" = 'manual' AND "runners_runner_sessions"."max_claims" IS NULL) OR ("runners_runner_sessions"."registration_token_kind" in ('ephemeral', 'activation') AND "runners_runner_sessions"."max_claims" IS NOT NULL AND "runners_runner_sessions"."max_claims" > 0 AND "runners_runner_sessions"."claims_used" <= "runners_runner_sessions"."max_claims"))),
191
+ CONSTRAINT "runners_runner_sessions_link_ck" CHECK ((("runners_runner_sessions"."registration_token_kind" = 'manual' AND "runners_runner_sessions"."runner_instance_id" IS NULL AND "runners_runner_sessions"."provisioner_id" IS NULL AND "runners_runner_sessions"."provider_runner_id" IS NULL) OR ("runners_runner_sessions"."registration_token_kind" = 'ephemeral' AND "runners_runner_sessions"."runner_instance_id" IS NULL AND "runners_runner_sessions"."provisioner_id" IS NOT NULL AND "runners_runner_sessions"."provider_runner_id" IS NOT NULL) OR ("runners_runner_sessions"."registration_token_kind" = 'activation' AND "runners_runner_sessions"."runner_instance_id" IS NOT NULL AND "runners_runner_sessions"."provisioner_id" IS NOT NULL AND "runners_runner_sessions"."provider_runner_id" IS NOT NULL)))
134
192
  );
135
193
  --> statement-breakpoint
136
194
  CREATE TABLE "runners_running_jobs" (
@@ -143,7 +201,7 @@ CREATE TABLE "runners_running_jobs" (
143
201
  "project_id" uuid NOT NULL,
144
202
  "runner_session_id" uuid NOT NULL,
145
203
  "provisioner_id" uuid,
146
- "provisioned_runner_id" text,
204
+ "provider_runner_id" text,
147
205
  "required_labels" text[] NOT NULL,
148
206
  "runner_labels" text[] NOT NULL,
149
207
  "started_at" timestamp with time zone DEFAULT now() NOT NULL,
@@ -151,13 +209,13 @@ CREATE TABLE "runners_running_jobs" (
151
209
  "last_heartbeat_at" timestamp with time zone DEFAULT now() NOT NULL,
152
210
  "cancellation_requested_at" timestamp with time zone,
153
211
  CONSTRAINT "runners_running_jobs_job_execution_id_unique" UNIQUE("job_execution_id"),
154
- CONSTRAINT "runners_running_jobs_link_ck" CHECK (("runners_running_jobs"."provisioner_id" IS NULL) = ("runners_running_jobs"."provisioned_runner_id" IS NULL))
212
+ CONSTRAINT "runners_running_jobs_link_ck" CHECK (("runners_running_jobs"."provisioner_id" IS NULL) = ("runners_running_jobs"."provider_runner_id" IS NULL))
155
213
  );
156
214
  --> statement-breakpoint
157
215
  ALTER TABLE "runners_running_jobs" ADD CONSTRAINT "runners_running_jobs_runner_session_id_runners_runner_sessions_id_fk" FOREIGN KEY ("runner_session_id") REFERENCES "public"."runners_runner_sessions"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
158
216
  CREATE UNIQUE INDEX "runners_ephemeral_registration_tokens_hashed_token_unique" ON "runners_ephemeral_registration_tokens" USING btree ("hashed_token");--> statement-breakpoint
159
217
  CREATE INDEX "runners_ephemeral_registration_tokens_reservation_id_idx" ON "runners_ephemeral_registration_tokens" USING btree ("reservation_id");--> statement-breakpoint
160
- CREATE INDEX "runners_ephemeral_registration_tokens_active_provisioned_runner_idx" ON "runners_ephemeral_registration_tokens" USING btree ("workspace_id","provisioner_id","provisioned_runner_id","consumed_at","expires_at");--> statement-breakpoint
218
+ CREATE INDEX "runners_ephemeral_registration_tokens_active_provider_runner_idx" ON "runners_ephemeral_registration_tokens" USING btree ("workspace_id","provisioner_id","provider_runner_id","consumed_at","expires_at");--> statement-breakpoint
161
219
  CREATE INDEX "runners_ephemeral_registration_tokens_terminal_idx" ON "runners_ephemeral_registration_tokens" USING btree (coalesce("consumed_at", "expires_at"),"id");--> statement-breakpoint
162
220
  CREATE UNIQUE INDEX "runners_manual_registration_tokens_hashed_token_unique" ON "runners_manual_registration_tokens" USING btree ("hashed_token");--> statement-breakpoint
163
221
  CREATE INDEX "runners_manual_registration_tokens_workspace_id_idx" ON "runners_manual_registration_tokens" USING btree ("workspace_id");--> statement-breakpoint
@@ -165,10 +223,19 @@ CREATE INDEX "runners_outbox_pending_idx" ON "runners_outbox" USING btree ("next
165
223
  CREATE INDEX "runners_outbox_dispatched_retention_idx" ON "runners_outbox" USING btree ("dispatched_at","id") WHERE "dispatched_at" IS NOT NULL;--> statement-breakpoint
166
224
  CREATE INDEX "runners_pending_jobs_workspace_created_idx" ON "runners_pending_jobs" USING btree ("workspace_id","created_at");--> statement-breakpoint
167
225
  CREATE INDEX "runners_pending_jobs_job_id_idx" ON "runners_pending_jobs" USING btree ("job_id");--> statement-breakpoint
168
- CREATE UNIQUE INDEX "runners_provisioned_runners_workspace_provisioner_runner_unique" ON "runners_provisioned_runners" USING btree ("workspace_id","provisioner_id","provisioned_runner_id");--> statement-breakpoint
169
- CREATE INDEX "runners_provisioned_runners_workspace_state_updated_idx" ON "runners_provisioned_runners" USING btree ("workspace_id","state","updated_at");--> statement-breakpoint
170
- CREATE INDEX "runners_provisioned_runners_stale_reaper_idx" ON "runners_provisioned_runners" USING btree ("state","updated_at","reported_at","workspace_id");--> statement-breakpoint
171
- CREATE INDEX "runners_provisioned_runners_active_template_counts_idx" ON "runners_provisioned_runners" USING btree ("workspace_id","provisioner_id","state","template_key") WHERE "state" in ('starting', 'running') and "template_key" is not null;--> statement-breakpoint
226
+ CREATE UNIQUE INDEX "runners_runner_instances_provisioner_runner_unique" ON "runners_runner_instances" USING btree ("provisioner_id","provider_runner_id") WHERE "provider_runner_id" is not null;--> statement-breakpoint
227
+ CREATE UNIQUE INDEX "runners_runner_bootstrap_tokens_hashed_token_unique" ON "runners_runner_bootstrap_tokens" USING btree ("hashed_token");--> statement-breakpoint
228
+ CREATE UNIQUE INDEX "runners_runner_activation_tokens_hashed_token_unique" ON "runners_runner_activation_tokens" USING btree ("hashed_token");--> statement-breakpoint
229
+ CREATE INDEX "runners_runner_activation_tokens_runner_instance_idx" ON "runners_runner_activation_tokens" USING btree ("runner_instance_id");--> statement-breakpoint
230
+ CREATE INDEX "runners_runner_bootstrap_tokens_runner_instance_idx" ON "runners_runner_bootstrap_tokens" USING btree ("runner_instance_id");--> statement-breakpoint
231
+ CREATE UNIQUE INDEX "runners_runner_control_sessions_hashed_token_unique" ON "runners_runner_control_sessions" USING btree ("hashed_token");--> statement-breakpoint
232
+ CREATE UNIQUE INDEX "runners_runner_control_sessions_active_runner_instance_unique" ON "runners_runner_control_sessions" USING btree ("runner_instance_id") WHERE "closed_at" is null;--> statement-breakpoint
233
+ CREATE INDEX "runners_runner_control_sessions_runner_instance_idx" ON "runners_runner_control_sessions" USING btree ("runner_instance_id");--> statement-breakpoint
234
+ CREATE INDEX "runners_runner_instances_workspace_state_updated_idx" ON "runners_runner_instances" USING btree ("state","updated_at");--> statement-breakpoint
235
+ CREATE INDEX "runners_runner_instances_stale_reaper_idx" ON "runners_runner_instances" USING btree ("state","updated_at","reported_at");--> statement-breakpoint
236
+ CREATE INDEX "runners_runner_instances_active_template_counts_idx" ON "runners_runner_instances" USING btree ("provisioner_id","state","template_key") WHERE "state" in ('starting', 'running') and "template_key" is not null;--> statement-breakpoint
237
+ CREATE INDEX "runners_provisioner_capability_snapshots_workspace_active_idx" ON "runners_provisioner_capability_snapshots" USING btree ("workspace_id","advertised_at");--> statement-breakpoint
238
+ CREATE INDEX "runners_provisioner_capability_snapshots_provisioner_idx" ON "runners_provisioner_capability_snapshots" USING btree ("provisioner_id");--> statement-breakpoint
172
239
  CREATE UNIQUE INDEX "runners_provisioner_tokens_hashed_token_unique" ON "runners_provisioner_tokens" USING btree ("hashed_token");--> statement-breakpoint
173
240
  CREATE INDEX "runners_provisioner_tokens_workspace_last_seen_idx" ON "runners_provisioner_tokens" USING btree ("workspace_id","last_seen_at" DESC NULLS LAST,"id" DESC NULLS LAST);--> statement-breakpoint
174
241
  CREATE UNIQUE INDEX "runners_rate_limits_window_unique" ON "runners_rate_limits" USING btree ("action","scope","identifier_hmac","window_start");--> statement-breakpoint
@@ -176,10 +243,10 @@ CREATE INDEX "runners_rate_limits_expires_at_idx" ON "runners_rate_limits" USING
176
243
  CREATE INDEX "runners_reservations_workspace_expires_idx" ON "runners_reservations" USING btree ("workspace_id","expires_at");--> statement-breakpoint
177
244
  CREATE INDEX "runners_reservations_expires_idx" ON "runners_reservations" USING btree ("expires_at");--> statement-breakpoint
178
245
  CREATE INDEX "runners_runner_sessions_kind_created_id_idx" ON "runners_runner_sessions" USING btree ("registration_token_kind","created_at","id");--> statement-breakpoint
179
- CREATE INDEX "runners_runner_sessions_provisioned_runner_updated_idx" ON "runners_runner_sessions" USING btree ("workspace_id","provisioner_id","provisioned_runner_id","updated_at") WHERE "provisioner_id" IS NOT NULL;--> statement-breakpoint
246
+ CREATE INDEX "runners_runner_sessions_provider_runner_updated_idx" ON "runners_runner_sessions" USING btree ("workspace_id","provisioner_id","provider_runner_id","updated_at") WHERE "provisioner_id" IS NOT NULL;--> statement-breakpoint
180
247
  CREATE INDEX "runners_running_jobs_no_first_heartbeat_started_idx" ON "runners_running_jobs" USING btree ("started_at") WHERE "first_heartbeat_at" IS NULL;--> statement-breakpoint
181
248
  CREATE INDEX "runners_running_jobs_last_heartbeat_at_idx" ON "runners_running_jobs" USING btree ("last_heartbeat_at");--> statement-breakpoint
182
- CREATE INDEX "runners_running_jobs_provisioned_runner_started_idx" ON "runners_running_jobs" USING btree ("workspace_id","provisioner_id","provisioned_runner_id","started_at" DESC NULLS LAST) WHERE "provisioner_id" IS NOT NULL;--> statement-breakpoint
183
- CREATE INDEX "runners_running_jobs_cancellation_requested_idx" ON "runners_running_jobs" USING btree ("workspace_id","provisioner_id","provisioned_runner_id") WHERE "cancellation_requested_at" IS NOT NULL;--> statement-breakpoint
249
+ CREATE INDEX "runners_running_jobs_provider_runner_started_idx" ON "runners_running_jobs" USING btree ("workspace_id","provisioner_id","provider_runner_id","started_at" DESC NULLS LAST) WHERE "provisioner_id" IS NOT NULL;--> statement-breakpoint
250
+ CREATE INDEX "runners_running_jobs_cancellation_requested_idx" ON "runners_running_jobs" USING btree ("workspace_id","provisioner_id","provider_runner_id") WHERE "cancellation_requested_at" IS NOT NULL;--> statement-breakpoint
184
251
  CREATE INDEX "runners_running_jobs_job_id_idx" ON "runners_running_jobs" USING btree ("job_id");--> statement-breakpoint
185
252
  CREATE INDEX "runners_running_jobs_runner_session_id_idx" ON "runners_running_jobs" USING btree ("runner_session_id");