diff --git a/README.md b/README.md index ae72270..2f09b23 100644 --- a/README.md +++ b/README.md @@ -1,290 +1,167 @@ -# Claude Code Source Snapshot for Security Research -# Claude Codes — EM Edition +# Rewriting Project Claw Code -This is a customized version of the original Claude Code project, adapted and maintained by emmark. +
+
+
+
+
+
+ Better Harness Tools, not merely storing the archive of leaked Claw Code +
-Maintained by: Emmark -> This repository mirrors a **publicly exposed Claude Code source snapshot** that became accessible on **March 31, 2026** through a source map exposure in the npm distribution. It is maintained for **educational, defensive security research, and software supply-chain analysis**. + ---- - -## Research Context - -This repository is maintained by a **university student** studying: - -- software supply-chain exposure and build artifact leaks -- secure software engineering practices -- agentic developer tooling architecture -- defensive analysis of real-world CLI systems +> [!IMPORTANT] +> **Rust port is now in progress** on the [`dev/rust`](https://github.com/emmarktech/claw-code/tree/dev/rust) branch and is expected to be merged into main today. The Rust implementation aims to deliver a faster, memory-safe harness runtime. Stay tuned — this will be the definitive version of the project. -This archive is intended to support: - -- educational study -- security research practice -- architecture review -- discussion of packaging and release-process failures - -It does **not** claim ownership of the original code, and it should not be interpreted as an official Anthropic repository. +> If you find this work useful, consider [sponsoring @emmarktech on GitHub](https://github.com/sponsors/emmarktech) to support continued open-source harness engineering research. --- -## How the Public Snapshot Became Accessible +## Rust Port -[Chaofan Shou (@Fried_rice)](https://x.com/Fried_rice) publicly noted that Claude Code source material was reachable through a `.map` file exposed in the npm package: +The Rust workspace under `rust/` is the current systems-language port of the project. -> **"Claude code source code has been leaked via a map file in their npm registry!"** -> -> — [@Fried_rice, March 31, 2026](https://x.com/Fried_rice/status/2038894956459290963) +It currently includes: -The published source map referenced unobfuscated TypeScript sources hosted in Anthropic's R2 storage bucket, which made the `src/` snapshot publicly downloadable. +- `crates/api-client` — API client with provider abstraction, OAuth, and streaming support +- `crates/runtime` — session state, compaction, MCP orchestration, prompt construction +- `crates/tools` — tool manifest definitions and execution framework +- `crates/commands` — slash commands, skills discovery, and config inspection +- `crates/plugins` — plugin model, hook pipeline, and bundled plugins +- `crates/compat-harness` — compatibility layer for upstream editor integration +- `crates/claw-cli` — interactive REPL, markdown rendering, and project bootstrap/init flows ---- +Run the Rust build: -## Repository Scope +```bash +cd rust +cargo build --release +``` + +## Backstory -Claude Code is Anthropic's CLI for interacting with Claude from the terminal to perform software engineering tasks such as editing files, running commands, searching codebases, and coordinating workflows. +Being written -This repository contains a mirrored `src/` snapshot for research and analysis. -- **Public exposure identified on**: 2026-03-31 -- **Language**: TypeScript -- **Runtime**: Bun -- **Terminal UI**: React + [Ink](https://github.com/vadimdemedes/ink) -- **Scale**: ~1,900 files, 512,000+ lines of code --- -## Directory Structure +## Porting Status -```text -src/ -├── main.tsx # Entrypoint orchestration (Commander.js-based CLI path) -├── commands.ts # Command registry -├── tools.ts # Tool registry -├── Tool.ts # Tool type definitions -├── QueryEngine.ts # LLM query engine -├── context.ts # System/user context collection -├── cost-tracker.ts # Token cost tracking -│ -├── commands/ # Slash command implementations (~50) -├── tools/ # Agent tool implementations (~40) -├── components/ # Ink UI components (~140) -├── hooks/ # React hooks -├── services/ # External service integrations -├── screens/ # Full-screen UIs (Doctor, REPL, Resume) -├── types/ # TypeScript type definitions -├── utils/ # Utility functions -│ -├── bridge/ # IDE and remote-control bridge -├── coordinator/ # Multi-agent coordinator -├── plugins/ # Plugin system -├── skills/ # Skill system -├── keybindings/ # Keybinding configuration -├── vim/ # Vim mode -├── voice/ # Voice input -├── remote/ # Remote sessions -├── server/ # Server mode -├── memdir/ # Persistent memory directory -├── tasks/ # Task management -├── state/ # State management -├── migrations/ # Config migrations -├── schemas/ # Config schemas (Zod) -├── entrypoints/ # Initialization logic -├── ink/ # Ink renderer wrapper -├── buddy/ # Companion sprite -├── native-ts/ # Native TypeScript utilities -├── outputStyles/ # Output styling -├── query/ # Query pipeline -└── upstreamproxy/ # Proxy configuration -``` +The main source tree is now Python-first. ---- +- `src/` contains the active Python porting workspace +- `tests/` verifies the current Python workspace +- the exposed snapshot is no longer part of the tracked repository state -## Architecture Summary - -### 1. Tool System (`src/tools/`) - -Every tool Claude Code can invoke is implemented as a self-contained module. Each tool defines its input schema, permission model, and execution logic. - -| Tool | Description | -|---|---| -| `BashTool` | Shell command execution | -| `FileReadTool` | File reading (images, PDFs, notebooks) | -| `FileWriteTool` | File creation / overwrite | -| `FileEditTool` | Partial file modification (string replacement) | -| `GlobTool` | File pattern matching search | -| `GrepTool` | ripgrep-based content search | -| `WebFetchTool` | Fetch URL content | -| `WebSearchTool` | Web search | -| `AgentTool` | Sub-agent spawning | -| `SkillTool` | Skill execution | -| `MCPTool` | MCP server tool invocation | -| `LSPTool` | Language Server Protocol integration | -| `NotebookEditTool` | Jupyter notebook editing | -| `TaskCreateTool` / `TaskUpdateTool` | Task creation and management | -| `SendMessageTool` | Inter-agent messaging | -| `TeamCreateTool` / `TeamDeleteTool` | Team agent management | -| `EnterPlanModeTool` / `ExitPlanModeTool` | Plan mode toggle | -| `EnterWorktreeTool` / `ExitWorktreeTool` | Git worktree isolation | -| `ToolSearchTool` | Deferred tool discovery | -| `CronCreateTool` | Scheduled trigger creation | -| `RemoteTriggerTool` | Remote trigger | -| `SleepTool` | Proactive mode wait | -| `SyntheticOutputTool` | Structured output generation | - -### 2. Command System (`src/commands/`) - -User-facing slash commands invoked with `/` prefix. - -| Command | Description | -|---|---| -| `/commit` | Create a git commit | -| `/review` | Code review | -| `/compact` | Context compression | -| `/mcp` | MCP server management | -| `/config` | Settings management | -| `/doctor` | Environment diagnostics | -| `/login` / `/logout` | Authentication | -| `/memory` | Persistent memory management | -| `/skills` | Skill management | -| `/tasks` | Task management | -| `/vim` | Vim mode toggle | -| `/diff` | View changes | -| `/cost` | Check usage cost | -| `/theme` | Change theme | -| `/context` | Context visualization | -| `/pr_comments` | View PR comments | -| `/resume` | Restore previous session | -| `/share` | Share session | -| `/desktop` | Desktop app handoff | -| `/mobile` | Mobile app handoff | - -### 3. Service Layer (`src/services/`) - -| Service | Description | -|---|---| -| `api/` | Anthropic API client, file API, bootstrap | -| `mcp/` | Model Context Protocol server connection and management | -| `oauth/` | OAuth 2.0 authentication flow | -| `lsp/` | Language Server Protocol manager | -| `analytics/` | GrowthBook-based feature flags and analytics | -| `plugins/` | Plugin loader | -| `compact/` | Conversation context compression | -| `policyLimits/` | Organization policy limits | -| `remoteManagedSettings/` | Remote managed settings | -| `extractMemories/` | Automatic memory extraction | -| `tokenEstimation.ts` | Token count estimation | -| `teamMemorySync/` | Team memory synchronization | - -### 4. Bridge System (`src/bridge/`) - -A bidirectional communication layer connecting IDE extensions (VS Code, JetBrains) with the Claude Code CLI. - -- `bridgeMain.ts` — Bridge main loop -- `bridgeMessaging.ts` — Message protocol -- `bridgePermissionCallbacks.ts` — Permission callbacks -- `replBridge.ts` — REPL session bridge -- `jwtUtils.ts` — JWT-based authentication -- `sessionRunner.ts` — Session execution management - -### 5. Permission System (`src/hooks/toolPermission/`) - -Checks permissions on every tool invocation. Either prompts the user for approval/denial or automatically resolves based on the configured permission mode (`default`, `plan`, `bypassPermissions`, `auto`, etc.). - -### 6. Feature Flags - -Dead code elimination via Bun's `bun:bundle` feature flags: - -```typescript -import { feature } from 'bun:bundle' - -// Inactive code is completely stripped at build time -const voiceCommand = feature('VOICE_MODE') - ? require('./commands/voice/index.js').default - : null -``` +The current Python workspace is not yet a complete one-to-one replacement for the original system, but the primary implementation surface is now Python. -Notable flags: `PROACTIVE`, `KAIROS`, `BRIDGE_MODE`, `DAEMON`, `VOICE_MODE`, `AGENT_TRIGGERS`, `MONITOR_TOOL` +## Why this rewrite exists ---- - -## Key Files in Detail +I originally studied the exposed codebase to understand its harness, tool wiring, and agent workflow. After spending more time with the legal and ethical questions—and after reading the essay linked below—I did not want the exposed snapshot itself to remain the main tracked source tree. -### `QueryEngine.ts` (~46K lines) +This repository now focuses on Python porting work instead. -The core engine for LLM API calls. Handles streaming responses, tool-call loops, thinking mode, retry logic, and token counting. +## Repository Layout -### `Tool.ts` (~29K lines) +```text +. +├── src/ # Python porting workspace +│ ├── __init__.py +│ ├── commands.py +│ ├── main.py +│ ├── models.py +│ ├── port_manifest.py +│ ├── query_engine.py +│ ├── task.py +│ └── tools.py +├── rust/ # Rust port (claw CLI) +│ ├── crates/api/ # API client + streaming +│ ├── crates/runtime/ # Session, tools, MCP, config +│ ├── crates/claw-cli/ # Interactive CLI binary +│ ├── crates/plugins/ # Plugin system +│ ├── crates/commands/ # Slash commands +│ ├── crates/server/ # HTTP/SSE server (axum) +│ ├── crates/lsp/ # LSP client integration +│ └── crates/tools/ # Tool specs +├── tests/ # Python verification +├── assets/omx/ # OmX workflow screenshots +├── 2026-03-09-is-legal-the-same-as-legitimate-ai-reimplementation-and-the-erosion-of-copyleft.md +└── README.md +``` -Defines base types and interfaces for all tools — input schemas, permission models, and progress state types. +## Python Workspace Overview -### `commands.ts` (~25K lines) +The new Python `src/` tree currently provides: -Manages registration and execution of all slash commands. Uses conditional imports to load different command sets per environment. +- **`port_manifest.py`** — summarizes the current Python workspace structure +- **`models.py`** — dataclasses for subsystems, modules, and backlog state +- **`commands.py`** — Python-side command port metadata +- **`tools.py`** — Python-side tool port metadata +- **`query_engine.py`** — renders a Python porting summary from the active workspace +- **`main.py`** — a CLI entrypoint for manifest and summary output -### `main.tsx` +## Quickstart -Commander.js-based CLI parser and React/Ink renderer initialization. At startup, it overlaps MDM settings, keychain prefetch, and GrowthBook initialization for faster boot. +Render the Python porting summary: ---- +```bash +python3 -m src.main summary +``` -## Tech Stack - -| Category | Technology | -|---|---| -| Runtime | [Bun](https://bun.sh) | -| Language | TypeScript (strict) | -| Terminal UI | [React](https://react.dev) + [Ink](https://github.com/vadimdemedes/ink) | -| CLI Parsing | [Commander.js](https://github.com/tj/commander.js) (extra-typings) | -| Schema Validation | [Zod v4](https://zod.dev) | -| Code Search | [ripgrep](https://github.com/BurntSushi/ripgrep) | -| Protocols | [MCP SDK](https://modelcontextprotocol.io), LSP | -| API | [Anthropic SDK](https://docs.anthropic.com) | -| Telemetry | OpenTelemetry + gRPC | -| Feature Flags | GrowthBook | -| Auth | OAuth 2.0, JWT, macOS Keychain | +Print the current Python workspace manifest: ---- +```bash +python3 -m src.main manifest +``` -## Notable Design Patterns +List the current Python modules: -### Parallel Prefetch +```bash +python3 -m src.main subsystems --limit 16 +``` -Startup time is optimized by prefetching MDM settings, keychain reads, and API preconnect in parallel before heavy module evaluation begins. +Run verification: -```typescript -// main.tsx — fired as side-effects before other imports -startMdmRawRead() -startKeychainPrefetch() +```bash +python3 -m unittest discover -s tests -v ``` -### Lazy Loading +Run the parity audit against the local ignored archive (when present): -Heavy modules (OpenTelemetry, gRPC, analytics, and some feature-gated subsystems) are deferred via dynamic `import()` until actually needed. +```bash +python3 -m src.main parity-audit +``` -### Agent Swarms +Inspect mirrored command/tool inventories: -Sub-agents are spawned via `AgentTool`, with `coordinator/` handling multi-agent orchestration. `TeamCreateTool` enables team-level parallel work. +```bash +python3 -m src.main commands --limit 10 +python3 -m src.main tools --limit 10 +``` -### Skill System +## Current Parity Checkpoint -Reusable workflows defined in `skills/` are executed through `SkillTool`. Users can add custom skills. +The port now mirrors the archived root-entry file surface, top-level subsystem names, and command/tool inventories much more closely than before. However, it is **not yet** a full runtime-equivalent replacement for the original TypeScript system; the Python tree still contains fewer executable runtime slices than the archived source. -### Plugin Architecture -Built-in and third-party plugins are loaded through the `plugins/` subsystem. +## Star History ---- +See the chart at the top of this README. -## Research / Ownership Disclaimer +## Ownership / Affiliation Disclaimer -- This repository is an **educational and defensive security research archive** maintained by a university student. -- It exists to study source exposure, packaging failures, and the architecture of modern agentic CLI systems. -- The original Claude Code source remains the property of **Anthropic**. -- This repository is **not affiliated with, endorsed by, or maintained by Anthropic**. +- This repository does **not** claim ownership of the original Claw Code source material. +- This repository is **not affiliated with, endorsed by, or maintained by the original authors**.