Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
99b78d6ea4 | ||
|
|
6e378185e9 | ||
|
|
019e9900ed | ||
|
|
67423d005a | ||
|
|
4db21e9595 | ||
|
|
0346b7dd3a | ||
|
|
14757e0780 | ||
|
|
2d1cade31b | ||
|
|
619ae71866 | ||
|
|
5b106b840d |
95
REFERENCE.md
95
REFERENCE.md
@@ -1,95 +0,0 @@
|
|||||||
# 🎯 Claw Code - Reference Implementation
|
|
||||||
|
|
||||||
> **Clean-room Claude Code harness - mirrored for architectural study**
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## ⚠️ IMPORTANT: Reference Only
|
|
||||||
|
|
||||||
This repository is a **mirror** of [instructkr/claw-code](https://github.com/instructkr/claw-code) for:
|
|
||||||
- ✅ Studying agent harness engineering patterns
|
|
||||||
- ✅ Comparing tool system architectures
|
|
||||||
- ✅ Learning clean-room implementation approaches
|
|
||||||
|
|
||||||
**Do NOT copy code directly.** Study patterns, then implement independently.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 📊 Stats
|
|
||||||
|
|
||||||
| Metric | Value |
|
|
||||||
|--------|-------|
|
|
||||||
| **Python** | 2,138 LOC, 66 files |
|
|
||||||
| **Rust** | 7,619 LOC, 28+ files |
|
|
||||||
| **Total** | ~10K LOC |
|
|
||||||
| **Author** | Sigrid Jin (@instructkr) |
|
|
||||||
| **Origin** | WSJ-featured clean-room rewrite |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🏗️ Architecture
|
|
||||||
|
|
||||||
### Python (`src/`)
|
|
||||||
```
|
|
||||||
runtime.py → Agent runtime with routing
|
|
||||||
├── tools.py → Tool harness (Bash, File, MCP)
|
|
||||||
├── commands.py → Command system
|
|
||||||
├── query_engine.py → LLM orchestration
|
|
||||||
├── permissions.py → Tool permission contexts
|
|
||||||
└── bootstrap/ → Initialization
|
|
||||||
```
|
|
||||||
|
|
||||||
### Rust (`rust/crates/`)
|
|
||||||
```
|
|
||||||
api/ → Anthropic-compatible client
|
|
||||||
tools/ → Tool system
|
|
||||||
compat-harness/ → Compatibility layer
|
|
||||||
rusty-claude-cli/ → CLI interface
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🔗 Key Patterns
|
|
||||||
|
|
||||||
### 1. Tool Permission Context
|
|
||||||
```python
|
|
||||||
@dataclass
|
|
||||||
class ToolPermissionContext:
|
|
||||||
deny_tools: set[str]
|
|
||||||
deny_prefixes: tuple[str, ...]
|
|
||||||
|
|
||||||
def blocks(self, tool_name: str) -> bool:
|
|
||||||
return tool_name in self.deny_tools or \
|
|
||||||
any(tool_name.startswith(p) for p in self.deny_prefixes)
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Execution Registry
|
|
||||||
- Routes prompts to commands/tools
|
|
||||||
- Filters by permission context
|
|
||||||
- Handles execution lifecycle
|
|
||||||
|
|
||||||
### 3. Session Persistence
|
|
||||||
- JSON-based session store
|
|
||||||
- Turn-by-turn history
|
|
||||||
- Context preservation
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 📖 Branches
|
|
||||||
|
|
||||||
- `main` - Python-first implementation
|
|
||||||
- `dev/rust` - Rust port (active)
|
|
||||||
- `rcc/*` - Rust CLI components
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 🔗 External Links
|
|
||||||
|
|
||||||
- **Original Repo**: https://github.com/instructkr/claw-code
|
|
||||||
- **Author**: @instructkr (Sigrid Jin)
|
|
||||||
- **Context**: WSJ "The Trillion Dollar Race to Automate Our Entire Lives"
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
*Mirrored to Gitea: March 31, 2026*
|
|
||||||
*For: Timmy Foundation architectural reference*
|
|
||||||
19
rust/Cargo.lock
generated
19
rust/Cargo.lock
generated
@@ -212,6 +212,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d"
|
checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"futures-core",
|
"futures-core",
|
||||||
|
"futures-sink",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -220,6 +221,18 @@ version = "0.3.32"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d"
|
checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "futures-io"
|
||||||
|
version = "0.3.32"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "futures-sink"
|
||||||
|
version = "0.3.32"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "futures-task"
|
name = "futures-task"
|
||||||
version = "0.3.32"
|
version = "0.3.32"
|
||||||
@@ -233,7 +246,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6"
|
checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"futures-core",
|
"futures-core",
|
||||||
|
"futures-io",
|
||||||
|
"futures-sink",
|
||||||
"futures-task",
|
"futures-task",
|
||||||
|
"memchr",
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
"slab",
|
"slab",
|
||||||
]
|
]
|
||||||
@@ -898,7 +914,9 @@ checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"base64",
|
"base64",
|
||||||
"bytes",
|
"bytes",
|
||||||
|
"futures-channel",
|
||||||
"futures-core",
|
"futures-core",
|
||||||
|
"futures-util",
|
||||||
"http",
|
"http",
|
||||||
"http-body",
|
"http-body",
|
||||||
"http-body-util",
|
"http-body-util",
|
||||||
@@ -1352,6 +1370,7 @@ dependencies = [
|
|||||||
name = "tools"
|
name = "tools"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"reqwest",
|
||||||
"runtime",
|
"runtime",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
|
|||||||
1
rust/crates/tools/.gitignore
vendored
Normal file
1
rust/crates/tools/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
.clawd-agents/
|
||||||
@@ -7,6 +7,7 @@ publish.workspace = true
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
runtime = { path = "../runtime" }
|
runtime = { path = "../runtime" }
|
||||||
|
reqwest = { version = "0.12", default-features = false, features = ["blocking", "rustls-tls"] }
|
||||||
serde = { version = "1", features = ["derive"] }
|
serde = { version = "1", features = ["derive"] }
|
||||||
serde_json = "1"
|
serde_json = "1"
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user