All registered adapters. detect() specificity (not order) breaks ties.
🔴 as const satisfies, NOT a readonly HarnessAdapter[] ANNOTATION, and the
difference is the whole of HarnessName. An annotation widens
name: "claude-code" to string, so the registry cannot say which names
exist and every consumer that needed to know had to write the list out again
— which is how ProbeHarness = "claude-code" | "codex" and the lint rule's
DEFAULT_NAMES came to be hand-maintained copies of this array. satisfies
keeps the literal types while still checking each element against the port.
All registered adapters. detect() specificity (not order) breaks ties.
🔴
as const satisfies, NOT areadonly HarnessAdapter[]ANNOTATION, and the difference is the whole of HarnessName. An annotation widensname: "claude-code"tostring, so the registry cannot say which names exist and every consumer that needed to know had to write the list out again — which is howProbeHarness = "claude-code" | "codex"and the lint rule'sDEFAULT_NAMEScame to be hand-maintained copies of this array.satisfieskeeps the literal types while still checking each element against the port.