@shipfox/api-runners 4.0.0 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (414) hide show
  1. package/.turbo/turbo-build.log +6 -6
  2. package/CHANGELOG.md +83 -0
  3. package/dist/config.d.ts +5 -1
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +53 -6
  6. package/dist/config.js.map +1 -1
  7. package/dist/core/capacity-assignments.d.ts +7 -0
  8. package/dist/core/capacity-assignments.d.ts.map +1 -0
  9. package/dist/core/capacity-assignments.js +6 -0
  10. package/dist/core/capacity-assignments.js.map +1 -0
  11. package/dist/core/demand.d.ts +6 -6
  12. package/dist/core/demand.d.ts.map +1 -1
  13. package/dist/core/demand.js +10 -10
  14. package/dist/core/demand.js.map +1 -1
  15. package/dist/core/entities/capacity-assignment.d.ts +9 -0
  16. package/dist/core/entities/capacity-assignment.d.ts.map +1 -0
  17. package/dist/core/entities/capacity-assignment.js +3 -0
  18. package/dist/core/entities/capacity-assignment.js.map +1 -0
  19. package/dist/core/entities/ephemeral-registration-token.d.ts +1 -1
  20. package/dist/core/entities/ephemeral-registration-token.d.ts.map +1 -1
  21. package/dist/core/entities/ephemeral-registration-token.js.map +1 -1
  22. package/dist/core/entities/provisioner-capability-snapshot.d.ts +13 -0
  23. package/dist/core/entities/provisioner-capability-snapshot.d.ts.map +1 -0
  24. package/dist/core/entities/provisioner-capability-snapshot.js +3 -0
  25. package/dist/core/entities/provisioner-capability-snapshot.js.map +1 -0
  26. package/dist/core/entities/provisioner-token.d.ts +10 -2
  27. package/dist/core/entities/provisioner-token.d.ts.map +1 -1
  28. package/dist/core/entities/provisioner-token.js.map +1 -1
  29. package/dist/core/entities/{provisioned-runner.d.ts → runner-instance.d.ts} +6 -6
  30. package/dist/core/entities/runner-instance.d.ts.map +1 -0
  31. package/dist/core/entities/runner-instance.js +3 -0
  32. package/dist/core/entities/runner-instance.js.map +1 -0
  33. package/dist/core/entities/runner-session.d.ts +4 -2
  34. package/dist/core/entities/runner-session.d.ts.map +1 -1
  35. package/dist/core/entities/runner-session.js.map +1 -1
  36. package/dist/core/ephemeral-registration-tokens.d.ts +5 -5
  37. package/dist/core/ephemeral-registration-tokens.d.ts.map +1 -1
  38. package/dist/core/ephemeral-registration-tokens.js +12 -12
  39. package/dist/core/ephemeral-registration-tokens.js.map +1 -1
  40. package/dist/core/errors.d.ts +16 -4
  41. package/dist/core/errors.d.ts.map +1 -1
  42. package/dist/core/errors.js +22 -4
  43. package/dist/core/errors.js.map +1 -1
  44. package/dist/core/index.d.ts +10 -4
  45. package/dist/core/index.d.ts.map +1 -1
  46. package/dist/core/index.js +6 -2
  47. package/dist/core/index.js.map +1 -1
  48. package/dist/core/job-executions.d.ts +2 -0
  49. package/dist/core/job-executions.d.ts.map +1 -1
  50. package/dist/core/job-executions.js +1 -2
  51. package/dist/core/job-executions.js.map +1 -1
  52. package/dist/core/maintenance.d.ts +1 -1
  53. package/dist/core/maintenance.d.ts.map +1 -1
  54. package/dist/core/maintenance.js +5 -5
  55. package/dist/core/maintenance.js.map +1 -1
  56. package/dist/core/provisioner-capability-snapshots.d.ts +5 -0
  57. package/dist/core/provisioner-capability-snapshots.d.ts.map +1 -0
  58. package/dist/core/provisioner-capability-snapshots.js +10 -0
  59. package/dist/core/provisioner-capability-snapshots.js.map +1 -0
  60. package/dist/core/provisioner-tokens.d.ts +10 -0
  61. package/dist/core/provisioner-tokens.d.ts.map +1 -1
  62. package/dist/core/provisioner-tokens.js +23 -1
  63. package/dist/core/provisioner-tokens.js.map +1 -1
  64. package/dist/core/rate-limit.d.ts.map +1 -1
  65. package/dist/core/rate-limit.js +2 -7
  66. package/dist/core/rate-limit.js.map +1 -1
  67. package/dist/core/runner-activation.d.ts +13 -0
  68. package/dist/core/runner-activation.d.ts.map +1 -0
  69. package/dist/core/runner-activation.js +36 -0
  70. package/dist/core/runner-activation.js.map +1 -0
  71. package/dist/core/runner-control-sessions.d.ts +46 -0
  72. package/dist/core/runner-control-sessions.d.ts.map +1 -0
  73. package/dist/core/runner-control-sessions.js +121 -0
  74. package/dist/core/runner-control-sessions.js.map +1 -0
  75. package/dist/core/runner-instances.d.ts +79 -0
  76. package/dist/core/runner-instances.d.ts.map +1 -0
  77. package/dist/core/runner-instances.js +168 -0
  78. package/dist/core/runner-instances.js.map +1 -0
  79. package/dist/core/runner-sessions.d.ts +8 -2
  80. package/dist/core/runner-sessions.d.ts.map +1 -1
  81. package/dist/core/runner-sessions.js +8 -5
  82. package/dist/core/runner-sessions.js.map +1 -1
  83. package/dist/db/capacity-assignments.d.ts +7 -0
  84. package/dist/db/capacity-assignments.d.ts.map +1 -0
  85. package/dist/db/capacity-assignments.js +72 -0
  86. package/dist/db/capacity-assignments.js.map +1 -0
  87. package/dist/db/db.d.ts +2837 -1009
  88. package/dist/db/db.d.ts.map +1 -1
  89. package/dist/db/db.js +11 -2
  90. package/dist/db/db.js.map +1 -1
  91. package/dist/db/ephemeral-registration-tokens.d.ts +2 -2
  92. package/dist/db/ephemeral-registration-tokens.d.ts.map +1 -1
  93. package/dist/db/ephemeral-registration-tokens.js +21 -21
  94. package/dist/db/ephemeral-registration-tokens.js.map +1 -1
  95. package/dist/db/index.d.ts +7 -4
  96. package/dist/db/index.d.ts.map +1 -1
  97. package/dist/db/index.js +5 -2
  98. package/dist/db/index.js.map +1 -1
  99. package/dist/db/job-executions.d.ts +6 -6
  100. package/dist/db/job-executions.d.ts.map +1 -1
  101. package/dist/db/job-executions.js +20 -19
  102. package/dist/db/job-executions.js.map +1 -1
  103. package/dist/db/provisioner-capability-snapshots.d.ts +21 -0
  104. package/dist/db/provisioner-capability-snapshots.d.ts.map +1 -0
  105. package/dist/db/provisioner-capability-snapshots.js +57 -0
  106. package/dist/db/provisioner-capability-snapshots.js.map +1 -0
  107. package/dist/db/provisioner-tokens.d.ts +7 -2
  108. package/dist/db/provisioner-tokens.d.ts.map +1 -1
  109. package/dist/db/provisioner-tokens.js +59 -10
  110. package/dist/db/provisioner-tokens.js.map +1 -1
  111. package/dist/db/reservations.d.ts +18 -0
  112. package/dist/db/reservations.d.ts.map +1 -1
  113. package/dist/db/reservations.js +88 -1
  114. package/dist/db/reservations.js.map +1 -1
  115. package/dist/db/runner-instances.d.ts +91 -0
  116. package/dist/db/runner-instances.d.ts.map +1 -0
  117. package/dist/db/runner-instances.js +511 -0
  118. package/dist/db/runner-instances.js.map +1 -0
  119. package/dist/db/runner-sessions.d.ts +5 -0
  120. package/dist/db/runner-sessions.d.ts.map +1 -1
  121. package/dist/db/runner-sessions.js +48 -2
  122. package/dist/db/runner-sessions.js.map +1 -1
  123. package/dist/db/schema/capacity-assignments.d.ts +113 -0
  124. package/dist/db/schema/capacity-assignments.d.ts.map +1 -0
  125. package/dist/db/schema/capacity-assignments.js +29 -0
  126. package/dist/db/schema/capacity-assignments.js.map +1 -0
  127. package/dist/db/schema/ephemeral-registration-tokens.d.ts +2 -2
  128. package/dist/db/schema/ephemeral-registration-tokens.js +3 -3
  129. package/dist/db/schema/ephemeral-registration-tokens.js.map +1 -1
  130. package/dist/db/schema/provisioner-capability-snapshots.d.ts +207 -0
  131. package/dist/db/schema/provisioner-capability-snapshots.d.ts.map +1 -0
  132. package/dist/db/schema/provisioner-capability-snapshots.js +38 -0
  133. package/dist/db/schema/provisioner-capability-snapshots.js.map +1 -0
  134. package/dist/db/schema/provisioner-tokens.d.ts +19 -1
  135. package/dist/db/schema/provisioner-tokens.d.ts.map +1 -1
  136. package/dist/db/schema/provisioner-tokens.js +29 -3
  137. package/dist/db/schema/provisioner-tokens.js.map +1 -1
  138. package/dist/db/schema/runner-activation-tokens.d.ts +161 -0
  139. package/dist/db/schema/runner-activation-tokens.d.ts.map +1 -0
  140. package/dist/db/schema/runner-activation-tokens.js +27 -0
  141. package/dist/db/schema/runner-activation-tokens.js.map +1 -0
  142. package/dist/db/schema/runner-control-sessions.d.ts +338 -0
  143. package/dist/db/schema/runner-control-sessions.d.ts.map +1 -0
  144. package/dist/db/schema/runner-control-sessions.js +52 -0
  145. package/dist/db/schema/runner-control-sessions.js.map +1 -0
  146. package/dist/db/schema/{provisioned-runners.d.ts → runner-instances.d.ts} +88 -34
  147. package/dist/db/schema/runner-instances.d.ts.map +1 -0
  148. package/dist/db/schema/{provisioned-runners.js → runner-instances.js} +19 -14
  149. package/dist/db/schema/runner-instances.js.map +1 -0
  150. package/dist/db/schema/runner-sessions.d.ts +39 -5
  151. package/dist/db/schema/runner-sessions.d.ts.map +1 -1
  152. package/dist/db/schema/runner-sessions.js +13 -6
  153. package/dist/db/schema/runner-sessions.js.map +1 -1
  154. package/dist/db/schema/running-job-executions.d.ts +2 -2
  155. package/dist/db/schema/running-job-executions.js +4 -4
  156. package/dist/db/schema/running-job-executions.js.map +1 -1
  157. package/dist/index.d.ts +7 -2
  158. package/dist/index.d.ts.map +1 -1
  159. package/dist/index.js +45 -38
  160. package/dist/index.js.map +1 -1
  161. package/dist/installation-provisioning.d.ts +14 -0
  162. package/dist/installation-provisioning.d.ts.map +1 -0
  163. package/dist/installation-provisioning.js +7 -0
  164. package/dist/installation-provisioning.js.map +1 -0
  165. package/dist/metrics/index.d.ts +1 -1
  166. package/dist/metrics/index.d.ts.map +1 -1
  167. package/dist/metrics/index.js +1 -1
  168. package/dist/metrics/index.js.map +1 -1
  169. package/dist/metrics/instance.d.ts +11 -7
  170. package/dist/metrics/instance.d.ts.map +1 -1
  171. package/dist/metrics/instance.js +13 -7
  172. package/dist/metrics/instance.js.map +1 -1
  173. package/dist/presentation/auth/index.d.ts +1 -0
  174. package/dist/presentation/auth/index.d.ts.map +1 -1
  175. package/dist/presentation/auth/index.js +1 -0
  176. package/dist/presentation/auth/index.js.map +1 -1
  177. package/dist/presentation/auth/provisioner-token-auth.d.ts.map +1 -1
  178. package/dist/presentation/auth/provisioner-token-auth.js +5 -1
  179. package/dist/presentation/auth/provisioner-token-auth.js.map +1 -1
  180. package/dist/presentation/auth/runner-control-session-auth.d.ts +4 -0
  181. package/dist/presentation/auth/runner-control-session-auth.d.ts.map +1 -0
  182. package/dist/presentation/auth/runner-control-session-auth.js +29 -0
  183. package/dist/presentation/auth/runner-control-session-auth.js.map +1 -0
  184. package/dist/presentation/auth/runner-registration-token-auth.d.ts +5 -1
  185. package/dist/presentation/auth/runner-registration-token-auth.d.ts.map +1 -1
  186. package/dist/presentation/auth/runner-registration-token-auth.js +21 -1
  187. package/dist/presentation/auth/runner-registration-token-auth.js.map +1 -1
  188. package/dist/presentation/dto/index.d.ts +2 -2
  189. package/dist/presentation/dto/index.d.ts.map +1 -1
  190. package/dist/presentation/dto/index.js +2 -2
  191. package/dist/presentation/dto/index.js.map +1 -1
  192. package/dist/presentation/dto/mint-registration-tokens.d.ts +5 -3
  193. package/dist/presentation/dto/mint-registration-tokens.d.ts.map +1 -1
  194. package/dist/presentation/dto/mint-registration-tokens.js +4 -4
  195. package/dist/presentation/dto/mint-registration-tokens.js.map +1 -1
  196. package/dist/presentation/dto/poll-demand.d.ts.map +1 -1
  197. package/dist/presentation/dto/poll-demand.js +7 -1
  198. package/dist/presentation/dto/poll-demand.js.map +1 -1
  199. package/dist/presentation/dto/provisioner-token.d.ts +1 -0
  200. package/dist/presentation/dto/provisioner-token.d.ts.map +1 -1
  201. package/dist/presentation/dto/provisioner-token.js +5 -1
  202. package/dist/presentation/dto/provisioner-token.js.map +1 -1
  203. package/dist/presentation/dto/{provisioned-runners.d.ts → runner-instances.d.ts} +9 -9
  204. package/dist/presentation/dto/runner-instances.d.ts.map +1 -0
  205. package/dist/presentation/dto/{provisioned-runners.js → runner-instances.js} +6 -6
  206. package/dist/presentation/dto/runner-instances.js.map +1 -0
  207. package/dist/presentation/index.d.ts +2 -2
  208. package/dist/presentation/index.d.ts.map +1 -1
  209. package/dist/presentation/index.js +2 -2
  210. package/dist/presentation/index.js.map +1 -1
  211. package/dist/presentation/inter-module.d.ts +5 -0
  212. package/dist/presentation/inter-module.d.ts.map +1 -0
  213. package/dist/presentation/inter-module.js +43 -0
  214. package/dist/presentation/inter-module.js.map +1 -0
  215. package/dist/presentation/routes/assign-capacity.d.ts +2 -0
  216. package/dist/presentation/routes/assign-capacity.d.ts.map +1 -0
  217. package/dist/presentation/routes/assign-capacity.js +44 -0
  218. package/dist/presentation/routes/assign-capacity.js.map +1 -0
  219. package/dist/presentation/routes/get-provisioner-me.d.ts.map +1 -1
  220. package/dist/presentation/routes/get-provisioner-me.js +5 -1
  221. package/dist/presentation/routes/get-provisioner-me.js.map +1 -1
  222. package/dist/presentation/routes/heartbeat.d.ts +2 -1
  223. package/dist/presentation/routes/heartbeat.d.ts.map +1 -1
  224. package/dist/presentation/routes/heartbeat.js +60 -50
  225. package/dist/presentation/routes/heartbeat.js.map +1 -1
  226. package/dist/presentation/routes/index.d.ts +3 -1
  227. package/dist/presentation/routes/index.d.ts.map +1 -1
  228. package/dist/presentation/routes/index.js +83 -50
  229. package/dist/presentation/routes/index.js.map +1 -1
  230. package/dist/presentation/routes/mint-registration-tokens.d.ts.map +1 -1
  231. package/dist/presentation/routes/mint-registration-tokens.js +5 -5
  232. package/dist/presentation/routes/mint-registration-tokens.js.map +1 -1
  233. package/dist/presentation/routes/planned-capacity.d.ts +3 -0
  234. package/dist/presentation/routes/planned-capacity.d.ts.map +1 -0
  235. package/dist/presentation/routes/planned-capacity.js +54 -0
  236. package/dist/presentation/routes/planned-capacity.js.map +1 -0
  237. package/dist/presentation/routes/poll-demand.d.ts +2 -0
  238. package/dist/presentation/routes/poll-demand.d.ts.map +1 -1
  239. package/dist/presentation/routes/poll-demand.js +86 -45
  240. package/dist/presentation/routes/poll-demand.js.map +1 -1
  241. package/dist/presentation/routes/reconcile-runner-instances.d.ts +2 -0
  242. package/dist/presentation/routes/reconcile-runner-instances.d.ts.map +1 -0
  243. package/dist/presentation/routes/reconcile-runner-instances.js +27 -0
  244. package/dist/presentation/routes/reconcile-runner-instances.js.map +1 -0
  245. package/dist/presentation/routes/register.d.ts +2 -1
  246. package/dist/presentation/routes/register.d.ts.map +1 -1
  247. package/dist/presentation/routes/register.js +55 -52
  248. package/dist/presentation/routes/register.js.map +1 -1
  249. package/dist/presentation/routes/report-runner-instances.d.ts +2 -0
  250. package/dist/presentation/routes/report-runner-instances.d.ts.map +1 -0
  251. package/dist/presentation/routes/report-runner-instances.js +37 -0
  252. package/dist/presentation/routes/report-runner-instances.js.map +1 -0
  253. package/dist/presentation/routes/request-job.d.ts +2 -1
  254. package/dist/presentation/routes/request-job.d.ts.map +1 -1
  255. package/dist/presentation/routes/request-job.js +39 -36
  256. package/dist/presentation/routes/request-job.js.map +1 -1
  257. package/dist/presentation/routes/runner-enrollment.d.ts +7 -0
  258. package/dist/presentation/routes/runner-enrollment.d.ts.map +1 -0
  259. package/dist/presentation/routes/runner-enrollment.js +185 -0
  260. package/dist/presentation/routes/runner-enrollment.js.map +1 -0
  261. package/dist/temporal/activities/index.d.ts +2 -2
  262. package/dist/temporal/activities/index.d.ts.map +1 -1
  263. package/dist/temporal/activities/index.js +2 -2
  264. package/dist/temporal/activities/index.js.map +1 -1
  265. package/dist/temporal/activities/maintenance-activities.d.ts +1 -1
  266. package/dist/temporal/activities/maintenance-activities.d.ts.map +1 -1
  267. package/dist/temporal/activities/maintenance-activities.js +3 -3
  268. package/dist/temporal/activities/maintenance-activities.js.map +1 -1
  269. package/dist/temporal/workflows/index.bundle.js +3 -3
  270. package/dist/temporal/workflows/stuck-job-detector.js +2 -2
  271. package/dist/temporal/workflows/stuck-job-detector.js.map +1 -1
  272. package/dist/tsconfig.test.tsbuildinfo +1 -1
  273. package/drizzle/0000_initial.sql +102 -24
  274. package/drizzle/meta/0000_snapshot.json +483 -63
  275. package/package.json +31 -36
  276. package/src/config.test.ts +0 -26
  277. package/src/config.ts +47 -6
  278. package/src/core/capacity-assignments.ts +10 -0
  279. package/src/core/demand.test.ts +29 -29
  280. package/src/core/demand.ts +22 -22
  281. package/src/core/entities/capacity-assignment.ts +8 -0
  282. package/src/core/entities/ephemeral-registration-token.ts +1 -1
  283. package/src/core/entities/provisioner-capability-snapshot.ts +12 -0
  284. package/src/core/entities/provisioner-token.ts +8 -2
  285. package/src/core/entities/{provisioned-runner.ts → runner-instance.ts} +5 -5
  286. package/src/core/entities/runner-session.ts +4 -2
  287. package/src/core/ephemeral-registration-tokens.test.ts +11 -11
  288. package/src/core/ephemeral-registration-tokens.ts +18 -20
  289. package/src/core/errors.ts +23 -4
  290. package/src/core/index.ts +39 -17
  291. package/src/core/job-executions.ts +3 -2
  292. package/src/core/maintenance.test.ts +13 -17
  293. package/src/core/maintenance.ts +5 -5
  294. package/src/core/provisioner-capability-snapshots.test.ts +35 -0
  295. package/src/core/provisioner-capability-snapshots.ts +12 -0
  296. package/src/core/provisioner-tokens.test.ts +20 -0
  297. package/src/core/provisioner-tokens.ts +33 -0
  298. package/src/core/rate-limit.test.ts +11 -27
  299. package/src/core/rate-limit.ts +3 -11
  300. package/src/core/runner-activation.ts +72 -0
  301. package/src/core/runner-control-sessions.ts +190 -0
  302. package/src/core/{provisioned-runners.test.ts → runner-instances.test.ts} +24 -24
  303. package/src/core/runner-instances.ts +310 -0
  304. package/src/core/runner-sessions.test.ts +112 -22
  305. package/src/core/runner-sessions.ts +25 -14
  306. package/src/db/capacity-assignments.test.ts +159 -0
  307. package/src/db/capacity-assignments.ts +116 -0
  308. package/src/db/db.ts +11 -2
  309. package/src/db/ephemeral-registration-tokens.test.ts +9 -9
  310. package/src/db/ephemeral-registration-tokens.ts +26 -26
  311. package/src/db/index.ts +31 -21
  312. package/src/db/job-executions.test.ts +13 -11
  313. package/src/db/job-executions.ts +33 -27
  314. package/src/db/provisioner-capability-snapshots.test.ts +175 -0
  315. package/src/db/provisioner-capability-snapshots.ts +130 -0
  316. package/src/db/provisioner-tokens.test.ts +139 -2
  317. package/src/db/provisioner-tokens.ts +123 -15
  318. package/src/db/reservations.test.ts +49 -0
  319. package/src/db/reservations.ts +146 -1
  320. package/src/db/{provisioned-runners.test.ts → runner-instances.test.ts} +429 -353
  321. package/src/db/runner-instances.ts +942 -0
  322. package/src/db/runner-sessions.test.ts +19 -6
  323. package/src/db/runner-sessions.ts +78 -2
  324. package/src/db/schema/capacity-assignments.ts +34 -0
  325. package/src/db/schema/ephemeral-registration-tokens.ts +4 -4
  326. package/src/db/schema/provisioner-capability-snapshots.ts +46 -0
  327. package/src/db/schema/provisioner-tokens.ts +33 -2
  328. package/src/db/schema/runner-activation-tokens.ts +22 -0
  329. package/src/db/schema/runner-control-sessions.ts +46 -0
  330. package/src/db/schema/{provisioned-runners.ts → runner-instances.ts} +26 -27
  331. package/src/db/schema/runner-sessions.ts +11 -7
  332. package/src/db/schema/running-job-executions.ts +5 -5
  333. package/src/index.test.ts +26 -0
  334. package/src/index.ts +39 -19
  335. package/src/installation-provisioning.ts +14 -0
  336. package/src/metrics/index.ts +5 -5
  337. package/src/metrics/instance.ts +25 -14
  338. package/src/presentation/auth/index.ts +4 -0
  339. package/src/presentation/auth/provisioner-token-auth.ts +8 -4
  340. package/src/presentation/auth/runner-control-session-auth.ts +31 -0
  341. package/src/presentation/auth/runner-registration-token-auth.ts +39 -3
  342. package/src/presentation/dto/index.ts +5 -5
  343. package/src/presentation/dto/mint-registration-tokens.ts +8 -15
  344. package/src/presentation/dto/poll-demand.ts +3 -1
  345. package/src/presentation/dto/provisioner-token.ts +5 -0
  346. package/src/presentation/dto/{provisioned-runners.ts → runner-instances.ts} +13 -15
  347. package/src/presentation/index.ts +2 -1
  348. package/src/presentation/inter-module.test.ts +15 -0
  349. package/src/presentation/inter-module.ts +53 -0
  350. package/src/presentation/routes/assign-capacity.ts +48 -0
  351. package/src/presentation/routes/get-provisioner-me.ts +3 -4
  352. package/src/presentation/routes/heartbeat.test.ts +4 -3
  353. package/src/presentation/routes/heartbeat.ts +67 -64
  354. package/src/presentation/routes/index.ts +93 -43
  355. package/src/presentation/routes/list-active-runners.test.ts +23 -23
  356. package/src/presentation/routes/manual-registration-tokens.test.ts +4 -3
  357. package/src/presentation/routes/mint-registration-tokens.test.ts +12 -12
  358. package/src/presentation/routes/mint-registration-tokens.ts +5 -7
  359. package/src/presentation/routes/planned-capacity.ts +49 -0
  360. package/src/presentation/routes/poll-demand-release.test.ts +4 -4
  361. package/src/presentation/routes/poll-demand.test.ts +161 -22
  362. package/src/presentation/routes/poll-demand.ts +105 -45
  363. package/src/presentation/routes/provisioner-me.test.ts +37 -3
  364. package/src/presentation/routes/{reconcile-provisioned-runners.test.ts → reconcile-runner-instances.test.ts} +66 -61
  365. package/src/presentation/routes/reconcile-runner-instances.ts +30 -0
  366. package/src/presentation/routes/register.test.ts +9 -5
  367. package/src/presentation/routes/register.ts +61 -57
  368. package/src/presentation/routes/{report-provisioned-runners.test.ts → report-runner-instances.test.ts} +28 -28
  369. package/src/presentation/routes/{report-provisioned-runners.ts → report-runner-instances.ts} +14 -14
  370. package/src/presentation/routes/request-job.test.ts +5 -3
  371. package/src/presentation/routes/request-job.ts +41 -37
  372. package/src/presentation/routes/runner-enrollment.test.ts +259 -0
  373. package/src/presentation/routes/runner-enrollment.ts +174 -0
  374. package/src/temporal/activities/index.ts +2 -2
  375. package/src/temporal/activities/maintenance-activities.test.ts +7 -7
  376. package/src/temporal/activities/maintenance-activities.ts +3 -3
  377. package/src/temporal/workflows/stuck-job-detector.test.ts +3 -3
  378. package/src/temporal/workflows/stuck-job-detector.ts +2 -2
  379. package/test/env.ts +1 -3
  380. package/test/factories/ephemeral-registration-token.ts +2 -2
  381. package/test/factories/provisioner-token.ts +3 -1
  382. package/test/factories/runner-instance.ts +57 -0
  383. package/test/factories/runner-session.ts +3 -1
  384. package/test/fixtures/auth-inter-module.ts +30 -0
  385. package/test/globalSetup.ts +5 -1
  386. package/test/index.ts +2 -1
  387. package/tsconfig.build.tsbuildinfo +1 -1
  388. package/dist/core/entities/provisioned-runner.d.ts.map +0 -1
  389. package/dist/core/entities/provisioned-runner.js +0 -3
  390. package/dist/core/entities/provisioned-runner.js.map +0 -1
  391. package/dist/core/provisioned-runners.d.ts +0 -67
  392. package/dist/core/provisioned-runners.d.ts.map +0 -1
  393. package/dist/core/provisioned-runners.js +0 -162
  394. package/dist/core/provisioned-runners.js.map +0 -1
  395. package/dist/db/provisioned-runners.d.ts +0 -79
  396. package/dist/db/provisioned-runners.d.ts.map +0 -1
  397. package/dist/db/provisioned-runners.js +0 -466
  398. package/dist/db/provisioned-runners.js.map +0 -1
  399. package/dist/db/schema/provisioned-runners.d.ts.map +0 -1
  400. package/dist/db/schema/provisioned-runners.js.map +0 -1
  401. package/dist/presentation/dto/provisioned-runners.d.ts.map +0 -1
  402. package/dist/presentation/dto/provisioned-runners.js.map +0 -1
  403. package/dist/presentation/routes/reconcile-provisioned-runners.d.ts +0 -2
  404. package/dist/presentation/routes/reconcile-provisioned-runners.d.ts.map +0 -1
  405. package/dist/presentation/routes/reconcile-provisioned-runners.js +0 -27
  406. package/dist/presentation/routes/reconcile-provisioned-runners.js.map +0 -1
  407. package/dist/presentation/routes/report-provisioned-runners.d.ts +0 -2
  408. package/dist/presentation/routes/report-provisioned-runners.d.ts.map +0 -1
  409. package/dist/presentation/routes/report-provisioned-runners.js +0 -37
  410. package/dist/presentation/routes/report-provisioned-runners.js.map +0 -1
  411. package/src/core/provisioned-runners.ts +0 -301
  412. package/src/db/provisioned-runners.ts +0 -886
  413. package/src/presentation/routes/reconcile-provisioned-runners.ts +0 -30
  414. package/test/factories/provisioned-runner.ts +0 -78
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/presentation/auth/runner-registration-token-auth.ts"],"sourcesContent":["import {AUTH_RUNNER_REGISTRATION_TOKEN} from '@shipfox/api-auth-context';\nimport {type AuthMethod, ClientError, extractBearerToken} from '@shipfox/node-fastify';\nimport {getTokenType, hashOpaqueToken} from '@shipfox/node-tokens';\nimport type {FastifyRequest} from 'fastify';\nimport {resolveEphemeralRegistrationTokenByHash} from '#db/ephemeral-registration-tokens.js';\nimport {resolveManualRegistrationTokenByHash} from '#db/manual-registration-tokens.js';\n\nconst RUNNER_CONTEXT_KEY = 'runner';\n\nexport type RunnerRegistrationContext =\n | {\n kind: 'manual';\n registrationTokenId: string;\n workspaceId: string;\n }\n | {\n kind: 'ephemeral';\n ephemeralTokenId: string;\n workspaceId: string;\n provisionerId: string;\n reservationId: string | null;\n provisionedRunnerId: string;\n };\n\nexport function getRunnerContext(request: FastifyRequest): RunnerRegistrationContext {\n const context = (request as unknown as Record<string, unknown>)[RUNNER_CONTEXT_KEY] as\n | RunnerRegistrationContext\n | undefined;\n if (!context) {\n throw new Error('Runner context is not available on this request');\n }\n return context;\n}\n\nexport function createRunnerRegistrationTokenAuthMethod(): AuthMethod {\n return {\n name: AUTH_RUNNER_REGISTRATION_TOKEN,\n authenticate: async (request) => {\n const rawToken = extractBearerToken(request.headers.authorization);\n if (!rawToken) {\n throw new ClientError('Missing or invalid Authorization header', 'unauthorized', {\n status: 401,\n });\n }\n\n const tokenType = getTokenType(rawToken);\n\n if (tokenType === 'ephemeralRegistrationToken') {\n const ephemeralToken = await resolveEphemeralRegistrationTokenByHash(\n hashOpaqueToken(rawToken),\n );\n if (!ephemeralToken) {\n throw new ClientError('Invalid runner registration token', 'unauthorized', {\n status: 401,\n });\n }\n if (ephemeralToken.expiresAt < new Date()) {\n throw new ClientError(\n 'Ephemeral registration token has expired',\n 'registration-token-expired',\n {status: 401},\n );\n }\n\n (request as unknown as Record<string, unknown>)[RUNNER_CONTEXT_KEY] = {\n kind: 'ephemeral',\n ephemeralTokenId: ephemeralToken.id,\n workspaceId: ephemeralToken.workspaceId,\n provisionerId: ephemeralToken.provisionerId,\n reservationId: ephemeralToken.reservationId,\n provisionedRunnerId: ephemeralToken.provisionedRunnerId,\n } satisfies RunnerRegistrationContext;\n return;\n }\n\n if (tokenType !== 'manualRegistrationToken') {\n throw new ClientError('Invalid runner registration token', 'unauthorized', {status: 401});\n }\n\n const token = await resolveManualRegistrationTokenByHash(hashOpaqueToken(rawToken));\n if (!token) {\n throw new ClientError('Invalid runner registration token', 'unauthorized', {status: 401});\n }\n\n if (token.expiresAt && token.expiresAt < new Date()) {\n throw new ClientError('Registration token has expired', 'registration-token-expired', {\n status: 401,\n });\n }\n if (token.revokedAt) {\n throw new ClientError(\n 'Manual registration token has been revoked',\n 'manual-registration-token-revoked',\n {status: 401},\n );\n }\n\n (request as unknown as Record<string, unknown>)[RUNNER_CONTEXT_KEY] = {\n kind: 'manual',\n registrationTokenId: token.id,\n workspaceId: token.workspaceId,\n } satisfies RunnerRegistrationContext;\n },\n };\n}\n"],"names":["AUTH_RUNNER_REGISTRATION_TOKEN","ClientError","extractBearerToken","getTokenType","hashOpaqueToken","resolveEphemeralRegistrationTokenByHash","resolveManualRegistrationTokenByHash","RUNNER_CONTEXT_KEY","getRunnerContext","request","context","Error","createRunnerRegistrationTokenAuthMethod","name","authenticate","rawToken","headers","authorization","status","tokenType","ephemeralToken","expiresAt","Date","kind","ephemeralTokenId","id","workspaceId","provisionerId","reservationId","provisionedRunnerId","token","revokedAt","registrationTokenId"],"mappings":"AAAA,SAAQA,8BAA8B,QAAO,4BAA4B;AACzE,SAAyBC,WAAW,EAAEC,kBAAkB,QAAO,wBAAwB;AACvF,SAAQC,YAAY,EAAEC,eAAe,QAAO,uBAAuB;AAEnE,SAAQC,uCAAuC,QAAO,uCAAuC;AAC7F,SAAQC,oCAAoC,QAAO,oCAAoC;AAEvF,MAAMC,qBAAqB;AAiB3B,OAAO,SAASC,iBAAiBC,OAAuB;IACtD,MAAMC,UAAU,AAACD,OAA8C,CAACF,mBAAmB;IAGnF,IAAI,CAACG,SAAS;QACZ,MAAM,IAAIC,MAAM;IAClB;IACA,OAAOD;AACT;AAEA,OAAO,SAASE;IACd,OAAO;QACLC,MAAMb;QACNc,cAAc,OAAOL;YACnB,MAAMM,WAAWb,mBAAmBO,QAAQO,OAAO,CAACC,aAAa;YACjE,IAAI,CAACF,UAAU;gBACb,MAAM,IAAId,YAAY,2CAA2C,gBAAgB;oBAC/EiB,QAAQ;gBACV;YACF;YAEA,MAAMC,YAAYhB,aAAaY;YAE/B,IAAII,cAAc,8BAA8B;gBAC9C,MAAMC,iBAAiB,MAAMf,wCAC3BD,gBAAgBW;gBAElB,IAAI,CAACK,gBAAgB;oBACnB,MAAM,IAAInB,YAAY,qCAAqC,gBAAgB;wBACzEiB,QAAQ;oBACV;gBACF;gBACA,IAAIE,eAAeC,SAAS,GAAG,IAAIC,QAAQ;oBACzC,MAAM,IAAIrB,YACR,4CACA,8BACA;wBAACiB,QAAQ;oBAAG;gBAEhB;gBAECT,OAA8C,CAACF,mBAAmB,GAAG;oBACpEgB,MAAM;oBACNC,kBAAkBJ,eAAeK,EAAE;oBACnCC,aAAaN,eAAeM,WAAW;oBACvCC,eAAeP,eAAeO,aAAa;oBAC3CC,eAAeR,eAAeQ,aAAa;oBAC3CC,qBAAqBT,eAAeS,mBAAmB;gBACzD;gBACA;YACF;YAEA,IAAIV,cAAc,2BAA2B;gBAC3C,MAAM,IAAIlB,YAAY,qCAAqC,gBAAgB;oBAACiB,QAAQ;gBAAG;YACzF;YAEA,MAAMY,QAAQ,MAAMxB,qCAAqCF,gBAAgBW;YACzE,IAAI,CAACe,OAAO;gBACV,MAAM,IAAI7B,YAAY,qCAAqC,gBAAgB;oBAACiB,QAAQ;gBAAG;YACzF;YAEA,IAAIY,MAAMT,SAAS,IAAIS,MAAMT,SAAS,GAAG,IAAIC,QAAQ;gBACnD,MAAM,IAAIrB,YAAY,kCAAkC,8BAA8B;oBACpFiB,QAAQ;gBACV;YACF;YACA,IAAIY,MAAMC,SAAS,EAAE;gBACnB,MAAM,IAAI9B,YACR,8CACA,qCACA;oBAACiB,QAAQ;gBAAG;YAEhB;YAECT,OAA8C,CAACF,mBAAmB,GAAG;gBACpEgB,MAAM;gBACNS,qBAAqBF,MAAML,EAAE;gBAC7BC,aAAaI,MAAMJ,WAAW;YAChC;QACF;IACF;AACF"}
1
+ {"version":3,"sources":["../../../src/presentation/auth/runner-registration-token-auth.ts"],"sourcesContent":["import {AUTH_RUNNER_REGISTRATION_TOKEN} from '@shipfox/api-auth-context';\nimport {type AuthMethod, ClientError, extractBearerToken} from '@shipfox/node-fastify';\nimport {getTokenType, hashOpaqueToken} from '@shipfox/node-tokens';\nimport {and, eq, gt, isNull, or, sql} from 'drizzle-orm';\nimport type {FastifyRequest} from 'fastify';\nimport {db} from '#db/db.js';\nimport {resolveEphemeralRegistrationTokenByHash} from '#db/ephemeral-registration-tokens.js';\nimport {resolveManualRegistrationTokenByHash} from '#db/manual-registration-tokens.js';\nimport {provisionerTokens} from '#db/schema/provisioner-tokens.js';\nimport {runnerActivationTokens} from '#db/schema/runner-activation-tokens.js';\nimport {providerRunners} from '#db/schema/runner-instances.js';\n\nconst RUNNER_CONTEXT_KEY = 'runner';\n\nexport type RunnerRegistrationContext =\n | {\n kind: 'manual';\n registrationTokenId: string;\n workspaceId: string;\n }\n | {\n kind: 'ephemeral';\n ephemeralTokenId: string;\n workspaceId: string;\n provisionerId: string;\n reservationId: string | null;\n providerRunnerId: string;\n }\n | {kind: 'activation'; activationTokenId: string; workspaceId: string};\n\nexport function getRunnerContext(request: FastifyRequest): RunnerRegistrationContext {\n const context = (request as unknown as Record<string, unknown>)[RUNNER_CONTEXT_KEY] as\n | RunnerRegistrationContext\n | undefined;\n if (!context) {\n throw new Error('Runner context is not available on this request');\n }\n return context;\n}\n\nexport function createRunnerRegistrationTokenAuthMethod(): AuthMethod {\n return {\n name: AUTH_RUNNER_REGISTRATION_TOKEN,\n authenticate: async (request) => {\n const rawToken = extractBearerToken(request.headers.authorization);\n if (!rawToken) {\n throw new ClientError('Missing or invalid Authorization header', 'unauthorized', {\n status: 401,\n });\n }\n\n const tokenType = getTokenType(rawToken);\n\n if (tokenType === 'runnerActivationToken') {\n const [activation] = await db()\n .select({id: runnerActivationTokens.id, workspaceId: providerRunners.workspaceId})\n .from(runnerActivationTokens)\n .innerJoin(\n providerRunners,\n eq(providerRunners.id, runnerActivationTokens.runnerInstanceId),\n )\n .leftJoin(provisionerTokens, eq(provisionerTokens.id, providerRunners.provisionerId))\n .where(\n and(\n eq(runnerActivationTokens.hashedToken, hashOpaqueToken(rawToken)),\n isNull(runnerActivationTokens.consumedAt),\n isNull(runnerActivationTokens.revokedAt),\n gt(runnerActivationTokens.expiresAt, sql`now()`),\n or(isNull(provisionerTokens.id), isNull(provisionerTokens.revokedAt)),\n isNull(providerRunners.runnerSessionId),\n ),\n )\n .limit(1);\n if (!activation?.workspaceId)\n throw new ClientError('Invalid runner registration token', 'unauthorized', {status: 401});\n (request as unknown as Record<string, unknown>)[RUNNER_CONTEXT_KEY] = {\n kind: 'activation',\n activationTokenId: activation.id,\n workspaceId: activation.workspaceId,\n } satisfies RunnerRegistrationContext;\n return;\n }\n\n if (tokenType === 'ephemeralRegistrationToken') {\n const ephemeralToken = await resolveEphemeralRegistrationTokenByHash(\n hashOpaqueToken(rawToken),\n );\n if (!ephemeralToken) {\n throw new ClientError('Invalid runner registration token', 'unauthorized', {\n status: 401,\n });\n }\n if (ephemeralToken.expiresAt < new Date()) {\n throw new ClientError(\n 'Ephemeral registration token has expired',\n 'registration-token-expired',\n {status: 401},\n );\n }\n\n (request as unknown as Record<string, unknown>)[RUNNER_CONTEXT_KEY] = {\n kind: 'ephemeral',\n ephemeralTokenId: ephemeralToken.id,\n workspaceId: ephemeralToken.workspaceId,\n provisionerId: ephemeralToken.provisionerId,\n reservationId: ephemeralToken.reservationId,\n providerRunnerId: ephemeralToken.providerRunnerId,\n } satisfies RunnerRegistrationContext;\n return;\n }\n\n if (tokenType !== 'manualRegistrationToken') {\n throw new ClientError('Invalid runner registration token', 'unauthorized', {status: 401});\n }\n\n const token = await resolveManualRegistrationTokenByHash(hashOpaqueToken(rawToken));\n if (!token) {\n throw new ClientError('Invalid runner registration token', 'unauthorized', {status: 401});\n }\n\n if (token.expiresAt && token.expiresAt < new Date()) {\n throw new ClientError('Registration token has expired', 'registration-token-expired', {\n status: 401,\n });\n }\n if (token.revokedAt) {\n throw new ClientError(\n 'Manual registration token has been revoked',\n 'manual-registration-token-revoked',\n {status: 401},\n );\n }\n\n (request as unknown as Record<string, unknown>)[RUNNER_CONTEXT_KEY] = {\n kind: 'manual',\n registrationTokenId: token.id,\n workspaceId: token.workspaceId,\n } satisfies RunnerRegistrationContext;\n },\n };\n}\n"],"names":["AUTH_RUNNER_REGISTRATION_TOKEN","ClientError","extractBearerToken","getTokenType","hashOpaqueToken","and","eq","gt","isNull","or","sql","db","resolveEphemeralRegistrationTokenByHash","resolveManualRegistrationTokenByHash","provisionerTokens","runnerActivationTokens","providerRunners","RUNNER_CONTEXT_KEY","getRunnerContext","request","context","Error","createRunnerRegistrationTokenAuthMethod","name","authenticate","rawToken","headers","authorization","status","tokenType","activation","select","id","workspaceId","from","innerJoin","runnerInstanceId","leftJoin","provisionerId","where","hashedToken","consumedAt","revokedAt","expiresAt","runnerSessionId","limit","kind","activationTokenId","ephemeralToken","Date","ephemeralTokenId","reservationId","providerRunnerId","token","registrationTokenId"],"mappings":"AAAA,SAAQA,8BAA8B,QAAO,4BAA4B;AACzE,SAAyBC,WAAW,EAAEC,kBAAkB,QAAO,wBAAwB;AACvF,SAAQC,YAAY,EAAEC,eAAe,QAAO,uBAAuB;AACnE,SAAQC,GAAG,EAAEC,EAAE,EAAEC,EAAE,EAAEC,MAAM,EAAEC,EAAE,EAAEC,GAAG,QAAO,cAAc;AAEzD,SAAQC,EAAE,QAAO,YAAY;AAC7B,SAAQC,uCAAuC,QAAO,uCAAuC;AAC7F,SAAQC,oCAAoC,QAAO,oCAAoC;AACvF,SAAQC,iBAAiB,QAAO,mCAAmC;AACnE,SAAQC,sBAAsB,QAAO,yCAAyC;AAC9E,SAAQC,eAAe,QAAO,iCAAiC;AAE/D,MAAMC,qBAAqB;AAkB3B,OAAO,SAASC,iBAAiBC,OAAuB;IACtD,MAAMC,UAAU,AAACD,OAA8C,CAACF,mBAAmB;IAGnF,IAAI,CAACG,SAAS;QACZ,MAAM,IAAIC,MAAM;IAClB;IACA,OAAOD;AACT;AAEA,OAAO,SAASE;IACd,OAAO;QACLC,MAAMvB;QACNwB,cAAc,OAAOL;YACnB,MAAMM,WAAWvB,mBAAmBiB,QAAQO,OAAO,CAACC,aAAa;YACjE,IAAI,CAACF,UAAU;gBACb,MAAM,IAAIxB,YAAY,2CAA2C,gBAAgB;oBAC/E2B,QAAQ;gBACV;YACF;YAEA,MAAMC,YAAY1B,aAAasB;YAE/B,IAAII,cAAc,yBAAyB;gBACzC,MAAM,CAACC,WAAW,GAAG,MAAMnB,KACxBoB,MAAM,CAAC;oBAACC,IAAIjB,uBAAuBiB,EAAE;oBAAEC,aAAajB,gBAAgBiB,WAAW;gBAAA,GAC/EC,IAAI,CAACnB,wBACLoB,SAAS,CACRnB,iBACAV,GAAGU,gBAAgBgB,EAAE,EAAEjB,uBAAuBqB,gBAAgB,GAE/DC,QAAQ,CAACvB,mBAAmBR,GAAGQ,kBAAkBkB,EAAE,EAAEhB,gBAAgBsB,aAAa,GAClFC,KAAK,CACJlC,IACEC,GAAGS,uBAAuByB,WAAW,EAAEpC,gBAAgBqB,YACvDjB,OAAOO,uBAAuB0B,UAAU,GACxCjC,OAAOO,uBAAuB2B,SAAS,GACvCnC,GAAGQ,uBAAuB4B,SAAS,EAAEjC,GAAG,CAAC,KAAK,CAAC,GAC/CD,GAAGD,OAAOM,kBAAkBkB,EAAE,GAAGxB,OAAOM,kBAAkB4B,SAAS,IACnElC,OAAOQ,gBAAgB4B,eAAe,IAGzCC,KAAK,CAAC;gBACT,IAAI,CAACf,YAAYG,aACf,MAAM,IAAIhC,YAAY,qCAAqC,gBAAgB;oBAAC2B,QAAQ;gBAAG;gBACxFT,OAA8C,CAACF,mBAAmB,GAAG;oBACpE6B,MAAM;oBACNC,mBAAmBjB,WAAWE,EAAE;oBAChCC,aAAaH,WAAWG,WAAW;gBACrC;gBACA;YACF;YAEA,IAAIJ,cAAc,8BAA8B;gBAC9C,MAAMmB,iBAAiB,MAAMpC,wCAC3BR,gBAAgBqB;gBAElB,IAAI,CAACuB,gBAAgB;oBACnB,MAAM,IAAI/C,YAAY,qCAAqC,gBAAgB;wBACzE2B,QAAQ;oBACV;gBACF;gBACA,IAAIoB,eAAeL,SAAS,GAAG,IAAIM,QAAQ;oBACzC,MAAM,IAAIhD,YACR,4CACA,8BACA;wBAAC2B,QAAQ;oBAAG;gBAEhB;gBAECT,OAA8C,CAACF,mBAAmB,GAAG;oBACpE6B,MAAM;oBACNI,kBAAkBF,eAAehB,EAAE;oBACnCC,aAAae,eAAef,WAAW;oBACvCK,eAAeU,eAAeV,aAAa;oBAC3Ca,eAAeH,eAAeG,aAAa;oBAC3CC,kBAAkBJ,eAAeI,gBAAgB;gBACnD;gBACA;YACF;YAEA,IAAIvB,cAAc,2BAA2B;gBAC3C,MAAM,IAAI5B,YAAY,qCAAqC,gBAAgB;oBAAC2B,QAAQ;gBAAG;YACzF;YAEA,MAAMyB,QAAQ,MAAMxC,qCAAqCT,gBAAgBqB;YACzE,IAAI,CAAC4B,OAAO;gBACV,MAAM,IAAIpD,YAAY,qCAAqC,gBAAgB;oBAAC2B,QAAQ;gBAAG;YACzF;YAEA,IAAIyB,MAAMV,SAAS,IAAIU,MAAMV,SAAS,GAAG,IAAIM,QAAQ;gBACnD,MAAM,IAAIhD,YAAY,kCAAkC,8BAA8B;oBACpF2B,QAAQ;gBACV;YACF;YACA,IAAIyB,MAAMX,SAAS,EAAE;gBACnB,MAAM,IAAIzC,YACR,8CACA,qCACA;oBAAC2B,QAAQ;gBAAG;YAEhB;YAECT,OAA8C,CAACF,mBAAmB,GAAG;gBACpE6B,MAAM;gBACNQ,qBAAqBD,MAAMrB,EAAE;gBAC7BC,aAAaoB,MAAMpB,WAAW;YAChC;QACF;IACF;AACF"}
@@ -1,7 +1,7 @@
1
1
  export { toActiveProvisionerDto } from './active-provisioner.js';
2
2
  export { toManualRegistrationTokenDto } from './manual-registration-token.js';
3
- export { toMintRegistrationTokensProvisionedRunners, toMintRegistrationTokensResponseDto, } from './mint-registration-tokens.js';
3
+ export { toMintRegistrationTokensResponseDto, toMintRegistrationTokensRunnerInstances, } from './mint-registration-tokens.js';
4
4
  export { toPollDemandResponseDto } from './poll-demand.js';
5
- export { toActiveRunnersResponseDto, toReconcileProvisionedRunnersResponseDto, toReportProvisionedRunnersResponseDto, } from './provisioned-runners.js';
6
5
  export { toProvisionerTokenDto } from './provisioner-token.js';
6
+ export { toActiveRunnersResponseDto, toReconcileRunnerInstancesResponseDto, toReportRunnerInstancesResponseDto, } from './runner-instances.js';
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/presentation/dto/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAC,4BAA4B,EAAC,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EACL,0CAA0C,EAC1C,mCAAmC,GACpC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAC,uBAAuB,EAAC,MAAM,kBAAkB,CAAC;AACzD,OAAO,EACL,0BAA0B,EAC1B,wCAAwC,EACxC,qCAAqC,GACtC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAC,qBAAqB,EAAC,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/presentation/dto/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAC,4BAA4B,EAAC,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EACL,mCAAmC,EACnC,uCAAuC,GACxC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAC,uBAAuB,EAAC,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAC,qBAAqB,EAAC,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EACL,0BAA0B,EAC1B,qCAAqC,EACrC,kCAAkC,GACnC,MAAM,uBAAuB,CAAC"}
@@ -1,8 +1,8 @@
1
1
  export { toActiveProvisionerDto } from './active-provisioner.js';
2
2
  export { toManualRegistrationTokenDto } from './manual-registration-token.js';
3
- export { toMintRegistrationTokensProvisionedRunners, toMintRegistrationTokensResponseDto } from './mint-registration-tokens.js';
3
+ export { toMintRegistrationTokensResponseDto, toMintRegistrationTokensRunnerInstances } from './mint-registration-tokens.js';
4
4
  export { toPollDemandResponseDto } from './poll-demand.js';
5
- export { toActiveRunnersResponseDto, toReconcileProvisionedRunnersResponseDto, toReportProvisionedRunnersResponseDto } from './provisioned-runners.js';
6
5
  export { toProvisionerTokenDto } from './provisioner-token.js';
6
+ export { toActiveRunnersResponseDto, toReconcileRunnerInstancesResponseDto, toReportRunnerInstancesResponseDto } from './runner-instances.js';
7
7
 
8
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/presentation/dto/index.ts"],"sourcesContent":["export {toActiveProvisionerDto} from './active-provisioner.js';\nexport {toManualRegistrationTokenDto} from './manual-registration-token.js';\nexport {\n toMintRegistrationTokensProvisionedRunners,\n toMintRegistrationTokensResponseDto,\n} from './mint-registration-tokens.js';\nexport {toPollDemandResponseDto} from './poll-demand.js';\nexport {\n toActiveRunnersResponseDto,\n toReconcileProvisionedRunnersResponseDto,\n toReportProvisionedRunnersResponseDto,\n} from './provisioned-runners.js';\nexport {toProvisionerTokenDto} from './provisioner-token.js';\n"],"names":["toActiveProvisionerDto","toManualRegistrationTokenDto","toMintRegistrationTokensProvisionedRunners","toMintRegistrationTokensResponseDto","toPollDemandResponseDto","toActiveRunnersResponseDto","toReconcileProvisionedRunnersResponseDto","toReportProvisionedRunnersResponseDto","toProvisionerTokenDto"],"mappings":"AAAA,SAAQA,sBAAsB,QAAO,0BAA0B;AAC/D,SAAQC,4BAA4B,QAAO,iCAAiC;AAC5E,SACEC,0CAA0C,EAC1CC,mCAAmC,QAC9B,gCAAgC;AACvC,SAAQC,uBAAuB,QAAO,mBAAmB;AACzD,SACEC,0BAA0B,EAC1BC,wCAAwC,EACxCC,qCAAqC,QAChC,2BAA2B;AAClC,SAAQC,qBAAqB,QAAO,yBAAyB"}
1
+ {"version":3,"sources":["../../../src/presentation/dto/index.ts"],"sourcesContent":["export {toActiveProvisionerDto} from './active-provisioner.js';\nexport {toManualRegistrationTokenDto} from './manual-registration-token.js';\nexport {\n toMintRegistrationTokensResponseDto,\n toMintRegistrationTokensRunnerInstances,\n} from './mint-registration-tokens.js';\nexport {toPollDemandResponseDto} from './poll-demand.js';\nexport {toProvisionerTokenDto} from './provisioner-token.js';\nexport {\n toActiveRunnersResponseDto,\n toReconcileRunnerInstancesResponseDto,\n toReportRunnerInstancesResponseDto,\n} from './runner-instances.js';\n"],"names":["toActiveProvisionerDto","toManualRegistrationTokenDto","toMintRegistrationTokensResponseDto","toMintRegistrationTokensRunnerInstances","toPollDemandResponseDto","toProvisionerTokenDto","toActiveRunnersResponseDto","toReconcileRunnerInstancesResponseDto","toReportRunnerInstancesResponseDto"],"mappings":"AAAA,SAAQA,sBAAsB,QAAO,0BAA0B;AAC/D,SAAQC,4BAA4B,QAAO,iCAAiC;AAC5E,SACEC,mCAAmC,EACnCC,uCAAuC,QAClC,gCAAgC;AACvC,SAAQC,uBAAuB,QAAO,mBAAmB;AACzD,SAAQC,qBAAqB,QAAO,yBAAyB;AAC7D,SACEC,0BAA0B,EAC1BC,qCAAqC,EACrCC,kCAAkC,QAC7B,wBAAwB"}
@@ -1,5 +1,7 @@
1
- import type { MintRegistrationTokensBatchResponseDto, MintRegistrationTokensProvisionedRunnerDto } from '@shipfox/api-runners-dto';
2
- import type { MintEphemeralRegistrationTokensBatchProvisionedRunner, MintEphemeralRegistrationTokensBatchResult } from '#core/ephemeral-registration-tokens.js';
3
- export declare function toMintRegistrationTokensProvisionedRunners(provisionedRunners: MintRegistrationTokensProvisionedRunnerDto[]): MintEphemeralRegistrationTokensBatchProvisionedRunner[];
1
+ import type { MintRegistrationTokensBatchResponseDto, MintRegistrationTokensRunnerInstanceDto } from '@shipfox/api-runners-dto';
2
+ import type { MintEphemeralRegistrationTokensBatchResult } from '#core/ephemeral-registration-tokens.js';
3
+ export declare function toMintRegistrationTokensRunnerInstances(providerRunners: MintRegistrationTokensRunnerInstanceDto[]): {
4
+ providerRunnerId: string;
5
+ }[];
4
6
  export declare function toMintRegistrationTokensResponseDto(result: MintEphemeralRegistrationTokensBatchResult[]): MintRegistrationTokensBatchResponseDto;
5
7
  //# sourceMappingURL=mint-registration-tokens.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mint-registration-tokens.d.ts","sourceRoot":"","sources":["../../../src/presentation/dto/mint-registration-tokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,sCAAsC,EACtC,0CAA0C,EAC3C,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACV,qDAAqD,EACrD,0CAA0C,EAC3C,MAAM,wCAAwC,CAAC;AAEhD,wBAAgB,0CAA0C,CACxD,kBAAkB,EAAE,0CAA0C,EAAE,GAC/D,qDAAqD,EAAE,CAIzD;AAED,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,0CAA0C,EAAE,GACnD,sCAAsC,CAIxC"}
1
+ {"version":3,"file":"mint-registration-tokens.d.ts","sourceRoot":"","sources":["../../../src/presentation/dto/mint-registration-tokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,sCAAsC,EACtC,uCAAuC,EACxC,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAC,0CAA0C,EAAC,MAAM,wCAAwC,CAAC;AAEvG,wBAAgB,uCAAuC,CACrD,eAAe,EAAE,uCAAuC,EAAE;;IAG3D;AAED,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,0CAA0C,EAAE,GACnD,sCAAsC,CAExC"}
@@ -1,6 +1,6 @@
1
- export function toMintRegistrationTokensProvisionedRunners(provisionedRunners) {
2
- return provisionedRunners.map((provisionedRunner)=>({
3
- provisionedRunnerId: provisionedRunner.provisioned_runner_id
1
+ export function toMintRegistrationTokensRunnerInstances(providerRunners) {
2
+ return providerRunners.map((runner)=>({
3
+ providerRunnerId: runner.provider_runner_id
4
4
  }));
5
5
  }
6
6
  export function toMintRegistrationTokensResponseDto(result) {
@@ -10,7 +10,7 @@ export function toMintRegistrationTokensResponseDto(result) {
10
10
  }
11
11
  function toMintedRegistrationTokenDto(result) {
12
12
  return {
13
- provisioned_runner_id: result.provisionedRunnerId,
13
+ provider_runner_id: result.providerRunnerId,
14
14
  registration_token: result.rawToken,
15
15
  expires_at: result.token.expiresAt.toISOString()
16
16
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/presentation/dto/mint-registration-tokens.ts"],"sourcesContent":["import type {\n MintedRegistrationTokenDto,\n MintRegistrationTokensBatchResponseDto,\n MintRegistrationTokensProvisionedRunnerDto,\n} from '@shipfox/api-runners-dto';\nimport type {\n MintEphemeralRegistrationTokensBatchProvisionedRunner,\n MintEphemeralRegistrationTokensBatchResult,\n} from '#core/ephemeral-registration-tokens.js';\n\nexport function toMintRegistrationTokensProvisionedRunners(\n provisionedRunners: MintRegistrationTokensProvisionedRunnerDto[],\n): MintEphemeralRegistrationTokensBatchProvisionedRunner[] {\n return provisionedRunners.map((provisionedRunner) => ({\n provisionedRunnerId: provisionedRunner.provisioned_runner_id,\n }));\n}\n\nexport function toMintRegistrationTokensResponseDto(\n result: MintEphemeralRegistrationTokensBatchResult[],\n): MintRegistrationTokensBatchResponseDto {\n return {\n tokens: result.map(toMintedRegistrationTokenDto),\n };\n}\n\nfunction toMintedRegistrationTokenDto(\n result: MintEphemeralRegistrationTokensBatchResult,\n): MintedRegistrationTokenDto {\n return {\n provisioned_runner_id: result.provisionedRunnerId,\n registration_token: result.rawToken,\n expires_at: result.token.expiresAt.toISOString(),\n };\n}\n"],"names":["toMintRegistrationTokensProvisionedRunners","provisionedRunners","map","provisionedRunner","provisionedRunnerId","provisioned_runner_id","toMintRegistrationTokensResponseDto","result","tokens","toMintedRegistrationTokenDto","registration_token","rawToken","expires_at","token","expiresAt","toISOString"],"mappings":"AAUA,OAAO,SAASA,2CACdC,kBAAgE;IAEhE,OAAOA,mBAAmBC,GAAG,CAAC,CAACC,oBAAuB,CAAA;YACpDC,qBAAqBD,kBAAkBE,qBAAqB;QAC9D,CAAA;AACF;AAEA,OAAO,SAASC,oCACdC,MAAoD;IAEpD,OAAO;QACLC,QAAQD,OAAOL,GAAG,CAACO;IACrB;AACF;AAEA,SAASA,6BACPF,MAAkD;IAElD,OAAO;QACLF,uBAAuBE,OAAOH,mBAAmB;QACjDM,oBAAoBH,OAAOI,QAAQ;QACnCC,YAAYL,OAAOM,KAAK,CAACC,SAAS,CAACC,WAAW;IAChD;AACF"}
1
+ {"version":3,"sources":["../../../src/presentation/dto/mint-registration-tokens.ts"],"sourcesContent":["import type {\n MintedRegistrationTokenDto,\n MintRegistrationTokensBatchResponseDto,\n MintRegistrationTokensRunnerInstanceDto,\n} from '@shipfox/api-runners-dto';\nimport type {MintEphemeralRegistrationTokensBatchResult} from '#core/ephemeral-registration-tokens.js';\n\nexport function toMintRegistrationTokensRunnerInstances(\n providerRunners: MintRegistrationTokensRunnerInstanceDto[],\n) {\n return providerRunners.map((runner) => ({providerRunnerId: runner.provider_runner_id}));\n}\n\nexport function toMintRegistrationTokensResponseDto(\n result: MintEphemeralRegistrationTokensBatchResult[],\n): MintRegistrationTokensBatchResponseDto {\n return {tokens: result.map(toMintedRegistrationTokenDto)};\n}\n\nfunction toMintedRegistrationTokenDto(\n result: MintEphemeralRegistrationTokensBatchResult,\n): MintedRegistrationTokenDto {\n return {\n provider_runner_id: result.providerRunnerId,\n registration_token: result.rawToken,\n expires_at: result.token.expiresAt.toISOString(),\n };\n}\n"],"names":["toMintRegistrationTokensRunnerInstances","providerRunners","map","runner","providerRunnerId","provider_runner_id","toMintRegistrationTokensResponseDto","result","tokens","toMintedRegistrationTokenDto","registration_token","rawToken","expires_at","token","expiresAt","toISOString"],"mappings":"AAOA,OAAO,SAASA,wCACdC,eAA0D;IAE1D,OAAOA,gBAAgBC,GAAG,CAAC,CAACC,SAAY,CAAA;YAACC,kBAAkBD,OAAOE,kBAAkB;QAAA,CAAA;AACtF;AAEA,OAAO,SAASC,oCACdC,MAAoD;IAEpD,OAAO;QAACC,QAAQD,OAAOL,GAAG,CAACO;IAA6B;AAC1D;AAEA,SAASA,6BACPF,MAAkD;IAElD,OAAO;QACLF,oBAAoBE,OAAOH,gBAAgB;QAC3CM,oBAAoBH,OAAOI,QAAQ;QACnCC,YAAYL,OAAOM,KAAK,CAACC,SAAS,CAACC,WAAW;IAChD;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"poll-demand.d.ts","sourceRoot":"","sources":["../../../src/presentation/dto/poll-demand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AAEtD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,GAAG,qBAAqB,CAgBvF"}
1
+ {"version":3,"file":"poll-demand.d.ts","sourceRoot":"","sources":["../../../src/presentation/dto/poll-demand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AAEtD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,GAAG,qBAAqB,CAkBvF"}
@@ -1,6 +1,9 @@
1
1
  export function toPollDemandResponseDto(result) {
2
2
  return {
3
3
  stats: result.stats.map((stat)=>({
4
+ ...stat.workspaceId ? {
5
+ workspace_id: stat.workspaceId
6
+ } : {},
4
7
  labels: stat.labels,
5
8
  queued: stat.queued,
6
9
  reserved: stat.reserved,
@@ -8,11 +11,14 @@ export function toPollDemandResponseDto(result) {
8
11
  })),
9
12
  reservations: result.reservations.map((reservation)=>({
10
13
  reservation_id: reservation.reservationId,
14
+ ...reservation.workspaceId ? {
15
+ workspace_id: reservation.workspaceId
16
+ } : {},
11
17
  labels: reservation.labels,
12
18
  count: reservation.count,
13
19
  expires_at: reservation.expiresAt.toISOString()
14
20
  })),
15
- terminate_provisioned_runner_ids: result.terminateProvisionedRunnerIds
21
+ terminate_provider_runner_ids: result.terminateRunnerInstanceIds
16
22
  };
17
23
  }
18
24
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/presentation/dto/poll-demand.ts"],"sourcesContent":["import type {PollDemandResponseDto} from '@shipfox/api-runners-dto';\nimport type {PollDemandResult} from '#core/demand.js';\n\nexport function toPollDemandResponseDto(result: PollDemandResult): PollDemandResponseDto {\n return {\n stats: result.stats.map((stat) => ({\n labels: stat.labels,\n queued: stat.queued,\n reserved: stat.reserved,\n oldest_queued_at: stat.oldestQueuedAt.toISOString(),\n })),\n reservations: result.reservations.map((reservation) => ({\n reservation_id: reservation.reservationId,\n labels: reservation.labels,\n count: reservation.count,\n expires_at: reservation.expiresAt.toISOString(),\n })),\n terminate_provisioned_runner_ids: result.terminateProvisionedRunnerIds,\n };\n}\n"],"names":["toPollDemandResponseDto","result","stats","map","stat","labels","queued","reserved","oldest_queued_at","oldestQueuedAt","toISOString","reservations","reservation","reservation_id","reservationId","count","expires_at","expiresAt","terminate_provisioned_runner_ids","terminateProvisionedRunnerIds"],"mappings":"AAGA,OAAO,SAASA,wBAAwBC,MAAwB;IAC9D,OAAO;QACLC,OAAOD,OAAOC,KAAK,CAACC,GAAG,CAAC,CAACC,OAAU,CAAA;gBACjCC,QAAQD,KAAKC,MAAM;gBACnBC,QAAQF,KAAKE,MAAM;gBACnBC,UAAUH,KAAKG,QAAQ;gBACvBC,kBAAkBJ,KAAKK,cAAc,CAACC,WAAW;YACnD,CAAA;QACAC,cAAcV,OAAOU,YAAY,CAACR,GAAG,CAAC,CAACS,cAAiB,CAAA;gBACtDC,gBAAgBD,YAAYE,aAAa;gBACzCT,QAAQO,YAAYP,MAAM;gBAC1BU,OAAOH,YAAYG,KAAK;gBACxBC,YAAYJ,YAAYK,SAAS,CAACP,WAAW;YAC/C,CAAA;QACAQ,kCAAkCjB,OAAOkB,6BAA6B;IACxE;AACF"}
1
+ {"version":3,"sources":["../../../src/presentation/dto/poll-demand.ts"],"sourcesContent":["import type {PollDemandResponseDto} from '@shipfox/api-runners-dto';\nimport type {PollDemandResult} from '#core/demand.js';\n\nexport function toPollDemandResponseDto(result: PollDemandResult): PollDemandResponseDto {\n return {\n stats: result.stats.map((stat) => ({\n ...(stat.workspaceId ? {workspace_id: stat.workspaceId} : {}),\n labels: stat.labels,\n queued: stat.queued,\n reserved: stat.reserved,\n oldest_queued_at: stat.oldestQueuedAt.toISOString(),\n })),\n reservations: result.reservations.map((reservation) => ({\n reservation_id: reservation.reservationId,\n ...(reservation.workspaceId ? {workspace_id: reservation.workspaceId} : {}),\n labels: reservation.labels,\n count: reservation.count,\n expires_at: reservation.expiresAt.toISOString(),\n })),\n terminate_provider_runner_ids: result.terminateRunnerInstanceIds,\n };\n}\n"],"names":["toPollDemandResponseDto","result","stats","map","stat","workspaceId","workspace_id","labels","queued","reserved","oldest_queued_at","oldestQueuedAt","toISOString","reservations","reservation","reservation_id","reservationId","count","expires_at","expiresAt","terminate_provider_runner_ids","terminateRunnerInstanceIds"],"mappings":"AAGA,OAAO,SAASA,wBAAwBC,MAAwB;IAC9D,OAAO;QACLC,OAAOD,OAAOC,KAAK,CAACC,GAAG,CAAC,CAACC,OAAU,CAAA;gBACjC,GAAIA,KAAKC,WAAW,GAAG;oBAACC,cAAcF,KAAKC,WAAW;gBAAA,IAAI,CAAC,CAAC;gBAC5DE,QAAQH,KAAKG,MAAM;gBACnBC,QAAQJ,KAAKI,MAAM;gBACnBC,UAAUL,KAAKK,QAAQ;gBACvBC,kBAAkBN,KAAKO,cAAc,CAACC,WAAW;YACnD,CAAA;QACAC,cAAcZ,OAAOY,YAAY,CAACV,GAAG,CAAC,CAACW,cAAiB,CAAA;gBACtDC,gBAAgBD,YAAYE,aAAa;gBACzC,GAAIF,YAAYT,WAAW,GAAG;oBAACC,cAAcQ,YAAYT,WAAW;gBAAA,IAAI,CAAC,CAAC;gBAC1EE,QAAQO,YAAYP,MAAM;gBAC1BU,OAAOH,YAAYG,KAAK;gBACxBC,YAAYJ,YAAYK,SAAS,CAACP,WAAW;YAC/C,CAAA;QACAQ,+BAA+BnB,OAAOoB,0BAA0B;IAClE;AACF"}
@@ -2,6 +2,7 @@ import type { ProvisionerToken } from '#core/entities/provisioner-token.js';
2
2
  export declare function toProvisionerTokenDto(token: ProvisionerToken): {
3
3
  id: string;
4
4
  workspace_id: string;
5
+ scope: 'workspace';
5
6
  prefix: string;
6
7
  name: string | null;
7
8
  created_by_user_id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"provisioner-token.d.ts","sourceRoot":"","sources":["../../../src/presentation/dto/provisioner-token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,qCAAqC,CAAC;AAE1E,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,GAAG;IAC9D,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAcA"}
1
+ {"version":3,"file":"provisioner-token.d.ts","sourceRoot":"","sources":["../../../src/presentation/dto/provisioner-token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,qCAAqC,CAAC;AAE1E,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,GAAG;IAC9D,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAkBA"}
@@ -1,4 +1,7 @@
1
1
  export function toProvisionerTokenDto(token) {
2
+ if (token.scope !== 'workspace') {
3
+ throw new Error('Installation provisioner tokens cannot be returned from workspace routes');
4
+ }
2
5
  return {
3
6
  id: token.id,
4
7
  workspace_id: token.workspaceId,
@@ -10,7 +13,8 @@ export function toProvisionerTokenDto(token) {
10
13
  revoked_at: token.revokedAt?.toISOString() ?? null,
11
14
  last_seen_at: token.lastSeenAt?.toISOString() ?? null,
12
15
  created_at: token.createdAt.toISOString(),
13
- updated_at: token.updatedAt.toISOString()
16
+ updated_at: token.updatedAt.toISOString(),
17
+ scope: 'workspace'
14
18
  };
15
19
  }
16
20
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/presentation/dto/provisioner-token.ts"],"sourcesContent":["import type {ProvisionerToken} from '#core/entities/provisioner-token.js';\n\nexport function toProvisionerTokenDto(token: ProvisionerToken): {\n id: string;\n workspace_id: string;\n prefix: string;\n name: string | null;\n created_by_user_id: string;\n revoked_by_user_id: string | null;\n expires_at: string | null;\n revoked_at: string | null;\n last_seen_at: string | null;\n created_at: string;\n updated_at: string;\n} {\n return {\n id: token.id,\n workspace_id: token.workspaceId,\n prefix: token.prefix,\n name: token.name,\n created_by_user_id: token.createdByUserId,\n revoked_by_user_id: token.revokedByUserId,\n expires_at: token.expiresAt?.toISOString() ?? null,\n revoked_at: token.revokedAt?.toISOString() ?? null,\n last_seen_at: token.lastSeenAt?.toISOString() ?? null,\n created_at: token.createdAt.toISOString(),\n updated_at: token.updatedAt.toISOString(),\n };\n}\n"],"names":["toProvisionerTokenDto","token","id","workspace_id","workspaceId","prefix","name","created_by_user_id","createdByUserId","revoked_by_user_id","revokedByUserId","expires_at","expiresAt","toISOString","revoked_at","revokedAt","last_seen_at","lastSeenAt","created_at","createdAt","updated_at","updatedAt"],"mappings":"AAEA,OAAO,SAASA,sBAAsBC,KAAuB;IAa3D,OAAO;QACLC,IAAID,MAAMC,EAAE;QACZC,cAAcF,MAAMG,WAAW;QAC/BC,QAAQJ,MAAMI,MAAM;QACpBC,MAAML,MAAMK,IAAI;QAChBC,oBAAoBN,MAAMO,eAAe;QACzCC,oBAAoBR,MAAMS,eAAe;QACzCC,YAAYV,MAAMW,SAAS,EAAEC,iBAAiB;QAC9CC,YAAYb,MAAMc,SAAS,EAAEF,iBAAiB;QAC9CG,cAAcf,MAAMgB,UAAU,EAAEJ,iBAAiB;QACjDK,YAAYjB,MAAMkB,SAAS,CAACN,WAAW;QACvCO,YAAYnB,MAAMoB,SAAS,CAACR,WAAW;IACzC;AACF"}
1
+ {"version":3,"sources":["../../../src/presentation/dto/provisioner-token.ts"],"sourcesContent":["import type {ProvisionerToken} from '#core/entities/provisioner-token.js';\n\nexport function toProvisionerTokenDto(token: ProvisionerToken): {\n id: string;\n workspace_id: string;\n scope: 'workspace';\n prefix: string;\n name: string | null;\n created_by_user_id: string;\n revoked_by_user_id: string | null;\n expires_at: string | null;\n revoked_at: string | null;\n last_seen_at: string | null;\n created_at: string;\n updated_at: string;\n} {\n if (token.scope !== 'workspace') {\n throw new Error('Installation provisioner tokens cannot be returned from workspace routes');\n }\n return {\n id: token.id,\n workspace_id: token.workspaceId,\n prefix: token.prefix,\n name: token.name,\n created_by_user_id: token.createdByUserId,\n revoked_by_user_id: token.revokedByUserId,\n expires_at: token.expiresAt?.toISOString() ?? null,\n revoked_at: token.revokedAt?.toISOString() ?? null,\n last_seen_at: token.lastSeenAt?.toISOString() ?? null,\n created_at: token.createdAt.toISOString(),\n updated_at: token.updatedAt.toISOString(),\n scope: 'workspace',\n };\n}\n"],"names":["toProvisionerTokenDto","token","scope","Error","id","workspace_id","workspaceId","prefix","name","created_by_user_id","createdByUserId","revoked_by_user_id","revokedByUserId","expires_at","expiresAt","toISOString","revoked_at","revokedAt","last_seen_at","lastSeenAt","created_at","createdAt","updated_at","updatedAt"],"mappings":"AAEA,OAAO,SAASA,sBAAsBC,KAAuB;IAc3D,IAAIA,MAAMC,KAAK,KAAK,aAAa;QAC/B,MAAM,IAAIC,MAAM;IAClB;IACA,OAAO;QACLC,IAAIH,MAAMG,EAAE;QACZC,cAAcJ,MAAMK,WAAW;QAC/BC,QAAQN,MAAMM,MAAM;QACpBC,MAAMP,MAAMO,IAAI;QAChBC,oBAAoBR,MAAMS,eAAe;QACzCC,oBAAoBV,MAAMW,eAAe;QACzCC,YAAYZ,MAAMa,SAAS,EAAEC,iBAAiB;QAC9CC,YAAYf,MAAMgB,SAAS,EAAEF,iBAAiB;QAC9CG,cAAcjB,MAAMkB,UAAU,EAAEJ,iBAAiB;QACjDK,YAAYnB,MAAMoB,SAAS,CAACN,WAAW;QACvCO,YAAYrB,MAAMsB,SAAS,CAACR,WAAW;QACvCb,OAAO;IACT;AACF"}
@@ -1,12 +1,12 @@
1
- import type { ActiveRunner, ReconcileProvisionedRunnersResult, ReportProvisionedRunnersResult } from '#core/provisioned-runners.js';
2
- export declare function toReportProvisionedRunnersResponseDto(result: ReportProvisionedRunnersResult): {
1
+ import type { ActiveRunner, ReconcileRunnerInstancesResult, ReportRunnerInstancesResult } from '#core/runner-instances.js';
2
+ export declare function toReportRunnerInstancesResponseDto(result: ReportRunnerInstancesResult): {
3
3
  accepted: number;
4
4
  reservations_released: number;
5
5
  };
6
- export declare function toReconcileProvisionedRunnersResponseDto(result: ReconcileProvisionedRunnersResult): {
6
+ export declare function toReconcileRunnerInstancesResponseDto(result: ReconcileRunnerInstancesResult): {
7
7
  runners: Array<{
8
- provisioned_runner_id: string;
9
- state: ReconcileProvisionedRunnersResult['runners'][number]['state'];
8
+ provider_runner_id: string;
9
+ state: ReconcileRunnerInstancesResult['runners'][number]['state'];
10
10
  reservation_id: string | null;
11
11
  runner_session_id: string | null;
12
12
  bound_job: {
@@ -15,14 +15,14 @@ export declare function toReconcileProvisionedRunnersResponseDto(result: Reconci
15
15
  last_heartbeat_at: string;
16
16
  cancellation_requested_at: string | null;
17
17
  } | null;
18
- desired_intent: ReconcileProvisionedRunnersResult['runners'][number]['desiredIntent'];
18
+ desired_intent: ReconcileRunnerInstancesResult['runners'][number]['desiredIntent'];
19
19
  }>;
20
- terminated_absent_provisioned_runner_ids: string[];
20
+ terminated_absent_provider_runner_ids: string[];
21
21
  };
22
22
  export declare function toActiveRunnersResponseDto(runners: ActiveRunner[]): {
23
23
  runners: Array<{
24
24
  runner_session_id: string | null;
25
- provisioned_runner_id: string | null;
25
+ provider_runner_id: string | null;
26
26
  provisioner_id: string | null;
27
27
  state: ActiveRunner['state'];
28
28
  labels: string[];
@@ -35,4 +35,4 @@ export declare function toActiveRunnersResponseDto(runners: ActiveRunner[]): {
35
35
  last_heartbeat_at: string | null;
36
36
  }>;
37
37
  };
38
- //# sourceMappingURL=provisioned-runners.d.ts.map
38
+ //# sourceMappingURL=runner-instances.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner-instances.d.ts","sourceRoot":"","sources":["../../../src/presentation/dto/runner-instances.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,8BAA8B,EAC9B,2BAA2B,EAC5B,MAAM,2BAA2B,CAAC;AAEnC,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,2BAA2B,GAAG;IACvF,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB,EAAE,MAAM,CAAC;CAC/B,CAKA;AAED,wBAAgB,qCAAqC,CAAC,MAAM,EAAE,8BAA8B,GAAG;IAC7F,OAAO,EAAE,KAAK,CAAC;QACb,kBAAkB,EAAE,MAAM,CAAC;QAC3B,KAAK,EAAE,8BAA8B,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC;QAClE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,SAAS,EAAE;YACT,MAAM,EAAE,MAAM,CAAC;YACf,uBAAuB,EAAE,MAAM,CAAC;YAChC,iBAAiB,EAAE,MAAM,CAAC;YAC1B,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;SAC1C,GAAG,IAAI,CAAC;QACT,cAAc,EAAE,8BAA8B,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC;KACpF,CAAC,CAAC;IACH,qCAAqC,EAAE,MAAM,EAAE,CAAC;CACjD,CAoBA;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG;IACnE,OAAO,EAAE,KAAK,CAAC;QACb,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;QAClC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;QAC7B,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;QACvC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;KAClC,CAAC,CAAC;CACJ,CAiBA"}
@@ -1,13 +1,13 @@
1
- export function toReportProvisionedRunnersResponseDto(result) {
1
+ export function toReportRunnerInstancesResponseDto(result) {
2
2
  return {
3
3
  accepted: result.accepted,
4
4
  reservations_released: result.reservationsReleased
5
5
  };
6
6
  }
7
- export function toReconcileProvisionedRunnersResponseDto(result) {
7
+ export function toReconcileRunnerInstancesResponseDto(result) {
8
8
  return {
9
9
  runners: result.runners.map((runner)=>({
10
- provisioned_runner_id: runner.provisionedRunnerId,
10
+ provider_runner_id: runner.providerRunnerId,
11
11
  state: runner.state,
12
12
  reservation_id: runner.reservationId,
13
13
  runner_session_id: runner.runnerSessionId,
@@ -19,14 +19,14 @@ export function toReconcileProvisionedRunnersResponseDto(result) {
19
19
  } : null,
20
20
  desired_intent: runner.desiredIntent
21
21
  })),
22
- terminated_absent_provisioned_runner_ids: result.terminatedAbsentProvisionedRunnerIds
22
+ terminated_absent_provider_runner_ids: result.terminatedAbsentRunnerInstanceIds
23
23
  };
24
24
  }
25
25
  export function toActiveRunnersResponseDto(runners) {
26
26
  return {
27
27
  runners: runners.map((runner)=>({
28
28
  runner_session_id: runner.runnerSessionId,
29
- provisioned_runner_id: runner.provisionedRunnerId,
29
+ provider_runner_id: runner.providerRunnerId,
30
30
  provisioner_id: runner.provisionerId,
31
31
  state: runner.state,
32
32
  labels: runner.labels,
@@ -41,4 +41,4 @@ export function toActiveRunnersResponseDto(runners) {
41
41
  };
42
42
  }
43
43
 
44
- //# sourceMappingURL=provisioned-runners.js.map
44
+ //# sourceMappingURL=runner-instances.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/presentation/dto/runner-instances.ts"],"sourcesContent":["import type {\n ActiveRunner,\n ReconcileRunnerInstancesResult,\n ReportRunnerInstancesResult,\n} from '#core/runner-instances.js';\n\nexport function toReportRunnerInstancesResponseDto(result: ReportRunnerInstancesResult): {\n accepted: number;\n reservations_released: number;\n} {\n return {\n accepted: result.accepted,\n reservations_released: result.reservationsReleased,\n };\n}\n\nexport function toReconcileRunnerInstancesResponseDto(result: ReconcileRunnerInstancesResult): {\n runners: Array<{\n provider_runner_id: string;\n state: ReconcileRunnerInstancesResult['runners'][number]['state'];\n reservation_id: string | null;\n runner_session_id: string | null;\n bound_job: {\n job_id: string;\n workflow_run_attempt_id: string;\n last_heartbeat_at: string;\n cancellation_requested_at: string | null;\n } | null;\n desired_intent: ReconcileRunnerInstancesResult['runners'][number]['desiredIntent'];\n }>;\n terminated_absent_provider_runner_ids: string[];\n} {\n return {\n runners: result.runners.map((runner) => ({\n provider_runner_id: runner.providerRunnerId,\n state: runner.state,\n reservation_id: runner.reservationId,\n runner_session_id: runner.runnerSessionId,\n bound_job: runner.boundJobExecution\n ? {\n job_id: runner.boundJobExecution.jobId,\n workflow_run_attempt_id: runner.boundJobExecution.workflowRunAttemptId,\n last_heartbeat_at: runner.boundJobExecution.lastHeartbeatAt.toISOString(),\n cancellation_requested_at:\n runner.boundJobExecution.cancellationRequestedAt?.toISOString() ?? null,\n }\n : null,\n desired_intent: runner.desiredIntent,\n })),\n terminated_absent_provider_runner_ids: result.terminatedAbsentRunnerInstanceIds,\n };\n}\n\nexport function toActiveRunnersResponseDto(runners: ActiveRunner[]): {\n runners: Array<{\n runner_session_id: string | null;\n provider_runner_id: string | null;\n provisioner_id: string | null;\n state: ActiveRunner['state'];\n labels: string[];\n template_key: string | null;\n provider_kind: string | null;\n job_id: string | null;\n workflow_run_attempt_id: string | null;\n project_id: string | null;\n reported_at: string | null;\n last_heartbeat_at: string | null;\n }>;\n} {\n return {\n runners: runners.map((runner) => ({\n runner_session_id: runner.runnerSessionId,\n provider_runner_id: runner.providerRunnerId,\n provisioner_id: runner.provisionerId,\n state: runner.state,\n labels: runner.labels,\n template_key: runner.templateKey,\n provider_kind: runner.providerKind,\n job_id: runner.jobId,\n workflow_run_attempt_id: runner.workflowRunAttemptId,\n project_id: runner.projectId,\n reported_at: runner.reportedAt?.toISOString() ?? null,\n last_heartbeat_at: runner.lastHeartbeatAt?.toISOString() ?? null,\n })),\n };\n}\n"],"names":["toReportRunnerInstancesResponseDto","result","accepted","reservations_released","reservationsReleased","toReconcileRunnerInstancesResponseDto","runners","map","runner","provider_runner_id","providerRunnerId","state","reservation_id","reservationId","runner_session_id","runnerSessionId","bound_job","boundJobExecution","job_id","jobId","workflow_run_attempt_id","workflowRunAttemptId","last_heartbeat_at","lastHeartbeatAt","toISOString","cancellation_requested_at","cancellationRequestedAt","desired_intent","desiredIntent","terminated_absent_provider_runner_ids","terminatedAbsentRunnerInstanceIds","toActiveRunnersResponseDto","provisioner_id","provisionerId","labels","template_key","templateKey","provider_kind","providerKind","project_id","projectId","reported_at","reportedAt"],"mappings":"AAMA,OAAO,SAASA,mCAAmCC,MAAmC;IAIpF,OAAO;QACLC,UAAUD,OAAOC,QAAQ;QACzBC,uBAAuBF,OAAOG,oBAAoB;IACpD;AACF;AAEA,OAAO,SAASC,sCAAsCJ,MAAsC;IAgB1F,OAAO;QACLK,SAASL,OAAOK,OAAO,CAACC,GAAG,CAAC,CAACC,SAAY,CAAA;gBACvCC,oBAAoBD,OAAOE,gBAAgB;gBAC3CC,OAAOH,OAAOG,KAAK;gBACnBC,gBAAgBJ,OAAOK,aAAa;gBACpCC,mBAAmBN,OAAOO,eAAe;gBACzCC,WAAWR,OAAOS,iBAAiB,GAC/B;oBACEC,QAAQV,OAAOS,iBAAiB,CAACE,KAAK;oBACtCC,yBAAyBZ,OAAOS,iBAAiB,CAACI,oBAAoB;oBACtEC,mBAAmBd,OAAOS,iBAAiB,CAACM,eAAe,CAACC,WAAW;oBACvEC,2BACEjB,OAAOS,iBAAiB,CAACS,uBAAuB,EAAEF,iBAAiB;gBACvE,IACA;gBACJG,gBAAgBnB,OAAOoB,aAAa;YACtC,CAAA;QACAC,uCAAuC5B,OAAO6B,iCAAiC;IACjF;AACF;AAEA,OAAO,SAASC,2BAA2BzB,OAAuB;IAgBhE,OAAO;QACLA,SAASA,QAAQC,GAAG,CAAC,CAACC,SAAY,CAAA;gBAChCM,mBAAmBN,OAAOO,eAAe;gBACzCN,oBAAoBD,OAAOE,gBAAgB;gBAC3CsB,gBAAgBxB,OAAOyB,aAAa;gBACpCtB,OAAOH,OAAOG,KAAK;gBACnBuB,QAAQ1B,OAAO0B,MAAM;gBACrBC,cAAc3B,OAAO4B,WAAW;gBAChCC,eAAe7B,OAAO8B,YAAY;gBAClCpB,QAAQV,OAAOW,KAAK;gBACpBC,yBAAyBZ,OAAOa,oBAAoB;gBACpDkB,YAAY/B,OAAOgC,SAAS;gBAC5BC,aAAajC,OAAOkC,UAAU,EAAElB,iBAAiB;gBACjDF,mBAAmBd,OAAOe,eAAe,EAAEC,iBAAiB;YAC9D,CAAA;IACF;AACF"}
@@ -1,4 +1,4 @@
1
- export { createProvisionerTokenAuthMethod, createRunnerRegistrationTokenAuthMethod, } from './auth/index.js';
2
- export { runnerRoutes as routes } from './routes/index.js';
1
+ export { createProvisionerTokenAuthMethod, createRunnerControlSessionAuthMethod, createRunnerRegistrationTokenAuthMethod, } from './auth/index.js';
2
+ export { createRunnerRoutes, createRunnerRoutes as routes } from './routes/index.js';
3
3
  export { onWorkflowsJobExecutionTimedOut } from './subscribers/on-workflows-job-execution-timed-out.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/presentation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gCAAgC,EAChC,uCAAuC,GACxC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,YAAY,IAAI,MAAM,EAAC,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAC,+BAA+B,EAAC,MAAM,uDAAuD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/presentation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gCAAgC,EAChC,oCAAoC,EACpC,uCAAuC,GACxC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,kBAAkB,EAAE,kBAAkB,IAAI,MAAM,EAAC,MAAM,mBAAmB,CAAC;AACnF,OAAO,EAAC,+BAA+B,EAAC,MAAM,uDAAuD,CAAC"}
@@ -1,5 +1,5 @@
1
- export { createProvisionerTokenAuthMethod, createRunnerRegistrationTokenAuthMethod } from './auth/index.js';
2
- export { runnerRoutes as routes } from './routes/index.js';
1
+ export { createProvisionerTokenAuthMethod, createRunnerControlSessionAuthMethod, createRunnerRegistrationTokenAuthMethod } from './auth/index.js';
2
+ export { createRunnerRoutes, createRunnerRoutes as routes } from './routes/index.js';
3
3
  export { onWorkflowsJobExecutionTimedOut } from './subscribers/on-workflows-job-execution-timed-out.js';
4
4
 
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/presentation/index.ts"],"sourcesContent":["export {\n createProvisionerTokenAuthMethod,\n createRunnerRegistrationTokenAuthMethod,\n} from './auth/index.js';\nexport {runnerRoutes as routes} from './routes/index.js';\nexport {onWorkflowsJobExecutionTimedOut} from './subscribers/on-workflows-job-execution-timed-out.js';\n"],"names":["createProvisionerTokenAuthMethod","createRunnerRegistrationTokenAuthMethod","runnerRoutes","routes","onWorkflowsJobExecutionTimedOut"],"mappings":"AAAA,SACEA,gCAAgC,EAChCC,uCAAuC,QAClC,kBAAkB;AACzB,SAAQC,gBAAgBC,MAAM,QAAO,oBAAoB;AACzD,SAAQC,+BAA+B,QAAO,wDAAwD"}
1
+ {"version":3,"sources":["../../src/presentation/index.ts"],"sourcesContent":["export {\n createProvisionerTokenAuthMethod,\n createRunnerControlSessionAuthMethod,\n createRunnerRegistrationTokenAuthMethod,\n} from './auth/index.js';\nexport {createRunnerRoutes, createRunnerRoutes as routes} from './routes/index.js';\nexport {onWorkflowsJobExecutionTimedOut} from './subscribers/on-workflows-job-execution-timed-out.js';\n"],"names":["createProvisionerTokenAuthMethod","createRunnerControlSessionAuthMethod","createRunnerRegistrationTokenAuthMethod","createRunnerRoutes","routes","onWorkflowsJobExecutionTimedOut"],"mappings":"AAAA,SACEA,gCAAgC,EAChCC,oCAAoC,EACpCC,uCAAuC,QAClC,kBAAkB;AACzB,SAAQC,kBAAkB,EAAEA,sBAAsBC,MAAM,QAAO,oBAAoB;AACnF,SAAQC,+BAA+B,QAAO,wDAAwD"}
@@ -0,0 +1,5 @@
1
+ import { runnersInterModuleContract } from '@shipfox/api-runners-dto/inter-module';
2
+ import { type InterModulePresentation } from '@shipfox/inter-module';
3
+ export declare function createRunnersInterModulePresentation(): InterModulePresentation<typeof runnersInterModuleContract>;
4
+ export declare function toEnqueueJobExecutionKnownError(error: unknown): unknown;
5
+ //# sourceMappingURL=inter-module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inter-module.d.ts","sourceRoot":"","sources":["../../src/presentation/inter-module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,0BAA0B,EAAC,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,uBAAuB,CAAC;AAU/B,wBAAgB,oCAAoC,IAAI,uBAAuB,CAC7E,OAAO,0BAA0B,CAClC,CAwBA;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CASvE"}
@@ -0,0 +1,43 @@
1
+ import { runnersInterModuleContract } from '@shipfox/api-runners-dto/inter-module';
2
+ import { createInterModuleKnownError, defineInterModulePresentation } from '@shipfox/inter-module';
3
+ import { EmptyRequiredLabelsError } from '#core/errors.js';
4
+ import { getEffectiveRunnerToolCapabilities } from '#core/runner-tool-capabilities.js';
5
+ import { cancelRunnerJobs, enqueueJobExecution, isJobLeaseActive, releaseJobExecution } from '#db/job-executions.js';
6
+ export function createRunnersInterModulePresentation() {
7
+ return defineInterModulePresentation(runnersInterModuleContract, {
8
+ enqueueJobExecution: async (input)=>{
9
+ try {
10
+ await enqueueJobExecution(input);
11
+ return {};
12
+ } catch (error) {
13
+ throw toEnqueueJobExecutionKnownError(error);
14
+ }
15
+ },
16
+ releaseJobExecution: async (input)=>{
17
+ await releaseJobExecution(input);
18
+ return {};
19
+ },
20
+ cancelJobs: async (input)=>{
21
+ await cancelRunnerJobs(input);
22
+ return {};
23
+ },
24
+ getLeaseState: async (input)=>({
25
+ active: await isJobLeaseActive(input)
26
+ }),
27
+ getEffectiveRunnerToolCapabilities: async (input)=>{
28
+ const result = await getEffectiveRunnerToolCapabilities(input);
29
+ return {
30
+ capabilities: result.capabilities,
31
+ reportFresh: result.reportFresh
32
+ };
33
+ }
34
+ });
35
+ }
36
+ export function toEnqueueJobExecutionKnownError(error) {
37
+ if (error instanceof EmptyRequiredLabelsError) {
38
+ return createInterModuleKnownError(runnersInterModuleContract.methods.enqueueJobExecution, 'empty-required-labels', {});
39
+ }
40
+ return error;
41
+ }
42
+
43
+ //# sourceMappingURL=inter-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/presentation/inter-module.ts"],"sourcesContent":["import {runnersInterModuleContract} from '@shipfox/api-runners-dto/inter-module';\nimport {\n createInterModuleKnownError,\n defineInterModulePresentation,\n type InterModulePresentation,\n} from '@shipfox/inter-module';\nimport {EmptyRequiredLabelsError} from '#core/errors.js';\nimport {getEffectiveRunnerToolCapabilities} from '#core/runner-tool-capabilities.js';\nimport {\n cancelRunnerJobs,\n enqueueJobExecution,\n isJobLeaseActive,\n releaseJobExecution,\n} from '#db/job-executions.js';\n\nexport function createRunnersInterModulePresentation(): InterModulePresentation<\n typeof runnersInterModuleContract\n> {\n return defineInterModulePresentation(runnersInterModuleContract, {\n enqueueJobExecution: async (input) => {\n try {\n await enqueueJobExecution(input);\n return {};\n } catch (error) {\n throw toEnqueueJobExecutionKnownError(error);\n }\n },\n releaseJobExecution: async (input) => {\n await releaseJobExecution(input);\n return {};\n },\n cancelJobs: async (input) => {\n await cancelRunnerJobs(input);\n return {};\n },\n getLeaseState: async (input) => ({active: await isJobLeaseActive(input)}),\n getEffectiveRunnerToolCapabilities: async (input) => {\n const result = await getEffectiveRunnerToolCapabilities(input);\n return {capabilities: result.capabilities, reportFresh: result.reportFresh};\n },\n });\n}\n\nexport function toEnqueueJobExecutionKnownError(error: unknown): unknown {\n if (error instanceof EmptyRequiredLabelsError) {\n return createInterModuleKnownError(\n runnersInterModuleContract.methods.enqueueJobExecution,\n 'empty-required-labels',\n {},\n );\n }\n return error;\n}\n"],"names":["runnersInterModuleContract","createInterModuleKnownError","defineInterModulePresentation","EmptyRequiredLabelsError","getEffectiveRunnerToolCapabilities","cancelRunnerJobs","enqueueJobExecution","isJobLeaseActive","releaseJobExecution","createRunnersInterModulePresentation","input","error","toEnqueueJobExecutionKnownError","cancelJobs","getLeaseState","active","result","capabilities","reportFresh","methods"],"mappings":"AAAA,SAAQA,0BAA0B,QAAO,wCAAwC;AACjF,SACEC,2BAA2B,EAC3BC,6BAA6B,QAExB,wBAAwB;AAC/B,SAAQC,wBAAwB,QAAO,kBAAkB;AACzD,SAAQC,kCAAkC,QAAO,oCAAoC;AACrF,SACEC,gBAAgB,EAChBC,mBAAmB,EACnBC,gBAAgB,EAChBC,mBAAmB,QACd,wBAAwB;AAE/B,OAAO,SAASC;IAGd,OAAOP,8BAA8BF,4BAA4B;QAC/DM,qBAAqB,OAAOI;YAC1B,IAAI;gBACF,MAAMJ,oBAAoBI;gBAC1B,OAAO,CAAC;YACV,EAAE,OAAOC,OAAO;gBACd,MAAMC,gCAAgCD;YACxC;QACF;QACAH,qBAAqB,OAAOE;YAC1B,MAAMF,oBAAoBE;YAC1B,OAAO,CAAC;QACV;QACAG,YAAY,OAAOH;YACjB,MAAML,iBAAiBK;YACvB,OAAO,CAAC;QACV;QACAI,eAAe,OAAOJ,QAAW,CAAA;gBAACK,QAAQ,MAAMR,iBAAiBG;YAAM,CAAA;QACvEN,oCAAoC,OAAOM;YACzC,MAAMM,SAAS,MAAMZ,mCAAmCM;YACxD,OAAO;gBAACO,cAAcD,OAAOC,YAAY;gBAAEC,aAAaF,OAAOE,WAAW;YAAA;QAC5E;IACF;AACF;AAEA,OAAO,SAASN,gCAAgCD,KAAc;IAC5D,IAAIA,iBAAiBR,0BAA0B;QAC7C,OAAOF,4BACLD,2BAA2BmB,OAAO,CAACb,mBAAmB,EACtD,yBACA,CAAC;IAEL;IACA,OAAOK;AACT"}
@@ -0,0 +1,2 @@
1
+ export declare const assignCapacityRoute: import("@shipfox/node-fastify").RouteDefinition;
2
+ //# sourceMappingURL=assign-capacity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assign-capacity.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/assign-capacity.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,mBAAmB,iDAiC9B,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { requireProvisionerContext } from '@shipfox/api-auth-context';
2
+ import { assignCapacityBatchBodySchema, assignCapacityBatchResponseSchema } from '@shipfox/api-runners-dto';
3
+ import { ClientError, defineRoute } from '@shipfox/node-fastify';
4
+ import { assignCapacityBatch } from '#core/capacity-assignments.js';
5
+ import { CapacityAlreadyAssignedError, CapacityNotAssignableError, ReservationExpiredError, ReservationNotFoundError } from '#core/errors.js';
6
+ export const assignCapacityRoute = defineRoute({
7
+ method: 'POST',
8
+ path: '/capacity/assignments',
9
+ description: 'Atomically assign provisioner capacity to a live reservation',
10
+ schema: {
11
+ body: assignCapacityBatchBodySchema,
12
+ response: {
13
+ 200: assignCapacityBatchResponseSchema
14
+ }
15
+ },
16
+ errorHandler: (error)=>{
17
+ if (error instanceof ReservationNotFoundError) throw new ClientError('Reservation not found', 'reservation-not-found', {
18
+ status: 404
19
+ });
20
+ if (error instanceof ReservationExpiredError) throw new ClientError('Reservation has expired', 'reservation-expired', {
21
+ status: 409
22
+ });
23
+ if (error instanceof CapacityAlreadyAssignedError || error instanceof CapacityNotAssignableError) throw new ClientError('Capacity cannot be assigned', 'capacity-not-assignable', {
24
+ status: 409
25
+ });
26
+ throw error;
27
+ },
28
+ handler: async (request)=>{
29
+ const { provisionerTokenId } = requireProvisionerContext(request);
30
+ const assignments = await assignCapacityBatch({
31
+ provisionerId: provisionerTokenId,
32
+ reservationId: request.body.reservation_id,
33
+ capacityIds: request.body.capacity_ids
34
+ });
35
+ return {
36
+ assignments: assignments.map((assignment)=>({
37
+ capacity_id: assignment.capacityId,
38
+ assignment_id: assignment.id
39
+ }))
40
+ };
41
+ }
42
+ });
43
+
44
+ //# sourceMappingURL=assign-capacity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/presentation/routes/assign-capacity.ts"],"sourcesContent":["import {requireProvisionerContext} from '@shipfox/api-auth-context';\nimport {\n assignCapacityBatchBodySchema,\n assignCapacityBatchResponseSchema,\n} from '@shipfox/api-runners-dto';\nimport {ClientError, defineRoute} from '@shipfox/node-fastify';\nimport {assignCapacityBatch} from '#core/capacity-assignments.js';\nimport {\n CapacityAlreadyAssignedError,\n CapacityNotAssignableError,\n ReservationExpiredError,\n ReservationNotFoundError,\n} from '#core/errors.js';\n\nexport const assignCapacityRoute = defineRoute({\n method: 'POST',\n path: '/capacity/assignments',\n description: 'Atomically assign provisioner capacity to a live reservation',\n schema: {body: assignCapacityBatchBodySchema, response: {200: assignCapacityBatchResponseSchema}},\n errorHandler: (error) => {\n if (error instanceof ReservationNotFoundError)\n throw new ClientError('Reservation not found', 'reservation-not-found', {status: 404});\n if (error instanceof ReservationExpiredError)\n throw new ClientError('Reservation has expired', 'reservation-expired', {status: 409});\n if (\n error instanceof CapacityAlreadyAssignedError ||\n error instanceof CapacityNotAssignableError\n )\n throw new ClientError('Capacity cannot be assigned', 'capacity-not-assignable', {\n status: 409,\n });\n throw error;\n },\n handler: async (request) => {\n const {provisionerTokenId} = requireProvisionerContext(request);\n const assignments = await assignCapacityBatch({\n provisionerId: provisionerTokenId,\n reservationId: request.body.reservation_id,\n capacityIds: request.body.capacity_ids,\n });\n return {\n assignments: assignments.map((assignment) => ({\n capacity_id: assignment.capacityId,\n assignment_id: assignment.id,\n })),\n };\n },\n});\n"],"names":["requireProvisionerContext","assignCapacityBatchBodySchema","assignCapacityBatchResponseSchema","ClientError","defineRoute","assignCapacityBatch","CapacityAlreadyAssignedError","CapacityNotAssignableError","ReservationExpiredError","ReservationNotFoundError","assignCapacityRoute","method","path","description","schema","body","response","errorHandler","error","status","handler","request","provisionerTokenId","assignments","provisionerId","reservationId","reservation_id","capacityIds","capacity_ids","map","assignment","capacity_id","capacityId","assignment_id","id"],"mappings":"AAAA,SAAQA,yBAAyB,QAAO,4BAA4B;AACpE,SACEC,6BAA6B,EAC7BC,iCAAiC,QAC5B,2BAA2B;AAClC,SAAQC,WAAW,EAAEC,WAAW,QAAO,wBAAwB;AAC/D,SAAQC,mBAAmB,QAAO,gCAAgC;AAClE,SACEC,4BAA4B,EAC5BC,0BAA0B,EAC1BC,uBAAuB,EACvBC,wBAAwB,QACnB,kBAAkB;AAEzB,OAAO,MAAMC,sBAAsBN,YAAY;IAC7CO,QAAQ;IACRC,MAAM;IACNC,aAAa;IACbC,QAAQ;QAACC,MAAMd;QAA+Be,UAAU;YAAC,KAAKd;QAAiC;IAAC;IAChGe,cAAc,CAACC;QACb,IAAIA,iBAAiBT,0BACnB,MAAM,IAAIN,YAAY,yBAAyB,yBAAyB;YAACgB,QAAQ;QAAG;QACtF,IAAID,iBAAiBV,yBACnB,MAAM,IAAIL,YAAY,2BAA2B,uBAAuB;YAACgB,QAAQ;QAAG;QACtF,IACED,iBAAiBZ,gCACjBY,iBAAiBX,4BAEjB,MAAM,IAAIJ,YAAY,+BAA+B,2BAA2B;YAC9EgB,QAAQ;QACV;QACF,MAAMD;IACR;IACAE,SAAS,OAAOC;QACd,MAAM,EAACC,kBAAkB,EAAC,GAAGtB,0BAA0BqB;QACvD,MAAME,cAAc,MAAMlB,oBAAoB;YAC5CmB,eAAeF;YACfG,eAAeJ,QAAQN,IAAI,CAACW,cAAc;YAC1CC,aAAaN,QAAQN,IAAI,CAACa,YAAY;QACxC;QACA,OAAO;YACLL,aAAaA,YAAYM,GAAG,CAAC,CAACC,aAAgB,CAAA;oBAC5CC,aAAaD,WAAWE,UAAU;oBAClCC,eAAeH,WAAWI,EAAE;gBAC9B,CAAA;QACF;IACF;AACF,GAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-provisioner-me.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/get-provisioner-me.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,qBAAqB,iDAiBhC,CAAC"}
1
+ {"version":3,"file":"get-provisioner-me.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/get-provisioner-me.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,qBAAqB,iDAgBhC,CAAC"}
@@ -12,9 +12,13 @@ export const getProvisionerMeRoute = defineRoute({
12
12
  },
13
13
  handler: (request)=>{
14
14
  const context = requireProvisionerContext(request);
15
- return {
15
+ return context.scope === 'workspace' ? {
16
16
  id: context.provisionerTokenId,
17
+ scope: 'workspace',
17
18
  workspace_id: context.workspaceId
19
+ } : {
20
+ id: context.provisionerTokenId,
21
+ scope: 'installation'
18
22
  };
19
23
  }
20
24
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/presentation/routes/get-provisioner-me.ts"],"sourcesContent":["import {requireProvisionerContext} from '@shipfox/api-auth-context';\nimport {provisionerIdentityResponseSchema} from '@shipfox/api-runners-dto';\nimport {defineRoute} from '@shipfox/node-fastify';\n\nexport const getProvisionerMeRoute = defineRoute({\n method: 'GET',\n path: '/me',\n description: 'Return the authenticated provisioner token identity',\n schema: {\n response: {\n 200: provisionerIdentityResponseSchema,\n },\n },\n handler: (request) => {\n const context = requireProvisionerContext(request);\n\n return {\n id: context.provisionerTokenId,\n workspace_id: context.workspaceId,\n };\n },\n});\n"],"names":["requireProvisionerContext","provisionerIdentityResponseSchema","defineRoute","getProvisionerMeRoute","method","path","description","schema","response","handler","request","context","id","provisionerTokenId","workspace_id","workspaceId"],"mappings":"AAAA,SAAQA,yBAAyB,QAAO,4BAA4B;AACpE,SAAQC,iCAAiC,QAAO,2BAA2B;AAC3E,SAAQC,WAAW,QAAO,wBAAwB;AAElD,OAAO,MAAMC,wBAAwBD,YAAY;IAC/CE,QAAQ;IACRC,MAAM;IACNC,aAAa;IACbC,QAAQ;QACNC,UAAU;YACR,KAAKP;QACP;IACF;IACAQ,SAAS,CAACC;QACR,MAAMC,UAAUX,0BAA0BU;QAE1C,OAAO;YACLE,IAAID,QAAQE,kBAAkB;YAC9BC,cAAcH,QAAQI,WAAW;QACnC;IACF;AACF,GAAG"}
1
+ {"version":3,"sources":["../../../src/presentation/routes/get-provisioner-me.ts"],"sourcesContent":["import {requireProvisionerContext} from '@shipfox/api-auth-context';\nimport {provisionerIdentityResponseSchema} from '@shipfox/api-runners-dto';\nimport {defineRoute} from '@shipfox/node-fastify';\n\nexport const getProvisionerMeRoute = defineRoute({\n method: 'GET',\n path: '/me',\n description: 'Return the authenticated provisioner token identity',\n schema: {\n response: {\n 200: provisionerIdentityResponseSchema,\n },\n },\n handler: (request) => {\n const context = requireProvisionerContext(request);\n\n return context.scope === 'workspace'\n ? {id: context.provisionerTokenId, scope: 'workspace', workspace_id: context.workspaceId}\n : {id: context.provisionerTokenId, scope: 'installation'};\n },\n});\n"],"names":["requireProvisionerContext","provisionerIdentityResponseSchema","defineRoute","getProvisionerMeRoute","method","path","description","schema","response","handler","request","context","scope","id","provisionerTokenId","workspace_id","workspaceId"],"mappings":"AAAA,SAAQA,yBAAyB,QAAO,4BAA4B;AACpE,SAAQC,iCAAiC,QAAO,2BAA2B;AAC3E,SAAQC,WAAW,QAAO,wBAAwB;AAElD,OAAO,MAAMC,wBAAwBD,YAAY;IAC/CE,QAAQ;IACRC,MAAM;IACNC,aAAa;IACbC,QAAQ;QACNC,UAAU;YACR,KAAKP;QACP;IACF;IACAQ,SAAS,CAACC;QACR,MAAMC,UAAUX,0BAA0BU;QAE1C,OAAOC,QAAQC,KAAK,KAAK,cACrB;YAACC,IAAIF,QAAQG,kBAAkB;YAAEF,OAAO;YAAaG,cAAcJ,QAAQK,WAAW;QAAA,IACtF;YAACH,IAAIF,QAAQG,kBAAkB;YAAEF,OAAO;QAAc;IAC5D;AACF,GAAG"}
@@ -1,2 +1,3 @@
1
- export declare const heartbeatRoute: import("@shipfox/node-fastify").RouteDefinition;
1
+ import type { AuthInterModuleClient } from '@shipfox/api-auth-dto/inter-module';
2
+ export declare function createHeartbeatRoute(auth: AuthInterModuleClient): import("@shipfox/node-fastify").RouteDefinition;
2
3
  //# sourceMappingURL=heartbeat.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/heartbeat.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,cAAc,iDAmEzB,CAAC"}
1
+ {"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/heartbeat.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,oCAAoC,CAAC;AAO9E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,mDAsE/D"}