Files
gyandoot-v2/Cargo.toml
Tara Menon 54d8ca3774 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.
2026-06-11 20:53:38 +05:30

76 lines
2.2 KiB
TOML

[package]
name = "gyandoot"
version = "2.0.0"
edition = "2021"
license = "MIT"
description = "GyanDoot v2.0 — AI Agent Platform"
[workspace]
resolver = "2"
members = [
"crates/gyandoot-core",
"crates/gyandoot-agent",
"crates/gyandoot-providers",
"crates/gyandoot-memory",
"crates/gyandoot-platform",
"crates/gyandoot-security",
"crates/gyandoot-kanban",
"crates/gyandoot-subagents",
"crates/gyandoot-skills",
"crates/gyandoot-profile",
"crates/gyandoot-gateway",
"crates/gyandoot-browser",
"crates/gyandoot-tui",
]
[workspace.package]
version = "2.0.0"
edition = "2021"
license = "MIT"
repository = "https://github.com/nousresearch/gyandoot-v2"
[workspace.dependencies]
tokio = { version = "1", features = ["full"] }
serde = { version = "1", features = ["derive", "rc"] }
serde_json = "1"
clap = { version = "4", features = ["derive", "env"] }
thiserror = "2"
anyhow = "1"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] }
uuid = { version = "1", features = ["v4", "serde"] }
chrono = { version = "0.4", features = ["serde"] }
async-trait = "0.1"
dirs = "6"
rand = "0.8"
sha2 = "0.10"
hmac = "0.12"
aes-gcm = "0.10"
base64 = "0.22"
tokio-stream = "0.1"
futures = "0.3"
toml = "0.8"
[dependencies]
gyandoot-core = { path = "crates/gyandoot-core" }
gyandoot-agent = { path = "crates/gyandoot-agent" }
gyandoot-providers = { path = "crates/gyandoot-providers" }
gyandoot-memory = { path = "crates/gyandoot-memory" }
gyandoot-platform = { path = "crates/gyandoot-platform" }
gyandoot-security = { path = "crates/gyandoot-security" }
gyandoot-kanban = { path = "crates/gyandoot-kanban" }
gyandoot-subagents = { path = "crates/gyandoot-subagents" }
gyandoot-skills = { path = "crates/gyandoot-skills" }
gyandoot-profile = { path = "crates/gyandoot-profile" }
gyandoot-gateway = { path = "crates/gyandoot-gateway" }
gyandoot-browser = { path = "crates/gyandoot-browser" }
gyandoot-tui = { path = "crates/gyandoot-tui" }
tokio.workspace = true
serde.workspace = true
serde_json.workspace = true
clap.workspace = true
anyhow.workspace = true
tracing.workspace = true
tracing-subscriber.workspace = true
dirs.workspace = true