codetether-agent 0.1.5

A2A-native AI coding agent for the CodeTether ecosystem
Documentation
# CodeTether Static Code Analysis Report

## Executive Summary

This is a **Rust codebase** (not Python as initially specified in the task). The analysis covers unused imports, dead code, TODO/FIXME comments, and code quality issues across the CodeTether Agent project.

---

## 1. UNUSED IMPORTS

### 1.1 `src/session/mod.rs` (Line 7)
```rust
use crate::telemetry::TokenCounts;
```
**Issue**: Import is unused in the module.

### 1.2 `src/tui/message_formatter.rs` (Line 8)
```rust
use syntect::highlighting::Style as SyntectStyle
```
**Issue**: Import alias `SyntectStyle` is unused. The `Style` type is referenced but the alias is never used.

### 1.3 `src/tui/token_display.rs` (Line 4, 7)
```rust
use ratatui::{Frame, ...};
use ratatui::widgets::{Paragraph, Wrap};
```
**Issue**: `Frame`, `Paragraph`, and `Wrap` are imported but never used in this module.

### 1.4 `src/tui/mod.rs` (Line 17)
```rust
use crate::swarm::{..., SwarmStats};
```
**Issue**: `SwarmStats` is imported but never used in this module.

### 1.5 `src/main.rs` (Line 32)
```rust
use telemetry::{TOKEN_USAGE, TOOL_EXECUTIONS, get_persistent_stats};
```
**Issue**: `TOOL_EXECUTIONS` is imported but never used in main.rs.

---

## 2. DEAD CODE (#[allow(dead_code)] annotations)

### 2.1 MCP Module

**File**: `src/mcp/transport.rs` (Line 64-65)
```rust
#[allow(dead_code)]
tx: mpsc::Sender<String>,
```
**Issue**: The sender channel in `StdioTransport` is stored but never used after construction.

**File**: `src/mcp/server.rs` (Line 31-32)
```rust
#[allow(dead_code)]
prompts: RwLock<HashMap<String, McpPromptHandler>>,
```
**Issue**: Prompt handlers are reserved for future use but currently unimplemented.

**File**: `src/mcp/client.rs` (Lines 14, 63, 90)
- `A2AClient::new()` - Constructor marked as dead code
- `A2AClient::get_task()` - Method marked as dead code  
- `A2AClient::cancel_task()` - Method marked as dead code

### 2.2 Worktree Module

**File**: `src/worktree/mod.rs` (Lines 15, 501)
- `WorktreeInfo` struct - Marked as dead code
- `WorktreeManager::list()` method - Marked as dead code

### 2.3 Session Module

**File**: `src/session/mod.rs` (Lines 752, 755, 760)
```rust
#[allow(dead_code)]
use futures::StreamExt;

#[allow(dead_code)]
trait AsyncCollect<T> { ... }

#[allow(dead_code)]
impl<S, T> AsyncCollect<T> for S where ...
```
**Issue**: Async collection helpers are defined but unused.

### 2.4 Agent Module

**File**: `src/agent/mod.rs` (Lines 364, 377, 388)
- `AgentRegistry::new()` - Marked as dead code
- `AgentRegistry::get()` - Marked as dead code
- `AgentRegistry::list_primary()` - Marked as dead code

**File**: `src/agent/builtin.rs` (Lines 52, 79, 103, 190)
- `BUILD_SYSTEM_PROMPT` - Marked as dead code
- `PLAN_SYSTEM_PROMPT` - Marked as dead code
- `EXPLORE_SYSTEM_PROMPT` - Marked as dead code
- `load_agents_md()` function - Marked as dead code

### 2.5 A2A Module

**File**: `src/a2a/types.rs` (Lines 214, 263, 265, 274, 277)
- `JsonRpcError` impl block - Marked as dead code
- Error code constants: `PARSE_ERROR`, `INVALID_REQUEST`, `PUSH_NOT_SUPPORTED`, `CONTENT_TYPE_NOT_SUPPORTED`

**File**: `src/a2a/server.rs` (Line 41)
- `A2AServer::card()` method - Marked as dead code

### 2.6 Tool Module

**File**: `src/tool/task.rs` (Line 29)
- `TaskStatus::Running` variant - Marked as dead code

**File**: `src/tool/rlm.rs` (Line 30)
- `RlmTool::with_chunk_size()` - Marked as dead code

**File**: `src/tool/mod.rs` (Line 261)
- `ToolRegistry::with_provider_arc()` - Marked as dead code

**File**: `src/tool/ralph.rs` (Line 41)
- `RalphTool::set_provider()` - Marked as dead code

**File**: `src/tool/webfetch.rs` (Line 10)
- `MAX_CONTENT_LENGTH` constant - Marked as dead code

**File**: `src/tool/patch.rs` (Line 27)
- `PatchTool::with_root()` - Marked as dead code

**File**: `src/tool/codesearch.rs` (Lines 24, 106)
- `CodeSearchTool::new()` - Marked as dead code
- `CodeSearchTool::search_code()` - Marked as dead code

**File**: `src/tool/skill.rs` (Lines 15, 34)
- `SkillTool::cache` field - Marked as dead code
- `SkillTool::with_dir()` - Marked as dead code

**File**: `src/tool/bash.rs` (Line 25)
- `BashTool::with_timeout()` - Marked as dead code

### 2.7 RLM Module

**File**: `src/rlm/repl.rs` (Lines 411, 854)
- `DslResult::Error` variant - Marked as dead code
- `ExternalRepl::runtime` field - Marked as dead code

### 2.8 Provider Module

**File**: `src/provider/stepfun.rs` (Line 176)
- `StreamToolCall::index` field - Marked as dead code

**File**: `src/provider/moonshot.rs` (Lines 154, 191)
- `MoonshotMessage::role` field - Marked as dead code
- `MoonshotError::error` field - Marked as dead code

**File**: `src/provider/openrouter.rs` (Lines 182, 186)
- `OpenRouterToolCall::call_type` field - Marked as dead code
- `OpenRouterToolCall::index` field - Marked as dead code

**File**: `src/provider/models.rs` (Lines 100, 117, 174, 239, 311)
- `ModelCatalog::new()` - Marked as dead code
- `ModelCatalog::fetch_from()` - Marked as dead code
- `ModelCatalog::available_providers_async()` - Marked as dead code
- Multiple model info methods - Marked as dead code

### 2.9 Secrets Module

**File**: `src/secrets/mod.rs` (Line 14)
- `DEFAULT_SECRETS_PATH` constant - Marked as dead code

### 2.10 TUI Module

**File**: `src/tui/swarm_view.rs` (Lines 27, 72, 97)
- Multiple `SwarmEvent` variants: `SubTaskUpdate`, `AgentStarted`, `AgentToolCall`, `AgentComplete`, `StageComplete`
- `SubTaskInfo::dependencies` field - Never read
- `SwarmViewState::scroll` field - Never read

**File**: `src/tui/theme_utils.rs` (Line 31)
- `ColorSupport::Monochrome` variant - Never constructed

---

## 3. TODO/FIXME/XXX/HACK COMMENTS

### 3.1 MCP Module

**File**: `src/mcp/transport.rs` (Line 178)
```rust
// TODO: Start SSE connection for receiving messages
```
**Context**: SSE transport implementation is incomplete.

**File**: `src/mcp/client.rs` (Line 322)
```rust
// TODO: Implement sampling using our provider
```
**Context**: MCP sampling capability not yet implemented.

### 3.2 Server Module

**File**: `src/server/mod.rs` (Line 173)
```rust
// TODO: Implement actual prompting
```
**Context**: Server-side prompting logic is stubbed.

### 3.3 A2A Module

**File**: `src/a2a/server.rs` (Lines 176, 186)
```rust
// TODO: Process the task asynchronously
// TODO: Implement streaming
```
**Context**: Task processing and streaming are not fully implemented.

**File**: `src/a2a/worker.rs` (Line 329)
```rust
// TODO: Actually execute the agent here
```
**Context**: A2A worker task execution is stubbed.

### 3.4 Tool Module

**File**: `src/tool/lsp.rs` (Line 91)
```rust
// TODO: Implement actual LSP client logic
```
**Context**: LSP tool is a stub implementation.

### 3.5 Provider Module

**File**: `src/provider/google.rs` (Line 92)
```rust
// TODO: Implement using reqwest
```
**Context**: Google provider implementation is incomplete.

**File**: `src/provider/anthropic.rs` (Line 92)
```rust
// TODO: Implement using reqwest
```
**Context**: Anthropic provider implementation is incomplete.

### 3.6 Ralph Module

**File**: `src/ralph/ralph_loop.rs` (Line 601)
```rust
- Do NOT add TODO/placeholder comments
```
**Context**: This is documentation instructing Ralph not to add TODOs, not an actual TODO.

---

## 4. UNUSED VARIABLES AND FIELDS

### 4.1 `src/tui/mod.rs` (Line 115)
```rust
pub struct SubTaskInfo {
    // ...
    pub content: String,  // Field is never read
}
```

### 4.2 `src/tui/message_formatter.rs` (Line 284)
```rust
let width = self.max_width;  // Unused variable
```

---

## 5. CODE QUALITY ISSUES

### 5.1 Derivable Implementations

**File**: `src/config/mod.rs` (Line 137)
```rust
impl Default for Config { ... }  // Can be derived
```

**File**: `src/swarm/mod.rs` (Line 267)
```rust
impl Default for DecompositionStrategy { ... }  // Can be derived
```

### 5.2 PathBuf vs Path

**File**: `src/ralph/ralph_loop.rs` (Lines 546, 681)
```rust
// Writing `&PathBuf` instead of `&Path` involves a new object where a slice will do
```

### 5.3 Complex Types

**File**: `src/swarm/executor.rs` (Line 477)
```rust
// Very complex type used. Consider factoring parts into `type` definitions
```

### 5.4 Unnecessary Casts

**File**: `src/tui/theme_utils.rs` (Lines 148-150)
```rust
*cr as i32  // Casting to the same type is unnecessary
*cg as i32
*cb as i32
```

### 5.5 Unnecessary format!() / vec![]

**File**: `src/worktree/mod.rs` (Line 419)
```rust
format!("Merge completed after resolving conflicts").to_string()  // Use .to_string() directly
```

**File**: `src/tui/mod.rs` (Line 624)
```rust
vec![]  // Useless use of vec!
```

---

## 6. UNFINISHED FEATURES (Commented-Out Code Analysis)

The codebase does not contain significant blocks of commented-out code. However, several features are marked as incomplete:

1. **MCP Prompts** (`src/mcp/server.rs`): Infrastructure exists but handlers are not implemented
2. **A2A Streaming** (`src/a2a/server.rs`): Streaming capability stubbed but not implemented
3. **LSP Tool** (`src/tool/lsp.rs`): Complete stub - needs actual LSP client implementation
4. **Google/Anthropic Providers**: Exist but only return "not implemented" errors
5. **MCP SSE Transport**: SSE connection logic not implemented

---

## 7. PYTHON FILE ANALYSIS

**File**: `validation_report.py`

This is the only Python file in the codebase. Analysis:

### Unused Imports: None - All imports are used
### Dead Code: None identified
### Code Quality: Well-structured with proper typing

The script is a comprehensive JSON validator for PRD files with:
- Proper error handling
- Type hints throughout
- Schema validation for different PRD types
- Circular reference detection

---

## Summary Statistics

| Category | Count |
|----------|-------|
| Unused Imports | 5 |
| Dead Code Items (#[allow(dead_code)]) | 45+ |
| TODO Comments | 9 |
| FIXME/XXX/HACK Comments | 0 |
| Unused Variables/Fields | 3 |
| Derivable Implementations | 2 |
| PathBuf vs Path Issues | 2 |

---

## Recommendations

1. **Remove or use unused imports** - Clean up the 5 unused imports identified
2. **Evaluate dead code** - Many `#[allow(dead_code)]` items appear to be API surface for future use; document which are intentionally public vs. truly dead
3. **Complete TODO items** - 9 TODOs indicate unfinished features
4. **Derive Default implementations** - Use `#[derive(Default)]` where possible
5. **Fix PathBuf references** - Change `&PathBuf` to `&Path` for efficiency
6. **Remove unnecessary casts** - Clean up i32 casts in theme_utils.rs

---

*Report generated by static analysis of the CodeTether Agent codebase*