trigger_daemon_start now captures stdout/stderr and exit code instead
of silently redirecting to a log file. On failure it prints the actual
error, making it obvious what went wrong (npm install issue, node
version mismatch, etc.).
Adds [browser].node_path config option so camoufox-browser can use
an explicit npx path (essential for nvm/fnm/asdf users).
Resolution order (cross-platform):
1. config.browser.node_path — explicit user override
2. 'npx.cmd' on Windows, 'npx' on Linux/macOS — PATH lookup
Changes:
- BrowserSection config: added node_path: Option<String>
- AgentConfig: now carries browser section (was dropped in From<GyandootConfig>)
- browser_manager::init_browser(node_path): accepts optional path
- All call sites updated (run(), init_session(), subagents, tests)
- Error messages now hint at browser.node_path config
Two fixes for the TUI:
1. **Raw LLM responses** — was stateless, creating
fresh messages every turn. Added +
methods that accumulate conversation history, inject identity, load
past memory, run browser init, and compress context — identical to
the interactive loop but designed for external callers.
2. **Banner flash** — removed call that fired to stdout
*before* TUI entered alternate screen. TUI already shows the robot
head via as initial chat content.
Also added getter and field to AgentLoop.
1. /quit and /help commands restored:
- /quit: exits the interactive loop
- /help: shows formatted help box with available commands & tips
- Unknown commands get a friendly error pointing to /help
- Slash commands intercepted before LLM processing (no token waste)
2. Zero warnings across entire workspace (13 files fixed):
- Fixed ambiguous glob re-exports in gyandoot-core
- Added #[allow(dead_code)] on intentional dead fields
- Fixed unused imports, variables, and macros
- Fixed unused assignments in subagents
- cleaned up service.rs, profile, kanban warnings
install.sh now produces a completely clean build with zero warnings.
Fixes the cramped terminal output. Two changes:
1. display_output: trailing \n after G> text for spacing
2. read_input: leading \n before » prompt + 30ms delay after spinner clear
to prevent \r overlap with prompt character
Before: G> response...» Hi (no gap, overlapping)
After: G> response...
(blank line)
» Hi (clean, separated)
Three UX improvements for interactive mode:
1. Input prompt: Shows '»' (bold cyan) on stdin before reading user input
2. Output prefix: Agent responses prefixed with 'G>' (bold green)
3. Thinking indicator: Animated spinner on stderr showing 'answering (N.Ns)'
with braille frame characters, auto-clears when response arrives
- Start/stop via tokio::sync::watch channel + tokio::spawn
- Only shows when interactive (atty detection)
- Does not affect gateway/sub-agent modes
Full integration:
- install.sh now installs camoufox-browser via npm (preferred) or Docker
- install.sh creates systemd/launchd auto-start service on Linux/macOS
- New browser_manager.rs — health-check, auto-start, wait-for-ready
- AgentLoop::run() auto-inits Camoufox and registers web_search/web_browse
- System prompt tells LLM to use web_search/web_browse as PRIMARY tools
- Graceful fallback: if Camoufox unavailable, logs warning, uses bash tools
- ToolExecutor is now Arc<Mutex<>> for runtime tool registration
GyanDoot v2 now: install → Camoufox auto-starts → web tools available →
"search NSE India" uses Camoufox with anti-detection 🎯
Three fixes:
1. OllamaProvider now sends tools[] in native /api/chat requests
2. OllamaProvider parses tool_calls from response (OpenAI-compatible
format with function.name, function.arguments)
3. System prompt now lists available tools so LLM knows it can use
bash, curl, read/write files — stops saying "I cannot do that"
- Agent name now falls back to config.name if [identity] section is empty
- Agent role defaults to "AI Assistant built by Gyannetra"
- User name defaults to "the User" if not set
- Removes dependency on identity_setup being completed
- Every session gets identity+memory injected into system prompt
- Added [identity] config section (agent_name, agent_role, user_name,
user_role, setup_complete) to GyandootConfig and AgentConfig
- Agent loop now injects identity into system prompt on startup
- Agent loop injects past verbatim dialogue memory into system prompt
- Added dialogue_append() / dialogue_read() to MemPalace
- Word-by-word, line-by-line verbatim record in dialogue.md
- No compression, no truncation — every message preserved
- Agent loop writes to BOTH daily transcript AND verbatim dialogue
on every turn
- All config paths pass identity through (flat converter, subagents)