@inquir/compute 0.4.4 → 0.4.5

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.
@@ -281,6 +281,379 @@ export declare const inquirYamlFunctionsSchema: z.ZodObject<{
281
281
  export declare function declaredSystemConfig(document: unknown, functionName: string): FunctionSystemConfig | null | undefined;
282
282
  /** The keys inquir.yaml may hold at the top level (apps: version, services; functions: build, functions). */
283
283
  export declare const INQUIR_YAML_TOP_LEVEL_KEYS: readonly ["version", "services", "build", "functions"];
284
+ /**
285
+ * `services.web.scale` (docs/roadmap/STATEFUL_REPLICAS.md §7): the platform's
286
+ * validator is src/apps/app-scale-spec.ts; these constants and the schema
287
+ * below are its twin, kept equal by src/services/inquir-yaml-schema-parity.test.ts.
288
+ * Cross-field rules JSON Schema cannot express (an ordinal below `replicas`,
289
+ * a `fallback` or `public` that names an existing endpoint) are the platform's.
290
+ */
291
+ export declare const SCALE_MAX_REPLICAS = 8;
292
+ export declare const SCALE_MAX_ENDPOINTS = 8;
293
+ export declare const SCALE_NAME_PATTERN = "^[a-z][a-z0-9-]{0,30}$";
294
+ export declare const SCALE_ORDINAL_SELECTOR_PATTERN = "^[0-9]{1,2}(-([0-9]{1,2})?)?(,[0-9]{1,2}(-([0-9]{1,2})?)?)*$";
295
+ export declare const SCALE_ORDINAL_KEY_PATTERN = "^(0|[1-9][0-9]?)$";
296
+ export declare const SCALE_JSON_SCHEMA: {
297
+ readonly description: "Alpha: stateful replicas may still change and have limits; keep backups of the data they hold. Replica intent: stateless (identical replicas) or stateful (ordered replicas 0..N-1, each with its own volumes, private name and address). Where stateful replicas are not enabled for the workspace, a deploy that declares it is refused. Keys declared here are managed by this file: other surfaces change them only with an explicit override.";
298
+ readonly type: "object";
299
+ readonly additionalProperties: false;
300
+ readonly properties: {
301
+ readonly mode: {
302
+ readonly enum: readonly ["stateless", "stateful"];
303
+ };
304
+ readonly replicas: {
305
+ readonly maximum?: number | undefined;
306
+ readonly type: "integer";
307
+ readonly minimum: number;
308
+ };
309
+ readonly podManagement: {
310
+ readonly enum: readonly ["ordered", "parallel"];
311
+ };
312
+ readonly update: {
313
+ readonly type: "object";
314
+ readonly additionalProperties: false;
315
+ readonly properties: {
316
+ readonly order: {
317
+ readonly enum: readonly ["reverse", "forward"];
318
+ };
319
+ readonly partition: {
320
+ readonly maximum?: number | undefined;
321
+ readonly type: "integer";
322
+ readonly minimum: number;
323
+ };
324
+ readonly maxUnavailable: {
325
+ readonly maximum?: number | undefined;
326
+ readonly type: "integer";
327
+ readonly minimum: number;
328
+ };
329
+ readonly minReadySeconds: {
330
+ readonly maximum?: number | undefined;
331
+ readonly type: "integer";
332
+ readonly minimum: number;
333
+ };
334
+ readonly progressDeadlineSeconds: {
335
+ readonly maximum?: number | undefined;
336
+ readonly type: "integer";
337
+ readonly minimum: number;
338
+ };
339
+ };
340
+ };
341
+ readonly placement: {
342
+ readonly type: "object";
343
+ readonly additionalProperties: false;
344
+ readonly properties: {
345
+ readonly spread: {
346
+ readonly enum: readonly ["host", "location"];
347
+ };
348
+ readonly allowSameHost: {
349
+ readonly type: "boolean";
350
+ };
351
+ };
352
+ };
353
+ readonly hostLoss: {
354
+ readonly enum: readonly ["wait", "rebuild"];
355
+ };
356
+ readonly hostLossGraceSeconds: {
357
+ readonly maximum?: number | undefined;
358
+ readonly type: "integer";
359
+ readonly minimum: number;
360
+ };
361
+ readonly retention: {
362
+ readonly type: "object";
363
+ readonly additionalProperties: false;
364
+ readonly properties: {
365
+ readonly whenScaledDown: {
366
+ readonly enum: readonly ["retain", "delete"];
367
+ };
368
+ readonly whenDeleted: {
369
+ readonly enum: readonly ["retain", "delete"];
370
+ };
371
+ readonly retentionDays: {
372
+ readonly maximum?: number | undefined;
373
+ readonly type: "integer";
374
+ readonly minimum: number;
375
+ };
376
+ };
377
+ };
378
+ readonly endpoints: {
379
+ readonly type: "object";
380
+ readonly maxProperties: 8;
381
+ readonly propertyNames: {
382
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
383
+ readonly not: {
384
+ readonly const: "default";
385
+ };
386
+ };
387
+ readonly additionalProperties: {
388
+ readonly type: "object";
389
+ readonly additionalProperties: false;
390
+ readonly oneOf: readonly [{
391
+ readonly required: readonly ["role"];
392
+ }, {
393
+ readonly required: readonly ["ordinals"];
394
+ }];
395
+ readonly if: {
396
+ readonly required: readonly ["max"];
397
+ };
398
+ readonly then: {
399
+ readonly not: {
400
+ readonly required: readonly ["fallback"];
401
+ };
402
+ };
403
+ readonly properties: {
404
+ readonly role: {
405
+ readonly type: "string";
406
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
407
+ };
408
+ readonly ordinals: {
409
+ readonly type: "string";
410
+ readonly pattern: "^[0-9]{1,2}(-([0-9]{1,2})?)?(,[0-9]{1,2}(-([0-9]{1,2})?)?)*$";
411
+ };
412
+ readonly max: {
413
+ readonly const: 1;
414
+ };
415
+ readonly fallback: {
416
+ readonly type: "string";
417
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
418
+ };
419
+ };
420
+ };
421
+ };
422
+ readonly public: {
423
+ readonly type: "string";
424
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
425
+ };
426
+ readonly backup: {
427
+ readonly oneOf: readonly [{
428
+ readonly type: "object";
429
+ readonly additionalProperties: false;
430
+ readonly required: readonly ["from"];
431
+ readonly properties: {
432
+ readonly from: {
433
+ readonly enum: readonly ["all", "none"];
434
+ };
435
+ };
436
+ }, {
437
+ readonly type: "object";
438
+ readonly additionalProperties: false;
439
+ readonly required: readonly ["ordinals"];
440
+ readonly properties: {
441
+ readonly ordinals: {
442
+ readonly type: "array";
443
+ readonly minItems: 1;
444
+ readonly maxItems: 8;
445
+ readonly items: {
446
+ readonly maximum?: number | undefined;
447
+ readonly type: "integer";
448
+ readonly minimum: number;
449
+ };
450
+ };
451
+ };
452
+ }, {
453
+ readonly type: "object";
454
+ readonly additionalProperties: false;
455
+ readonly required: readonly ["role"];
456
+ readonly properties: {
457
+ readonly role: {
458
+ readonly type: "string";
459
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
460
+ };
461
+ readonly fallback: {
462
+ readonly type: "boolean";
463
+ };
464
+ };
465
+ }];
466
+ };
467
+ readonly failover: {
468
+ readonly type: "object";
469
+ readonly additionalProperties: false;
470
+ readonly required: readonly ["enabled"];
471
+ readonly properties: {
472
+ readonly enabled: {
473
+ readonly type: "boolean";
474
+ };
475
+ readonly leaderRole: {
476
+ readonly type: "string";
477
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
478
+ };
479
+ readonly replicaRole: {
480
+ readonly type: "string";
481
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
482
+ };
483
+ readonly leaseTtlSeconds: {
484
+ readonly maximum?: number | undefined;
485
+ readonly type: "integer";
486
+ readonly minimum: number;
487
+ };
488
+ readonly detectAfterSeconds: {
489
+ readonly maximum?: number | undefined;
490
+ readonly type: "integer";
491
+ readonly minimum: number;
492
+ };
493
+ readonly rank: {
494
+ readonly type: "object";
495
+ readonly additionalProperties: false;
496
+ readonly required: readonly ["command"];
497
+ readonly properties: {
498
+ readonly command: {
499
+ readonly type: "array";
500
+ readonly minItems: 1;
501
+ readonly maxItems: 32;
502
+ readonly items: {
503
+ readonly type: "string";
504
+ readonly minLength: 1;
505
+ readonly maxLength: 2048;
506
+ };
507
+ };
508
+ readonly timeoutSeconds: {
509
+ readonly type: "integer";
510
+ readonly minimum: 1;
511
+ readonly maximum: 3600;
512
+ };
513
+ };
514
+ };
515
+ readonly maxRankLag: {
516
+ readonly maximum?: number | undefined;
517
+ readonly type: "integer";
518
+ readonly minimum: number;
519
+ };
520
+ readonly promote: {
521
+ readonly type: "object";
522
+ readonly additionalProperties: false;
523
+ readonly required: readonly ["command"];
524
+ readonly properties: {
525
+ readonly command: {
526
+ readonly type: "array";
527
+ readonly minItems: 1;
528
+ readonly maxItems: 32;
529
+ readonly items: {
530
+ readonly type: "string";
531
+ readonly minLength: 1;
532
+ readonly maxLength: 2048;
533
+ };
534
+ };
535
+ readonly timeoutSeconds: {
536
+ readonly type: "integer";
537
+ readonly minimum: 1;
538
+ readonly maximum: 3600;
539
+ };
540
+ };
541
+ };
542
+ readonly rejoin: {
543
+ readonly type: "object";
544
+ readonly additionalProperties: false;
545
+ readonly required: readonly ["command"];
546
+ readonly properties: {
547
+ readonly command: {
548
+ readonly type: "array";
549
+ readonly minItems: 1;
550
+ readonly maxItems: 32;
551
+ readonly items: {
552
+ readonly type: "string";
553
+ readonly minLength: 1;
554
+ readonly maxLength: 2048;
555
+ };
556
+ };
557
+ readonly timeoutSeconds: {
558
+ readonly type: "integer";
559
+ readonly minimum: 1;
560
+ readonly maximum: 3600;
561
+ };
562
+ };
563
+ };
564
+ readonly isolation: {
565
+ readonly enum: readonly ["failsafe", "fence"];
566
+ };
567
+ readonly switchoverOnUpdate: {
568
+ readonly type: "boolean";
569
+ };
570
+ };
571
+ readonly if: {
572
+ readonly properties: {
573
+ readonly enabled: {
574
+ readonly const: true;
575
+ };
576
+ };
577
+ };
578
+ readonly then: {
579
+ readonly required: readonly ["leaderRole", "rank", "promote"];
580
+ };
581
+ };
582
+ readonly ordinals: {
583
+ readonly type: "object";
584
+ readonly propertyNames: {
585
+ readonly pattern: "^(0|[1-9][0-9]?)$";
586
+ };
587
+ readonly additionalProperties: {
588
+ readonly type: "object";
589
+ readonly additionalProperties: false;
590
+ readonly properties: {
591
+ readonly resources: {
592
+ readonly type: "object";
593
+ readonly additionalProperties: false;
594
+ readonly properties: {
595
+ readonly cpuVCpus: {
596
+ readonly type: "number";
597
+ readonly minimum: 0.05;
598
+ readonly maximum: 16;
599
+ };
600
+ readonly memoryMb: {
601
+ readonly maximum?: number | undefined;
602
+ readonly type: "integer";
603
+ readonly minimum: number;
604
+ };
605
+ };
606
+ };
607
+ readonly env: {
608
+ readonly type: "object";
609
+ readonly maxProperties: 64;
610
+ readonly propertyNames: {
611
+ readonly pattern: "^[A-Za-z_][A-Za-z0-9_]*$";
612
+ readonly maxLength: 256;
613
+ };
614
+ readonly additionalProperties: {
615
+ readonly type: "string";
616
+ readonly maxLength: 32768;
617
+ };
618
+ };
619
+ readonly hostLoss: {
620
+ readonly enum: readonly ["wait", "rebuild"];
621
+ };
622
+ };
623
+ };
624
+ };
625
+ };
626
+ readonly if: {
627
+ readonly not: {
628
+ readonly required: readonly ["mode"];
629
+ readonly properties: {
630
+ readonly mode: {
631
+ readonly const: "stateful";
632
+ };
633
+ };
634
+ };
635
+ };
636
+ readonly then: {
637
+ readonly propertyNames: {
638
+ readonly enum: readonly ["mode", "replicas"];
639
+ };
640
+ };
641
+ };
642
+ /**
643
+ * The application settings inquir.yaml `services.web` declares with the apps
644
+ * API's own shapes (docs/roadmap/INQUIR_COMPOSE.md §3.6.2). The platform's
645
+ * validators are src/apps/app-settings-schema.ts; these bounds are their twin,
646
+ * kept equal by src/services/inquir-yaml-schema-parity.test.ts.
647
+ */
648
+ export declare const APP_SCALING_MAX_REPLICAS = 8;
649
+ export declare const APP_SCALING_MAX_DELAY_SECONDS: number;
650
+ export declare const APP_AUTOSCALING_MAX_STABILIZATION_SECONDS = 3600;
651
+ export declare const APP_AUTOSCALING_CPU_PERCENT_RANGE: readonly [10, 100];
652
+ export declare const APP_AUTOSCALING_MAX_CONCURRENCY = 10000;
653
+ export declare const APP_ROLLOUT_MAX_FIGURE = 8;
654
+ export declare const APP_ROLLOUT_PROGRESS_DEADLINE_RANGE: readonly [30, 3600];
655
+ /** A registry image pinned by digest: the only kind a worker runner pulls. */
656
+ export declare const PINNED_IMAGE_REF_PATTERN = "^[A-Za-z0-9][A-Za-z0-9._:/-]*@sha256:[a-f0-9]{64}$";
284
657
  /**
285
658
  * JSON Schema (draft-07) of inquir.yaml, for editor completion and
286
659
  * validation (`# yaml-language-server: $schema=…`). The repository keeps it
@@ -303,7 +676,12 @@ export declare const INQUIR_YAML_JSON_SCHEMA: {
303
676
  };
304
677
  readonly services: {
305
678
  readonly type: "object";
306
- readonly description: "Application services (apps): services.web.build, runtime, env";
679
+ readonly description: "Application services (apps): services.web.build or imageRef, runtime, env, scale, networkPolicy, scaling, location";
680
+ readonly properties: {
681
+ readonly web: {
682
+ readonly $ref: "#/definitions/service";
683
+ };
684
+ };
307
685
  };
308
686
  readonly build: {
309
687
  readonly $ref: "#/definitions/build";
@@ -324,6 +702,1779 @@ export declare const INQUIR_YAML_JSON_SCHEMA: {
324
702
  };
325
703
  };
326
704
  readonly definitions: {
705
+ readonly service: {
706
+ readonly description: "One service: services.web of inquir.yaml, and an inline service of inquir-compose.yaml (the same block).";
707
+ readonly type: "object";
708
+ readonly properties: {
709
+ readonly build: {
710
+ readonly type: "object";
711
+ readonly description: "The Dockerfile build: context (a folder inside the source), dockerfile (relative to the context), target, args";
712
+ readonly properties: {
713
+ readonly context: {
714
+ readonly type: "string";
715
+ readonly minLength: 1;
716
+ readonly maxLength: 1024;
717
+ };
718
+ readonly dockerfile: {
719
+ readonly type: "string";
720
+ readonly minLength: 1;
721
+ readonly maxLength: 1024;
722
+ };
723
+ readonly target: {
724
+ readonly type: "string";
725
+ readonly minLength: 1;
726
+ readonly maxLength: 128;
727
+ };
728
+ readonly args: {
729
+ readonly type: "object";
730
+ readonly maxProperties: 32;
731
+ readonly additionalProperties: {
732
+ readonly type: "string";
733
+ readonly maxLength: 4096;
734
+ };
735
+ };
736
+ };
737
+ };
738
+ readonly env: {
739
+ readonly type: "object";
740
+ readonly description: "Non-secret defaults, frozen with the build; application variables win. Never secrets: inquir.yaml is committed.";
741
+ readonly additionalProperties: {
742
+ readonly type: "string";
743
+ readonly maxLength: 32768;
744
+ };
745
+ };
746
+ readonly runtime: {
747
+ readonly type: "object";
748
+ readonly description: "The pod template, frozen with each release (port, ports, volumes, healthcheck, hooks, roles, ...)";
749
+ readonly properties: {
750
+ readonly roles: {
751
+ readonly $ref: "#/definitions/roles";
752
+ };
753
+ readonly hooks: {
754
+ readonly $ref: "#/definitions/hooks";
755
+ };
756
+ };
757
+ };
758
+ readonly scale: {
759
+ readonly $ref: "#/definitions/scale";
760
+ };
761
+ readonly imageRef: {
762
+ readonly type: "string";
763
+ readonly maxLength: 512;
764
+ readonly pattern: "^[A-Za-z0-9][A-Za-z0-9._:/-]*@sha256:[a-f0-9]{64}$";
765
+ readonly description: string;
766
+ };
767
+ readonly networkPolicy: {
768
+ readonly $ref: "#/definitions/networkPolicy";
769
+ };
770
+ readonly scaling: {
771
+ readonly $ref: "#/definitions/scaling";
772
+ };
773
+ readonly location: {
774
+ readonly type: "string";
775
+ readonly minLength: 1;
776
+ readonly maxLength: 32;
777
+ readonly description: string;
778
+ };
779
+ };
780
+ readonly not: {
781
+ readonly required: readonly ["imageRef", "build"];
782
+ };
783
+ };
784
+ readonly scale: {
785
+ readonly description: "Alpha: stateful replicas may still change and have limits; keep backups of the data they hold. Replica intent: stateless (identical replicas) or stateful (ordered replicas 0..N-1, each with its own volumes, private name and address). Where stateful replicas are not enabled for the workspace, a deploy that declares it is refused. Keys declared here are managed by this file: other surfaces change them only with an explicit override.";
786
+ readonly type: "object";
787
+ readonly additionalProperties: false;
788
+ readonly properties: {
789
+ readonly mode: {
790
+ readonly enum: readonly ["stateless", "stateful"];
791
+ };
792
+ readonly replicas: {
793
+ readonly maximum?: number | undefined;
794
+ readonly type: "integer";
795
+ readonly minimum: number;
796
+ };
797
+ readonly podManagement: {
798
+ readonly enum: readonly ["ordered", "parallel"];
799
+ };
800
+ readonly update: {
801
+ readonly type: "object";
802
+ readonly additionalProperties: false;
803
+ readonly properties: {
804
+ readonly order: {
805
+ readonly enum: readonly ["reverse", "forward"];
806
+ };
807
+ readonly partition: {
808
+ readonly maximum?: number | undefined;
809
+ readonly type: "integer";
810
+ readonly minimum: number;
811
+ };
812
+ readonly maxUnavailable: {
813
+ readonly maximum?: number | undefined;
814
+ readonly type: "integer";
815
+ readonly minimum: number;
816
+ };
817
+ readonly minReadySeconds: {
818
+ readonly maximum?: number | undefined;
819
+ readonly type: "integer";
820
+ readonly minimum: number;
821
+ };
822
+ readonly progressDeadlineSeconds: {
823
+ readonly maximum?: number | undefined;
824
+ readonly type: "integer";
825
+ readonly minimum: number;
826
+ };
827
+ };
828
+ };
829
+ readonly placement: {
830
+ readonly type: "object";
831
+ readonly additionalProperties: false;
832
+ readonly properties: {
833
+ readonly spread: {
834
+ readonly enum: readonly ["host", "location"];
835
+ };
836
+ readonly allowSameHost: {
837
+ readonly type: "boolean";
838
+ };
839
+ };
840
+ };
841
+ readonly hostLoss: {
842
+ readonly enum: readonly ["wait", "rebuild"];
843
+ };
844
+ readonly hostLossGraceSeconds: {
845
+ readonly maximum?: number | undefined;
846
+ readonly type: "integer";
847
+ readonly minimum: number;
848
+ };
849
+ readonly retention: {
850
+ readonly type: "object";
851
+ readonly additionalProperties: false;
852
+ readonly properties: {
853
+ readonly whenScaledDown: {
854
+ readonly enum: readonly ["retain", "delete"];
855
+ };
856
+ readonly whenDeleted: {
857
+ readonly enum: readonly ["retain", "delete"];
858
+ };
859
+ readonly retentionDays: {
860
+ readonly maximum?: number | undefined;
861
+ readonly type: "integer";
862
+ readonly minimum: number;
863
+ };
864
+ };
865
+ };
866
+ readonly endpoints: {
867
+ readonly type: "object";
868
+ readonly maxProperties: 8;
869
+ readonly propertyNames: {
870
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
871
+ readonly not: {
872
+ readonly const: "default";
873
+ };
874
+ };
875
+ readonly additionalProperties: {
876
+ readonly type: "object";
877
+ readonly additionalProperties: false;
878
+ readonly oneOf: readonly [{
879
+ readonly required: readonly ["role"];
880
+ }, {
881
+ readonly required: readonly ["ordinals"];
882
+ }];
883
+ readonly if: {
884
+ readonly required: readonly ["max"];
885
+ };
886
+ readonly then: {
887
+ readonly not: {
888
+ readonly required: readonly ["fallback"];
889
+ };
890
+ };
891
+ readonly properties: {
892
+ readonly role: {
893
+ readonly type: "string";
894
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
895
+ };
896
+ readonly ordinals: {
897
+ readonly type: "string";
898
+ readonly pattern: "^[0-9]{1,2}(-([0-9]{1,2})?)?(,[0-9]{1,2}(-([0-9]{1,2})?)?)*$";
899
+ };
900
+ readonly max: {
901
+ readonly const: 1;
902
+ };
903
+ readonly fallback: {
904
+ readonly type: "string";
905
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
906
+ };
907
+ };
908
+ };
909
+ };
910
+ readonly public: {
911
+ readonly type: "string";
912
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
913
+ };
914
+ readonly backup: {
915
+ readonly oneOf: readonly [{
916
+ readonly type: "object";
917
+ readonly additionalProperties: false;
918
+ readonly required: readonly ["from"];
919
+ readonly properties: {
920
+ readonly from: {
921
+ readonly enum: readonly ["all", "none"];
922
+ };
923
+ };
924
+ }, {
925
+ readonly type: "object";
926
+ readonly additionalProperties: false;
927
+ readonly required: readonly ["ordinals"];
928
+ readonly properties: {
929
+ readonly ordinals: {
930
+ readonly type: "array";
931
+ readonly minItems: 1;
932
+ readonly maxItems: 8;
933
+ readonly items: {
934
+ readonly maximum?: number | undefined;
935
+ readonly type: "integer";
936
+ readonly minimum: number;
937
+ };
938
+ };
939
+ };
940
+ }, {
941
+ readonly type: "object";
942
+ readonly additionalProperties: false;
943
+ readonly required: readonly ["role"];
944
+ readonly properties: {
945
+ readonly role: {
946
+ readonly type: "string";
947
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
948
+ };
949
+ readonly fallback: {
950
+ readonly type: "boolean";
951
+ };
952
+ };
953
+ }];
954
+ };
955
+ readonly failover: {
956
+ readonly type: "object";
957
+ readonly additionalProperties: false;
958
+ readonly required: readonly ["enabled"];
959
+ readonly properties: {
960
+ readonly enabled: {
961
+ readonly type: "boolean";
962
+ };
963
+ readonly leaderRole: {
964
+ readonly type: "string";
965
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
966
+ };
967
+ readonly replicaRole: {
968
+ readonly type: "string";
969
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
970
+ };
971
+ readonly leaseTtlSeconds: {
972
+ readonly maximum?: number | undefined;
973
+ readonly type: "integer";
974
+ readonly minimum: number;
975
+ };
976
+ readonly detectAfterSeconds: {
977
+ readonly maximum?: number | undefined;
978
+ readonly type: "integer";
979
+ readonly minimum: number;
980
+ };
981
+ readonly rank: {
982
+ readonly type: "object";
983
+ readonly additionalProperties: false;
984
+ readonly required: readonly ["command"];
985
+ readonly properties: {
986
+ readonly command: {
987
+ readonly type: "array";
988
+ readonly minItems: 1;
989
+ readonly maxItems: 32;
990
+ readonly items: {
991
+ readonly type: "string";
992
+ readonly minLength: 1;
993
+ readonly maxLength: 2048;
994
+ };
995
+ };
996
+ readonly timeoutSeconds: {
997
+ readonly type: "integer";
998
+ readonly minimum: 1;
999
+ readonly maximum: 3600;
1000
+ };
1001
+ };
1002
+ };
1003
+ readonly maxRankLag: {
1004
+ readonly maximum?: number | undefined;
1005
+ readonly type: "integer";
1006
+ readonly minimum: number;
1007
+ };
1008
+ readonly promote: {
1009
+ readonly type: "object";
1010
+ readonly additionalProperties: false;
1011
+ readonly required: readonly ["command"];
1012
+ readonly properties: {
1013
+ readonly command: {
1014
+ readonly type: "array";
1015
+ readonly minItems: 1;
1016
+ readonly maxItems: 32;
1017
+ readonly items: {
1018
+ readonly type: "string";
1019
+ readonly minLength: 1;
1020
+ readonly maxLength: 2048;
1021
+ };
1022
+ };
1023
+ readonly timeoutSeconds: {
1024
+ readonly type: "integer";
1025
+ readonly minimum: 1;
1026
+ readonly maximum: 3600;
1027
+ };
1028
+ };
1029
+ };
1030
+ readonly rejoin: {
1031
+ readonly type: "object";
1032
+ readonly additionalProperties: false;
1033
+ readonly required: readonly ["command"];
1034
+ readonly properties: {
1035
+ readonly command: {
1036
+ readonly type: "array";
1037
+ readonly minItems: 1;
1038
+ readonly maxItems: 32;
1039
+ readonly items: {
1040
+ readonly type: "string";
1041
+ readonly minLength: 1;
1042
+ readonly maxLength: 2048;
1043
+ };
1044
+ };
1045
+ readonly timeoutSeconds: {
1046
+ readonly type: "integer";
1047
+ readonly minimum: 1;
1048
+ readonly maximum: 3600;
1049
+ };
1050
+ };
1051
+ };
1052
+ readonly isolation: {
1053
+ readonly enum: readonly ["failsafe", "fence"];
1054
+ };
1055
+ readonly switchoverOnUpdate: {
1056
+ readonly type: "boolean";
1057
+ };
1058
+ };
1059
+ readonly if: {
1060
+ readonly properties: {
1061
+ readonly enabled: {
1062
+ readonly const: true;
1063
+ };
1064
+ };
1065
+ };
1066
+ readonly then: {
1067
+ readonly required: readonly ["leaderRole", "rank", "promote"];
1068
+ };
1069
+ };
1070
+ readonly ordinals: {
1071
+ readonly type: "object";
1072
+ readonly propertyNames: {
1073
+ readonly pattern: "^(0|[1-9][0-9]?)$";
1074
+ };
1075
+ readonly additionalProperties: {
1076
+ readonly type: "object";
1077
+ readonly additionalProperties: false;
1078
+ readonly properties: {
1079
+ readonly resources: {
1080
+ readonly type: "object";
1081
+ readonly additionalProperties: false;
1082
+ readonly properties: {
1083
+ readonly cpuVCpus: {
1084
+ readonly type: "number";
1085
+ readonly minimum: 0.05;
1086
+ readonly maximum: 16;
1087
+ };
1088
+ readonly memoryMb: {
1089
+ readonly maximum?: number | undefined;
1090
+ readonly type: "integer";
1091
+ readonly minimum: number;
1092
+ };
1093
+ };
1094
+ };
1095
+ readonly env: {
1096
+ readonly type: "object";
1097
+ readonly maxProperties: 64;
1098
+ readonly propertyNames: {
1099
+ readonly pattern: "^[A-Za-z_][A-Za-z0-9_]*$";
1100
+ readonly maxLength: 256;
1101
+ };
1102
+ readonly additionalProperties: {
1103
+ readonly type: "string";
1104
+ readonly maxLength: 32768;
1105
+ };
1106
+ };
1107
+ readonly hostLoss: {
1108
+ readonly enum: readonly ["wait", "rebuild"];
1109
+ };
1110
+ };
1111
+ };
1112
+ };
1113
+ };
1114
+ readonly if: {
1115
+ readonly not: {
1116
+ readonly required: readonly ["mode"];
1117
+ readonly properties: {
1118
+ readonly mode: {
1119
+ readonly const: "stateful";
1120
+ };
1121
+ };
1122
+ };
1123
+ };
1124
+ readonly then: {
1125
+ readonly propertyNames: {
1126
+ readonly enum: readonly ["mode", "replicas"];
1127
+ };
1128
+ };
1129
+ };
1130
+ readonly networkPolicy: {
1131
+ readonly description: string;
1132
+ readonly type: "object";
1133
+ readonly additionalProperties: false;
1134
+ readonly properties: {
1135
+ readonly ingress: {
1136
+ readonly enum: readonly ["private", "public"];
1137
+ };
1138
+ readonly egress: {
1139
+ readonly enum: readonly ["none", "full"];
1140
+ };
1141
+ readonly allow: {
1142
+ readonly type: "array";
1143
+ readonly maxItems: 64;
1144
+ readonly items: {
1145
+ readonly type: "string";
1146
+ readonly minLength: 1;
1147
+ readonly maxLength: 253;
1148
+ };
1149
+ };
1150
+ };
1151
+ };
1152
+ readonly scaling: {
1153
+ readonly description: string;
1154
+ readonly type: "object";
1155
+ readonly additionalProperties: false;
1156
+ readonly properties: {
1157
+ readonly activation: {
1158
+ readonly enum: readonly ["always", "http", "manual"];
1159
+ };
1160
+ readonly minReplicas: {
1161
+ readonly enum: readonly [0, 1];
1162
+ };
1163
+ readonly maxReplicas: {
1164
+ readonly type: "integer";
1165
+ readonly minimum: 1;
1166
+ readonly maximum: 8;
1167
+ };
1168
+ readonly idleTimeoutSeconds: {
1169
+ readonly type: "integer";
1170
+ readonly minimum: 300;
1171
+ readonly maximum: number;
1172
+ };
1173
+ readonly activationTimeoutSeconds: {
1174
+ readonly type: "integer";
1175
+ readonly minimum: 5;
1176
+ readonly maximum: 300;
1177
+ };
1178
+ readonly scaleDownStabilizationSeconds: {
1179
+ readonly type: "integer";
1180
+ readonly minimum: 0;
1181
+ readonly maximum: number;
1182
+ };
1183
+ readonly autoscaling: {
1184
+ readonly type: readonly ["object", "null"];
1185
+ readonly additionalProperties: false;
1186
+ readonly properties: {
1187
+ readonly minReplicas: {
1188
+ readonly type: "integer";
1189
+ readonly minimum: 1;
1190
+ readonly maximum: 8;
1191
+ };
1192
+ readonly cpuUtilizationPercent: {
1193
+ readonly type: readonly ["integer", "null"];
1194
+ readonly minimum: number;
1195
+ readonly maximum: number;
1196
+ };
1197
+ readonly concurrencyPerReplica: {
1198
+ readonly type: readonly ["integer", "null"];
1199
+ readonly minimum: number;
1200
+ readonly maximum: number;
1201
+ };
1202
+ readonly scaleUpStabilizationSeconds: {
1203
+ readonly type: "integer";
1204
+ readonly minimum: 0;
1205
+ readonly maximum: 3600;
1206
+ };
1207
+ readonly scaleDownStabilizationSeconds: {
1208
+ readonly type: "integer";
1209
+ readonly minimum: 0;
1210
+ readonly maximum: 3600;
1211
+ };
1212
+ };
1213
+ };
1214
+ readonly rollout: {
1215
+ readonly type: readonly ["object", "null"];
1216
+ readonly additionalProperties: false;
1217
+ readonly properties: {
1218
+ readonly maxSurge: {
1219
+ readonly type: readonly ["integer", "null"];
1220
+ readonly minimum: number;
1221
+ readonly maximum: number;
1222
+ };
1223
+ readonly maxUnavailable: {
1224
+ readonly type: readonly ["integer", "null"];
1225
+ readonly minimum: number;
1226
+ readonly maximum: number;
1227
+ };
1228
+ readonly progressDeadlineSeconds: {
1229
+ readonly type: readonly ["integer", "null"];
1230
+ readonly minimum: number;
1231
+ readonly maximum: number;
1232
+ };
1233
+ };
1234
+ };
1235
+ };
1236
+ };
1237
+ readonly roles: {
1238
+ readonly description: string;
1239
+ readonly type: "object";
1240
+ readonly additionalProperties: false;
1241
+ readonly properties: {
1242
+ readonly probe: {
1243
+ readonly type: "object";
1244
+ readonly additionalProperties: false;
1245
+ readonly oneOf: readonly [{
1246
+ readonly required: readonly ["http"];
1247
+ }, {
1248
+ readonly required: readonly ["command"];
1249
+ }];
1250
+ readonly properties: {
1251
+ readonly http: {
1252
+ readonly type: "object";
1253
+ readonly additionalProperties: false;
1254
+ readonly required: readonly ["path"];
1255
+ readonly properties: {
1256
+ readonly path: {
1257
+ readonly type: "string";
1258
+ readonly minLength: 1;
1259
+ readonly maxLength: 512;
1260
+ readonly pattern: "^/";
1261
+ };
1262
+ readonly port: {
1263
+ readonly type: "string";
1264
+ readonly minLength: 1;
1265
+ readonly maxLength: 32;
1266
+ readonly description: "A runtime.ports name; the primary port by default";
1267
+ };
1268
+ };
1269
+ };
1270
+ readonly command: {
1271
+ readonly type: "array";
1272
+ readonly minItems: 1;
1273
+ readonly maxItems: 32;
1274
+ readonly items: {
1275
+ readonly type: "string";
1276
+ readonly minLength: 1;
1277
+ readonly maxLength: 2048;
1278
+ };
1279
+ };
1280
+ readonly intervalSeconds: {
1281
+ readonly type: "integer";
1282
+ readonly minimum: 1;
1283
+ readonly maximum: 60;
1284
+ };
1285
+ readonly timeoutSeconds: {
1286
+ readonly type: "integer";
1287
+ readonly minimum: 1;
1288
+ readonly maximum: 30;
1289
+ };
1290
+ readonly successThreshold: {
1291
+ readonly type: "integer";
1292
+ readonly minimum: 1;
1293
+ readonly maximum: 10;
1294
+ };
1295
+ };
1296
+ };
1297
+ readonly byOrdinal: {
1298
+ readonly type: "object";
1299
+ readonly propertyNames: {
1300
+ readonly pattern: "^(0|[1-9][0-9]?)$";
1301
+ };
1302
+ readonly additionalProperties: {
1303
+ readonly type: "string";
1304
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
1305
+ readonly not: {
1306
+ readonly const: "unknown";
1307
+ };
1308
+ };
1309
+ };
1310
+ readonly default: {
1311
+ readonly type: "string";
1312
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
1313
+ readonly not: {
1314
+ readonly const: "unknown";
1315
+ };
1316
+ };
1317
+ };
1318
+ readonly oneOf: readonly [{
1319
+ readonly required: readonly ["probe"];
1320
+ readonly not: {
1321
+ readonly anyOf: readonly [{
1322
+ readonly required: readonly ["byOrdinal"];
1323
+ }, {
1324
+ readonly required: readonly ["default"];
1325
+ }];
1326
+ };
1327
+ }, {
1328
+ readonly not: {
1329
+ readonly required: readonly ["probe"];
1330
+ };
1331
+ readonly anyOf: readonly [{
1332
+ readonly required: readonly ["byOrdinal"];
1333
+ }, {
1334
+ readonly required: readonly ["default"];
1335
+ }];
1336
+ }];
1337
+ };
1338
+ readonly hooks: {
1339
+ readonly description: string;
1340
+ readonly type: "object";
1341
+ readonly additionalProperties: false;
1342
+ readonly properties: {
1343
+ readonly init: {
1344
+ readonly type: "object";
1345
+ readonly additionalProperties: false;
1346
+ readonly required: readonly ["command"];
1347
+ readonly properties: {
1348
+ readonly command: {
1349
+ readonly type: "array";
1350
+ readonly minItems: 1;
1351
+ readonly maxItems: 32;
1352
+ readonly items: {
1353
+ readonly type: "string";
1354
+ readonly minLength: 1;
1355
+ readonly maxLength: 2048;
1356
+ };
1357
+ };
1358
+ readonly when: {
1359
+ readonly enum: readonly ["always", "emptyVolume"];
1360
+ readonly description: "always (default), or emptyVolume";
1361
+ };
1362
+ readonly timeoutSeconds: {
1363
+ readonly type: "integer";
1364
+ readonly minimum: 1;
1365
+ readonly maximum: 3600;
1366
+ readonly description: "Default 600; the start fails past it";
1367
+ };
1368
+ };
1369
+ };
1370
+ };
1371
+ };
1372
+ readonly build: {
1373
+ readonly type: readonly ["object", "null"];
1374
+ readonly additionalProperties: false;
1375
+ readonly properties: {
1376
+ readonly system: {
1377
+ readonly $ref: "#/definitions/system";
1378
+ };
1379
+ readonly dependencies: {
1380
+ readonly type: readonly ["array", "null"];
1381
+ readonly maxItems: 200;
1382
+ readonly items: {
1383
+ readonly type: "string";
1384
+ readonly minLength: 1;
1385
+ readonly maxLength: 512;
1386
+ };
1387
+ readonly description: "Language packages, the same list for every runtime: node name@version (npm), python a pip requirement such as name==version, go module@version. Merged into package.json / requirements.txt / go.mod for the build; the same package declared there with another version is an error. Where the platform does not enable it yet, a deploy ignores it with a warning.";
1388
+ };
1389
+ };
1390
+ };
1391
+ readonly system: {
1392
+ readonly description: "OS packages installed into the function image (Debian bookworm; Node.js and Python today, Go coming soon). Removing the block removes them on the next deploy.";
1393
+ readonly type: readonly ["object", "null"];
1394
+ readonly additionalProperties: false;
1395
+ readonly properties: {
1396
+ readonly presets: {
1397
+ readonly type: readonly ["array", "null"];
1398
+ readonly maxItems: 8;
1399
+ readonly uniqueItems: true;
1400
+ readonly items: {
1401
+ readonly anyOf: readonly [{
1402
+ readonly enum: readonly ["ffmpeg", "fonts", "ghostscript", "imagemagick", "libvips", "poppler", "tesseract"];
1403
+ readonly description: "A platform preset (Debian bookworm packages plus env)";
1404
+ }, {
1405
+ readonly type: "object";
1406
+ readonly required: readonly ["name"];
1407
+ readonly additionalProperties: false;
1408
+ readonly description: "A preset with options (tesseract only)";
1409
+ readonly properties: {
1410
+ readonly name: {
1411
+ readonly enum: readonly ["tesseract"];
1412
+ };
1413
+ readonly langs: {
1414
+ readonly type: readonly ["array", "null"];
1415
+ readonly maxItems: 8;
1416
+ readonly uniqueItems: true;
1417
+ readonly items: {
1418
+ readonly enum: readonly ["ara", "bul", "ces", "chi-sim", "chi-tra", "dan", "deu", "ell", "eng", "est", "fin", "fra", "heb", "hin", "hrv", "hun", "ind", "ita", "jpn", "kat", "kaz", "kor", "lav", "lit", "nld", "nor", "pol", "por", "ron", "rus", "slk", "slv", "spa", "srp", "swe", "tha", "tur", "ukr", "vie"];
1419
+ };
1420
+ readonly description: "Extra OCR languages";
1421
+ };
1422
+ };
1423
+ }];
1424
+ };
1425
+ };
1426
+ readonly packages: {
1427
+ readonly type: readonly ["array", "null"];
1428
+ readonly maxItems: 10;
1429
+ readonly uniqueItems: true;
1430
+ readonly items: {
1431
+ readonly type: "string";
1432
+ readonly pattern: "^(?!.*\\.\\.)[a-z0-9](?:[a-z0-9+.-]{0,61}[a-z0-9])?(=[A-Za-z0-9.+~:_-]{1,64})?$";
1433
+ readonly not: {
1434
+ readonly pattern: "^(systemd.*|init|sudo|sudo-ldap|doas|openssh-server|docker.*|containerd.*|podman.*|runc|crun|linux-image-.*|linux-headers-.*|.*-dkms|apt-transport-.*|apt|dpkg|cron|anacron|rsyslog|udev|dbus)(=.*)?$";
1435
+ };
1436
+ readonly description: "Debian package, optionally name=version (daemons, privilege tools, kernels and package tooling are refused)";
1437
+ };
1438
+ };
1439
+ };
1440
+ };
1441
+ };
1442
+ };
1443
+ /** The keys of one service block (inquir.yaml services.web; the platform's INQUIR_SERVICE_KEYS). */
1444
+ export declare const INQUIR_SERVICE_KEYS: readonly ["build", "imageRef", "runtime", "env", "scale", "networkPolicy", "scaling", "location"];
1445
+ /** The stack keys an inquir-compose service entry adds (the platform's STACK_KEYS). */
1446
+ export declare const COMPOSE_STACK_KEYS: readonly ["path", "title", "dependsOn", "variables", "buildArgs"];
1447
+ /**
1448
+ * JSON Schema (draft-07) of inquir-compose.yaml, for editors
1449
+ * (docs/roadmap/INQUIR_COMPOSE.md §3). An inline service is inquir.yaml's
1450
+ * definitions.service plus the stack keys; references ({{...}}) and the
1451
+ * cross-field rules are the platform validator's (POST /v1/compose/validate).
1452
+ */
1453
+ export declare const INQUIR_COMPOSE_YAML_JSON_SCHEMA: {
1454
+ readonly $schema: "http://json-schema.org/draft-07/schema#";
1455
+ readonly $id: "https://inquir.org/schemas/inquir-compose.yaml.json";
1456
+ readonly title: "inquir-compose.yaml";
1457
+ readonly description: "A stack of Inquir services: each a folder with its own inquir.yaml (path) or an inline inquir.yaml services.web block.";
1458
+ readonly type: "object";
1459
+ readonly required: readonly ["version", "services"];
1460
+ readonly additionalProperties: false;
1461
+ readonly patternProperties: {
1462
+ readonly '^x-': {
1463
+ readonly description: "Ignored by the platform: a place for YAML anchors";
1464
+ };
1465
+ };
1466
+ readonly properties: {
1467
+ readonly version: {
1468
+ readonly const: 1;
1469
+ };
1470
+ readonly metadata: {
1471
+ readonly type: "object";
1472
+ readonly additionalProperties: false;
1473
+ readonly required: readonly ["title"];
1474
+ readonly properties: {
1475
+ readonly title: {
1476
+ readonly anyOf: readonly [{
1477
+ readonly type: "string";
1478
+ readonly minLength: 1;
1479
+ readonly maxLength: 8192;
1480
+ }, {
1481
+ readonly type: "object";
1482
+ readonly additionalProperties: false;
1483
+ readonly required: readonly ["en", "ru"];
1484
+ readonly properties: {
1485
+ readonly en: {
1486
+ readonly type: "string";
1487
+ readonly minLength: 1;
1488
+ readonly maxLength: 8192;
1489
+ };
1490
+ readonly ru: {
1491
+ readonly type: "string";
1492
+ readonly minLength: 1;
1493
+ readonly maxLength: 8192;
1494
+ };
1495
+ };
1496
+ }];
1497
+ };
1498
+ readonly description: {
1499
+ readonly anyOf: readonly [{
1500
+ readonly type: "string";
1501
+ readonly minLength: 1;
1502
+ readonly maxLength: 8192;
1503
+ }, {
1504
+ readonly type: "object";
1505
+ readonly additionalProperties: false;
1506
+ readonly required: readonly ["en", "ru"];
1507
+ readonly properties: {
1508
+ readonly en: {
1509
+ readonly type: "string";
1510
+ readonly minLength: 1;
1511
+ readonly maxLength: 8192;
1512
+ };
1513
+ readonly ru: {
1514
+ readonly type: "string";
1515
+ readonly minLength: 1;
1516
+ readonly maxLength: 8192;
1517
+ };
1518
+ };
1519
+ }];
1520
+ };
1521
+ readonly icon: {
1522
+ readonly type: "string";
1523
+ readonly pattern: "^[a-z][a-z0-9-]{0,31}$";
1524
+ };
1525
+ readonly category: {
1526
+ readonly enum: readonly ["database", "cache", "web", "agent", "bot", "other"];
1527
+ };
1528
+ readonly docsUrl: {
1529
+ readonly type: "string";
1530
+ readonly pattern: "^https://";
1531
+ readonly maxLength: 2048;
1532
+ };
1533
+ readonly notes: {
1534
+ readonly type: "array";
1535
+ readonly maxItems: 30;
1536
+ readonly items: {
1537
+ readonly anyOf: readonly [{
1538
+ readonly type: "string";
1539
+ readonly minLength: 1;
1540
+ readonly maxLength: 8192;
1541
+ }, {
1542
+ readonly type: "object";
1543
+ readonly additionalProperties: false;
1544
+ readonly required: readonly ["en", "ru"];
1545
+ readonly properties: {
1546
+ readonly en: {
1547
+ readonly type: "string";
1548
+ readonly minLength: 1;
1549
+ readonly maxLength: 8192;
1550
+ };
1551
+ readonly ru: {
1552
+ readonly type: "string";
1553
+ readonly minLength: 1;
1554
+ readonly maxLength: 8192;
1555
+ };
1556
+ };
1557
+ }];
1558
+ };
1559
+ };
1560
+ readonly minPlan: {
1561
+ readonly enum: readonly ["free", "simple", "pro", "enterprise"];
1562
+ readonly description: "A display hint; the deploy judges the real plan";
1563
+ };
1564
+ };
1565
+ };
1566
+ readonly inputs: {
1567
+ readonly type: "object";
1568
+ readonly maxProperties: 64;
1569
+ readonly description: "Values asked at deploy time";
1570
+ readonly propertyNames: {
1571
+ readonly pattern: "^[A-Za-z_][A-Za-z0-9_]*$";
1572
+ };
1573
+ readonly additionalProperties: {
1574
+ readonly type: "object";
1575
+ readonly additionalProperties: false;
1576
+ readonly required: readonly ["label"];
1577
+ readonly properties: {
1578
+ readonly label: {
1579
+ readonly anyOf: readonly [{
1580
+ readonly type: "string";
1581
+ readonly minLength: 1;
1582
+ readonly maxLength: 8192;
1583
+ }, {
1584
+ readonly type: "object";
1585
+ readonly additionalProperties: false;
1586
+ readonly required: readonly ["en", "ru"];
1587
+ readonly properties: {
1588
+ readonly en: {
1589
+ readonly type: "string";
1590
+ readonly minLength: 1;
1591
+ readonly maxLength: 8192;
1592
+ };
1593
+ readonly ru: {
1594
+ readonly type: "string";
1595
+ readonly minLength: 1;
1596
+ readonly maxLength: 8192;
1597
+ };
1598
+ };
1599
+ }];
1600
+ };
1601
+ readonly hint: {
1602
+ readonly anyOf: readonly [{
1603
+ readonly type: "string";
1604
+ readonly minLength: 1;
1605
+ readonly maxLength: 8192;
1606
+ }, {
1607
+ readonly type: "object";
1608
+ readonly additionalProperties: false;
1609
+ readonly required: readonly ["en", "ru"];
1610
+ readonly properties: {
1611
+ readonly en: {
1612
+ readonly type: "string";
1613
+ readonly minLength: 1;
1614
+ readonly maxLength: 8192;
1615
+ };
1616
+ readonly ru: {
1617
+ readonly type: "string";
1618
+ readonly minLength: 1;
1619
+ readonly maxLength: 8192;
1620
+ };
1621
+ };
1622
+ }];
1623
+ };
1624
+ readonly secret: {
1625
+ readonly type: "boolean";
1626
+ readonly description: "Typed at deploy time, stored encrypted, never echoed; no default";
1627
+ };
1628
+ readonly required: {
1629
+ readonly type: "boolean";
1630
+ };
1631
+ readonly default: {
1632
+ readonly type: "string";
1633
+ readonly maxLength: 4096;
1634
+ };
1635
+ readonly minLength: {
1636
+ readonly type: "integer";
1637
+ readonly minimum: 0;
1638
+ readonly maximum: 4096;
1639
+ };
1640
+ readonly maxLength: {
1641
+ readonly type: "integer";
1642
+ readonly minimum: 1;
1643
+ readonly maximum: 4096;
1644
+ };
1645
+ readonly options: {
1646
+ readonly type: "array";
1647
+ readonly minItems: 1;
1648
+ readonly maxItems: 32;
1649
+ readonly items: {
1650
+ readonly type: "string";
1651
+ readonly minLength: 1;
1652
+ readonly maxLength: 256;
1653
+ };
1654
+ };
1655
+ readonly pattern: {
1656
+ readonly enum: readonly ["username", "hostname", "email", "https-url", "integer", "csv-integers"];
1657
+ };
1658
+ };
1659
+ readonly if: {
1660
+ readonly required: readonly ["secret"];
1661
+ readonly properties: {
1662
+ readonly secret: {
1663
+ readonly const: true;
1664
+ };
1665
+ };
1666
+ };
1667
+ readonly then: {
1668
+ readonly not: {
1669
+ readonly required: readonly ["default"];
1670
+ };
1671
+ };
1672
+ };
1673
+ };
1674
+ readonly generate: {
1675
+ readonly type: "object";
1676
+ readonly maxProperties: 32;
1677
+ readonly description: "Credentials the platform generates once per stack: {{generated.<key>}}";
1678
+ readonly propertyNames: {
1679
+ readonly pattern: "^[a-z][a-z0-9-]{0,63}$";
1680
+ };
1681
+ readonly additionalProperties: {
1682
+ readonly type: "object";
1683
+ readonly additionalProperties: false;
1684
+ readonly required: readonly ["bytes", "encoding"];
1685
+ readonly properties: {
1686
+ readonly bytes: {
1687
+ readonly type: "integer";
1688
+ readonly minimum: 16;
1689
+ readonly maximum: 64;
1690
+ };
1691
+ readonly encoding: {
1692
+ readonly enum: readonly ["hex", "base64", "base64url"];
1693
+ };
1694
+ };
1695
+ };
1696
+ };
1697
+ readonly project: {
1698
+ readonly type: "object";
1699
+ readonly additionalProperties: false;
1700
+ readonly properties: {
1701
+ readonly placement: {
1702
+ readonly enum: readonly ["new", "existing"];
1703
+ };
1704
+ readonly name: {
1705
+ readonly type: "string";
1706
+ readonly minLength: 1;
1707
+ readonly maxLength: 64;
1708
+ };
1709
+ };
1710
+ };
1711
+ readonly defaults: {
1712
+ readonly type: "object";
1713
+ readonly additionalProperties: false;
1714
+ readonly description: "Merged under every inline service: location, networkPolicy, scaling and runtime.resources only";
1715
+ readonly properties: {
1716
+ readonly location: {
1717
+ readonly type: "string";
1718
+ readonly minLength: 1;
1719
+ readonly maxLength: 32;
1720
+ };
1721
+ readonly networkPolicy: {
1722
+ readonly $ref: "#/definitions/networkPolicy";
1723
+ };
1724
+ readonly scaling: {
1725
+ readonly $ref: "#/definitions/scaling";
1726
+ };
1727
+ readonly runtime: {
1728
+ readonly type: "object";
1729
+ readonly additionalProperties: false;
1730
+ readonly properties: {
1731
+ readonly resources: {
1732
+ readonly type: "object";
1733
+ };
1734
+ };
1735
+ };
1736
+ };
1737
+ };
1738
+ readonly services: {
1739
+ readonly type: "object";
1740
+ readonly minProperties: 1;
1741
+ readonly maxProperties: 32;
1742
+ readonly propertyNames: {
1743
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
1744
+ };
1745
+ readonly additionalProperties: {
1746
+ readonly allOf: readonly [{
1747
+ readonly $ref: "#/definitions/service";
1748
+ }];
1749
+ readonly type: "object";
1750
+ readonly propertyNames: {
1751
+ readonly enum: readonly ["build", "imageRef", "runtime", "env", "scale", "networkPolicy", "scaling", "location", "path", "title", "dependsOn", "variables", "buildArgs"];
1752
+ };
1753
+ readonly properties: {
1754
+ readonly path: {
1755
+ readonly type: "string";
1756
+ readonly minLength: 1;
1757
+ readonly maxLength: 1024;
1758
+ readonly description: "A folder with its own inquir.yaml (then only stack keys sit next to it)";
1759
+ };
1760
+ readonly title: {
1761
+ readonly type: "string";
1762
+ readonly minLength: 1;
1763
+ readonly maxLength: 80;
1764
+ };
1765
+ readonly dependsOn: {
1766
+ readonly type: "array";
1767
+ readonly maxItems: 32;
1768
+ readonly items: {
1769
+ readonly type: "string";
1770
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
1771
+ };
1772
+ };
1773
+ readonly variables: {
1774
+ readonly type: "object";
1775
+ readonly maxProperties: 128;
1776
+ readonly description: "The application variables; references {{inputs.X}}, {{generated.x}}, {{services.s.privateHost}}, ... resolve here";
1777
+ readonly propertyNames: {
1778
+ readonly pattern: "^[A-Za-z_][A-Za-z0-9_]*$";
1779
+ };
1780
+ readonly additionalProperties: {
1781
+ readonly type: "string";
1782
+ readonly maxLength: 32768;
1783
+ };
1784
+ };
1785
+ readonly buildArgs: {
1786
+ readonly type: "object";
1787
+ readonly maxProperties: 32;
1788
+ readonly description: "Build arguments for this deploy: no secrets";
1789
+ readonly additionalProperties: {
1790
+ readonly type: "string";
1791
+ readonly maxLength: 4096;
1792
+ };
1793
+ };
1794
+ };
1795
+ };
1796
+ };
1797
+ readonly entrypoint: {
1798
+ readonly type: "string";
1799
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
1800
+ readonly description: "The public service opened after deploy";
1801
+ };
1802
+ readonly files: {
1803
+ readonly type: "object";
1804
+ readonly description: "Bundle form: the embedded build tree, path -> content";
1805
+ readonly additionalProperties: {
1806
+ readonly type: "string";
1807
+ };
1808
+ };
1809
+ };
1810
+ readonly definitions: {
1811
+ readonly service: {
1812
+ readonly description: "One service: services.web of inquir.yaml, and an inline service of inquir-compose.yaml (the same block).";
1813
+ readonly type: "object";
1814
+ readonly properties: {
1815
+ readonly build: {
1816
+ readonly type: "object";
1817
+ readonly description: "The Dockerfile build: context (a folder inside the source), dockerfile (relative to the context), target, args";
1818
+ readonly properties: {
1819
+ readonly context: {
1820
+ readonly type: "string";
1821
+ readonly minLength: 1;
1822
+ readonly maxLength: 1024;
1823
+ };
1824
+ readonly dockerfile: {
1825
+ readonly type: "string";
1826
+ readonly minLength: 1;
1827
+ readonly maxLength: 1024;
1828
+ };
1829
+ readonly target: {
1830
+ readonly type: "string";
1831
+ readonly minLength: 1;
1832
+ readonly maxLength: 128;
1833
+ };
1834
+ readonly args: {
1835
+ readonly type: "object";
1836
+ readonly maxProperties: 32;
1837
+ readonly additionalProperties: {
1838
+ readonly type: "string";
1839
+ readonly maxLength: 4096;
1840
+ };
1841
+ };
1842
+ };
1843
+ };
1844
+ readonly env: {
1845
+ readonly type: "object";
1846
+ readonly description: "Non-secret defaults, frozen with the build; application variables win. Never secrets: inquir.yaml is committed.";
1847
+ readonly additionalProperties: {
1848
+ readonly type: "string";
1849
+ readonly maxLength: 32768;
1850
+ };
1851
+ };
1852
+ readonly runtime: {
1853
+ readonly type: "object";
1854
+ readonly description: "The pod template, frozen with each release (port, ports, volumes, healthcheck, hooks, roles, ...)";
1855
+ readonly properties: {
1856
+ readonly roles: {
1857
+ readonly $ref: "#/definitions/roles";
1858
+ };
1859
+ readonly hooks: {
1860
+ readonly $ref: "#/definitions/hooks";
1861
+ };
1862
+ };
1863
+ };
1864
+ readonly scale: {
1865
+ readonly $ref: "#/definitions/scale";
1866
+ };
1867
+ readonly imageRef: {
1868
+ readonly type: "string";
1869
+ readonly maxLength: 512;
1870
+ readonly pattern: "^[A-Za-z0-9][A-Za-z0-9._:/-]*@sha256:[a-f0-9]{64}$";
1871
+ readonly description: string;
1872
+ };
1873
+ readonly networkPolicy: {
1874
+ readonly $ref: "#/definitions/networkPolicy";
1875
+ };
1876
+ readonly scaling: {
1877
+ readonly $ref: "#/definitions/scaling";
1878
+ };
1879
+ readonly location: {
1880
+ readonly type: "string";
1881
+ readonly minLength: 1;
1882
+ readonly maxLength: 32;
1883
+ readonly description: string;
1884
+ };
1885
+ };
1886
+ readonly not: {
1887
+ readonly required: readonly ["imageRef", "build"];
1888
+ };
1889
+ };
1890
+ readonly scale: {
1891
+ readonly description: "Alpha: stateful replicas may still change and have limits; keep backups of the data they hold. Replica intent: stateless (identical replicas) or stateful (ordered replicas 0..N-1, each with its own volumes, private name and address). Where stateful replicas are not enabled for the workspace, a deploy that declares it is refused. Keys declared here are managed by this file: other surfaces change them only with an explicit override.";
1892
+ readonly type: "object";
1893
+ readonly additionalProperties: false;
1894
+ readonly properties: {
1895
+ readonly mode: {
1896
+ readonly enum: readonly ["stateless", "stateful"];
1897
+ };
1898
+ readonly replicas: {
1899
+ readonly maximum?: number | undefined;
1900
+ readonly type: "integer";
1901
+ readonly minimum: number;
1902
+ };
1903
+ readonly podManagement: {
1904
+ readonly enum: readonly ["ordered", "parallel"];
1905
+ };
1906
+ readonly update: {
1907
+ readonly type: "object";
1908
+ readonly additionalProperties: false;
1909
+ readonly properties: {
1910
+ readonly order: {
1911
+ readonly enum: readonly ["reverse", "forward"];
1912
+ };
1913
+ readonly partition: {
1914
+ readonly maximum?: number | undefined;
1915
+ readonly type: "integer";
1916
+ readonly minimum: number;
1917
+ };
1918
+ readonly maxUnavailable: {
1919
+ readonly maximum?: number | undefined;
1920
+ readonly type: "integer";
1921
+ readonly minimum: number;
1922
+ };
1923
+ readonly minReadySeconds: {
1924
+ readonly maximum?: number | undefined;
1925
+ readonly type: "integer";
1926
+ readonly minimum: number;
1927
+ };
1928
+ readonly progressDeadlineSeconds: {
1929
+ readonly maximum?: number | undefined;
1930
+ readonly type: "integer";
1931
+ readonly minimum: number;
1932
+ };
1933
+ };
1934
+ };
1935
+ readonly placement: {
1936
+ readonly type: "object";
1937
+ readonly additionalProperties: false;
1938
+ readonly properties: {
1939
+ readonly spread: {
1940
+ readonly enum: readonly ["host", "location"];
1941
+ };
1942
+ readonly allowSameHost: {
1943
+ readonly type: "boolean";
1944
+ };
1945
+ };
1946
+ };
1947
+ readonly hostLoss: {
1948
+ readonly enum: readonly ["wait", "rebuild"];
1949
+ };
1950
+ readonly hostLossGraceSeconds: {
1951
+ readonly maximum?: number | undefined;
1952
+ readonly type: "integer";
1953
+ readonly minimum: number;
1954
+ };
1955
+ readonly retention: {
1956
+ readonly type: "object";
1957
+ readonly additionalProperties: false;
1958
+ readonly properties: {
1959
+ readonly whenScaledDown: {
1960
+ readonly enum: readonly ["retain", "delete"];
1961
+ };
1962
+ readonly whenDeleted: {
1963
+ readonly enum: readonly ["retain", "delete"];
1964
+ };
1965
+ readonly retentionDays: {
1966
+ readonly maximum?: number | undefined;
1967
+ readonly type: "integer";
1968
+ readonly minimum: number;
1969
+ };
1970
+ };
1971
+ };
1972
+ readonly endpoints: {
1973
+ readonly type: "object";
1974
+ readonly maxProperties: 8;
1975
+ readonly propertyNames: {
1976
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
1977
+ readonly not: {
1978
+ readonly const: "default";
1979
+ };
1980
+ };
1981
+ readonly additionalProperties: {
1982
+ readonly type: "object";
1983
+ readonly additionalProperties: false;
1984
+ readonly oneOf: readonly [{
1985
+ readonly required: readonly ["role"];
1986
+ }, {
1987
+ readonly required: readonly ["ordinals"];
1988
+ }];
1989
+ readonly if: {
1990
+ readonly required: readonly ["max"];
1991
+ };
1992
+ readonly then: {
1993
+ readonly not: {
1994
+ readonly required: readonly ["fallback"];
1995
+ };
1996
+ };
1997
+ readonly properties: {
1998
+ readonly role: {
1999
+ readonly type: "string";
2000
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
2001
+ };
2002
+ readonly ordinals: {
2003
+ readonly type: "string";
2004
+ readonly pattern: "^[0-9]{1,2}(-([0-9]{1,2})?)?(,[0-9]{1,2}(-([0-9]{1,2})?)?)*$";
2005
+ };
2006
+ readonly max: {
2007
+ readonly const: 1;
2008
+ };
2009
+ readonly fallback: {
2010
+ readonly type: "string";
2011
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
2012
+ };
2013
+ };
2014
+ };
2015
+ };
2016
+ readonly public: {
2017
+ readonly type: "string";
2018
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
2019
+ };
2020
+ readonly backup: {
2021
+ readonly oneOf: readonly [{
2022
+ readonly type: "object";
2023
+ readonly additionalProperties: false;
2024
+ readonly required: readonly ["from"];
2025
+ readonly properties: {
2026
+ readonly from: {
2027
+ readonly enum: readonly ["all", "none"];
2028
+ };
2029
+ };
2030
+ }, {
2031
+ readonly type: "object";
2032
+ readonly additionalProperties: false;
2033
+ readonly required: readonly ["ordinals"];
2034
+ readonly properties: {
2035
+ readonly ordinals: {
2036
+ readonly type: "array";
2037
+ readonly minItems: 1;
2038
+ readonly maxItems: 8;
2039
+ readonly items: {
2040
+ readonly maximum?: number | undefined;
2041
+ readonly type: "integer";
2042
+ readonly minimum: number;
2043
+ };
2044
+ };
2045
+ };
2046
+ }, {
2047
+ readonly type: "object";
2048
+ readonly additionalProperties: false;
2049
+ readonly required: readonly ["role"];
2050
+ readonly properties: {
2051
+ readonly role: {
2052
+ readonly type: "string";
2053
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
2054
+ };
2055
+ readonly fallback: {
2056
+ readonly type: "boolean";
2057
+ };
2058
+ };
2059
+ }];
2060
+ };
2061
+ readonly failover: {
2062
+ readonly type: "object";
2063
+ readonly additionalProperties: false;
2064
+ readonly required: readonly ["enabled"];
2065
+ readonly properties: {
2066
+ readonly enabled: {
2067
+ readonly type: "boolean";
2068
+ };
2069
+ readonly leaderRole: {
2070
+ readonly type: "string";
2071
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
2072
+ };
2073
+ readonly replicaRole: {
2074
+ readonly type: "string";
2075
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
2076
+ };
2077
+ readonly leaseTtlSeconds: {
2078
+ readonly maximum?: number | undefined;
2079
+ readonly type: "integer";
2080
+ readonly minimum: number;
2081
+ };
2082
+ readonly detectAfterSeconds: {
2083
+ readonly maximum?: number | undefined;
2084
+ readonly type: "integer";
2085
+ readonly minimum: number;
2086
+ };
2087
+ readonly rank: {
2088
+ readonly type: "object";
2089
+ readonly additionalProperties: false;
2090
+ readonly required: readonly ["command"];
2091
+ readonly properties: {
2092
+ readonly command: {
2093
+ readonly type: "array";
2094
+ readonly minItems: 1;
2095
+ readonly maxItems: 32;
2096
+ readonly items: {
2097
+ readonly type: "string";
2098
+ readonly minLength: 1;
2099
+ readonly maxLength: 2048;
2100
+ };
2101
+ };
2102
+ readonly timeoutSeconds: {
2103
+ readonly type: "integer";
2104
+ readonly minimum: 1;
2105
+ readonly maximum: 3600;
2106
+ };
2107
+ };
2108
+ };
2109
+ readonly maxRankLag: {
2110
+ readonly maximum?: number | undefined;
2111
+ readonly type: "integer";
2112
+ readonly minimum: number;
2113
+ };
2114
+ readonly promote: {
2115
+ readonly type: "object";
2116
+ readonly additionalProperties: false;
2117
+ readonly required: readonly ["command"];
2118
+ readonly properties: {
2119
+ readonly command: {
2120
+ readonly type: "array";
2121
+ readonly minItems: 1;
2122
+ readonly maxItems: 32;
2123
+ readonly items: {
2124
+ readonly type: "string";
2125
+ readonly minLength: 1;
2126
+ readonly maxLength: 2048;
2127
+ };
2128
+ };
2129
+ readonly timeoutSeconds: {
2130
+ readonly type: "integer";
2131
+ readonly minimum: 1;
2132
+ readonly maximum: 3600;
2133
+ };
2134
+ };
2135
+ };
2136
+ readonly rejoin: {
2137
+ readonly type: "object";
2138
+ readonly additionalProperties: false;
2139
+ readonly required: readonly ["command"];
2140
+ readonly properties: {
2141
+ readonly command: {
2142
+ readonly type: "array";
2143
+ readonly minItems: 1;
2144
+ readonly maxItems: 32;
2145
+ readonly items: {
2146
+ readonly type: "string";
2147
+ readonly minLength: 1;
2148
+ readonly maxLength: 2048;
2149
+ };
2150
+ };
2151
+ readonly timeoutSeconds: {
2152
+ readonly type: "integer";
2153
+ readonly minimum: 1;
2154
+ readonly maximum: 3600;
2155
+ };
2156
+ };
2157
+ };
2158
+ readonly isolation: {
2159
+ readonly enum: readonly ["failsafe", "fence"];
2160
+ };
2161
+ readonly switchoverOnUpdate: {
2162
+ readonly type: "boolean";
2163
+ };
2164
+ };
2165
+ readonly if: {
2166
+ readonly properties: {
2167
+ readonly enabled: {
2168
+ readonly const: true;
2169
+ };
2170
+ };
2171
+ };
2172
+ readonly then: {
2173
+ readonly required: readonly ["leaderRole", "rank", "promote"];
2174
+ };
2175
+ };
2176
+ readonly ordinals: {
2177
+ readonly type: "object";
2178
+ readonly propertyNames: {
2179
+ readonly pattern: "^(0|[1-9][0-9]?)$";
2180
+ };
2181
+ readonly additionalProperties: {
2182
+ readonly type: "object";
2183
+ readonly additionalProperties: false;
2184
+ readonly properties: {
2185
+ readonly resources: {
2186
+ readonly type: "object";
2187
+ readonly additionalProperties: false;
2188
+ readonly properties: {
2189
+ readonly cpuVCpus: {
2190
+ readonly type: "number";
2191
+ readonly minimum: 0.05;
2192
+ readonly maximum: 16;
2193
+ };
2194
+ readonly memoryMb: {
2195
+ readonly maximum?: number | undefined;
2196
+ readonly type: "integer";
2197
+ readonly minimum: number;
2198
+ };
2199
+ };
2200
+ };
2201
+ readonly env: {
2202
+ readonly type: "object";
2203
+ readonly maxProperties: 64;
2204
+ readonly propertyNames: {
2205
+ readonly pattern: "^[A-Za-z_][A-Za-z0-9_]*$";
2206
+ readonly maxLength: 256;
2207
+ };
2208
+ readonly additionalProperties: {
2209
+ readonly type: "string";
2210
+ readonly maxLength: 32768;
2211
+ };
2212
+ };
2213
+ readonly hostLoss: {
2214
+ readonly enum: readonly ["wait", "rebuild"];
2215
+ };
2216
+ };
2217
+ };
2218
+ };
2219
+ };
2220
+ readonly if: {
2221
+ readonly not: {
2222
+ readonly required: readonly ["mode"];
2223
+ readonly properties: {
2224
+ readonly mode: {
2225
+ readonly const: "stateful";
2226
+ };
2227
+ };
2228
+ };
2229
+ };
2230
+ readonly then: {
2231
+ readonly propertyNames: {
2232
+ readonly enum: readonly ["mode", "replicas"];
2233
+ };
2234
+ };
2235
+ };
2236
+ readonly networkPolicy: {
2237
+ readonly description: string;
2238
+ readonly type: "object";
2239
+ readonly additionalProperties: false;
2240
+ readonly properties: {
2241
+ readonly ingress: {
2242
+ readonly enum: readonly ["private", "public"];
2243
+ };
2244
+ readonly egress: {
2245
+ readonly enum: readonly ["none", "full"];
2246
+ };
2247
+ readonly allow: {
2248
+ readonly type: "array";
2249
+ readonly maxItems: 64;
2250
+ readonly items: {
2251
+ readonly type: "string";
2252
+ readonly minLength: 1;
2253
+ readonly maxLength: 253;
2254
+ };
2255
+ };
2256
+ };
2257
+ };
2258
+ readonly scaling: {
2259
+ readonly description: string;
2260
+ readonly type: "object";
2261
+ readonly additionalProperties: false;
2262
+ readonly properties: {
2263
+ readonly activation: {
2264
+ readonly enum: readonly ["always", "http", "manual"];
2265
+ };
2266
+ readonly minReplicas: {
2267
+ readonly enum: readonly [0, 1];
2268
+ };
2269
+ readonly maxReplicas: {
2270
+ readonly type: "integer";
2271
+ readonly minimum: 1;
2272
+ readonly maximum: 8;
2273
+ };
2274
+ readonly idleTimeoutSeconds: {
2275
+ readonly type: "integer";
2276
+ readonly minimum: 300;
2277
+ readonly maximum: number;
2278
+ };
2279
+ readonly activationTimeoutSeconds: {
2280
+ readonly type: "integer";
2281
+ readonly minimum: 5;
2282
+ readonly maximum: 300;
2283
+ };
2284
+ readonly scaleDownStabilizationSeconds: {
2285
+ readonly type: "integer";
2286
+ readonly minimum: 0;
2287
+ readonly maximum: number;
2288
+ };
2289
+ readonly autoscaling: {
2290
+ readonly type: readonly ["object", "null"];
2291
+ readonly additionalProperties: false;
2292
+ readonly properties: {
2293
+ readonly minReplicas: {
2294
+ readonly type: "integer";
2295
+ readonly minimum: 1;
2296
+ readonly maximum: 8;
2297
+ };
2298
+ readonly cpuUtilizationPercent: {
2299
+ readonly type: readonly ["integer", "null"];
2300
+ readonly minimum: number;
2301
+ readonly maximum: number;
2302
+ };
2303
+ readonly concurrencyPerReplica: {
2304
+ readonly type: readonly ["integer", "null"];
2305
+ readonly minimum: number;
2306
+ readonly maximum: number;
2307
+ };
2308
+ readonly scaleUpStabilizationSeconds: {
2309
+ readonly type: "integer";
2310
+ readonly minimum: 0;
2311
+ readonly maximum: 3600;
2312
+ };
2313
+ readonly scaleDownStabilizationSeconds: {
2314
+ readonly type: "integer";
2315
+ readonly minimum: 0;
2316
+ readonly maximum: 3600;
2317
+ };
2318
+ };
2319
+ };
2320
+ readonly rollout: {
2321
+ readonly type: readonly ["object", "null"];
2322
+ readonly additionalProperties: false;
2323
+ readonly properties: {
2324
+ readonly maxSurge: {
2325
+ readonly type: readonly ["integer", "null"];
2326
+ readonly minimum: number;
2327
+ readonly maximum: number;
2328
+ };
2329
+ readonly maxUnavailable: {
2330
+ readonly type: readonly ["integer", "null"];
2331
+ readonly minimum: number;
2332
+ readonly maximum: number;
2333
+ };
2334
+ readonly progressDeadlineSeconds: {
2335
+ readonly type: readonly ["integer", "null"];
2336
+ readonly minimum: number;
2337
+ readonly maximum: number;
2338
+ };
2339
+ };
2340
+ };
2341
+ };
2342
+ };
2343
+ readonly roles: {
2344
+ readonly description: string;
2345
+ readonly type: "object";
2346
+ readonly additionalProperties: false;
2347
+ readonly properties: {
2348
+ readonly probe: {
2349
+ readonly type: "object";
2350
+ readonly additionalProperties: false;
2351
+ readonly oneOf: readonly [{
2352
+ readonly required: readonly ["http"];
2353
+ }, {
2354
+ readonly required: readonly ["command"];
2355
+ }];
2356
+ readonly properties: {
2357
+ readonly http: {
2358
+ readonly type: "object";
2359
+ readonly additionalProperties: false;
2360
+ readonly required: readonly ["path"];
2361
+ readonly properties: {
2362
+ readonly path: {
2363
+ readonly type: "string";
2364
+ readonly minLength: 1;
2365
+ readonly maxLength: 512;
2366
+ readonly pattern: "^/";
2367
+ };
2368
+ readonly port: {
2369
+ readonly type: "string";
2370
+ readonly minLength: 1;
2371
+ readonly maxLength: 32;
2372
+ readonly description: "A runtime.ports name; the primary port by default";
2373
+ };
2374
+ };
2375
+ };
2376
+ readonly command: {
2377
+ readonly type: "array";
2378
+ readonly minItems: 1;
2379
+ readonly maxItems: 32;
2380
+ readonly items: {
2381
+ readonly type: "string";
2382
+ readonly minLength: 1;
2383
+ readonly maxLength: 2048;
2384
+ };
2385
+ };
2386
+ readonly intervalSeconds: {
2387
+ readonly type: "integer";
2388
+ readonly minimum: 1;
2389
+ readonly maximum: 60;
2390
+ };
2391
+ readonly timeoutSeconds: {
2392
+ readonly type: "integer";
2393
+ readonly minimum: 1;
2394
+ readonly maximum: 30;
2395
+ };
2396
+ readonly successThreshold: {
2397
+ readonly type: "integer";
2398
+ readonly minimum: 1;
2399
+ readonly maximum: 10;
2400
+ };
2401
+ };
2402
+ };
2403
+ readonly byOrdinal: {
2404
+ readonly type: "object";
2405
+ readonly propertyNames: {
2406
+ readonly pattern: "^(0|[1-9][0-9]?)$";
2407
+ };
2408
+ readonly additionalProperties: {
2409
+ readonly type: "string";
2410
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
2411
+ readonly not: {
2412
+ readonly const: "unknown";
2413
+ };
2414
+ };
2415
+ };
2416
+ readonly default: {
2417
+ readonly type: "string";
2418
+ readonly pattern: "^[a-z][a-z0-9-]{0,30}$";
2419
+ readonly not: {
2420
+ readonly const: "unknown";
2421
+ };
2422
+ };
2423
+ };
2424
+ readonly oneOf: readonly [{
2425
+ readonly required: readonly ["probe"];
2426
+ readonly not: {
2427
+ readonly anyOf: readonly [{
2428
+ readonly required: readonly ["byOrdinal"];
2429
+ }, {
2430
+ readonly required: readonly ["default"];
2431
+ }];
2432
+ };
2433
+ }, {
2434
+ readonly not: {
2435
+ readonly required: readonly ["probe"];
2436
+ };
2437
+ readonly anyOf: readonly [{
2438
+ readonly required: readonly ["byOrdinal"];
2439
+ }, {
2440
+ readonly required: readonly ["default"];
2441
+ }];
2442
+ }];
2443
+ };
2444
+ readonly hooks: {
2445
+ readonly description: string;
2446
+ readonly type: "object";
2447
+ readonly additionalProperties: false;
2448
+ readonly properties: {
2449
+ readonly init: {
2450
+ readonly type: "object";
2451
+ readonly additionalProperties: false;
2452
+ readonly required: readonly ["command"];
2453
+ readonly properties: {
2454
+ readonly command: {
2455
+ readonly type: "array";
2456
+ readonly minItems: 1;
2457
+ readonly maxItems: 32;
2458
+ readonly items: {
2459
+ readonly type: "string";
2460
+ readonly minLength: 1;
2461
+ readonly maxLength: 2048;
2462
+ };
2463
+ };
2464
+ readonly when: {
2465
+ readonly enum: readonly ["always", "emptyVolume"];
2466
+ readonly description: "always (default), or emptyVolume";
2467
+ };
2468
+ readonly timeoutSeconds: {
2469
+ readonly type: "integer";
2470
+ readonly minimum: 1;
2471
+ readonly maximum: 3600;
2472
+ readonly description: "Default 600; the start fails past it";
2473
+ };
2474
+ };
2475
+ };
2476
+ };
2477
+ };
327
2478
  readonly build: {
328
2479
  readonly type: readonly ["object", "null"];
329
2480
  readonly additionalProperties: false;