fix: harden inline /status stripping (#766)

This commit is contained in:
Peter Steinberger
2026-01-12 07:11:59 +00:00
parent c2e37c78ff
commit 88716d8d2a

View File

@@ -159,6 +159,8 @@ const INLINE_SIMPLE_COMMAND_ALIASES = new Map<string, string>([
const INLINE_SIMPLE_COMMAND_RE = const INLINE_SIMPLE_COMMAND_RE =
/(?:^|\s)\/(help|commands|whoami|id)(?=$|\s|:)/i; /(?:^|\s)\/(help|commands|whoami|id)(?=$|\s|:)/i;
const INLINE_STATUS_RE = /(?:^|\s)\/(?:status|usage)(?=$|\s|:)(?:\s*:\s*)?/gi;
function extractInlineSimpleCommand(body?: string): { function extractInlineSimpleCommand(body?: string): {
command: string; command: string;
cleaned: string; cleaned: string;
@@ -173,6 +175,19 @@ function extractInlineSimpleCommand(body?: string): {
return { command, cleaned }; return { command, cleaned };
} }
function stripInlineStatus(body: string): {
cleaned: string;
didStrip: boolean;
} {
const trimmed = body.trim();
if (!trimmed) return { cleaned: "", didStrip: false };
const cleaned = trimmed
.replace(INLINE_STATUS_RE, " ")
.replace(/\s+/g, " ")
.trim();
return { cleaned, didStrip: cleaned !== trimmed };
}
function resolveElevatedAllowList( function resolveElevatedAllowList(
allowFrom: AgentElevatedAllowFromConfig | undefined, allowFrom: AgentElevatedAllowFromConfig | undefined,
provider: string, provider: string,
@@ -591,6 +606,8 @@ export async function getReplyFromConfig(
return `${head}${cleanedTail}`; return `${head}${cleanedTail}`;
})(); })();
cleanedBody = stripInlineStatus(cleanedBody).cleaned;
sessionCtx.Body = cleanedBody; sessionCtx.Body = cleanedBody;
sessionCtx.BodyStripped = cleanedBody; sessionCtx.BodyStripped = cleanedBody;