P0 deep-dive: core, providers, agent, memory, TUI, setup wizard

DEEP DIVE — Agent Loop (gyandoot-agent):
- Real conversation loop with interactive (run()) and non-interactive
  (run_conversation()) modes
- Retry logic with exponential backoff and error classification
  (RateLimit, Auth, Timeout, ServerError, ContextOverflow)
- Context window management — token estimation, 75% threshold compression
- 7 built-in tools: Read, Write, Edit, Bash, Grep, Find, Ls
- BashTool with destructive-command security blocks
- ContextCompressor — prune tool results, summarize middle messages

DEEP DIVE — Memory (gyandoot-memory):
- Real MemPalace with ~/.gyandoot/palace/wings/<wing>/ directory tree
- Daily transcript files (YYYY-MM-DD_transcript.md) with append-only format
- L0/L1 identity persistence (< 157 tokens for L0)
- Session digest to drawer.md
- File persistence support for transcripts and identity store

DEEP DIVE — Core (gyandoot-core):
- GyandootConfig with TOML deserialization for all sections
- ConfigLoader with env > profile > file > default chain
- Rich types: Message, ToolCall, ToolResult, SessionId
- Comprehensive error types with thiserror derive

DEEP DIVE — Providers (gyandoot-providers):
- Provider trait with chat/chat_stream/models
- OpenAI provider with streaming SSE and function calling
- Anthropic provider with Messages API + tool use
- Ollama provider with merge_system/no_tools auto-detect
- SseParser, StreamEvent, TokenStream for SSE parsing
- ProviderFactory for creation from config

NEW — TUI crate (gyandoot-tui):
- Banner: Kapil-approved robot head ASCII art with ANSI colors
- Setup wizard: 7 providers, interactive config, connection test
- Terminal helpers: spinner, confirm, text input, selection menu
- Ratatui TUI: keyboard input, commands, status display

All 12 crates + CLI binary compile with 0 errors.
This commit is contained in:
2026-06-11 20:53:38 +05:30
parent 03c103061a
commit 54d8ca3774
29 changed files with 7211 additions and 755 deletions

44
AGENTS.md Normal file
View File

@@ -0,0 +1,44 @@
# GyanDoot Agent Development Guide
## Overview
This guide documents conventions for developing and extending GyanDoot CLI/TUI tools.
## gyandoot-tui Conventions
### Module Structure
- `src/lib.rs` — Re-exports all public API
- `src/banner.rs` — ASCII art banner display (primary robot head + fallback box)
- `src/setup.rs` — Interactive setup wizard for provider configuration
- `src/terminal.rs` — Terminal helpers (spinner, confirm, text input, selection menu, status)
- `src/tui.rs` — Ratatui-based TUI main loop with event handling
### Banner
- Primary banner uses Kapil's approved robot head ASCII art with 4-bit ANSI colors
- Fallback banner is a compact box used in pipe mode
- `print_banner()` auto-detects pipe mode via `atty`
- `banner_plain()` returns uncolored text for TUI display
### Setup Wizard
- Flow: Banner → Provider Selection → Per-provider Config → Summary → Connection Test → Save
- Uses crossterm for raw input (not dialoguer)
- Provider auto-detect: localhost Ollama sets `merge_system=true`, `no_tools=true`
- Config saved to `~/.config/gyandoot/config.toml`
### Terminal Helpers
- `progress_spinner()` — Runs a closure with a spinner animation
- `confirm_prompt()` — y/n question with optional default
- `text_input()` — Raw-mode text input with backspace/enter/esc support
- `selection_menu()` — Numbered menu returning index or None
- `show_status()` — Colored status display (success/error/warning/info)
### TUI
- Three modes: Normal, Input, Command
- Keyboard shortcuts: `q`/Esc to quit, `i` for input mode, `:` or `/` for commands
- Commands: `/help`, `/clear`, `/banner`, `/quit`, `/status`
- Uses ratatui with crossterm backend
- Enters/leaves alternate screen on start/exit
### CLI Integration
- `gyandoot setup` — Runs the setup wizard (non-async, terminal I/O)
- `gyandoot tui` — Launches the ratatui TUI interface