doctor

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 14, 2026 License: MIT Imports: 18 Imported by: 0

Documentation

Overview

Package doctor runs local environment checks for codog doctor.

Index

Constants

View Source
const (
	// StatusOK means a doctor check passed.
	StatusOK = "ok"
	// StatusWarn means a doctor check found an actionable warning.
	StatusWarn = "warn"
	// StatusFail means a doctor check found a blocking failure.
	StatusFail = "fail"
)

Variables

This section is empty.

Functions

func RenderText

func RenderText(w io.Writer, report Report)

RenderText writes a human-readable doctor report.

Types

type Check

type Check struct {
	Name    string         `json:"name"`
	Status  string         `json:"status"`
	Summary string         `json:"summary"`
	Details []string       `json:"details,omitempty"`
	Hint    string         `json:"hint,omitempty"`
	Data    map[string]any `json:"data,omitempty"`
}

Check describes one doctor check result.

type Options

type Options struct {
	Workspace             string
	ConfigHome            string
	Model                 string
	RuntimeProvider       string
	RuntimeProviderSource string
	BaseURL               string
	APIKey                string
	AuthToken             string
	OAuthProfile          string
	PermissionMode        string
	PermissionModeRaw     string
	PermissionModeSource  string
	PermissionModeEnvVar  string
	PermissionRules       localstatus.PermissionRulesStatus
	ConfigLoadError       string
	ConfigLoadErrorKind   string
	ToolCount             int
	ToolPermissions       []ToolPermission
	MCPServerStatuses     []mcp.ServerStatus
	MCPValidation         localstatus.MCPValidationStatus
	HookValidation        localstatus.HookValidationStatus
	SessionCount          int
	SessionHygiene        *SessionHygiene
	MemoryFiles           []localstatus.MemoryFileStatus
	UserPromptSubmit      []string
	SessionStart          []string
	PreToolUse            []string
	PostToolUse           []string
	PostToolUseFailure    []string
	PermissionRequest     []string
	PermissionDenied      []string
	Stop                  []string
	StopFailure           []string
	SessionEnd            []string
	Setup                 []string
	PreCompact            []string
	PostCompact           []string
	Notification          []string
	SubagentStart         []string
	SubagentStop          []string
	WorktreeCreate        []string
	WorktreeRemove        []string
	CwdChanged            []string
	TaskCreated           []string
	TaskCompleted         []string
	InstructionsLoaded    []string
	FileChanged           []string
	SandboxDefault        string
	SandboxOK             bool
	SandboxStrategies     []string
	SandboxFallback       string
	SandboxInContainer    bool
	SandboxRuntime        *sandbox.SandboxExecutionStatus
	GitOperation          *gitops.Operation
}

Options contains the runtime and configuration facts checked by Doctor.

type Report

type Report struct {
	Kind          string   `json:"kind"`
	Action        string   `json:"action"`
	Status        string   `json:"status"`
	SchemaVersion string   `json:"schema_version"`
	HasFailures   bool     `json:"has_failures"`
	Summary       Summary  `json:"summary"`
	Checks        []Check  `json:"checks"`
	OutputFields  []string `json:"output_fields"`
	CheckNames    []string `json:"check_names"`
	StatusValues  []string `json:"status_values"`
}

Report is the stable JSON payload returned by `codog doctor --json`.

func NewReport

func NewReport(checks []Check) Report

NewReport combines checks and derives the top-level doctor status.

func Run

func Run(opts Options) Report

Run evaluates local Codog configuration, workspace, hooks, MCP, sandbox, and developer-toolchain health.

type SessionHygiene

type SessionHygiene struct {
	Status                    string                `json:"status"`
	Workspace                 string                `json:"workspace,omitempty"`
	SessionDir                string                `json:"session_dir,omitempty"`
	LegacySessionDir          string                `json:"legacy_session_dir,omitempty"`
	SessionCount              int                   `json:"session_count"`
	MessageCount              int                   `json:"message_count"`
	EmptyCount                int                   `json:"empty_count"`
	BranchCount               int                   `json:"branch_count"`
	PinnedMessageCount        int                   `json:"pinned_message_count"`
	PlaceholderIdentityCount  int                   `json:"placeholder_identity_count"`
	RepairableIdentityCount   int                   `json:"repairable_identity_count,omitempty"`
	ManualIdentityReviewCount int                   `json:"manual_identity_review_count,omitempty"`
	MissingIdentityCount      int                   `json:"missing_identity_count"`
	WorkspaceMismatchCount    int                   `json:"workspace_mismatch_count"`
	PinnedOutOfRangeCount     int                   `json:"pinned_out_of_range_count"`
	OversizedFileCount        int                   `json:"oversized_file_count"`
	Issues                    []SessionHygieneIssue `json:"issues,omitempty"`
	NextActions               []string              `json:"next_actions,omitempty"`
}

SessionHygiene contains the session audit facts surfaced by Doctor.

type SessionHygieneIssue

type SessionHygieneIssue struct {
	Kind         string `json:"kind"`
	Severity     string `json:"severity"`
	SessionID    string `json:"session_id"`
	Path         string `json:"path,omitempty"`
	Field        string `json:"field,omitempty"`
	MessageIndex int    `json:"message_index,omitempty"`
	SizeBytes    int64  `json:"size_bytes,omitempty"`
	Message      string `json:"message"`
	NextAction   string `json:"next_action,omitempty"`
}

SessionHygieneIssue describes one actionable session hygiene finding.

type Summary

type Summary struct {
	Total    int `json:"total"`
	OK       int `json:"ok"`
	Warnings int `json:"warnings"`
	Failures int `json:"failures"`
}

Summary counts doctor checks by severity.

type ToolPermission

type ToolPermission struct {
	Name               string `json:"name"`
	RequiredPermission string `json:"required_permission"`
}

ToolPermission describes the minimum permission a registered tool needs.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL