harness-mcp-v2 3.2.19 → 3.2.21

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 (111) hide show
  1. package/README.md +146 -75
  2. package/build/client/harness-client.d.ts.map +1 -1
  3. package/build/client/harness-client.js +32 -6
  4. package/build/client/harness-client.js.map +1 -1
  5. package/build/config.d.ts +10 -0
  6. package/build/config.d.ts.map +1 -1
  7. package/build/config.js +15 -0
  8. package/build/config.js.map +1 -1
  9. package/build/data/schemas/v0/pipeline.d.ts.map +1 -1
  10. package/build/data/schemas/v0/pipeline.js +1388 -580
  11. package/build/data/schemas/v0/pipeline.js.map +1 -1
  12. package/build/data/schemas/v0/template.d.ts.map +1 -1
  13. package/build/data/schemas/v0/template.js +1142 -166
  14. package/build/data/schemas/v0/template.js.map +1 -1
  15. package/build/data/schemas/v1/pipeline.d.ts.map +1 -1
  16. package/build/data/schemas/v1/pipeline.js +302 -90
  17. package/build/data/schemas/v1/pipeline.js.map +1 -1
  18. package/build/data/schemas/v1/template.d.ts.map +1 -1
  19. package/build/data/schemas/v1/template.js +708 -488
  20. package/build/data/schemas/v1/template.js.map +1 -1
  21. package/build/prompts/deploy-ai-agent.d.ts +3 -0
  22. package/build/prompts/deploy-ai-agent.d.ts.map +1 -0
  23. package/build/prompts/deploy-ai-agent.js +300 -0
  24. package/build/prompts/deploy-ai-agent.js.map +1 -0
  25. package/build/prompts/feature-flag-rollout.d.ts.map +1 -1
  26. package/build/prompts/feature-flag-rollout.js +19 -8
  27. package/build/prompts/feature-flag-rollout.js.map +1 -1
  28. package/build/prompts/index.d.ts.map +1 -1
  29. package/build/prompts/index.js +2 -0
  30. package/build/prompts/index.js.map +1 -1
  31. package/build/registry/extractors.d.ts +87 -10
  32. package/build/registry/extractors.d.ts.map +1 -1
  33. package/build/registry/extractors.js +426 -26
  34. package/build/registry/extractors.js.map +1 -1
  35. package/build/registry/index.d.ts.map +1 -1
  36. package/build/registry/index.js +34 -15
  37. package/build/registry/index.js.map +1 -1
  38. package/build/registry/scope-utils.d.ts +45 -0
  39. package/build/registry/scope-utils.d.ts.map +1 -1
  40. package/build/registry/scope-utils.js +78 -0
  41. package/build/registry/scope-utils.js.map +1 -1
  42. package/build/registry/toolsets/chaos-descriptions.d.ts +72 -20
  43. package/build/registry/toolsets/chaos-descriptions.d.ts.map +1 -1
  44. package/build/registry/toolsets/chaos-descriptions.js +435 -140
  45. package/build/registry/toolsets/chaos-descriptions.js.map +1 -1
  46. package/build/registry/toolsets/chaos.d.ts.map +1 -1
  47. package/build/registry/toolsets/chaos.js +967 -193
  48. package/build/registry/toolsets/chaos.js.map +1 -1
  49. package/build/registry/toolsets/feature-flags.d.ts.map +1 -1
  50. package/build/registry/toolsets/feature-flags.js +888 -85
  51. package/build/registry/toolsets/feature-flags.js.map +1 -1
  52. package/build/registry/toolsets/governance.d.ts.map +1 -1
  53. package/build/registry/toolsets/governance.js +4 -0
  54. package/build/registry/toolsets/governance.js.map +1 -1
  55. package/build/registry/toolsets/iacm.d.ts.map +1 -1
  56. package/build/registry/toolsets/iacm.js +787 -11
  57. package/build/registry/toolsets/iacm.js.map +1 -1
  58. package/build/registry/toolsets/infrastructure.d.ts.map +1 -1
  59. package/build/registry/toolsets/infrastructure.js +30 -5
  60. package/build/registry/toolsets/infrastructure.js.map +1 -1
  61. package/build/registry/toolsets/pipelines.d.ts.map +1 -1
  62. package/build/registry/toolsets/pipelines.js +208 -5
  63. package/build/registry/toolsets/pipelines.js.map +1 -1
  64. package/build/registry/toolsets/release-management.d.ts +8 -0
  65. package/build/registry/toolsets/release-management.d.ts.map +1 -0
  66. package/build/registry/toolsets/release-management.js +783 -0
  67. package/build/registry/toolsets/release-management.js.map +1 -0
  68. package/build/registry/toolsets/sto.d.ts.map +1 -1
  69. package/build/registry/toolsets/sto.js +93 -17
  70. package/build/registry/toolsets/sto.js.map +1 -1
  71. package/build/registry/types.d.ts +52 -4
  72. package/build/registry/types.d.ts.map +1 -1
  73. package/build/resources/harness-schema.d.ts.map +1 -1
  74. package/build/resources/harness-schema.js +2 -1
  75. package/build/resources/harness-schema.js.map +1 -1
  76. package/build/tools/entity-schema/live.d.ts +6 -5
  77. package/build/tools/entity-schema/live.d.ts.map +1 -1
  78. package/build/tools/entity-schema/live.js +114 -10
  79. package/build/tools/entity-schema/live.js.map +1 -1
  80. package/build/tools/entity-schema/types.d.ts +7 -1
  81. package/build/tools/entity-schema/types.d.ts.map +1 -1
  82. package/build/tools/harness-create.d.ts.map +1 -1
  83. package/build/tools/harness-create.js +5 -1
  84. package/build/tools/harness-create.js.map +1 -1
  85. package/build/tools/harness-delete.d.ts.map +1 -1
  86. package/build/tools/harness-delete.js +5 -1
  87. package/build/tools/harness-delete.js.map +1 -1
  88. package/build/tools/harness-execute.d.ts.map +1 -1
  89. package/build/tools/harness-execute.js +15 -9
  90. package/build/tools/harness-execute.js.map +1 -1
  91. package/build/tools/harness-get.d.ts.map +1 -1
  92. package/build/tools/harness-get.js +5 -1
  93. package/build/tools/harness-get.js.map +1 -1
  94. package/build/tools/harness-list.d.ts.map +1 -1
  95. package/build/tools/harness-list.js +18 -2
  96. package/build/tools/harness-list.js.map +1 -1
  97. package/build/tools/harness-schema.d.ts +2 -1
  98. package/build/tools/harness-schema.d.ts.map +1 -1
  99. package/build/tools/harness-schema.js +10 -8
  100. package/build/tools/harness-schema.js.map +1 -1
  101. package/build/tools/harness-update.d.ts.map +1 -1
  102. package/build/tools/harness-update.js +5 -1
  103. package/build/tools/harness-update.js.map +1 -1
  104. package/build/tools/index.js +1 -1
  105. package/build/tools/index.js.map +1 -1
  106. package/build/utils/url-parser.d.ts +2 -0
  107. package/build/utils/url-parser.d.ts.map +1 -1
  108. package/build/utils/url-parser.js +55 -0
  109. package/build/utils/url-parser.js.map +1 -1
  110. package/npm-shrinkwrap.json +2 -2
  111. package/package.json +1 -1
@@ -3,6 +3,7 @@
3
3
  const schema = {
4
4
  "type": "object",
5
5
  "title": "template_v1",
6
+ "additionalProperties": false,
6
7
  "required": [
7
8
  "template"
8
9
  ],
@@ -15,10 +16,17 @@ const schema = {
15
16
  },
16
17
  "template": {
17
18
  "type": "object",
19
+ "additionalProperties": true,
18
20
  "properties": {
21
+ "id": {
22
+ "type": "string",
23
+ "description": "Unique identifier of the template.",
24
+ "pattern": "^[a-zA-Z_][0-9a-zA-Z_]{0,127}$"
25
+ },
19
26
  "name": {
20
27
  "type": "string",
21
- "description": "Display name of the template."
28
+ "description": "Display name of the template.",
29
+ "pattern": "^[a-zA-Z_0-9-.][-0-9a-zA-Z_\\s.]{0,127}$"
22
30
  },
23
31
  "description": {
24
32
  "type": "string",
@@ -32,7 +40,9 @@ const schema = {
32
40
  }
33
41
  },
34
42
  "inputs": {
35
- "$ref": "#/definitions/template_v1/common/NGVariableV1Wrapper"
43
+ "description": "Template inputs. Open object so extended types (choice, list, connector), UI metadata, and expression-based required/visible are allowed.",
44
+ "type": "object",
45
+ "additionalProperties": true
36
46
  }
37
47
  },
38
48
  "oneOf": [
@@ -112,7 +122,7 @@ const schema = {
112
122
  "type": "string",
113
123
  "description": "Display name of the step group."
114
124
  },
115
- "desc": {
125
+ "description": {
116
126
  "type": "string",
117
127
  "description": "Description of the step group."
118
128
  },
@@ -208,104 +218,385 @@ const schema = {
208
218
  }
209
219
  },
210
220
  "template_v1": {
211
- "common": {
212
- "NGVariableV1Wrapper": {
213
- "title": "NGVariableV1Wrapper",
214
- "description": "Wrapper for stage/pipeline-level input variables. Keys are variable names, values define variable configuration.",
215
- "type": "object",
216
- "additionalProperties": {
221
+ "pipeline": {
222
+ "type": "object",
223
+ "title": "pipeline",
224
+ "additionalProperties": false,
225
+ "properties": {
226
+ "id": {
227
+ "type": "string",
228
+ "pattern": "^[a-zA-Z_][0-9a-zA-Z_]{0,127}$"
229
+ },
230
+ "name": {
231
+ "type": "string",
232
+ "pattern": "^[a-zA-Z_0-9-.][-0-9a-zA-Z_\\s.]{0,127}$"
233
+ },
234
+ "description": {
235
+ "type": "string",
236
+ "description": "Description of the pipeline."
237
+ },
238
+ "clone": {
239
+ "$ref": "#/definitions/template_v1/Clone"
240
+ },
241
+ "inputs": {
242
+ "$ref": "#/definitions/template_v1/common/NGVariableV1Wrapper"
243
+ },
244
+ "timeout": {
245
+ "type": "string",
246
+ "description": "Defines pipeline timeout",
247
+ "pattern": "^(([1-9])+\\d+[s])|(((([1-9])+\\d*[mhwd])+([\\s]?\\d+[smhwd])*)|(.*<\\+.*>(?!.*\\.executionInput\\(\\)).*)|(^$))$"
248
+ },
249
+ "allow-stage-executions": {
250
+ "type": "boolean",
251
+ "description": "Allows stage executions."
252
+ },
253
+ "fixed-inputs-on-rerun": {
254
+ "type": "boolean",
255
+ "description": "Fixed inputs on rerun."
256
+ },
257
+ "delegate": {
258
+ "$ref": "#/definitions/template_v1/common/Delegate"
259
+ },
260
+ "env": {
261
+ "type": "object",
262
+ "additionalProperties": {
263
+ "type": "string"
264
+ },
265
+ "description": "Provides the default environment variables."
266
+ },
267
+ "repo": {
268
+ "description": "Configures the default repository.",
269
+ "$ref": "#/definitions/template_v1/Repository"
270
+ },
271
+ "barriers": {
272
+ "type": "array",
273
+ "description": "Barriers provides optional pipeline barriers.",
274
+ "items": {
275
+ "type": "string"
276
+ }
277
+ },
278
+ "if": {
279
+ "type": "string",
280
+ "description": "If provides conditional pipeline execution logic. If the condition resolves to false, the pipeline is skipped."
281
+ },
282
+ "on": {
283
+ "$ref": "#/definitions/template_v1/On"
284
+ },
285
+ "notifications": {
286
+ "type": "array",
287
+ "description": "Notifications provides optional pipeline notifications.",
288
+ "items": {
289
+ "$ref": "#/definitions/template_v1/NotificationRules"
290
+ }
291
+ },
292
+ "tags": {
293
+ "type": "object",
294
+ "description": "Tags for the pipeline.",
295
+ "additionalProperties": {
296
+ "type": "string"
297
+ }
298
+ },
299
+ "template": {
300
+ "description": "Pipeline template reference.",
301
+ "$ref": "#/definitions/template_v1/common/TemplateRef"
302
+ },
303
+ "stages": {
304
+ "type": "array",
305
+ "description": "Pipeline stages - can contain stages, groups, or parallel executions.",
306
+ "items": {
307
+ "$ref": "#/definitions/template_v1/stages/unified/StageItems"
308
+ },
309
+ "maxItems": 256,
310
+ "minItems": 1
311
+ }
312
+ },
313
+ "$schema": "http://json-schema.org/draft-07/schema#"
314
+ },
315
+ "Clone": {
316
+ "title": "Clone",
317
+ "type": "object",
318
+ "additionalProperties": false,
319
+ "description": "Clone defines the default clone behavior.",
320
+ "properties": {
321
+ "depth": {
322
+ "description": "Depth defines the clone depth.",
217
323
  "oneOf": [
218
324
  {
219
- "$ref": "#/definitions/template_v1/common/StringNGVariableV1"
325
+ "type": "integer",
326
+ "format": "int32"
220
327
  },
221
328
  {
222
- "$ref": "#/definitions/template_v1/common/NumberVariable"
329
+ "$ref": "#/definitions/template_v1/common/Expression"
330
+ }
331
+ ]
332
+ },
333
+ "enabled": {
334
+ "description": "Enables or disables the default clone step.",
335
+ "oneOf": [
336
+ {
337
+ "type": "boolean"
223
338
  },
224
339
  {
225
- "$ref": "#/definitions/template_v1/common/BooleanVariable"
340
+ "$ref": "#/definitions/template_v1/common/Expression"
341
+ }
342
+ ]
343
+ },
344
+ "insecure": {
345
+ "description": "Insecure disables ssl verification.",
346
+ "oneOf": [
347
+ {
348
+ "type": "boolean"
226
349
  },
227
350
  {
228
- "$ref": "#/definitions/template_v1/common/ArrayVariable"
351
+ "$ref": "#/definitions/template_v1/common/Expression"
352
+ }
353
+ ]
354
+ },
355
+ "lfs": {
356
+ "description": "Lfs enables cloning lfs files.",
357
+ "oneOf": [
358
+ {
359
+ "type": "boolean"
229
360
  },
230
361
  {
231
- "$ref": "#/definitions/template_v1/common/ObjectVariable"
362
+ "$ref": "#/definitions/template_v1/common/Expression"
363
+ }
364
+ ]
365
+ },
366
+ "strategy": {
367
+ "description": "Strategy configures the PR clone strategy.",
368
+ "type": "string",
369
+ "enum": [
370
+ "source-branch",
371
+ "merge"
372
+ ]
373
+ },
374
+ "submodules": {
375
+ "description": "Submodules enables cloning all submodules. Accepts boolean, string (true/false/recursive), or expression.",
376
+ "oneOf": [
377
+ {
378
+ "type": "boolean"
232
379
  },
233
380
  {
234
- "$ref": "#/definitions/template_v1/common/SecretVariable"
381
+ "type": "string",
382
+ "enum": [
383
+ "true",
384
+ "false",
385
+ "recursive"
386
+ ]
235
387
  },
236
388
  {
237
- "$ref": "#/definitions/template_v1/common/StepVariable"
389
+ "$ref": "#/definitions/template_v1/common/Expression"
390
+ }
391
+ ]
392
+ },
393
+ "tags": {
394
+ "description": "Tags enables cloning all tags.",
395
+ "oneOf": [
396
+ {
397
+ "type": "boolean"
238
398
  },
239
399
  {
240
- "$ref": "#/definitions/template_v1/common/StageVariable"
400
+ "$ref": "#/definitions/template_v1/common/Expression"
401
+ }
402
+ ]
403
+ },
404
+ "trace": {
405
+ "description": "Trace enables trace logging.",
406
+ "oneOf": [
407
+ {
408
+ "type": "boolean"
241
409
  },
242
410
  {
243
- "$ref": "#/definitions/template_v1/common/ConnectorVariable"
411
+ "$ref": "#/definitions/template_v1/common/Expression"
244
412
  }
245
413
  ]
246
414
  },
247
- "$schema": "http://json-schema.org/draft-07/schema#"
248
- },
249
- "StringNGVariableV1": {
250
- "title": "StringNGVariableV1",
251
- "description": "String variable definition.",
252
- "allOf": [
253
- {
254
- "$ref": "#/definitions/template_v1/common/Variable"
255
- },
256
- {
257
- "type": "object",
258
- "required": [
259
- "type"
260
- ],
261
- "properties": {
262
- "type": {
263
- "description": "Variable type.",
264
- "type": "string",
265
- "enum": [
266
- "string"
267
- ]
268
- },
269
- "value": {
270
- "description": "Variable value. Supports expressions.",
271
- "type": "string"
272
- },
273
- "default": {
274
- "description": "Default value for the variable.",
275
- "type": "string"
276
- },
277
- "enum": {
278
- "description": "Defines a list of accepted input values.",
279
- "type": "array",
280
- "items": {
281
- "type": "string"
282
- }
283
- },
284
- "options": {
285
- "description": "Defines a list of accepted input values. Alias for enum (GitHub compatibility).",
286
- "type": "array",
287
- "items": {
288
- "type": "string"
289
- }
290
- }
415
+ "ref": {
416
+ "description": "Reference defines the clone ref.",
417
+ "oneOf": [
418
+ {
419
+ "$ref": "#/definitions/template_v1/Reference"
420
+ },
421
+ {
422
+ "$ref": "#/definitions/template_v1/common/Expression"
291
423
  }
292
- }
293
- ],
294
- "$schema": "http://json-schema.org/draft-07/schema#"
295
- },
296
- "Variable": {
297
- "title": "Variable",
298
- "type": "object",
299
- "discriminator": "type",
300
- "description": "Variable defines a variable object",
301
- "properties": {
302
- "type": {
303
- "description": "Type defines the variable type.",
304
- "type": "string",
305
- "enum": [
306
- "string",
307
- "number",
308
- "boolean",
424
+ ]
425
+ },
426
+ "repo": {
427
+ "description": "Repo defines the repository name or URL.",
428
+ "type": "string",
429
+ "minLength": 1
430
+ },
431
+ "connector": {
432
+ "description": "Connector defines the connector reference.",
433
+ "type": "string",
434
+ "minLength": 1
435
+ },
436
+ "clonedir": {
437
+ "description": "Clonedir defines the clone directory path.",
438
+ "type": "string",
439
+ "minLength": 1
440
+ },
441
+ "resources": {
442
+ "description": "Resources defines container resource limits.",
443
+ "$ref": "#/definitions/template_v1/Resource"
444
+ },
445
+ "user": {
446
+ "description": "User ID to run the clone container as. Supports expressions.",
447
+ "oneOf": [
448
+ {
449
+ "type": "integer"
450
+ },
451
+ {
452
+ "type": "string"
453
+ }
454
+ ]
455
+ },
456
+ "sparse-checkout": {
457
+ "description": "SparseCheckout defines paths to limit the clone to specific directories.",
458
+ "oneOf": [
459
+ {
460
+ "type": "array",
461
+ "items": {
462
+ "type": "string"
463
+ }
464
+ },
465
+ {
466
+ "$ref": "#/definitions/template_v1/common/Expression"
467
+ }
468
+ ]
469
+ },
470
+ "pre-fetch": {
471
+ "description": "PreFetch defines a command to run before the clone operation.",
472
+ "oneOf": [
473
+ {
474
+ "type": "string"
475
+ },
476
+ {
477
+ "$ref": "#/definitions/template_v1/common/Expression"
478
+ }
479
+ ]
480
+ },
481
+ "persist-credentials": {
482
+ "description": "PersistCredentials configures git credentials to persist after clone so subsequent git operations in the workspace can authenticate.",
483
+ "oneOf": [
484
+ {
485
+ "type": "boolean"
486
+ },
487
+ {
488
+ "$ref": "#/definitions/template_v1/common/Expression"
489
+ }
490
+ ]
491
+ }
492
+ },
493
+ "$schema": "http://json-schema.org/draft-07/schema#"
494
+ },
495
+ "common": {
496
+ "Expression": {
497
+ "title": "Expression",
498
+ "description": "String value matching a Harness pipeline expression or template placeholder (e.g., <+something> or ${{ ... }}).",
499
+ "type": "string",
500
+ "pattern": "(\\$\\{\\{.+\\}\\}|<\\+.+>.*)",
501
+ "$schema": "http://json-schema.org/draft-07/schema#"
502
+ },
503
+ "NGVariableV1Wrapper": {
504
+ "title": "NGVariableV1Wrapper",
505
+ "description": "Wrapper for stage/pipeline-level input variables. Keys are variable names, values define variable configuration.",
506
+ "type": "object",
507
+ "additionalProperties": {
508
+ "oneOf": [
509
+ {
510
+ "$ref": "#/definitions/template_v1/common/StringNGVariableV1"
511
+ },
512
+ {
513
+ "$ref": "#/definitions/template_v1/common/NumberVariable"
514
+ },
515
+ {
516
+ "$ref": "#/definitions/template_v1/common/BooleanVariable"
517
+ },
518
+ {
519
+ "$ref": "#/definitions/template_v1/common/ArrayVariable"
520
+ },
521
+ {
522
+ "$ref": "#/definitions/template_v1/common/ObjectVariable"
523
+ },
524
+ {
525
+ "$ref": "#/definitions/template_v1/common/SecretVariable"
526
+ },
527
+ {
528
+ "$ref": "#/definitions/template_v1/common/StepVariable"
529
+ },
530
+ {
531
+ "$ref": "#/definitions/template_v1/common/StageVariable"
532
+ },
533
+ {
534
+ "$ref": "#/definitions/template_v1/common/ConnectorVariable"
535
+ }
536
+ ]
537
+ },
538
+ "$schema": "http://json-schema.org/draft-07/schema#"
539
+ },
540
+ "StringNGVariableV1": {
541
+ "title": "StringNGVariableV1",
542
+ "description": "String variable definition.",
543
+ "allOf": [
544
+ {
545
+ "$ref": "#/definitions/template_v1/common/Variable"
546
+ },
547
+ {
548
+ "type": "object",
549
+ "required": [
550
+ "type"
551
+ ],
552
+ "properties": {
553
+ "type": {
554
+ "description": "Variable type.",
555
+ "type": "string",
556
+ "enum": [
557
+ "string"
558
+ ]
559
+ },
560
+ "value": {
561
+ "description": "Variable value. Supports expressions.",
562
+ "type": "string"
563
+ },
564
+ "default": {
565
+ "description": "Default value for the variable.",
566
+ "type": "string"
567
+ },
568
+ "enum": {
569
+ "description": "Defines a list of accepted input values.",
570
+ "type": "array",
571
+ "items": {
572
+ "type": "string"
573
+ }
574
+ },
575
+ "options": {
576
+ "description": "Defines a list of accepted input values. Alias for enum (GitHub compatibility).",
577
+ "type": "array",
578
+ "items": {
579
+ "type": "string"
580
+ }
581
+ }
582
+ }
583
+ }
584
+ ],
585
+ "$schema": "http://json-schema.org/draft-07/schema#"
586
+ },
587
+ "Variable": {
588
+ "title": "Variable",
589
+ "type": "object",
590
+ "discriminator": "type",
591
+ "description": "Variable defines a variable object",
592
+ "properties": {
593
+ "type": {
594
+ "description": "Type defines the variable type.",
595
+ "type": "string",
596
+ "enum": [
597
+ "string",
598
+ "number",
599
+ "boolean",
309
600
  "array",
310
601
  "object",
311
602
  "secret",
@@ -736,13 +1027,6 @@ const schema = {
736
1027
  ],
737
1028
  "$schema": "http://json-schema.org/draft-07/schema#"
738
1029
  },
739
- "Expression": {
740
- "title": "Expression",
741
- "description": "String value matching a Harness pipeline expression or template placeholder (e.g., <+something> or ${{ ... }}).",
742
- "type": "string",
743
- "pattern": "(\\$\\{\\{.+\\}\\}|<\\+.+>.*)",
744
- "$schema": "http://json-schema.org/draft-07/schema#"
745
- },
746
1030
  "Delegate": {
747
1031
  "title": "Delegate",
748
1032
  "description": "Delegate defines the delegate matching logic. Supports expressions.",
@@ -763,6 +1047,7 @@ const schema = {
763
1047
  "title": "TemplateRef",
764
1048
  "description": "Template identifier and input configuration.",
765
1049
  "type": "object",
1050
+ "additionalProperties": false,
766
1051
  "required": [
767
1052
  "uses"
768
1053
  ],
@@ -799,6 +1084,7 @@ const schema = {
799
1084
  "StrategyConfigV1": {
800
1085
  "title": "StrategyConfigV1",
801
1086
  "type": "object",
1087
+ "additionalProperties": false,
802
1088
  "description": "Strategy defines execution strategy configuration (matrix, for, while, repeat).",
803
1089
  "properties": {
804
1090
  "max-parallel": {
@@ -826,73 +1112,69 @@ const schema = {
826
1112
  "if": {
827
1113
  "description": "Conditional expression to determine whether the strategy should execute. Supports expressions.",
828
1114
  "type": "string"
1115
+ },
1116
+ "matrix": {
1117
+ "description": "Matrix strategy for parallel execution across dimensions. Supports expressions.",
1118
+ "oneOf": [
1119
+ {
1120
+ "$ref": "#/definitions/template_v1/common/MatrixConfigV1"
1121
+ },
1122
+ {
1123
+ "$ref": "#/definitions/template_v1/common/Expression"
1124
+ }
1125
+ ]
1126
+ },
1127
+ "for": {
1128
+ "description": "For-loop strategy configuration. Supports expressions.",
1129
+ "oneOf": [
1130
+ {
1131
+ "$ref": "#/definitions/template_v1/common/ForConfigV1"
1132
+ },
1133
+ {
1134
+ "$ref": "#/definitions/template_v1/common/Expression"
1135
+ }
1136
+ ]
1137
+ },
1138
+ "while": {
1139
+ "description": "While-loop strategy configuration. Supports expressions.",
1140
+ "oneOf": [
1141
+ {
1142
+ "$ref": "#/definitions/template_v1/common/WhileConfigV1"
1143
+ },
1144
+ {
1145
+ "$ref": "#/definitions/template_v1/common/Expression"
1146
+ }
1147
+ ]
1148
+ },
1149
+ "repeat": {
1150
+ "description": "Repeat strategy configuration for iterating over items. Supports expressions.",
1151
+ "oneOf": [
1152
+ {
1153
+ "$ref": "#/definitions/template_v1/common/RepeatConfigV1"
1154
+ },
1155
+ {
1156
+ "$ref": "#/definitions/template_v1/common/Expression"
1157
+ }
1158
+ ]
829
1159
  }
830
1160
  },
831
1161
  "oneOf": [
832
1162
  {
833
- "properties": {
834
- "matrix": {
835
- "oneOf": [
836
- {
837
- "$ref": "#/definitions/template_v1/common/MatrixConfigV1"
838
- },
839
- {
840
- "$ref": "#/definitions/template_v1/common/Expression"
841
- }
842
- ]
843
- }
844
- },
845
1163
  "required": [
846
1164
  "matrix"
847
1165
  ]
848
1166
  },
849
1167
  {
850
- "properties": {
851
- "for": {
852
- "oneOf": [
853
- {
854
- "$ref": "#/definitions/template_v1/common/ForConfigV1"
855
- },
856
- {
857
- "$ref": "#/definitions/template_v1/common/Expression"
858
- }
859
- ]
860
- }
861
- },
862
1168
  "required": [
863
1169
  "for"
864
1170
  ]
865
1171
  },
866
1172
  {
867
- "properties": {
868
- "while": {
869
- "oneOf": [
870
- {
871
- "$ref": "#/definitions/template_v1/common/WhileConfigV1"
872
- },
873
- {
874
- "$ref": "#/definitions/template_v1/common/Expression"
875
- }
876
- ]
877
- }
878
- },
879
1173
  "required": [
880
1174
  "while"
881
1175
  ]
882
1176
  },
883
1177
  {
884
- "properties": {
885
- "repeat": {
886
- "oneOf": [
887
- {
888
- "$ref": "#/definitions/template_v1/common/RepeatConfigV1"
889
- },
890
- {
891
- "$ref": "#/definitions/template_v1/common/Expression"
892
- }
893
- ]
894
- }
895
- },
896
1178
  "required": [
897
1179
  "repeat"
898
1180
  ]
@@ -956,6 +1238,7 @@ const schema = {
956
1238
  "ForConfigV1": {
957
1239
  "title": "ForConfigV1",
958
1240
  "type": "object",
1241
+ "additionalProperties": false,
959
1242
  "description": "For loop strategy configuration.",
960
1243
  "properties": {
961
1244
  "iterations": {
@@ -980,6 +1263,7 @@ const schema = {
980
1263
  "WhileConfigV1": {
981
1264
  "title": "WhileConfigV1",
982
1265
  "type": "object",
1266
+ "additionalProperties": false,
983
1267
  "description": "While loop strategy configuration.",
984
1268
  "properties": {
985
1269
  "iterations": {
@@ -1008,6 +1292,7 @@ const schema = {
1008
1292
  "RepeatConfigV1": {
1009
1293
  "title": "RepeatConfigV1",
1010
1294
  "type": "object",
1295
+ "additionalProperties": false,
1011
1296
  "description": "Repeat strategy configuration for iterating over items.",
1012
1297
  "properties": {
1013
1298
  "iterations": {
@@ -1108,6 +1393,7 @@ const schema = {
1108
1393
  "FailureConfigV1": {
1109
1394
  "title": "FailureConfigV1",
1110
1395
  "type": "object",
1396
+ "additionalProperties": false,
1111
1397
  "description": "Failure strategy configuration for handling errors.",
1112
1398
  "required": [
1113
1399
  "errors",
@@ -1225,6 +1511,7 @@ const schema = {
1225
1511
  "RetryFailureSpecConfigV1": {
1226
1512
  "title": "RetryFailureSpecConfigV1",
1227
1513
  "type": "object",
1514
+ "additionalProperties": false,
1228
1515
  "description": "Retry configuration for failure strategy.",
1229
1516
  "properties": {
1230
1517
  "attempts": {
@@ -1263,6 +1550,7 @@ const schema = {
1263
1550
  "ManualFailureSpecConfigV1": {
1264
1551
  "title": "ManualFailureSpecConfigV1",
1265
1552
  "type": "object",
1553
+ "additionalProperties": false,
1266
1554
  "description": "Manual intervention configuration for failure strategy.",
1267
1555
  "properties": {
1268
1556
  "timeout": {
@@ -1286,6 +1574,7 @@ const schema = {
1286
1574
  "RetryStepGroupFailureSpecConfigV1": {
1287
1575
  "title": "RetryStepGroupFailureSpecConfigV1",
1288
1576
  "type": "object",
1577
+ "additionalProperties": false,
1289
1578
  "description": "Retry step group configuration for failure strategy.",
1290
1579
  "properties": {
1291
1580
  "attempts": {
@@ -1321,6 +1610,7 @@ const schema = {
1321
1610
  "title": "OutputV1",
1322
1611
  "description": "Output variable definition for capturing step outputs.",
1323
1612
  "type": "object",
1613
+ "additionalProperties": false,
1324
1614
  "required": [
1325
1615
  "name"
1326
1616
  ],
@@ -1359,6 +1649,7 @@ const schema = {
1359
1649
  "title": "UnifiedTemplate",
1360
1650
  "description": "Template reference for steps, stages, or pipelines.",
1361
1651
  "type": "object",
1652
+ "additionalProperties": false,
1362
1653
  "properties": {
1363
1654
  "id": {
1364
1655
  "type": "string",
@@ -1383,325 +1674,62 @@ const schema = {
1383
1674
  },
1384
1675
  "build": {
1385
1676
  "$ref": "#/definitions/template_v1/common/TemplateRef"
1386
- },
1387
- "test": {
1388
- "$ref": "#/definitions/template_v1/common/TemplateRef"
1389
- },
1390
- "chaos": {
1391
- "$ref": "#/definitions/template_v1/common/TemplateRef"
1392
- },
1393
- "idp": {
1394
- "$ref": "#/definitions/template_v1/common/TemplateRef"
1395
- },
1396
- "iacm": {
1397
- "$ref": "#/definitions/template_v1/common/TemplateRef"
1398
- },
1399
- "sto": {
1400
- "$ref": "#/definitions/template_v1/common/TemplateRef"
1401
- }
1402
- },
1403
- "$schema": "http://json-schema.org/draft-07/schema#"
1404
- },
1405
- "CIResourceClass": {
1406
- "title": "CIResourceClass",
1407
- "description": "Cloud runner machine size enumeration (maps to io.harness.beans.yaml.extended.CIResourceClass).",
1408
- "type": "string",
1409
- "enum": [
1410
- "xsmall",
1411
- "flex",
1412
- "small",
1413
- "medium",
1414
- "large",
1415
- "xlarge",
1416
- "xxlarge",
1417
- "xxxlarge"
1418
- ],
1419
- "$schema": "http://json-schema.org/draft-07/schema#"
1420
- },
1421
- "PullPolicy": {
1422
- "title": "PullPolicy",
1423
- "description": "Image pull policy enumeration (maps to io.harness.beans.yaml.extended.beans.PullPolicy).",
1424
- "type": "string",
1425
- "enum": [
1426
- "always",
1427
- "never",
1428
- "if-not-exists"
1429
- ],
1430
- "$schema": "http://json-schema.org/draft-07/schema#"
1431
- }
1432
- },
1433
- "pipeline": {
1434
- "type": "object",
1435
- "title": "pipeline",
1436
- "properties": {
1437
- "id": {
1438
- "type": "string",
1439
- "pattern": "^[a-zA-Z_][0-9a-zA-Z_]{0,127}$"
1440
- },
1441
- "name": {
1442
- "type": "string",
1443
- "pattern": "^[a-zA-Z_0-9-.][-0-9a-zA-Z_\\s.]{0,127}$"
1444
- },
1445
- "clone": {
1446
- "$ref": "#/definitions/template_v1/Clone"
1447
- },
1448
- "inputs": {
1449
- "$ref": "#/definitions/template_v1/common/NGVariableV1Wrapper"
1450
- },
1451
- "timeout": {
1452
- "type": "string",
1453
- "description": "Defines pipeline timeout",
1454
- "pattern": "^(([1-9])+\\d+[s])|(((([1-9])+\\d*[mhwd])+([\\s]?\\d+[smhwd])*)|(.*<\\+.*>(?!.*\\.executionInput\\(\\)).*)|(^$))$"
1455
- },
1456
- "allow-stage-executions": {
1457
- "type": "boolean",
1458
- "description": "Allows stage executions."
1459
- },
1460
- "fixed-inputs-on-rerun": {
1461
- "type": "boolean",
1462
- "description": "Fixed inputs on rerun."
1463
- },
1464
- "delegate": {
1465
- "$ref": "#/definitions/template_v1/common/Delegate"
1466
- },
1467
- "env": {
1468
- "type": "object",
1469
- "additionalProperties": {
1470
- "type": "string"
1471
- },
1472
- "description": "Provides the default environment variables."
1473
- },
1474
- "repo": {
1475
- "description": "Configures the default repository.",
1476
- "$ref": "#/definitions/template_v1/Repository"
1477
- },
1478
- "barriers": {
1479
- "type": "array",
1480
- "description": "Barriers provides optional pipeline barriers.",
1481
- "items": {
1482
- "type": "string"
1483
- }
1484
- },
1485
- "if": {
1486
- "type": "string",
1487
- "description": "If provides conditional pipeline execution logic. If the condition resolves to false, the pipeline is skipped."
1488
- },
1489
- "on": {
1490
- "$ref": "#/definitions/template_v1/On"
1491
- },
1492
- "notifications": {
1493
- "type": "array",
1494
- "description": "Notifications provides optional pipeline notifications.",
1495
- "items": {
1496
- "$ref": "#/definitions/template_v1/NotificationRules"
1497
- }
1498
- },
1499
- "tags": {
1500
- "type": "object",
1501
- "description": "Tags for the pipeline.",
1502
- "additionalProperties": {
1503
- "type": "string"
1504
- }
1505
- },
1506
- "template": {
1507
- "description": "Pipeline template reference.",
1508
- "$ref": "#/definitions/template_v1/common/TemplateRef"
1509
- },
1510
- "stages": {
1511
- "type": "array",
1512
- "description": "Pipeline stages - can contain stages, groups, or parallel executions.",
1513
- "items": {
1514
- "$ref": "#/definitions/template_v1/stages/unified/StageItems"
1515
- },
1516
- "maxItems": 256,
1517
- "minItems": 1
1518
- }
1519
- },
1520
- "$schema": "http://json-schema.org/draft-07/schema#"
1521
- },
1522
- "Clone": {
1523
- "title": "Clone",
1524
- "type": "object",
1525
- "description": "Clone defines the default clone behavior.",
1526
- "properties": {
1527
- "depth": {
1528
- "description": "Depth defines the clone depth.",
1529
- "oneOf": [
1530
- {
1531
- "type": "integer",
1532
- "format": "int32"
1533
- },
1534
- {
1535
- "$ref": "#/definitions/template_v1/common/Expression"
1536
- }
1537
- ]
1538
- },
1539
- "enabled": {
1540
- "description": "Enables or disables the default clone step.",
1541
- "oneOf": [
1542
- {
1543
- "type": "boolean"
1544
- },
1545
- {
1546
- "$ref": "#/definitions/template_v1/common/Expression"
1547
- }
1548
- ]
1549
- },
1550
- "insecure": {
1551
- "description": "Insecure disables ssl verification.",
1552
- "oneOf": [
1553
- {
1554
- "type": "boolean"
1555
- },
1556
- {
1557
- "$ref": "#/definitions/template_v1/common/Expression"
1558
- }
1559
- ]
1560
- },
1561
- "lfs": {
1562
- "description": "Lfs enables cloning lfs files.",
1563
- "oneOf": [
1564
- {
1565
- "type": "boolean"
1566
- },
1567
- {
1568
- "$ref": "#/definitions/template_v1/common/Expression"
1569
- }
1570
- ]
1571
- },
1572
- "strategy": {
1573
- "description": "Strategy configures the PR clone strategy.",
1574
- "type": "string",
1575
- "enum": [
1576
- "source-branch",
1577
- "merge"
1578
- ]
1579
- },
1580
- "submodules": {
1581
- "description": "Submodules enables cloning all submodules. Accepts boolean, string (true/false/recursive), or expression.",
1582
- "oneOf": [
1583
- {
1584
- "type": "boolean"
1585
- },
1586
- {
1587
- "type": "string",
1588
- "enum": [
1589
- "true",
1590
- "false",
1591
- "recursive"
1592
- ]
1593
- },
1594
- {
1595
- "$ref": "#/definitions/template_v1/common/Expression"
1596
- }
1597
- ]
1598
- },
1599
- "tags": {
1600
- "description": "Tags enables cloning all tags.",
1601
- "oneOf": [
1602
- {
1603
- "type": "boolean"
1604
- },
1605
- {
1606
- "$ref": "#/definitions/template_v1/common/Expression"
1607
- }
1608
- ]
1609
- },
1610
- "trace": {
1611
- "description": "Trace enables trace logging.",
1612
- "oneOf": [
1613
- {
1614
- "type": "boolean"
1615
- },
1616
- {
1617
- "$ref": "#/definitions/template_v1/common/Expression"
1618
- }
1619
- ]
1620
- },
1621
- "ref": {
1622
- "description": "Reference defines the clone ref.",
1623
- "oneOf": [
1624
- {
1625
- "$ref": "#/definitions/template_v1/Reference"
1626
- },
1627
- {
1628
- "$ref": "#/definitions/template_v1/common/Expression"
1629
- }
1630
- ]
1631
- },
1632
- "repo": {
1633
- "description": "Repo defines the repository name or URL.",
1634
- "type": "string",
1635
- "minLength": 1
1636
- },
1637
- "connector": {
1638
- "description": "Connector defines the connector reference.",
1639
- "type": "string",
1640
- "minLength": 1
1641
- },
1642
- "clonedir": {
1643
- "description": "Clonedir defines the clone directory path.",
1644
- "type": "string",
1645
- "minLength": 1
1646
- },
1647
- "resources": {
1648
- "description": "Resources defines container resource limits.",
1649
- "$ref": "#/definitions/template_v1/Resource"
1650
- },
1651
- "user": {
1652
- "description": "User ID to run the clone container as. Supports expressions.",
1653
- "oneOf": [
1654
- {
1655
- "type": "integer"
1656
- },
1657
- {
1658
- "type": "string"
1659
- }
1660
- ]
1661
- },
1662
- "sparse-checkout": {
1663
- "description": "SparseCheckout defines paths to limit the clone to specific directories.",
1664
- "oneOf": [
1665
- {
1666
- "type": "array",
1667
- "items": {
1668
- "type": "string"
1669
- }
1670
- },
1671
- {
1672
- "$ref": "#/definitions/template_v1/common/Expression"
1673
- }
1674
- ]
1675
- },
1676
- "pre-fetch": {
1677
- "description": "PreFetch defines a command to run before the clone operation.",
1678
- "oneOf": [
1679
- {
1680
- "type": "string"
1681
- },
1682
- {
1683
- "$ref": "#/definitions/template_v1/common/Expression"
1684
- }
1685
- ]
1677
+ },
1678
+ "test": {
1679
+ "$ref": "#/definitions/template_v1/common/TemplateRef"
1680
+ },
1681
+ "chaos": {
1682
+ "$ref": "#/definitions/template_v1/common/TemplateRef"
1683
+ },
1684
+ "idp": {
1685
+ "$ref": "#/definitions/template_v1/common/TemplateRef"
1686
+ },
1687
+ "iacm": {
1688
+ "$ref": "#/definitions/template_v1/common/TemplateRef"
1689
+ },
1690
+ "sto": {
1691
+ "$ref": "#/definitions/template_v1/common/TemplateRef"
1692
+ },
1693
+ "ai-eval": {
1694
+ "description": "Alias for AI evaluation step template.",
1695
+ "$ref": "#/definitions/template_v1/common/TemplateRef"
1696
+ }
1686
1697
  },
1687
- "persist-credentials": {
1688
- "description": "PersistCredentials configures git credentials to persist after clone so subsequent git operations in the workspace can authenticate.",
1689
- "oneOf": [
1690
- {
1691
- "type": "boolean"
1692
- },
1693
- {
1694
- "$ref": "#/definitions/template_v1/common/Expression"
1695
- }
1696
- ]
1697
- }
1698
+ "$schema": "http://json-schema.org/draft-07/schema#"
1698
1699
  },
1699
- "$schema": "http://json-schema.org/draft-07/schema#"
1700
+ "CIResourceClass": {
1701
+ "title": "CIResourceClass",
1702
+ "description": "Cloud runner machine size enumeration (maps to io.harness.beans.yaml.extended.CIResourceClass).",
1703
+ "type": "string",
1704
+ "enum": [
1705
+ "xsmall",
1706
+ "flex",
1707
+ "small",
1708
+ "medium",
1709
+ "large",
1710
+ "xlarge",
1711
+ "xxlarge",
1712
+ "xxxlarge"
1713
+ ],
1714
+ "$schema": "http://json-schema.org/draft-07/schema#"
1715
+ },
1716
+ "PullPolicy": {
1717
+ "title": "PullPolicy",
1718
+ "description": "Image pull policy enumeration (maps to io.harness.beans.yaml.extended.beans.PullPolicy).",
1719
+ "type": "string",
1720
+ "enum": [
1721
+ "always",
1722
+ "never",
1723
+ "if-not-exists"
1724
+ ],
1725
+ "$schema": "http://json-schema.org/draft-07/schema#"
1726
+ }
1700
1727
  },
1701
1728
  "Reference": {
1702
1729
  "title": "Reference",
1703
1730
  "description": "Reference defines a git clone reference.",
1704
1731
  "type": "object",
1732
+ "additionalProperties": false,
1705
1733
  "properties": {
1706
1734
  "name": {
1707
1735
  "description": "Name provides ref name (branch name, tag name, or PR number).",
@@ -1740,6 +1768,7 @@ const schema = {
1740
1768
  "Resource": {
1741
1769
  "title": "Resource",
1742
1770
  "type": "object",
1771
+ "additionalProperties": false,
1743
1772
  "description": "Resource defines container resource limits and requests.",
1744
1773
  "properties": {
1745
1774
  "limits": {
@@ -1756,6 +1785,7 @@ const schema = {
1756
1785
  "ResourceLimits": {
1757
1786
  "title": "ResourceLimits",
1758
1787
  "type": "object",
1788
+ "additionalProperties": false,
1759
1789
  "description": "ResourceLimits defines CPU and memory constraints.",
1760
1790
  "properties": {
1761
1791
  "cpu": {
@@ -1775,6 +1805,7 @@ const schema = {
1775
1805
  "title": "Repository",
1776
1806
  "description": "Repository defines a remote git repository.",
1777
1807
  "type": "object",
1808
+ "additionalProperties": false,
1778
1809
  "properties": {
1779
1810
  "connector": {
1780
1811
  "description": "Connector provides the repository connector.",
@@ -1784,7 +1815,8 @@ const schema = {
1784
1815
  "description": "Name provides the repository name.",
1785
1816
  "type": "string"
1786
1817
  }
1787
- }
1818
+ },
1819
+ "$schema": "http://json-schema.org/draft-07/schema#"
1788
1820
  },
1789
1821
  "On": {
1790
1822
  "title": "On",
@@ -1839,6 +1871,7 @@ const schema = {
1839
1871
  "title": "BranchFilter",
1840
1872
  "description": "BranchFilter defines branch filtering for push and pull_request events.",
1841
1873
  "type": "object",
1874
+ "additionalProperties": false,
1842
1875
  "properties": {
1843
1876
  "branches": {
1844
1877
  "type": "array",
@@ -1853,6 +1886,7 @@ const schema = {
1853
1886
  "title": "NotificationRules",
1854
1887
  "description": "NotificationRules defines notification configuration for pipeline events.",
1855
1888
  "type": "object",
1889
+ "additionalProperties": false,
1856
1890
  "properties": {
1857
1891
  "id": {
1858
1892
  "type": "string",
@@ -1994,6 +2028,7 @@ const schema = {
1994
2028
  "title": "NotificationEvent",
1995
2029
  "description": "NotificationEvent defines event types that trigger notifications.",
1996
2030
  "type": "object",
2031
+ "additionalProperties": false,
1997
2032
  "properties": {
1998
2033
  "pipeline": {
1999
2034
  "description": "Pipeline-level events.",
@@ -2156,6 +2191,7 @@ const schema = {
2156
2191
  "title": "PmsEmailChannel",
2157
2192
  "description": "Email notification channel configuration.",
2158
2193
  "type": "object",
2194
+ "additionalProperties": false,
2159
2195
  "properties": {
2160
2196
  "user-groups": {
2161
2197
  "description": "List of user group references.",
@@ -2185,6 +2221,7 @@ const schema = {
2185
2221
  "title": "PmsSlackChannel",
2186
2222
  "description": "Slack notification channel configuration.",
2187
2223
  "type": "object",
2224
+ "additionalProperties": false,
2188
2225
  "properties": {
2189
2226
  "user-groups": {
2190
2227
  "description": "List of user group references.",
@@ -2211,6 +2248,7 @@ const schema = {
2211
2248
  "title": "PmsMSTeamChannel",
2212
2249
  "description": "Microsoft Teams notification channel configuration.",
2213
2250
  "type": "object",
2251
+ "additionalProperties": false,
2214
2252
  "properties": {
2215
2253
  "keys": {
2216
2254
  "description": "List of MS Teams webhook keys.",
@@ -2240,6 +2278,7 @@ const schema = {
2240
2278
  "title": "PmsWebhookChannel",
2241
2279
  "description": "Webhook notification channel configuration.",
2242
2280
  "type": "object",
2281
+ "additionalProperties": false,
2243
2282
  "properties": {
2244
2283
  "url": {
2245
2284
  "description": "Webhook URL.",
@@ -2259,6 +2298,7 @@ const schema = {
2259
2298
  "title": "PmsPagerDutyChannel",
2260
2299
  "description": "PagerDuty notification channel configuration.",
2261
2300
  "type": "object",
2301
+ "additionalProperties": false,
2262
2302
  "properties": {
2263
2303
  "user-groups": {
2264
2304
  "description": "List of user group references.",
@@ -2285,6 +2325,7 @@ const schema = {
2285
2325
  "title": "PmsDatadogChannel",
2286
2326
  "description": "Datadog notification channel configuration.",
2287
2327
  "type": "object",
2328
+ "additionalProperties": false,
2288
2329
  "properties": {
2289
2330
  "api-key": {
2290
2331
  "description": "Datadog API key.",
@@ -2514,6 +2555,7 @@ const schema = {
2514
2555
  "title": "UnifiedStageNodeV1",
2515
2556
  "description": "Unified stage node supporting CI, CD, IaCM and other stage types.",
2516
2557
  "type": "object",
2558
+ "additionalProperties": false,
2517
2559
  "required": [
2518
2560
  "steps"
2519
2561
  ],
@@ -2541,10 +2583,6 @@ const schema = {
2541
2583
  "type": "string",
2542
2584
  "description": "Conditional execution expression. Stage is skipped if condition resolves to false."
2543
2585
  },
2544
- "variables": {
2545
- "description": "Stage-level variables.",
2546
- "$ref": "#/definitions/template_v1/common/NGVariableV1Wrapper"
2547
- },
2548
2586
  "inputs": {
2549
2587
  "description": "Stage-level input variables.",
2550
2588
  "$ref": "#/definitions/template_v1/common/NGVariableV1Wrapper"
@@ -2999,6 +3037,7 @@ const schema = {
2999
3037
  "title": "Toleration",
3000
3038
  "description": "Kubernetes pod toleration.",
3001
3039
  "type": "object",
3040
+ "additionalProperties": false,
3002
3041
  "properties": {
3003
3042
  "effect": {
3004
3043
  "description": "Toleration effect. Supports expressions.",
@@ -3035,6 +3074,7 @@ const schema = {
3035
3074
  "title": "CIVolumeV1",
3036
3075
  "description": "CI volume configuration. Type determined by 'uses' property.",
3037
3076
  "type": "object",
3077
+ "additionalProperties": false,
3038
3078
  "required": [
3039
3079
  "uses",
3040
3080
  "with"
@@ -3054,6 +3094,10 @@ const schema = {
3054
3094
  "config-map",
3055
3095
  "secret"
3056
3096
  ]
3097
+ },
3098
+ "with": {
3099
+ "description": "Volume-specific configuration; shape determined by `uses`.",
3100
+ "type": "object"
3057
3101
  }
3058
3102
  },
3059
3103
  "allOf": [
@@ -3144,6 +3188,7 @@ const schema = {
3144
3188
  "title": "EmptyDirYamlV1Spec",
3145
3189
  "description": "EmptyDir volume specification.",
3146
3190
  "type": "object",
3191
+ "additionalProperties": false,
3147
3192
  "required": [
3148
3193
  "mount-path"
3149
3194
  ],
@@ -3167,6 +3212,7 @@ const schema = {
3167
3212
  "title": "PersistentVolumeClaimYamlSpecV1",
3168
3213
  "description": "PersistentVolumeClaim volume specification.",
3169
3214
  "type": "object",
3215
+ "additionalProperties": false,
3170
3216
  "required": [
3171
3217
  "mount-path",
3172
3218
  "claim-name"
@@ -3198,6 +3244,7 @@ const schema = {
3198
3244
  "title": "HostPathYamlSpecV1",
3199
3245
  "description": "HostPath volume specification.",
3200
3246
  "type": "object",
3247
+ "additionalProperties": false,
3201
3248
  "required": [
3202
3249
  "mount-path",
3203
3250
  "path"
@@ -3222,6 +3269,7 @@ const schema = {
3222
3269
  "title": "ConfigMapVolumeYamlSpecV1",
3223
3270
  "description": "ConfigMap volume specification.",
3224
3271
  "type": "object",
3272
+ "additionalProperties": false,
3225
3273
  "required": [
3226
3274
  "mount-path",
3227
3275
  "name"
@@ -3253,6 +3301,7 @@ const schema = {
3253
3301
  "title": "SecretVolumeYamlSpecV1",
3254
3302
  "description": "Secret volume specification.",
3255
3303
  "type": "object",
3304
+ "additionalProperties": false,
3256
3305
  "required": [
3257
3306
  "mount-path",
3258
3307
  "name"
@@ -3284,6 +3333,7 @@ const schema = {
3284
3333
  "title": "SecurityContextV1",
3285
3334
  "description": "Kubernetes pod security context.",
3286
3335
  "type": "object",
3336
+ "additionalProperties": false,
3287
3337
  "properties": {
3288
3338
  "allow-privilege-escalation": {
3289
3339
  "description": "Whether to allow privilege escalation. Supports expressions.",
@@ -3373,6 +3423,7 @@ const schema = {
3373
3423
  "title": "Capabilities",
3374
3424
  "description": "Container capabilities configuration.",
3375
3425
  "type": "object",
3426
+ "additionalProperties": false,
3376
3427
  "properties": {
3377
3428
  "add": {
3378
3429
  "description": "Capabilities to add. Supports expressions.",
@@ -3592,7 +3643,7 @@ const schema = {
3592
3643
  ],
3593
3644
  "properties": {
3594
3645
  "group": {
3595
- "description": "Environment group configuration.",
3646
+ "description": "Environment group configuration, or an expression (e.g. <+input>).",
3596
3647
  "$ref": "#/definitions/template_v1/stages/unified/EnvironmentGroup"
3597
3648
  },
3598
3649
  "parallel": {
@@ -3869,44 +3920,52 @@ const schema = {
3869
3920
  },
3870
3921
  "EnvironmentGroup": {
3871
3922
  "title": "EnvironmentGroup",
3872
- "description": "Environment group configuration.",
3873
- "type": "object",
3874
- "required": [
3875
- "id"
3876
- ],
3877
- "properties": {
3878
- "id": {
3879
- "description": "Environment group identifier.",
3880
- "type": "string"
3881
- },
3882
- "parallel": {
3883
- "description": "Execute environments in parallel (all at once). Defaults to false, so environments run one at a time (serially) unless set to true.",
3884
- "oneOf": [
3885
- {
3886
- "type": "boolean",
3887
- "default": false
3923
+ "description": "Environment group configuration, or an expression.",
3924
+ "oneOf": [
3925
+ {
3926
+ "type": "object",
3927
+ "required": [
3928
+ "id"
3929
+ ],
3930
+ "properties": {
3931
+ "id": {
3932
+ "description": "Environment group identifier.",
3933
+ "type": "string"
3888
3934
  },
3889
- {
3890
- "$ref": "#/definitions/template_v1/common/Expression"
3935
+ "parallel": {
3936
+ "description": "Execute environments in parallel (all at once). Defaults to false, so environments run one at a time (serially) unless set to true.",
3937
+ "oneOf": [
3938
+ {
3939
+ "type": "boolean",
3940
+ "default": false
3941
+ },
3942
+ {
3943
+ "$ref": "#/definitions/template_v1/common/Expression"
3944
+ }
3945
+ ]
3946
+ },
3947
+ "items": {
3948
+ "description": "List of environments from the group.",
3949
+ "$ref": "#/definitions/template_v1/stages/unified/EnvironmentItems"
3950
+ },
3951
+ "filters": {
3952
+ "description": "Filters for selecting environments and infrastructures.",
3953
+ "$ref": "#/definitions/template_v1/stages/unified/Filters"
3891
3954
  }
3892
- ]
3893
- },
3894
- "items": {
3895
- "description": "List of environments from the group.",
3896
- "$ref": "#/definitions/template_v1/stages/unified/EnvironmentItems"
3955
+ },
3956
+ "additionalProperties": false
3897
3957
  },
3898
- "filters": {
3899
- "description": "Filters for selecting environments and infrastructures.",
3900
- "$ref": "#/definitions/template_v1/stages/unified/Filters"
3958
+ {
3959
+ "$ref": "#/definitions/template_v1/common/Expression"
3901
3960
  }
3902
- },
3903
- "additionalProperties": false,
3961
+ ],
3904
3962
  "$schema": "http://json-schema.org/draft-07/schema#"
3905
3963
  },
3906
3964
  "CachingV1": {
3907
3965
  "title": "CachingV1",
3908
3966
  "description": "Cache intelligence configuration.",
3909
3967
  "type": "object",
3968
+ "additionalProperties": false,
3910
3969
  "properties": {
3911
3970
  "enabled": {
3912
3971
  "description": "Whether caching is enabled. Supports expressions.",
@@ -3919,7 +3978,7 @@ const schema = {
3919
3978
  }
3920
3979
  ]
3921
3980
  },
3922
- "path": {
3981
+ "paths": {
3923
3982
  "description": "Paths to cache. Supports expressions.",
3924
3983
  "oneOf": [
3925
3984
  {
@@ -3949,6 +4008,41 @@ const schema = {
3949
4008
  "push",
3950
4009
  "pull-push"
3951
4010
  ]
4011
+ },
4012
+ "connector": {
4013
+ "description": "Cache storage connector. Supports expressions.",
4014
+ "type": "string"
4015
+ },
4016
+ "region": {
4017
+ "description": "Cache storage region. Supports expressions.",
4018
+ "type": "string"
4019
+ },
4020
+ "bucket_name": {
4021
+ "description": "Cache storage bucket name. Supports expressions.",
4022
+ "type": "string"
4023
+ },
4024
+ "container_name": {
4025
+ "description": "Cache storage container name. Supports expressions.",
4026
+ "type": "string"
4027
+ },
4028
+ "storage_account": {
4029
+ "description": "Cache storage account name. Supports expressions.",
4030
+ "type": "string"
4031
+ },
4032
+ "user": {
4033
+ "description": "User ID to run cache containers as. Supports expressions.",
4034
+ "oneOf": [
4035
+ {
4036
+ "type": "integer"
4037
+ },
4038
+ {
4039
+ "type": "string"
4040
+ }
4041
+ ]
4042
+ },
4043
+ "resources": {
4044
+ "description": "Cache container resource limits and requests.",
4045
+ "$ref": "#/definitions/template_v1/Resource"
3952
4046
  }
3953
4047
  },
3954
4048
  "$schema": "http://json-schema.org/draft-07/schema#"
@@ -3957,6 +4051,7 @@ const schema = {
3957
4051
  "title": "BuildIntelligenceV1",
3958
4052
  "description": "Build intelligence configuration for test optimization.",
3959
4053
  "type": "object",
4054
+ "additionalProperties": false,
3960
4055
  "properties": {
3961
4056
  "enabled": {
3962
4057
  "description": "Whether build intelligence is enabled. Supports expressions.",
@@ -3968,6 +4063,49 @@ const schema = {
3968
4063
  "$ref": "#/definitions/template_v1/common/Expression"
3969
4064
  }
3970
4065
  ]
4066
+ },
4067
+ "port": {
4068
+ "description": "Build intelligence cache service port. Supports expressions.",
4069
+ "type": "string"
4070
+ },
4071
+ "maven-url": {
4072
+ "description": "Maven repository URL used by build intelligence. Supports expressions.",
4073
+ "type": "string"
4074
+ },
4075
+ "connector": {
4076
+ "description": "Build intelligence storage connector. Supports expressions.",
4077
+ "type": "string"
4078
+ },
4079
+ "region": {
4080
+ "description": "Build intelligence storage region. Supports expressions.",
4081
+ "type": "string"
4082
+ },
4083
+ "bucket_name": {
4084
+ "description": "Build intelligence storage bucket name. Supports expressions.",
4085
+ "type": "string"
4086
+ },
4087
+ "container_name": {
4088
+ "description": "Build intelligence storage container name. Supports expressions.",
4089
+ "type": "string"
4090
+ },
4091
+ "storage_account": {
4092
+ "description": "Build intelligence storage account name. Supports expressions.",
4093
+ "type": "string"
4094
+ },
4095
+ "user": {
4096
+ "description": "User ID to run build intelligence containers as. Supports expressions.",
4097
+ "oneOf": [
4098
+ {
4099
+ "type": "integer"
4100
+ },
4101
+ {
4102
+ "type": "string"
4103
+ }
4104
+ ]
4105
+ },
4106
+ "resources": {
4107
+ "description": "Build intelligence container resource limits and requests.",
4108
+ "$ref": "#/definitions/template_v1/Resource"
3971
4109
  }
3972
4110
  },
3973
4111
  "$schema": "http://json-schema.org/draft-07/schema#"
@@ -4039,6 +4177,7 @@ const schema = {
4039
4177
  "title": "PipelineStageOutputs",
4040
4178
  "description": "Output configuration for pipeline stage.",
4041
4179
  "type": "object",
4180
+ "additionalProperties": false,
4042
4181
  "required": [
4043
4182
  "name",
4044
4183
  "value"
@@ -4060,6 +4199,7 @@ const schema = {
4060
4199
  "title": "DynamicStageNodeV1",
4061
4200
  "description": "Dynamic stage node for executing child pipelines from inline or remote sources.",
4062
4201
  "type": "object",
4202
+ "additionalProperties": false,
4063
4203
  "required": [
4064
4204
  "dynamic"
4065
4205
  ],
@@ -4080,16 +4220,13 @@ const schema = {
4080
4220
  "description": "Conditional execution expression. Stage is skipped if condition resolves to false.",
4081
4221
  "type": "string"
4082
4222
  },
4083
- "variables": {
4084
- "description": "Stage-level variables.",
4085
- "$ref": "#/definitions/template_v1/common/NGVariableV1Wrapper"
4086
- },
4087
4223
  "on-failure": {
4088
4224
  "$ref": "#/definitions/template_v1/common/OnFailure"
4089
4225
  },
4090
4226
  "dynamic": {
4091
4227
  "description": "Dynamic stage configuration.",
4092
4228
  "type": "object",
4229
+ "additionalProperties": false,
4093
4230
  "properties": {
4094
4231
  "source": {
4095
4232
  "description": "Base64 encoded inline child pipeline YAML.",
@@ -4101,6 +4238,7 @@ const schema = {
4101
4238
  "source-config": {
4102
4239
  "description": "Remote source configuration for child pipeline.",
4103
4240
  "type": "object",
4241
+ "additionalProperties": false,
4104
4242
  "required": [
4105
4243
  "uses",
4106
4244
  "with"
@@ -4116,6 +4254,7 @@ const schema = {
4116
4254
  "with": {
4117
4255
  "description": "Git source configuration.",
4118
4256
  "type": "object",
4257
+ "additionalProperties": false,
4119
4258
  "required": [
4120
4259
  "repo",
4121
4260
  "path"
@@ -4166,6 +4305,7 @@ const schema = {
4166
4305
  "title": "ParallelStages",
4167
4306
  "description": "Parallel stages execution configuration.",
4168
4307
  "type": "object",
4308
+ "additionalProperties": false,
4169
4309
  "required": [
4170
4310
  "parallel"
4171
4311
  ],
@@ -4173,6 +4313,7 @@ const schema = {
4173
4313
  "parallel": {
4174
4314
  "description": "Stages to execute in parallel.",
4175
4315
  "type": "object",
4316
+ "additionalProperties": false,
4176
4317
  "required": [
4177
4318
  "stages"
4178
4319
  ],
@@ -4193,6 +4334,7 @@ const schema = {
4193
4334
  "title": "GroupStages",
4194
4335
  "description": "Group of stages executed sequentially.",
4195
4336
  "type": "object",
4337
+ "additionalProperties": false,
4196
4338
  "required": [
4197
4339
  "group"
4198
4340
  ],
@@ -4200,6 +4342,7 @@ const schema = {
4200
4342
  "group": {
4201
4343
  "description": "Group configuration.",
4202
4344
  "type": "object",
4345
+ "additionalProperties": false,
4203
4346
  "properties": {
4204
4347
  "id": {
4205
4348
  "description": "Unique identifier for the group.",
@@ -4341,6 +4484,11 @@ const schema = {
4341
4484
  "required": [
4342
4485
  "sto"
4343
4486
  ]
4487
+ },
4488
+ {
4489
+ "required": [
4490
+ "ai-eval"
4491
+ ]
4344
4492
  }
4345
4493
  ]
4346
4494
  },
@@ -4507,6 +4655,11 @@ const schema = {
4507
4655
  "required": [
4508
4656
  "sto"
4509
4657
  ]
4658
+ },
4659
+ {
4660
+ "required": [
4661
+ "ai-eval"
4662
+ ]
4510
4663
  }
4511
4664
  ]
4512
4665
  },
@@ -4527,6 +4680,7 @@ const schema = {
4527
4680
  "title": "StepNodeV1",
4528
4681
  "description": "Unified step node for CI/CD pipelines.",
4529
4682
  "type": "object",
4683
+ "additionalProperties": false,
4530
4684
  "anyOf": [
4531
4685
  {
4532
4686
  "required": [
@@ -4558,7 +4712,7 @@ const schema = {
4558
4712
  "description": "Display name of the step.",
4559
4713
  "type": "string"
4560
4714
  },
4561
- "desc": {
4715
+ "description": {
4562
4716
  "description": "Description of the step.",
4563
4717
  "type": "string"
4564
4718
  },
@@ -4640,6 +4794,7 @@ const schema = {
4640
4794
  "title": "PolicyConfig",
4641
4795
  "description": "Policy enforcement configuration.",
4642
4796
  "type": "object",
4797
+ "additionalProperties": false,
4643
4798
  "properties": {
4644
4799
  "policySets": {
4645
4800
  "description": "Policy sets to enforce.",
@@ -4655,6 +4810,7 @@ const schema = {
4655
4810
  "title": "RunStepInfoV1",
4656
4811
  "description": "Run step configuration for executing scripts.",
4657
4812
  "type": "object",
4813
+ "additionalProperties": false,
4658
4814
  "properties": {
4659
4815
  "shell": {
4660
4816
  "description": "Shell type to use. Supports expressions.",
@@ -4703,6 +4859,7 @@ const schema = {
4703
4859
  "oneOf": [
4704
4860
  {
4705
4861
  "type": "object",
4862
+ "additionalProperties": false,
4706
4863
  "properties": {
4707
4864
  "source": {
4708
4865
  "description": "Source URL to download from.",
@@ -4719,6 +4876,13 @@ const schema = {
4719
4876
  "fallback": {
4720
4877
  "description": "Fallback URL if primary source fails.",
4721
4878
  "type": "string"
4879
+ },
4880
+ "entrypoint": {
4881
+ "description": "Entrypoint command and arguments for the downloaded binary.",
4882
+ "type": "array",
4883
+ "items": {
4884
+ "type": "string"
4885
+ }
4722
4886
  }
4723
4887
  }
4724
4888
  },
@@ -4730,6 +4894,7 @@ const schema = {
4730
4894
  "output-alias": {
4731
4895
  "description": "Output alias configuration for exporting variables.",
4732
4896
  "type": "object",
4897
+ "additionalProperties": false,
4733
4898
  "required": [
4734
4899
  "key",
4735
4900
  "scope"
@@ -4757,6 +4922,7 @@ const schema = {
4757
4922
  "title": "Container",
4758
4923
  "description": "Container configuration for step execution.",
4759
4924
  "type": "object",
4925
+ "additionalProperties": false,
4760
4926
  "properties": {
4761
4927
  "image": {
4762
4928
  "description": "Container image to use. Supports expressions.",
@@ -4998,6 +5164,7 @@ const schema = {
4998
5164
  "title": "RunTestsStepInfoV1",
4999
5165
  "description": "Run tests step configuration for test intelligence.",
5000
5166
  "type": "object",
5167
+ "additionalProperties": false,
5001
5168
  "properties": {
5002
5169
  "shell": {
5003
5170
  "description": "Shell type to use. Supports expressions.",
@@ -5051,6 +5218,7 @@ const schema = {
5051
5218
  "intelligence": {
5052
5219
  "description": "Test intelligence configuration.",
5053
5220
  "type": "object",
5221
+ "additionalProperties": false,
5054
5222
  "properties": {
5055
5223
  "disabled": {
5056
5224
  "description": "Whether test intelligence is disabled. Supports expressions.",
@@ -5113,7 +5281,7 @@ const schema = {
5113
5281
  "description": "Display name of the step.",
5114
5282
  "type": "string"
5115
5283
  },
5116
- "desc": {
5284
+ "description": {
5117
5285
  "description": "Description of the step.",
5118
5286
  "type": "string"
5119
5287
  },
@@ -5342,6 +5510,56 @@ const schema = {
5342
5510
  "$ref": "#/definitions/template_v1/common/Expression"
5343
5511
  }
5344
5512
  ]
5513
+ },
5514
+ "user-groups": {
5515
+ "description": "User groups for approval when the advisory decision requires gating. Supports single value or array. Supports expressions.",
5516
+ "oneOf": [
5517
+ {
5518
+ "type": "array",
5519
+ "items": {
5520
+ "type": "string"
5521
+ }
5522
+ },
5523
+ {
5524
+ "$ref": "#/definitions/template_v1/common/Expression"
5525
+ }
5526
+ ]
5527
+ },
5528
+ "service-accounts": {
5529
+ "description": "Service accounts for approval when the advisory decision requires gating. Supports single value or array. Supports expressions.",
5530
+ "oneOf": [
5531
+ {
5532
+ "type": "array",
5533
+ "items": {
5534
+ "type": "string"
5535
+ }
5536
+ },
5537
+ {
5538
+ "$ref": "#/definitions/template_v1/common/Expression"
5539
+ }
5540
+ ]
5541
+ },
5542
+ "approvers-min-count": {
5543
+ "description": "Minimum number of approvers required when the advisory decision requires gating. Supports expressions.",
5544
+ "oneOf": [
5545
+ {
5546
+ "type": "integer"
5547
+ },
5548
+ {
5549
+ "type": "string"
5550
+ }
5551
+ ]
5552
+ },
5553
+ "block-executor": {
5554
+ "description": "Block pipeline executor from approving when the advisory decision requires gating. Supports expressions.",
5555
+ "oneOf": [
5556
+ {
5557
+ "type": "boolean"
5558
+ },
5559
+ {
5560
+ "$ref": "#/definitions/template_v1/common/Expression"
5561
+ }
5562
+ ]
5345
5563
  }
5346
5564
  }
5347
5565
  }
@@ -5759,12 +5977,14 @@ const schema = {
5759
5977
  "title": "ParallelSteps",
5760
5978
  "description": "Defines a list of steps to be executed in parallel.",
5761
5979
  "type": "object",
5980
+ "additionalProperties": false,
5762
5981
  "required": [
5763
5982
  "parallel"
5764
5983
  ],
5765
5984
  "properties": {
5766
5985
  "parallel": {
5767
5986
  "type": "object",
5987
+ "additionalProperties": false,
5768
5988
  "required": [
5769
5989
  "steps"
5770
5990
  ],
@@ -5803,7 +6023,7 @@ const schema = {
5803
6023
  "type": "string",
5804
6024
  "description": "Display name of the step group."
5805
6025
  },
5806
- "desc": {
6026
+ "description": {
5807
6027
  "type": "string",
5808
6028
  "description": "Description of the step group."
5809
6029
  },