feat: handle new Elicitation and ElicitationResult hook events #223

Closed
opened 2026-03-20 08:25:34 -07:00 by hikari · 0 comments
Owner

Background

CLI v2.1.76 introduced MCP elicitation support. MCP servers can now request structured input from the user mid-task via an interactive dialog. Two new hook types were added to support this:

  • Elicitation — fires when an MCP server requests structured input
  • ElicitationResult — fires after the user responds to an elicitation request

Why It Matters for Hikari Desktop

Hikari Desktop intercepts hook events to drive the character state, the permission modal, and the task display. If an Elicitation event arrives and we do not handle it, the user will see no UI feedback — the session will appear stuck because the MCP server is waiting for input that Hikari Desktop has silently swallowed.

At minimum we need to:

  1. Parse Elicitation events in wsl_bridge.rs and emit them to the frontend
  2. Display a new modal (similar to UserQuestionModal) that lets the user fill in the structured fields and submit a response back via stdin
  3. Switch the character to the permission state whilst waiting for the user to respond
  4. Parse ElicitationResult in wsl_bridge.rs to reset character state once the dialog is dismissed

Acceptance Criteria

  • Elicitation event parsed and emitted as a new Tauri event
  • Frontend modal rendered with the structured fields from the elicitation request
  • User response serialised and written back to stdin
  • ElicitationResult event handled to clear the modal and reset character state
  • Tests for the new event types in types.rs and the Svelte component

This issue was created with help from Hikari~ 🌸

## Background CLI v2.1.76 introduced MCP elicitation support. MCP servers can now request structured input from the user mid-task via an interactive dialog. Two new hook types were added to support this: - `Elicitation` — fires when an MCP server requests structured input - `ElicitationResult` — fires after the user responds to an elicitation request ## Why It Matters for Hikari Desktop Hikari Desktop intercepts hook events to drive the character state, the permission modal, and the task display. If an `Elicitation` event arrives and we do not handle it, the user will see no UI feedback — the session will appear stuck because the MCP server is waiting for input that Hikari Desktop has silently swallowed. At minimum we need to: 1. Parse `Elicitation` events in `wsl_bridge.rs` and emit them to the frontend 2. Display a new modal (similar to `UserQuestionModal`) that lets the user fill in the structured fields and submit a response back via `stdin` 3. Switch the character to the `permission` state whilst waiting for the user to respond 4. Parse `ElicitationResult` in `wsl_bridge.rs` to reset character state once the dialog is dismissed ## Acceptance Criteria - [ ] `Elicitation` event parsed and emitted as a new Tauri event - [ ] Frontend modal rendered with the structured fields from the elicitation request - [ ] User response serialised and written back to `stdin` - [ ] `ElicitationResult` event handled to clear the modal and reset character state - [ ] Tests for the new event types in `types.rs` and the Svelte component ✨ This issue was created with help from Hikari~ 🌸
naomi closed this issue 2026-03-23 14:28:09 -07:00
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: nhcarrigan/hikari-desktop#223