chore(conductor): Add new track 'Gemini CLI Headless Integration'
This commit is contained in:
45
conductor/tracks/gemini_cli_headless_20260224/spec.md
Normal file
45
conductor/tracks/gemini_cli_headless_20260224/spec.md
Normal file
@@ -0,0 +1,45 @@
|
||||
# Specification: Gemini CLI Headless Integration
|
||||
|
||||
## Overview
|
||||
This track integrates the `gemini` CLI as a headless backend provider for Manual Slop. This allows users to leverage their Gemini subscription and the CLI's advanced features (e.g., specialized sub-agents like `codebase_investigator`, structured JSON streaming, and robust session management) directly within the Manual Slop GUI.
|
||||
|
||||
## Goals
|
||||
- Add "Gemini CLI" as a selectable AI provider in Manual Slop.
|
||||
- Support both persistent interactive sessions and one-off task-specific delegation (e.g., running `gemini investigate`).
|
||||
- Implement a secure "BeforeTool" hook to ensure all CLI-initiated tool calls are intercepted and confirmed via the Manual Slop GUI.
|
||||
- Capture and display the CLI's visually enriched output (via JSONL stream) within the existing discussion history.
|
||||
|
||||
## Functional Requirements
|
||||
|
||||
### 1. Gemini CLI Provider Adapter
|
||||
- **Implementation**: Create a `GeminiCliAdapter` class (or extend `ai_client.py`) that wraps the `gemini` CLI subprocess.
|
||||
- **Communication**: Use `--output-format stream-json` to receive real-time updates (text chunks, tool calls, status).
|
||||
- **Session Management**: Support session persistence by tracking the session ID and passing it to subsequent CLI calls.
|
||||
- **Authentication**:
|
||||
- Provide a "Login to Gemini CLI" action in the GUI that triggers `gemini login`.
|
||||
- Support passing an API key via environment variables if configured in `manual_slop.toml`.
|
||||
|
||||
### 2. GUI Intercepted Tool Execution
|
||||
- **Mechanism**: Use the Gemini CLI's `BeforeTool` hook.
|
||||
- **Hook Helper**: A small Python script `scripts/cli_tool_bridge.py` will be registered as the `BeforeTool` hook.
|
||||
- **IPC**: This bridge script will communicate with Manual Slop's `HookServer` (extending it to support synchronous "ask" requests).
|
||||
- **Confirmation**: When a tool is requested, the bridge blocks until the user confirms/denies the action in the GUI, returning the decision as JSON to the CLI.
|
||||
|
||||
### 3. Visual & Telemetry Integration
|
||||
- **Rich Output**: Parse the `stream-json` events to display markdown content and tool status in the GUI.
|
||||
- **Telemetry**: Extract and display token usage and latency metrics provided by the CLI's `result` event.
|
||||
|
||||
## Non-Functional Requirements
|
||||
- **Performance**: The subprocess bridge should introduce minimal latency (<100ms overhead for communication).
|
||||
- **Reliability**: Gracefully handle CLI crashes or timeouts by reporting errors in the GUI and allowing session resets.
|
||||
|
||||
## Acceptance Criteria
|
||||
- [ ] User can select "Gemini CLI" in the Provider dropdown.
|
||||
- [ ] User can successfully send messages and receive streamed responses from the CLI.
|
||||
- [ ] Any tool call (PowerShell/MCP) initiated by the CLI triggers the standard Manual Slop confirmation modal.
|
||||
- [ ] Tools only execute after user approval; rejection correctly notifies the CLI agent.
|
||||
- [ ] Session history is maintained correctly across multiple turns when using the CLI provider.
|
||||
|
||||
## Out of Scope
|
||||
- Full terminal emulation (ANSI color support) within the GUI; the focus is on structured text and data.
|
||||
- Migrating existing raw `client_api` sessions to CLI sessions.
|
||||
Reference in New Issue
Block a user