What breaks
$ # user removes the server entry "old" in the dashboard
[..] Servers setting entries removed; their provider groups remain: { "labels": ["old"] }
$ # every VS Code start afterwards, for the leftover group
[..] Fetching from:: "http://10.30.0.51:4000/v1/model/info"
[..] ERROR: Failed to fetch models for provider group at http://10.30.0.51:4000 RequestError(timeout, discovery, no endpoint served)
Removing a servers entry cannot delete its VS Code provider group. The host's command family is add-only (lm.addLanguageModelsProviderGroup, lm.migrateLanguageModelsProviderGroup), so the extension can only hide the group with a tombstone, and the group object stays in chatLanguageModels.json until the user deletes it by hand. Reported as #315.
Upstream fix
microsoft/vscode#328578 adds lm.removeLanguageModelsProviderGroup (fixes microsoft/vscode#328577). It takes the same argument shape as add, uses only name and vendor, and delegates to the service method the Manage Language Models editor's Delete action already uses, stored secrets included.
What this issue tracks
Expected vs actual
- Expected: removing an entry removes its provider group; the picker and the host's models list forget it
- Actual: the group survives, is probed on every start, and its failures fill the diagnostics until the user edits the models file and reloads
What breaks
Removing a
serversentry cannot delete its VS Code provider group. The host's command family is add-only (lm.addLanguageModelsProviderGroup,lm.migrateLanguageModelsProviderGroup), so the extension can only hide the group with a tombstone, and the group object stays inchatLanguageModels.jsonuntil the user deletes it by hand. Reported as #315.Upstream fix
microsoft/vscode#328578 adds
lm.removeLanguageModelsProviderGroup(fixes microsoft/vscode#328577). It takes the same argument shape as add, uses onlynameandvendor, and delegates to the service method the Manage Language Models editor's Delete action already uses, stored secrets included.What this issue tracks
lm.removeLanguageModelsProviderGroupviavscode.commands.getCommands; call it when a declared entry is removed or renamed, keep the tombstone as the fallback on hosts without itsrc/test/extension/hostGroupCommand.test.ts, which today pins that no removal command exists, into a probe of the consumed command's semantics when presentExpected vs actual