mirror of
https://bitbucket.org/siakitem/my-pi.git
synced 2026-08-28 08:35:57 +00:00
61 lines
2.0 KiB
Markdown
61 lines
2.0 KiB
Markdown
# pi-ask-user
|
|
|
|
A locally maintained Pi extension that consolidates the upstream `question.ts` and `questionnaire.ts` examples into one model-initiated tool. It intentionally does not include the `/qna` command.
|
|
|
|
## Tool
|
|
|
|
The extension registers `ask_user_question`. The model can present one to eight questions in one sequential TUI interaction:
|
|
|
|
- `select`: one to eight stable `{ value, label, description? }` choices, with an optional free-form choice;
|
|
- `text`: a free-form Editor answer;
|
|
- `required: false`: lets the user explicitly skip the question;
|
|
- multiple questions: progress tabs plus a final review page.
|
|
|
|
The model should call the tool only when a missing decision, preference, or clarification is needed to continue. It should not repeat questions already answered in the user's direct messages.
|
|
|
|
## Controls
|
|
|
|
- `↑` / `↓`: move through choices;
|
|
- `Enter`: select, edit, or submit;
|
|
- `Tab`, `Shift+Tab`, `←`, `→`: move between questions and review;
|
|
- `Esc`: leave text entry, or cancel from a question/review page.
|
|
|
|
The outer component propagates focus to the embedded Editor for IME cursor positioning.
|
|
|
|
## Result contract
|
|
|
|
Successful results include readable text and structured `details`:
|
|
|
|
```json
|
|
{
|
|
"version": 1,
|
|
"cancelled": false,
|
|
"questions": [],
|
|
"answers": [
|
|
{
|
|
"id": "language",
|
|
"question": "Which language should be used?",
|
|
"type": "select",
|
|
"answer": "TypeScript",
|
|
"value": "typescript",
|
|
"label": "TypeScript",
|
|
"custom": false,
|
|
"skipped": false
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
The tool name and the `question` / `answer` fields intentionally match `pi-permission-auto-review`'s trusted structured user-interaction envelope. Cancelled results are never treated as authorization evidence.
|
|
|
|
The tool requires Pi's interactive TUI mode. RPC, JSON, and print modes receive a tool error rather than an invented answer.
|
|
|
|
## Development
|
|
|
|
```sh
|
|
npm test
|
|
npm run check
|
|
```
|
|
|
|
See `UPSTREAM.md` for the imported reference snapshot and local differences.
|