Skip to content
Code Recycle

Component · for humans & their agents

Voice UI Actuators

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

A voice agent should be able to press a button you never built a voice tool for.

by Code Recycle

Get it free — beta

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

Building it yourself: ~2h of agent time across about 4 attempts. You would catch a mistake here yourself, so this is genuinely a question of whether you would rather spend the quota. $49.

34 tests. Zero runtime dependencies, ESM, jsdom-testable. Perception is elsewhere; this is

The problem this solves

Voice integrations are usually built tool by tool: a createInvoice tool, a searchDocuments tool, an openSettings tool. Every one is bespoke, and the assistant's reach is exactly the list someone had time to write. Every new page silently falls outside it, and the user cannot tell which parts of the app listen — the failure is "it didn't do anything," with no error and no explanation.

The alternative is a small vocabulary of universal actions that work against the DOM already on screen. A page nobody voice-enabled is still operable, because "click Save" does not need to know what Save does.

Finding the right element is the whole problem

findClickable() and the input finders carry the accumulated rules, and every one of them exists because a simpler version misfires:

  • Exact beats partial. With "Save" and "Save and close" both present, a substring match hits
  • whichever comes first in the DOM. That is a coin flip on which button a voice command presses.
  • Disabled elements are skipped. Matching one produces a click that silently does nothing —
  • from the user's side, indistinguishable from not being heard.
  • aria-label is the fallback when there is no visible text. Icon-only buttons are most of a
  • toolbar, and a text-only matcher cannot reach any of them.
  • Inputs are found four ways — placeholder, aria-label, <label for=id>, and a wrapping
  • <label>. Real forms use all four, and supporting only the first two means "type in the email
  • box" works on some pages and not others, for reasons invisible to the user.
  • nth disambiguates deliberately. When a page genuinely has three "Edit" buttons, the
  • caller says which, rather than the library guessing.
  • No match returns null. The agent can say "I can't find a Save button here," which is a
  • useful sentence. Throwing, or clicking something approximate, is not.

What this does NOT do

No perception. It does not read the screen, take screenshots, or decide what to click — the model and its vision channel do that. This executes a decision already made.

No speech recognition, no intent parsing, no confirmation. Pair it with a confirmation gate before anything destructive; these actuators will happily click Delete.

Client-side only: it needs a real DOM.

Verified

34 tests covering exact-over-partial precedence, case-insensitivity, role filtering, links via role=link and anchors, aria-label fallback, disabled-element skipping, nth disambiguation, all four input-finding strategies, empty input, and the no-match case returning null.

Not covered: no test drives a real browser — jsdom is not Chrome, and shadow DOM, iframes and virtualised lists are untested. Nothing here handles an element that exists but is scrolled out of view or covered by an overlay.

01Capabilities

Does

  • + Voice commands
  • + Developer tooling
  • + Agent tool-call orchestration

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.