Skip to content

Latest commit

 

History

History
169 lines (146 loc) · 12.2 KB

File metadata and controls

169 lines (146 loc) · 12.2 KB

call-coding-clis Feature Tracking

Language Status

# Language Status Last Updated
1 Python active 2026-04-08
2 Rust active 2026-04-08
3 TypeScript active 2026-04-08
4 C active 2026-04-08
5 Go active 2026-04-08
6 Ruby active 2026-04-08
7 Perl active 2026-04-08
8 C++ active 2026-04-08
9 Zig active 2026-04-08
10 D active 2026-04-08
11 F# active 2026-04-08
12 Haskell active 2026-04-08
13 Nim active 2026-04-08
14 Crystal active 2026-04-08
15 PHP active 2026-04-08
16 PureScript active 2026-04-08
17 VBScript active 2026-04-08
18 x86-64 ASM active 2026-04-08
19 Elixir active 2026-04-08
20 OCaml active 2026-04-08

Feature Definitions

v1 Core Features (subprocess wrapper)

ID Feature Description
F01 build_prompt_spec Trims prompt, rejects empty/whitespace-only, returns CommandSpec
F02 CommandSpec Holds argv, optional stdin_text, cwd, env overrides
F03 CompletedRun Holds argv, exit_code (int), stdout (str), stderr (str)
F04 Runner.run Execute spec, return CompletedRun
F05 Runner.stream Execute spec with event callback, return CompletedRun
F06 ccc CLI ccc "<Prompt>" binary interface
F07 Prompt trimming Leading/trailing whitespace stripped
F08 Empty prompt rejection Empty/whitespace-only prompts rejected with exit 1
F09 Usage on bad args Missing/extra args prints usage to stderr, exit 1
F10 Stdin support CommandSpec.stdin_text piped to child process
F11 CWD support CommandSpec.cwd sets working directory
F12 Env override CommandSpec.env merged with process environment
F13 Startup failure reporting Missing binary produces stderr with "failed to start"
F14 Exit code forwarding Child exit code returned as-is
F15 Real runner overrides Env vars override bundled runner binaries for testing, including CCC_REAL_OPENCODE, CCC_REAL_CLAUDE, CCC_REAL_KIMI, and CCC_REAL_CURSOR

v2 Parser/Config Features

ID Feature Description
F16 Runner selector e.g., cc, oc, k, cu, g, p, gb, claude, opencode, kimi, cursor, gemini, pi, grok
F17 Thinking level +0 through +5 selector (0 none, 1 low, 2 medium, 3 high, 4 xhigh, 5 max); codex maps levels to -c model_reasoning_effort for gpt-5.6-style models and defaults to medium; lower-tier runners clamp +5 to their top tier
F18 Provider/model selector :provider:model and :model syntax
F19 Alias/preset @alias named presets
F20 Config file loading Read config for defaults, aliases, abbreviations
F21 Custom abbreviations User-defined runner abbreviations in config
F22 Default provider/model Config-backed default resolution
F32 Yolo mode --yolo / -y selects the runner's lowest-friction auto-approval mode
F33 Order-independent controls Pre-prompt control tokens may appear in any order; -- forces literal prompt text
F34 Permission mode `--permission-mode <safe
F35 Session persistence controls --save-session explicitly allows saved sessions, while default runner mappings avoid persistence where supported and warn otherwise; --cleanup-session tries safe post-run cleanup
F38 Fast mode --fast / --no-fast toggles the runner's fast mode where supported (codex maps to --enable fast_mode / --disable fast_mode); unsupported runners warn and ignore it
F40 Version update check After a run, warn when a newer ccc is available (crates.io / GitHub); config [update] check / auto_update / interval_hours; env CCC_UPDATE_CHECK, CCC_AUTO_UPDATE

v3 JSON Output Features

ID Feature Description
F23 JSON output parsing Parse structured JSON output from coding CLIs
F24 JSON schema: opencode Parse OpenCode JSON streaming format
F25 JSON schema: claude-code Parse Claude Code JSON streaming format
F26 JSON schema: kimi Parse Kimi JSON streaming format
F27 JSON render Render parsed JSON output consistently
F36 JSON schema: cursor-agent Parse Cursor Agent JSON and stream-json output
F37 JSON schema: pi Parse Pi JSON streaming format
F39 JSON schema: grok Parse Grok Build JSON / streaming-json output

v4 Testing & Infrastructure

ID Feature Description
F28 Unit tests Language-specific unit test suite
F29 Contract tests Pass cross-language contract tests
F30 Harness tests Pass mock-coding-cli harness tests
F31 JSON fixture tests Pass mock JSON output fixture tests

Feature Matrix

v1 Core Features

Feature Python Rust TypeScript C Go Ruby Perl C++ Zig D F# Haskell Nim Crystal PHP PureScript VBScript ASM Elixir OCaml
F01 build_prompt_spec yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes
F02 CommandSpec yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes
F03 CompletedRun yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes
F04 Runner.run yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes
F05 Runner.stream yes yes yes no yes yes fake fake yes yes yes yes yes yes yes yes yes no fake yes
F06 ccc CLI yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes
F07 Prompt trimming yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes
F08 Empty rejection yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes
F09 Usage on bad args yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes
F10 Stdin support yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes no yes yes
F11 CWD support yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes no yes yes
F12 Env override yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes no yes yes
F13 Startup failure yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes
F14 Exit code fwd yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes
F15 Real runner overrides yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes
F28 Unit tests yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes
F29 Contract tests yes yes yes yes yes yes yes yes yes yes yes yes - - yes - - yes - yes
F30 Harness tests yes yes yes yes yes yes yes yes yes yes yes yes - - yes - - yes - yes

v2 Parser/Config Features

Feature Python Rust TypeScript C Go Ruby Perl C++ Zig D F# Haskell Nim Crystal PHP PureScript VBScript ASM Elixir OCaml
F16 Runner selector yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes - yes n/a yes yes
F17 Thinking level yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes - yes n/a yes yes
F18 Provider/model yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes - yes n/a yes yes
F19 Alias/preset yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes - yes n/a yes yes
F20 Config loading yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes - yes n/a yes yes
F21 Custom abbrevs yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes - yes n/a yes yes
F22 Default prov/model yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes - yes n/a yes yes
F35 Session persistence controls yes yes - - - - - - - - - - - - - - - n/a - -

v3 JSON Output Features

Feature Python Rust TypeScript C Go Ruby Perl C++ Zig D F# Haskell Nim Crystal PHP PureScript VBScript ASM Elixir OCaml
F23 JSON parsing yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes - - n/a yes yes
F24 Schema: opencode yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes - - n/a yes yes
F25 Schema: claude yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes - - n/a yes yes
F26 Schema: kimi yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes - - n/a yes yes
F27 JSON render yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes - - n/a yes yes
F36 Schema: cursor-agent yes yes - - - - - - - - - - - - - - - n/a - -
F37 Schema: pi yes yes - - - - - - - - - - - - - - - n/a - -
F39 Schema: grok yes yes - - - - - - - - - - - - - - - n/a - -

Progress Tracking

Current Focus

  • All phases complete. Full test suite: 17 PASS, 0 FAIL, 5 SKIP
  • Comparison runner (compare_ccc.sh) validates all 14 active languages produce identical output
  • Python and Rust now define the reference semantics for --yolo and order-independent pre-prompt control tokens

Completed Milestones

  • Phase 1: Foundation — FEATURES.md, JSON fixtures, mock plan, all 8 original languages verified
  • Phase 2: All 12 remaining languages implemented (Zig, D, F#, Haskell, Nim, Crystal, PHP, PureScript, VBScript, x86-64 ASM, Elixir, OCaml)
  • Phase 3: v2 parser/config — parse_args, resolve_command, runner registry, config loading across 18/20 languages
  • Phase 4: v3 JSON output parsing — all 3 schemas across 18/20 languages
  • Cross-language: 15/20 languages in contract + harness tests; comparison runner covers 14 active
  • Root Cargo.toml fixed (serde_json dependency) — cargo run from project root now works

Skipped Languages (Known Issues)

  • Crystal: stdout/stderr channel ordering non-deterministic in harness
  • Nim: binary hangs (never closes stdin pipe) in harness
  • Elixir: escript hangs on invocation in harness
  • Haskell: requires cabal/ghc in PATH (passes locally, skipped in CI)
  • VBScript: Windows-only (WSH)
  • PureScript: requires spago toolchain
  • ASM: v1 only (no string processing for v2/v3)

Notes

  • C Runner.stream not implemented (known gap)
  • Perl/C++ Runner.stream is "fake passthrough"
  • ASM has no stdin/cwd/env support (raw syscalls, no libc)
  • Contract/harness tests wired for: Python, Rust, TypeScript, C, Go, Ruby, Perl, C++, Zig, D, F#, PHP, ASM, OCaml (14) + PureScript (contract only)