diff --git a/backend/src/plugins/Cases/functions/getCaseSummary.ts b/backend/src/plugins/Cases/functions/getCaseSummary.ts index 56fab714e..826a148bb 100644 --- a/backend/src/plugins/Cases/functions/getCaseSummary.ts +++ b/backend/src/plugins/Cases/functions/getCaseSummary.ts @@ -39,8 +39,28 @@ export async function getCaseSummary( const match = reason.slice(CASE_SUMMARY_REASON_MAX_LENGTH, 100).match(/(?:[.,!?\s]|$)/); const nextWhitespaceIndex = match ? CASE_SUMMARY_REASON_MAX_LENGTH + match.index! : CASE_SUMMARY_REASON_MAX_LENGTH; const reasonChunks = splitMessageIntoChunks(reason, nextWhitespaceIndex); - reason = reasonChunks[0] + "..."; - } + reason = reasonChunks[0] + + // Sanitise case reasons to ensure codeblocks are properly closed in truncated case reasons + const tripleBacktickMatches = reason.match(/```/g); + const tripleBacktickCount = tripleBacktickMatches ? tripleBacktickMatches.length : 0; + + // If odd number of triple backticks, we have an unclosed codeblock + if (tripleBacktickCount % 2 !== 0) { + reason += "```"; + } + + // Also check for single backticks (inline code) + const singleBacktickMatches = reason.match(/(?