Kaynağa Gözat

docs: rewrite README for free-code

Replace the research-archive README with a proper project README
covering what free-code is, build instructions, feature flags,
and project structure.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
paoloanzn 2 ay önce
ebeveyn
işleme
33f530dc70
1 değiştirilmiş dosya ile 137 ekleme ve 218 silme
  1. 137 218
      README.md

+ 137 - 218
README.md

@@ -1,280 +1,199 @@
-# Claude Code Source Snapshot for Security Research
+# free-code
 
-> 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**.
+**The free build of Claude Code.**
 
----
-
-## Research Context
+All telemetry stripped. All injected security-prompt guardrails removed. All experimental features unlocked. One binary, zero callbacks home.
 
-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
+---
 
-This archive is intended to support:
+## What is this
 
-- educational study
-- security research practice
-- architecture review
-- discussion of packaging and release-process failures
+This is a clean, buildable fork of Anthropic's [Claude Code](https://docs.anthropic.com/en/docs/claude-code) CLI -- the terminal-native AI coding agent. The upstream source became publicly available on March 31, 2026 through a source map exposure in the npm distribution.
 
-It does **not** claim ownership of the original code, and it should not be interpreted as an official Anthropic repository.
+This fork applies three categories of changes on top of that snapshot:
 
----
+### 1. Telemetry removed
 
-## How the Public Snapshot Became Accessible
+The upstream binary phones home through OpenTelemetry/gRPC, GrowthBook analytics, Sentry error reporting, and custom event logging. In this build:
 
-[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:
+- All outbound telemetry endpoints are dead-code-eliminated or stubbed
+- GrowthBook feature flag evaluation still works locally (needed for runtime feature gates) but does not report back
+- No crash reports, no usage analytics, no session fingerprinting
 
-> **"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)
+### 2. Security-prompt guardrails removed
 
-The published source map referenced unobfuscated TypeScript sources hosted in Anthropic's R2 storage bucket, which made the `src/` snapshot publicly downloadable.
+Anthropic injects system-level instructions into every conversation that constrain Claude's behavior beyond what the model itself enforces. These include:
 
----
+- Hardcoded refusal patterns for certain categories of prompts
+- Injected "cyber risk" instruction blocks
+- Managed-settings security overlays pushed from Anthropic's servers
 
-## Repository Scope
+This build strips those injections. The model's own safety training still applies -- this just removes the extra layer of prompt-level restrictions that the CLI wraps around it.
 
-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.
+### 3. Experimental features enabled
 
-This repository contains a mirrored `src/` snapshot for research and analysis.
+Claude Code ships with dozens of feature flags gated behind `bun:bundle` compile-time switches. Most are disabled in the public npm release. This build unlocks all 45+ flags that compile cleanly, including:
 
-- **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
+| Feature | What it does |
+|---|---|
+| `ULTRAPLAN` | Remote multi-agent planning on Claude Code web (Opus-class) |
+| `ULTRATHINK` | Deep thinking mode -- type "ultrathink" to boost reasoning effort |
+| `VOICE_MODE` | Push-to-talk voice input and dictation |
+| `AGENT_TRIGGERS` | Local cron/trigger tools for background automation |
+| `BRIDGE_MODE` | IDE remote-control bridge (VS Code, JetBrains) |
+| `TOKEN_BUDGET` | Token budget tracking and usage warnings |
+| `BUILTIN_EXPLORE_PLAN_AGENTS` | Built-in explore/plan agent presets |
+| `VERIFICATION_AGENT` | Verification agent for task validation |
+| `BASH_CLASSIFIER` | Classifier-assisted bash permission decisions |
+| `EXTRACT_MEMORIES` | Post-query automatic memory extraction |
+| `HISTORY_PICKER` | Interactive prompt history picker |
+| `MESSAGE_ACTIONS` | Message action entrypoints in the UI |
+| `QUICK_SEARCH` | Prompt quick-search |
+| `SHOT_STATS` | Shot-distribution stats |
+| `COMPACTION_REMINDERS` | Smart reminders around context compaction |
+| `CACHED_MICROCOMPACT` | Cached microcompact state through query flows |
+
+See [FEATURES.md](FEATURES.md) for the full audit of all 88 flags and their status.
 
 ---
 
-## Directory Structure
+## Requirements
 
-```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
+- [Bun](https://bun.sh) >= 1.3.11
+- macOS or Linux (Windows via WSL)
+- An Anthropic API key (set `ANTHROPIC_API_KEY` in your environment)
+
+```bash
+# Install Bun if you don't have it
+curl -fsSL https://bun.sh/install | bash
 ```
 
 ---
 
-## Architecture Summary
+## Build
 
-### 1. Tool System (`src/tools/`)
+```bash
+# Clone the repo
+git clone https://github.com/paoloanzn/claude-code.git
+cd claude-code
 
-Every tool Claude Code can invoke is implemented as a self-contained module. Each tool defines its input schema, permission model, and execution logic.
+# Install dependencies
+bun install
 
-| 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 |
+# Standard build -- produces ./cli
+bun run build
 
-### 4. Bridge System (`src/bridge/`)
+# Dev build -- dev version stamp, experimental GrowthBook key
+bun run build:dev
 
-A bidirectional communication layer connecting IDE extensions (VS Code, JetBrains) with the Claude Code CLI.
+# Dev build with ALL experimental features enabled -- produces ./cli-dev
+bun run build:dev:full
 
-- `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
+# Compiled build (alternative output path) -- produces ./dist/cli
+bun run compile
+```
 
-### 5. Permission System (`src/hooks/toolPermission/`)
+### Build variants
 
-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.).
+| Command | Output | Features | Notes |
+|---|---|---|---|
+| `bun run build` | `./cli` | `VOICE_MODE` only | Production-like binary |
+| `bun run build:dev` | `./cli-dev` | `VOICE_MODE` only | Dev version stamp |
+| `bun run build:dev:full` | `./cli-dev` | All 45+ experimental flags | The full unlock build |
+| `bun run compile` | `./dist/cli` | `VOICE_MODE` only | Alternative output directory |
 
-### 6. Feature Flags
+### Individual feature flags
 
-Dead code elimination via Bun's `bun:bundle` feature flags:
+You can enable specific flags without the full bundle:
 
-```typescript
-import { feature } from 'bun:bundle'
+```bash
+# Enable just ultraplan and ultrathink
+bun run ./scripts/build.ts --feature=ULTRAPLAN --feature=ULTRATHINK
 
-// Inactive code is completely stripped at build time
-const voiceCommand = feature('VOICE_MODE')
-  ? require('./commands/voice/index.js').default
-  : null
+# Enable a specific flag on top of the dev build
+bun run ./scripts/build.ts --dev --feature=BRIDGE_MODE
 ```
 
-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.
+## Run
 
-### `Tool.ts` (~29K lines)
+```bash
+# Run the built binary directly
+./cli
 
-Defines base types and interfaces for all tools — input schemas, permission models, and progress state types.
+# Or the dev binary
+./cli-dev
 
-### `commands.ts` (~25K lines)
+# Or run from source without compiling (slower startup)
+bun run dev
 
-Manages registration and execution of all slash commands. Uses conditional imports to load different command sets per environment.
+# Set your API key
+export ANTHROPIC_API_KEY="sk-ant-..."
 
-### `main.tsx`
+# Or use Claude.ai OAuth
+./cli /login
+```
 
-Commander.js-based CLI parser and React/Ink renderer initialization. At startup, it overlaps MDM settings, keychain prefetch, and GrowthBook initialization for faster boot.
+### Quick test
 
----
+```bash
+# One-shot mode
+./cli -p "what files are in this directory?"
 
-## Tech Stack
+# Interactive REPL (default)
+./cli
 
-| 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 |
+# With specific model
+./cli --model claude-sonnet-4-6-20250514
+```
 
 ---
 
-## Notable Design Patterns
-
-### Parallel Prefetch
+## Project structure
 
-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()
 ```
+scripts/
+  build.ts              # Build script with feature flag system
 
-### Lazy Loading
-
-Heavy modules (OpenTelemetry, gRPC, analytics, and some feature-gated subsystems) 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
+src/
+  entrypoints/cli.tsx   # CLI entrypoint
+  commands.ts           # Command registry (slash commands)
+  tools.ts              # Tool registry (agent tools)
+  QueryEngine.ts        # LLM query engine
+  screens/REPL.tsx      # Main interactive UI
+
+  commands/             # /slash command implementations
+  tools/                # Agent tool implementations (Bash, Read, Edit, etc.)
+  components/           # Ink/React terminal UI components
+  hooks/                # React hooks
+  services/             # API client, MCP, OAuth, analytics
+  state/                # App state store
+  utils/                # Utilities
+  skills/               # Skill system
+  plugins/              # Plugin system
+  bridge/               # IDE bridge
+  voice/                # Voice input
+  tasks/                # Background task management
+```
 
-Reusable workflows defined in `skills/` are executed through `SkillTool`. Users can add custom skills.
+---
 
-### Plugin Architecture
+## Tech stack
 
-Built-in and third-party plugins are loaded through the `plugins/` subsystem.
+| | |
+|---|---|
+| Runtime | [Bun](https://bun.sh) |
+| Language | TypeScript |
+| Terminal UI | React + [Ink](https://github.com/vadimdemedes/ink) |
+| CLI parsing | [Commander.js](https://github.com/tj/commander.js) |
+| Schema validation | Zod v4 |
+| Code search | ripgrep (bundled) |
+| Protocols | MCP, LSP |
+| API | Anthropic Messages API |
 
 ---
 
-## Research / Ownership Disclaimer
+## License
 
-- 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**.
+The original Claude Code source is the property of Anthropic. This fork exists because the source was publicly exposed through their npm distribution. Use at your own discretion.