Initial public release of Warp.
Repo-Sync-Origin: warpdotdev/warp-internal@12af1d983b
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
# CLI Agent Rich Input: /prompts Technical Spec
|
||||
|
||||
## Summary
|
||||
This spec covers enabling `/prompts` (saved prompts) in the CLI agent rich input composer. The existing prompt insertion flow works as-is — no code changes are needed beyond ensuring the prompts menu is accessible when CLI agent input is active.
|
||||
|
||||
## Relevant Code
|
||||
- `app/src/terminal/input/prompts/view.rs` — `InlinePromptsMenuView`
|
||||
- `app/src/terminal/input.rs` — `handle_inline_prompts_menu_event()`, `show_workflows_info_box_on_workflow_selection()`
|
||||
|
||||
## Current State
|
||||
The prompts menu (`InlinePromptsMenuView`) and the workflow info box insertion flow already exist in the normal Warp input. When a prompt is selected, `handle_inline_prompts_menu_event()` calls `show_workflows_info_box_on_workflow_selection()`, which inserts the workflow template into the editor with argument highlighting and the shift-tab UX.
|
||||
|
||||
The CLI agent rich input reuses the same `Input` view and editor. On submit, `input_enter()` detects `CLIAgentSessionsModel::is_input_open()` and emits `Event::SubmitCLIAgentInput` with the raw buffer text, which is written to the PTY.
|
||||
|
||||
## Proposed Changes
|
||||
|
||||
### 1. Allowlist the `/prompts` static command in CLI agent input
|
||||
|
||||
The `/prompts` static command is currently filtered out when CLI agent rich input is active (along with all other static slash commands). It needs to be **allowlisted** in `SlashCommandDataSource::recompute_active_commands()` so users can open the prompts browser from the slash menu. This is the same allowlisting mechanism used for `/skills` in the skills spec.
|
||||
|
||||
### 2. Prompt insertion: no changes needed
|
||||
|
||||
The existing `handle_inline_prompts_menu_event()` flow works as-is in CLI agent input mode — the editor is the same, and on submit the buffer text (with filled-in arguments) goes through `SubmitCLIAgentInput` → PTY write as plain text. The shift-tab argument editing is useful for CLI agent prompts too.
|
||||
|
||||
The prompts menu is already rendered through the `suggestions_mode_model` system, which works in CLI agent mode.
|
||||
|
||||
## End-to-End Flow
|
||||
1. User opens the prompts menu in CLI agent rich input (via `/prompts` or the slash menu).
|
||||
2. User selects a saved prompt via click or Enter. This is a **menu selection** — `input_enter()` checks `is_prompts_menu()` first and routes to `accept_selected_item()`, not the PTY submission path. The prompt template is inserted into the editor buffer with argument highlighting.
|
||||
3. The prompts menu closes. The user is now in the normal editor with the prompt content in the buffer.
|
||||
4. User edits arguments via shift-tab if needed.
|
||||
5. User presses Enter again → this time no menu is open, so `input_enter()` takes the CLI agent submission path and writes the buffer text to the PTY.
|
||||
|
||||
## Testing and Validation
|
||||
- Verify selecting a saved prompt inserts the prompt text with argument highlighting.
|
||||
- Verify shift-tab argument editing works in CLI agent rich input.
|
||||
- Verify the prompt content submits correctly to the PTY.
|
||||
- Verify no regressions in normal Warp agent input (prompts still work as before).
|
||||
Reference in New Issue
Block a user