diff --git a/extensions/memory-wiki/src/markdown.test.ts b/extensions/memory-wiki/src/markdown.test.ts index d78a5c0d803..8315fdda5b8 100644 --- a/extensions/memory-wiki/src/markdown.test.ts +++ b/extensions/memory-wiki/src/markdown.test.ts @@ -41,7 +41,7 @@ describe("slugifyWikiSegment", () => { const fileName = createWikiPageFilename(stem); expect(fileName.endsWith(".md")).toBe(true); - expect(Buffer.byteLength(fileName)).toBeLessThanOrEqual(255); + expect(Buffer.byteLength(`.${fileName}.fallback.tmp`)).toBeLessThanOrEqual(255); expect(createWikiPageFilename(stem)).toBe(fileName); }); }); diff --git a/extensions/memory-wiki/src/markdown.ts b/extensions/memory-wiki/src/markdown.ts index 31d7ca95579..9137642095a 100644 --- a/extensions/memory-wiki/src/markdown.ts +++ b/extensions/memory-wiki/src/markdown.ts @@ -109,6 +109,8 @@ const RELATED_BLOCK_PATTERN = new RegExp( ); const MAX_WIKI_SEGMENT_BYTES = 240; const MAX_WIKI_FILENAME_COMPONENT_BYTES = 255; +const MAX_WIKI_SAFE_WRITE_FILENAME_COMPONENT_BYTES = + MAX_WIKI_FILENAME_COMPONENT_BYTES - Buffer.byteLength(".fallback.tmp") - 1; const WIKI_SEGMENT_HASH_BYTES = 12; function truncateUtf8CodePointSafe(value: string, maxBytes: number): string { @@ -152,7 +154,7 @@ export function createWikiPageFilename(stem: string, extension = ".md"): string const normalizedExtension = extension.startsWith(".") ? extension : `.${extension}`; const maxStemBytes = Math.max( 1, - MAX_WIKI_FILENAME_COMPONENT_BYTES - Buffer.byteLength(normalizedExtension), + MAX_WIKI_SAFE_WRITE_FILENAME_COMPONENT_BYTES - Buffer.byteLength(normalizedExtension), ); return `${capWikiValueWithHash(stem, maxStemBytes, "page")}${normalizedExtension}`; }