Skip to content
This repository was archived by the owner on Jan 30, 2026. It is now read-only.
This repository was archived by the owner on Jan 30, 2026. It is now read-only.

Handle command name/alias collision properly #371

@daxian-dbw

Description

@daxian-dbw

Summary of the new feature / enhancement

Command names and aliases may collide. Today, we don't handle it, so an exception will be thrown when collision happens. We should handle the name/alias collision gracefully.

// The 'command.Name' is included in the 'command.Aliases' collection.
// TODO: need to think about how to handle command names/aliases collision.
// We don't handle collision today -- it will throw when collision happens.
foreach (string alias in command.Aliases)
{
_commands.Add(alias, command);
}

// The 'command.Name' is included in the 'command.Aliases' collection.
// TODO: need to update accordingly when we handle command names/aliases collision.
foreach (string alias in command.Aliases)
{
_commands.Remove(alias);
}

Proposed technical implementation details (optional)

We load commands from an agent when switching to the agent and unload its commands when switching away from it. So, at a given time, only commands from one agent will co-exist with the core commands. Therefore, we shouldn't allow a name/alias to overwrite an existing one and hence we should throw a good error when collision happens.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions