From b1c83a4d46ba40803de02224114a24b8077910a4 Mon Sep 17 00:00:00 2001 From: exec-chain-4 Date: Fri, 17 Jul 2026 17:42:36 +0800 Subject: [PATCH 1/2] fix: unEscapeSpecialChars now handles all RediSearch special characters - Previously only escaped/unescaped '-' character - Now handles all RediSearch reserved characters: , . < > { } [ ] " ' : ; ! @ # $ % ^ & * ( ) - + = ~ - Fixes JSON.parse failure when metadata contains special characters (#6598) --- .../nodes/vectorstores/Redis/utils.ts | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/packages/components/nodes/vectorstores/Redis/utils.ts b/packages/components/nodes/vectorstores/Redis/utils.ts index dff5840da55..e7279f3fa39 100644 --- a/packages/components/nodes/vectorstores/Redis/utils.ts +++ b/packages/components/nodes/vectorstores/Redis/utils.ts @@ -27,5 +27,38 @@ export const escapeAllStrings = (obj: object) => { } export const unEscapeSpecialChars = (str: string) => { - return str.replaceAll('\\-', '-') + // RediSearch special characters that need to be unescaped + // https://redis.io/docs/latest/develop/interact/search-and-query/advanced/concepts/special-characters/ + const specialChars = [ + '\\-', '-', + '\\,', ',', + '\\<', '<', + '\\>', '>', + '\\{', '{', + '\\}', '}', + '\\[', '[', + '\\]', ']', + '\"', '"', + "\'", "'", + '\\:', ':', + '\\;', ';', + '\\!', '!', + '\\@', '@', + '\\#', '#', + '\\$', '$', + '\\%', '%', + '\\^', '^', + '\\&', '&', + '\\*', '*', + '\\(', '(', + '\\)', ')', + '\\+', '+', + '\\=', '=', + '\\~', '~', + ] + + for (let i = 0; i < specialChars.length; i += 2) { + str = str.replaceAll(specialChars[i], specialChars[i + 1]) + } + return str } From 88f0a4fc36bde0a5234226eeb46fdb12c9dc8710 Mon Sep 17 00:00:00 2001 From: exec-chain-4 Date: Fri, 17 Jul 2026 18:07:17 +0800 Subject: [PATCH 2/2] fix: respect DISABLE_FLOWISE_TELEMETRY env var for telemetry opt-out - Previously DISABLE_FLOWISE_TELEMETRY was documented in .env.example, docker-compose files, and CLI flags, but never actually checked in code. - Only POSTHOG_PUBLIC_API_KEY controlled telemetry behavior. - Now the Telemetry constructor checks DISABLE_FLOWISE_TELEMETRY before initializing PostHog, allowing users to opt out of telemetry as documented. Fixes #6618 --- packages/server/src/utils/telemetry.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/server/src/utils/telemetry.ts b/packages/server/src/utils/telemetry.ts index 177002f248b..f35955640b9 100644 --- a/packages/server/src/utils/telemetry.ts +++ b/packages/server/src/utils/telemetry.ts @@ -15,7 +15,10 @@ export class Telemetry { postHog?: PostHog constructor() { - if (process.env.POSTHOG_PUBLIC_API_KEY) { + // Respect DISABLE_FLOWISE_TELEMETRY env var / CLI flag for opt-out + if (process.env.DISABLE_FLOWISE_TELEMETRY === 'true' || process.env.DISABLE_FLOWISE_TELEMETRY === '1') { + this.postHog = undefined + } else if (process.env.POSTHOG_PUBLIC_API_KEY) { this.postHog = new PostHog(process.env.POSTHOG_PUBLIC_API_KEY) } else { this.postHog = undefined