openclaw/scripts/lib/plugin-sdk-entrypoints.json
Gio Della-Libera 9a5f2f61e7
Doctor: add health-check contract and --lint validation (#80055)
* 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
2026-05-17 12:29:57 -07:00

314 lines
7.2 KiB
JSON

[
"index",
"core",
"lmstudio",
"lmstudio-runtime",
"provider-setup",
"sandbox",
"self-hosted-provider-setup",
"routing",
"runtime",
"health",
"runtime-doctor",
"runtime-env",
"runtime-logger",
"proxy-capture",
"runtime-secret-resolution",
"setup",
"setup-adapter-runtime",
"setup-runtime",
"channel-setup",
"channel-streaming",
"setup-tools",
"approval-auth-runtime",
"approval-client-runtime",
"approval-delivery-runtime",
"approval-gateway-runtime",
"approval-handler-adapter-runtime",
"approval-handler-runtime",
"channel-runtime-context",
"approval-native-runtime",
"approval-reply-runtime",
"approval-runtime",
"config-runtime",
"config-contracts",
"config-types",
"plugin-config-runtime",
"config-mutation",
"cron-store-runtime",
"config-schema",
"json-schema-runtime",
"reply-runtime",
"reply-dedupe",
"reply-dispatch-runtime",
"reply-reference",
"reply-chunking",
"reply-payload",
"agent-media-payload",
"inbound-reply-dispatch",
"inbound-envelope",
"channel-reply-pipeline",
"channel-reply-options-runtime",
"channel-runtime",
"interactive-runtime",
"outbound-media",
"outbound-send-deps",
"outbound-runtime",
"pair-loop-guard-runtime",
"poll-runtime",
"async-lock-runtime",
"channel-activity-runtime",
"concurrency-runtime",
"dedupe-runtime",
"delivery-queue-runtime",
"file-access-runtime",
"heartbeat-runtime",
"number-runtime",
"secure-random-runtime",
"system-event-runtime",
"transport-ready-runtime",
"infra-runtime",
"runtime-config-snapshot",
"runtime-group-policy",
"model-session-runtime",
"talk-config-runtime",
"ssrf-policy",
"ssrf-runtime",
"media-runtime",
"media-store",
"media-mime",
"media-generation-runtime",
"conversation-binding-runtime",
"conversation-runtime",
"thread-bindings-runtime",
"thread-bindings-session-runtime",
"text-runtime",
"text-chunking",
"agent-runtime",
"simple-completion-runtime",
"speech-core",
"tts-runtime",
"plugin-runtime",
"skills-runtime",
"channel-secret-basic-runtime",
"channel-secret-runtime",
"channel-secret-tts-runtime",
"secret-ref-runtime",
"secret-file-runtime",
"security-runtime",
"gateway-method-runtime",
"gateway-runtime",
"cli-runtime",
"cli-backend",
"codex-mcp-projection",
"codex-native-task-runtime",
"agent-harness",
"agent-harness-runtime",
"hook-runtime",
"host-runtime",
"types",
"process-runtime",
"windows-spawn",
"acp-runtime",
"acp-runtime-backend",
"acp-binding-runtime",
"acp-binding-resolve-runtime",
"lazy-runtime",
"agent-runtime-test-contracts",
"channel-target-testing",
"channel-test-helpers",
"plugin-test-api",
"plugin-test-contracts",
"plugin-test-runtime",
"provider-http-test-mocks",
"provider-test-contracts",
"test-env",
"test-fixtures",
"test-node-mocks",
"testing",
"temp-path",
"time-runtime",
"logging-core",
"migration",
"migration-runtime",
"markdown-table-runtime",
"account-helpers",
"account-core",
"account-id",
"account-resolution",
"account-resolution-runtime",
"agent-config-primitives",
"access-groups",
"allow-from",
"allowlist-config-edit",
"browser-config",
"boolean-param",
"channel-contract-testing",
"dangerous-name-runtime",
"command-auth",
"command-auth-native",
"command-gating",
"command-primitives-runtime",
"command-status",
"command-status-runtime",
"command-detection",
"command-surface",
"collection-runtime",
"compat",
"direct-dm",
"direct-dm-access",
"direct-dm-guard-policy",
"discord",
"mattermost",
"matrix",
"device-bootstrap",
"diagnostic-runtime",
"error-runtime",
"extension-shared",
"channel-config-helpers",
"channel-config-writes",
"channel-config-primitives",
"channel-config-schema",
"bundled-channel-config-schema",
"channel-config-schema-legacy",
"channel-actions",
"channel-plugin-common",
"channel-core",
"channel-entry-contract",
"channel-contract",
"channel-envelope",
"channel-feedback",
"channel-inbound",
"channel-inbound-debounce",
"channel-inbound-roots",
"channel-logging",
"channel-location",
"channel-mention-gating",
"channel-lifecycle",
"channel-ingress",
"channel-ingress-runtime",
"channel-message",
"channel-message-runtime",
"channel-pairing",
"channel-pairing-paths",
"channel-policy",
"channel-send-result",
"channel-route",
"channel-targets",
"context-visibility-runtime",
"file-lock",
"fetch-runtime",
"runtime-fetch",
"response-limit-runtime",
"session-binding-runtime",
"session-key-runtime",
"session-store-runtime",
"session-transcript-hit",
"session-visibility",
"ssrf-dispatcher",
"string-coerce-runtime",
"group-activation",
"group-access",
"global-singleton",
"directory-config-runtime",
"directory-runtime",
"media-generation-runtime-shared",
"image-generation",
"image-generation-runtime",
"image-generation-core",
"music-generation",
"music-generation-core",
"video-generation",
"video-generation-runtime",
"video-generation-core",
"reply-history",
"realtime-transcription",
"realtime-voice",
"media-understanding",
"media-understanding-runtime",
"messaging-targets",
"request-url",
"runtime-store",
"json-store",
"persistent-dedupe",
"keyed-async-queue",
"qa-runner-runtime",
"memory-core",
"memory-core-engine-runtime",
"memory-core-host-engine-embeddings",
"memory-core-host-engine-foundation",
"memory-core-host-engine-qmd",
"memory-core-host-engine-storage",
"memory-core-host-multimodal",
"memory-core-host-query",
"memory-core-host-secret",
"memory-core-host-events",
"memory-core-host-status",
"memory-core-host-runtime-cli",
"memory-core-host-runtime-core",
"memory-core-host-runtime-files",
"memory-host-core",
"memory-host-events",
"memory-host-files",
"memory-host-markdown",
"memory-host-search",
"memory-host-status",
"models-provider-runtime",
"skill-commands-runtime",
"native-command-config-runtime",
"native-command-registry",
"provider-auth",
"provider-auth-runtime",
"provider-auth-api-key",
"provider-auth-result",
"provider-auth-login",
"provider-selection-runtime",
"plugin-entry",
"provider-catalog-runtime",
"provider-catalog-shared",
"provider-entry",
"provider-env-vars",
"provider-http",
"provider-model-types",
"provider-model-shared",
"provider-onboard",
"provider-stream-family",
"provider-stream-shared",
"provider-transport-runtime",
"provider-stream",
"provider-tools",
"provider-usage",
"document-extractor",
"web-content-extractor",
"provider-web-fetch-contract",
"provider-web-fetch",
"provider-web-search-config-contract",
"provider-web-search-contract",
"provider-web-search",
"retry-runtime",
"run-command",
"param-readers",
"provider-zai-endpoint",
"secret-input",
"secret-input-runtime",
"channel-status",
"status-helpers",
"speech",
"string-normalization-runtime",
"state-paths",
"target-resolver-runtime",
"telegram-account",
"telegram-command-config",
"text-autolink-runtime",
"text-utility-runtime",
"tool-plugin",
"tool-payload",
"tool-send",
"webhook-ingress",
"webhook-targets",
"webhook-request-guards",
"webhook-path",
"web-media",
"zalouser",
"zod"
]