mirror of
https://github.com/ruvnet/RuVector.git
synced 2026-05-25 15:03:46 +00:00
SSE Proxy Decoupling (ADR-130): - Fix ruvbrain-sse proxy: proper MCP handshake, session creation, drain polling - Fix internal queue endpoints: session_create keeps receiver, drain returns buffered messages - Add response_queues to AppState for SSE proxy communication - Skip sparsifier for >5M edge graphs (was crashing on 16M edges) - Add SSE_DISABLED/MAX_SSE env vars for configurable connection limits - Route SSE to dedicated mcp.pi.ruv.io subdomain (Cloudflare CNAME) - Serve SSE at root / path on proxy (no /sse needed) - Update all references from pi.ruv.io/sse to mcp.pi.ruv.io - Fix Dockerfile consciousness crate build (feature/version mismatches) Claude Code CLI Source Research (ADR-133): - 19 research documents analyzing Claude Code internals (3000+ lines) - Decompiler script + RVF corpus builder for all major versions - Binary RVF containers for v0.2, v1.0, v2.0, v2.1 (300-2068 vectors each) - Call graphs, class hierarchies, state machines from minified source Integration Strategy (ADR-134): - 6-tier integration plan: WASM MCP, agents, hooks, cache, SDK, plugin - Integration guide with architecture diagrams and performance targets Co-Authored-By: claude-flow <ruv@ruv.net>
5.9 KiB
5.9 KiB
Claude Code CLI: Agent Loop and Execution Flow
Entry Points
CLI Entry
The binary boots through Bun's SEA mechanism into a Commander.js-style CLI:
claude [options] [command] [prompt]
Subcommands (24 registered):
auth,login,logout-- Authenticationconfig(list/show/set/defaults) -- Configuration managementmcp(add-from-claude-desktop, list, serve, status, setup) -- MCP server managementdoctor-- Diagnosticsupdate-- Self-updateagents-- Agent managementmarketplace,plugin-- Plugin/skill managementremote-control,serve-- Remote/SSE modesauto-mode-- Auto permission modesetup-token,xaa-- Auth helperscritique,reset-project-choices,clear-- Misc utilities
VS Code Extension Entry
extension.js registers VS Code commands and creates a WebView panel.
The WebView (webview/index.js) is a React 18.3.1 application that
communicates with the extension host via postMessage.
VS Code commands (21 registered):
claude-vscode.editor.open/openLast/primaryEditor.openclaude-vscode.window.openclaude-vscode.createWorktreeclaude-vscode.insertAtMentionclaude-vscode.focus/blurclaude-vscode.terminal.open.keyboard
Main Loop Architecture
Core Loop Functions
| Function | Purpose |
|---|---|
mainLoop |
Primary conversation loop |
mainLoopModel |
Model selection for current session |
mainLoopModelForSession |
Session-level model override |
mainLoopModelOverride |
CLI/env model override |
mainLoopTokens |
Token tracking for main loop |
processMessagesForTeleportResume |
Handle session teleport/resume |
Execution Flow
1. CLI Parse / VS Code Activation
|
2. Configuration Loading
- User settings (~/.claude/settings.json)
- Project settings (.claude/settings.json, .claude/settings.local.json)
- CLAUDE.md files (auto-discovered up directory tree)
- Environment variables (498+ recognized)
|
3. Authentication
- AnthropicApiKeyAuth (API key from env/helper)
- ConsoleOAuthFlow (Anthropic Console OAuth)
- BedrockClient (AWS Bedrock)
- VertexAI (Google Cloud)
- Foundry (Azure)
|
4. MCP Server Connection
- Read .mcp.json, settings, --mcp-config
- Connect to MCP servers (stdio, SSE, HTTP transports)
- Discover tools via tools/list
|
5. Session Init / Resume
- Create new session or resume existing
- Load conversation history
- Apply CLAUDE.md system prompt
|
6. Main Loop (per turn):
a. Collect user input (interactive) or read prompt (--print)
b. Build message array with system prompt + conversation history
c. Call Anthropic Messages API (streaming)
d. Process response stream:
- Text blocks -> render to terminal/UI
- Thinking blocks -> display if enabled
- tool_use blocks -> queue for execution
e. For each tool_use:
- Check permissions (PreToolUse hooks)
- Execute tool
- Run PostToolUse hooks
- Append tool_result to messages
f. If model stopped with tool_use (not end_turn):
- Loop back to step (c) with updated messages
g. If model stopped with end_turn:
- Display final response
- Wait for next user input
|
7. Context Management
- Track token usage
- Auto-compact when context window fills
- File checkpointing for recovery
|
8. Session End
- Run session-end hooks
- Persist session to disk
- Cleanup MCP connections
Streaming Architecture
The API response is streamed using Server-Sent Events (SSE):
StreamEvent -> StreamEventBuffer -> StreamHandler -> UI Renderer
Key streaming patterns:
StreamFriendlyUIEnabled-- Controls rich terminal renderingStreamInterval-- Configurable update frequencyStreamFinished/StreamFinishing-- Completion states- Partial message chunks available via
--include-partial-messages
Conversation Management
ConversationManager-- Manages conversation stateConversationChain-- Message chain/historyMessageBuffer/MessageBufferTracker-- Buffer managementMessageByUuid-- Message lookupMessageExistInSession-- Deduplication
Slash Commands (39 Built-in)
Interactive commands processed before sending to the API:
| Command | Purpose |
|---|---|
/compact |
Force context compaction |
/clear |
Clear conversation |
/model |
Switch model |
/effort |
Set reasoning effort level |
/fast |
Toggle fast mode |
/permissions |
View/edit permission rules |
/hooks |
View configured hooks |
/mcp |
MCP server status |
/memory |
View/edit auto-memory |
/status |
Session status |
/review-pr |
PR review workflow |
/commit |
Commit workflow |
/init |
Project initialization |
/login / /logout |
Authentication |
/doctor |
Run diagnostics |
/bug |
Report a bug |
/cost |
Show cost information |
/extra-usage |
Usage details |
/feedback |
Submit feedback |
/config |
Configuration |
/skills |
List available skills |
/agents |
Agent management |
/tasks |
Task/subagent list |
/worker |
Background workers |
/branch |
Create feature branch |
/teleport |
Session teleport |
/rewind |
Rewind conversation |
/resume |
Resume session |
/loop |
Recurring command |
/chrome |
Chrome integration |
/powerup |
Power-up features |
/deploy |
Deployment workflow |
/dev |
Development mode |
/issue |
Issue tracker |
/metrics |
Performance metrics |
/dashboard |
Dashboard view |
/ultrareview |
Deep code review |
/prompt |
Prompt management |
/install-github-app |
GitHub App setup |
Output Modes
--output-format text # Default: human-readable
--output-format json # Single JSON result
--output-format stream-json # Real-time streaming JSON
Input modes:
--input-format text # Default: plain text prompt
--input-format stream-json # Real-time streaming JSON input