AGENTS.md@cli · git:20260725.314800f · 2026-07-25 · sha256 f70896d88adc063e

AGENTS.md@cli git:20260725.314800fA

Immutable. This exact content never changes and is served at /api/v1/blob/f70896d88adc063e.

# CLI AGENTS.md

This file provides guidance to AI agents when working with the Kilo Code CLI package.

## Architecture Overview

The CLI is a **standalone Node.js process** that embeds the VSCode extension core. Each CLI instance runs in its own process, enabling **parallel execution** - this is how the agent manager spawns multiple agents working simultaneously.

### Core Design

1. **Process Isolation**: Each `kilocode` invocation is a separate process with its own state
2. **ClineProvider Wrapper**: The CLI wraps [`ClineProvider`](../src/core/webview/ClineProvider.ts) via [`handleCLIMessage()`](../src/core/webview/ClineProvider.ts:1355) - all webview messages route through this method
3. **VSCode API Mock**: [`cli/src/host/VSCode.ts`](src/host/VSCode.ts) provides a complete mock of the VSCode API
4. **Extension Host**: [`cli/src/host/ExtensionHost.ts`](src/host/ExtensionHost.ts) loads the extension and registers as a webview provider

### Message Flow

```
CLI UI (Ink/React) → Jotai Atoms → ExtensionService → ExtensionHost → ClineProvider.handleCLIMessage()
```

The CLI sends messages to `ClineProvider` the same way the VSCode webview does, just through `handleCLIMessage()` instead of `postMessage()`.

## Build & Run

```bash
# From root: build extension + CLI
pnpm cli:bundle

# Run CLI
cd cli && pnpm start

# Development (watch mode)
cd cli && pnpm start:dev
```

## Key Files

| File                                                     | Purpose                          |
| -------------------------------------------------------- | -------------------------------- |
| [`src/cli.ts`](src/cli.ts)                               | Main CLI class                   |
| [`src/host/ExtensionHost.ts`](src/host/ExtensionHost.ts) | Loads extension, routes messages |
| [`src/host/VSCode.ts`](src/host/VSCode.ts)               | VSCode API mock                  |
| [`src/services/extension.ts`](src/services/extension.ts) | Service layer wrapper            |