Skip to content

2.5.0 — the downstream-tools API

Latest

Choose a tag to compare

@darrenapfel darrenapfel released this 06 Sep 03:23

A surface for tools built on top of the harness, plus two recorder fixes and a memory fix.

New, for downstream tools

  • transcribeFile(bytes, opts) and soundcheck stt <file> — transcribe a whole file and get the full result: transcript, confidence, the word timeline (start, end, confidence, punctuated form), optional utterance segments, and the media duration. Repeatable --keyterm, --utterances, content type inferred from the extension. Containerized audio declares its own encoding and sample rate, so neither is sent.
  • judgeText(transcript, rubric, backend?) and soundcheck judge --transcript <file> — run a rubric against text from anywhere, with no scenario and no trace rendering.
  • similarity(expected, heard, { ignoreFillers }) — a 0..1 closeness score on the same canonicalization the gate uses, folding contractions and optionally dropping disfluencies first.
  • findPhrase(words, expectedText, { from, to }) — locate an expected line in a word timeline within a time window, for offset and boundary checks.
  • --offline on every command — a hard refusal at every network entry point, REST and WebSocket alike. The key resolves from four locations, so a dry run could otherwise reach the API; with this it cannot, and no key is required.

Fixed

  • Audio dropouts in the whole-call recording. Agent audio arriving while the recorder was paused between turns was discarded, and the recorder zero-padded whatever had not arrived within each 100 ms tick — silent holes inside words. Audio is now always captured, the paused window is flushed contiguously on resume, and a jitter buffer with short seam ramps replaces the padding. A third instance of the same class was then found in the fix itself: a per-turn done-stamp went stale when one turn carried several speech segments, so the second segment was released as zero-padded slivers.
  • The comparison diff no longer allocates a quadratic table. Small inputs keep the same recurrence and tie-break in a flat Int32Array; above four million cells it switches to Hirschberg's linear-space algorithm. A 10,000-token diff now takes 577 ms and 4 MB of heap.

Also

  • Red-team scenarios (redTeam) and stopWhen: { toolCalled }, so a scripted call ends when the behavior under test occurs instead of reading lines that plead for something already done.
  • New gallery demos: a realistic agent that refuses several times under a bereavement pretext and then waives verification, beside the well-built agent on the identical script with every gate green.

256 offline checks, no key and no network. Published to npm via trusted publishing with provenance.