JEV FOR CONTEXT DECISIONS

Jev Context Compaction

Decide which tool calls and results may still matter for the next step. Edit a bounded history, ask Jev for two Boolean probabilities per candidate, then review a reversible local pruning policy against the complete original.

Try the context tool ↓
01 / LIVE TOOL

Review the record before it leaves your control

The examples are synthetic input, not model answers. The original stays available throughout. A run sends the text you choose to this site’s server and the configured Jev provider.

Start from an editable synthetic historyLoading a sample never calls Jev.
01 / SOURCE CONTEXT1,970 / 8,000 characters

Conversation & paired tools

Each tool record contains its call input and result together. First and latest tool records are always pinned.

USER MESSAGE
TOOL PAIR 1
TOOL PAIR 2
ASSISTANT MESSAGE
TOOL PAIR 3
TOOL PAIR 4
TOOL PAIR 5

Selected task, constraints, messages, tool inputs and results are sent to this site’s server and its configured Jev provider. Remove secrets or private data before running. No files or real agent sessions are read or changed.

One batched logical evaluation; bounded provider fallback may make another physical attempt if the direct provider fails.
02 / REVIEW & EXPORTAWAITING EVALUATION

The complete original stays available

Edit the synthetic history, then evaluate. The result and probabilities will appear here without altering your input.

Before · complete source

{
  "task": "Fix the failing pagination test while keeping the public API stable.",
  "constraints": "Do not change authentication or production data. Preserve the test failure and the relevant source code.",
  "entries": [
    {
      "kind": "message",
      "id": "user1",
      "role": "user",
      "text": "The dashboard pagination test fails after a refactor. Please find the regression."
    },
    {
      "kind": "tool",
      "id": "baseline",
      "tool": "git status",
      "input": "git status --short",
      "result": "main clean; no uncommitted changes",
      "pinned": false
    },
    {
      "kind": "tool",
      "id": "search",
      "tool": "rg",
      "input": "rg 'pagination' src tests",
      "result": "src/query/paginate.ts:17 paginate(items, page)\ntests/pagination.test.ts:42 expected page 2 to begin with item 11",
      "pinned": false
    },
    {
      "kind": "message",
      "id": "assistant1",
      "role": "assistant",
      "text": "I found the shared pagination helper and will inspect its boundary handling."
    },
    {
      "kind": "tool",
      "id": "oldlog",
      "tool": "test runner",
      "input": "npm test -- old-suite",
      "result": "An older unrelated color-snapshot test passed. Its output is no longer relevant to the pagination regression.",
      "pinned": false
    },
    {
      "kind": "tool",
      "id": "source",
      "tool": "read file",
      "input": "sed -n '1,80p' src/query/paginate.ts",
      "result": "export function paginate(items, page, size) { const start = page * size; return items.slice(start, start + size); }\nThe UI uses one-based page numbers.",
      "pinned": true
    },
    {
      "kind": "tool",
      "id": "failure",
      "tool": "test runner",
      "input": "npm test -- pagination.test",
      "result": "FAIL pagination.test: page 2 expected item 11, received item 21. Current call stack points to src/query/paginate.ts:17.",
      "pinned": false
    }
  ]
}

After · unchanged original

{
  "task": "Fix the failing pagination test while keeping the public API stable.",
  "constraints": "Do not change authentication or production data. Preserve the test failure and the relevant source code.",
  "entries": [
    {
      "kind": "message",
      "id": "user1",
      "role": "user",
      "text": "The dashboard pagination test fails after a refactor. Please find the regression."
    },
    {
      "kind": "tool",
      "id": "baseline",
      "tool": "git status",
      "input": "git status --short",
      "result": "main clean; no uncommitted changes",
      "pinned": false
    },
    {
      "kind": "tool",
      "id": "search",
      "tool": "rg",
      "input": "rg 'pagination' src tests",
      "result": "src/query/paginate.ts:17 paginate(items, page)\ntests/pagination.test.ts:42 expected page 2 to begin with item 11",
      "pinned": false
    },
    {
      "kind": "message",
      "id": "assistant1",
      "role": "assistant",
      "text": "I found the shared pagination helper and will inspect its boundary handling."
    },
    {
      "kind": "tool",
      "id": "oldlog",
      "tool": "test runner",
      "input": "npm test -- old-suite",
      "result": "An older unrelated color-snapshot test passed. Its output is no longer relevant to the pagination regression.",
      "pinned": false
    },
    {
      "kind": "tool",
      "id": "source",
      "tool": "read file",
      "input": "sed -n '1,80p' src/query/paginate.ts",
      "result": "export function paginate(items, page, size) { const start = page * size; return items.slice(start, start + size); }\nThe UI uses one-based page numbers.",
      "pinned": true
    },
    {
      "kind": "tool",
      "id": "failure",
      "tool": "test runner",
      "input": "npm test -- pagination.test",
      "result": "FAIL pagination.test: page 2 expected item 11, received item 21. Current call stack points to src/query/paginate.ts:17.",
      "pinned": false
    }
  ]
}

Review omitted evidence before using exported text. Shorter context is not proof of better answers, lower total cost, or lossless preservation. Nothing is written into an agent session.

02 / THREE ACTIONS

What the local policy actually does

KEEP / PINNED

Keep the pair verbatim

First and latest tool pairs, plus manual pins, remain complete. A candidate result above the keep threshold also keeps its call and full result.

TRUNCATE

Keep the call and a result prefix

When the call is useful but the complete result falls below the threshold, the tool keeps the call input, a chosen result prefix, and an explicit truncation marker. If that would be longer, it keeps the original.

DROP

Remove the pair together

When both probabilities fall below the threshold, call and result leave the exported context together. The full original remains visible and Restore needs no Jev request.

03 / ORIGINAL & REVIEW

A shorter record is a proposal, not a guarantee

Before and After use the same JSON serialization for character counts. Expand a decision to inspect the full removed result. Restoring shows the complete original; exporting never writes to an agent conversation. Historical tool output can be irreplaceable or describe a side effect, so human review matters even when a tool could be called again.

Keeping the original intact does not make a pruned export lossless. Fewer characters do not establish better answers or lower total cost. The threshold and preview length are application policy; changing them only recomputes the result locally.

04 / SCOPE

This browser tool and a host plugin solve different parts

HERE

Inspect a bounded draft

You paste or edit a task, constraints, messages and up to eight paired tool records. The entire bounded State is sent for at most twelve Boolean/Noul questions in one logical evaluation. No local files or real session history are read.

UPSTREAM EXPERIMENT

Work inside Claude Code hooks

fast-jev-compaction pairs calls and results by tool ID, pins boundaries, and stages shorter State representations. Its hook path depends on Claude Code function-hook support. This page does not install or reproduce that integration, its long-history batching, or its native-compaction fallback.

ADJACENT PATTERN

Filter new output earlier

Winnow filters tool results before they enter the agent context and can cache hidden output for recall. That differs from pruning an existing history; caching and recall are not features of this page.

05 / SOURCES & LIMITS

What this demonstration can establish

TypeSafe documents Noul as a probability for a yes/no question and supports multiple questions over one State. This tool uses two independently judged questions per candidate. Noul has no separate Choice confidence. We do not treat a returned probability as proof that deleting evidence is safe.

The source review used fast-jev-compaction at e3f262a, Winnow at 51d80b9, and the Codex proof of concept at 7147a4b. The latter’s maintainer explicitly does not recommend it for real work. A published npm package exists for the upstream experiment, but its host compatibility and installation path were not independently exercised here; consult the upstream repository and current host documentation before trying it.

This is not a replacement for native model compaction or internal state handling, and it does not generate summaries or promise lossless compression. Community interest does not establish production quality. Model judgments for this new scenario have not been benchmarked here.