Files
cline/evals
Saoud Rizwan 1f5e2086a1 chore: remove legacy cli/ source and adjacent dead glue (#10658)
* chore: remove legacy cli/ source and direct references

The legacy React Ink CLI in cli/ has been superseded by the new SDK
CLI at sdk/apps/cli/ (published as cline@nightly today, taking over
the cline npm package on the next latest cut).

This commit deletes the cli/ source tree (~9.5MB, 142 files) and the
remaining references that point at it:
- .clinerules/cli.md (the per-area tribal-knowledge file for working
  in cli/)
- package.json workspaces: drop the "cli" entry (root no longer
  publishes a workspace from there)
- package.json coverage excludes: drop the stale **/evals/cli/**
  paths (the directory does not exist)
- tsconfig.json: drop "cli/src/**/*" from the include list so the
  root typecheck stops trying to walk into a missing tree
- .github/copilot-instructions.md: drop the CLI architecture bullet
  and the cli/src/components/ModelPicker.tsx mention from the
  add-API-provider checklist

Intentionally left alone:
- .claude/hooks/claude-code-for-web-setup.sh references
  github.com/cli/cli (the gh CLI), not our deleted cli/
- src/core/locks/SqliteLockManager.ts comments mention
  cli/pkg/common/schema.go which is the Go-based cline-core schema,
  a different component
- .github/workflows/cline-evals-regression.yml is already disabled
  pending rewire at the new SDK CLI

* chore: remove orphaned legacy CLI distribution scripts

With cli/ gone, the public-install path (curl | bash → install.sh →
download CLI binaries from cline/cline GitHub releases) and the
enterprise endpoint-bundling helpers no longer have anything to
install or bundle:

- scripts/install.sh — curl-bash installer that downloaded the old
  CLI binary from cline/cline GH releases. The new install path is
  npm i -g cline.
- scripts/test-install.sh — only tested install.sh.
- scripts/test-bundled-endpoints.sh — built a VSIX *and* CLI tgz with
  bundled staging endpoints for enterprise distribution. The CLI half
  is dead; the VSIX half can be done with vsce + add-endpoints-to-vsix.sh
  directly. The script as a whole was niche test infra, not production.
- scripts/add-endpoints-to-npm.sh — injected endpoints.json into the
  old CLI's npm tarball. Companion add-endpoints-to-vsix.sh and
  add-endpoints-to-jetbrains.sh stay (they target the extension and
  JetBrains plugin).
- package.json: drop the orphaned `test:install` root script that
  wrapped scripts/test-install.sh.

If install.cline.bot (or any public URL) was still serving
scripts/install.sh as a curl|bash target, that URL will 404 after
this lands. Worth checking and either redirecting or stubbing with
a `npm i -g cline` hint.

* chore: clean up legacy CLI references

* chore: disable legacy smoke eval workflow

* Revert "chore: disable legacy smoke eval workflow"

This reverts commit 193ee78718.

* chore: remove disabled smoke eval workflow

* docs: clarify disabled smoke eval CI
2026-05-13 22:13:58 -07:00
..
2026-05-11 21:42:36 +02:00
2025-06-20 11:41:16 -07:00

Cline Evaluation Framework

A layered testing system for measuring Cline's performance at different levels.

Note: Smoke tests (Layer 2) are partially disabled while the eval framework is repointed at the new SDK CLI. The scenarios under evals/smoke-tests/ are preserved and npm run eval:smoke:run still works against whatever cline is on $PATH (install with npm i -g cline). The old build-and-link helpers and the auto-running cline-evals-regression.yml workflow are off until someone wires the build step at the new SDK CLI.

Directory Structure

evals/
├── smoke-tests/           # Quick provider validation (minutes)
│   ├── run-smoke-tests.ts
│   └── scenarios/         # 5 curated test scenarios
│
├── e2e/                   # Full E2E with cline-bench (hours)
│   └── run-cline-bench.ts
│
├── cline-bench/           # Real-world tasks (git submodule)
│   └── tasks/             # 12 production bug fixes
│
├── analysis/              # Metrics and reporting framework
│   ├── src/
│   │   ├── metrics.ts     # pass@k, pass^k calculations
│   │   ├── classifier.ts  # Failure pattern matching
│   │   └── reporters/     # Markdown, JSON output
│   └── patterns/
│       └── cline-failures.yaml
│
└── baselines/             # Performance baselines for regression detection

Test Layers

Layer 1: Contract Tests (Unit)

Location: src/core/api/transform/__tests__/

Tests API transform logic without LLM calls:

  • Thinking trace preservation
  • Tool call parsing (XML, native formats)
  • Provider format conversions
npm run test:unit -- --grep "Thinking\|Tool Call"

Layer 2: Smoke Tests (Minutes)

Location: evals/smoke-tests/

Quick validation across providers with real LLM calls:

  • 5 curated scenarios
  • 3 trials per test for pass@k metrics
  • Runs the cline CLI with --config, -y, -t, and -m
# Set API key (Cline provider)
export CLINE_API_KEY=sk-...

# Run smoke tests
npm run eval:smoke:run

# Run specific scenario
npm run eval:smoke:run -- --scenario 01-create-file

# Run with specific model (overrides per-scenario models)
npm run eval:smoke:run -- --model anthropic/claude-sonnet-4.5

Layer 3: E2E Tests (Hours)

Location: evals/e2e/ + evals/cline-bench/

Full agent tests on production-grade tasks:

  • 12 real-world coding problems
  • Docker/Daytona execution via Harbor
  • Nightly CI runs
# Prerequisites: Python 3.13, Harbor, Docker
npm run eval:e2e

# Specific task
npm run eval:e2e -- --tasks discord

# Different provider
npm run eval:e2e -- --provider openai --model gpt-4o

Metrics

The framework calculates:

Metric Formula Interpretation
pass@k P(≥1 of k passes) Solution finding capability
pass^k P(all k pass) Reliability
Flakiness Entropy of pass rate Consistency

With 3 trials:

  • All pass → pass (reliable)
  • All fail → fail (broken)
  • Mixed → flaky (needs investigation)

CI Integration

  • Current PR gate: contract tests only
  • Smoke test CI: temporarily disabled while the workflow is repointed at the SDK CLI
  • Nightly: E2E tests with cline-bench are not yet implemented, see TODO

Quick Start

# Run all fast tests
npm run test:unit
npm run eval:smoke:run

# Run E2E (requires setup)
cd evals/cline-bench
# Follow README.md for Harbor setup
npm run eval:e2e

Adding Tests

Smoke Test Scenario

  1. Create evals/smoke-tests/scenarios/<name>/config.json
  2. Add optional template/ directory with starting files
  3. Run to verify: npm run eval:smoke:run -- --scenario <name>

Contract Test

  1. Add to src/core/api/transform/__tests__/
  2. Run: npm run test:unit -- --grep "YourTest"

E2E Task

Contribute to cline/cline-bench

Resources

TODO

  • Nightly E2E CI: Add scheduled workflow for cline-bench tests
    • Requires: Docker runner, Harbor setup, ~1-2 hour timeout
    • Should run on schedule (e.g., nightly) not per-PR
    • Separate secrets for E2E environment
  • Native tool calling smoke tests: Add CLI support for native_tool_call_enabled setting to test Claude 4 with native tools