Skip to content

Status

Whistle is on version 0.0.0. Until 1.0, a minor release can change the public API, so pin the version you test against.

  • A runtime holds at most 64 live contributions and 256 live commands.
  • A command has at most 16 binding values and 16 slash aliases. A slash grammar has at most 32 words.
  • A catalog has at most 128 commands, and a catalog flow stops after 16 steps with flow_too_long. A catalog command that needs a prompt fails with interaction_required when there is no interaction, which is always the case for agent and programmatic origins.
  • Prompt and notice text is capped at 8192 characters. A choice prompt has 1 to 256 options. Notice URLs must be http or https.
  • Namespaces must not contain a colon, and command IDs, titles, categories and labels must not be blank. Violations throw a plain Error from contribute or lease.update.
  • These bounds are defenses inside the implementation. They are not stable API promises.

Whistle does not parse key presses or slash input from raw text, render UI, run transport, or keep durable delivery state. It owns no browser, terminal, DOM, React, product or authorization state, and has no timers or background work. Use the ./wire parsers on untrusted input before it becomes a command, prompt or notice.

MIT. See LICENSE.