- Introduced a new hive-mind architecture that allows the Core Intelligence to issue directives to anonymous processing nodes. - Each node executes its directive and merges output into a collective state, visible to all nodes in real-time. - Added support for dynamic cognitive cycles, enabling flexible task management. - Implemented documentation generation for hive-mind runs, ensuring a durable record of decisions and actions. - Refactored existing company pipeline tools to align with the new hive-mind structure, replacing division-specific prompts with a more generalized approach. - Updated workflow rendering to accommodate hive-mind nodes and their system-assigned designations. - Enhanced error handling and validation for cognitive cycle plans.
3.4 KiB
3.4 KiB
Backend / Service Layer
AI Provider
src/service/provider.rs (310 lines)
LlmClient::new(api_key, model, base_url)— constructs blocking reqwest clientchat_with_tools()— non-streaming with tool definitionschat_stream()— SSE streaming, returnsSseParseryieldingStreamEvent- Retry logic: up to 3 attempts on transient errors, exponential backoff
OAuth
src/service/oauth/manager.rs (113 lines) + loopback.rs + pkce.rs
- PKCE flow:
CodeVerifier→ challenge → browser auth → loopback server → token exchange - Configurable via
app_config.jsonprovider definitions (auth URL, token URL, scopes)
IPC / Daemon
src/ipc/ (7 files, ~350 lines total)
- Unix domain socket, length-prefixed JSON frames
- Daemon sends
DaemonFrame(state payload, stream tokens, system notes) - Clients send
ClientRequest(key presses, resize, submit, scroll) - State sync uses full-state push from daemon to client after each action
Workflow Engine
src/app/workflow/engine.rs (648 lines) + script.rs
- Inline JS-style DSL executed by a lightweight runtime
agent(),parallel(),pipeline(),phase(),log()— spawns sub-agents- Max concurrency configurable via
workflow_max_concurrencysetting - Hive-mind orchestrator in
hive_mind.rs: Core Intelligence compiles aCognitiveCyclePlanper task — cycle count and nodes-per-cycle are decided fresh each time based on what the task actually needs
Sub-Agent System
src/app/subagent/ (6 files: spawn.rs, engine.rs, context.rs, event.rs, division.rs, auto.rs, ~450 lines total)
run_subagent()— spawns independent agent with its own tool set and context- Communicates via
mpsc<SubagentEvent>channel (tool calls, results, completion) - Uses
LlmClient(same as main agent) with tool-use API - Auto-healing: on build/test failure, spawns auto-fix sub-agent
- Node access tiers (
division.rs'stool_scopemodule):read,write,full— granted per node by the Core Intelligence based on what its directive needs
MCP Client
src/app/mcp/manager.rs (441+ lines)
- Stdio transport: spawns child process, JSON-RPC via stdin/stdout
- HTTP transport: streaming HTTP with JSON-RPC
- Dynamic tool list refresh and error recovery
- Persistent child handle for stdio (reuses connection across calls)
Self-Review
src/app/review/mod.rs (495 lines)
- Post-tool execution quality check against learned lessons
- Invokes
run_subagent()with reviewer prompt - Staleness detection: skips review after N consecutive empty results
- Three review types: code quality, architecture, security
Background Bash
src/app/bgbash/ (2 files: job.rs, control.rs)
spawn_bash_job()— runssh -cin a thread, collects stdout line-by-line- Channels: output via
mpsc<String>, PID viampsc<u32> - Killable via PID (SIGTERM)
- Output buffering capped at 10,000 lines to prevent memory issues
Gate Guard / Harness
src/app/harness.rs (495 lines)
Harness::gate_tool_call()— verdict-based tool gating (allow/block)- Path traversal, credential read, and destructive command detection
- Pattern detection for stub code, denial language, and assumptions in write/edit content
- Reason validation for mutating tools (minimum 8 characters, rejects generic non-answers)
- Includes 8 unit tests for verdict parsing formats