agentdetect#
import "github.com/jbcom/radioactive-ralph/internal/agentdetect"
Package agentdetect probes the local PATH for known agent CLIs and classifies each as Supported, Deprecated, RemoteDelegating, or Unknown, per spec docs/superpowers/specs/2026-07-16-supervisor-architecture-design.md §9 (“Providers (local-only)”): “local-only” means no cloud control surface in the loop — calling a hosted model API for inference is fine, but the agent SESSION itself must not be owned by a remote service.
Detect never runs a full agent turn; it only checks exec.LookPath and, for CLIs it finds, captures `–version` output. This keeps detection side-effect-free and fast enough to run on every supervisor/client startup.
Index#
func Suggest#
func Suggest(detected []DetectedCLI) []string
Suggest returns the names of every detected CLI classified Supported and actually found on PATH — the provider names radioactive_ralph should offer the user for this machine (e.g. during `radioactive_ralph init` provider selection).
type DetectedCLI#
DetectedCLI is one probed agent CLI candidate.
type DetectedCLI struct {
// Name is the candidate's canonical name (the PATH lookup key), e.g.
// "claude", "codex", "opencode", "gemini", "cursor-agent", "cursor",
// "agy".
Name string
// Path is the resolved executable path, empty if not found on PATH.
Path string
// Version is the captured `--version` output (trimmed), empty if
// the binary was not found or --version failed/produced nothing.
Version string
// Status classifies this CLI. See the Status constants.
Status Status
// Reason explains the Status, especially for Deprecated,
// RemoteDelegating, and Unknown, where the classification is not
// self-evident from the name alone.
Reason string
}
func Detect#
func Detect() []DetectedCLI
Detect probes PATH for every known agent CLI candidate and returns one DetectedCLI per candidate name, in the fixed order of the candidates table above. A candidate not found on PATH is still returned (Path and Version empty) so callers can report “not installed” distinctly from “installed but unsupported”.
type Status#
Status classifies one detected (or expected) agent CLI.
type Status int
const (
// Supported means the CLI runs a fully local agent session — no
// forced cloud project/dashboard/session ownership in the loop —
// and radioactive_ralph has (or plans) a runner for it.
Supported Status = iota
// Deprecated means the CLI/backend has been formally retired
// upstream; radioactive_ralph will not add or keep a runner for it.
Deprecated
// RemoteDelegating means the CLI hands the actual agent session off
// to a remote/cloud-hosted control surface — it fails the
// local-only bar even though it runs as a local binary.
RemoteDelegating
// Unknown means detection found the binary but could not confirm
// which bucket it belongs in (e.g. its local-vs-cloud behavior is
// unconfirmed), or the binary is not an agent CLI at all (e.g. an
// editor that happens to share a name with an agent CLI).
Unknown
)
func (Status) String#
func (s Status) String() string
String renders the status name for logs/errors.
Generated by gomarkdoc