5252 },
5353 "description" : " Import workflow definitions from external files or URLs"
5454 },
55+ "inputs" : {
56+ "type" : " array" ,
57+ "items" : {
58+ "$ref" : " #/definitions/WorkflowInput"
59+ },
60+ "description" : " Workflow inputs (for standalone reusable workflows)"
61+ },
62+ "outputs" : {
63+ "type" : " array" ,
64+ "items" : {
65+ "$ref" : " #/definitions/WorkflowOutput"
66+ },
67+ "description" : " Workflow outputs (for standalone reusable workflows)"
68+ },
5569 "steps" : {
5670 "$ref" : " #/definitions/Record%3Cstring%2CCheckConfig%3E" ,
5771 "description" : " Step configurations (recommended)"
6276 },
6377 "output" : {
6478 "$ref" : " #/definitions/OutputConfig" ,
65- "description" : " Output configuration"
79+ "description" : " Output configuration (optional - defaults provided) "
6680 },
6781 "http_server" : {
6882 "$ref" : " #/definitions/HttpServerConfig" ,
135149 "additionalProperties" : false
136150 },
137151 "description" : " Optional integrations: event-driven frontends (e.g., ndjson-sink, github)"
152+ },
153+ "workspace" : {
154+ "$ref" : " #/definitions/WorkspaceConfig" ,
155+ "description" : " Workspace isolation configuration for sandboxed execution"
156+ },
157+ "slack" : {
158+ "$ref" : " #/definitions/SlackConfig" ,
159+ "description" : " Slack configuration"
138160 }
139161 },
140162 "required" : [
141- " output" ,
142163 " version"
143164 ],
144165 "patternProperties" : {
248269 "type" : " string"
249270 }
250271 },
272+ "WorkflowInput" : {
273+ "type" : " object" ,
274+ "properties" : {
275+ "name" : {
276+ "type" : " string" ,
277+ "description" : " Input parameter name"
278+ },
279+ "schema" : {
280+ "$ref" : " #/definitions/Record%3Cstring%2Cunknown%3E" ,
281+ "description" : " JSON Schema for the input"
282+ },
283+ "required" : {
284+ "type" : " boolean" ,
285+ "description" : " Whether this input is required"
286+ },
287+ "default" : {
288+ "description" : " Default value if not provided"
289+ },
290+ "description" : {
291+ "type" : " string" ,
292+ "description" : " Human-readable description"
293+ }
294+ },
295+ "required" : [
296+ " name"
297+ ],
298+ "additionalProperties" : false ,
299+ "description" : " Workflow input definition for standalone reusable workflows" ,
300+ "patternProperties" : {
301+ "^x-" : {}
302+ }
303+ },
304+ "WorkflowOutput" : {
305+ "type" : " object" ,
306+ "properties" : {
307+ "name" : {
308+ "type" : " string" ,
309+ "description" : " Output name"
310+ },
311+ "description" : {
312+ "type" : " string" ,
313+ "description" : " Human-readable description"
314+ },
315+ "value" : {
316+ "type" : " string" ,
317+ "description" : " Value using Liquid template syntax (references step outputs)"
318+ },
319+ "value_js" : {
320+ "type" : " string" ,
321+ "description" : " Value using JavaScript expression (alternative to value)"
322+ }
323+ },
324+ "required" : [
325+ " name"
326+ ],
327+ "additionalProperties" : false ,
328+ "description" : " Workflow output definition for standalone reusable workflows" ,
329+ "patternProperties" : {
330+ "^x-" : {}
331+ }
332+ },
251333 "Record<string,CheckConfig>" : {
252334 "type" : " object" ,
253335 "additionalProperties" : {
387469 "description" : " Timeout in seconds for command execution (default: 60)"
388470 },
389471 "depends_on" : {
390- "type" : " array" ,
391- "items" : {
392- "type" : " string"
393- },
394- "description" : " Check IDs that this check depends on (optional)"
472+ "anyOf" : [
473+ {
474+ "type" : " string"
475+ },
476+ {
477+ "type" : " array" ,
478+ "items" : {
479+ "type" : " string"
480+ }
481+ }
482+ ],
483+ "description" : " Check IDs that this check depends on (optional). Accepts single string or array."
395484 },
396485 "group" : {
397486 "type" : " string" ,
665754 "description" : " Arguments/inputs for the workflow"
666755 },
667756 "overrides" : {
668- "$ref" : " #/definitions/Record%3Cstring%2CPartial%3Cinterface-src_types_config.ts-11138-21461 -src_types_config.ts-0-36706 %3E%3E" ,
757+ "$ref" : " #/definitions/Record%3Cstring%2CPartial%3Cinterface-src_types_config.ts-11359-23556 -src_types_config.ts-0-40845 %3E%3E" ,
669758 "description" : " Override specific step configurations in the workflow"
670759 },
671760 "output_mapping" : {
672761 "$ref" : " #/definitions/Record%3Cstring%2Cstring%3E" ,
673762 "description" : " Map workflow outputs to check outputs"
763+ },
764+ "workflow_inputs" : {
765+ "$ref" : " #/definitions/Record%3Cstring%2Cunknown%3E" ,
766+ "description" : " Alias for args - workflow inputs (backward compatibility)"
767+ },
768+ "config" : {
769+ "type" : " string" ,
770+ "description" : " Config file path - alternative to workflow ID (loads a Visor config file as workflow)"
771+ },
772+ "workflow_overrides" : {
773+ "$ref" : " #/definitions/Record%3Cstring%2CPartial%3Cinterface-src_types_config.ts-11359-23556-src_types_config.ts-0-40845%3E%3E" ,
774+ "description" : " Alias for overrides - workflow step overrides (backward compatibility)"
775+ },
776+ "ref" : {
777+ "type" : " string" ,
778+ "description" : " Git reference to checkout (branch, tag, commit SHA) - supports templates"
779+ },
780+ "repository" : {
781+ "type" : " string" ,
782+ "description" : " Repository URL or owner/repo format (defaults to current repository)"
783+ },
784+ "token" : {
785+ "type" : " string" ,
786+ "description" : " GitHub token for private repositories (defaults to GITHUB_TOKEN env)"
787+ },
788+ "fetch_depth" : {
789+ "type" : " number" ,
790+ "description" : " Number of commits to fetch (0 for full history, default: 1)"
791+ },
792+ "fetch_tags" : {
793+ "type" : " boolean" ,
794+ "description" : " Whether to fetch tags (default: false)"
795+ },
796+ "submodules" : {
797+ "anyOf" : [
798+ {
799+ "type" : " boolean"
800+ },
801+ {
802+ "type" : " string" ,
803+ "const" : " recursive"
804+ }
805+ ],
806+ "description" : " Checkout submodules: false, true, or 'recursive'"
807+ },
808+ "working_directory" : {
809+ "type" : " string" ,
810+ "description" : " Working directory for the checkout (defaults to temp directory)"
811+ },
812+ "use_worktree" : {
813+ "type" : " boolean" ,
814+ "description" : " Use git worktree for efficient parallel checkouts (default: true)"
815+ },
816+ "clean" : {
817+ "type" : " boolean" ,
818+ "description" : " Clean the working directory before checkout (default: true)"
819+ },
820+ "sparse_checkout" : {
821+ "type" : " array" ,
822+ "items" : {
823+ "type" : " string"
824+ },
825+ "description" : " Sparse checkout paths - only checkout specific directories/files"
826+ },
827+ "lfs" : {
828+ "type" : " boolean" ,
829+ "description" : " Enable Git LFS (Large File Storage)"
830+ },
831+ "clone_timeout_ms" : {
832+ "type" : " number" ,
833+ "description" : " Timeout in ms for cloning the bare repository (default: 300000 = 5 min)"
834+ },
835+ "cleanup_on_failure" : {
836+ "type" : " boolean" ,
837+ "description" : " Clean up worktree on failure (default: true)"
838+ },
839+ "persist_worktree" : {
840+ "type" : " boolean" ,
841+ "description" : " Keep worktree after workflow completion (default: false)"
674842 }
675843 },
676844 "additionalProperties" : false ,
806974 "bashConfig" : {
807975 "$ref" : " #/definitions/BashConfig" ,
808976 "description" : " Advanced bash command execution configuration"
977+ },
978+ "completion_prompt" : {
979+ "type" : " string" ,
980+ "description" : " Completion prompt for post-completion validation/review (runs after attempt_completion)"
809981 }
810982 },
811983 "additionalProperties" : false ,
12631435 "description" : " Custom output name (defaults to workflow name)"
12641436 },
12651437 "overrides" : {
1266- "$ref" : " #/definitions/Record%3Cstring%2CPartial%3Cinterface-src_types_config.ts-11138-21461 -src_types_config.ts-0-36706 %3E%3E" ,
1438+ "$ref" : " #/definitions/Record%3Cstring%2CPartial%3Cinterface-src_types_config.ts-11359-23556 -src_types_config.ts-0-40845 %3E%3E" ,
12671439 "description" : " Step overrides"
12681440 },
12691441 "output_mapping" : {
12801452 "^x-" : {}
12811453 }
12821454 },
1283- "Record<string,Partial<interface-src_types_config.ts-11138-21461 -src_types_config.ts-0-36706 >>" : {
1455+ "Record<string,Partial<interface-src_types_config.ts-11359-23556 -src_types_config.ts-0-40845 >>" : {
12841456 "type" : " object" ,
12851457 "additionalProperties" : {
1286- "$ref" : " #/definitions/Partial%3Cinterface-src_types_config.ts-11138-21461 -src_types_config.ts-0-36706 %3E"
1458+ "$ref" : " #/definitions/Partial%3Cinterface-src_types_config.ts-11359-23556 -src_types_config.ts-0-40845 %3E"
12871459 }
12881460 },
1289- "Partial<interface-src_types_config.ts-11138-21461 -src_types_config.ts-0-36706 >" : {
1461+ "Partial<interface-src_types_config.ts-11359-23556 -src_types_config.ts-0-40845 >" : {
12901462 "type" : " object" ,
12911463 "additionalProperties" : false
12921464 },
18952067 "patternProperties" : {
18962068 "^x-" : {}
18972069 }
2070+ },
2071+ "WorkspaceConfig" : {
2072+ "type" : " object" ,
2073+ "properties" : {
2074+ "enabled" : {
2075+ "type" : " boolean" ,
2076+ "description" : " Enable workspace isolation (default: true when config present)"
2077+ },
2078+ "base_path" : {
2079+ "type" : " string" ,
2080+ "description" : " Base path for workspaces (default: /tmp/visor-workspaces)"
2081+ },
2082+ "cleanup_on_exit" : {
2083+ "type" : " boolean" ,
2084+ "description" : " Clean up workspace on exit (default: true)"
2085+ }
2086+ },
2087+ "additionalProperties" : false ,
2088+ "description" : " Workspace isolation configuration" ,
2089+ "patternProperties" : {
2090+ "^x-" : {}
2091+ }
2092+ },
2093+ "SlackConfig" : {
2094+ "type" : " object" ,
2095+ "properties" : {
2096+ "version" : {
2097+ "type" : " string" ,
2098+ "description" : " Slack API version"
2099+ },
2100+ "mentions" : {
2101+ "type" : " string" ,
2102+ "description" : " Mention handling: 'all', 'direct', etc."
2103+ },
2104+ "threads" : {
2105+ "type" : " string" ,
2106+ "description" : " Thread handling: 'required', 'optional', etc."
2107+ },
2108+ "show_raw_output" : {
2109+ "type" : " boolean" ,
2110+ "description" : " Show raw output in Slack responses"
2111+ },
2112+ "telemetry" : {
2113+ "$ref" : " #/definitions/SlackTelemetryConfig" ,
2114+ "description" : " Append telemetry identifiers to Slack replies."
2115+ }
2116+ },
2117+ "additionalProperties" : false ,
2118+ "description" : " Slack configuration" ,
2119+ "patternProperties" : {
2120+ "^x-" : {}
2121+ }
2122+ },
2123+ "SlackTelemetryConfig" : {
2124+ "type" : " object" ,
2125+ "properties" : {
2126+ "enabled" : {
2127+ "type" : " boolean" ,
2128+ "description" : " Enable telemetry ID suffix in Slack messages"
2129+ }
2130+ },
2131+ "additionalProperties" : false ,
2132+ "patternProperties" : {
2133+ "^x-" : {}
2134+ }
18982135 }
18992136 }
19002137}
0 commit comments