TypeScript code extracted from the official Claude Code package by Anthropic

  • I used Claude Code to understand the source code of Claude Code:

      1. Tool-Based Action Framework
        - Tools implement a common interface (Tool.ts) with standard methods
        - Central registry in tools.ts manages tool availability and permissions
        - Tools are categorized as read-only or stateful, affecting execution strategy
      2. Agent Orchestration
        - query.ts serves as the orchestration engine that:
            - Identifies tool use requests in Claude's responses
          - Manages permissions and serializes/deserializes tool data
          - Schedules concurrent or serial tool execution based on tool type
          - Feeds tool results back to Claude in a recursive loop
      3. AgentTool Implementation
        - Enables recursive agent capabilities via sub-agent spawning
        - Sub-agents run with controlled permissions (typically read-only)
        - Each agent invocation is stateless and returns a single result
        - Implements progress streaming via async generators
      4. Execution Flow
        - User query → Claude response → Tool use requests → Permission checks
        - Tool execution → Results normalized → Results fed back to Claude
        - Process repeats with Claude potentially using additional tools
      5. Architectural Patterns
        - Async generators for streaming results and maintaining responsiveness
        - Hierarchical permission model controlling tool access
        - Normalized message formats ensuring consistent communication
        - Logging chains for tracking agent activities
        - Context management with optional compression (/compact)