diff --git a/package.json b/package.json index 9dc651b..4fb2164 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ode", - "version": "0.0.88", + "version": "0.0.89", "description": "Coding anywhere with your coding agents connected", "module": "packages/core/index.ts", "type": "module", diff --git a/packages/ims/shared/command-router.test.ts b/packages/ims/shared/command-router.test.ts index cab6109..8b4c968 100644 --- a/packages/ims/shared/command-router.test.ts +++ b/packages/ims/shared/command-router.test.ts @@ -6,6 +6,8 @@ describe("parseIncomingCommand", () => { expect(parseIncomingCommand("/setting")).toBe("setting"); expect(parseIncomingCommand("settings")).toBe("setting"); expect(parseIncomingCommand("/settings now")).toBe("setting"); + expect(parseIncomingCommand("@ode /setting")).toBe("setting"); + expect(parseIncomingCommand("<@ou_xxx> settings")).toBe("setting"); }); it("returns null for non-command messages", () => { diff --git a/packages/ims/shared/command-router.ts b/packages/ims/shared/command-router.ts index b11c213..a8ba72e 100644 --- a/packages/ims/shared/command-router.ts +++ b/packages/ims/shared/command-router.ts @@ -1,7 +1,11 @@ export type IncomingCommand = "setting"; export function parseIncomingCommand(text: string): IncomingCommand | null { - const normalized = text.trim().replace(/^//, "/").toLowerCase(); + const normalized = text + .trim() + .replace(/^//, "/") + .replace(/^(?:<@[^>]+>|@[^\s::,,]+)[::,,]?\s+/g, "") + .toLowerCase(); if (/^\/?settings?\b/.test(normalized)) return "setting"; return null; }