-
Notifications
You must be signed in to change notification settings - Fork 57
Open
Labels
Issue-EnhancementThe issue is a feature or ideaThe issue is a feature or idea
Description
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.
AIShell/shell/AIShell.Kernel/Command/CommandRunner.cs
Lines 61 to 67 in b10735a
// 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); | |
} |
AIShell/shell/AIShell.Kernel/Command/CommandRunner.cs
Lines 89 to 94 in b10735a
// 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
Labels
Issue-EnhancementThe issue is a feature or ideaThe issue is a feature or idea