@aws/ml-container-creator 0.9.1 → 0.10.3
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.
- package/LICENSE-THIRD-PARTY +9304 -0
- package/bin/cli.js +2 -0
- package/config/bootstrap-e2e-stack.json +341 -0
- package/config/bootstrap-stack.json +40 -3
- package/config/parameter-schema-v2.json +2049 -0
- package/config/tune-catalog.json +1781 -0
- package/infra/ci-harness/buildspec.yml +1 -0
- package/infra/ci-harness/lambda/path-prover/brain.ts +306 -0
- package/infra/ci-harness/lambda/path-prover/write-results.ts +152 -0
- package/infra/ci-harness/lib/ci-harness-stack.ts +837 -7
- package/infra/ci-harness/state-machines/path-prover.asl.json +496 -0
- package/package.json +53 -68
- package/servers/base-image-picker/index.js +121 -121
- package/servers/e2e-status/index.js +297 -0
- package/servers/e2e-status/manifest.json +14 -0
- package/servers/e2e-status/package.json +15 -0
- package/servers/endpoint-picker/LICENSE +202 -0
- package/servers/endpoint-picker/index.js +536 -0
- package/servers/endpoint-picker/manifest.json +14 -0
- package/servers/endpoint-picker/package.json +18 -0
- package/servers/hyperpod-cluster-picker/index.js +125 -125
- package/servers/instance-sizer/index.js +138 -138
- package/servers/instance-sizer/lib/instance-ranker.js +76 -76
- package/servers/instance-sizer/lib/model-resolver.js +61 -61
- package/servers/instance-sizer/lib/quota-resolver.js +113 -113
- package/servers/instance-sizer/lib/vram-estimator.js +31 -31
- package/servers/lib/bedrock-client.js +38 -38
- package/servers/lib/catalogs/jumpstart-public.json +101 -16
- package/servers/lib/catalogs/model-servers.json +201 -3
- package/servers/lib/catalogs/models.json +182 -26
- package/servers/lib/custom-validators.js +13 -13
- package/servers/lib/dynamic-resolver.js +4 -4
- package/servers/marketplace-picker/index.js +342 -0
- package/servers/marketplace-picker/manifest.json +14 -0
- package/servers/marketplace-picker/package.json +18 -0
- package/servers/model-picker/index.js +382 -382
- package/servers/region-picker/index.js +56 -56
- package/servers/workload-picker/LICENSE +202 -0
- package/servers/workload-picker/catalogs/workload-profiles.json +67 -0
- package/servers/workload-picker/index.js +171 -0
- package/servers/workload-picker/manifest.json +16 -0
- package/servers/workload-picker/package.json +16 -0
- package/src/app.js +4 -390
- package/src/lib/bootstrap-command-handler.js +710 -1148
- package/src/lib/bootstrap-config.js +36 -0
- package/src/lib/bootstrap-profile-manager.js +641 -0
- package/src/lib/bootstrap-provisioners.js +421 -0
- package/src/lib/ci-register-helpers.js +74 -0
- package/src/lib/config-loader.js +408 -0
- package/src/lib/config-manager.js +66 -1685
- package/src/lib/config-mcp-client.js +118 -0
- package/src/lib/config-validator.js +634 -0
- package/src/lib/cuda-resolver.js +149 -0
- package/src/lib/e2e-catalog-validator.js +251 -3
- package/src/lib/e2e-ci-recorder.js +103 -0
- package/src/lib/generated/cli-options.js +315 -311
- package/src/lib/generated/parameter-matrix.js +671 -0
- package/src/lib/generated/validation-rules.js +71 -71
- package/src/lib/marketplace-flow.js +276 -0
- package/src/lib/mcp-query-runner.js +768 -0
- package/src/lib/parameter-schema-validator.js +62 -18
- package/src/lib/path-prover-brain.js +607 -0
- package/src/lib/prompt-runner.js +41 -1504
- package/src/lib/prompts/feature-prompts.js +172 -0
- package/src/lib/prompts/index.js +48 -0
- package/src/lib/prompts/infrastructure-prompts.js +690 -0
- package/src/lib/prompts/model-prompts.js +552 -0
- package/src/lib/prompts/project-prompts.js +82 -0
- package/src/lib/prompts.js +2 -1446
- package/src/lib/registry-command-handler.js +135 -3
- package/src/lib/secrets-prompt-runner.js +251 -0
- package/src/lib/template-variable-resolver.js +422 -0
- package/src/lib/tune-catalog-validator.js +37 -4
- package/templates/Dockerfile +9 -0
- package/templates/code/adapter_sidecar.py +444 -0
- package/templates/code/serve +6 -0
- package/templates/code/serve.d/vllm.ejs +1 -1
- package/templates/do/.benchmark_writer.py +1476 -0
- package/templates/do/.tune_helper.py +982 -57
- package/templates/do/__pycache__/.benchmark_writer.cpython-312.pyc +0 -0
- package/templates/do/adapter +149 -0
- package/templates/do/benchmark +639 -85
- package/templates/do/config +108 -5
- package/templates/do/deploy.d/managed-inference.ejs +192 -11
- package/templates/do/optimize +106 -37
- package/templates/do/register +89 -0
- package/templates/do/test +13 -0
- package/templates/do/tune +378 -59
- package/templates/do/validate +44 -4
- package/config/parameter-schema.json +0 -88
|
@@ -22,7 +22,13 @@
|
|
|
22
22
|
"modelType": "transformer",
|
|
23
23
|
"tasks": [
|
|
24
24
|
"text-generation"
|
|
25
|
-
]
|
|
25
|
+
],
|
|
26
|
+
"validation_level": "community-validated",
|
|
27
|
+
"framework_compatibility": {
|
|
28
|
+
"vllm": ">=0.3.0",
|
|
29
|
+
"sglang": ">=0.2.0"
|
|
30
|
+
},
|
|
31
|
+
"chat_template": ""
|
|
26
32
|
},
|
|
27
33
|
"meta-llama/Llama-3.2-3B-Instruct": {
|
|
28
34
|
"family": "llama-3",
|
|
@@ -47,7 +53,13 @@
|
|
|
47
53
|
"modelType": "transformer",
|
|
48
54
|
"tasks": [
|
|
49
55
|
"text-generation"
|
|
50
|
-
]
|
|
56
|
+
],
|
|
57
|
+
"validation_level": "community-validated",
|
|
58
|
+
"framework_compatibility": {
|
|
59
|
+
"vllm": ">=0.3.0",
|
|
60
|
+
"sglang": ">=0.2.0"
|
|
61
|
+
},
|
|
62
|
+
"chat_template": ""
|
|
51
63
|
},
|
|
52
64
|
"meta-llama/Llama-3.1-8B-Instruct": {
|
|
53
65
|
"family": "llama-3",
|
|
@@ -72,7 +84,13 @@
|
|
|
72
84
|
"modelType": "transformer",
|
|
73
85
|
"tasks": [
|
|
74
86
|
"text-generation"
|
|
75
|
-
]
|
|
87
|
+
],
|
|
88
|
+
"validation_level": "community-validated",
|
|
89
|
+
"framework_compatibility": {
|
|
90
|
+
"vllm": ">=0.3.0",
|
|
91
|
+
"sglang": ">=0.2.0"
|
|
92
|
+
},
|
|
93
|
+
"chat_template": ""
|
|
76
94
|
},
|
|
77
95
|
"meta-llama/Llama-3.3-70B-Instruct": {
|
|
78
96
|
"family": "llama-3",
|
|
@@ -97,7 +115,13 @@
|
|
|
97
115
|
"modelType": "transformer",
|
|
98
116
|
"tasks": [
|
|
99
117
|
"text-generation"
|
|
100
|
-
]
|
|
118
|
+
],
|
|
119
|
+
"validation_level": "community-validated",
|
|
120
|
+
"framework_compatibility": {
|
|
121
|
+
"vllm": ">=0.3.0",
|
|
122
|
+
"sglang": ">=0.2.0"
|
|
123
|
+
},
|
|
124
|
+
"chat_template": ""
|
|
101
125
|
},
|
|
102
126
|
"Qwen/Qwen3-0.6B": {
|
|
103
127
|
"family": "qwen3",
|
|
@@ -122,7 +146,13 @@
|
|
|
122
146
|
"modelType": "transformer",
|
|
123
147
|
"tasks": [
|
|
124
148
|
"text-generation"
|
|
125
|
-
]
|
|
149
|
+
],
|
|
150
|
+
"validation_level": "community-validated",
|
|
151
|
+
"framework_compatibility": {
|
|
152
|
+
"vllm": ">=0.3.0",
|
|
153
|
+
"sglang": ">=0.2.0"
|
|
154
|
+
},
|
|
155
|
+
"chat_template": ""
|
|
126
156
|
},
|
|
127
157
|
"Qwen/Qwen3-1.7B": {
|
|
128
158
|
"family": "qwen3",
|
|
@@ -147,7 +177,13 @@
|
|
|
147
177
|
"modelType": "transformer",
|
|
148
178
|
"tasks": [
|
|
149
179
|
"text-generation"
|
|
150
|
-
]
|
|
180
|
+
],
|
|
181
|
+
"validation_level": "community-validated",
|
|
182
|
+
"framework_compatibility": {
|
|
183
|
+
"vllm": ">=0.3.0",
|
|
184
|
+
"sglang": ">=0.2.0"
|
|
185
|
+
},
|
|
186
|
+
"chat_template": ""
|
|
151
187
|
},
|
|
152
188
|
"Qwen/Qwen3-4B": {
|
|
153
189
|
"family": "qwen3",
|
|
@@ -172,7 +208,13 @@
|
|
|
172
208
|
"modelType": "transformer",
|
|
173
209
|
"tasks": [
|
|
174
210
|
"text-generation"
|
|
175
|
-
]
|
|
211
|
+
],
|
|
212
|
+
"validation_level": "community-validated",
|
|
213
|
+
"framework_compatibility": {
|
|
214
|
+
"vllm": ">=0.3.0",
|
|
215
|
+
"sglang": ">=0.2.0"
|
|
216
|
+
},
|
|
217
|
+
"chat_template": ""
|
|
176
218
|
},
|
|
177
219
|
"Qwen/Qwen3-8B": {
|
|
178
220
|
"family": "qwen3",
|
|
@@ -197,7 +239,13 @@
|
|
|
197
239
|
"modelType": "transformer",
|
|
198
240
|
"tasks": [
|
|
199
241
|
"text-generation"
|
|
200
|
-
]
|
|
242
|
+
],
|
|
243
|
+
"validation_level": "community-validated",
|
|
244
|
+
"framework_compatibility": {
|
|
245
|
+
"vllm": ">=0.3.0",
|
|
246
|
+
"sglang": ">=0.2.0"
|
|
247
|
+
},
|
|
248
|
+
"chat_template": ""
|
|
201
249
|
},
|
|
202
250
|
"Qwen/Qwen3-14B": {
|
|
203
251
|
"family": "qwen3",
|
|
@@ -222,7 +270,13 @@
|
|
|
222
270
|
"modelType": "transformer",
|
|
223
271
|
"tasks": [
|
|
224
272
|
"text-generation"
|
|
225
|
-
]
|
|
273
|
+
],
|
|
274
|
+
"validation_level": "community-validated",
|
|
275
|
+
"framework_compatibility": {
|
|
276
|
+
"vllm": ">=0.3.0",
|
|
277
|
+
"sglang": ">=0.2.0"
|
|
278
|
+
},
|
|
279
|
+
"chat_template": ""
|
|
226
280
|
},
|
|
227
281
|
"Qwen/Qwen3-32B": {
|
|
228
282
|
"family": "qwen3",
|
|
@@ -247,7 +301,13 @@
|
|
|
247
301
|
"modelType": "transformer",
|
|
248
302
|
"tasks": [
|
|
249
303
|
"text-generation"
|
|
250
|
-
]
|
|
304
|
+
],
|
|
305
|
+
"validation_level": "community-validated",
|
|
306
|
+
"framework_compatibility": {
|
|
307
|
+
"vllm": ">=0.3.0",
|
|
308
|
+
"sglang": ">=0.2.0"
|
|
309
|
+
},
|
|
310
|
+
"chat_template": ""
|
|
251
311
|
},
|
|
252
312
|
"Qwen/Qwen2.5-7B-Instruct": {
|
|
253
313
|
"family": "qwen2.5",
|
|
@@ -272,7 +332,13 @@
|
|
|
272
332
|
"modelType": "transformer",
|
|
273
333
|
"tasks": [
|
|
274
334
|
"text-generation"
|
|
275
|
-
]
|
|
335
|
+
],
|
|
336
|
+
"validation_level": "community-validated",
|
|
337
|
+
"framework_compatibility": {
|
|
338
|
+
"vllm": ">=0.3.0",
|
|
339
|
+
"sglang": ">=0.2.0"
|
|
340
|
+
},
|
|
341
|
+
"chat_template": ""
|
|
276
342
|
},
|
|
277
343
|
"Qwen/Qwen2.5-14B-Instruct": {
|
|
278
344
|
"family": "qwen2.5",
|
|
@@ -297,7 +363,13 @@
|
|
|
297
363
|
"modelType": "transformer",
|
|
298
364
|
"tasks": [
|
|
299
365
|
"text-generation"
|
|
300
|
-
]
|
|
366
|
+
],
|
|
367
|
+
"validation_level": "community-validated",
|
|
368
|
+
"framework_compatibility": {
|
|
369
|
+
"vllm": ">=0.3.0",
|
|
370
|
+
"sglang": ">=0.2.0"
|
|
371
|
+
},
|
|
372
|
+
"chat_template": ""
|
|
301
373
|
},
|
|
302
374
|
"Qwen/Qwen2.5-32B-Instruct": {
|
|
303
375
|
"family": "qwen2.5",
|
|
@@ -322,7 +394,13 @@
|
|
|
322
394
|
"modelType": "transformer",
|
|
323
395
|
"tasks": [
|
|
324
396
|
"text-generation"
|
|
325
|
-
]
|
|
397
|
+
],
|
|
398
|
+
"validation_level": "community-validated",
|
|
399
|
+
"framework_compatibility": {
|
|
400
|
+
"vllm": ">=0.3.0",
|
|
401
|
+
"sglang": ">=0.2.0"
|
|
402
|
+
},
|
|
403
|
+
"chat_template": ""
|
|
326
404
|
},
|
|
327
405
|
"Qwen/Qwen2.5-72B-Instruct": {
|
|
328
406
|
"family": "qwen2.5",
|
|
@@ -347,7 +425,13 @@
|
|
|
347
425
|
"modelType": "transformer",
|
|
348
426
|
"tasks": [
|
|
349
427
|
"text-generation"
|
|
350
|
-
]
|
|
428
|
+
],
|
|
429
|
+
"validation_level": "community-validated",
|
|
430
|
+
"framework_compatibility": {
|
|
431
|
+
"vllm": ">=0.3.0",
|
|
432
|
+
"sglang": ">=0.2.0"
|
|
433
|
+
},
|
|
434
|
+
"chat_template": ""
|
|
351
435
|
},
|
|
352
436
|
"deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B": {
|
|
353
437
|
"family": "deepseek-r1",
|
|
@@ -373,7 +457,13 @@
|
|
|
373
457
|
"modelType": "transformer",
|
|
374
458
|
"tasks": [
|
|
375
459
|
"text-generation"
|
|
376
|
-
]
|
|
460
|
+
],
|
|
461
|
+
"validation_level": "community-validated",
|
|
462
|
+
"framework_compatibility": {
|
|
463
|
+
"vllm": ">=0.3.0",
|
|
464
|
+
"sglang": ">=0.2.0"
|
|
465
|
+
},
|
|
466
|
+
"chat_template": ""
|
|
377
467
|
},
|
|
378
468
|
"deepseek-ai/DeepSeek-R1-Distill-Qwen-7B": {
|
|
379
469
|
"family": "deepseek-r1",
|
|
@@ -399,7 +489,13 @@
|
|
|
399
489
|
"modelType": "transformer",
|
|
400
490
|
"tasks": [
|
|
401
491
|
"text-generation"
|
|
402
|
-
]
|
|
492
|
+
],
|
|
493
|
+
"validation_level": "community-validated",
|
|
494
|
+
"framework_compatibility": {
|
|
495
|
+
"vllm": ">=0.3.0",
|
|
496
|
+
"sglang": ">=0.2.0"
|
|
497
|
+
},
|
|
498
|
+
"chat_template": ""
|
|
403
499
|
},
|
|
404
500
|
"deepseek-ai/DeepSeek-R1-Distill-Qwen-14B": {
|
|
405
501
|
"family": "deepseek-r1",
|
|
@@ -425,7 +521,13 @@
|
|
|
425
521
|
"modelType": "transformer",
|
|
426
522
|
"tasks": [
|
|
427
523
|
"text-generation"
|
|
428
|
-
]
|
|
524
|
+
],
|
|
525
|
+
"validation_level": "community-validated",
|
|
526
|
+
"framework_compatibility": {
|
|
527
|
+
"vllm": ">=0.3.0",
|
|
528
|
+
"sglang": ">=0.2.0"
|
|
529
|
+
},
|
|
530
|
+
"chat_template": ""
|
|
429
531
|
},
|
|
430
532
|
"deepseek-ai/DeepSeek-R1-Distill-Qwen-32B": {
|
|
431
533
|
"family": "deepseek-r1",
|
|
@@ -451,7 +553,13 @@
|
|
|
451
553
|
"modelType": "transformer",
|
|
452
554
|
"tasks": [
|
|
453
555
|
"text-generation"
|
|
454
|
-
]
|
|
556
|
+
],
|
|
557
|
+
"validation_level": "community-validated",
|
|
558
|
+
"framework_compatibility": {
|
|
559
|
+
"vllm": ">=0.3.0",
|
|
560
|
+
"sglang": ">=0.2.0"
|
|
561
|
+
},
|
|
562
|
+
"chat_template": ""
|
|
455
563
|
},
|
|
456
564
|
"deepseek-ai/DeepSeek-R1-Distill-Llama-8B": {
|
|
457
565
|
"family": "deepseek-r1",
|
|
@@ -477,7 +585,13 @@
|
|
|
477
585
|
"modelType": "transformer",
|
|
478
586
|
"tasks": [
|
|
479
587
|
"text-generation"
|
|
480
|
-
]
|
|
588
|
+
],
|
|
589
|
+
"validation_level": "community-validated",
|
|
590
|
+
"framework_compatibility": {
|
|
591
|
+
"vllm": ">=0.3.0",
|
|
592
|
+
"sglang": ">=0.2.0"
|
|
593
|
+
},
|
|
594
|
+
"chat_template": ""
|
|
481
595
|
},
|
|
482
596
|
"deepseek-ai/DeepSeek-R1-Distill-Llama-70B": {
|
|
483
597
|
"family": "deepseek-r1",
|
|
@@ -503,7 +617,13 @@
|
|
|
503
617
|
"modelType": "transformer",
|
|
504
618
|
"tasks": [
|
|
505
619
|
"text-generation"
|
|
506
|
-
]
|
|
620
|
+
],
|
|
621
|
+
"validation_level": "community-validated",
|
|
622
|
+
"framework_compatibility": {
|
|
623
|
+
"vllm": ">=0.3.0",
|
|
624
|
+
"sglang": ">=0.2.0"
|
|
625
|
+
},
|
|
626
|
+
"chat_template": ""
|
|
507
627
|
},
|
|
508
628
|
"openai/gpt-oss-20b": {
|
|
509
629
|
"family": "gpt-oss",
|
|
@@ -528,7 +648,13 @@
|
|
|
528
648
|
"modelType": "transformer",
|
|
529
649
|
"tasks": [
|
|
530
650
|
"text-generation"
|
|
531
|
-
]
|
|
651
|
+
],
|
|
652
|
+
"validation_level": "community-validated",
|
|
653
|
+
"framework_compatibility": {
|
|
654
|
+
"vllm": ">=0.3.0",
|
|
655
|
+
"sglang": ">=0.2.0"
|
|
656
|
+
},
|
|
657
|
+
"chat_template": ""
|
|
532
658
|
},
|
|
533
659
|
"openai/gpt-oss-120b": {
|
|
534
660
|
"family": "gpt-oss",
|
|
@@ -553,7 +679,13 @@
|
|
|
553
679
|
"modelType": "transformer",
|
|
554
680
|
"tasks": [
|
|
555
681
|
"text-generation"
|
|
556
|
-
]
|
|
682
|
+
],
|
|
683
|
+
"validation_level": "community-validated",
|
|
684
|
+
"framework_compatibility": {
|
|
685
|
+
"vllm": ">=0.3.0",
|
|
686
|
+
"sglang": ">=0.2.0"
|
|
687
|
+
},
|
|
688
|
+
"chat_template": ""
|
|
557
689
|
},
|
|
558
690
|
"meta-llama/Llama-3*": {
|
|
559
691
|
"family": "llama-3",
|
|
@@ -574,7 +706,13 @@
|
|
|
574
706
|
"modelType": "transformer",
|
|
575
707
|
"tasks": [
|
|
576
708
|
"text-generation"
|
|
577
|
-
]
|
|
709
|
+
],
|
|
710
|
+
"validation_level": "community-validated",
|
|
711
|
+
"framework_compatibility": {
|
|
712
|
+
"vllm": ">=0.3.0",
|
|
713
|
+
"sglang": ">=0.2.0"
|
|
714
|
+
},
|
|
715
|
+
"chat_template": ""
|
|
578
716
|
},
|
|
579
717
|
"Qwen/Qwen*": {
|
|
580
718
|
"family": "qwen",
|
|
@@ -595,7 +733,13 @@
|
|
|
595
733
|
"modelType": "transformer",
|
|
596
734
|
"tasks": [
|
|
597
735
|
"text-generation"
|
|
598
|
-
]
|
|
736
|
+
],
|
|
737
|
+
"validation_level": "community-validated",
|
|
738
|
+
"framework_compatibility": {
|
|
739
|
+
"vllm": ">=0.3.0",
|
|
740
|
+
"sglang": ">=0.2.0"
|
|
741
|
+
},
|
|
742
|
+
"chat_template": ""
|
|
599
743
|
},
|
|
600
744
|
"deepseek-ai/DeepSeek*": {
|
|
601
745
|
"family": "deepseek",
|
|
@@ -617,7 +761,13 @@
|
|
|
617
761
|
"modelType": "transformer",
|
|
618
762
|
"tasks": [
|
|
619
763
|
"text-generation"
|
|
620
|
-
]
|
|
764
|
+
],
|
|
765
|
+
"validation_level": "community-validated",
|
|
766
|
+
"framework_compatibility": {
|
|
767
|
+
"vllm": ">=0.3.0",
|
|
768
|
+
"sglang": ">=0.2.0"
|
|
769
|
+
},
|
|
770
|
+
"chat_template": ""
|
|
621
771
|
},
|
|
622
772
|
"openai/gpt-oss*": {
|
|
623
773
|
"family": "gpt-oss",
|
|
@@ -638,6 +788,12 @@
|
|
|
638
788
|
"modelType": "transformer",
|
|
639
789
|
"tasks": [
|
|
640
790
|
"text-generation"
|
|
641
|
-
]
|
|
791
|
+
],
|
|
792
|
+
"validation_level": "community-validated",
|
|
793
|
+
"framework_compatibility": {
|
|
794
|
+
"vllm": ">=0.3.0",
|
|
795
|
+
"sglang": ">=0.2.0"
|
|
796
|
+
},
|
|
797
|
+
"chat_template": ""
|
|
642
798
|
}
|
|
643
799
|
}
|
|
@@ -9,38 +9,38 @@
|
|
|
9
9
|
|
|
10
10
|
export const CUSTOM_VALIDATORS = {
|
|
11
11
|
'base-image-picker': {
|
|
12
|
-
pattern: /^[a-zA-Z0-9][a-zA-Z0-9._
|
|
12
|
+
pattern: /^[a-zA-Z0-9][a-zA-Z0-9._/-]*(:[a-zA-Z0-9._-]+)?$/,
|
|
13
13
|
validate(value) {
|
|
14
|
-
if (!value || value.trim() === '') return 'Value is required'
|
|
15
|
-
if (!this.pattern.test(value.trim())) return 'Invalid image format. Expected: [registry/]repository[:tag]'
|
|
16
|
-
return true
|
|
14
|
+
if (!value || value.trim() === '') return 'Value is required';
|
|
15
|
+
if (!this.pattern.test(value.trim())) return 'Invalid image format. Expected: [registry/]repository[:tag]';
|
|
16
|
+
return true;
|
|
17
17
|
},
|
|
18
18
|
errorMessage: 'Invalid image format. Expected: [registry/]repository[:tag]'
|
|
19
19
|
},
|
|
20
20
|
'instance-recommender': {
|
|
21
21
|
pattern: /^ml\.[a-z0-9]+\.[a-z0-9]+$/,
|
|
22
22
|
validate(value) {
|
|
23
|
-
if (!value || value.trim() === '') return 'Value is required'
|
|
24
|
-
if (!this.pattern.test(value.trim())) return 'Invalid instance type. Expected: ml.<family>.<size>'
|
|
25
|
-
return true
|
|
23
|
+
if (!value || value.trim() === '') return 'Value is required';
|
|
24
|
+
if (!this.pattern.test(value.trim())) return 'Invalid instance type. Expected: ml.<family>.<size>';
|
|
25
|
+
return true;
|
|
26
26
|
},
|
|
27
27
|
errorMessage: 'Invalid instance type. Expected: ml.<family>.<size>'
|
|
28
28
|
},
|
|
29
29
|
'region-picker': {
|
|
30
30
|
pattern: /^[a-z]{2,4}-[a-z]+-\d+$/,
|
|
31
31
|
validate(value) {
|
|
32
|
-
if (!value || value.trim() === '') return 'Value is required'
|
|
33
|
-
if (!this.pattern.test(value.trim())) return 'Invalid region code. Expected: <partition>-<geo>-<number>'
|
|
34
|
-
return true
|
|
32
|
+
if (!value || value.trim() === '') return 'Value is required';
|
|
33
|
+
if (!this.pattern.test(value.trim())) return 'Invalid region code. Expected: <partition>-<geo>-<number>';
|
|
34
|
+
return true;
|
|
35
35
|
},
|
|
36
36
|
errorMessage: 'Invalid region code. Expected: <partition>-<geo>-<number>'
|
|
37
37
|
},
|
|
38
38
|
'hyperpod-cluster-picker': {
|
|
39
39
|
pattern: /^.+$/,
|
|
40
40
|
validate(value) {
|
|
41
|
-
if (!value || value.trim() === '') return 'Cluster name is required'
|
|
42
|
-
return true
|
|
41
|
+
if (!value || value.trim() === '') return 'Cluster name is required';
|
|
42
|
+
return true;
|
|
43
43
|
},
|
|
44
44
|
errorMessage: 'Cluster name is required'
|
|
45
45
|
}
|
|
46
|
-
}
|
|
46
|
+
};
|
|
@@ -20,8 +20,8 @@ class DynamicResolver {
|
|
|
20
20
|
* @param {object} [options] - Resolver-specific options (limit, timeout, etc.)
|
|
21
21
|
* @returns {Promise<{items: object[], defaultItem: *|null}>}
|
|
22
22
|
*/
|
|
23
|
-
async fetch(key,
|
|
24
|
-
throw new Error('fetch() must be implemented by subclass')
|
|
23
|
+
async fetch(key, _options = {}) {
|
|
24
|
+
throw new Error('fetch() must be implemented by subclass');
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
/**
|
|
@@ -29,8 +29,8 @@ class DynamicResolver {
|
|
|
29
29
|
* @returns {string[]}
|
|
30
30
|
*/
|
|
31
31
|
supportedKeys() {
|
|
32
|
-
throw new Error('supportedKeys() must be implemented by subclass')
|
|
32
|
+
throw new Error('supportedKeys() must be implemented by subclass');
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
export { DynamicResolver }
|
|
36
|
+
export { DynamicResolver };
|