#[derive(Clone, Copy)]
pub enum DynamicKind {
Agents,
Shells,
Modes,
ConfigKeys,
Profiles,
TerseLevel,
}
pub struct FlagSpec {
pub long: &'static str,
pub short: Option<char>,
pub description: &'static str,
pub takes_value: bool,
pub value_kind: Option<DynamicKind>,
}
pub struct CommandNode {
pub name: &'static str,
pub aliases: &'static [&'static str],
pub description: &'static str,
pub subcommands: &'static [CommandNode],
pub flags: &'static [FlagSpec],
pub positional: Option<DynamicKind>,
pub hidden: bool,
}
pub static COMMAND_TREE: &[CommandNode] = &[
CommandNode {
name: "model",
aliases: &[],
description: "Install and manage local models",
subcommands: &[
CommandNode {
name: "install",
aliases: &[],
description: "Install a model",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "status",
aliases: &[],
description: "Show installed models",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "remove",
aliases: &[],
description: "Remove a model",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "triage",
aliases: &[],
description: "Inspect semantic triage shadow accuracy",
subcommands: &[CommandNode {
name: "accuracy",
aliases: &[],
description: "Show semantic-shadow agreement report",
subcommands: &[],
flags: &[FlagSpec {
long: "--json",
short: None,
description: "JSON output",
takes_value: false,
value_kind: None,
}],
positional: None,
hidden: false,
}],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "shell",
aliases: &[],
description: "Activate shell integration",
subcommands: &[],
flags: &[
FlagSpec {
long: "--agent",
short: Some('a'),
description: "Agent name",
takes_value: true,
value_kind: Some(DynamicKind::Agents),
},
FlagSpec {
long: "--mode",
short: Some('m'),
description: "Integration mode",
takes_value: true,
value_kind: Some(DynamicKind::Modes),
},
],
positional: Some(DynamicKind::Shells),
hidden: false,
},
CommandNode {
name: "init",
aliases: &["setup", "onboard", "install", "bootstrap"],
description: "Initialize lean-ctx for an agent",
subcommands: &[],
flags: &[
FlagSpec {
long: "--agent",
short: Some('a'),
description: "Agent name",
takes_value: true,
value_kind: Some(DynamicKind::Agents),
},
FlagSpec {
long: "--mode",
short: Some('m'),
description: "Integration mode",
takes_value: true,
value_kind: Some(DynamicKind::Modes),
},
],
positional: None,
hidden: false,
},
CommandNode {
name: "status",
aliases: &[],
description: "Show current status",
subcommands: &[],
flags: &[FlagSpec {
long: "--json",
short: None,
description: "JSON output",
takes_value: false,
value_kind: None,
}],
positional: None,
hidden: false,
},
CommandNode {
name: "config",
aliases: &[],
description: "Manage configuration",
subcommands: &[
CommandNode {
name: "get",
aliases: &[],
description: "Get a config value",
subcommands: &[],
flags: &[],
positional: Some(DynamicKind::ConfigKeys),
hidden: false,
},
CommandNode {
name: "set",
aliases: &[],
description: "Set a config value",
subcommands: &[],
flags: &[],
positional: Some(DynamicKind::ConfigKeys),
hidden: false,
},
CommandNode {
name: "edit",
aliases: &[],
description: "Open config in editor",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "show",
aliases: &[],
description: "Show current config",
subcommands: &[],
flags: &[FlagSpec {
long: "--json",
short: None,
description: "JSON output",
takes_value: false,
value_kind: None,
}],
positional: None,
hidden: false,
},
],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "proxy",
aliases: &["serve"],
description: "Start the proxy server",
subcommands: &[
CommandNode {
name: "start",
aliases: &[],
description: "Start proxy",
subcommands: &[],
flags: &[
FlagSpec {
long: "--detach",
short: Some('d'),
description: "Run in background",
takes_value: false,
value_kind: None,
},
FlagSpec {
long: "--port",
short: Some('p'),
description: "Port number",
takes_value: true,
value_kind: None,
},
],
positional: None,
hidden: false,
},
CommandNode {
name: "stop",
aliases: &[],
description: "Stop proxy",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
],
flags: &[
FlagSpec {
long: "--port",
short: Some('p'),
description: "Port number",
takes_value: true,
value_kind: None,
},
FlagSpec {
long: "--detach",
short: Some('d'),
description: "Run in background",
takes_value: false,
value_kind: None,
},
],
positional: None,
hidden: false,
},
CommandNode {
name: "dashboard",
aliases: &[],
description: "Open the dashboard",
subcommands: &[],
flags: &[FlagSpec {
long: "--port",
short: Some('p'),
description: "Port number",
takes_value: true,
value_kind: None,
}],
positional: None,
hidden: false,
},
CommandNode {
name: "cache",
aliases: &[],
description: "Manage the cache",
subcommands: &[
CommandNode {
name: "stats",
aliases: &[],
description: "Cache statistics",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "clear",
aliases: &[],
description: "Clear cache",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "export",
aliases: &[],
description: "Export cache",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "terse",
aliases: &["compression"],
description: "Set compression level",
subcommands: &[],
flags: &[],
positional: Some(DynamicKind::TerseLevel),
hidden: false,
},
CommandNode {
name: "profile",
aliases: &[],
description: "Set tool profile",
subcommands: &[],
flags: &[],
positional: Some(DynamicKind::Profiles),
hidden: false,
},
CommandNode {
name: "gain",
aliases: &[],
description: "Show token savings",
subcommands: &[],
flags: &[
FlagSpec {
long: "--json",
short: None,
description: "JSON output",
takes_value: false,
value_kind: None,
},
FlagSpec {
long: "--by-tool",
short: None,
description: "Per-tool savings breakdown",
takes_value: false,
value_kind: None,
},
],
positional: None,
hidden: false,
},
CommandNode {
name: "spend",
aliases: &["billing", "finops", "roi"],
description: "Show cost report",
subcommands: &[],
flags: &[FlagSpec {
long: "--json",
short: None,
description: "JSON output",
takes_value: false,
value_kind: None,
}],
positional: None,
hidden: false,
},
CommandNode {
name: "index",
aliases: &[],
description: "Build or rebuild search index",
subcommands: &[],
flags: &[FlagSpec {
long: "--force",
short: Some('f'),
description: "Force rebuild",
takes_value: false,
value_kind: None,
}],
positional: None,
hidden: false,
},
CommandNode {
name: "explore",
aliases: &["repomap", "repo-map"],
description: "Explore repository structure",
subcommands: &[],
flags: &[
FlagSpec {
long: "--depth",
short: Some('d'),
description: "Max depth",
takes_value: true,
value_kind: None,
},
FlagSpec {
long: "--json",
short: None,
description: "JSON output",
takes_value: false,
value_kind: None,
},
],
positional: None,
hidden: false,
},
CommandNode {
name: "compress",
aliases: &["compact"],
description: "Compress input",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "update",
aliases: &["upgrade"],
description: "Update lean-ctx",
subcommands: &[],
flags: &[FlagSpec {
long: "--check",
short: None,
description: "Check only, don't install",
takes_value: false,
value_kind: None,
}],
positional: None,
hidden: false,
},
CommandNode {
name: "stop",
aliases: &[],
description: "Stop all lean-ctx processes",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "restart",
aliases: &[],
description: "Restart lean-ctx",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "dev-install",
aliases: &[],
description: "Development install (stop+build+install+restart)",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "wrap",
aliases: &[],
description: "One-command setup for an agent",
subcommands: &[],
flags: &[],
positional: Some(DynamicKind::Agents),
hidden: false,
},
CommandNode {
name: "unwrap",
aliases: &[],
description: "Undo wrap, restore pre-wrap config",
subcommands: &[],
flags: &[],
positional: Some(DynamicKind::Agents),
hidden: false,
},
CommandNode {
name: "doctor",
aliases: &[],
description: "Diagnose installation issues",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "selftest",
aliases: &["health"],
description: "Run self-test",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "rules",
aliases: &[],
description: "Manage rules",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "export-rules",
aliases: &[],
description: "Export rules to file",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "harden",
aliases: &["security", "lockdown"],
description: "Harden security settings",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "completions",
aliases: &[],
description: "Generate shell completion script",
subcommands: &[],
flags: &[],
positional: Some(DynamicKind::Shells),
hidden: false,
},
CommandNode {
name: "gotchas",
aliases: &["bugs"],
description: "Show known gotchas",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "learn",
aliases: &[],
description: "Interactive learning",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "cloud",
aliases: &[],
description: "Cloud features",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "help",
aliases: &[],
description: "Show help",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "eval",
aliases: &[],
description: "Evaluate compression quality",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "audit",
aliases: &["compliance"],
description: "Run compliance audit",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "agent",
aliases: &[],
description: "Manage agent integrations",
subcommands: &[],
flags: &[FlagSpec {
long: "--agent",
short: Some('a'),
description: "Agent name",
takes_value: true,
value_kind: Some(DynamicKind::Agents),
}],
positional: None,
hidden: false,
},
CommandNode {
name: "session",
aliases: &["sessions"],
description: "Manage sessions",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "knowledge",
aliases: &[],
description: "Manage knowledge base",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "stats",
aliases: &["introspect"],
description: "Show statistics",
subcommands: &[],
flags: &[FlagSpec {
long: "--json",
short: None,
description: "JSON output",
takes_value: false,
value_kind: None,
}],
positional: None,
hidden: false,
},
CommandNode {
name: "cheatsheet",
aliases: &[],
description: "Show cheatsheet",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "mcp",
aliases: &[],
description: "MCP server management",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "wrapped",
aliases: &[],
description: "Show wrapped summary",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "addon",
aliases: &["addons", "plugin", "plugins"],
description: "Manage addons",
subcommands: &[
CommandNode {
name: "list",
aliases: &[],
description: "List addons",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "install",
aliases: &[],
description: "Install addon",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "remove",
aliases: &[],
description: "Remove addon",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "info",
aliases: &[],
description: "Addon info",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "savings",
aliases: &[],
description: "Show local compression savings",
subcommands: &[],
flags: &[
FlagSpec {
long: "--period",
short: None,
description: "Period: day, week, month, or all",
takes_value: true,
value_kind: None,
},
FlagSpec {
long: "--format",
short: None,
description: "Output: table, json, or markdown",
takes_value: true,
value_kind: None,
},
],
positional: None,
hidden: false,
},
CommandNode {
name: "output-savings",
aliases: &["output_savings"],
description: "Output-token reduction report",
subcommands: &[],
flags: &[FlagSpec {
long: "--json",
short: None,
description: "JSON output",
takes_value: false,
value_kind: None,
}],
positional: None,
hidden: false,
},
CommandNode {
name: "value-report",
aliases: &["value_report"],
description: "Show local Value Gate outcomes and cost",
subcommands: &[],
flags: &[
FlagSpec {
long: "--format",
short: None,
description: "Output: table, markdown, or json",
takes_value: true,
value_kind: None,
},
FlagSpec {
long: "--last",
short: None,
description: "Maximum assessments to include",
takes_value: true,
value_kind: None,
},
FlagSpec {
long: "--since",
short: None,
description: "Only assessments since YYYY-MM-DD",
takes_value: true,
value_kind: None,
},
FlagSpec {
long: "--live",
short: None,
description: "Read the live Value Gate store",
takes_value: false,
value_kind: None,
},
],
positional: None,
hidden: false,
},
CommandNode {
name: "shadow",
aliases: &[],
description: "Inspect local Shadow Mode reports",
subcommands: &[],
flags: &[
FlagSpec {
long: "--latest",
short: None,
description: "Show the latest report",
takes_value: false,
value_kind: None,
},
FlagSpec {
long: "--list",
short: None,
description: "List recorded reports",
takes_value: false,
value_kind: None,
},
FlagSpec {
long: "--force",
short: None,
description: "Generate a fresh report",
takes_value: false,
value_kind: None,
},
],
positional: None,
hidden: false,
},
CommandNode {
name: "scenario",
aliases: &[],
description: "Run Decision Loop scenarios",
subcommands: &[],
flags: &[FlagSpec {
long: "--format",
short: None,
description: "Output: text or json",
takes_value: true,
value_kind: None,
}],
positional: None,
hidden: false,
},
CommandNode {
name: "measure",
aliases: &[],
description: "Record and compare baseline versus lean-ctx treatment",
subcommands: &[
CommandNode {
name: "baseline-start",
aliases: &[],
description: "Start baseline recording",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "baseline-stop",
aliases: &[],
description: "Stop baseline recording",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "treatment-start",
aliases: &[],
description: "Start treatment recording",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "treatment-stop",
aliases: &[],
description: "Stop treatment recording",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "compare",
aliases: &[],
description: "Show side-by-side comparison",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "report",
aliases: &[],
description: "Generate customer-facing report",
subcommands: &[],
flags: &[FlagSpec {
long: "--format",
short: None,
description: "Output: markdown or json",
takes_value: true,
value_kind: None,
}],
positional: None,
hidden: false,
},
],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "evidence-export",
aliases: &[],
description: "Export portable local evidence package",
subcommands: &[],
flags: &[
FlagSpec {
long: "--output",
short: None,
description: "Destination directory",
takes_value: true,
value_kind: None,
},
FlagSpec {
long: "--format",
short: None,
description: "Confirmation output: markdown or json",
takes_value: true,
value_kind: None,
},
],
positional: None,
hidden: false,
},
CommandNode {
name: "prove",
aliases: &[],
description: "Generate Decision Loop evidence report",
subcommands: &[],
flags: &[
FlagSpec {
long: "--format",
short: None,
description: "Output format: table, json, or markdown",
takes_value: true,
value_kind: None,
},
FlagSpec {
long: "--output",
short: None,
description: "Write report to file",
takes_value: true,
value_kind: None,
},
],
positional: None,
hidden: false,
},
CommandNode {
name: "verify",
aliases: &["proof"],
description: "Verify cache integrity",
subcommands: &[],
flags: &[
FlagSpec {
long: "--real",
short: None,
description: "Measure the canonical ten-task production suite",
takes_value: false,
value_kind: None,
},
FlagSpec {
long: "--json",
short: None,
description: "JSON output for --real",
takes_value: false,
value_kind: None,
},
],
positional: None,
hidden: false,
},
CommandNode {
name: "verify-cache",
aliases: &["cache-selftest"],
description: "Verify cache consistency",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "visualize",
aliases: &[],
description: "Visualize context graph",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "instructions",
aliases: &[],
description: "Show agent instructions",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "semantic-search",
aliases: &["search-code"],
description: "Semantic code search",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "read",
aliases: &[],
description: "Read and compress a file",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "call",
aliases: &[],
description: "Call an MCP tool",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "diff",
aliases: &[],
description: "Compressed diff",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "grep",
aliases: &["find"],
description: "Search with compression",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "glob",
aliases: &[],
description: "Glob file search",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "ls",
aliases: &[],
description: "List directory contents",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "deps",
aliases: &[],
description: "Show dependencies",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "discover",
aliases: &[],
description: "Discover project structure",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "ghost",
aliases: &[],
description: "Ghost context injection",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "filter",
aliases: &[],
description: "Filter context",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "heatmap",
aliases: &[],
description: "Show file heatmap",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "graph",
aliases: &[],
description: "Show dependency graph",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "smells",
aliases: &[],
description: "Detect code smells",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "ledger",
aliases: &[],
description: "Token usage ledger",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "control",
aliases: &[],
description: "Runtime control",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "plan",
aliases: &[],
description: "Plan context strategy",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "compile",
aliases: &[],
description: "Compile context",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "skillify",
aliases: &[],
description: "Generate skill from code",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "summary",
aliases: &["overview"],
description: "Show project summary",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "benchmark",
aliases: &[],
description: "Run compression benchmarks",
subcommands: &[CommandNode {
name: "replay",
aliases: &[],
description: "Replay paired sessions with and without compression",
subcommands: &[],
flags: &[FlagSpec {
long: "--output",
short: None,
description: "Write Markdown report to a file",
takes_value: true,
value_kind: None,
}],
positional: None,
hidden: false,
}],
flags: &[
FlagSpec {
long: "--real",
short: None,
description: "Run with real file system tasks",
takes_value: false,
value_kind: None,
},
FlagSpec {
long: "--json",
short: None,
description: "JSON output",
takes_value: false,
value_kind: None,
},
],
positional: None,
hidden: false,
},
CommandNode {
name: "tools",
aliases: &[],
description: "List available MCP tools",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "allow",
aliases: &["trust"],
description: "Allow a command/path",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "untrust",
aliases: &[],
description: "Untrust a command/path",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "theme",
aliases: &[],
description: "Set dashboard theme",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "tee",
aliases: &[],
description: "Tee output to file",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "codesign-setup",
aliases: &[],
description: "Setup code signing",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "buddy",
aliases: &[],
description: "AI buddy assistant",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "learning",
aliases: &["conformance"],
description: "Show learning progress",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "token-report",
aliases: &["report-tokens"],
description: "Token usage report",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "pack",
aliases: &[],
description: "Pack context for export",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "policy",
aliases: &[],
description: "Manage security policies",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "cep",
aliases: &[],
description: "Context engineering pipeline",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "team",
aliases: &[],
description: "Team management",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "provider",
aliases: &[],
description: "Manage LLM providers",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "watch",
aliases: &[],
description: "Watch for file changes",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "yolo",
aliases: &["secure"],
description: "Toggle security mode",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "__complete",
aliases: &[],
description: "Dynamic completion (internal)",
subcommands: &[],
flags: &[],
positional: None,
hidden: true,
},
CommandNode {
name: "telemetry",
aliases: &[],
description: "Manage anonymous usage telemetry",
subcommands: &[
CommandNode {
name: "status",
aliases: &[],
description: "Show current telemetry status",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "on",
aliases: &[],
description: "Enable telemetry",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "off",
aliases: &[],
description: "Disable telemetry",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "show",
aliases: &[],
description: "Show current heartbeat payload",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "reset-id",
aliases: &[],
description: "Regenerate installation ID",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "history",
aliases: &["log"],
description: "Show log of sent heartbeats",
subcommands: &[],
flags: &[],
positional: None,
hidden: false,
},
],
flags: &[],
positional: None,
hidden: false,
},
CommandNode {
name: "daemon",
aliases: &[],
description: "Start daemon (internal)",
subcommands: &[],
flags: &[],
positional: None,
hidden: true,
},
];
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn no_duplicate_names_at_top_level() {
let mut seen = std::collections::HashSet::new();
for node in COMMAND_TREE {
assert!(seen.insert(node.name), "duplicate: {}", node.name);
}
}
#[test]
fn visible_count_exceeds_50() {
let visible = COMMAND_TREE.iter().filter(|n| !n.hidden).count();
assert!(
visible >= 30,
"expected at least 30 visible commands, got {visible}"
);
}
#[test]
fn command_tree_covers_known_commands() {
let known = crate::cli::dispatch::suggest::KNOWN_COMMANDS;
let tree_names: std::collections::HashSet<&str> = COMMAND_TREE
.iter()
.flat_map(|n| std::iter::once(n.name).chain(n.aliases.iter().copied()))
.collect();
let mut missing = Vec::new();
for cmd in known {
if !tree_names.contains(cmd) {
missing.push(*cmd);
}
}
assert!(
missing.is_empty(),
"KNOWN_COMMANDS entries missing from COMMAND_TREE: {missing:?}"
);
}
#[test]
fn benchmark_real_is_registered_for_completion() {
assert!(crate::cli::dispatch::suggest::KNOWN_COMMANDS.contains(&"benchmark"));
let benchmark = COMMAND_TREE
.iter()
.find(|node| node.name == "benchmark")
.expect("benchmark command must be registered");
assert!(benchmark.flags.iter().any(|flag| flag.long == "--real"));
assert!(benchmark.flags.iter().any(|flag| flag.long == "--json"));
}
}