@glassesneo/pi-decision-ui
v0.1.1
Published
Accessible adaptive decision flows and a Pi question extension
Maintainers
Readme
@glassesneo/pi-decision-ui
An accessible keyboard-first decision flow for Pi, including a compatible question tool and a small library API.
Security: Pi extensions run with the installing user's full process permissions. Review this package before installing it.
Installation
Install with:
pi install npm:@glassesneo/[email protected]Pi loads the included question extension. The package supports Pi 0.84.4 and Node 22.19.0 or later.
Question tool
The extension registers one sequential question tool. Questions are single, multi, or text; single and multi options have value, label, optional description, and optional noteRequired.
{
"questions": [{
"id": "approach",
"prompt": "Which approach?",
"kind": "single",
"options": [{ "value": "safe", "label": "Safe" }, { "value": "fast", "label": "Fast" }]
}]
}Results are JSON in both tool content and details:
{"status":"submitted","responses":{"approach":{"kind":"single","value":"safe"}}}Write-ins are answers. Absent response IDs are skipped. Cancellation preserves completed responses and includes currentQuestionId only while an active question is cancelled. TUI mode uses one keyboard-operated custom component; RPC uses Pi dialogs; print/JSON and unavailable UI return {"status":"unavailable","responses":{}}.
Library API
import { runDecisionFlow, type DecisionItem } from "@glassesneo/pi-decision-ui";
const items: DecisionItem[] = [{ id: "approve", prompt: "Approve?", kind: "single", options: [
{ value: "yes", label: "Yes" }, { value: "no", label: "No" },
]}];
const result = await runDecisionFlow(ctx, items, {
policy: { allowWriteIn: false, autoSubmitSingle: true },
});Optional keybindings
No configuration is required. To override an action, create pi-decision-ui.json in the Pi agent directory (normally ~/.pi/agent):
{
"schemaVersion": 1,
"keybindings": {
"common.next-question": ["ctrl+f"],
"choice.move-down": ["ctrl+n"]
}
}Listed actions replace lower-precedence bindings; [] explicitly unbinds. Unknown fields, schema versions, actions, invalid keys, collisions, and missing required effective actions fail with an actionable configuration error.
Development
corepack pnpm install --frozen-lockfile
corepack pnpm check
corepack pnpm pack:checkThese commands run type checking, linting, tests, the build, and packed-artifact verification.
