25 lines
733 B
TypeScript
25 lines
733 B
TypeScript
export type CommandKind = "help" | "status" | "cancel" | "new" | "retired-role";
|
|
|
|
export interface ParsedCommand {
|
|
kind: CommandKind;
|
|
}
|
|
|
|
export class CommandRouter {
|
|
parse(text: string): ParsedCommand | undefined {
|
|
const trimmed = text.trim();
|
|
if (!trimmed.startsWith("/")) return undefined;
|
|
const [command] = trimmed.split(/\s+/);
|
|
switch (command.toLowerCase()) {
|
|
case "/help": return { kind: "help" };
|
|
case "/status": return { kind: "status" };
|
|
case "/cancel": return { kind: "cancel" };
|
|
case "/new": return { kind: "new" };
|
|
case "/roles":
|
|
case "/role":
|
|
case "/agents":
|
|
case "/agent": return { kind: "retired-role" };
|
|
default: return undefined;
|
|
}
|
|
}
|
|
}
|