@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,13 +1,14 @@
1
- export type ProvisionedRunnerState = 'starting' | 'running' | 'stopping' | 'stopped' | 'failed' | 'terminated';
2
- export interface ProvisionedRunner {
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
- provisionedRunnerId: string;
6
+ providerRunnerId: string;
7
7
  reservationId: string | null;
8
+ assignedAt?: Date | null;
8
9
  templateKey: string | null;
9
10
  labels: string[];
10
- state: ProvisionedRunnerState;
11
+ state: RunnerInstanceState;
11
12
  reason: string | null;
12
13
  runnerSessionId: string | null;
13
14
  providerKind: string | null;
@@ -21,4 +22,4 @@ export interface ProvisionedRunner {
21
22
  createdAt: Date;
22
23
  updatedAt: Date;
23
24
  }
24
- //# sourceMappingURL=provisioned-runner.d.ts.map
25
+ //# 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,UAAU,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,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,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=runner-instance.js.map
@@ -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 assignedAt?: Date | 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,WAsBC"}
@@ -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
- provisionedRunnerId: string | null;
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;IAC9C,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,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,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB"}
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 provisionedRunnerId: string | null;\n labels: string[];\n toolCapabilities: RunnerToolCapabilitiesDto | null;\n toolCapabilitiesReportedAt: Date | null;\n maxClaims: number | null;\n claimsUsed: number;\n createdAt: Date;\n updatedAt: Date;\n}\n"],"names":[],"mappings":"AAEA,WAeC"}
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
- provisionedRunnerId: string;
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 MintEphemeralRegistrationTokensBatchProvisionedRunner {
14
- provisionedRunnerId: string;
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
- provisionedRunners: MintEphemeralRegistrationTokensBatchProvisionedRunner[];
20
+ providerRunners: MintEphemeralRegistrationTokensBatchRunnerInstance[];
21
21
  ttlSeconds: number;
22
22
  maxBatchSize: number;
23
23
  }
24
24
  export interface MintEphemeralRegistrationTokensBatchResult {
25
- provisionedRunnerId: string;
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,mBAAmB,EAAE,MAAM,CAAC;IAC5B,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,qDAAqD;IACpE,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,0CAA0C;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,qDAAqD,EAAE,CAAC;IAC5E,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,0CAA0C;IACzD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,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,CAgCvD"}
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.provisionedRunnerId, expiresAt);
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
- provisionedRunnerId: params.provisionedRunnerId,
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.provisionedRunners.length > params.maxBatchSize) {
23
- throw new RegistrationTokenBatchTooLargeError(params.provisionedRunners.length, params.maxBatchSize);
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.provisionedRunners.map((provisionedRunner)=>buildEphemeralTokenRow(provisionedRunner.provisionedRunnerId, expiresAt));
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 tokensByProvisionedRunnerId = new Map(tokens.map((token)=>[
35
- token.provisionedRunnerId,
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 = tokensByProvisionedRunnerId.get(row.provisionedRunnerId);
39
+ const token = tokensByRunnerInstanceId.get(row.providerRunnerId);
40
40
  if (!token) {
41
- throw new Error(`Inserted token not returned for provisioned runner: ${row.provisionedRunnerId}`);
41
+ throw new Error(`Inserted token not returned for provisioned runner: ${row.providerRunnerId}`);
42
42
  }
43
43
  return {
44
- provisionedRunnerId: row.provisionedRunnerId,
44
+ providerRunnerId: row.providerRunnerId,
45
45
  rawToken: row.rawToken,
46
46
  token
47
47
  };
48
48
  });
49
49
  }
50
- function buildEphemeralTokenRow(provisionedRunnerId, expiresAt) {
50
+ function buildEphemeralTokenRow(providerRunnerId, expiresAt) {
51
51
  const rawToken = generateOpaqueToken('ephemeralRegistrationToken');
52
52
  return {
53
- provisionedRunnerId,
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 provisionedRunnerId: string;\n reservationId?: string | null | undefined;\n ttlSeconds: number;\n}\n\nexport interface MintEphemeralRegistrationTokenResult {\n token: EphemeralRegistrationToken;\n rawToken: string;\n}\n\nexport interface MintEphemeralRegistrationTokensBatchProvisionedRunner {\n provisionedRunnerId: string;\n}\n\nexport interface MintEphemeralRegistrationTokensBatchParams {\n workspaceId: string;\n provisionerId: string;\n reservationId: string;\n provisionedRunners: MintEphemeralRegistrationTokensBatchProvisionedRunner[];\n ttlSeconds: number;\n maxBatchSize: number;\n}\n\nexport interface MintEphemeralRegistrationTokensBatchResult {\n provisionedRunnerId: 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.provisionedRunnerId, expiresAt);\n const token = await createEphemeralRegistrationToken({\n workspaceId: params.workspaceId,\n provisionerId: params.provisionerId,\n reservationId: params.reservationId ?? null,\n provisionedRunnerId: params.provisionedRunnerId,\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.provisionedRunners.length > params.maxBatchSize) {\n throw new RegistrationTokenBatchTooLargeError(\n params.provisionedRunners.length,\n params.maxBatchSize,\n );\n }\n\n const expiresAt = new Date(Date.now() + params.ttlSeconds * 1000);\n const rows = params.provisionedRunners.map((provisionedRunner) =>\n buildEphemeralTokenRow(provisionedRunner.provisionedRunnerId, 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 tokensByProvisionedRunnerId = new Map(\n tokens.map((token) => [token.provisionedRunnerId, token]),\n );\n\n return rows.map((row) => {\n const token = tokensByProvisionedRunnerId.get(row.provisionedRunnerId);\n if (!token) {\n throw new Error(\n `Inserted token not returned for provisioned runner: ${row.provisionedRunnerId}`,\n );\n }\n return {provisionedRunnerId: row.provisionedRunnerId, rawToken: row.rawToken, token};\n });\n}\n\ninterface EphemeralTokenRow {\n provisionedRunnerId: string;\n rawToken: string;\n hashedToken: string;\n prefix: string;\n expiresAt: Date;\n}\n\nfunction buildEphemeralTokenRow(provisionedRunnerId: string, expiresAt: Date): EphemeralTokenRow {\n const rawToken = generateOpaqueToken('ephemeralRegistrationToken');\n return {\n provisionedRunnerId,\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","provisionedRunnerId","token","workspaceId","provisionerId","reservationId","hashedToken","prefix","rawToken","mintEphemeralRegistrationTokensBatch","provisionedRunners","length","maxBatchSize","rows","map","provisionedRunner","tokens","tokensByProvisionedRunnerId","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,mBAAmB,EAAEN;IAC/D,MAAMO,QAAQ,MAAMZ,iCAAiC;QACnDa,aAAaT,OAAOS,WAAW;QAC/BC,eAAeV,OAAOU,aAAa;QACnCC,eAAeX,OAAOW,aAAa,IAAI;QACvCJ,qBAAqBP,OAAOO,mBAAmB;QAC/CK,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,kBAAkB,CAACC,MAAM,GAAGjB,OAAOkB,YAAY,EAAE;QAC1D,MAAM,IAAIpB,oCACRE,OAAOgB,kBAAkB,CAACC,MAAM,EAChCjB,OAAOkB,YAAY;IAEvB;IAEA,MAAMjB,YAAY,IAAIC,KAAKA,KAAKC,GAAG,KAAKH,OAAOI,UAAU,GAAG;IAC5D,MAAMe,OAAOnB,OAAOgB,kBAAkB,CAACI,GAAG,CAAC,CAACC,oBAC1Cf,uBAAuBe,kBAAkBd,mBAAmB,EAAEN;IAEhE,MAAMqB,SAAS,MAAMzB,uCAAuC;QAC1DY,aAAaT,OAAOS,WAAW;QAC/BC,eAAeV,OAAOU,aAAa;QACnCC,eAAeX,OAAOW,aAAa;QACnCV;QACAkB;IACF;IACA,MAAMI,8BAA8B,IAAIC,IACtCF,OAAOF,GAAG,CAAC,CAACZ,QAAU;YAACA,MAAMD,mBAAmB;YAAEC;SAAM;IAG1D,OAAOW,KAAKC,GAAG,CAAC,CAACf;QACf,MAAMG,QAAQe,4BAA4BE,GAAG,CAACpB,IAAIE,mBAAmB;QACrE,IAAI,CAACC,OAAO;YACV,MAAM,IAAIkB,MACR,CAAC,oDAAoD,EAAErB,IAAIE,mBAAmB,EAAE;QAEpF;QACA,OAAO;YAACA,qBAAqBF,IAAIE,mBAAmB;YAAEO,UAAUT,IAAIS,QAAQ;YAAEN;QAAK;IACrF;AACF;AAUA,SAASF,uBAAuBC,mBAA2B,EAAEN,SAAe;IAC1E,MAAMa,WAAWpB,oBAAoB;IACrC,OAAO;QACLa;QACAO;QACAF,aAAajB,gBAAgBmB;QAC7BD,QAAQpB,qBAAqBqB;QAC7Bb;IACF;AACF"}
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"}
@@ -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 provisionedRunnerId: string;
33
- constructor(workspaceId: string, provisionerId: string, provisionedRunnerId: 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 RunnerInstanceNotAssignableError extends Error {
44
+ readonly runnerInstanceId: string;
45
+ constructor(runnerInstanceId: string);
46
+ }
47
+ export declare class RunnerInstanceAlreadyAssignedError extends Error {
48
+ readonly runnerInstanceId: string;
49
+ constructor(runnerInstanceId: 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 provisionedRunnerIds: string[];
56
- constructor(provisionedRunnerIds: string[]);
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,mBAAmB,EAAE,MAAM;gBAF3B,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,mBAAmB,EAAE,MAAM;CAO9C;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,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,oBAAoB,EAAE,MAAM,EAAE;gBAA9B,oBAAoB,EAAE,MAAM,EAAE;CAM3D;AAED,qBAAa,2BAA4B,SAAQ,KAAK;aACxB,eAAe,EAAE,MAAM;gBAAvB,eAAe,EAAE,MAAM;CAIpD"}
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,gCAAiC,SAAQ,KAAK;aAC7B,gBAAgB,EAAE,MAAM;gBAAxB,gBAAgB,EAAE,MAAM;CAIrD;AACD,qBAAa,kCAAmC,SAAQ,KAAK;aAC/B,gBAAgB,EAAE,MAAM;gBAAxB,gBAAgB,EAAE,MAAM;CAIrD;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"}
@@ -47,8 +47,8 @@ export class RegistrationTokenWorkspaceMismatchError extends Error {
47
47
  }
48
48
  }
49
49
  export class ActiveEphemeralRegistrationTokenExistsError extends Error {
50
- constructor(workspaceId, provisionerId, provisionedRunnerId){
51
- super(`Active ephemeral registration token already exists for provisioned runner ${provisionedRunnerId} in workspace ${workspaceId}`), this.workspaceId = workspaceId, this.provisionerId = provisionerId, this.provisionedRunnerId = provisionedRunnerId;
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 RunnerInstanceNotAssignableError extends Error {
68
+ constructor(runnerInstanceId){
69
+ super(`Runner instance cannot be assigned: ${runnerInstanceId}`), this.runnerInstanceId = runnerInstanceId;
70
+ this.name = 'RunnerInstanceNotAssignableError';
71
+ }
72
+ }
73
+ export class RunnerInstanceAlreadyAssignedError extends Error {
74
+ constructor(runnerInstanceId){
75
+ super(`Runner instance is already assigned: ${runnerInstanceId}`), this.runnerInstanceId = runnerInstanceId;
76
+ this.name = 'RunnerInstanceAlreadyAssignedError';
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(provisionedRunnerIds){
81
- super(`Active ephemeral registration tokens already exist for provisioned runners: ${provisionedRunnerIds.join(', ')}`), this.provisionedRunnerIds = provisionedRunnerIds;
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
  }
@@ -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 provisionedRunnerId: string,\n ) {\n super(\n `Active ephemeral registration token already exists for provisioned runner ${provisionedRunnerId} 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 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 provisionedRunnerIds: string[]) {\n super(\n `Active ephemeral registration tokens already exist for provisioned runners: ${provisionedRunnerIds.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","provisionedRunnerId","ReservationNotFoundError","reservationId","ReservationExpiredError","RegistrationTokenBatchTooLargeError","requested","max","RegistrationTokenBatchExceedsReservationError","reservationCount","alreadyMinted","ActiveEphemeralRegistrationTokensExistError","provisionedRunnerIds","join","RunnerSessionExhaustedError","runnerSessionId"],"mappings":"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"}
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 RunnerInstanceNotAssignableError extends Error {\n constructor(public readonly runnerInstanceId: string) {\n super(`Runner instance cannot be assigned: ${runnerInstanceId}`);\n this.name = 'RunnerInstanceNotAssignableError';\n }\n}\nexport class RunnerInstanceAlreadyAssignedError extends Error {\n constructor(public readonly runnerInstanceId: string) {\n super(`Runner instance is already assigned: ${runnerInstanceId}`);\n this.name = 'RunnerInstanceAlreadyAssignedError';\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","RunnerInstanceNotAssignableError","runnerInstanceId","RunnerInstanceAlreadyAssignedError","ReservationAlreadyAssignedError","RegistrationTokenBatchTooLargeError","requested","max","RegistrationTokenBatchExceedsReservationError","reservationCount","alreadyMinted","ActiveEphemeralRegistrationTokensExistError","providerRunnerIds","join","RunnerSessionExhaustedError","runnerSessionId"],"mappings":"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"}
@@ -1,14 +1,18 @@
1
1
  export type { EphemeralRegistrationToken } from './entities/ephemeral-registration-token.js';
2
2
  export type { ManualRegistrationToken } from './entities/manual-registration-token.js';
3
- export type { ProvisionedRunner, ProvisionedRunnerState, } from './entities/provisioned-runner.js';
4
- export type { ActiveProvisionerToken, ProvisionerToken } from './entities/provisioner-token.js';
3
+ export type { ProvisionerCapabilitySnapshot } from './entities/provisioner-capability-snapshot.js';
4
+ export type { ActiveProvisionerToken, ProvisionerScope, ProvisionerToken, } from './entities/provisioner-token.js';
5
+ export type { RunnerInstance, RunnerInstanceState, } from './entities/runner-instance.js';
5
6
  export type { RunnerSession } from './entities/runner-session.js';
6
- export { type MintEphemeralRegistrationTokenParams, type MintEphemeralRegistrationTokenResult, mintEphemeralRegistrationToken, } from './ephemeral-registration-tokens.js';
7
7
  export { EmptyRunnerLabelsError, ManualRegistrationTokenNotFoundError, ProvisionerTokenNotFoundError, RegistrationTokenConsumedError, RegistrationTokenExpiredError, RunnerSessionExhaustedError, RunningJobExecutionNotFoundError, } from './errors.js';
8
8
  export { type ClaimJobExecutionResult, claimJobExecution } from './job-executions.js';
9
9
  export { createWorkspaceManualRegistrationToken, listUsableManualRegistrationTokens, revokeWorkspaceManualRegistrationToken, } from './manual-registration-tokens.js';
10
- export { type ActiveRunner, listActiveRunners, type ReconcileDesiredIntent, type ReconciledBoundJobExecution, type ReconciledProvisionedRunner, type ReconcileProvisionedRunnersParams, type ReconcileProvisionedRunnersResult, type ReportProvisionedRunnersParams, type ReportProvisionedRunnersResult, reconcileProvisionedRunners, reportProvisionedRunners, } from './provisioned-runners.js';
11
- export { createWorkspaceProvisionerToken, listActiveProvisioners, listUsableProvisionerTokens, revokeWorkspaceProvisionerToken, } from './provisioner-tokens.js';
10
+ export { hasActiveWorkspaceProvisionerCapability } from './provisioner-capability-snapshots.js';
11
+ export { createInstallationProvisionerToken, createWorkspaceProvisionerToken, listActiveProvisioners, listUsableProvisionerTokens, revokeInstallationProvisionerToken, revokeWorkspaceProvisionerToken, } from './provisioner-tokens.js';
12
+ export { getRunnerAssignment, issueRunnerActivationToken } from './runner-activation.js';
13
+ export { assignRunnerInstances } from './runner-assignments.js';
14
+ export { attachRunnerControlProviderId, createRunnerInstancesWithBootstrapTokens, enrollRunnerControlSession, exchangeRunnerBootstrapToken, RunnerBootstrapTokenInvalidError, RunnerControlSessionInvalidError, touchRunnerControlSession, } from './runner-control-sessions.js';
15
+ export { type ActiveRunner, attachRunnerInstanceProviderId, listActiveRunners, type ReconcileDesiredIntent, type ReconciledBoundJobExecution, type ReconciledRunnerInstance, type ReconcileRunnerInstancesParams, type ReconcileRunnerInstancesResult, type ReportRunnerInstancesParams, type ReportRunnerInstancesResult, reconcileRunnerInstances, reportRunnerInstances, } from './runner-instances.js';
12
16
  export { type RegisterRunnerSessionResult, type RunnerRegistrationCredential, registerRunnerSession, } from './runner-sessions.js';
13
17
  export { EMPTY_RUNNER_TOOL_CAPABILITIES, effectiveRunnerToolCapabilities, } from './runner-tool-capabilities.js';
14
18
  //# sourceMappingURL=index.d.ts.map
@@ -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,EACV,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EAAC,sBAAsB,EAAE,gBAAgB,EAAC,MAAM,iCAAiC,CAAC;AAC9F,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,EACL,KAAK,YAAY,EACjB,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EAChC,KAAK,2BAA2B,EAChC,KAAK,iCAAiC,EACtC,KAAK,iCAAiC,EACtC,KAAK,8BAA8B,EACnC,KAAK,8BAA8B,EACnC,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,+BAA+B,EAC/B,sBAAsB,EACtB,2BAA2B,EAC3B,+BAA+B,GAChC,MAAM,yBAAyB,CAAC;AACjC,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"}
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,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,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,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAC;AAC9D,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,8BAA8B,EAC9B,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"}
@@ -1,9 +1,12 @@
1
- export { mintEphemeralRegistrationToken } from './ephemeral-registration-tokens.js';
2
1
  export { EmptyRunnerLabelsError, ManualRegistrationTokenNotFoundError, ProvisionerTokenNotFoundError, RegistrationTokenConsumedError, RegistrationTokenExpiredError, RunnerSessionExhaustedError, RunningJobExecutionNotFoundError } from './errors.js';
3
2
  export { claimJobExecution } from './job-executions.js';
4
3
  export { createWorkspaceManualRegistrationToken, listUsableManualRegistrationTokens, revokeWorkspaceManualRegistrationToken } from './manual-registration-tokens.js';
5
- export { listActiveRunners, reconcileProvisionedRunners, reportProvisionedRunners } from './provisioned-runners.js';
6
- export { createWorkspaceProvisionerToken, listActiveProvisioners, listUsableProvisionerTokens, revokeWorkspaceProvisionerToken } from './provisioner-tokens.js';
4
+ export { hasActiveWorkspaceProvisionerCapability } from './provisioner-capability-snapshots.js';
5
+ export { createInstallationProvisionerToken, createWorkspaceProvisionerToken, listActiveProvisioners, listUsableProvisionerTokens, revokeInstallationProvisionerToken, revokeWorkspaceProvisionerToken } from './provisioner-tokens.js';
6
+ export { getRunnerAssignment, issueRunnerActivationToken } from './runner-activation.js';
7
+ export { assignRunnerInstances } from './runner-assignments.js';
8
+ export { attachRunnerControlProviderId, createRunnerInstancesWithBootstrapTokens, enrollRunnerControlSession, exchangeRunnerBootstrapToken, RunnerBootstrapTokenInvalidError, RunnerControlSessionInvalidError, touchRunnerControlSession } from './runner-control-sessions.js';
9
+ export { attachRunnerInstanceProviderId, listActiveRunners, reconcileRunnerInstances, reportRunnerInstances } from './runner-instances.js';
7
10
  export { registerRunnerSession } from './runner-sessions.js';
8
11
  export { EMPTY_RUNNER_TOOL_CAPABILITIES, effectiveRunnerToolCapabilities } from './runner-tool-capabilities.js';
9
12
 
@@ -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 ProvisionedRunner,\n ProvisionedRunnerState,\n} from './entities/provisioned-runner.js';\nexport type {ActiveProvisionerToken, ProvisionerToken} from './entities/provisioner-token.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 {\n type ActiveRunner,\n listActiveRunners,\n type ReconcileDesiredIntent,\n type ReconciledBoundJobExecution,\n type ReconciledProvisionedRunner,\n type ReconcileProvisionedRunnersParams,\n type ReconcileProvisionedRunnersResult,\n type ReportProvisionedRunnersParams,\n type ReportProvisionedRunnersResult,\n reconcileProvisionedRunners,\n reportProvisionedRunners,\n} from './provisioned-runners.js';\nexport {\n createWorkspaceProvisionerToken,\n listActiveProvisioners,\n listUsableProvisionerTokens,\n revokeWorkspaceProvisionerToken,\n} from './provisioner-tokens.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":["mintEphemeralRegistrationToken","EmptyRunnerLabelsError","ManualRegistrationTokenNotFoundError","ProvisionerTokenNotFoundError","RegistrationTokenConsumedError","RegistrationTokenExpiredError","RunnerSessionExhaustedError","RunningJobExecutionNotFoundError","claimJobExecution","createWorkspaceManualRegistrationToken","listUsableManualRegistrationTokens","revokeWorkspaceManualRegistrationToken","listActiveRunners","reconcileProvisionedRunners","reportProvisionedRunners","createWorkspaceProvisionerToken","listActiveProvisioners","listUsableProvisionerTokens","revokeWorkspaceProvisionerToken","registerRunnerSession","EMPTY_RUNNER_TOOL_CAPABILITIES","effectiveRunnerToolCapabilities"],"mappings":"AAQA,SAGEA,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,SAEEC,iBAAiB,EAQjBC,2BAA2B,EAC3BC,wBAAwB,QACnB,2BAA2B;AAClC,SACEC,+BAA+B,EAC/BC,sBAAsB,EACtBC,2BAA2B,EAC3BC,+BAA+B,QAC1B,0BAA0B;AACjC,SAGEC,qBAAqB,QAChB,uBAAuB;AAC9B,SACEC,8BAA8B,EAC9BC,+BAA+B,QAC1B,gCAAgC"}
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 {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 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 {assignRunnerInstances} from './runner-assignments.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 attachRunnerInstanceProviderId,\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":["EmptyRunnerLabelsError","ManualRegistrationTokenNotFoundError","ProvisionerTokenNotFoundError","RegistrationTokenConsumedError","RegistrationTokenExpiredError","RunnerSessionExhaustedError","RunningJobExecutionNotFoundError","claimJobExecution","createWorkspaceManualRegistrationToken","listUsableManualRegistrationTokens","revokeWorkspaceManualRegistrationToken","hasActiveWorkspaceProvisionerCapability","createInstallationProvisionerToken","createWorkspaceProvisionerToken","listActiveProvisioners","listUsableProvisionerTokens","revokeInstallationProvisionerToken","revokeWorkspaceProvisionerToken","getRunnerAssignment","issueRunnerActivationToken","assignRunnerInstances","attachRunnerControlProviderId","createRunnerInstancesWithBootstrapTokens","enrollRunnerControlSession","exchangeRunnerBootstrapToken","RunnerBootstrapTokenInvalidError","RunnerControlSessionInvalidError","touchRunnerControlSession","attachRunnerInstanceProviderId","listActiveRunners","reconcileRunnerInstances","reportRunnerInstances","registerRunnerSession","EMPTY_RUNNER_TOOL_CAPABILITIES","effectiveRunnerToolCapabilities"],"mappings":"AAaA,SACEA,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,SAAQC,qBAAqB,QAAO,0BAA0B;AAC9D,SACEC,6BAA6B,EAC7BC,wCAAwC,EACxCC,0BAA0B,EAC1BC,4BAA4B,EAC5BC,gCAAgC,EAChCC,gCAAgC,EAChCC,yBAAyB,QACpB,+BAA+B;AACtC,SAEEC,8BAA8B,EAC9BC,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":"AAKA,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,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
+ {"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 issueJobLeaseToken({
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 {issueJobLeaseToken} from '@shipfox/api-auth';\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 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 leaseToken = await issueJobLeaseToken({\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":["issueJobLeaseToken","claimPendingJobExecution","jobExecutionClaimedCount","config","claimJobExecution","params","claimed","runnerSessionLivenessThrottleSeconds","RUNNER_SESSION_LIVENESS_THROTTLE_SECONDS","add","outcome","leaseToken","workflowRunId","workflowRunAttemptId","jobId","jobExecutionId","projectId","workspaceId","runnerSessionId"],"mappings":"AAAA,SAAQA,kBAAkB,QAAO,oBAAoB;AACrD,SAAQC,wBAAwB,QAAO,wBAAwB;AAC/D,SAAQC,wBAAwB,QAAO,uBAAuB;AAC9D,SAAQC,MAAM,QAAO,eAAe;AAUpC,OAAO,eAAeC,kBAAkBC,MAKvC;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,MAAMC,aAAa,MAAMX,mBAAmB;QAC1CY,eAAeN,QAAQM,aAAa;QACpCC,sBAAsBP,QAAQO,oBAAoB;QAClDC,OAAOR,QAAQQ,KAAK;QACpBC,gBAAgBT,QAAQS,cAAc;QACtCC,WAAWV,QAAQU,SAAS;QAC5BC,aAAaZ,OAAOY,WAAW;QAC/BC,iBAAiBb,OAAOa,eAAe;IACzC;IAEA,OAAO;QACLN,eAAeN,QAAQM,aAAa;QACpCC,sBAAsBP,QAAQO,oBAAoB;QAClDC,OAAOR,QAAQQ,KAAK;QACpBC,gBAAgBT,QAAQS,cAAc;QACtCJ;IACF;AACF"}
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 reapStaleProvisionedRunners(params?: {
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,2BAA2B,CAAC,MAAM,CAAC,EAAE;IACzD,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"}
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"}
@@ -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 { provisionedRunnerReapedCount, reservationReleasedCount } from '#metrics/instance.js';
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 reapStaleProvisionedRunners(params) {
25
- const result = await reapStaleProvisionedRunnersDb({
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) provisionedRunnerReapedCount.add(result.reaped);
29
+ if (result.reaped > 0) providerRunnerReapedCount.add(result.reaped);
30
30
  if (result.reservationsReleased > 0) {
31
31
  reservationReleasedCount.add(result.reservationsReleased);
32
32
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/maintenance.ts"],"sourcesContent":["import {config} from '#config.js';\nimport {deleteExpiredEphemeralRegistrationTokens as deleteExpiredEphemeralRegistrationTokensDb} from '#db/ephemeral-registration-tokens.js';\nimport {expireStuckJobExecutions} from '#db/job-executions.js';\nimport {reapStaleProvisionedRunners as reapStaleProvisionedRunnersDb} from '#db/provisioned-runners.js';\nimport {deleteExpiredReservations} from '#db/reservations.js';\nimport {deleteExpiredRunnerSessions as deleteExpiredRunnerSessionsDb} from '#db/runner-sessions.js';\nimport {provisionedRunnerReapedCount, reservationReleasedCount} from '#metrics/instance.js';\nimport {STUCK_JOB_THRESHOLD_SECONDS} from './maintenance-policy.js';\n\nexport interface DetectAndExpireStuckJobsParams {\n noFirstHeartbeatGraceSeconds?: number;\n thresholdSeconds?: number;\n}\n\nexport async function detectAndExpireStuckJobs(\n params: DetectAndExpireStuckJobsParams = {},\n): Promise<{expired: number}> {\n const reaped = await expireStuckJobExecutions({\n noFirstHeartbeatGraceSeconds:\n params.noFirstHeartbeatGraceSeconds ?? config.RUNNER_NO_FIRST_HEARTBEAT_GRACE_SECONDS,\n thresholdSeconds: params.thresholdSeconds ?? STUCK_JOB_THRESHOLD_SECONDS,\n });\n return {expired: reaped.length};\n}\n\nexport async function deleteExpiredRunnerReservations(params?: {\n limit?: number;\n}): Promise<{deleted: number}> {\n const deleted = await deleteExpiredReservations(params);\n return {deleted};\n}\n\nexport async function reapStaleProvisionedRunners(params?: {\n thresholdSeconds?: number;\n limit?: number;\n}): Promise<{reaped: number; reservationsReleased: number}> {\n const result = await reapStaleProvisionedRunnersDb({\n thresholdSeconds:\n params?.thresholdSeconds ?? config.RUNNER_STALE_PROVISIONED_RUNNER_THRESHOLD_SECONDS,\n limit: params?.limit ?? config.RUNNER_STALE_PROVISIONED_RUNNER_REAPER_LIMIT,\n });\n\n if (result.reaped > 0) provisionedRunnerReapedCount.add(result.reaped);\n if (result.reservationsReleased > 0) {\n reservationReleasedCount.add(result.reservationsReleased);\n }\n\n return result;\n}\n\nexport async function deleteExpiredRunnerSessions(params?: {\n manualRetentionDays?: number;\n ephemeralRetentionDays?: number;\n limit?: number;\n}): Promise<{deleted: number}> {\n const deleted = await deleteExpiredRunnerSessionsDb({\n manualRetentionDays: params?.manualRetentionDays ?? config.RUNNER_SESSION_MANUAL_RETENTION_DAYS,\n ephemeralRetentionDays:\n params?.ephemeralRetentionDays ?? config.RUNNER_SESSION_EPHEMERAL_RETENTION_DAYS,\n limit: params?.limit ?? config.RUNNER_SESSION_GC_BATCH_SIZE,\n });\n return {deleted};\n}\n\nexport async function deleteExpiredEphemeralRegistrationTokens(params?: {\n retentionDays?: number;\n limit?: number;\n}): Promise<{deleted: number}> {\n const deleted = await deleteExpiredEphemeralRegistrationTokensDb({\n retentionDays: params?.retentionDays ?? config.RUNNER_EPHEMERAL_TOKEN_RETENTION_DAYS,\n limit: params?.limit ?? config.RUNNER_EPHEMERAL_TOKEN_GC_BATCH_SIZE,\n });\n return {deleted};\n}\n"],"names":["config","deleteExpiredEphemeralRegistrationTokens","deleteExpiredEphemeralRegistrationTokensDb","expireStuckJobExecutions","reapStaleProvisionedRunners","reapStaleProvisionedRunnersDb","deleteExpiredReservations","deleteExpiredRunnerSessions","deleteExpiredRunnerSessionsDb","provisionedRunnerReapedCount","reservationReleasedCount","STUCK_JOB_THRESHOLD_SECONDS","detectAndExpireStuckJobs","params","reaped","noFirstHeartbeatGraceSeconds","RUNNER_NO_FIRST_HEARTBEAT_GRACE_SECONDS","thresholdSeconds","expired","length","deleteExpiredRunnerReservations","deleted","result","RUNNER_STALE_PROVISIONED_RUNNER_THRESHOLD_SECONDS","limit","RUNNER_STALE_PROVISIONED_RUNNER_REAPER_LIMIT","add","reservationsReleased","manualRetentionDays","RUNNER_SESSION_MANUAL_RETENTION_DAYS","ephemeralRetentionDays","RUNNER_SESSION_EPHEMERAL_RETENTION_DAYS","RUNNER_SESSION_GC_BATCH_SIZE","retentionDays","RUNNER_EPHEMERAL_TOKEN_RETENTION_DAYS","RUNNER_EPHEMERAL_TOKEN_GC_BATCH_SIZE"],"mappings":"AAAA,SAAQA,MAAM,QAAO,aAAa;AAClC,SAAQC,4CAA4CC,0CAA0C,QAAO,uCAAuC;AAC5I,SAAQC,wBAAwB,QAAO,wBAAwB;AAC/D,SAAQC,+BAA+BC,6BAA6B,QAAO,6BAA6B;AACxG,SAAQC,yBAAyB,QAAO,sBAAsB;AAC9D,SAAQC,+BAA+BC,6BAA6B,QAAO,yBAAyB;AACpG,SAAQC,4BAA4B,EAAEC,wBAAwB,QAAO,uBAAuB;AAC5F,SAAQC,2BAA2B,QAAO,0BAA0B;AAOpE,OAAO,eAAeC,yBACpBC,SAAyC,CAAC,CAAC;IAE3C,MAAMC,SAAS,MAAMX,yBAAyB;QAC5CY,8BACEF,OAAOE,4BAA4B,IAAIf,OAAOgB,uCAAuC;QACvFC,kBAAkBJ,OAAOI,gBAAgB,IAAIN;IAC/C;IACA,OAAO;QAACO,SAASJ,OAAOK,MAAM;IAAA;AAChC;AAEA,OAAO,eAAeC,gCAAgCP,MAErD;IACC,MAAMQ,UAAU,MAAMf,0BAA0BO;IAChD,OAAO;QAACQ;IAAO;AACjB;AAEA,OAAO,eAAejB,4BAA4BS,MAGjD;IACC,MAAMS,SAAS,MAAMjB,8BAA8B;QACjDY,kBACEJ,QAAQI,oBAAoBjB,OAAOuB,iDAAiD;QACtFC,OAAOX,QAAQW,SAASxB,OAAOyB,4CAA4C;IAC7E;IAEA,IAAIH,OAAOR,MAAM,GAAG,GAAGL,6BAA6BiB,GAAG,CAACJ,OAAOR,MAAM;IACrE,IAAIQ,OAAOK,oBAAoB,GAAG,GAAG;QACnCjB,yBAAyBgB,GAAG,CAACJ,OAAOK,oBAAoB;IAC1D;IAEA,OAAOL;AACT;AAEA,OAAO,eAAef,4BAA4BM,MAIjD;IACC,MAAMQ,UAAU,MAAMb,8BAA8B;QAClDoB,qBAAqBf,QAAQe,uBAAuB5B,OAAO6B,oCAAoC;QAC/FC,wBACEjB,QAAQiB,0BAA0B9B,OAAO+B,uCAAuC;QAClFP,OAAOX,QAAQW,SAASxB,OAAOgC,4BAA4B;IAC7D;IACA,OAAO;QAACX;IAAO;AACjB;AAEA,OAAO,eAAepB,yCAAyCY,MAG9D;IACC,MAAMQ,UAAU,MAAMnB,2CAA2C;QAC/D+B,eAAepB,QAAQoB,iBAAiBjC,OAAOkC,qCAAqC;QACpFV,OAAOX,QAAQW,SAASxB,OAAOmC,oCAAoC;IACrE;IACA,OAAO;QAACd;IAAO;AACjB"}
1
+ {"version":3,"sources":["../../src/core/maintenance.ts"],"sourcesContent":["import {config} from '#config.js';\nimport {deleteExpiredEphemeralRegistrationTokens as deleteExpiredEphemeralRegistrationTokensDb} from '#db/ephemeral-registration-tokens.js';\nimport {expireStuckJobExecutions} from '#db/job-executions.js';\nimport {deleteExpiredReservations} from '#db/reservations.js';\nimport {reapStaleRunnerInstances as reapStaleRunnerInstancesDb} from '#db/runner-instances.js';\nimport {deleteExpiredRunnerSessions as deleteExpiredRunnerSessionsDb} from '#db/runner-sessions.js';\nimport {providerRunnerReapedCount, reservationReleasedCount} from '#metrics/instance.js';\nimport {STUCK_JOB_THRESHOLD_SECONDS} from './maintenance-policy.js';\n\nexport interface DetectAndExpireStuckJobsParams {\n noFirstHeartbeatGraceSeconds?: number;\n thresholdSeconds?: number;\n}\n\nexport async function detectAndExpireStuckJobs(\n params: DetectAndExpireStuckJobsParams = {},\n): Promise<{expired: number}> {\n const reaped = await expireStuckJobExecutions({\n noFirstHeartbeatGraceSeconds:\n params.noFirstHeartbeatGraceSeconds ?? config.RUNNER_NO_FIRST_HEARTBEAT_GRACE_SECONDS,\n thresholdSeconds: params.thresholdSeconds ?? STUCK_JOB_THRESHOLD_SECONDS,\n });\n return {expired: reaped.length};\n}\n\nexport async function deleteExpiredRunnerReservations(params?: {\n limit?: number;\n}): Promise<{deleted: number}> {\n const deleted = await deleteExpiredReservations(params);\n return {deleted};\n}\n\nexport async function reapStaleRunnerInstances(params?: {\n thresholdSeconds?: number;\n limit?: number;\n}): Promise<{reaped: number; reservationsReleased: number}> {\n const result = await reapStaleRunnerInstancesDb({\n thresholdSeconds:\n params?.thresholdSeconds ?? config.RUNNER_STALE_PROVISIONED_RUNNER_THRESHOLD_SECONDS,\n limit: params?.limit ?? config.RUNNER_STALE_PROVISIONED_RUNNER_REAPER_LIMIT,\n });\n\n if (result.reaped > 0) providerRunnerReapedCount.add(result.reaped);\n if (result.reservationsReleased > 0) {\n reservationReleasedCount.add(result.reservationsReleased);\n }\n\n return result;\n}\n\nexport async function deleteExpiredRunnerSessions(params?: {\n manualRetentionDays?: number;\n ephemeralRetentionDays?: number;\n limit?: number;\n}): Promise<{deleted: number}> {\n const deleted = await deleteExpiredRunnerSessionsDb({\n manualRetentionDays: params?.manualRetentionDays ?? config.RUNNER_SESSION_MANUAL_RETENTION_DAYS,\n ephemeralRetentionDays:\n params?.ephemeralRetentionDays ?? config.RUNNER_SESSION_EPHEMERAL_RETENTION_DAYS,\n limit: params?.limit ?? config.RUNNER_SESSION_GC_BATCH_SIZE,\n });\n return {deleted};\n}\n\nexport async function deleteExpiredEphemeralRegistrationTokens(params?: {\n retentionDays?: number;\n limit?: number;\n}): Promise<{deleted: number}> {\n const deleted = await deleteExpiredEphemeralRegistrationTokensDb({\n retentionDays: params?.retentionDays ?? config.RUNNER_EPHEMERAL_TOKEN_RETENTION_DAYS,\n limit: params?.limit ?? config.RUNNER_EPHEMERAL_TOKEN_GC_BATCH_SIZE,\n });\n return {deleted};\n}\n"],"names":["config","deleteExpiredEphemeralRegistrationTokens","deleteExpiredEphemeralRegistrationTokensDb","expireStuckJobExecutions","deleteExpiredReservations","reapStaleRunnerInstances","reapStaleRunnerInstancesDb","deleteExpiredRunnerSessions","deleteExpiredRunnerSessionsDb","providerRunnerReapedCount","reservationReleasedCount","STUCK_JOB_THRESHOLD_SECONDS","detectAndExpireStuckJobs","params","reaped","noFirstHeartbeatGraceSeconds","RUNNER_NO_FIRST_HEARTBEAT_GRACE_SECONDS","thresholdSeconds","expired","length","deleteExpiredRunnerReservations","deleted","result","RUNNER_STALE_PROVISIONED_RUNNER_THRESHOLD_SECONDS","limit","RUNNER_STALE_PROVISIONED_RUNNER_REAPER_LIMIT","add","reservationsReleased","manualRetentionDays","RUNNER_SESSION_MANUAL_RETENTION_DAYS","ephemeralRetentionDays","RUNNER_SESSION_EPHEMERAL_RETENTION_DAYS","RUNNER_SESSION_GC_BATCH_SIZE","retentionDays","RUNNER_EPHEMERAL_TOKEN_RETENTION_DAYS","RUNNER_EPHEMERAL_TOKEN_GC_BATCH_SIZE"],"mappings":"AAAA,SAAQA,MAAM,QAAO,aAAa;AAClC,SAAQC,4CAA4CC,0CAA0C,QAAO,uCAAuC;AAC5I,SAAQC,wBAAwB,QAAO,wBAAwB;AAC/D,SAAQC,yBAAyB,QAAO,sBAAsB;AAC9D,SAAQC,4BAA4BC,0BAA0B,QAAO,0BAA0B;AAC/F,SAAQC,+BAA+BC,6BAA6B,QAAO,yBAAyB;AACpG,SAAQC,yBAAyB,EAAEC,wBAAwB,QAAO,uBAAuB;AACzF,SAAQC,2BAA2B,QAAO,0BAA0B;AAOpE,OAAO,eAAeC,yBACpBC,SAAyC,CAAC,CAAC;IAE3C,MAAMC,SAAS,MAAMX,yBAAyB;QAC5CY,8BACEF,OAAOE,4BAA4B,IAAIf,OAAOgB,uCAAuC;QACvFC,kBAAkBJ,OAAOI,gBAAgB,IAAIN;IAC/C;IACA,OAAO;QAACO,SAASJ,OAAOK,MAAM;IAAA;AAChC;AAEA,OAAO,eAAeC,gCAAgCP,MAErD;IACC,MAAMQ,UAAU,MAAMjB,0BAA0BS;IAChD,OAAO;QAACQ;IAAO;AACjB;AAEA,OAAO,eAAehB,yBAAyBQ,MAG9C;IACC,MAAMS,SAAS,MAAMhB,2BAA2B;QAC9CW,kBACEJ,QAAQI,oBAAoBjB,OAAOuB,iDAAiD;QACtFC,OAAOX,QAAQW,SAASxB,OAAOyB,4CAA4C;IAC7E;IAEA,IAAIH,OAAOR,MAAM,GAAG,GAAGL,0BAA0BiB,GAAG,CAACJ,OAAOR,MAAM;IAClE,IAAIQ,OAAOK,oBAAoB,GAAG,GAAG;QACnCjB,yBAAyBgB,GAAG,CAACJ,OAAOK,oBAAoB;IAC1D;IAEA,OAAOL;AACT;AAEA,OAAO,eAAef,4BAA4BM,MAIjD;IACC,MAAMQ,UAAU,MAAMb,8BAA8B;QAClDoB,qBAAqBf,QAAQe,uBAAuB5B,OAAO6B,oCAAoC;QAC/FC,wBACEjB,QAAQiB,0BAA0B9B,OAAO+B,uCAAuC;QAClFP,OAAOX,QAAQW,SAASxB,OAAOgC,4BAA4B;IAC7D;IACA,OAAO;QAACX;IAAO;AACjB;AAEA,OAAO,eAAepB,yCAAyCY,MAG9D;IACC,MAAMQ,UAAU,MAAMnB,2CAA2C;QAC/D+B,eAAepB,QAAQoB,iBAAiBjC,OAAOkC,qCAAqC;QACpFV,OAAOX,QAAQW,SAASxB,OAAOmC,oCAAoC;IACrE;IACA,OAAO;QAACd;IAAO;AACjB"}
@@ -0,0 +1,5 @@
1
+ export declare function hasActiveWorkspaceProvisionerCapability(params: {
2
+ workspaceId: string;
3
+ requiredLabels: string[];
4
+ }): Promise<boolean>;
5
+ //# sourceMappingURL=provisioner-capability-snapshots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provisioner-capability-snapshots.d.ts","sourceRoot":"","sources":["../../src/core/provisioner-capability-snapshots.ts"],"names":[],"mappings":"AAGA,wBAAgB,uCAAuC,CAAC,MAAM,EAAE;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B,GAAG,OAAO,CAAC,OAAO,CAAC,CAKnB"}
@@ -0,0 +1,10 @@
1
+ import { config } from '#config.js';
2
+ import { hasActiveWorkspaceProvisionerCapability as hasActiveWorkspaceProvisionerCapabilityDb } from '#db/provisioner-capability-snapshots.js';
3
+ export function hasActiveWorkspaceProvisionerCapability(params) {
4
+ return hasActiveWorkspaceProvisionerCapabilityDb({
5
+ ...params,
6
+ windowSeconds: config.PROVISIONER_ACTIVE_WINDOW_SECONDS
7
+ });
8
+ }
9
+
10
+ //# sourceMappingURL=provisioner-capability-snapshots.js.map