Metadata-Version: 2.4
Name: boris-tui
Version: 0.1.1
Summary: Boris × Dave — Interactive Agent Orchestrator TUI
Author: Dave
License: MIT
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: textual>=1.0.0
Requires-Dist: rich>=13.0.0
Requires-Dist: borisxdave>=0.3.0
Requires-Dist: daveloop>=1.5.0
Requires-Dist: council-cli>=0.1.0
Provides-Extra: test
Requires-Dist: pytest>=7.0; extra == "test"
Requires-Dist: pytest-asyncio>=0.23; extra == "test"
Requires-Dist: pytest-cov>=4.0; extra == "test"
Requires-Dist: textual[dev]>=1.0.0; extra == "test"
Dynamic: requires-python

# Boris TUI

Interactive terminal UI for orchestrating AI coding agents. Built with [Textual](https://github.com/Textualize/textual).

Boris TUI provides a unified interface for three agent systems:

- **Boris** — Autonomous project orchestrator. Breaks large tasks into milestones and delegates execution to DaveLoop. Supports sequential, turbo, and swarm modes.
- **DaveLoop** — Self-healing debug loop. Keeps iterating on a bug or task until it's resolved. Supports multiple concurrent instances.
- **Council** — Two-agent debate tool. Launches Alpha (analytical) and Beta (creative/contrarian) agents to debate, brainstorm, or research a topic.

## Installation

```bash
pip install boris-tui
```

Requires Python 3.10+.

### Dependencies

- [borisxdave](https://pypi.org/project/borisxdave/) — Boris orchestrator backend
- [daveloop](https://pypi.org/project/daveloop/) — DaveLoop debug agent backend
- [council-cli](https://pypi.org/project/council-cli/) — Council debate backend
- [textual](https://github.com/Textualize/textual) — TUI framework
- [rich](https://github.com/Textualize/rich) — Terminal rendering

## Usage

```bash
boris-tui
```

This opens the TUI. Use the tab bar or `Ctrl+T` to switch between Boris, DaveLoop, and Council.

### Keyboard Shortcuts

| Key | Action |
|---|---|
| `Ctrl+T` | Cycle between agents |
| `Ctrl+D` | Set working directory |
| `Ctrl+R` | View run history |
| `Ctrl+X` | Stop running agent |
| `Ctrl+A` | Attach file |
| `Ctrl+U` | Drop mode (drag-and-drop files) |
| `Ctrl+M` | Toggle metaprompt refinement |
| `Ctrl+Q` | Quit |
| `Escape` | Pause / Resume agent |
| `Shift+Up/Down` | Scroll output |
| `PgUp/PgDn` | Page scroll |
| `Arrow Up/Down` | Input history |

### Slash Commands

| Command | Description |
|---|---|
| `/dir <path>` | Set working directory |
| `/attach <file>` | Attach a file to the next prompt |
| `/clear-files` | Remove all attachments |
| `/help` | Show help |
| `/quit` | Exit |

### Boris Modes

- **Sequential** — Milestones run one at a time (default)
- **Turbo** — Parallel milestone execution
- **Swarm** — Maximum parallelism with cross-agent coordination

### DaveLoop Multi-Instance

DaveLoop supports multiple concurrent instances. Press `+` or click the `+ new` button to spawn a new instance. Use `←` / `→` to switch between them. Each instance has its own log and runner.

### Metaprompt

Toggle with `Ctrl+M`. When enabled, your input is refined into a structured prompt before being sent to the agent. Useful for getting better results from ambiguous descriptions.

### File Attachments

Attach files via `Ctrl+A` (file picker), `/attach <path>`, or drag-and-drop (`Ctrl+U` to enable drop mode). Attached files are included as context in the agent prompt.

## Development

```bash
git clone https://github.com/your-org/boris-tui.git
cd boris-tui
pip install -e ".[test]"
pytest
```

## License

MIT
