pub struct CliSpec {
pub cli_id: &'static str,
pub label: &'static str,
pub bin_candidates: &'static [&'static str],
pub default_cli_args: &'static [&'static str],
pub adopt_command_patterns: &'static [&'static str],
pub supports_resume: bool,
pub passes_initial_prompt_via_args: bool,
pub tui_ready_marker: Option<&'static str>,
pub inject_term_xterm: bool,
}Expand description
Static description of one supported CLI.
Fields§
§cli_id: &'static strCanonical CLI identifier used in bot config and session records.
label: &'static strHuman-readable label shown in the setup wizard.
bin_candidates: &'static [&'static str]Binary names probed on PATH by the setup wizard, in priority order.
default_cli_args: &'static [&'static str]Default launch args suggested by the setup wizard for this CLI.
adopt_command_patterns: &'static [&'static str]Lowercase substrings matched (in CLI_SPECS order) against a zellij
pane command basename to recognize this CLI during adopt. Empty means
the CLI is never auto-recognized from a pane command.
supports_resume: boolWhether the adapter implements init.resume (workflow resume).
passes_initial_prompt_via_args: boolWhether the CLI accepts an initial prompt via spawn args while staying
interactive (opencode --prompt, gemini -i).
tui_ready_marker: Option<&'static str>Case-insensitive substring the CLI’s TUI renders once its input UI is
initialized (e.g. kimi’s “Welcome to Kimi Code”). The worker waits for
this marker before the first write_input so keystrokes typed during
TUI boot are not dropped. None disables the gate (CLIs that accept
the initial prompt via spawn args, or adapters that gate themselves).
inject_term_xterm: boolWhether the worker injects TERM=xterm-256color when the inherited
TERM is missing/empty/dumb (codex/traex require it).