Setup: choose the service or simulation
Check only the presence of OPENROUTER_API_KEY and TYPESAFE_API_KEY; never
print credentials. Respect the user's already chosen mode. For a new setup,
prefer the user's existing OpenRouter account; otherwise offer official TypeSafe.
If OpenRouter is missing, explain that direct TypeSafe is also real Jev. Do not
silently change destination, send data, create an account or switch the host model.
If no route has been chosen, explain the available routes and ask:
A — Real Jev: use/get an OpenRouter key at https://openrouter.ai/settings/keys if you use OpenRouter; otherwise use/get a TypeSafe key at https://console.typesafe.ai. Configure it locally, not in chat. B — Simulate: use the current agent, or an explicitly selected available model such as DeepSeek, with the same context, questions and criteria.
Wait for an explicit choice. Do not ask again for every record in the same approved task. API errors do not authorize switching providers or simulation. Missing both keys is not a dead end: offer B. It requires no Jev key but the chosen agent/model's ordinary access, usage costs and privacy terms still apply. Do not assume DeepSeek is installed, free or locally hosted.
In B, return mode: agent_simulation for the current host or
mode: model_simulation for another explicitly approved model, plus its actual
model identity when available and jev_called: false. Each question has value,
needs_review, a brief evidence-based reason, probability: null and
confidence: null. Choice values must be supplied labels, Noul values booleans,
and Score values integer rubric indices. Use null/review for missing evidence.
Never present this as Jev, calibrated probability or equivalent speed/accuracy.
Skip Jev CLI/API steps in B; use the approved model's existing interface and do
not install a substitute or send data elsewhere without consent.
In A, select the CLI destination explicitly: --provider openrouter or
--provider typesafe. The latter uses TYPESAFE_API_KEY and maps the bundled
OpenRouter model ID to jev-1.13.0. --dry-run only validates; it neither
classifies nor makes a network call. jev-decide setup reports presence only,
not key validity, credits or permission. For guided setup and a copyable
DeepSeek prompt, use jev-setup or the setup guide.
Jev API prerequisite and first example
In Jev API mode, use the shared jev-decide CLI (Python 3.10+), installed from the reviewed
jev-skill package. If unavailable, explain the missing dependency rather than
silently installing software. The agent process must inherit
OPENROUTER_API_KEY or TYPESAFE_API_KEY for the chosen provider; never place the key in a prompt or request file.
No sibling skill or third-party integration is required for this judgment.
Actual UI, file, mailbox or simulation actions require the host's own tools.
Resolve <skill-dir> to this installed folder. Copy and edit
assets/example.json for the user's task; it is synthetic
input, not a captured successful result. Validate it without a key or API call:
The commands below default to OpenRouter. For the official route, append
--provider typesafe to both validation and live calls.
jev-decide decide <skill-dir>/assets/example.json --dry-run
# After reviewing the input and authorization to send it to the chosen provider:
jev-decide decide /path/to/edited-request.json
Normal calls send the supplied evidence to the selected Jev provider and incur
usage. Read relevant answers, not only the exit code: 0 means selected/scored,
2 means review, 1 means error. A confidently false Noul is still false;
selection is not permission. Unknown, missing or conflicting evidence needs a
fallback. Test thresholds on the user's task rather than assuming 0.9 is safe.
Workflow
- Use the project-required graph/index tools first; use exact lookup for known symbols. Use semantic selection when a natural-language question leaves several plausible observed candidates.
- Build candidates from real paths and observed summaries. State clearly when only path names, rather than file contents, were available.
- For large trees, select a local branch and then inspect its contents; bound traversal and retain alternate branches rather than treating the first choice as proof.
- Open the selected source with the appropriate code tool and verify relevance. Update state or backtrack when the file is unrelated.
- Return inspected paths and concrete evidence separately from uninspected leads. Walker shares, relevance scores and probability of containing a bug are different quantities.
Context and parallelism
Jev does not inherit the agent's history. Give every request sufficient context: the problem, observed behavior/errors, relevant prior reads, graph relationships and real candidate paths with observed summaries or excerpts. Bare filenames alone may not distinguish candidates; mark what has not been read and omit unrelated files and secrets, not evidence necessary to rank the candidates.
Batch independent relevance questions over an observed candidate set instead of serial LLM calls. Use bounded concurrency for independent searches, with stable path/question IDs, rate limits and a cost/time budget. The host schedules calls; the CLI has no parallel scheduler. Questions cannot read other answers in the same request: inspect a chosen branch before asking about its unseen children. Jev's low latency helps wide ranking; code tools still retrieve and verify actual source.
Make it yours
Replace the example's evidence, candidate IDs and criteria together. Preserve a no-match route when the real task can fall outside the labels. Agree on how the host or person consumes each answer before enabling any automatic effect.
Precedent
Related project or author example. Our workflow is an adaptation, not that project's code, an automatic installer, or a reproduced benchmark. OpenRouter request contract.