@probelabs/visor 0.1.74 → 0.1.76

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.
@@ -0,0 +1,974 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$ref": "#/definitions/VisorConfig",
4
+ "definitions": {
5
+ "VisorConfig": {
6
+ "type": "object",
7
+ "properties": {
8
+ "version": {
9
+ "type": "string",
10
+ "description": "Configuration version"
11
+ },
12
+ "extends": {
13
+ "anyOf": [
14
+ {
15
+ "type": "string"
16
+ },
17
+ {
18
+ "type": "array",
19
+ "items": {
20
+ "type": "string"
21
+ }
22
+ }
23
+ ],
24
+ "description": "Extends from other configurations - can be file path, HTTP(S) URL, or \"default\""
25
+ },
26
+ "checks": {
27
+ "$ref": "#/definitions/Record%3Cstring%2CCheckConfig%3E",
28
+ "description": "Check configurations"
29
+ },
30
+ "output": {
31
+ "$ref": "#/definitions/OutputConfig",
32
+ "description": "Output configuration"
33
+ },
34
+ "http_server": {
35
+ "$ref": "#/definitions/HttpServerConfig",
36
+ "description": "HTTP server configuration for receiving webhooks"
37
+ },
38
+ "env": {
39
+ "$ref": "#/definitions/EnvConfig",
40
+ "description": "Global environment variables"
41
+ },
42
+ "ai_model": {
43
+ "type": "string",
44
+ "description": "Global AI model setting"
45
+ },
46
+ "ai_provider": {
47
+ "type": "string",
48
+ "description": "Global AI provider setting"
49
+ },
50
+ "ai_mcp_servers": {
51
+ "$ref": "#/definitions/Record%3Cstring%2CMcpServerConfig%3E",
52
+ "description": "Global MCP servers configuration for AI checks"
53
+ },
54
+ "max_parallelism": {
55
+ "type": "number",
56
+ "description": "Maximum number of checks to run in parallel (default: 3)"
57
+ },
58
+ "fail_fast": {
59
+ "type": "boolean",
60
+ "description": "Stop execution when any check fails (default: false)"
61
+ },
62
+ "fail_if": {
63
+ "type": "string",
64
+ "description": "Simple global fail condition - fails if expression evaluates to true"
65
+ },
66
+ "failure_conditions": {
67
+ "$ref": "#/definitions/FailureConditions",
68
+ "description": "Global failure conditions - optional (deprecated, use fail_if)"
69
+ },
70
+ "tag_filter": {
71
+ "$ref": "#/definitions/TagFilter",
72
+ "description": "Tag filter for selective check execution"
73
+ },
74
+ "routing": {
75
+ "$ref": "#/definitions/RoutingDefaults",
76
+ "description": "Optional routing defaults for retry/goto/run policies"
77
+ }
78
+ },
79
+ "required": [
80
+ "version",
81
+ "checks",
82
+ "output"
83
+ ],
84
+ "additionalProperties": false,
85
+ "description": "Main Visor configuration",
86
+ "patternProperties": {
87
+ "^x-": {}
88
+ }
89
+ },
90
+ "Record<string,CheckConfig>": {
91
+ "type": "object",
92
+ "additionalProperties": {
93
+ "$ref": "#/definitions/CheckConfig"
94
+ }
95
+ },
96
+ "CheckConfig": {
97
+ "type": "object",
98
+ "properties": {
99
+ "type": {
100
+ "$ref": "#/definitions/ConfigCheckType",
101
+ "description": "Type of check to perform (defaults to 'ai' if not specified)"
102
+ },
103
+ "prompt": {
104
+ "type": "string",
105
+ "description": "AI prompt for the check - can be inline string or file path (auto-detected) - required for AI checks"
106
+ },
107
+ "appendPrompt": {
108
+ "type": "string",
109
+ "description": "Additional prompt to append when extending configurations - merged with parent prompt"
110
+ },
111
+ "exec": {
112
+ "type": "string",
113
+ "description": "Command execution with Liquid template support - required for command checks"
114
+ },
115
+ "stdin": {
116
+ "type": "string",
117
+ "description": "Stdin input for tools with Liquid template support - optional for tool checks"
118
+ },
119
+ "url": {
120
+ "type": "string",
121
+ "description": "HTTP URL - required for http output checks"
122
+ },
123
+ "body": {
124
+ "type": "string",
125
+ "description": "HTTP body template (Liquid) - required for http output checks"
126
+ },
127
+ "method": {
128
+ "type": "string",
129
+ "description": "HTTP method (defaults to POST)"
130
+ },
131
+ "headers": {
132
+ "$ref": "#/definitions/Record%3Cstring%2Cstring%3E",
133
+ "description": "HTTP headers"
134
+ },
135
+ "endpoint": {
136
+ "type": "string",
137
+ "description": "HTTP endpoint path - required for http_input checks"
138
+ },
139
+ "transform": {
140
+ "type": "string",
141
+ "description": "Transform template for http_input data (Liquid) - optional"
142
+ },
143
+ "transform_js": {
144
+ "type": "string",
145
+ "description": "Transform using JavaScript expressions (evaluated in secure sandbox) - optional"
146
+ },
147
+ "schedule": {
148
+ "type": "string",
149
+ "description": "Cron schedule expression (e.g., \"0 2 * * *\") - optional for any check type"
150
+ },
151
+ "focus": {
152
+ "type": "string",
153
+ "description": "Focus area for the check (security/performance/style/architecture/all) - optional"
154
+ },
155
+ "command": {
156
+ "type": "string",
157
+ "description": "Command that triggers this check (e.g., \"review\", \"security-scan\") - optional"
158
+ },
159
+ "on": {
160
+ "type": "array",
161
+ "items": {
162
+ "$ref": "#/definitions/EventTrigger"
163
+ },
164
+ "description": "Events that trigger this check (defaults to ['manual'] if not specified)"
165
+ },
166
+ "triggers": {
167
+ "type": "array",
168
+ "items": {
169
+ "type": "string"
170
+ },
171
+ "description": "File patterns that trigger this check (optional)"
172
+ },
173
+ "ai": {
174
+ "$ref": "#/definitions/AIProviderConfig",
175
+ "description": "AI provider configuration (optional)"
176
+ },
177
+ "ai_model": {
178
+ "type": "string",
179
+ "description": "AI model to use for this check - overrides global setting"
180
+ },
181
+ "ai_provider": {
182
+ "type": "string",
183
+ "description": "AI provider to use for this check - overrides global setting"
184
+ },
185
+ "ai_mcp_servers": {
186
+ "$ref": "#/definitions/Record%3Cstring%2CMcpServerConfig%3E",
187
+ "description": "MCP servers for this AI check - overrides global setting"
188
+ },
189
+ "claude_code": {
190
+ "$ref": "#/definitions/ClaudeCodeConfig",
191
+ "description": "Claude Code configuration (for claude-code type checks)"
192
+ },
193
+ "env": {
194
+ "$ref": "#/definitions/EnvConfig",
195
+ "description": "Environment variables for this check"
196
+ },
197
+ "depends_on": {
198
+ "type": "array",
199
+ "items": {
200
+ "type": "string"
201
+ },
202
+ "description": "Check IDs that this check depends on (optional)"
203
+ },
204
+ "group": {
205
+ "type": "string",
206
+ "description": "Group name for comment separation (e.g., \"code-review\", \"pr-overview\") - optional"
207
+ },
208
+ "schema": {
209
+ "anyOf": [
210
+ {
211
+ "type": "string"
212
+ },
213
+ {
214
+ "$ref": "#/definitions/Record%3Cstring%2Cunknown%3E"
215
+ }
216
+ ],
217
+ "description": "Schema type for template rendering (e.g., \"code-review\", \"markdown\") or inline JSON schema object - optional"
218
+ },
219
+ "template": {
220
+ "$ref": "#/definitions/CustomTemplateConfig",
221
+ "description": "Custom template configuration - optional"
222
+ },
223
+ "if": {
224
+ "type": "string",
225
+ "description": "Condition to determine if check should run - runs if expression evaluates to true"
226
+ },
227
+ "reuse_ai_session": {
228
+ "type": "boolean",
229
+ "description": "Whether to reuse AI session from dependency checks (only works with depends_on)"
230
+ },
231
+ "fail_if": {
232
+ "type": "string",
233
+ "description": "Simple fail condition - fails check if expression evaluates to true"
234
+ },
235
+ "failure_conditions": {
236
+ "$ref": "#/definitions/FailureConditions",
237
+ "description": "Check-specific failure conditions - optional (deprecated, use fail_if)"
238
+ },
239
+ "tags": {
240
+ "type": "array",
241
+ "items": {
242
+ "type": "string"
243
+ },
244
+ "description": "Tags for categorizing and filtering checks (e.g., [\"local\", \"fast\", \"security\"])"
245
+ },
246
+ "forEach": {
247
+ "type": "boolean",
248
+ "description": "Process output as array and run dependent checks for each item"
249
+ },
250
+ "on_fail": {
251
+ "$ref": "#/definitions/OnFailConfig",
252
+ "description": "Failure routing configuration for this check (retry/goto/run)"
253
+ },
254
+ "on_success": {
255
+ "$ref": "#/definitions/OnSuccessConfig",
256
+ "description": "Success routing configuration for this check (post-actions and optional goto)"
257
+ }
258
+ },
259
+ "additionalProperties": false,
260
+ "description": "Configuration for a single check",
261
+ "patternProperties": {
262
+ "^x-": {}
263
+ }
264
+ },
265
+ "ConfigCheckType": {
266
+ "type": "string",
267
+ "enum": [
268
+ "ai",
269
+ "command",
270
+ "http",
271
+ "http_input",
272
+ "http_client",
273
+ "noop",
274
+ "log",
275
+ "claude-code"
276
+ ],
277
+ "description": "Valid check types in configuration"
278
+ },
279
+ "Record<string,string>": {
280
+ "type": "object",
281
+ "additionalProperties": {
282
+ "type": "string"
283
+ }
284
+ },
285
+ "EventTrigger": {
286
+ "type": "string",
287
+ "enum": [
288
+ "pr_opened",
289
+ "pr_updated",
290
+ "pr_closed",
291
+ "issue_opened",
292
+ "issue_comment",
293
+ "manual",
294
+ "schedule",
295
+ "webhook_received"
296
+ ],
297
+ "description": "Valid event triggers for checks"
298
+ },
299
+ "AIProviderConfig": {
300
+ "type": "object",
301
+ "properties": {
302
+ "provider": {
303
+ "type": "string",
304
+ "enum": [
305
+ "google",
306
+ "anthropic",
307
+ "openai",
308
+ "bedrock",
309
+ "mock"
310
+ ],
311
+ "description": "AI provider to use"
312
+ },
313
+ "model": {
314
+ "type": "string",
315
+ "description": "Model name to use"
316
+ },
317
+ "apiKey": {
318
+ "type": "string",
319
+ "description": "API key (usually from environment variables)"
320
+ },
321
+ "timeout": {
322
+ "type": "number",
323
+ "description": "Request timeout in milliseconds"
324
+ },
325
+ "debug": {
326
+ "type": "boolean",
327
+ "description": "Enable debug mode"
328
+ },
329
+ "mcpServers": {
330
+ "$ref": "#/definitions/Record%3Cstring%2CMcpServerConfig%3E",
331
+ "description": "MCP servers configuration"
332
+ }
333
+ },
334
+ "additionalProperties": false,
335
+ "description": "AI provider configuration",
336
+ "patternProperties": {
337
+ "^x-": {}
338
+ }
339
+ },
340
+ "Record<string,McpServerConfig>": {
341
+ "type": "object",
342
+ "additionalProperties": {
343
+ "$ref": "#/definitions/McpServerConfig"
344
+ }
345
+ },
346
+ "McpServerConfig": {
347
+ "type": "object",
348
+ "properties": {
349
+ "command": {
350
+ "type": "string",
351
+ "description": "Command to execute for the MCP server"
352
+ },
353
+ "args": {
354
+ "type": "array",
355
+ "items": {
356
+ "type": "string"
357
+ },
358
+ "description": "Arguments to pass to the command"
359
+ },
360
+ "env": {
361
+ "$ref": "#/definitions/Record%3Cstring%2Cstring%3E",
362
+ "description": "Environment variables for the MCP server"
363
+ }
364
+ },
365
+ "required": [
366
+ "command"
367
+ ],
368
+ "additionalProperties": false,
369
+ "description": "MCP Server configuration",
370
+ "patternProperties": {
371
+ "^x-": {}
372
+ }
373
+ },
374
+ "ClaudeCodeConfig": {
375
+ "type": "object",
376
+ "properties": {
377
+ "allowedTools": {
378
+ "type": "array",
379
+ "items": {
380
+ "type": "string"
381
+ },
382
+ "description": "List of allowed tools for Claude Code to use"
383
+ },
384
+ "maxTurns": {
385
+ "type": "number",
386
+ "description": "Maximum number of turns in conversation"
387
+ },
388
+ "systemPrompt": {
389
+ "type": "string",
390
+ "description": "System prompt for Claude Code"
391
+ },
392
+ "mcpServers": {
393
+ "$ref": "#/definitions/Record%3Cstring%2CMcpServerConfig%3E",
394
+ "description": "MCP servers configuration"
395
+ },
396
+ "subagent": {
397
+ "type": "string",
398
+ "description": "Path to subagent script"
399
+ },
400
+ "hooks": {
401
+ "type": "object",
402
+ "properties": {
403
+ "onStart": {
404
+ "type": "string",
405
+ "description": "Called when check starts"
406
+ },
407
+ "onEnd": {
408
+ "type": "string",
409
+ "description": "Called when check ends"
410
+ },
411
+ "onError": {
412
+ "type": "string",
413
+ "description": "Called when check encounters an error"
414
+ }
415
+ },
416
+ "additionalProperties": false,
417
+ "description": "Event hooks for lifecycle management",
418
+ "patternProperties": {
419
+ "^x-": {}
420
+ }
421
+ }
422
+ },
423
+ "additionalProperties": false,
424
+ "description": "Claude Code configuration",
425
+ "patternProperties": {
426
+ "^x-": {}
427
+ }
428
+ },
429
+ "EnvConfig": {
430
+ "type": "object",
431
+ "additionalProperties": {
432
+ "type": [
433
+ "string",
434
+ "number",
435
+ "boolean"
436
+ ]
437
+ },
438
+ "description": "Environment variable reference configuration"
439
+ },
440
+ "Record<string,unknown>": {
441
+ "type": "object",
442
+ "additionalProperties": {}
443
+ },
444
+ "CustomTemplateConfig": {
445
+ "type": "object",
446
+ "properties": {
447
+ "file": {
448
+ "type": "string",
449
+ "description": "Path to custom template file (relative to config file or absolute)"
450
+ },
451
+ "content": {
452
+ "type": "string",
453
+ "description": "Raw template content as string"
454
+ }
455
+ },
456
+ "additionalProperties": false,
457
+ "description": "Custom template configuration",
458
+ "patternProperties": {
459
+ "^x-": {}
460
+ }
461
+ },
462
+ "FailureConditions": {
463
+ "type": "object",
464
+ "additionalProperties": {
465
+ "$ref": "#/definitions/FailureCondition"
466
+ },
467
+ "description": "Collection of failure conditions"
468
+ },
469
+ "FailureCondition": {
470
+ "anyOf": [
471
+ {
472
+ "$ref": "#/definitions/SimpleFailureCondition"
473
+ },
474
+ {
475
+ "$ref": "#/definitions/ComplexFailureCondition"
476
+ }
477
+ ],
478
+ "description": "Failure condition - can be a simple expression string or complex object"
479
+ },
480
+ "SimpleFailureCondition": {
481
+ "type": "string",
482
+ "description": "Simple failure condition - just an expression string"
483
+ },
484
+ "ComplexFailureCondition": {
485
+ "type": "object",
486
+ "properties": {
487
+ "condition": {
488
+ "type": "string",
489
+ "description": "Expression to evaluate using Function Constructor"
490
+ },
491
+ "message": {
492
+ "type": "string",
493
+ "description": "Human-readable message when condition is met"
494
+ },
495
+ "severity": {
496
+ "$ref": "#/definitions/FailureConditionSeverity",
497
+ "description": "Severity level of the failure"
498
+ },
499
+ "halt_execution": {
500
+ "type": "boolean",
501
+ "description": "Whether this condition should halt execution"
502
+ }
503
+ },
504
+ "required": [
505
+ "condition"
506
+ ],
507
+ "additionalProperties": false,
508
+ "description": "Complex failure condition with additional metadata",
509
+ "patternProperties": {
510
+ "^x-": {}
511
+ }
512
+ },
513
+ "FailureConditionSeverity": {
514
+ "type": "string",
515
+ "enum": [
516
+ "error",
517
+ "warning",
518
+ "info"
519
+ ],
520
+ "description": "Failure condition severity levels"
521
+ },
522
+ "OnFailConfig": {
523
+ "type": "object",
524
+ "properties": {
525
+ "retry": {
526
+ "$ref": "#/definitions/RetryPolicy",
527
+ "description": "Retry policy"
528
+ },
529
+ "run": {
530
+ "type": "array",
531
+ "items": {
532
+ "type": "string"
533
+ },
534
+ "description": "Remediation steps to run before reattempt"
535
+ },
536
+ "goto": {
537
+ "type": "string",
538
+ "description": "Jump back to an ancestor step (by id)"
539
+ },
540
+ "goto_js": {
541
+ "type": "string",
542
+ "description": "Dynamic goto: JS expression returning step id or null"
543
+ },
544
+ "run_js": {
545
+ "type": "string",
546
+ "description": "Dynamic remediation list: JS expression returning string[]"
547
+ }
548
+ },
549
+ "additionalProperties": false,
550
+ "description": "Failure routing configuration per check",
551
+ "patternProperties": {
552
+ "^x-": {}
553
+ }
554
+ },
555
+ "RetryPolicy": {
556
+ "type": "object",
557
+ "properties": {
558
+ "max": {
559
+ "type": "number",
560
+ "description": "Maximum retry attempts (excluding the first attempt)"
561
+ },
562
+ "backoff": {
563
+ "$ref": "#/definitions/BackoffPolicy",
564
+ "description": "Backoff policy"
565
+ }
566
+ },
567
+ "additionalProperties": false,
568
+ "description": "Retry policy for a step",
569
+ "patternProperties": {
570
+ "^x-": {}
571
+ }
572
+ },
573
+ "BackoffPolicy": {
574
+ "type": "object",
575
+ "properties": {
576
+ "mode": {
577
+ "type": "string",
578
+ "enum": [
579
+ "fixed",
580
+ "exponential"
581
+ ],
582
+ "description": "Backoff mode"
583
+ },
584
+ "delay_ms": {
585
+ "type": "number",
586
+ "description": "Initial delay in milliseconds"
587
+ }
588
+ },
589
+ "additionalProperties": false,
590
+ "description": "Backoff policy for retries",
591
+ "patternProperties": {
592
+ "^x-": {}
593
+ }
594
+ },
595
+ "OnSuccessConfig": {
596
+ "type": "object",
597
+ "properties": {
598
+ "run": {
599
+ "type": "array",
600
+ "items": {
601
+ "type": "string"
602
+ },
603
+ "description": "Post-success steps to run"
604
+ },
605
+ "goto": {
606
+ "type": "string",
607
+ "description": "Optional jump back to ancestor step (by id)"
608
+ },
609
+ "goto_js": {
610
+ "type": "string",
611
+ "description": "Dynamic goto: JS expression returning step id or null"
612
+ },
613
+ "run_js": {
614
+ "type": "string",
615
+ "description": "Dynamic post-success steps: JS expression returning string[]"
616
+ }
617
+ },
618
+ "additionalProperties": false,
619
+ "description": "Success routing configuration per check",
620
+ "patternProperties": {
621
+ "^x-": {}
622
+ }
623
+ },
624
+ "OutputConfig": {
625
+ "type": "object",
626
+ "properties": {
627
+ "pr_comment": {
628
+ "$ref": "#/definitions/PrCommentOutput",
629
+ "description": "PR comment configuration"
630
+ },
631
+ "file_comment": {
632
+ "$ref": "#/definitions/FileCommentOutput",
633
+ "description": "File comment configuration (optional)"
634
+ },
635
+ "github_checks": {
636
+ "$ref": "#/definitions/GitHubCheckOutput",
637
+ "description": "GitHub check runs configuration (optional)"
638
+ },
639
+ "suppressionEnabled": {
640
+ "type": "boolean",
641
+ "description": "Whether to enable issue suppression via visor-disable comments (default: true)"
642
+ }
643
+ },
644
+ "required": [
645
+ "pr_comment"
646
+ ],
647
+ "additionalProperties": false,
648
+ "description": "Output configuration",
649
+ "patternProperties": {
650
+ "^x-": {}
651
+ }
652
+ },
653
+ "PrCommentOutput": {
654
+ "type": "object",
655
+ "properties": {
656
+ "format": {
657
+ "$ref": "#/definitions/ConfigOutputFormat",
658
+ "description": "Format of the output"
659
+ },
660
+ "group_by": {
661
+ "$ref": "#/definitions/GroupByOption",
662
+ "description": "How to group the results"
663
+ },
664
+ "collapse": {
665
+ "type": "boolean",
666
+ "description": "Whether to collapse sections by default"
667
+ },
668
+ "debug": {
669
+ "$ref": "#/definitions/DebugConfig",
670
+ "description": "Debug mode configuration (optional)"
671
+ }
672
+ },
673
+ "required": [
674
+ "format",
675
+ "group_by",
676
+ "collapse"
677
+ ],
678
+ "additionalProperties": false,
679
+ "description": "PR comment output configuration",
680
+ "patternProperties": {
681
+ "^x-": {}
682
+ }
683
+ },
684
+ "ConfigOutputFormat": {
685
+ "type": "string",
686
+ "enum": [
687
+ "table",
688
+ "json",
689
+ "markdown",
690
+ "sarif"
691
+ ],
692
+ "description": "Valid output formats"
693
+ },
694
+ "GroupByOption": {
695
+ "type": "string",
696
+ "enum": [
697
+ "check",
698
+ "file",
699
+ "severity"
700
+ ],
701
+ "description": "Valid grouping options"
702
+ },
703
+ "DebugConfig": {
704
+ "type": "object",
705
+ "properties": {
706
+ "enabled": {
707
+ "type": "boolean",
708
+ "description": "Enable debug mode"
709
+ },
710
+ "includePrompts": {
711
+ "type": "boolean",
712
+ "description": "Include AI prompts in debug output"
713
+ },
714
+ "includeRawResponses": {
715
+ "type": "boolean",
716
+ "description": "Include raw AI responses in debug output"
717
+ },
718
+ "includeTiming": {
719
+ "type": "boolean",
720
+ "description": "Include timing information"
721
+ },
722
+ "includeProviderInfo": {
723
+ "type": "boolean",
724
+ "description": "Include provider information"
725
+ }
726
+ },
727
+ "required": [
728
+ "enabled",
729
+ "includePrompts",
730
+ "includeRawResponses",
731
+ "includeTiming",
732
+ "includeProviderInfo"
733
+ ],
734
+ "additionalProperties": false,
735
+ "description": "Debug mode configuration",
736
+ "patternProperties": {
737
+ "^x-": {}
738
+ }
739
+ },
740
+ "FileCommentOutput": {
741
+ "type": "object",
742
+ "properties": {
743
+ "enabled": {
744
+ "type": "boolean",
745
+ "description": "Whether file comments are enabled"
746
+ },
747
+ "inline": {
748
+ "type": "boolean",
749
+ "description": "Whether to show inline comments"
750
+ }
751
+ },
752
+ "required": [
753
+ "enabled",
754
+ "inline"
755
+ ],
756
+ "additionalProperties": false,
757
+ "description": "File comment output configuration",
758
+ "patternProperties": {
759
+ "^x-": {}
760
+ }
761
+ },
762
+ "GitHubCheckOutput": {
763
+ "type": "object",
764
+ "properties": {
765
+ "enabled": {
766
+ "type": "boolean",
767
+ "description": "Whether GitHub check runs are enabled"
768
+ },
769
+ "per_check": {
770
+ "type": "boolean",
771
+ "description": "Whether to create individual check runs per configured check"
772
+ },
773
+ "name_prefix": {
774
+ "type": "string",
775
+ "description": "Custom name prefix for check runs"
776
+ }
777
+ },
778
+ "required": [
779
+ "enabled",
780
+ "per_check"
781
+ ],
782
+ "additionalProperties": false,
783
+ "description": "GitHub Check Runs output configuration",
784
+ "patternProperties": {
785
+ "^x-": {}
786
+ }
787
+ },
788
+ "HttpServerConfig": {
789
+ "type": "object",
790
+ "properties": {
791
+ "enabled": {
792
+ "type": "boolean",
793
+ "description": "Whether HTTP server is enabled"
794
+ },
795
+ "port": {
796
+ "type": "number",
797
+ "description": "Port to listen on"
798
+ },
799
+ "host": {
800
+ "type": "string",
801
+ "description": "Host/IP to bind to (defaults to 0.0.0.0)"
802
+ },
803
+ "tls": {
804
+ "$ref": "#/definitions/TlsConfig",
805
+ "description": "TLS/SSL configuration for HTTPS"
806
+ },
807
+ "auth": {
808
+ "$ref": "#/definitions/HttpAuthConfig",
809
+ "description": "Authentication configuration"
810
+ },
811
+ "endpoints": {
812
+ "type": "array",
813
+ "items": {
814
+ "$ref": "#/definitions/HttpEndpointConfig"
815
+ },
816
+ "description": "HTTP endpoints configuration"
817
+ }
818
+ },
819
+ "required": [
820
+ "enabled",
821
+ "port"
822
+ ],
823
+ "additionalProperties": false,
824
+ "description": "HTTP server configuration for receiving webhooks",
825
+ "patternProperties": {
826
+ "^x-": {}
827
+ }
828
+ },
829
+ "TlsConfig": {
830
+ "type": "object",
831
+ "properties": {
832
+ "enabled": {
833
+ "type": "boolean",
834
+ "description": "Enable TLS/HTTPS"
835
+ },
836
+ "cert": {
837
+ "type": "string",
838
+ "description": "Path to TLS certificate file or certificate content"
839
+ },
840
+ "key": {
841
+ "type": "string",
842
+ "description": "Path to TLS key file or key content"
843
+ },
844
+ "ca": {
845
+ "type": "string",
846
+ "description": "Path to CA certificate file or CA content (optional)"
847
+ },
848
+ "rejectUnauthorized": {
849
+ "type": "boolean",
850
+ "description": "Reject unauthorized connections (default: true)"
851
+ }
852
+ },
853
+ "required": [
854
+ "enabled"
855
+ ],
856
+ "additionalProperties": false,
857
+ "description": "TLS/SSL configuration for HTTPS server",
858
+ "patternProperties": {
859
+ "^x-": {}
860
+ }
861
+ },
862
+ "HttpAuthConfig": {
863
+ "type": "object",
864
+ "properties": {
865
+ "type": {
866
+ "type": "string",
867
+ "enum": [
868
+ "bearer_token",
869
+ "hmac",
870
+ "basic",
871
+ "none"
872
+ ],
873
+ "description": "Authentication type"
874
+ },
875
+ "secret": {
876
+ "type": "string",
877
+ "description": "Secret or token for authentication"
878
+ },
879
+ "username": {
880
+ "type": "string",
881
+ "description": "Username for basic auth"
882
+ },
883
+ "password": {
884
+ "type": "string",
885
+ "description": "Password for basic auth"
886
+ }
887
+ },
888
+ "required": [
889
+ "type"
890
+ ],
891
+ "additionalProperties": false,
892
+ "description": "HTTP server authentication configuration",
893
+ "patternProperties": {
894
+ "^x-": {}
895
+ }
896
+ },
897
+ "HttpEndpointConfig": {
898
+ "type": "object",
899
+ "properties": {
900
+ "path": {
901
+ "type": "string",
902
+ "description": "Path for the webhook endpoint"
903
+ },
904
+ "transform": {
905
+ "type": "string",
906
+ "description": "Optional transform template (Liquid) for the received data"
907
+ },
908
+ "name": {
909
+ "type": "string",
910
+ "description": "Optional name/ID for this endpoint"
911
+ }
912
+ },
913
+ "required": [
914
+ "path"
915
+ ],
916
+ "additionalProperties": false,
917
+ "description": "HTTP server endpoint configuration",
918
+ "patternProperties": {
919
+ "^x-": {}
920
+ }
921
+ },
922
+ "TagFilter": {
923
+ "type": "object",
924
+ "properties": {
925
+ "include": {
926
+ "type": "array",
927
+ "items": {
928
+ "type": "string"
929
+ },
930
+ "description": "Tags that checks must have to be included (ANY match)"
931
+ },
932
+ "exclude": {
933
+ "type": "array",
934
+ "items": {
935
+ "type": "string"
936
+ },
937
+ "description": "Tags that will exclude checks if present (ANY match)"
938
+ }
939
+ },
940
+ "additionalProperties": false,
941
+ "description": "Tag filter configuration for selective check execution",
942
+ "patternProperties": {
943
+ "^x-": {}
944
+ }
945
+ },
946
+ "RoutingDefaults": {
947
+ "type": "object",
948
+ "properties": {
949
+ "max_loops": {
950
+ "type": "number",
951
+ "description": "Per-scope cap on routing transitions (success + failure)"
952
+ },
953
+ "defaults": {
954
+ "type": "object",
955
+ "properties": {
956
+ "on_fail": {
957
+ "$ref": "#/definitions/OnFailConfig"
958
+ }
959
+ },
960
+ "additionalProperties": false,
961
+ "description": "Default policies applied to checks (step-level overrides take precedence)",
962
+ "patternProperties": {
963
+ "^x-": {}
964
+ }
965
+ }
966
+ },
967
+ "additionalProperties": false,
968
+ "description": "Global routing defaults",
969
+ "patternProperties": {
970
+ "^x-": {}
971
+ }
972
+ }
973
+ }
974
+ }