{"_id":"@2008muyu/pi-ui-prompt-dialog","_rev":"3-c4576eb826c9fce60a9249b16bc1e7df","name":"@2008muyu/pi-ui-prompt-dialog","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@2008muyu/pi-ui-prompt-dialog","version":"0.1.0","keywords":["pi-package","pi-extension","pi-ui","dialog","prompt","tui","terminal-ui"],"author":{"name":"2008muyu"},"license":"MIT","_id":"@2008muyu/pi-ui-prompt-dialog@0.1.0","maintainers":[{"name":"2008","email":"506634967@qq.com"}],"homepage":"https://github.com/2008muyu/pi-ui-prompt-dialog#readme","bugs":{"url":"https://github.com/2008muyu/pi-ui-prompt-dialog/issues"},"dist":{"shasum":"2120d2028a221eba31a137da8f5132d841955cc8","tarball":"https://registry.npmjs.org/@2008muyu/pi-ui-prompt-dialog/-/pi-ui-prompt-dialog-0.1.0.tgz","fileCount":6,"integrity":"sha512-NsCja80FxkuyO2AEfxd8wdIpC4WuRAvTn2Er5LlHAAN3wlZcJEKWAMUta/3zVIUBcWwU12wqK75ipvo553dBMA==","signatures":[{"sig":"MEUCIQDlP6D8YxdDA9rjp8dXSAoI0YSbKDsm1PYulikVfybUzgIgDzYCpei67bIU0H04IOy9J2v2vNbxYCE9AZo5cON/YRg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34476},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"12cb88512c88a099e8f0113581821bd98ba8b2c8","scripts":{"dev":"tsup --watch","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"2008","email":"506634967@qq.com"},"repository":{"url":"git+https://github.com/2008muyu/pi-ui-prompt-dialog.git","type":"git"},"_npmVersion":"11.6.2","description":"A customizable TUI prompt dialog for pi extensions: inline menu + text input in a single overlay","directories":{},"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5.9.3","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"optionalDependencies":{"@rollup/rollup-win32-x64-msvc":"^4.61.1"},"_npmOperationalInternal":{"tmp":"tmp/pi-ui-prompt-dialog_0.1.0_1780576071520_0.9581077266016389","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@2008muyu/pi-ui-prompt-dialog","version":"0.1.1","keywords":["pi-package","pi-extension","pi-ui","dialog","prompt","tui","terminal-ui"],"author":{"name":"2008muyu"},"license":"MIT","_id":"@2008muyu/pi-ui-prompt-dialog@0.1.1","maintainers":[{"name":"2008","email":"506634967@qq.com"}],"homepage":"https://github.com/2008muyu/pi-ui-prompt-dialog#readme","bugs":{"url":"https://github.com/2008muyu/pi-ui-prompt-dialog/issues"},"dist":{"shasum":"14c79c7c718f8a2bb22833d15b16fbba4ef3c4dc","tarball":"https://registry.npmjs.org/@2008muyu/pi-ui-prompt-dialog/-/pi-ui-prompt-dialog-0.1.1.tgz","fileCount":6,"integrity":"sha512-CFMRzmpYOPQwOME4iYKr01+P23jyHgB4K2dVfs+a8RlHRU2SBaRlPZWoavRW0ySAqXjctS98lQ3uHPWopDu93g==","signatures":[{"sig":"MEQCIDI0+gCPfRDZM4run9oxPnaZ005aO2mDHv/fWQ8o9NPAAiAnk0bYSfSpyZCIg8XXeP1SwOrsz7T1KsaP/M0gG40dLw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34476},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"0e3bad7a9114e05793d6c5512eb7deef80beec68","scripts":{"dev":"tsup --watch","build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"2008","email":"506634967@qq.com"},"repository":{"url":"git+https://github.com/2008muyu/pi-ui-prompt-dialog.git","type":"git"},"_npmVersion":"11.6.2","description":"A customizable TUI prompt dialog for pi extensions: inline menu + text input in a single overlay","directories":{},"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^5.9.3","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"optionalDependencies":{"@rollup/rollup-win32-x64-msvc":"^4.61.1"},"_npmOperationalInternal":{"tmp":"tmp/pi-ui-prompt-dialog_0.1.1_1780576332102_0.5968373870638104","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@2008muyu/pi-ui-prompt-dialog","version":"0.1.2","description":"A customizable TUI prompt dialog for pi extensions: inline menu + text input in a single overlay","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsup","dev":"tsup --watch","prepublishOnly":"npm run build"},"keywords":["pi-package","pi-extension","pi-ui","dialog","prompt","tui","terminal-ui"],"author":{"name":"2008muyu"},"license":"MIT","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/2008muyu/pi-ui-prompt-dialog.git"},"peerDependencies":{"@earendil-works/pi-coding-agent":"*","@earendil-works/pi-tui":"*"},"devDependencies":{"@earendil-works/pi-coding-agent":"*","@earendil-works/pi-tui":"*","tsup":"^8.5.1","typescript":"^5.9.3"},"optionalDependencies":{"@rollup/rollup-win32-x64-msvc":"^4.61.1"},"gitHead":"0e3bad7a9114e05793d6c5512eb7deef80beec68","_id":"@2008muyu/pi-ui-prompt-dialog@0.1.2","bugs":{"url":"https://github.com/2008muyu/pi-ui-prompt-dialog/issues"},"homepage":"https://github.com/2008muyu/pi-ui-prompt-dialog#readme","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-8JBg8FhOkEIneh0oH8inUWyTz5LKsOn7p9cvO9E5OqusF9AUleR/9NlhCwiuegM0XKLrNdruxhd7JurH3PAxBQ==","shasum":"e3984a05fe9d0ce08a1ce466ba28f90a3324b237","tarball":"https://registry.npmjs.org/@2008muyu/pi-ui-prompt-dialog/-/pi-ui-prompt-dialog-0.1.2.tgz","fileCount":6,"unpackedSize":34774,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCFjRtxse+Y4Bf2tlLxzWMuAsmMfw+U63/3BOGB1XW55QIgfOmE8uTAAhCWhky1NxjUkPBl5yV5aHA4q1qVEGPSMrc="}]},"_npmUser":{"name":"2008","email":"506634967@qq.com"},"directories":{},"maintainers":[{"name":"2008","email":"506634967@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-ui-prompt-dialog_0.1.2_1780579078319_0.8580986146007272"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-04T12:27:51.347Z","modified":"2026-06-04T13:17:58.583Z","0.1.0":"2026-06-04T12:27:51.708Z","0.1.1":"2026-06-04T12:32:12.239Z","0.1.2":"2026-06-04T13:17:58.452Z"},"bugs":{"url":"https://github.com/2008muyu/pi-ui-prompt-dialog/issues"},"author":{"name":"2008muyu"},"license":"MIT","homepage":"https://github.com/2008muyu/pi-ui-prompt-dialog#readme","keywords":["pi-package","pi-extension","pi-ui","dialog","prompt","tui","terminal-ui"],"repository":{"type":"git","url":"git+https://github.com/2008muyu/pi-ui-prompt-dialog.git"},"description":"A customizable TUI prompt dialog for pi extensions: inline menu + text input in a single overlay","maintainers":[{"name":"2008","email":"506634967@qq.com"}],"readme":"# pi-ui-prompt-dialog\n\nA customizable TUI prompt dialog for [pi coding agent](https://pi.dev) extensions.  \n**Inline menu + text input in a single overlay** — no more two-step \"select then input\" dialogs.\n\n## Quick Start\n\n```bash\npi install npm:@2008muyu/pi-ui-prompt-dialog\n```\n\n```ts\nimport { showPromptDialog } from \"@2008muyu/pi-ui-prompt-dialog\";\n\nconst result = await showPromptDialog(ctx, {\n  title: \"Plan 模式拦截了此操作\",\n  description: \"agent 想跑：npm install lodash\",\n  actions: [\n    { id: \"exit\", label: \"退出并执行\", default: true },\n    { id: \"cancel\", label: \"取消\" },\n  ],\n  input: { label: \"补充指令\", placeholder: \"想让我怎么做？\" },\n});\n\nif (!result) {\n  // Esc pressed\n} else if (result.type === \"action\") {\n  // result.action === \"exit\" | \"cancel\"\n} else {\n  // result.type === \"input\", result.value is the user's text\n}\n```\n\n## Usage Patterns\n\n### Actions only (no input)\n\n```ts\nconst result = await showPromptDialog(ctx, {\n  title: \"选择操作\",\n  actions: [\n    { id: \"open\", label: \"打开文件\", default: true },\n    { id: \"search\", label: \"搜索内容\" },\n    { id: \"cancel\", label: \"取消\" },\n  ],\n});\n```\n\n### Pure input (single submit button)\n\n```ts\nconst result = await showPromptDialog(ctx, {\n  title: \"输入项目名\",\n  description: \"请输入一个 kebab-case 名称\",\n  actions: [{ id: \"submit\", label: \"提交\", default: true }],\n  input: { label: \"名称\", placeholder: \"my-project\" },\n});\n```\n\n## API\n\n### `showPromptDialog<TAction>(ctx, options) => Promise<PromptDialogResult<TAction>>`\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `ctx` | `ExtensionContext` | Pi extension context |\n| `options.title` | `string` | Dialog title |\n| `options.description` | `string` (optional) | Context text (shown in muted style) |\n| `options.actions` | `PromptAction[]` | 1–10 action items |\n| `options.actions[].id` | `TAction` | Unique identifier |\n| `options.actions[].label` | `string` | Display label |\n| `options.actions[].default` | `boolean` | Default (Enter key) action — max 1 |\n| `options.input` | `PromptInput` (optional) | Inline input field configuration |\n| `options.input.label` | `string` | Label shown before input |\n| `options.input.placeholder` | `string` (optional) | Placeholder when empty |\n\n### Return value\n\n```ts\ntype PromptDialogResult<TAction extends string> =\n  | { type: \"action\"; action: TAction }  // User selected an action\n  | { type: \"input\"; value: string }      // User typed text\n  | undefined;                            // Esc / cancelled\n```\n\n### Exported types\n\n```ts\nimport {\n  showPromptDialog,\n  type PromptAction,\n  type PromptInput,\n  type PromptDialogOptions,\n  type PromptDialogResult,\n} from \"@2008muyu/pi-ui-prompt-dialog\";\n```\n\n## Keyboard Controls\n\n| Key | Action |\n|-----|--------|\n| `↑` `↓` | Navigate actions / input row |\n| `Tab` / `→` on input row | Enter input mode |\n| `←` `→` (in input) | Move cursor |\n| `Backspace` (in input) | Delete character |\n| `↑` / `Esc` (in input) | Exit input mode |\n| `Enter` | Submit (action or input) |\n| `Esc` | Cancel dialog |\n\n## Limits\n\n- Max 10 actions\n- Single-line input only (no multi-line)\n- No scrolling (if terminal is too narrow, content is clipped)\n- No custom theming (uses pi's built-in theme colors)\n\n## License\n\nMIT\n","readmeFilename":"README.md"}