Concepts
A query describes behavior you want to find. ev-grep reads each selected file and asks Jev whether it matches.
The same query accompanies each file; files do not share context.
File context
An assessment receives the path and complete text of one file. A retry loop may be visible in retry.ts, while
client.ts delegates to a transport defined elsewhere. The latter may need a person or review agent to investigate.
ev-grep does not fetch dependencies, build an index, or compare revisions. Searching files from a PR examines their current contents, not whether the diff introduced a problem.
Part of a file
A path such as src/users.py:20-56 narrows an assessment to those lines. Jev still receives the whole file as
context and judges what the selected lines do, including what same-file helpers they call do. Code elsewhere in the
file that the lines don't use does not make them match. A range of changed lines asks what that code does now; it
still does not show whether the change introduced it. Use with other tools shows how to get ranges
from git diff or ast-grep.
Decisions
match retains a file. no_match omits it from terminal output. uncertain retains it for further review.
All three appear in JSON output. A failed request is an error, not a decision.
Model results can be wrong. A search helps choose what to read; it does not prove that code follows a rule.
Requests
File discovery and glob filtering happen locally. Each selected text file then becomes one provider request, with up
to four requests in flight by default (--jobs changes the limit). Use --dry-run to inspect file selection without a key or API calls.
selected files up to 4 requests
┌──────────────┐ ┏━━━━━━━━━━━━━━━━━━━━━━┓
│ file A │──────▶┃ query + A → Jev ┃
│ file B │──────▶┃ query + B → Jev ┃
│ file C │──────▶┃ query + C → Jev ┃
│ file D │──────▶┃ query + D → Jev ┃
│ file E, … │ ┗━━━━━━━━━━┳━━━━━━━━━━━┛
└──────────────┘ │
waiting ▼
results as they finishWhen a request finishes, the next file takes its place. JSONL includes every result; terminal output lists matches and uncertain files.
Requests use your provider account and may incur charges. See Providers for configuration, Request limits for bounds, and Benchmarks for measured timings.