feat(install): add Cline as a first-class runtime (#1991) (#2032)

Cline was documented as a supported runtime but was absent from
bin/install.js. This adds full Cline support:

- Registers --cline CLI flag and adds 'cline' to --all list
- Adds getDirName/getConfigDirFromHome/getGlobalDir entries (CLINE_CONFIG_DIR env var respected)
- Adds convertClaudeToCliineMarkdown() and convertClaudeAgentToClineAgent()
- Wires Cline into copyWithPathReplacement(), install(), writeManifest(), finishInstall()
- Local install writes to project root (like Claude Code), not .cline/ subdirectory
- Generates .clinerules at install root with GSD integration rules
- Installs get-shit-done engine and agents with path/brand replacement
- Adds Cline as option 4 in interactive menu (13-runtime menu, All = 14)
- Updates banner description to include Cline
- Exports convertClaudeToCliineMarkdown and convertClaudeAgentToClineAgent for testing
- Adds tests/cline-install.test.cjs with 17 regression tests
- Updates multi-runtime-select, copilot-install, kilo-install tests for new option numbers

Fixes #1991

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Tom Boucher
2026-04-10 11:47:22 -04:00
committed by GitHub
parent 14c3ef5b1f
commit aa3e9cfaf4
5 changed files with 359 additions and 74 deletions

View File

@@ -221,12 +221,12 @@ describe('Source code integration (Kilo)', () => {
assert.ok(src.includes("'kilo'"), '--all includes kilo runtime');
});
test('promptRuntime runtimeMap has Kilo as option 9', () => {
assert.ok(src.includes("'9': 'kilo'"), 'runtimeMap has 9 -> kilo');
test('promptRuntime runtimeMap has Kilo as option 10', () => {
assert.ok(src.includes("'10': 'kilo'"), 'runtimeMap has 10 -> kilo');
});
test('prompt text shows Kilo above OpenCode without marketing copy', () => {
assert.ok(src.includes('9${reset}) Kilo'), 'prompt lists Kilo as option 9');
assert.ok(src.includes('10${reset}) Kilo'), 'prompt lists Kilo as option 10');
assert.ok(!src.includes('the #1 AI coding platform on OpenRouter'), 'prompt does not include marketing tagline');
});