* 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
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 andnpm run eval:smoke:runstill works against whateverclineis on$PATH(install withnpm i -g cline). The old build-and-link helpers and the auto-runningcline-evals-regression.ymlworkflow 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
clineCLI 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
- Create
evals/smoke-tests/scenarios/<name>/config.json - Add optional
template/directory with starting files - Run to verify:
npm run eval:smoke:run -- --scenario <name>
Contract Test
- Add to
src/core/api/transform/__tests__/ - 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_enabledsetting to test Claude 4 with native tools