From 78a1ce26f94a9affc2fd74598926fdb543bfe11d Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Wed, 28 May 2025 15:31:34 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Improve=20invalid=20regex=20hand?= =?UTF-8?q?ling=20in=20comparison=20logic?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/conditions/src/executeCondition.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/conditions/src/executeCondition.ts b/packages/conditions/src/executeCondition.ts index fd3480888..f5f3badab 100644 --- a/packages/conditions/src/executeCondition.ts +++ b/packages/conditions/src/executeCondition.ts @@ -12,7 +12,7 @@ export const executeCondition = ( sessionStore, variables, }: { sessionStore: SessionStore; variables: Variable[] }, -): boolean => { +): { passed: boolean; logs?: ContinueChatResponse["logs"] } => { if (!condition.comparisons || condition.comparisons.length === 0) return false; return (condition.logicalOperator ?? LogicalOperator.AND) === @@ -178,7 +178,12 @@ const executeComparison = ( if (b === "" || !b || !a) return false; const regex = preprocessRegex(b); if (!regex.pattern) return false; - return new RegExp(regex.pattern, regex.flags).test(a); + try { + return new RegExp(regex.pattern, regex.flags).test(a); + } catch { + // Most likelInvalid regex, treat as non-match + return false; + } }; return compare(matchesRegex, inputValue, value, "some"); }