Skip to main content

jevbrief

Clean, traceable state briefings for TypeSafe's Jev, from any source.

Other tools show what Jev decided. jevbrief shows what Jev was told, what it wasn't told, and why.

PyPI Python License: MIT Docs

Documentation  ·  Quick start  ·  Adapters  ·  Benchmarks  ·  Contributing


Animation: facts from a source flow into the rules, noise is dropped with a reason code, the rest goes to Jev, and Jev picks one

Why jevbrief

Jev turns state into typed decisions. It does its best work on small, relevant state, and it is weak at raw numbers, dates, and long lists of irrelevant detail. Real sources are the opposite: a web page has hundreds of elements, an agent can call a hundred tools, and a failed build prints thousands of log lines.

jevbrief sits between your source and Jev. It keeps what matters, drops the rest with a reason for every drop, asks Jev one clear question, and records the whole decision so you can replay it.

Before and after: 1,395 raw log lines at 29,678 tokens become 5 log groups at 1,070 tokens, and Jev picks the config reload failure

Quick start

pip install jevbrief          # tools, ci, pr, otel, and json; add [web] or [nes], or [all] for everything

Set TYPESAFE_API_KEY (get one at console.typesafe.ai) in your environment or a .env file. inspect needs no key and costs nothing. ask calls Jev and --view replays the decision:

gh run view <run id> --log-failed > run.log
jevbrief inspect run.log --adapter ci --goal "CI is red on main"
jevbrief ask     run.log --adapter ci --goal "CI is red on main" --view
27 log lines -> 7 failures -> 3 sent to Jev
likely cause: Run pytest -q: E KeyError: 'currency_code'   (confidence 0.84)
looks flaky: no (0.07)

Building an agent? One call narrows any mix of tools to the ones that fit the current step, and returns your own objects. The tools can be your functions, MCP servers, LangChain, CrewAI, OpenAI, or Anthropic tools. Another call tells you when the agent is going in circles.

from jevbrief import select_tools, pick_tool, check_progress

llm.bind_tools(select_tools(tools, goal))     # ranking only: local, free, no API key
pick = pick_tool(tools, goal)                 # Jev picks one: pick.tool, pick.confidence
check_progress(history, goal).stuck          # is the agent going in circles?

Adapters

Adapter Reads Jev answers Install
tools Your functions, MCP servers, LangChain, CrewAI, OpenAI, and Anthropic tools Which tool the agent should call next jevbrief
steps An agent's step history, from any framework or a jevbrief trace Is the agent stuck, making progress, or done jevbrief
ci GitHub Actions logs and JUnit XML Which error broke the build, and whether it looks flaky jevbrief
pr A pull request's diff: gh pr diff, .patch, or the GitHub API Which chunk most needs a human reviewer, and whether it is safe to merge jevbrief
otel OpenTelemetry logs, Kubernetes events, and Prometheus alerts Which signal shows an incident's cause jevbrief
json Any JSON or JSON Lines, with a config file Which item fits, or which action to take jevbrief
web Web pages, through Playwright Which element to click next jevbrief[web]
nes An NES game's memory Which move to make next jevbrief[nes]

Each adapter's page covers its quick start, input, reason codes, options, and limits. Want another source? Suggest it or build it.

Benchmarks

Both arms use the same Jev and the same question, with three runs per task and median input tokens. The raw arm sends what a naive integration would send.

Adapter Data Accuracy, raw → jevbrief Input tokens, raw → jevbrief
tools 105 real MCP tools, 40 hand-written goals 82% → 88% (94% with hybrid ranking) 13,450 → 3,685
steps 28 synthetic agent histories 89% → 93% 2,506 → 1,266
ci 16 real failed GitHub Actions runs 88% → 100% 30,502 → 988
pr 37 real merged pull requests 55% → 55% 2,599 → 1,652
otel 6 synthetic incidents 83% → 100% 29,678 → 1,070
otel with events and alerts 8 synthetic incidents 71% → 100% 29,912 → 1,830
json 9 synthetic queries 89% → 100% 3,848 → 2,002
web 10 synthetic pages 100% → 100% 5,400 → 2,344
nes 100 moves on a real level block 8.6 → block 56.4 2,829 → 713

Not every result favors jevbrief:

  • On ci's second question, whether the failure is flaky, jevbrief scored 67% against 93%.
  • On pr, jevbrief tied the full diff on accuracy. It only saved tokens.
  • The synthetic sets were built alongside the adapters.

See how the benchmarks work for the method and caveats.

Contributing

git clone https://github.com/parthkomalwad/jevbrief && cd jevbrief
python -m venv .venv && . .venv/bin/activate    # Windows: .venv\Scripts\activate
pip install -e ".[dev]" && pytest -q

License

MIT. Community project, not affiliated with TypeSafe AI.

Release files for jevbrief 0.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jevbrief 0.7.0
File Size Uploaded
jevbrief-0.7.0.tar.gz 106.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jevbrief 0.7.0
File Interpreter ABI Platform
jevbrief-0.7.0-py3-none-any.whl Python 3 none any Details

Total release size: 197.5 kB

Release files / jevbrief-0.7.0.tar.gz

Download URL jevbrief-0.7.0.tar.gz
Size 106.9 kB
Tags Source
SHA-256 checksum
How to use checksums
f4b50009fec9f43225520f396f2f8479cd9f29950e3d05d727a389513253a95e
BLAKE2b-256 checksum
How to use checksums
cf5c421cb6b0e23cb11cdc68375701b98cbfbe965489316e53ad0fe47a51bb20
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / jevbrief-0.7.0-py3-none-any.whl

Download URL jevbrief-0.7.0-py3-none-any.whl
Size 90.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f12d507f86fc5e0b58d02e9ba1c048a12470789329b80a6eeedb29e736592f84
BLAKE2b-256 checksum
How to use checksums
0296a388664e80da6076c1f8282f9b671769f56aa762e300690a6666ad5851c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release history Release notifications | RSS feed

This release

0.7.0 This release

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page