@2008muyu/pi-ui-prompt-dialog

A customizable TUI prompt dialog for pi extensions: inline menu + text input in a single overlay

Packages

Package details

extensionprompt

Install @2008muyu/pi-ui-prompt-dialog from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:@2008muyu/pi-ui-prompt-dialog
Package
@2008muyu/pi-ui-prompt-dialog
Version
0.1.2
Published
Jun 4, 2026
Downloads
92/mo · 14/wk
Author
2008
License
MIT
Types
extension, prompt
Size
34 KB
Dependencies
0 dependencies · 2 peers

Security note

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

README

pi-ui-prompt-dialog

A customizable TUI prompt dialog for pi coding agent extensions.
Inline menu + text input in a single overlay — no more two-step "select then input" dialogs.

Quick Start

pi install npm:@2008muyu/pi-ui-prompt-dialog
import { showPromptDialog } from "@2008muyu/pi-ui-prompt-dialog";

const result = await showPromptDialog(ctx, {
  title: "Plan 模式拦截了此操作",
  description: "agent 想跑:npm install lodash",
  actions: [
    { id: "exit", label: "退出并执行", default: true },
    { id: "cancel", label: "取消" },
  ],
  input: { label: "补充指令", placeholder: "想让我怎么做?" },
});

if (!result) {
  // Esc pressed
} else if (result.type === "action") {
  // result.action === "exit" | "cancel"
} else {
  // result.type === "input", result.value is the user's text
}

Usage Patterns

Actions only (no input)

const result = await showPromptDialog(ctx, {
  title: "选择操作",
  actions: [
    { id: "open", label: "打开文件", default: true },
    { id: "search", label: "搜索内容" },
    { id: "cancel", label: "取消" },
  ],
});

Pure input (single submit button)

const result = await showPromptDialog(ctx, {
  title: "输入项目名",
  description: "请输入一个 kebab-case 名称",
  actions: [{ id: "submit", label: "提交", default: true }],
  input: { label: "名称", placeholder: "my-project" },
});

API

showPromptDialog<TAction>(ctx, options) => Promise<PromptDialogResult<TAction>>

Parameter Type Description
ctx ExtensionContext Pi extension context
options.title string Dialog title
options.description string (optional) Context text (shown in muted style)
options.actions PromptAction[] 1–10 action items
options.actions[].id TAction Unique identifier
options.actions[].label string Display label
options.actions[].default boolean Default (Enter key) action — max 1
options.input PromptInput (optional) Inline input field configuration
options.input.label string Label shown before input
options.input.placeholder string (optional) Placeholder when empty

Return value

type PromptDialogResult<TAction extends string> =
  | { type: "action"; action: TAction }  // User selected an action
  | { type: "input"; value: string }      // User typed text
  | undefined;                            // Esc / cancelled

Exported types

import {
  showPromptDialog,
  type PromptAction,
  type PromptInput,
  type PromptDialogOptions,
  type PromptDialogResult,
} from "@2008muyu/pi-ui-prompt-dialog";

Keyboard Controls

Key Action
Navigate actions / input row
Tab / on input row Enter input mode
(in input) Move cursor
Backspace (in input) Delete character
/ Esc (in input) Exit input mode
Enter Submit (action or input)
Esc Cancel dialog

Limits

  • Max 10 actions
  • Single-line input only (no multi-line)
  • No scrolling (if terminal is too narrow, content is clipped)
  • No custom theming (uses pi's built-in theme colors)

License

MIT