P1 deep-dive: platform, security, subagents, skills, profile + installer fix

PLATFORM (gyandoot-platform):
- Telegram adapter: Long-polling, sendMessage, sendDocument, chat actions
- Discord adapter: REST polling, Bearer auth, channel discovery
- Webhook adapter: Hyper v1 HTTP server, HMAC-SHA256 verification
- CLI UX: Robot head banner, spinner, confirm prompts, colored output

SECURITY (gyandoot-security):
- CredentialVault: AES-256-GCM encrypted per-key files in ~/.gyandoot/vault/
- Sanitizer: PII redaction (email, phone, API keys, IPs), control char stripping
- ThreatDetector: Prompt injection, jailbreak, exfiltration detection with severity

SUBAGENTS (gyandoot-subagents):
- SubAgentWorker: Isolated agent loop with tool filtering and workdir
- SubAgentManager: Bounded concurrency via tokio::Semaphore
- Full lifecycle tracking and result collection

SKILLS (gyandoot-skills):
- SkillsManager: scan, load, inject_skills with YAML frontmatter parsing
- Preprocessor:  template resolution
- SkillBundle: JSON bundle serialization

PROFILE (gyandoot-profile):
- Profile struct with builder and validation
- ConfigResolver: env > symlink > profile > default chain
- ProfileManager: create, list, switch, delete, CRUD with real filesystem ops

INSTALLER FIX: Fixed camofox-browser directory escaping bug that caused
'could not find Cargo.toml' on macOS. Always CD back to project root.
This commit is contained in:
2026-06-11 21:18:42 +05:30
parent 54d8ca3774
commit dd21654555
21 changed files with 6738 additions and 761 deletions

View File

@@ -38,11 +38,13 @@ 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"] }
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls", "multipart"] }
uuid = { version = "1", features = ["v4", "serde"] }
chrono = { version = "0.4", features = ["serde"] }
async-trait = "0.1"
dirs = "6"
serde_yaml = "0.9"
tempfile = "3"
rand = "0.8"
sha2 = "0.10"
hmac = "0.12"
@@ -51,6 +53,11 @@ base64 = "0.22"
tokio-stream = "0.1"
futures = "0.3"
toml = "0.8"
hyper = { version = "1", features = ["server", "http1"] }
hex = "0.4"
atty = "0.2"
http-body-util = "0.1"
hyper-util = { version = "0.1", features = ["server", "http1"] }
[dependencies]
gyandoot-core = { path = "crates/gyandoot-core" }