Files
cline/evals/smoke-tests
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
..

Smoke Tests

Curated smoke tests that verify Cline works correctly with LLM providers.

Purpose

These tests catch regressions in:

  • Tool execution (read, write, edit files)
  • Provider response parsing
  • Tool chaining (multiple operations)
  • Basic code generation

Quick Start

# One-time auth setup
cline auth

# Run tests (3 trials by default)
npm run eval:smoke:run

Commands

Command What it does
npm run eval:smoke:run Run tests (uses installed CLI)

Options

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

# Run with fewer trials (faster)
npm run eval:smoke:run -- --trials 1

# Run with specific model (overrides any per-scenario models)
npm run eval:smoke:run -- --model claude-sonnet-4-5-20250929

Authentication

cline auth

With API key (for automation)

cline auth -p cline -k "$CLINE_API_KEY" -m anthropic/claude-sonnet-4.5

Scenarios

ID Name What it tests
01-create-file Create a simple file write_to_file
02-edit-file Edit existing file replace_in_file
03-read-summarize Read and summarize read_file
04-multi-file Create multiple files Multiple tool calls
05-typescript-function Generate TypeScript Code generation
06-apply-patch Edit file (GPT-5) apply_patch tool, native tool calling
07-edit-gemini Edit file (Gemini) Gemini model variant

Per-Scenario Models

Scenarios can specify their own model(s) via the models field in config.json. This is useful for testing model-specific code paths like apply_patch (GPT-5 only).

If you pass --model, it overrides any per-scenario models list.

Examples:

# Run apply_patch scenario with its default model (GPT-5)
npm run eval:smoke:run -- --scenario 06-apply-patch

# Force that scenario to use a specific model
npm run eval:smoke:run -- --scenario 06-apply-patch --model openai/gpt-4o

Metrics

  • pass@k: Probability at least 1 of k trials succeeds
  • pass^k: Probability ALL k trials succeed (reliability)

Shows pass@1 when trials < 3, pass@3 otherwise.

Adding New Scenarios

  1. Create directory: scenarios/<name>/
  2. Add config.json:
    {
      "name": "Human-readable name",
      "description": "What this tests",
      "prompt": "The task prompt for Cline",
      "expectedFiles": ["file1.txt"],
      "expectedContent": [
        { "file": "file1.txt", "contains": "expected text" }
      ],
      "timeout": 60
    }
    
  3. (Optional) Add template/ directory with starting files

CI Integration

Smoke test CI is temporarily disabled while the build step is repointed at the SDK CLI. The remaining root script runs the scenarios against whichever cline binary is already on $PATH.

Required Secrets

  • CLINE_API_KEY - Cline API key, needed when CI is re-enabled

Viewing Results

  • Local summaries are written under evals/smoke-tests/results/latest/

TODO

  • Native tool calling tests: Add CLI support for native_tool_call_enabled setting, then create a scenario that tests Claude 4 with native tool calling enabled (currently only GPT-5 models automatically use native tools via the Responses API)