Jev reference
Request limits, troubleshooting and data handling for Jev analysis.
For the short setup guide, see Analyze reports with Jev. This reference covers controls, troubleshooting and the report data sent for analysis.
What it does
PhaseDrift sends one saved report to TypeSafe and asks four questions in one request:
| Question | What you get |
|---|---|
| Did the work finish? | Completed, partial, blocked or unknown |
| How much friction occurred? | None, minor, substantial, blocked or unknown |
| What probably caused it? | Access, tooling, complexity, requirements, documentation or unknown |
| What kind of change might help? | Configure, add or remove a tool; improve instructions, refactor, add tests or no action |
These classifications feed the feedback trend in Agent work → Reports, and classified suggestions under Improvements. Open a report's Analysis tab to inspect its saved Jev analysis alongside the agent's original account.
Jev supplies categories and probabilities. The agent writes the report and concrete suggestions; PhaseDrift can turn those suggestions into proposals without Jev. To establish whether a fix helped, try one change and collect comparable evidence.
1. Add your key to the connected project
Create a key in the TypeSafe dashboard. In the repository you connected to PhaseDrift, add this to .env.local:
TYPESAFE_API_KEY=your-key-hereUse the project root, beside its AGENTS.md. For a tracker connected to your app, the key belongs in your app's repo, not the website or PhaseDrift installation directory. Ensure .env.local is ignored by Git. Keep the key server-side; don't prefix it with NEXT_PUBLIC_ or put it in a report or agent prompt.
The managed tracker uses Bun and starts from this project directory. Restart it after adding or changing the key:
phasedrift status
phasedrift restart
phasedrift learning statusCheck analysis.credentialPresent is true. This checks the running tracker, without displaying the key or making a provider call. It does not establish that the provider will accept the key. If status reports a different project or ownership conflict, resolve that connection first; don't restart an unrelated preview.
2. Choose a budget and enable analysis
Setup with your agent includes activation when you supply a key. With the CLI, connect and enable it in one command (default: ten requests per UTC day; existing limits preserved):
phasedrift init --analysisThe init result includes Jev readiness or the missing key step. For older CLI releases without this flag, use the policy command below. To inspect the current allowance:
phasedrift learning analysis policyRun this only when you want to authorize provider requests for this project. This example allows one job per worker batch, at most ten dispatches per UTC day, and one concurrent job:
phasedrift learning analysis policy --stdin <<'JSON'
{"enabled":true,"perRun":1,"perDay":10,"concurrency":1}
JSONThe worker checks roughly every 15 seconds while the tracker runs. It processes saved reports, including an existing backlog, within the policy limits. New reports join the queue automatically. Agents don't need to call Jev themselves.
These limits cap requests, not dollars. TypeSafe billing applies. Changing the key or limits doesn't reset recorded daily usage. Matching saved results are reused.
3. Check the result
phasedrift learning status
phasedrift learning analysis jobs| Status | Meaning |
|---|---|
analysis.configured: true | Key loaded and policy enabled |
analysis.cached increases | Reports have saved classifications |
| Queued jobs remain | Waiting for capacity, credentials or the daily allowance |
| Failed or uncertain jobs | Inspect the recorded error before acting |
Configuration is ready when both switches are on. A succeeded job and saved classification prove an actual request completed. An uncertain dispatch may have been billed; don't blindly resubmit it.
To stop future dispatches, keep your chosen limits and set enabled to false:
phasedrift learning analysis policy --stdin <<'JSON'
{"enabled":false,"perRun":1,"perDay":10,"concurrency":1}
JSONAlready-dispatched requests may finish. Reports and saved analyses stay available.
Ask your setup agent
Check optional Jev analysis for this connected project using phasedrift status and phasedrift learning status. Tell me whether the running tracker has a key loaded, whether analysis is enabled, its limits, and whether any reports have saved classifications. Do not print credentials. If I have supplied a key, enable report analysis with a new allowance of ten requests per UTC day, one per batch and concurrency one, preserving existing explicit limits. If the key is missing, show its local file location. Follow the Jev guide and verify a saved classification before claiming provider success.
What leaves your machine
The current integration uses jev-latest at api.typesafe.ai/v1/systemone. It sends the report's prose, limited to 8,000 characters, an evidence-scope label and the four classification questions. It does not send the whole repository, scan artifacts or native session transcripts for this request. Anything included in the report text is included in that payload, so keep reports free of secrets.
Results, probabilities, resolved model and token usage are saved locally. Unknown answers remain unknown. A confident classification of a report is not independent verification of its claims.