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.model → agents.defaults.model.primary/fallbacks
agent.imageModel → agents.defaults.imageModel.primary/fallbacks
agent.modelFallbacks → agents.defaults.model.fallbacks
agent.imageModelFallbacks → agents.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
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.tsmodel?: AgentModelConfigimageModel?: AgentModelConfigpdfModel?: AgentModelConfigpdfMaxBytesMb?: numberpdfMaxPages?: numbermodels?: Record<string, AgentModelEntryConfig>skipBootstrap?: booleanbootstrapMaxChars?: numberbootstrapTotalMaxChars?: numbersubagents.model?: AgentModelConfigAgentModelListConfigtype{ primary, fallbacks }AgentModelEntryConfigtypeAlso remove the
AgentModelConfigimport fromtypes.agents-shared.tsif it becomes unused.Zod schema
src/config/zod-schema.agent-defaults.ts— remove schema definitions for all above fieldsz.unknown().optional()stubs to preserve config parse compatibility (same pattern as WI-121 web tools)Help text in
src/config/schema.help.tsRemove entries for:
agents.defaults.model,agents.defaults.model.fallbacksagents.defaults.imageModel,agents.defaults.imageModel.fallbacksagents.defaults.pdfModel,agents.defaults.pdfModel.fallbacksagents.defaults.modelsagents.defaults.pdfMaxBytesMb,agents.defaults.pdfMaxPagesagents.defaults.skipBootstrap,agents.defaults.bootstrapMaxChars,agents.defaults.bootstrapTotalMaxCharsagents.defaults.cliBackends— KEEP (alive, CLI runtime config)Labels in
src/config/schema.labels.tsRemove corresponding label entries for all removed config keys.
Legacy migration rules in
src/config/legacy.rules.tsRemove rules at lines :171-197:
agent.model→agents.defaults.model.primary/fallbacksagent.imageModel→agents.defaults.imageModel.primary/fallbacksagent.modelFallbacks→agents.defaults.model.fallbacksagent.imageModelFallbacks→agents.defaults.imageModel.fallbacksTests
src/config/schema.help.quality.test.ts— update expected key listsWhat to KEEP
agents.defaults.runtime— alive (CLI runtime selection)agents.defaults.runtimeArgs/runtimeEnv— aliveagents.defaults.cliBackends— alive (custom CLI backend config)agents.defaults.auth— aliveagents.defaults.workspace— aliveagents.defaults.heartbeat.model— alive (heartbeat model override, passed to CLI)Acceptance Criteria
z.unknown().optional()stubsbun run buildpassesbun run testpassesremoteclaw.jsonconfigs with model fields still parse without error (compat stubs)