Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func HasFixableIssues ¶
HasFixableIssues reports whether the report contains any failing checks that the auto-fix harness knows how to handle. Drives the `--fix` hint in the doctor CLI — there's no point suggesting --fix when nothing in the report is fixable.
pi and piolium are treated as optional when claude (Path A) is available — the audit mode already has a working driver, so a missing Path B alone should not trigger the "re-run with --fix" hint. A missing bun is also ignored when npm is present, since the JS installs fall back to npm.
func NucleiTemplatesDir ¶
NucleiTemplatesDir resolves the nuclei templates directory from settings or the ~/nuclei-templates default. Exported so the `update` command resolves the same path as the doctor checks and fixes.
func ResolveFixKey ¶
ResolveFixKey is the exported form of resolveAlias: it maps a user-supplied --only token (e.g. "chrome", "nuclei") to its canonical fix key (e.g. "chromium", "nuclei-templates"). The doctor CLI uses it to render a focused view of just the components named in --only.
Types ¶
type AgentCheck ¶
type AgentCheck struct {
Status Status `json:"status"`
Name string `json:"name"`
Binary string `json:"binary,omitempty"`
Protocol string `json:"protocol,omitempty"`
PingResponse string `json:"ping_response,omitempty"`
Message string `json:"message,omitempty"`
Details []string `json:"details,omitempty"`
Tip string `json:"tip,omitempty"`
}
AgentCheck holds the outcome of the agent backend check.
type AuditPathStatus ¶
type AuditPathStatus struct {
OK bool // true when every component this path needs is healthy
Reasons []string // one line per failing component (e.g. "claude: not found in PATH")
}
AuditPathStatus describes one of the two driver paths under "Audit mode" in the doctor renderer. Paths are independent — either one being OK is enough to consider the audit mode usable.
func AuditPathA ¶
func AuditPathA(r *Report) AuditPathStatus
AuditPathA reports the status of the claude/audit driver path used by `vigolium agent audit --driver=audit`. Both the `claude` CLI and the embedded vigolium-audit binary are required; when `agent.audit.enabled=false` the path is treated as unavailable (the user has explicitly opted out).
func AuditPathB ¶
func AuditPathB(r *Report) AuditPathStatus
AuditPathB reports the status of the piolium driver path used by `vigolium agent audit --driver=piolium`. Needs pi (the runtime) and the piolium Pi extension loaded. pi is installed via bun or npm, but once present it's a standalone binary — neither bun nor npm is required at audit time, so they are not part of this path's required set.
type CheckResult ¶
type CheckResult struct {
Status Status `json:"status"`
Message string `json:"message,omitempty"`
Details []string `json:"details,omitempty"` // verbose-only diagnostic details
Tip string `json:"tip,omitempty"` // remediation hint shown at all verbosity levels
}
CheckResult holds the outcome of a single diagnostic check.
type Deps ¶
type Deps struct {
DB *database.DB
// DBErr carries the error from opening the database when DB is nil. The
// CLI populates this so checkDatabase can surface real connect failures
// (refused, auth failed, unknown host) instead of "not configured".
DBErr error
// ConfigErr carries the error from loading the configuration file when
// Settings fell back to defaults. doctor exists to REPORT broken state, so a
// config it could not read must be a failed check here rather than a log line
// nobody sees next to a report that says everything is fine.
ConfigErr error
// ConfigPath is the file the CLI actually resolved, so a report run with
// --config names the file it read rather than the default location. Empty
// falls back to the default path.
ConfigPath string
Queue queue.Queue
Settings *config.Settings
// ProbeBrowserLaunch, when set, makes the chromium check actually launch the
// resolved browser headless (catching a binary that passes --version but
// crashes on real startup). It spawns a browser process (~1-2s), so only the
// one-shot CLI paths (doctor, first-run init) enable it; the server
// /diagnostics endpoint leaves it off to stay a cheap, poll-safe readout.
ProbeBrowserLaunch bool
}
Deps provides the dependencies needed to run diagnostics. All fields are optional — nil values are handled gracefully.
type FixResult ¶
type FixResult struct {
Key string `json:"key"`
Label string `json:"label"`
Success bool `json:"success"`
Message string `json:"message"`
}
FixResult holds the outcome of a single fix attempt.
func RunFixes ¶
func RunFixes(ctx context.Context, report *Report, settings *config.Settings, only []string) []FixResult
RunFixes attempts to fix failing checks. If only is non-empty, only those items (and their required dependencies) are fixed.
pi and piolium are skipped by default when claude (Path A) is available — audit mode already has a working driver, so we don't want a bare `--fix` to pull in the Path B stack as well. Users who want both drivers can still opt in with `--fix --only piolium` (or `--only pi`).
The standalone bun install is skipped by default when npm is present — npm-equipped hosts use npm for the global installs. `--only bun` force- installs bun regardless.
type Report ¶
type Report struct {
Status Status `json:"status"` // "ready", "degraded", "not_ready"
Timestamp string `json:"timestamp"`
Config *CheckResult `json:"config"`
Database *CheckResult `json:"database"`
Initialized *CheckResult `json:"initialized"`
Queue *CheckResult `json:"queue,omitempty"`
Agent *AgentCheck `json:"agent"`
Browser *CheckResult `json:"browser"`
SessionsDir *CheckResult `json:"sessions_dir"`
EmbeddedBinaries map[string]*CheckResult `json:"embedded_binaries,omitempty"`
Audit *CheckResult `json:"audit,omitempty"` // omitted when audit integration is disabled
Piolium *CheckResult `json:"piolium,omitempty"` // soft check — feature-gates audit --driver=piolium
Tools map[string]*ToolCheck `json:"tools"`
TemplatesDir *CheckResult `json:"templates_dir"`
NucleiTemplates *CheckResult `json:"nuclei_templates"`
}
Report is the complete diagnostic report.