{"$id":"https://hansi.codes/schema/v1.json","$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"$schema":{"description":"The JSON Schema for this file.","type":"string"},"reviews":{"description":"When and how Hansi reviews.","default":{},"type":"object","properties":{"enabled":{"default":true,"description":"Review pull requests in this repository.","type":"boolean"},"auto":{"default":true,"description":"Review automatically when a pull request is opened or updated. Mentions always work.","type":"boolean"},"drafts":{"default":false,"description":"Also review draft pull requests.","type":"boolean"},"baseBranches":{"default":[],"description":"Only review pull requests into these branches. Empty means all branches.","type":"array","items":{"type":"string"}},"pathFilters":{"default":[],"description":"Glob patterns for the files to review. Prefix a pattern with ! to exclude, e.g. \"!docs/**\".","type":"array","items":{"type":"string"}},"profile":{"default":"balanced","description":"How picky to be. chill only flags bugs it can confirm in the code; balanced also flags risky patterns, weak or missing tests, and broken documentation examples; strict also counts naming and style rules and flags maintainability problems.","type":"string","enum":["chill","balanced","strict"]},"minSeverity":{"default":"minor","description":"Findings below this severity are not posted.","type":"string","enum":["info","minor","major","critical"]},"maxComments":{"default":15,"description":"The most inline comments to post in one review.","type":"integer","minimum":0,"maximum":100},"approve":{"default":true,"description":"Approve pull requests that have no blocking findings and no open bug, security, concurrency, or error-handling findings.","type":"boolean"},"requestChanges":{"default":"major","description":"Findings at or above this severity block the pull request: Hansi requests changes. never only comments, and never approves a pull request with major or critical findings.","type":"string","enum":["info","minor","major","critical","never"]},"approveOutsideContributors":{"default":false,"description":"Approve pull requests from people without write access, e.g. from forks. Off by default: their changes could try to talk the model into approving.","type":"boolean"}},"additionalProperties":false},"instructions":{"default":"","description":"Extra review instructions for this repository, in plain language.","type":"string"},"pathInstructions":{"default":[],"description":"Review instructions for specific files.","type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Glob pattern, e.g. \"migrations/**\"."},"instructions":{"type":"string","description":"Instructions for files matching the pattern."}},"required":["path","instructions"],"additionalProperties":false}},"language":{"default":"en","description":"Language for review comments, e.g. \"en\" or \"de\".","type":"string"},"sandbox":{"description":"The sandbox each review runs commands in.","default":{},"type":"object","properties":{"setup":{"default":"","description":"Shell command that runs in the sandbox before the review starts, e.g. \"npm ci\".","type":"string"},"network":{"default":"public","description":"public allows HTTP and HTTPS to public hosts (for installing dependencies), never private networks or cloud metadata. none removes the network.","type":"string","enum":["public","none"]}},"additionalProperties":false}},"title":"Hansi configuration","description":"Configures Hansi for a repository.","additionalProperties":false}