Skip to content

ProgressGate

npm library where Jev judges whether an agent's recent steps are stuck on the same assumption; code returns CONTINUE, WARN, REPLAN or HALT.

Projectbeta

Overview

ProgressGate detects semantic stagnation in agent loops: sequences of different actions still pursuing the same contradicted assumption, such as a permission error followed by trying sudo, a different path and a different service account. A step counter cannot see that, so ProgressGate asks Jev to read the recent trajectory and returns six raw semantic signals; a small deterministic policy turns them into CONTINUE (progress or new evidence), WARN (first stagnation signal), REPLAN (multiple signals agree) or HALT (persistent stagnation or confident regression).

Each result includes a stable reasonCode, the raw signals, a confidence and a debug explanation not meant for parsing. Safe defaults: automatic HALT is off, so a HALT conclusion is returned as REPLAN with recommendedDecision HALT until you enable it after reviewing real trajectories, and Jev or network failures fail open as CONTINUE with a SUPERVISOR_UNAVAILABLE code. Error messages are sanitised so the API key never appears.

What the decision model decides

TypeQuestionAnswers
Yes / noIs the agent still pursuing the same rejected assumption?(inferred)yes · no
Yes / noDid this step produce new evidence or progress?(inferred)yes · no
ChoicePolicy decisionCONTINUE · WARN · REPLAN · HALT

How it works

  1. Create a run with the agent's goal.
  2. Observe each step's action and result.
  3. Jev returns trajectory signals; code computes a decision.
  4. Inject feedback on REPLAN; stop on HALT if enabled.

Strengths

  • Catches spinning that step counters miss.
  • Safe defaults: no automatic halt, fail open.
  • Stable reason codes for branching.

Caveats

  • Requires tuning on your own trajectories.
  • Requires a TypeSafe key.

Getting started

npm install progressgate, export TYPESAFE_API_KEY, then use new ProgressGate({ apiKey }).run({ goal }).observe(step).

At a glance

Type
Project
Status
beta
Language
TypeScript
Runtime
Node library
Has code
yes

Use cases and integrations

How curated lists describe it

Frequently asked questions

Will it stop my agent automatically?

Not by default; HALT is downgraded to REPLAN until you enable allowAutomaticHalt.

What if Jev is unavailable?

It returns CONTINUE with SUPERVISOR_UNAVAILABLE.

What counts as stagnation?

Different actions still pursuing the same contradicted assumption.

Related projects

  • CLI where several coding agents draft implementation plans and Jev scores them, decides on cross-review and picks the finaliser.

    ProjectbetaTypeScript
  • Minimal web demo: paste an agent step trace and Jev judges whether to continue, retry, escalate or stop.

    DemoprototypeTypeScript
  • Fail-open Codex UserPromptSubmit hook that asks Jev for task type, complexity, risk and execution mode and injects it as advisory context.

    HookbetaPython
  • Fork of codex-with-chatgpt where Jev plus fixed rules decide when to bring in web ChatGPT to plan or review and when Codex just acts.

    Projectbeta
  • Plugin suite adding Jev judgments to DeepSeek Harness: tool pruning, dead-loop blocking, a safety guard and skill routing.

    PluginbetaTypeScript
  • Supervisor for unattended coding agents: one batched Jev Choice over the trajectory decides continue, pause or escalate.

    ProjectbetaPython