@shipfox/api-runners 9.2.0 → 10.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 (66) hide show
  1. package/.turbo/turbo-build.log +4 -4
  2. package/CHANGELOG.md +53 -0
  3. package/dist/config.js +1 -1
  4. package/dist/config.js.map +1 -1
  5. package/dist/core/runner-activation.d.ts +6 -0
  6. package/dist/core/runner-activation.d.ts.map +1 -1
  7. package/dist/core/runner-activation.js +20 -19
  8. package/dist/core/runner-activation.js.map +1 -1
  9. package/dist/core/runner-control-sessions.d.ts +2 -1
  10. package/dist/core/runner-control-sessions.d.ts.map +1 -1
  11. package/dist/core/runner-control-sessions.js +65 -19
  12. package/dist/core/runner-control-sessions.js.map +1 -1
  13. package/dist/db/db.d.ts +34 -0
  14. package/dist/db/db.d.ts.map +1 -1
  15. package/dist/db/index.d.ts +1 -1
  16. package/dist/db/index.d.ts.map +1 -1
  17. package/dist/db/index.js +1 -1
  18. package/dist/db/index.js.map +1 -1
  19. package/dist/db/job-executions.d.ts +7 -0
  20. package/dist/db/job-executions.d.ts.map +1 -1
  21. package/dist/db/job-executions.js +25 -0
  22. package/dist/db/job-executions.js.map +1 -1
  23. package/dist/db/runner-assignments.d.ts +6 -0
  24. package/dist/db/runner-assignments.d.ts.map +1 -1
  25. package/dist/db/runner-assignments.js +57 -42
  26. package/dist/db/runner-assignments.js.map +1 -1
  27. package/dist/db/runner-instances.d.ts.map +1 -1
  28. package/dist/db/runner-instances.js +64 -19
  29. package/dist/db/runner-instances.js.map +1 -1
  30. package/dist/db/schema/runner-instances.d.ts +17 -0
  31. package/dist/db/schema/runner-instances.d.ts.map +1 -1
  32. package/dist/db/schema/runner-instances.js +3 -0
  33. package/dist/db/schema/runner-instances.js.map +1 -1
  34. package/dist/index.d.ts +1 -1
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +1 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/presentation/inter-module.d.ts.map +1 -1
  39. package/dist/presentation/inter-module.js +7 -2
  40. package/dist/presentation/inter-module.js.map +1 -1
  41. package/dist/presentation/routes/runner-enrollment.d.ts +9 -0
  42. package/dist/presentation/routes/runner-enrollment.d.ts.map +1 -1
  43. package/dist/presentation/routes/runner-enrollment.js +36 -23
  44. package/dist/presentation/routes/runner-enrollment.js.map +1 -1
  45. package/dist/tsconfig.test.tsbuildinfo +1 -1
  46. package/drizzle/0001_intended_reservation.sql +3 -0
  47. package/drizzle/meta/0001_snapshot.json +2093 -0
  48. package/drizzle/meta/_journal.json +7 -0
  49. package/package.json +12 -12
  50. package/src/config.test.ts +11 -0
  51. package/src/config.ts +1 -1
  52. package/src/core/runner-activation.ts +48 -38
  53. package/src/core/runner-control-sessions.ts +115 -33
  54. package/src/db/index.ts +1 -0
  55. package/src/db/job-executions.ts +28 -0
  56. package/src/db/runner-assignments.test.ts +81 -0
  57. package/src/db/runner-assignments.ts +134 -86
  58. package/src/db/runner-instances.test.ts +182 -0
  59. package/src/db/runner-instances.ts +123 -28
  60. package/src/db/schema/runner-instances.ts +9 -0
  61. package/src/index.ts +1 -0
  62. package/src/presentation/inter-module.ts +4 -0
  63. package/src/presentation/routes/poll-demand.test.ts +2 -2
  64. package/src/presentation/routes/runner-enrollment.test.ts +144 -1
  65. package/src/presentation/routes/runner-enrollment.ts +40 -20
  66. package/tsconfig.build.tsbuildinfo +1 -1
@@ -0,0 +1,2093 @@
1
+ {
2
+ "id": "3cb0e19d-8b01-4f57-ae98-9b53549f5509",
3
+ "prevId": "8d720b64-18a7-4afe-a026-b12f509aa356",
4
+ "version": "7",
5
+ "dialect": "postgresql",
6
+ "tables": {
7
+ "public.runners_ephemeral_registration_tokens": {
8
+ "name": "runners_ephemeral_registration_tokens",
9
+ "schema": "",
10
+ "columns": {
11
+ "id": {
12
+ "name": "id",
13
+ "type": "uuid",
14
+ "primaryKey": true,
15
+ "notNull": true,
16
+ "default": "uuidv7()"
17
+ },
18
+ "workspace_id": {
19
+ "name": "workspace_id",
20
+ "type": "uuid",
21
+ "primaryKey": false,
22
+ "notNull": true
23
+ },
24
+ "provisioner_id": {
25
+ "name": "provisioner_id",
26
+ "type": "uuid",
27
+ "primaryKey": false,
28
+ "notNull": true
29
+ },
30
+ "reservation_id": {
31
+ "name": "reservation_id",
32
+ "type": "uuid",
33
+ "primaryKey": false,
34
+ "notNull": false
35
+ },
36
+ "provider_runner_id": {
37
+ "name": "provider_runner_id",
38
+ "type": "text",
39
+ "primaryKey": false,
40
+ "notNull": true
41
+ },
42
+ "hashed_token": {
43
+ "name": "hashed_token",
44
+ "type": "text",
45
+ "primaryKey": false,
46
+ "notNull": true
47
+ },
48
+ "prefix": {
49
+ "name": "prefix",
50
+ "type": "text",
51
+ "primaryKey": false,
52
+ "notNull": true
53
+ },
54
+ "expires_at": {
55
+ "name": "expires_at",
56
+ "type": "timestamp with time zone",
57
+ "primaryKey": false,
58
+ "notNull": true
59
+ },
60
+ "consumed_at": {
61
+ "name": "consumed_at",
62
+ "type": "timestamp with time zone",
63
+ "primaryKey": false,
64
+ "notNull": false
65
+ },
66
+ "consumed_session_id": {
67
+ "name": "consumed_session_id",
68
+ "type": "uuid",
69
+ "primaryKey": false,
70
+ "notNull": false
71
+ },
72
+ "created_at": {
73
+ "name": "created_at",
74
+ "type": "timestamp with time zone",
75
+ "primaryKey": false,
76
+ "notNull": true,
77
+ "default": "now()"
78
+ }
79
+ },
80
+ "indexes": {
81
+ "runners_ephemeral_registration_tokens_hashed_token_unique": {
82
+ "name": "runners_ephemeral_registration_tokens_hashed_token_unique",
83
+ "columns": [
84
+ {
85
+ "expression": "hashed_token",
86
+ "isExpression": false,
87
+ "asc": true,
88
+ "nulls": "last"
89
+ }
90
+ ],
91
+ "isUnique": true,
92
+ "concurrently": false,
93
+ "method": "btree",
94
+ "with": {}
95
+ },
96
+ "runners_ephemeral_registration_tokens_reservation_id_idx": {
97
+ "name": "runners_ephemeral_registration_tokens_reservation_id_idx",
98
+ "columns": [
99
+ {
100
+ "expression": "reservation_id",
101
+ "isExpression": false,
102
+ "asc": true,
103
+ "nulls": "last"
104
+ }
105
+ ],
106
+ "isUnique": false,
107
+ "concurrently": false,
108
+ "method": "btree",
109
+ "with": {}
110
+ },
111
+ "runners_ephemeral_registration_tokens_active_provider_runner_idx": {
112
+ "name": "runners_ephemeral_registration_tokens_active_provider_runner_idx",
113
+ "columns": [
114
+ {
115
+ "expression": "workspace_id",
116
+ "isExpression": false,
117
+ "asc": true,
118
+ "nulls": "last"
119
+ },
120
+ {
121
+ "expression": "provisioner_id",
122
+ "isExpression": false,
123
+ "asc": true,
124
+ "nulls": "last"
125
+ },
126
+ {
127
+ "expression": "provider_runner_id",
128
+ "isExpression": false,
129
+ "asc": true,
130
+ "nulls": "last"
131
+ },
132
+ {
133
+ "expression": "consumed_at",
134
+ "isExpression": false,
135
+ "asc": true,
136
+ "nulls": "last"
137
+ },
138
+ {
139
+ "expression": "expires_at",
140
+ "isExpression": false,
141
+ "asc": true,
142
+ "nulls": "last"
143
+ }
144
+ ],
145
+ "isUnique": false,
146
+ "concurrently": false,
147
+ "method": "btree",
148
+ "with": {}
149
+ },
150
+ "runners_ephemeral_registration_tokens_terminal_idx": {
151
+ "name": "runners_ephemeral_registration_tokens_terminal_idx",
152
+ "columns": [
153
+ {
154
+ "expression": "coalesce(\"consumed_at\", \"expires_at\")",
155
+ "asc": true,
156
+ "isExpression": true,
157
+ "nulls": "last"
158
+ },
159
+ {
160
+ "expression": "id",
161
+ "isExpression": false,
162
+ "asc": true,
163
+ "nulls": "last"
164
+ }
165
+ ],
166
+ "isUnique": false,
167
+ "concurrently": false,
168
+ "method": "btree",
169
+ "with": {}
170
+ }
171
+ },
172
+ "foreignKeys": {},
173
+ "compositePrimaryKeys": {},
174
+ "uniqueConstraints": {},
175
+ "policies": {},
176
+ "checkConstraints": {},
177
+ "isRLSEnabled": false
178
+ },
179
+ "public.runners_manual_registration_tokens": {
180
+ "name": "runners_manual_registration_tokens",
181
+ "schema": "",
182
+ "columns": {
183
+ "id": {
184
+ "name": "id",
185
+ "type": "uuid",
186
+ "primaryKey": true,
187
+ "notNull": true,
188
+ "default": "uuidv7()"
189
+ },
190
+ "workspace_id": {
191
+ "name": "workspace_id",
192
+ "type": "uuid",
193
+ "primaryKey": false,
194
+ "notNull": true
195
+ },
196
+ "hashed_token": {
197
+ "name": "hashed_token",
198
+ "type": "text",
199
+ "primaryKey": false,
200
+ "notNull": true
201
+ },
202
+ "prefix": {
203
+ "name": "prefix",
204
+ "type": "text",
205
+ "primaryKey": false,
206
+ "notNull": true
207
+ },
208
+ "name": {
209
+ "name": "name",
210
+ "type": "text",
211
+ "primaryKey": false,
212
+ "notNull": false
213
+ },
214
+ "expires_at": {
215
+ "name": "expires_at",
216
+ "type": "timestamp with time zone",
217
+ "primaryKey": false,
218
+ "notNull": false
219
+ },
220
+ "revoked_at": {
221
+ "name": "revoked_at",
222
+ "type": "timestamp with time zone",
223
+ "primaryKey": false,
224
+ "notNull": false
225
+ },
226
+ "created_at": {
227
+ "name": "created_at",
228
+ "type": "timestamp with time zone",
229
+ "primaryKey": false,
230
+ "notNull": true,
231
+ "default": "now()"
232
+ },
233
+ "updated_at": {
234
+ "name": "updated_at",
235
+ "type": "timestamp with time zone",
236
+ "primaryKey": false,
237
+ "notNull": true,
238
+ "default": "now()"
239
+ }
240
+ },
241
+ "indexes": {
242
+ "runners_manual_registration_tokens_hashed_token_unique": {
243
+ "name": "runners_manual_registration_tokens_hashed_token_unique",
244
+ "columns": [
245
+ {
246
+ "expression": "hashed_token",
247
+ "isExpression": false,
248
+ "asc": true,
249
+ "nulls": "last"
250
+ }
251
+ ],
252
+ "isUnique": true,
253
+ "concurrently": false,
254
+ "method": "btree",
255
+ "with": {}
256
+ },
257
+ "runners_manual_registration_tokens_workspace_id_idx": {
258
+ "name": "runners_manual_registration_tokens_workspace_id_idx",
259
+ "columns": [
260
+ {
261
+ "expression": "workspace_id",
262
+ "isExpression": false,
263
+ "asc": true,
264
+ "nulls": "last"
265
+ }
266
+ ],
267
+ "isUnique": false,
268
+ "concurrently": false,
269
+ "method": "btree",
270
+ "with": {}
271
+ }
272
+ },
273
+ "foreignKeys": {},
274
+ "compositePrimaryKeys": {},
275
+ "uniqueConstraints": {},
276
+ "policies": {},
277
+ "checkConstraints": {},
278
+ "isRLSEnabled": false
279
+ },
280
+ "public.runners_outbox": {
281
+ "name": "runners_outbox",
282
+ "schema": "",
283
+ "columns": {
284
+ "id": {
285
+ "name": "id",
286
+ "type": "uuid",
287
+ "primaryKey": true,
288
+ "notNull": true,
289
+ "default": "uuidv7()"
290
+ },
291
+ "event_type": {
292
+ "name": "event_type",
293
+ "type": "text",
294
+ "primaryKey": false,
295
+ "notNull": true
296
+ },
297
+ "ordering_key": {
298
+ "name": "ordering_key",
299
+ "type": "text",
300
+ "primaryKey": false,
301
+ "notNull": false
302
+ },
303
+ "payload": {
304
+ "name": "payload",
305
+ "type": "jsonb",
306
+ "primaryKey": false,
307
+ "notNull": true
308
+ },
309
+ "created_at": {
310
+ "name": "created_at",
311
+ "type": "timestamp with time zone",
312
+ "primaryKey": false,
313
+ "notNull": true,
314
+ "default": "now()"
315
+ },
316
+ "dispatched_at": {
317
+ "name": "dispatched_at",
318
+ "type": "timestamp with time zone",
319
+ "primaryKey": false,
320
+ "notNull": false
321
+ },
322
+ "dispatch_attempts": {
323
+ "name": "dispatch_attempts",
324
+ "type": "integer",
325
+ "primaryKey": false,
326
+ "notNull": true,
327
+ "default": 0
328
+ },
329
+ "next_dispatch_at": {
330
+ "name": "next_dispatch_at",
331
+ "type": "timestamp with time zone",
332
+ "primaryKey": false,
333
+ "notNull": true,
334
+ "default": "now()"
335
+ },
336
+ "last_dispatch_error": {
337
+ "name": "last_dispatch_error",
338
+ "type": "jsonb",
339
+ "primaryKey": false,
340
+ "notNull": false
341
+ },
342
+ "last_dispatch_failed_at": {
343
+ "name": "last_dispatch_failed_at",
344
+ "type": "timestamp with time zone",
345
+ "primaryKey": false,
346
+ "notNull": false
347
+ },
348
+ "dead_lettered_at": {
349
+ "name": "dead_lettered_at",
350
+ "type": "timestamp with time zone",
351
+ "primaryKey": false,
352
+ "notNull": false
353
+ }
354
+ },
355
+ "indexes": {
356
+ "runners_outbox_pending_idx": {
357
+ "name": "runners_outbox_pending_idx",
358
+ "columns": [
359
+ {
360
+ "expression": "next_dispatch_at",
361
+ "isExpression": false,
362
+ "asc": true,
363
+ "nulls": "last"
364
+ },
365
+ {
366
+ "expression": "created_at",
367
+ "isExpression": false,
368
+ "asc": true,
369
+ "nulls": "last"
370
+ }
371
+ ],
372
+ "isUnique": false,
373
+ "where": "\"dispatched_at\" IS NULL AND \"dead_lettered_at\" IS NULL",
374
+ "concurrently": false,
375
+ "method": "btree",
376
+ "with": {}
377
+ },
378
+ "runners_outbox_dispatched_retention_idx": {
379
+ "name": "runners_outbox_dispatched_retention_idx",
380
+ "columns": [
381
+ {
382
+ "expression": "dispatched_at",
383
+ "isExpression": false,
384
+ "asc": true,
385
+ "nulls": "last"
386
+ },
387
+ {
388
+ "expression": "id",
389
+ "isExpression": false,
390
+ "asc": true,
391
+ "nulls": "last"
392
+ }
393
+ ],
394
+ "isUnique": false,
395
+ "where": "\"dispatched_at\" IS NOT NULL",
396
+ "concurrently": false,
397
+ "method": "btree",
398
+ "with": {}
399
+ }
400
+ },
401
+ "foreignKeys": {},
402
+ "compositePrimaryKeys": {},
403
+ "uniqueConstraints": {},
404
+ "policies": {},
405
+ "checkConstraints": {},
406
+ "isRLSEnabled": false
407
+ },
408
+ "public.runners_pending_jobs": {
409
+ "name": "runners_pending_jobs",
410
+ "schema": "",
411
+ "columns": {
412
+ "id": {
413
+ "name": "id",
414
+ "type": "uuid",
415
+ "primaryKey": true,
416
+ "notNull": true,
417
+ "default": "uuidv7()"
418
+ },
419
+ "workspace_id": {
420
+ "name": "workspace_id",
421
+ "type": "uuid",
422
+ "primaryKey": false,
423
+ "notNull": true
424
+ },
425
+ "workflow_run_id": {
426
+ "name": "workflow_run_id",
427
+ "type": "uuid",
428
+ "primaryKey": false,
429
+ "notNull": true
430
+ },
431
+ "workflow_run_attempt_id": {
432
+ "name": "workflow_run_attempt_id",
433
+ "type": "uuid",
434
+ "primaryKey": false,
435
+ "notNull": true
436
+ },
437
+ "job_id": {
438
+ "name": "job_id",
439
+ "type": "uuid",
440
+ "primaryKey": false,
441
+ "notNull": true
442
+ },
443
+ "job_execution_id": {
444
+ "name": "job_execution_id",
445
+ "type": "uuid",
446
+ "primaryKey": false,
447
+ "notNull": true
448
+ },
449
+ "project_id": {
450
+ "name": "project_id",
451
+ "type": "uuid",
452
+ "primaryKey": false,
453
+ "notNull": true
454
+ },
455
+ "required_labels": {
456
+ "name": "required_labels",
457
+ "type": "text[]",
458
+ "primaryKey": false,
459
+ "notNull": true
460
+ },
461
+ "created_at": {
462
+ "name": "created_at",
463
+ "type": "timestamp with time zone",
464
+ "primaryKey": false,
465
+ "notNull": true,
466
+ "default": "now()"
467
+ }
468
+ },
469
+ "indexes": {
470
+ "runners_pending_jobs_workspace_created_idx": {
471
+ "name": "runners_pending_jobs_workspace_created_idx",
472
+ "columns": [
473
+ {
474
+ "expression": "workspace_id",
475
+ "isExpression": false,
476
+ "asc": true,
477
+ "nulls": "last"
478
+ },
479
+ {
480
+ "expression": "created_at",
481
+ "isExpression": false,
482
+ "asc": true,
483
+ "nulls": "last"
484
+ }
485
+ ],
486
+ "isUnique": false,
487
+ "concurrently": false,
488
+ "method": "btree",
489
+ "with": {}
490
+ },
491
+ "runners_pending_jobs_job_id_idx": {
492
+ "name": "runners_pending_jobs_job_id_idx",
493
+ "columns": [
494
+ {
495
+ "expression": "job_id",
496
+ "isExpression": false,
497
+ "asc": true,
498
+ "nulls": "last"
499
+ }
500
+ ],
501
+ "isUnique": false,
502
+ "concurrently": false,
503
+ "method": "btree",
504
+ "with": {}
505
+ }
506
+ },
507
+ "foreignKeys": {},
508
+ "compositePrimaryKeys": {},
509
+ "uniqueConstraints": {
510
+ "runners_pending_jobs_job_execution_id_unique": {
511
+ "name": "runners_pending_jobs_job_execution_id_unique",
512
+ "nullsNotDistinct": false,
513
+ "columns": ["job_execution_id"]
514
+ }
515
+ },
516
+ "policies": {},
517
+ "checkConstraints": {},
518
+ "isRLSEnabled": false
519
+ },
520
+ "public.runners_provisioner_capability_snapshots": {
521
+ "name": "runners_provisioner_capability_snapshots",
522
+ "schema": "",
523
+ "columns": {
524
+ "id": {
525
+ "name": "id",
526
+ "type": "uuid",
527
+ "primaryKey": true,
528
+ "notNull": true,
529
+ "default": "uuidv7()"
530
+ },
531
+ "workspace_id": {
532
+ "name": "workspace_id",
533
+ "type": "uuid",
534
+ "primaryKey": false,
535
+ "notNull": true
536
+ },
537
+ "provisioner_id": {
538
+ "name": "provisioner_id",
539
+ "type": "uuid",
540
+ "primaryKey": false,
541
+ "notNull": true
542
+ },
543
+ "template_key": {
544
+ "name": "template_key",
545
+ "type": "text",
546
+ "primaryKey": false,
547
+ "notNull": true
548
+ },
549
+ "labels": {
550
+ "name": "labels",
551
+ "type": "text[]",
552
+ "primaryKey": false,
553
+ "notNull": true
554
+ },
555
+ "available_slots": {
556
+ "name": "available_slots",
557
+ "type": "integer",
558
+ "primaryKey": false,
559
+ "notNull": true
560
+ },
561
+ "starting": {
562
+ "name": "starting",
563
+ "type": "integer",
564
+ "primaryKey": false,
565
+ "notNull": true
566
+ },
567
+ "running": {
568
+ "name": "running",
569
+ "type": "integer",
570
+ "primaryKey": false,
571
+ "notNull": true
572
+ },
573
+ "advertised_at": {
574
+ "name": "advertised_at",
575
+ "type": "timestamp with time zone",
576
+ "primaryKey": false,
577
+ "notNull": true,
578
+ "default": "now()"
579
+ },
580
+ "created_at": {
581
+ "name": "created_at",
582
+ "type": "timestamp with time zone",
583
+ "primaryKey": false,
584
+ "notNull": true,
585
+ "default": "now()"
586
+ }
587
+ },
588
+ "indexes": {
589
+ "runners_provisioner_capability_snapshots_workspace_active_idx": {
590
+ "name": "runners_provisioner_capability_snapshots_workspace_active_idx",
591
+ "columns": [
592
+ {
593
+ "expression": "workspace_id",
594
+ "isExpression": false,
595
+ "asc": true,
596
+ "nulls": "last"
597
+ },
598
+ {
599
+ "expression": "advertised_at",
600
+ "isExpression": false,
601
+ "asc": true,
602
+ "nulls": "last"
603
+ }
604
+ ],
605
+ "isUnique": false,
606
+ "concurrently": false,
607
+ "method": "btree",
608
+ "with": {}
609
+ },
610
+ "runners_provisioner_capability_snapshots_provisioner_idx": {
611
+ "name": "runners_provisioner_capability_snapshots_provisioner_idx",
612
+ "columns": [
613
+ {
614
+ "expression": "provisioner_id",
615
+ "isExpression": false,
616
+ "asc": true,
617
+ "nulls": "last"
618
+ }
619
+ ],
620
+ "isUnique": false,
621
+ "concurrently": false,
622
+ "method": "btree",
623
+ "with": {}
624
+ }
625
+ },
626
+ "foreignKeys": {},
627
+ "compositePrimaryKeys": {},
628
+ "uniqueConstraints": {},
629
+ "policies": {},
630
+ "checkConstraints": {},
631
+ "isRLSEnabled": false
632
+ },
633
+ "public.runners_provisioner_tokens": {
634
+ "name": "runners_provisioner_tokens",
635
+ "schema": "",
636
+ "columns": {
637
+ "id": {
638
+ "name": "id",
639
+ "type": "uuid",
640
+ "primaryKey": true,
641
+ "notNull": true,
642
+ "default": "uuidv7()"
643
+ },
644
+ "scope": {
645
+ "name": "scope",
646
+ "type": "runners_provisioner_scope",
647
+ "typeSchema": "public",
648
+ "primaryKey": false,
649
+ "notNull": true
650
+ },
651
+ "workspace_id": {
652
+ "name": "workspace_id",
653
+ "type": "uuid",
654
+ "primaryKey": false,
655
+ "notNull": false
656
+ },
657
+ "hashed_token": {
658
+ "name": "hashed_token",
659
+ "type": "text",
660
+ "primaryKey": false,
661
+ "notNull": true
662
+ },
663
+ "prefix": {
664
+ "name": "prefix",
665
+ "type": "text",
666
+ "primaryKey": false,
667
+ "notNull": true
668
+ },
669
+ "name": {
670
+ "name": "name",
671
+ "type": "text",
672
+ "primaryKey": false,
673
+ "notNull": false
674
+ },
675
+ "created_by_user_id": {
676
+ "name": "created_by_user_id",
677
+ "type": "uuid",
678
+ "primaryKey": false,
679
+ "notNull": true
680
+ },
681
+ "revoked_by_user_id": {
682
+ "name": "revoked_by_user_id",
683
+ "type": "uuid",
684
+ "primaryKey": false,
685
+ "notNull": false
686
+ },
687
+ "expires_at": {
688
+ "name": "expires_at",
689
+ "type": "timestamp with time zone",
690
+ "primaryKey": false,
691
+ "notNull": false
692
+ },
693
+ "revoked_at": {
694
+ "name": "revoked_at",
695
+ "type": "timestamp with time zone",
696
+ "primaryKey": false,
697
+ "notNull": false
698
+ },
699
+ "last_seen_at": {
700
+ "name": "last_seen_at",
701
+ "type": "timestamp with time zone",
702
+ "primaryKey": false,
703
+ "notNull": false
704
+ },
705
+ "created_at": {
706
+ "name": "created_at",
707
+ "type": "timestamp with time zone",
708
+ "primaryKey": false,
709
+ "notNull": true,
710
+ "default": "now()"
711
+ },
712
+ "updated_at": {
713
+ "name": "updated_at",
714
+ "type": "timestamp with time zone",
715
+ "primaryKey": false,
716
+ "notNull": true,
717
+ "default": "now()"
718
+ }
719
+ },
720
+ "indexes": {
721
+ "runners_provisioner_tokens_hashed_token_unique": {
722
+ "name": "runners_provisioner_tokens_hashed_token_unique",
723
+ "columns": [
724
+ {
725
+ "expression": "hashed_token",
726
+ "isExpression": false,
727
+ "asc": true,
728
+ "nulls": "last"
729
+ }
730
+ ],
731
+ "isUnique": true,
732
+ "concurrently": false,
733
+ "method": "btree",
734
+ "with": {}
735
+ },
736
+ "runners_provisioner_tokens_workspace_last_seen_idx": {
737
+ "name": "runners_provisioner_tokens_workspace_last_seen_idx",
738
+ "columns": [
739
+ {
740
+ "expression": "workspace_id",
741
+ "isExpression": false,
742
+ "asc": true,
743
+ "nulls": "last"
744
+ },
745
+ {
746
+ "expression": "last_seen_at",
747
+ "isExpression": false,
748
+ "asc": false,
749
+ "nulls": "last"
750
+ },
751
+ {
752
+ "expression": "id",
753
+ "isExpression": false,
754
+ "asc": false,
755
+ "nulls": "last"
756
+ }
757
+ ],
758
+ "isUnique": false,
759
+ "concurrently": false,
760
+ "method": "btree",
761
+ "with": {}
762
+ }
763
+ },
764
+ "foreignKeys": {},
765
+ "compositePrimaryKeys": {},
766
+ "uniqueConstraints": {},
767
+ "policies": {},
768
+ "checkConstraints": {
769
+ "runners_provisioner_tokens_scope_workspace_ck": {
770
+ "name": "runners_provisioner_tokens_scope_workspace_ck",
771
+ "value": "(scope = 'workspace' AND workspace_id IS NOT NULL) OR (scope = 'installation' AND workspace_id IS NULL)"
772
+ }
773
+ },
774
+ "isRLSEnabled": false
775
+ },
776
+ "public.runners_rate_limits": {
777
+ "name": "runners_rate_limits",
778
+ "schema": "",
779
+ "columns": {
780
+ "action": {
781
+ "name": "action",
782
+ "type": "text",
783
+ "primaryKey": false,
784
+ "notNull": true
785
+ },
786
+ "scope": {
787
+ "name": "scope",
788
+ "type": "text",
789
+ "primaryKey": false,
790
+ "notNull": true
791
+ },
792
+ "identifier_hmac": {
793
+ "name": "identifier_hmac",
794
+ "type": "text",
795
+ "primaryKey": false,
796
+ "notNull": true
797
+ },
798
+ "window_start": {
799
+ "name": "window_start",
800
+ "type": "timestamp with time zone",
801
+ "primaryKey": false,
802
+ "notNull": true
803
+ },
804
+ "count": {
805
+ "name": "count",
806
+ "type": "integer",
807
+ "primaryKey": false,
808
+ "notNull": true,
809
+ "default": 1
810
+ },
811
+ "expires_at": {
812
+ "name": "expires_at",
813
+ "type": "timestamp with time zone",
814
+ "primaryKey": false,
815
+ "notNull": true
816
+ },
817
+ "created_at": {
818
+ "name": "created_at",
819
+ "type": "timestamp with time zone",
820
+ "primaryKey": false,
821
+ "notNull": true,
822
+ "default": "now()"
823
+ },
824
+ "updated_at": {
825
+ "name": "updated_at",
826
+ "type": "timestamp with time zone",
827
+ "primaryKey": false,
828
+ "notNull": true,
829
+ "default": "now()"
830
+ }
831
+ },
832
+ "indexes": {
833
+ "runners_rate_limits_window_unique": {
834
+ "name": "runners_rate_limits_window_unique",
835
+ "columns": [
836
+ {
837
+ "expression": "action",
838
+ "isExpression": false,
839
+ "asc": true,
840
+ "nulls": "last"
841
+ },
842
+ {
843
+ "expression": "scope",
844
+ "isExpression": false,
845
+ "asc": true,
846
+ "nulls": "last"
847
+ },
848
+ {
849
+ "expression": "identifier_hmac",
850
+ "isExpression": false,
851
+ "asc": true,
852
+ "nulls": "last"
853
+ },
854
+ {
855
+ "expression": "window_start",
856
+ "isExpression": false,
857
+ "asc": true,
858
+ "nulls": "last"
859
+ }
860
+ ],
861
+ "isUnique": true,
862
+ "concurrently": false,
863
+ "method": "btree",
864
+ "with": {}
865
+ },
866
+ "runners_rate_limits_expires_at_idx": {
867
+ "name": "runners_rate_limits_expires_at_idx",
868
+ "columns": [
869
+ {
870
+ "expression": "expires_at",
871
+ "isExpression": false,
872
+ "asc": true,
873
+ "nulls": "last"
874
+ }
875
+ ],
876
+ "isUnique": false,
877
+ "concurrently": false,
878
+ "method": "btree",
879
+ "with": {}
880
+ }
881
+ },
882
+ "foreignKeys": {},
883
+ "compositePrimaryKeys": {},
884
+ "uniqueConstraints": {},
885
+ "policies": {},
886
+ "checkConstraints": {},
887
+ "isRLSEnabled": false
888
+ },
889
+ "public.runners_reservations": {
890
+ "name": "runners_reservations",
891
+ "schema": "",
892
+ "columns": {
893
+ "id": {
894
+ "name": "id",
895
+ "type": "uuid",
896
+ "primaryKey": true,
897
+ "notNull": true,
898
+ "default": "uuidv7()"
899
+ },
900
+ "workspace_id": {
901
+ "name": "workspace_id",
902
+ "type": "uuid",
903
+ "primaryKey": false,
904
+ "notNull": true
905
+ },
906
+ "provisioner_id": {
907
+ "name": "provisioner_id",
908
+ "type": "uuid",
909
+ "primaryKey": false,
910
+ "notNull": true
911
+ },
912
+ "required_labels": {
913
+ "name": "required_labels",
914
+ "type": "text[]",
915
+ "primaryKey": false,
916
+ "notNull": true
917
+ },
918
+ "count": {
919
+ "name": "count",
920
+ "type": "integer",
921
+ "primaryKey": false,
922
+ "notNull": true
923
+ },
924
+ "created_at": {
925
+ "name": "created_at",
926
+ "type": "timestamp with time zone",
927
+ "primaryKey": false,
928
+ "notNull": true,
929
+ "default": "now()"
930
+ },
931
+ "expires_at": {
932
+ "name": "expires_at",
933
+ "type": "timestamp with time zone",
934
+ "primaryKey": false,
935
+ "notNull": true
936
+ }
937
+ },
938
+ "indexes": {
939
+ "runners_reservations_workspace_expires_idx": {
940
+ "name": "runners_reservations_workspace_expires_idx",
941
+ "columns": [
942
+ {
943
+ "expression": "workspace_id",
944
+ "isExpression": false,
945
+ "asc": true,
946
+ "nulls": "last"
947
+ },
948
+ {
949
+ "expression": "expires_at",
950
+ "isExpression": false,
951
+ "asc": true,
952
+ "nulls": "last"
953
+ }
954
+ ],
955
+ "isUnique": false,
956
+ "concurrently": false,
957
+ "method": "btree",
958
+ "with": {}
959
+ },
960
+ "runners_reservations_expires_idx": {
961
+ "name": "runners_reservations_expires_idx",
962
+ "columns": [
963
+ {
964
+ "expression": "expires_at",
965
+ "isExpression": false,
966
+ "asc": true,
967
+ "nulls": "last"
968
+ }
969
+ ],
970
+ "isUnique": false,
971
+ "concurrently": false,
972
+ "method": "btree",
973
+ "with": {}
974
+ }
975
+ },
976
+ "foreignKeys": {},
977
+ "compositePrimaryKeys": {},
978
+ "uniqueConstraints": {},
979
+ "policies": {},
980
+ "checkConstraints": {
981
+ "runners_reservations_count_positive_ck": {
982
+ "name": "runners_reservations_count_positive_ck",
983
+ "value": "\"runners_reservations\".\"count\" > 0"
984
+ }
985
+ },
986
+ "isRLSEnabled": false
987
+ },
988
+ "public.runners_runner_activation_tokens": {
989
+ "name": "runners_runner_activation_tokens",
990
+ "schema": "",
991
+ "columns": {
992
+ "id": {
993
+ "name": "id",
994
+ "type": "uuid",
995
+ "primaryKey": true,
996
+ "notNull": true,
997
+ "default": "uuidv7()"
998
+ },
999
+ "runner_instance_id": {
1000
+ "name": "runner_instance_id",
1001
+ "type": "uuid",
1002
+ "primaryKey": false,
1003
+ "notNull": true
1004
+ },
1005
+ "hashed_token": {
1006
+ "name": "hashed_token",
1007
+ "type": "text",
1008
+ "primaryKey": false,
1009
+ "notNull": true
1010
+ },
1011
+ "prefix": {
1012
+ "name": "prefix",
1013
+ "type": "text",
1014
+ "primaryKey": false,
1015
+ "notNull": true
1016
+ },
1017
+ "expires_at": {
1018
+ "name": "expires_at",
1019
+ "type": "timestamp with time zone",
1020
+ "primaryKey": false,
1021
+ "notNull": true
1022
+ },
1023
+ "consumed_at": {
1024
+ "name": "consumed_at",
1025
+ "type": "timestamp with time zone",
1026
+ "primaryKey": false,
1027
+ "notNull": false
1028
+ },
1029
+ "revoked_at": {
1030
+ "name": "revoked_at",
1031
+ "type": "timestamp with time zone",
1032
+ "primaryKey": false,
1033
+ "notNull": false
1034
+ },
1035
+ "consumed_session_id": {
1036
+ "name": "consumed_session_id",
1037
+ "type": "uuid",
1038
+ "primaryKey": false,
1039
+ "notNull": false
1040
+ },
1041
+ "created_at": {
1042
+ "name": "created_at",
1043
+ "type": "timestamp with time zone",
1044
+ "primaryKey": false,
1045
+ "notNull": true,
1046
+ "default": "now()"
1047
+ }
1048
+ },
1049
+ "indexes": {
1050
+ "runners_runner_activation_tokens_hashed_token_unique": {
1051
+ "name": "runners_runner_activation_tokens_hashed_token_unique",
1052
+ "columns": [
1053
+ {
1054
+ "expression": "hashed_token",
1055
+ "isExpression": false,
1056
+ "asc": true,
1057
+ "nulls": "last"
1058
+ }
1059
+ ],
1060
+ "isUnique": true,
1061
+ "concurrently": false,
1062
+ "method": "btree",
1063
+ "with": {}
1064
+ },
1065
+ "runners_runner_activation_tokens_runner_instance_idx": {
1066
+ "name": "runners_runner_activation_tokens_runner_instance_idx",
1067
+ "columns": [
1068
+ {
1069
+ "expression": "runner_instance_id",
1070
+ "isExpression": false,
1071
+ "asc": true,
1072
+ "nulls": "last"
1073
+ }
1074
+ ],
1075
+ "isUnique": false,
1076
+ "concurrently": false,
1077
+ "method": "btree",
1078
+ "with": {}
1079
+ }
1080
+ },
1081
+ "foreignKeys": {},
1082
+ "compositePrimaryKeys": {},
1083
+ "uniqueConstraints": {},
1084
+ "policies": {},
1085
+ "checkConstraints": {},
1086
+ "isRLSEnabled": false
1087
+ },
1088
+ "public.runners_runner_bootstrap_tokens": {
1089
+ "name": "runners_runner_bootstrap_tokens",
1090
+ "schema": "",
1091
+ "columns": {
1092
+ "id": {
1093
+ "name": "id",
1094
+ "type": "uuid",
1095
+ "primaryKey": true,
1096
+ "notNull": true,
1097
+ "default": "uuidv7()"
1098
+ },
1099
+ "runner_instance_id": {
1100
+ "name": "runner_instance_id",
1101
+ "type": "uuid",
1102
+ "primaryKey": false,
1103
+ "notNull": true
1104
+ },
1105
+ "provisioner_id": {
1106
+ "name": "provisioner_id",
1107
+ "type": "uuid",
1108
+ "primaryKey": false,
1109
+ "notNull": true
1110
+ },
1111
+ "hashed_token": {
1112
+ "name": "hashed_token",
1113
+ "type": "text",
1114
+ "primaryKey": false,
1115
+ "notNull": true
1116
+ },
1117
+ "prefix": {
1118
+ "name": "prefix",
1119
+ "type": "text",
1120
+ "primaryKey": false,
1121
+ "notNull": true
1122
+ },
1123
+ "expires_at": {
1124
+ "name": "expires_at",
1125
+ "type": "timestamp with time zone",
1126
+ "primaryKey": false,
1127
+ "notNull": true
1128
+ },
1129
+ "consumed_at": {
1130
+ "name": "consumed_at",
1131
+ "type": "timestamp with time zone",
1132
+ "primaryKey": false,
1133
+ "notNull": false
1134
+ },
1135
+ "revoked_at": {
1136
+ "name": "revoked_at",
1137
+ "type": "timestamp with time zone",
1138
+ "primaryKey": false,
1139
+ "notNull": false
1140
+ },
1141
+ "created_at": {
1142
+ "name": "created_at",
1143
+ "type": "timestamp with time zone",
1144
+ "primaryKey": false,
1145
+ "notNull": true,
1146
+ "default": "now()"
1147
+ }
1148
+ },
1149
+ "indexes": {
1150
+ "runners_runner_bootstrap_tokens_hashed_token_unique": {
1151
+ "name": "runners_runner_bootstrap_tokens_hashed_token_unique",
1152
+ "columns": [
1153
+ {
1154
+ "expression": "hashed_token",
1155
+ "isExpression": false,
1156
+ "asc": true,
1157
+ "nulls": "last"
1158
+ }
1159
+ ],
1160
+ "isUnique": true,
1161
+ "concurrently": false,
1162
+ "method": "btree",
1163
+ "with": {}
1164
+ },
1165
+ "runners_runner_bootstrap_tokens_runner_instance_idx": {
1166
+ "name": "runners_runner_bootstrap_tokens_runner_instance_idx",
1167
+ "columns": [
1168
+ {
1169
+ "expression": "runner_instance_id",
1170
+ "isExpression": false,
1171
+ "asc": true,
1172
+ "nulls": "last"
1173
+ }
1174
+ ],
1175
+ "isUnique": false,
1176
+ "concurrently": false,
1177
+ "method": "btree",
1178
+ "with": {}
1179
+ }
1180
+ },
1181
+ "foreignKeys": {},
1182
+ "compositePrimaryKeys": {},
1183
+ "uniqueConstraints": {},
1184
+ "policies": {},
1185
+ "checkConstraints": {},
1186
+ "isRLSEnabled": false
1187
+ },
1188
+ "public.runners_runner_control_sessions": {
1189
+ "name": "runners_runner_control_sessions",
1190
+ "schema": "",
1191
+ "columns": {
1192
+ "id": {
1193
+ "name": "id",
1194
+ "type": "uuid",
1195
+ "primaryKey": true,
1196
+ "notNull": true,
1197
+ "default": "uuidv7()"
1198
+ },
1199
+ "runner_instance_id": {
1200
+ "name": "runner_instance_id",
1201
+ "type": "uuid",
1202
+ "primaryKey": false,
1203
+ "notNull": true
1204
+ },
1205
+ "provisioner_id": {
1206
+ "name": "provisioner_id",
1207
+ "type": "uuid",
1208
+ "primaryKey": false,
1209
+ "notNull": true
1210
+ },
1211
+ "hashed_token": {
1212
+ "name": "hashed_token",
1213
+ "type": "text",
1214
+ "primaryKey": false,
1215
+ "notNull": true
1216
+ },
1217
+ "prefix": {
1218
+ "name": "prefix",
1219
+ "type": "text",
1220
+ "primaryKey": false,
1221
+ "notNull": true
1222
+ },
1223
+ "expires_at": {
1224
+ "name": "expires_at",
1225
+ "type": "timestamp with time zone",
1226
+ "primaryKey": false,
1227
+ "notNull": true
1228
+ },
1229
+ "last_seen_at": {
1230
+ "name": "last_seen_at",
1231
+ "type": "timestamp with time zone",
1232
+ "primaryKey": false,
1233
+ "notNull": true,
1234
+ "default": "now()"
1235
+ },
1236
+ "closed_at": {
1237
+ "name": "closed_at",
1238
+ "type": "timestamp with time zone",
1239
+ "primaryKey": false,
1240
+ "notNull": false
1241
+ },
1242
+ "close_reason": {
1243
+ "name": "close_reason",
1244
+ "type": "text",
1245
+ "primaryKey": false,
1246
+ "notNull": false
1247
+ },
1248
+ "created_at": {
1249
+ "name": "created_at",
1250
+ "type": "timestamp with time zone",
1251
+ "primaryKey": false,
1252
+ "notNull": true,
1253
+ "default": "now()"
1254
+ }
1255
+ },
1256
+ "indexes": {
1257
+ "runners_runner_control_sessions_hashed_token_unique": {
1258
+ "name": "runners_runner_control_sessions_hashed_token_unique",
1259
+ "columns": [
1260
+ {
1261
+ "expression": "hashed_token",
1262
+ "isExpression": false,
1263
+ "asc": true,
1264
+ "nulls": "last"
1265
+ }
1266
+ ],
1267
+ "isUnique": true,
1268
+ "concurrently": false,
1269
+ "method": "btree",
1270
+ "with": {}
1271
+ },
1272
+ "runners_runner_control_sessions_active_runner_instance_unique": {
1273
+ "name": "runners_runner_control_sessions_active_runner_instance_unique",
1274
+ "columns": [
1275
+ {
1276
+ "expression": "runner_instance_id",
1277
+ "isExpression": false,
1278
+ "asc": true,
1279
+ "nulls": "last"
1280
+ }
1281
+ ],
1282
+ "isUnique": true,
1283
+ "where": "\"closed_at\" is null",
1284
+ "concurrently": false,
1285
+ "method": "btree",
1286
+ "with": {}
1287
+ },
1288
+ "runners_runner_control_sessions_runner_instance_idx": {
1289
+ "name": "runners_runner_control_sessions_runner_instance_idx",
1290
+ "columns": [
1291
+ {
1292
+ "expression": "runner_instance_id",
1293
+ "isExpression": false,
1294
+ "asc": true,
1295
+ "nulls": "last"
1296
+ }
1297
+ ],
1298
+ "isUnique": false,
1299
+ "concurrently": false,
1300
+ "method": "btree",
1301
+ "with": {}
1302
+ }
1303
+ },
1304
+ "foreignKeys": {},
1305
+ "compositePrimaryKeys": {},
1306
+ "uniqueConstraints": {},
1307
+ "policies": {},
1308
+ "checkConstraints": {},
1309
+ "isRLSEnabled": false
1310
+ },
1311
+ "public.runners_runner_instances": {
1312
+ "name": "runners_runner_instances",
1313
+ "schema": "",
1314
+ "columns": {
1315
+ "id": {
1316
+ "name": "id",
1317
+ "type": "uuid",
1318
+ "primaryKey": true,
1319
+ "notNull": true,
1320
+ "default": "uuidv7()"
1321
+ },
1322
+ "workspace_id": {
1323
+ "name": "workspace_id",
1324
+ "type": "uuid",
1325
+ "primaryKey": false,
1326
+ "notNull": false
1327
+ },
1328
+ "provisioner_id": {
1329
+ "name": "provisioner_id",
1330
+ "type": "uuid",
1331
+ "primaryKey": false,
1332
+ "notNull": true
1333
+ },
1334
+ "provider_runner_id": {
1335
+ "name": "provider_runner_id",
1336
+ "type": "text",
1337
+ "primaryKey": false,
1338
+ "notNull": false
1339
+ },
1340
+ "intended_reservation_id": {
1341
+ "name": "intended_reservation_id",
1342
+ "type": "uuid",
1343
+ "primaryKey": false,
1344
+ "notNull": false
1345
+ },
1346
+ "reservation_id": {
1347
+ "name": "reservation_id",
1348
+ "type": "uuid",
1349
+ "primaryKey": false,
1350
+ "notNull": false
1351
+ },
1352
+ "assigned_at": {
1353
+ "name": "assigned_at",
1354
+ "type": "timestamp with time zone",
1355
+ "primaryKey": false,
1356
+ "notNull": false
1357
+ },
1358
+ "template_key": {
1359
+ "name": "template_key",
1360
+ "type": "text",
1361
+ "primaryKey": false,
1362
+ "notNull": false
1363
+ },
1364
+ "labels": {
1365
+ "name": "labels",
1366
+ "type": "text[]",
1367
+ "primaryKey": false,
1368
+ "notNull": true,
1369
+ "default": "'{}'"
1370
+ },
1371
+ "state": {
1372
+ "name": "state",
1373
+ "type": "runners_provider_runner_state",
1374
+ "typeSchema": "public",
1375
+ "primaryKey": false,
1376
+ "notNull": true
1377
+ },
1378
+ "reason": {
1379
+ "name": "reason",
1380
+ "type": "text",
1381
+ "primaryKey": false,
1382
+ "notNull": false
1383
+ },
1384
+ "runner_session_id": {
1385
+ "name": "runner_session_id",
1386
+ "type": "uuid",
1387
+ "primaryKey": false,
1388
+ "notNull": false
1389
+ },
1390
+ "provider_kind": {
1391
+ "name": "provider_kind",
1392
+ "type": "text",
1393
+ "primaryKey": false,
1394
+ "notNull": false
1395
+ },
1396
+ "protocol_version": {
1397
+ "name": "protocol_version",
1398
+ "type": "text",
1399
+ "primaryKey": false,
1400
+ "notNull": false
1401
+ },
1402
+ "capabilities": {
1403
+ "name": "capabilities",
1404
+ "type": "jsonb",
1405
+ "primaryKey": false,
1406
+ "notNull": false
1407
+ },
1408
+ "reported_at": {
1409
+ "name": "reported_at",
1410
+ "type": "timestamp with time zone",
1411
+ "primaryKey": false,
1412
+ "notNull": true
1413
+ },
1414
+ "started_at": {
1415
+ "name": "started_at",
1416
+ "type": "timestamp with time zone",
1417
+ "primaryKey": false,
1418
+ "notNull": false
1419
+ },
1420
+ "stopping_at": {
1421
+ "name": "stopping_at",
1422
+ "type": "timestamp with time zone",
1423
+ "primaryKey": false,
1424
+ "notNull": false
1425
+ },
1426
+ "stopped_at": {
1427
+ "name": "stopped_at",
1428
+ "type": "timestamp with time zone",
1429
+ "primaryKey": false,
1430
+ "notNull": false
1431
+ },
1432
+ "failed_at": {
1433
+ "name": "failed_at",
1434
+ "type": "timestamp with time zone",
1435
+ "primaryKey": false,
1436
+ "notNull": false
1437
+ },
1438
+ "terminated_at": {
1439
+ "name": "terminated_at",
1440
+ "type": "timestamp with time zone",
1441
+ "primaryKey": false,
1442
+ "notNull": false
1443
+ },
1444
+ "reservation_released_at": {
1445
+ "name": "reservation_released_at",
1446
+ "type": "timestamp with time zone",
1447
+ "primaryKey": false,
1448
+ "notNull": false
1449
+ },
1450
+ "created_at": {
1451
+ "name": "created_at",
1452
+ "type": "timestamp with time zone",
1453
+ "primaryKey": false,
1454
+ "notNull": true,
1455
+ "default": "now()"
1456
+ },
1457
+ "updated_at": {
1458
+ "name": "updated_at",
1459
+ "type": "timestamp with time zone",
1460
+ "primaryKey": false,
1461
+ "notNull": true,
1462
+ "default": "now()"
1463
+ }
1464
+ },
1465
+ "indexes": {
1466
+ "runners_runner_instances_provisioner_runner_unique": {
1467
+ "name": "runners_runner_instances_provisioner_runner_unique",
1468
+ "columns": [
1469
+ {
1470
+ "expression": "provisioner_id",
1471
+ "isExpression": false,
1472
+ "asc": true,
1473
+ "nulls": "last"
1474
+ },
1475
+ {
1476
+ "expression": "provider_runner_id",
1477
+ "isExpression": false,
1478
+ "asc": true,
1479
+ "nulls": "last"
1480
+ }
1481
+ ],
1482
+ "isUnique": true,
1483
+ "where": "\"runners_runner_instances\".\"provider_runner_id\" is not null",
1484
+ "concurrently": false,
1485
+ "method": "btree",
1486
+ "with": {}
1487
+ },
1488
+ "runners_runner_instances_workspace_state_updated_idx": {
1489
+ "name": "runners_runner_instances_workspace_state_updated_idx",
1490
+ "columns": [
1491
+ {
1492
+ "expression": "state",
1493
+ "isExpression": false,
1494
+ "asc": true,
1495
+ "nulls": "last"
1496
+ },
1497
+ {
1498
+ "expression": "updated_at",
1499
+ "isExpression": false,
1500
+ "asc": true,
1501
+ "nulls": "last"
1502
+ }
1503
+ ],
1504
+ "isUnique": false,
1505
+ "concurrently": false,
1506
+ "method": "btree",
1507
+ "with": {}
1508
+ },
1509
+ "runners_runner_instances_stale_reaper_idx": {
1510
+ "name": "runners_runner_instances_stale_reaper_idx",
1511
+ "columns": [
1512
+ {
1513
+ "expression": "state",
1514
+ "isExpression": false,
1515
+ "asc": true,
1516
+ "nulls": "last"
1517
+ },
1518
+ {
1519
+ "expression": "updated_at",
1520
+ "isExpression": false,
1521
+ "asc": true,
1522
+ "nulls": "last"
1523
+ },
1524
+ {
1525
+ "expression": "reported_at",
1526
+ "isExpression": false,
1527
+ "asc": true,
1528
+ "nulls": "last"
1529
+ }
1530
+ ],
1531
+ "isUnique": false,
1532
+ "concurrently": false,
1533
+ "method": "btree",
1534
+ "with": {}
1535
+ },
1536
+ "runners_runner_instances_provisioner_intended_reservation_idx": {
1537
+ "name": "runners_runner_instances_provisioner_intended_reservation_idx",
1538
+ "columns": [
1539
+ {
1540
+ "expression": "provisioner_id",
1541
+ "isExpression": false,
1542
+ "asc": true,
1543
+ "nulls": "last"
1544
+ },
1545
+ {
1546
+ "expression": "intended_reservation_id",
1547
+ "isExpression": false,
1548
+ "asc": true,
1549
+ "nulls": "last"
1550
+ }
1551
+ ],
1552
+ "isUnique": false,
1553
+ "where": "\"runners_runner_instances\".\"intended_reservation_id\" is not null and \"runners_runner_instances\".\"reservation_released_at\" is null",
1554
+ "concurrently": false,
1555
+ "method": "btree",
1556
+ "with": {}
1557
+ },
1558
+ "runners_runner_instances_provisioner_reservation_idx": {
1559
+ "name": "runners_runner_instances_provisioner_reservation_idx",
1560
+ "columns": [
1561
+ {
1562
+ "expression": "provisioner_id",
1563
+ "isExpression": false,
1564
+ "asc": true,
1565
+ "nulls": "last"
1566
+ },
1567
+ {
1568
+ "expression": "reservation_id",
1569
+ "isExpression": false,
1570
+ "asc": true,
1571
+ "nulls": "last"
1572
+ }
1573
+ ],
1574
+ "isUnique": false,
1575
+ "where": "\"runners_runner_instances\".\"reservation_id\" is not null",
1576
+ "concurrently": false,
1577
+ "method": "btree",
1578
+ "with": {}
1579
+ },
1580
+ "runners_runner_instances_active_template_counts_idx": {
1581
+ "name": "runners_runner_instances_active_template_counts_idx",
1582
+ "columns": [
1583
+ {
1584
+ "expression": "provisioner_id",
1585
+ "isExpression": false,
1586
+ "asc": true,
1587
+ "nulls": "last"
1588
+ },
1589
+ {
1590
+ "expression": "state",
1591
+ "isExpression": false,
1592
+ "asc": true,
1593
+ "nulls": "last"
1594
+ },
1595
+ {
1596
+ "expression": "template_key",
1597
+ "isExpression": false,
1598
+ "asc": true,
1599
+ "nulls": "last"
1600
+ }
1601
+ ],
1602
+ "isUnique": false,
1603
+ "where": "\"state\" in ('starting', 'running') and \"template_key\" is not null",
1604
+ "concurrently": false,
1605
+ "method": "btree",
1606
+ "with": {}
1607
+ }
1608
+ },
1609
+ "foreignKeys": {},
1610
+ "compositePrimaryKeys": {},
1611
+ "uniqueConstraints": {},
1612
+ "policies": {},
1613
+ "checkConstraints": {},
1614
+ "isRLSEnabled": false
1615
+ },
1616
+ "public.runners_runner_sessions": {
1617
+ "name": "runners_runner_sessions",
1618
+ "schema": "",
1619
+ "columns": {
1620
+ "id": {
1621
+ "name": "id",
1622
+ "type": "uuid",
1623
+ "primaryKey": true,
1624
+ "notNull": true,
1625
+ "default": "uuidv7()"
1626
+ },
1627
+ "workspace_id": {
1628
+ "name": "workspace_id",
1629
+ "type": "uuid",
1630
+ "primaryKey": false,
1631
+ "notNull": true
1632
+ },
1633
+ "scope": {
1634
+ "name": "scope",
1635
+ "type": "runners_runner_session_scope",
1636
+ "typeSchema": "public",
1637
+ "primaryKey": false,
1638
+ "notNull": true,
1639
+ "default": "'workspace'"
1640
+ },
1641
+ "registration_token_id": {
1642
+ "name": "registration_token_id",
1643
+ "type": "uuid",
1644
+ "primaryKey": false,
1645
+ "notNull": true
1646
+ },
1647
+ "registration_token_kind": {
1648
+ "name": "registration_token_kind",
1649
+ "type": "runners_runner_session_registration_token_kind",
1650
+ "typeSchema": "public",
1651
+ "primaryKey": false,
1652
+ "notNull": true
1653
+ },
1654
+ "runner_instance_id": {
1655
+ "name": "runner_instance_id",
1656
+ "type": "uuid",
1657
+ "primaryKey": false,
1658
+ "notNull": false
1659
+ },
1660
+ "provisioner_id": {
1661
+ "name": "provisioner_id",
1662
+ "type": "uuid",
1663
+ "primaryKey": false,
1664
+ "notNull": false
1665
+ },
1666
+ "provider_runner_id": {
1667
+ "name": "provider_runner_id",
1668
+ "type": "text",
1669
+ "primaryKey": false,
1670
+ "notNull": false
1671
+ },
1672
+ "labels": {
1673
+ "name": "labels",
1674
+ "type": "text[]",
1675
+ "primaryKey": false,
1676
+ "notNull": true
1677
+ },
1678
+ "tool_capabilities": {
1679
+ "name": "tool_capabilities",
1680
+ "type": "jsonb",
1681
+ "primaryKey": false,
1682
+ "notNull": false
1683
+ },
1684
+ "tool_capabilities_reported_at": {
1685
+ "name": "tool_capabilities_reported_at",
1686
+ "type": "timestamp with time zone",
1687
+ "primaryKey": false,
1688
+ "notNull": false
1689
+ },
1690
+ "max_claims": {
1691
+ "name": "max_claims",
1692
+ "type": "integer",
1693
+ "primaryKey": false,
1694
+ "notNull": false
1695
+ },
1696
+ "claims_used": {
1697
+ "name": "claims_used",
1698
+ "type": "integer",
1699
+ "primaryKey": false,
1700
+ "notNull": true,
1701
+ "default": 0
1702
+ },
1703
+ "revoked_at": {
1704
+ "name": "revoked_at",
1705
+ "type": "timestamp with time zone",
1706
+ "primaryKey": false,
1707
+ "notNull": false
1708
+ },
1709
+ "created_at": {
1710
+ "name": "created_at",
1711
+ "type": "timestamp with time zone",
1712
+ "primaryKey": false,
1713
+ "notNull": true,
1714
+ "default": "now()"
1715
+ },
1716
+ "updated_at": {
1717
+ "name": "updated_at",
1718
+ "type": "timestamp with time zone",
1719
+ "primaryKey": false,
1720
+ "notNull": true,
1721
+ "default": "now()"
1722
+ }
1723
+ },
1724
+ "indexes": {
1725
+ "runners_runner_sessions_kind_created_id_idx": {
1726
+ "name": "runners_runner_sessions_kind_created_id_idx",
1727
+ "columns": [
1728
+ {
1729
+ "expression": "registration_token_kind",
1730
+ "isExpression": false,
1731
+ "asc": true,
1732
+ "nulls": "last"
1733
+ },
1734
+ {
1735
+ "expression": "created_at",
1736
+ "isExpression": false,
1737
+ "asc": true,
1738
+ "nulls": "last"
1739
+ },
1740
+ {
1741
+ "expression": "id",
1742
+ "isExpression": false,
1743
+ "asc": true,
1744
+ "nulls": "last"
1745
+ }
1746
+ ],
1747
+ "isUnique": false,
1748
+ "concurrently": false,
1749
+ "method": "btree",
1750
+ "with": {}
1751
+ },
1752
+ "runners_runner_sessions_provider_runner_updated_idx": {
1753
+ "name": "runners_runner_sessions_provider_runner_updated_idx",
1754
+ "columns": [
1755
+ {
1756
+ "expression": "workspace_id",
1757
+ "isExpression": false,
1758
+ "asc": true,
1759
+ "nulls": "last"
1760
+ },
1761
+ {
1762
+ "expression": "provisioner_id",
1763
+ "isExpression": false,
1764
+ "asc": true,
1765
+ "nulls": "last"
1766
+ },
1767
+ {
1768
+ "expression": "provider_runner_id",
1769
+ "isExpression": false,
1770
+ "asc": true,
1771
+ "nulls": "last"
1772
+ },
1773
+ {
1774
+ "expression": "updated_at",
1775
+ "isExpression": false,
1776
+ "asc": true,
1777
+ "nulls": "last"
1778
+ }
1779
+ ],
1780
+ "isUnique": false,
1781
+ "where": "\"provisioner_id\" IS NOT NULL",
1782
+ "concurrently": false,
1783
+ "method": "btree",
1784
+ "with": {}
1785
+ }
1786
+ },
1787
+ "foreignKeys": {},
1788
+ "compositePrimaryKeys": {},
1789
+ "uniqueConstraints": {},
1790
+ "policies": {},
1791
+ "checkConstraints": {
1792
+ "runners_runner_sessions_claims_ck": {
1793
+ "name": "runners_runner_sessions_claims_ck",
1794
+ "value": "\"runners_runner_sessions\".\"claims_used\" >= 0 AND ((\"runners_runner_sessions\".\"registration_token_kind\" = 'manual' AND \"runners_runner_sessions\".\"max_claims\" IS NULL) OR (\"runners_runner_sessions\".\"registration_token_kind\" in ('ephemeral', 'activation') AND \"runners_runner_sessions\".\"max_claims\" IS NOT NULL AND \"runners_runner_sessions\".\"max_claims\" > 0 AND \"runners_runner_sessions\".\"claims_used\" <= \"runners_runner_sessions\".\"max_claims\"))"
1795
+ },
1796
+ "runners_runner_sessions_link_ck": {
1797
+ "name": "runners_runner_sessions_link_ck",
1798
+ "value": "((\"runners_runner_sessions\".\"registration_token_kind\" = 'manual' AND \"runners_runner_sessions\".\"runner_instance_id\" IS NULL AND \"runners_runner_sessions\".\"provisioner_id\" IS NULL AND \"runners_runner_sessions\".\"provider_runner_id\" IS NULL) OR (\"runners_runner_sessions\".\"registration_token_kind\" = 'ephemeral' AND \"runners_runner_sessions\".\"runner_instance_id\" IS NULL AND \"runners_runner_sessions\".\"provisioner_id\" IS NOT NULL AND \"runners_runner_sessions\".\"provider_runner_id\" IS NOT NULL) OR (\"runners_runner_sessions\".\"registration_token_kind\" = 'activation' AND \"runners_runner_sessions\".\"runner_instance_id\" IS NOT NULL AND \"runners_runner_sessions\".\"provisioner_id\" IS NOT NULL AND \"runners_runner_sessions\".\"provider_runner_id\" IS NOT NULL))"
1799
+ }
1800
+ },
1801
+ "isRLSEnabled": false
1802
+ },
1803
+ "public.runners_running_jobs": {
1804
+ "name": "runners_running_jobs",
1805
+ "schema": "",
1806
+ "columns": {
1807
+ "id": {
1808
+ "name": "id",
1809
+ "type": "uuid",
1810
+ "primaryKey": true,
1811
+ "notNull": true,
1812
+ "default": "uuidv7()"
1813
+ },
1814
+ "workspace_id": {
1815
+ "name": "workspace_id",
1816
+ "type": "uuid",
1817
+ "primaryKey": false,
1818
+ "notNull": true
1819
+ },
1820
+ "workflow_run_id": {
1821
+ "name": "workflow_run_id",
1822
+ "type": "uuid",
1823
+ "primaryKey": false,
1824
+ "notNull": true
1825
+ },
1826
+ "workflow_run_attempt_id": {
1827
+ "name": "workflow_run_attempt_id",
1828
+ "type": "uuid",
1829
+ "primaryKey": false,
1830
+ "notNull": true
1831
+ },
1832
+ "job_id": {
1833
+ "name": "job_id",
1834
+ "type": "uuid",
1835
+ "primaryKey": false,
1836
+ "notNull": true
1837
+ },
1838
+ "job_execution_id": {
1839
+ "name": "job_execution_id",
1840
+ "type": "uuid",
1841
+ "primaryKey": false,
1842
+ "notNull": true
1843
+ },
1844
+ "project_id": {
1845
+ "name": "project_id",
1846
+ "type": "uuid",
1847
+ "primaryKey": false,
1848
+ "notNull": true
1849
+ },
1850
+ "runner_session_id": {
1851
+ "name": "runner_session_id",
1852
+ "type": "uuid",
1853
+ "primaryKey": false,
1854
+ "notNull": true
1855
+ },
1856
+ "provisioner_id": {
1857
+ "name": "provisioner_id",
1858
+ "type": "uuid",
1859
+ "primaryKey": false,
1860
+ "notNull": false
1861
+ },
1862
+ "provider_runner_id": {
1863
+ "name": "provider_runner_id",
1864
+ "type": "text",
1865
+ "primaryKey": false,
1866
+ "notNull": false
1867
+ },
1868
+ "required_labels": {
1869
+ "name": "required_labels",
1870
+ "type": "text[]",
1871
+ "primaryKey": false,
1872
+ "notNull": true
1873
+ },
1874
+ "runner_labels": {
1875
+ "name": "runner_labels",
1876
+ "type": "text[]",
1877
+ "primaryKey": false,
1878
+ "notNull": true
1879
+ },
1880
+ "started_at": {
1881
+ "name": "started_at",
1882
+ "type": "timestamp with time zone",
1883
+ "primaryKey": false,
1884
+ "notNull": true,
1885
+ "default": "now()"
1886
+ },
1887
+ "first_heartbeat_at": {
1888
+ "name": "first_heartbeat_at",
1889
+ "type": "timestamp with time zone",
1890
+ "primaryKey": false,
1891
+ "notNull": false
1892
+ },
1893
+ "last_heartbeat_at": {
1894
+ "name": "last_heartbeat_at",
1895
+ "type": "timestamp with time zone",
1896
+ "primaryKey": false,
1897
+ "notNull": true,
1898
+ "default": "now()"
1899
+ },
1900
+ "cancellation_requested_at": {
1901
+ "name": "cancellation_requested_at",
1902
+ "type": "timestamp with time zone",
1903
+ "primaryKey": false,
1904
+ "notNull": false
1905
+ }
1906
+ },
1907
+ "indexes": {
1908
+ "runners_running_jobs_no_first_heartbeat_started_idx": {
1909
+ "name": "runners_running_jobs_no_first_heartbeat_started_idx",
1910
+ "columns": [
1911
+ {
1912
+ "expression": "started_at",
1913
+ "isExpression": false,
1914
+ "asc": true,
1915
+ "nulls": "last"
1916
+ }
1917
+ ],
1918
+ "isUnique": false,
1919
+ "where": "\"first_heartbeat_at\" IS NULL",
1920
+ "concurrently": false,
1921
+ "method": "btree",
1922
+ "with": {}
1923
+ },
1924
+ "runners_running_jobs_last_heartbeat_at_idx": {
1925
+ "name": "runners_running_jobs_last_heartbeat_at_idx",
1926
+ "columns": [
1927
+ {
1928
+ "expression": "last_heartbeat_at",
1929
+ "isExpression": false,
1930
+ "asc": true,
1931
+ "nulls": "last"
1932
+ }
1933
+ ],
1934
+ "isUnique": false,
1935
+ "concurrently": false,
1936
+ "method": "btree",
1937
+ "with": {}
1938
+ },
1939
+ "runners_running_jobs_provider_runner_started_idx": {
1940
+ "name": "runners_running_jobs_provider_runner_started_idx",
1941
+ "columns": [
1942
+ {
1943
+ "expression": "workspace_id",
1944
+ "isExpression": false,
1945
+ "asc": true,
1946
+ "nulls": "last"
1947
+ },
1948
+ {
1949
+ "expression": "provisioner_id",
1950
+ "isExpression": false,
1951
+ "asc": true,
1952
+ "nulls": "last"
1953
+ },
1954
+ {
1955
+ "expression": "provider_runner_id",
1956
+ "isExpression": false,
1957
+ "asc": true,
1958
+ "nulls": "last"
1959
+ },
1960
+ {
1961
+ "expression": "started_at",
1962
+ "isExpression": false,
1963
+ "asc": false,
1964
+ "nulls": "last"
1965
+ }
1966
+ ],
1967
+ "isUnique": false,
1968
+ "where": "\"provisioner_id\" IS NOT NULL",
1969
+ "concurrently": false,
1970
+ "method": "btree",
1971
+ "with": {}
1972
+ },
1973
+ "runners_running_jobs_cancellation_requested_idx": {
1974
+ "name": "runners_running_jobs_cancellation_requested_idx",
1975
+ "columns": [
1976
+ {
1977
+ "expression": "workspace_id",
1978
+ "isExpression": false,
1979
+ "asc": true,
1980
+ "nulls": "last"
1981
+ },
1982
+ {
1983
+ "expression": "provisioner_id",
1984
+ "isExpression": false,
1985
+ "asc": true,
1986
+ "nulls": "last"
1987
+ },
1988
+ {
1989
+ "expression": "provider_runner_id",
1990
+ "isExpression": false,
1991
+ "asc": true,
1992
+ "nulls": "last"
1993
+ }
1994
+ ],
1995
+ "isUnique": false,
1996
+ "where": "\"cancellation_requested_at\" IS NOT NULL",
1997
+ "concurrently": false,
1998
+ "method": "btree",
1999
+ "with": {}
2000
+ },
2001
+ "runners_running_jobs_job_id_idx": {
2002
+ "name": "runners_running_jobs_job_id_idx",
2003
+ "columns": [
2004
+ {
2005
+ "expression": "job_id",
2006
+ "isExpression": false,
2007
+ "asc": true,
2008
+ "nulls": "last"
2009
+ }
2010
+ ],
2011
+ "isUnique": false,
2012
+ "concurrently": false,
2013
+ "method": "btree",
2014
+ "with": {}
2015
+ },
2016
+ "runners_running_jobs_runner_session_id_idx": {
2017
+ "name": "runners_running_jobs_runner_session_id_idx",
2018
+ "columns": [
2019
+ {
2020
+ "expression": "runner_session_id",
2021
+ "isExpression": false,
2022
+ "asc": true,
2023
+ "nulls": "last"
2024
+ }
2025
+ ],
2026
+ "isUnique": false,
2027
+ "concurrently": false,
2028
+ "method": "btree",
2029
+ "with": {}
2030
+ }
2031
+ },
2032
+ "foreignKeys": {
2033
+ "runners_running_jobs_runner_session_id_runners_runner_sessions_id_fk": {
2034
+ "name": "runners_running_jobs_runner_session_id_runners_runner_sessions_id_fk",
2035
+ "tableFrom": "runners_running_jobs",
2036
+ "tableTo": "runners_runner_sessions",
2037
+ "columnsFrom": ["runner_session_id"],
2038
+ "columnsTo": ["id"],
2039
+ "onDelete": "no action",
2040
+ "onUpdate": "no action"
2041
+ }
2042
+ },
2043
+ "compositePrimaryKeys": {},
2044
+ "uniqueConstraints": {
2045
+ "runners_running_jobs_job_execution_id_unique": {
2046
+ "name": "runners_running_jobs_job_execution_id_unique",
2047
+ "nullsNotDistinct": false,
2048
+ "columns": ["job_execution_id"]
2049
+ }
2050
+ },
2051
+ "policies": {},
2052
+ "checkConstraints": {
2053
+ "runners_running_jobs_link_ck": {
2054
+ "name": "runners_running_jobs_link_ck",
2055
+ "value": "(\"runners_running_jobs\".\"provisioner_id\" IS NULL) = (\"runners_running_jobs\".\"provider_runner_id\" IS NULL)"
2056
+ }
2057
+ },
2058
+ "isRLSEnabled": false
2059
+ }
2060
+ },
2061
+ "enums": {
2062
+ "public.runners_provisioner_scope": {
2063
+ "name": "runners_provisioner_scope",
2064
+ "schema": "public",
2065
+ "values": ["workspace", "installation"]
2066
+ },
2067
+ "public.runners_provider_runner_state": {
2068
+ "name": "runners_provider_runner_state",
2069
+ "schema": "public",
2070
+ "values": ["starting", "running", "stopping", "stopped", "failed", "terminated"]
2071
+ },
2072
+ "public.runners_runner_session_registration_token_kind": {
2073
+ "name": "runners_runner_session_registration_token_kind",
2074
+ "schema": "public",
2075
+ "values": ["manual", "ephemeral", "activation"]
2076
+ },
2077
+ "public.runners_runner_session_scope": {
2078
+ "name": "runners_runner_session_scope",
2079
+ "schema": "public",
2080
+ "values": ["workspace"]
2081
+ }
2082
+ },
2083
+ "schemas": {},
2084
+ "sequences": {},
2085
+ "roles": {},
2086
+ "policies": {},
2087
+ "views": {},
2088
+ "_meta": {
2089
+ "columns": {},
2090
+ "schemas": {},
2091
+ "tables": {}
2092
+ }
2093
+ }