Skip to main content

Crate rpi_cli

Crate rpi_cli 

Source
Expand description

pi-cli — a terminal coding-agent CLI built on the rpi library crates.

It provides the argument surface, provider/model resolution, harness construction, output modes, and the interactive TUI that a harness-backed CLI needs.

§Surface

  • Argument parsing (args) — --provider/--model/--api-key, --thinking, --print/-p, --mode {text,json}, -c/--continue, -r/--resume, --session/--session-dir/--no-session, --tools/ -t, --exclude-tools/-xt, --no-tools, --no-builtin-tools, --system-prompt, --append-system-prompt, --name/-n, --verbose, --help/-h, --version/-v, positional messages, and @file attachments.
  • Provider/model resolution (provider) — API key from --api-key or the provider’s environment variable; model pattern provider/id[:thinking] resolved against the provider’s catalog.
  • Harness construction + run loop (session) — OsExecutionEnv + built-in read/write/edit/bash tools, durable JSONL session storage, AgentHarness, and the prompt_text → outcome run.
  • Output modes (modes) — print (text, single-shot) and json (newline-delimited harness events), plus a simple interactive REPL.
  • app (app) — argument dispatch, model resolution, harness build, mode dispatch, exit codes.

Resources load from .rpi/ and ~/.rpi/agent/; extensions are Rust cdylib plugins installed and developed with rpi install / rpi dev.

Modules§

agent_session
AgentSession — the coding-agent product layer over the harness.
app
CLI entry orchestrator. The main(args) function that:
args
CLI argument parsing + help text. Mirrors the TS The CLI arg surface, scoped to the flags the v1 Rust CLI honors.
auth
rpi auth subcommand — persistent credential management. Mirrors the Rust-relevant slice of the TS packages/coding-agent/src/cli/auth-command.ts
auth_guidance
Auth guidance strings.
brand
The startup brand lockup: the three-bar mark, the rpi wordmark, and the Rust crab standing in for the language name.
changelog
Changelog fetching and parsing.
config
Layout
dev_extension
Development workflow for Rust-native rpi extensions.
docs_tool
Built-in docs tool for looking up rpi usage documentation.
events
rpi events … — inspect the extension event journal (P3).
experimental
Experimental feature gate.
export
Session export functionality.
extension_api
Stable capability contracts shared by native and Node extension backends.
extensions_actions
B5a — the RuntimeActionHost impl over the harness, lived in rpi-cli (NOT rpi-harness) so rpi-extensions stays a leaf in the crate DAG. The trait is defined in rpi-extensions (JSON + primitives only); this is the host side that bridges the 16 [RuntimeActionId] actions to the harness.
extras
First-launch setup banner — thin host wrapper over the rpi-tui components.
fs_watch
Lightweight file watching for live reload.
install
rpi install — install a Rust cdylib extension from crates.io.
interactive_tui
Interactive mode for pi-cli.
key_trace
Env-gated key-event tracing for diagnosing terminal input problems (remote/mobile clients, “Enter inserted a newline”, paste-vs-typed Enter…).
llama_command
LLaMA.cpp integration command.
model_registry
Model registry runtime - dynamic model registration and refresh.
modes
Output modes. Mirrors the v1-relevant slice of the TS packages/coding-agent/src/modes/{print-mode,json-event,rpc-mode}.ts — the three run shapes a harness-backed CLI needs:
packages
Project-local Rust extension packages.
provider
Provider + model resolution. Mirrors the provider/model selection and request-auth portions of upstream’s model runtime.
remote
Remote client support for rpi --connect.
resource_dirs
Resource-directory resolution + project-wins dedupe for skills and prompt templates. Mirrors the precedence contract from pi’s DefaultResourceLoader/package-manager (resource-loader.ts:676-681, package-manager.ts:178-181): resources are ranked project=0/1 < user=2/3 < package=4, and addSkills/dedupePrompts are first-registration-wins on name → loading project before global means project wins on collision (skills.ts:399-428), with a collision diagnostic naming the winner (kept) and loser (dropped) paths.
resume_picker
Startup session picker used by -r / --resume.
session
Harness construction + session-storage wiring. Mirrors the Rust-side equivalent of the TS packages/coding-agent/src/core/sdk.ts (createAgentSession) — build the env, tools, durable session storage, and AgentHarnessOptions, then AgentHarness::create.
session_cwd
Stored-session working-directory recovery.
session_driver
Transport-agnostic session driver — the “only the transport differs” boundary.
settings
~/.rpi/agent/settings.json — saved user defaults. Mirrors the slice of pi’s Settings interface (packages/coding-agent/src/core/settings-manager.ts) that rpi honors: defaultProvider / defaultModel / defaultThinkingLevel (consumed by provider::resolve as pi’s findInitialModel step 3 — the saved default, when authed, wins over the built-in fallback), theme, packages, and configurable resource directories.
source_info
Resource provenance metadata.
timings
Central timing instrumentation for startup profiling.
transcript_view
Transport-agnostic transcript rendering.
trust
Trust management for project resources.
tui_shell
Driver-generic TUI shell.
updates
Lightweight update discovery and update commands.

Constants§

APP_NAME
The application name used in help + version output. Mirrors TS APP_NAME (the TS bin is "pi"; the Rust crate publishes under the rpi- namespace, so the binary + displayed name is "rpi" to match).
VERSION
Crate version, surfaced by rpi --version. Mirrors the TS VERSION export (sourced from package.json; here from env!("CARGO_PKG_VERSION")).