Skip to content

gut(config): remove dead model selection config schemas #2290

@alexey-pelykh

Description

@alexey-pelykh

Context

RemoteClaw delegates model selection to CLI runtimes. The config schema still contains the full embedded-LLM model selection infrastructure: primary/fallback model chains, image model, PDF model, model catalog with aliases, and bootstrap config. These keys are parsed by Zod but never consumed by the middleware pipeline.

What to remove

Config type fields in src/config/types.agent-defaults.ts

Field Line Purpose
model?: AgentModelConfig :136 Primary model + fallback chain
imageModel?: AgentModelConfig :138 Image-capable model selection
pdfModel?: AgentModelConfig :140 PDF-capable model selection
pdfMaxBytesMb?: number :141 PDF file size limit
pdfMaxPages?: number :142 PDF page limit
models?: Record<string, AgentModelEntryConfig> :146 Model catalog with aliases/params
skipBootstrap?: boolean :152 Bootstrap skip flag (bootstrap gutted)
bootstrapMaxChars?: number :155 Bootstrap size limit
bootstrapTotalMaxChars?: number :156 Bootstrap total limit
subagents.model?: AgentModelConfig :274 Sub-agent model selection
AgentModelListConfig type :19-22 { primary, fallbacks }
AgentModelEntryConfig type :11-17 Model catalog entry (alias, params, streaming)

Also remove the AgentModelConfig import from types.agents-shared.ts if it becomes unused.

Zod schema

  • src/config/zod-schema.agent-defaults.ts — remove schema definitions for all above fields
  • Replace with z.unknown().optional() stubs to preserve config parse compatibility (same pattern as WI-121 web tools)

Help text in src/config/schema.help.ts

Remove entries for:

  • agents.defaults.model, agents.defaults.model.fallbacks
  • agents.defaults.imageModel, agents.defaults.imageModel.fallbacks
  • agents.defaults.pdfModel, agents.defaults.pdfModel.fallbacks
  • agents.defaults.models
  • agents.defaults.pdfMaxBytesMb, agents.defaults.pdfMaxPages
  • agents.defaults.skipBootstrap, agents.defaults.bootstrapMaxChars, agents.defaults.bootstrapTotalMaxChars
  • agents.defaults.cliBackends — KEEP (alive, CLI runtime config)

Labels in src/config/schema.labels.ts

Remove corresponding label entries for all removed config keys.

Legacy migration rules in src/config/legacy.rules.ts

Remove rules at lines :171-197:

  • agent.modelagents.defaults.model.primary/fallbacks
  • agent.imageModelagents.defaults.imageModel.primary/fallbacks
  • agent.modelFallbacksagents.defaults.model.fallbacks
  • agent.imageModelFallbacksagents.defaults.imageModel.fallbacks

Tests

  • src/config/schema.help.quality.test.ts — update expected key lists

What to KEEP

  • agents.defaults.runtime — alive (CLI runtime selection)
  • agents.defaults.runtimeArgs / runtimeEnv — alive
  • agents.defaults.cliBackends — alive (custom CLI backend config)
  • agents.defaults.auth — alive
  • agents.defaults.workspace — alive
  • agents.defaults.heartbeat.model — alive (heartbeat model override, passed to CLI)
  • All channel/typing/streaming/timeout config — alive

Acceptance Criteria

  • All dead model selection config fields removed from types
  • Zod schema fields replaced with z.unknown().optional() stubs
  • Help text entries removed
  • Label entries removed
  • Legacy migration rules removed
  • Tests updated
  • bun run build passes
  • bun run test passes
  • Existing remoteclaw.json configs with model fields still parse without error (compat stubs)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions