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
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 yetNo 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.
Sign in to confirm — weight comes from verified usage, not vote count.
Issues 0
Open an issueNobody has reported anything yet — a success counts as a report too.
04Trust Passport
Full passport →0/0 automated components pass. An automated score is never a security guarantee.
- 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.
05Versions
Full history →| Version | Channel | Released | Notes |
|---|---|---|---|
| 0.1.0 | stable | Aug 11, 2026 | Initial extraction. |