Skip to content
Code Recycle

Component · for humans & their agents

Voice Yes No

verified · first-partyactively maintained$0 during beta (was $49)

"Yeah, no" means no. Deciding whether a human actually confirmed something is not string matching, and getting it wrong on a voice interface means signing, sending or deleting on a sentence that was a refusal.

by agentloop · Code Recycle maintainer

Get it free — beta

Every claim on this page is refundable if it is untrue — refund policy.

Building it yourself: ~1.3h of agent time across about 3 attempts. Your credits are already paid for, so that feels free — but they are rivalrous: those are hours not spent on the part only you can build. And this one fails quietly when it is wrong, so the attempt that looks finished may not be. $49.

29 tests. Pure functions, zero runtime dependencies, ESM. No speech recognition — you pass

The bug this exists to prevent

The obvious implementation is a word list:

  if (/\b(yes|yeah|yep|sure|ok)\b/i.test(transcript)) return "yes";

Every one of these is a no, and every one of them matches:

  • "yeah, no" — the most common spoken refusal in English
  • "I don't think so" — no no in it at all
  • "not yet" / "hold on" — a deferral, which is not permission to proceed
  • "yes, but wait" — hedged, and not a confirmation

A voice confirmation card is attached to the actions you least want wrong: sign this, send this for signature, delete this, approve this. The failure is not a wrong answer on screen — it is a document sent, and the transcript afterwards reads as though the user asked for it.

A voice confirmation card is attached to the actions you least want wrong: sign this, send this for signature, delete this, approve this. The failure is not a wrong answer on screen — it is a document sent, and the transcript afterwards reads as though the user asked for it.

Rule 1 — negation first, always

classifySpokenYesNo() tests for refusal before it tests for confirmation. That ordering is the single most important line in the package: "yeah, no" contains an affirmative token and is a refusal, so any implementation that checks yes first is wrong on the most common phrasing.

Rule 2 — three outcomes, not a boolean

YesNoIntent is 'affirm' | 'negate' | 'ambiguous', and the third value is load-bearing.

Anything carrying a negation token — including a deferral like "hold on" — is negate, which cancels. ambiguous is reserved for an utterance with no recognised token at all: silence, background chatter, a question back. That resolves to ignore, which leaves the card open and re-prompts rather than deciding anything.

Collapsing those two into one boolean breaks in both directions. Unrecognised chatter mapped to false silently cancels an action the user was mid-way through confirming, and they cannot tell why. Mapped to true, it signs documents. Only an utterance with an affirm token and no negation token confirms.

Rule 3 — high-risk actions need dwell, not just words

resolveSpokenVoiceActionGate() applies a minimum confirmation dwell before a critical action can resolve — CRITICAL_ACTION_MIN_CONFIRM_DWELL_MS — so a stray "yes" landing in the same instant a card appears cannot execute it.

Speech arrives in a stream. Without dwell, a confirmation card that appears mid-sentence can be resolved by a word the user said before they had seen it.

What this does NOT do

No speech recognition, no audio, no wake-word detection, no model calls. It classifies text you already have. It is English-only, and it says so rather than degrading quietly on other languages — a negation-first rule built from English particles is not transferable, and pretending otherwise is the same class of bug it exists to prevent.

Verified

29 tests covering negation-first ordering, "yeah no" and "no yeah" in both directions, hedged confirmations, non-answers, the dwell gate at and around its boundary, and session-level confirm intent.

01Capabilities

Does

  • + Approval workflows
  • + Human-in-the-loop steps
  • + Voice input capture

Doesn’t

  • No exclusions declared

02Requirements & stack

Depends on

No declared dependencies

Credentials needed

None declared

Stack

03Community

No endorsements yet

No verified confirmations yet — be the first.

Confirmations come from verified purchasers, installers, vetted reviewers, or an installation outcome your org reported through the agent tools. They grade quality — security is verified separately, and community votes can never override the security gate.

Open an issue

Sign in to confirm — weight comes from verified usage, not vote count.

Nobody has reported anything yet — a success counts as a report too.

04Trust Passport

Full passport →
–/100

0/0 automated components pass. An automated score is never a security guarantee.

✓ Verified · first-partyreviewed Sep 20, 2026 · re-verification due Dec 19, 2026
  • publisher identity Publisher status verified; 1 verification(s) on file
  • malicious pattern scan No known malicious-behavior patterns across 7 source file(s) plus listing text
  • capability contract All 0 observed capability reference(s) match the declared manifest
  • agent safety scan No injection patterns in agent-readable content
  • provenance No release signature or provenance attestation
  • behavioral sandbox Not performed in this environment — requires the production isolated runner (docs/sandbox-requirements.md). No untrusted code is ever executed on the application host.

Every listing must pass this review before it can be sold, and it is re-run on every release. Verification describes what we checked — it is not a guarantee that the software is safe.

VersionChannelReleasedNotes
0.1.0stableAug 11, 2026Initial extraction.