From b8e9c4769bd2c0a4f18bb674badd24d0c037cb1f Mon Sep 17 00:00:00 2001 From: icybear Date: Tue, 31 Mar 2026 18:20:09 +0800 Subject: [PATCH] Update README.md --- README.md | 279 +++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 244 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index 04e97ab..d1a660e 100644 --- a/README.md +++ b/README.md @@ -1,48 +1,257 @@ -# claude-code-sourcemap +# Claude Code — Leaked Source (2026-03-31) -[![linux.do](https://img.shields.io/badge/linux.do-huo0-blue?logo=linux&logoColor=white)](https://linux.do) +> **On March 31, 2026, the full source code of Anthropic's Claude Code CLI was leaked** via a `.map` file exposed in their npm registry. -> [!WARNING] -> This repository is **unofficial** and is reconstructed from the public npm package and source map analysis, **for research purposes only**. -> It does **not** represent the original internal development repository structure. +--- + +## How It Leaked + +[Chaofan Shou (@Fried_rice)](https://x.com/Fried_rice) discovered the leak and posted it publicly: + +> **"Claude code source code has been leaked via a map file in their npm registry!"** > -> 本仓库为**非官方**整理版,基于公开 npm 发布包与 source map 分析还原,**仅供研究使用**。 -> **不代表**官方原始内部开发仓库结构。 -> 一切基于L站"飘然与我同"的情报提供 +> — [@Fried_rice, March 31, 2026](https://x.com/Fried_rice/status/2038894956459290963) -## 概述 +The source map file in the published npm package contained a reference to the full, unobfuscated TypeScript source, which was downloadable as a zip archive from Anthropic's R2 storage bucket. -本仓库通过 npm 发布包(`@anthropic-ai/claude-code`)内附带的 source map(`cli.js.map`)还原的 TypeScript 源码,版本为 `2.1.88`。 +--- -## 来源 +## Overview -- npm 包:[@anthropic-ai/claude-code](https://www.npmjs.com/package/@anthropic-ai/claude-code) -- 还原版本:`2.1.88` -- 还原文件数:**4756 个**(含 1884 个 `.ts`/`.tsx` 源文件) -- 还原方式:提取 `cli.js.map` 中的 `sourcesContent` 字段 +Claude Code is Anthropic's official CLI tool that lets you interact with Claude directly from the terminal to perform software engineering tasks — editing files, running commands, searching codebases, managing git workflows, and more. -## 目录结构 +This repository contains the leaked `src/` directory. + +- **Leaked on**: 2026-03-31 +- **Language**: TypeScript +- **Runtime**: Bun +- **Terminal UI**: React + [Ink](https://github.com/vadimdemedes/ink) (React for CLI) +- **Scale**: ~1,900 files, 512,000+ lines of code + +--- + +## Directory Structure ``` -restored-src/src/ -├── main.tsx # CLI 入口 -├── tools/ # 工具实现(Bash、FileEdit、Grep、MCP 等 30+ 个) -├── commands/ # 命令实现(commit、review、config 等 40+ 个) -├── services/ # API、MCP、分析等服务 -├── utils/ # 工具函数(git、model、auth、env 等) -├── context/ # React Context -├── coordinator/ # 多 Agent 协调模式 -├── assistant/ # 助手模式(KAIROS) -├── buddy/ # AI 伴侣 UI -├── remote/ # 远程会话 -├── plugins/ # 插件系统 -├── skills/ # 技能系统 -├── voice/ # 语音交互 -└── vim/ # Vim 模式 +src/ +├── main.tsx # Entrypoint (Commander.js-based CLI parser) +├── commands.ts # Command registry +├── tools.ts # Tool registry +├── Tool.ts # Tool type definitions +├── QueryEngine.ts # LLM query engine (core Anthropic API caller) +├── 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 integration bridge (VS Code, JetBrains) +├── 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/ # Memory directory (persistent memory) +├── tasks/ # Task management +├── state/ # State management +├── migrations/ # Config migrations +├── schemas/ # Config schemas (Zod) +├── entrypoints/ # Initialization logic +├── ink/ # Ink renderer wrapper +├── buddy/ # Companion sprite (Easter egg) +├── native-ts/ # Native TypeScript utils +├── outputStyles/ # Output styling +├── query/ # Query pipeline +└── upstreamproxy/ # Proxy configuration ``` -## 声明 +--- -- 源码版权归 [Anthropic](https://www.anthropic.com) 所有 -- 本仓库仅用于技术研究与学习,请勿用于商业用途 -- 如有侵权,请联系删除 +## Core Architecture + +### 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 +``` + +Notable flags: `PROACTIVE`, `KAIROS`, `BRIDGE_MODE`, `DAEMON`, `VOICE_MODE`, `AGENT_TRIGGERS`, `MONITOR_TOOL` + +--- + +## Key Files in Detail + +### `QueryEngine.ts` (~46K lines) + +The core engine for LLM API calls. Handles streaming responses, tool-call loops, thinking mode, retry logic, and token counting. + +### `Tool.ts` (~29K lines) + +Defines base types and interfaces for all tools — input schemas, permission models, and progress state types. + +### `commands.ts` (~25K lines) + +Manages registration and execution of all slash commands. Uses conditional imports to load different command sets per environment. + +### `main.tsx` + +Commander.js-based CLI parser + React/Ink renderer initialization. At startup, parallelizes MDM settings, keychain prefetch, and GrowthBook initialization for faster boot. + +--- + +## 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) (via GrepTool) | +| 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 | + +--- + +## Notable Design Patterns + +### Parallel Prefetch + +Startup time is optimized by prefetching MDM settings, keychain reads, and API preconnect in parallel — before heavy module evaluation begins. + +```typescript +// main.tsx — fired as side-effects before other imports +startMdmRawRead() +startKeychainPrefetch() +``` + +### Lazy Loading + +Heavy modules (OpenTelemetry ~400KB, gRPC ~700KB) are deferred via dynamic `import()` until actually needed. + +### Agent Swarms + +Sub-agents are spawned via `AgentTool`, with `coordinator/` handling multi-agent orchestration. `TeamCreateTool` enables team-level parallel work. + +### Skill System + +Reusable workflows defined in `skills/` and executed through `SkillTool`. Users can add custom skills. + +### Plugin Architecture + +Built-in and third-party plugins are loaded through the `plugins/` subsystem. + +--- + +## Disclaimer + +This repository archives source code that was leaked from Anthropic's npm registry on **2026-03-31**. All original source code is the property of [Anthropic](https://www.anthropic.com). \ No newline at end of file