2008muyu-pi-ui-prompt-dialog

内容来源:README.md(说明文档) · 原始地址 · 查看安装指南

原始内容

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