@probelabs/visor 0.1.76 → 0.1.77

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