fix(coding-agent): filter out commands conflict with builtins

This commit is contained in:
haoqixu 2026-02-03 01:23:12 +08:00
parent df5b0f76c0
commit 29e2997f41
3 changed files with 57 additions and 8 deletions

View file

@ -170,6 +170,7 @@ export class ExtensionRunner {
private switchSessionHandler: SwitchSessionHandler = async () => ({ cancelled: false });
private shutdownHandler: ShutdownHandler = () => {};
private shortcutDiagnostics: ResourceDiagnostic[] = [];
private commandDiagnostics: ResourceDiagnostic[] = [];
constructor(
extensions: Extension[],
@ -371,16 +372,31 @@ export class ExtensionRunner {
return undefined;
}
getRegisteredCommands(): RegisteredCommand[] {
getRegisteredCommands(reserved?: Set<string>): RegisteredCommand[] {
this.commandDiagnostics = [];
const commands: RegisteredCommand[] = [];
for (const ext of this.extensions) {
for (const command of ext.commands.values()) {
if (reserved?.has(command.name)) {
const message = `Extension command '${command.name}' from ${ext.path} conflicts with built-in commands. Skipping.`;
this.commandDiagnostics.push({ type: "warning", message, path: ext.path });
if (!this.hasUI()) {
console.warn(message);
}
continue;
}
commands.push(command);
}
}
return commands;
}
getCommandDiagnostics(): ResourceDiagnostic[] {
return this.commandDiagnostics;
}
getRegisteredCommandsWithPaths(): Array<{ command: RegisteredCommand; extensionPath: string }> {
const result: Array<{ command: RegisteredCommand; extensionPath: string }> = [];
for (const ext of this.extensions) {