@fgladisch/pi-user-select

Multiple-choice user selection tool extension for Pi

Package details

package

Install @fgladisch/pi-user-select from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:@fgladisch/pi-user-select
Package
@fgladisch/pi-user-select
Version
0.1.1
Published
Apr 30, 2026
Downloads
not available
Author
fgladisch
License
MIT
Types
package
Size
10.2 KB
Dependencies
0 dependencies · 1 peer

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

@fgladisch/pi-user-select

Registers user_select tool so LLM (or skills) can ask human a multiple-choice question.

Use when workflow needs explicit user input to disambiguate, confirm, or pick between mutually exclusive paths instead of guessing.

Install

pi install npm:@fgladisch/pi-user-select

No config, no slash commands.

Tool schema

Field Type Required Description
question string yes Question/prompt shown to user.
options Option[] yes Mutually exclusive choices ({ label, description? }, ≥ 1).
allowCustom boolean no When true, append a "(Type custom answer)" free-text entry.

Example:

{
  "question": "Which package manager should I use?",
  "options": [
    { "label": "npm" },
    { "label": "pnpm", "description": "Faster, content-addressable" },
    { "label": "yarn" }
  ],
  "allowCustom": true
}

Behavior

  • Interactive UI: shows question, numbered options (descriptions inline), and optional (Type custom answer) entry.
  • Non-interactive (pi -p, JSON mode): throws so LLM sees error result and stops looping on tool that has no human to answer it.
  • Cancellation (Esc / null / whitespace-only custom answer): returns non-error result with answer: null and cancelled: true.

Tool result text:

Outcome content[0].text
Pre-baked option User selected: <n>. <label>
Free-text answer User wrote: <trimmed text>
Cancelled User cancelled the selection
Empty custom text User submitted an empty custom answer

details includes structured fields (question, options, answer, wasCustom, cancelled) for renderers and downstream skills.