mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-19 16:25:50 +00:00
* feat(doctor): add --lint mode + structured HealthFinding shape
Adds the core machinery for `openclaw doctor --lint` per the
doctor-lint-and-oc-rules upstream proposal. PR-1 of the proposal:
no new top-level verb, no public plugin SDK; everything internal.
Files:
- src/flows/checks.ts ? HealthFinding / HealthCheck / HealthCheckContext
types. Findings carry severity per-finding; checks return
readonly HealthFinding[]. Mode tag (doctor/lint/fix) lets a check
distinguish the calling posture.
- src/flows/health-check-registry.ts ? module-level registry with
duplicate-id rejection + test reset helper.
- src/flows/doctor-lint-flow.ts ? runner over registered checks.
Catches throws into synthetic error findings (anchored at check id;
message scrubbed of control chars, capped at 256 bytes). Sorts
findings by severity desc, check id, path. Exports
exitCodeFromFindings (1 if any warning/error, 0 otherwise).
- src/flows/doctor-core-checks.ts ? 4 modern HealthChecks rewriting
logic from existing legacy run*Health functions:
core/doctor/gateway-config (warning)
core/doctor/command-owner (info)
core/doctor/workspace-status (info)
core/doctor/final-config-validation (error)
Each was audited safe per the proposal's adapter constraints
(no writes, no repair calls, no prompts, no probes incl. local-bind).
Legacy run*Health contributions in doctor-health-contributions.ts
are unchanged ? doctor mode (no --lint) still runs the existing 35.
- src/commands/doctor-lint.ts ? CLI dispatch for --lint. Reads config
snapshot, builds HealthCheckContext (mode: "lint"), runs the registry,
filters by --severity-min, emits human or JSON output, returns exit
code from unfiltered set so --severity-min hides info findings
without changing CI signal.
- src/cli/program/register.maintenance.ts ? adds --lint, --json,
--severity-min, --skip, --only flags to existing doctor command.
--lint branches to runDoctorLintCli; without --lint, doctor runs
unchanged.
LoC: 382 src across 6 files. Tests + doc + oc-path-side rule packs
follow as separate commits on this branch.
* fix: avoid string spread in doctor errors
* chore: refresh plugin SDK API baseline
* docs: clarify doctor lint usage
* feat(doctor): prepare repairs for dry-run reporting
|
||
|---|---|---|
| .. | ||
| security | ||
| authentication.md | ||
| background-process.md | ||
| bonjour.md | ||
| bridge-protocol.md | ||
| cli-backends.md | ||
| config-agents.md | ||
| config-channels.md | ||
| config-tools.md | ||
| configuration-examples.md | ||
| configuration-reference.md | ||
| configuration.md | ||
| diagnostics.md | ||
| discovery.md | ||
| doctor.md | ||
| gateway-lock.md | ||
| health.md | ||
| heartbeat.md | ||
| index.md | ||
| local-model-services.md | ||
| local-models.md | ||
| logging.md | ||
| multiple-gateways.md | ||
| network-model.md | ||
| openai-http-api.md | ||
| openresponses-http-api.md | ||
| openshell.md | ||
| opentelemetry.md | ||
| operator-scopes.md | ||
| pairing.md | ||
| prometheus.md | ||
| protocol.md | ||
| remote-gateway-readme.md | ||
| remote.md | ||
| sandbox-vs-tool-policy-vs-elevated.md | ||
| sandboxing.md | ||
| secrets-plan-contract.md | ||
| secrets.md | ||
| tailscale.md | ||
| tools-invoke-http-api.md | ||
| troubleshooting.md | ||
| trusted-proxy-auth.md | ||