Skip to content

findDeprecatedConfigIssues

findDeprecatedConfigIssues(raw): DeprecatedConfigIssue[]

Defined in: _worktrees/docs-release/gaunt-sloth/packages/core/src/config/schema.ts:1198

GS2-28 — detect the removed pre-2.0 config shapes on the RAW input (read-only; no mutation), returning one DeprecatedConfigIssue per occurrence. A non-empty result is a HARD validation failure: 2.0 dropped back-compat coercion, so an old shape must error and point at the fix rather than be silently remapped or ignored.

Detects:

  • (A) a COMMAND name (COMMAND_KEYS) at the config ROOT — must move under commands.<cmd>;
  • (C) a deprecated *Provider* name (DEPRECATED_ROOT_PAIRS at root, DEPRECATED_COMMAND_PAIRS per command) — must use its *Source* replacement;
  • (D, CFG-18) a removed per-command key folded into another (REMOVED_COMMAND_KEYS, e.g. commands.<cmd>.devTools → configure under builtInTools);
  • (E, CFG-26) a retired run_shell_command approval knob (RETIRED_SHELL_TOOL_PAIRS) at EITHER builtInTools.run_shell_command.* or commands.<cmd>.builtInTools.run_shell_command.* — each message names the approvals.* key that replaced it;
  • (F, CFG-27) a retired approvals key or mode value (RETIRED_APPROVALS_KEYS, RETIRED_APPROVAL_MODES) at EITHER approvals.* or commands.<cmd>.approvals.* — each message names the rung that replaced it.

Runs on the raw input specifically so nested commands.*.contentProvider is still visible (zod’s per-command z.object would strip it before any schema-embedded check could fire). A genuinely-unknown key is NOT flagged here (it stays a warn-only unknown key), preserving the deliberate typo-tolerance.

Record<string, unknown>

DeprecatedConfigIssue[]