Files
gyandoot-v2/Cargo.toml
Tara Menon 605747023b Add camofox-browser integration: gyandoot-browser crate + agent tools
New crate: crates/gyandoot-browser/
  - client.rs: Full REST client for camofox-browser API (health, tabs,
    navigation, snapshots, click/type/scroll, search macros)
  - macros.rs: 14 SearchMacro enum (Google, YouTube, Amazon, Reddit,
    Wikipedia, Twitter, Yelp, Spotify, Netflix, LinkedIn, Instagram,
    TikTok, Twitch) with parse/display
  - snapshot.rs: PageSnapshot, PageLinks, NavigationResult, HealthResponse
  - session.rs: BrowserSession, SessionManager with idle cleanup

New module: crates/gyandoot-agent/src/browser_tools.rs
  - WebSearchTool: Search the web using anti-detection browser
  - WebBrowseTool: Browse URLs, click, type, scroll with element refs
  - register_browser_tools(): Wire both tools into ToolExecutor

CLI: Added
                                 o
                                 |
               - - - - - -     .---.     - - - - - -
          - - - - - - - - -  [ ^   ^ ]  - - - - - - - - -
             - - - - - - -   |  ___  |   - - - - - - -
                              `-----'
           ____ __   __  ___   _   _  ____   ___   ___  _____
          / ___|\ \ / / / _ \ | \ | ||  _ \ / _ \ / _ \|_   _|
         | |  _  \ V / / /_\ \|  \| || | | | | | | | | | | |
         | |_| |  | |  |  _  || |\  || |_| | |_| | |_| | | |
          \____/  |_|  |_| |_||_| \_||____/ \___/ \___/  |_|

        o - - - - - - -  knowledge. delivered. - - - - - - - o

Unknown command: browser
Run 'gyandoot help' for usage. subcommand with health/search/browse actions

Installer: Updated install.sh with camofox-browser cloning, Node.js
detection, npm dependency install, and systemd service setup

Camofox-browser running at http://localhost:9377 (Docker, verified working)

Workspace: 12 crates + CLI binary — cargo check passes with 0 errors.
2026-06-11 20:23:35 +05:30

75 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",
]
edition = "2021"
[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" }
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