Skip to content

fix: local config — toolOverrides, config name, agent refresh#11067

Open
shanevcantwell wants to merge 3 commits intocontinuedev:mainfrom
shanevcantwell:fix/local-config-bugs
Open

fix: local config — toolOverrides, config name, agent refresh#11067
shanevcantwell wants to merge 3 commits intocontinuedev:mainfrom
shanevcantwell:fix/local-config-bugs

Conversation

@shanevcantwell
Copy link
Contributor

@shanevcantwell shanevcantwell commented Mar 5, 2026

Summary

Three fixes discovered during local model testing (LM Studio + config.yaml on Windows/WSL). All affect the non-cloud codepath — local models, custom configs, system message tools — that hasn't been tested as a cohesive surface.

Context

PR #9314 added toolOverrides to let users customize tool descriptions and disable tools per-model. It worked for models using the native tools API, but the system message tools path (used by local models with capabilities: []) was never wired up. The serialization gap meant toolOverrides never reached the GUI's Redux store, and streamNormalInput.ts passed raw selectActiveTools() output directly to the system message builder without applying overrides.

The other two bugs (config name, agent refresh) were found during the same testing session and affect the same local config surface.

Changes

File Change
core/index.d.ts Add toolOverrides?: ToolOverride[] to ModelDescription
core/config/load.ts Serialize toolOverrides in llmToSerializedModelDescription()
gui/src/redux/thunks/streamNormalInput.ts Import and apply applyToolOverrides for both native and system message tools paths
core/tools/applyToolOverrides.ts Fall through description override to systemMessageDescription.prefix for built-in tools
core/config/profile/LocalProfileLoader.ts Read name from primary config file in constructor
core/core.ts reloadConfigrefreshAll in config/newAssistantFile handler

Test plan

  • 30 tests across 4 new test files, all passing
  • VSIX built and manually verified on Windows with LM Studio + qwen3.5-35b
  • WSL remote verification
  • CI

🤖 Generated with Claude Code


Continue Tasks: 🔄 7 running — View all


Summary by cubic

Fixes three local-config issues: per-model toolOverrides now apply to system-message tools, the default profile uses the config.yaml name, and new agent files appear immediately. Improves the local model and custom config experience.

  • Bug Fixes
    • Tools: serialize toolOverrides in ModelDescription; apply them in both native and system-message paths; description override updates systemMessageDescription.prefix for built-in tools.
    • Profile name: LocalProfileLoader reads the name from the primary config file and guards undefined; falls back to “Local Config” if missing/invalid.
    • Agent refresh: config/newAssistantFile now calls refreshAll to rebuild the profile list so new files show up immediately.
    • Tests: added coverage for overrides, profile naming, and agent refresh; fixed ModelRole import in tests to resolve CI TS2459.

Written for commit a221949. Summary will update on new commits.

Three fixes discovered during local model testing (LM Studio + config.yaml
on Windows/WSL). All affect the non-cloud codepath that hasn't been tested
as a cohesive surface.

Fix continuedev#11060: toolOverrides (continuedev#9314) not applied in system message tools path
- Add toolOverrides to ModelDescription type and serialization
- Apply overrides in streamNormalInput.ts for both native and system
  message tools paths
- Fall through description override to systemMessageDescription.prefix
  so the intuitive YAML field works for built-in tools

Fix continuedev#11061: "Local Config" display name ignores config.yaml name field
- Read primary config file in LocalProfileLoader constructor
- Parse name field, fallback to "Local Config" on missing/broken file

Fix continuedev#11062: New agent files don't appear immediately
- config/newAssistantFile handler called reloadConfig (current profile
  only) instead of refreshAll (rebuilds profile list including new files)

30 tests across 4 new test files, all passing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@shanevcantwell shanevcantwell requested a review from a team as a code owner March 5, 2026 11:41
@shanevcantwell shanevcantwell requested review from sestinj and removed request for a team March 5, 2026 11:41
@dosubot dosubot bot added the size:L This PR changes 100-499 lines, ignoring generated files. label Mar 5, 2026
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 10 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="core/config/profile/LocalProfileLoader.ts">

<violation number="1" location="core/config/profile/LocalProfileLoader.ts:61">
P2: Default profile title can become undefined when config.yaml has no name field, violating ProfileDescription contract (title: string)</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

ModelRole is re-imported but not re-exported from core/index.d.ts
under tsconfig.npm.json, causing TS2459 in CI.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Apply cubic-dev-ai suggestion: guard against undefined parsed.name
when config.yaml has no name field. Run prettier on all changed files
to fix CI prettier-check failure.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L This PR changes 100-499 lines, ignoring generated files.

Projects

Status: Todo

1 participant