From 7245654f9aa9e499dfd1e2b90e005f95a565022b Mon Sep 17 00:00:00 2001 From: yousefed Date: Thu, 4 Dec 2025 14:02:11 +0100 Subject: [PATCH 1/2] fix html diff error with whitespace --- examples/09-ai/02-playground/src/data/aimodels.ts | 4 ++-- packages/core/src/api/parsers/html/parseHTML.ts | 1 + packages/core/src/schema/blocks/createSpec.ts | 1 + .../xl-ai/src/api/formats/html-blocks/tools/rebaseTool.ts | 8 ++++++-- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/examples/09-ai/02-playground/src/data/aimodels.ts b/examples/09-ai/02-playground/src/data/aimodels.ts index 344f340b3a..329805d1b2 100644 --- a/examples/09-ai/02-playground/src/data/aimodels.ts +++ b/examples/09-ai/02-playground/src/data/aimodels.ts @@ -11,8 +11,8 @@ export const AI_MODELS = [ "mistral.chat/mistral-medium-latest", "mistral.chat/ministral-3b-latest", "mistral.chat/ministral-8b-latest", - "anthropic.chat/claude-opus-4-1", - "anthropic.chat/claude-sonnet-4-0", + "anthropic.chat/claude-opus-4-5", + "anthropic.chat/claude-sonnet-4-5", "anthropic.chat/claude-3-7-sonnet-latest", "anthropic.chat/claude-3-5-haiku-latest", "albert-etalab.chat/albert-large", diff --git a/packages/core/src/api/parsers/html/parseHTML.ts b/packages/core/src/api/parsers/html/parseHTML.ts index 43f3dc4559..8cb63d9f0d 100644 --- a/packages/core/src/api/parsers/html/parseHTML.ts +++ b/packages/core/src/api/parsers/html/parseHTML.ts @@ -23,6 +23,7 @@ export function HTMLToBlocks< const parentNode = parser.parse(htmlNode, { topNode: pmSchema.nodes["blockGroup"].create(), + preserveWhitespace: true }); const blocks: Block[] = []; diff --git a/packages/core/src/schema/blocks/createSpec.ts b/packages/core/src/schema/blocks/createSpec.ts index 5a404c2459..b5dfef4123 100644 --- a/packages/core/src/schema/blocks/createSpec.ts +++ b/packages/core/src/schema/blocks/createSpec.ts @@ -97,6 +97,7 @@ export function getParseRules< const parser = DOMParser.fromSchema(schema); const parsed = parser.parse(clone, { topNode: schema.nodes.paragraph.create(), + preserveWhitespace: true, }); return parsed.content; diff --git a/packages/xl-ai/src/api/formats/html-blocks/tools/rebaseTool.ts b/packages/xl-ai/src/api/formats/html-blocks/tools/rebaseTool.ts index 7e949c02f6..ce19c6dc0e 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/tools/rebaseTool.ts +++ b/packages/xl-ai/src/api/formats/html-blocks/tools/rebaseTool.ts @@ -48,8 +48,12 @@ export async function createHTMLRebaseTool( ); if (steps.length) { - // console.error("html diff", steps); - throw new Error("html diff"); + throw new Error("html diff", { + cause: { + html, + htmlBlock + } + }); } return rebaseTool(editor, tr); From d42f1319ade652856f952facaefd74c95382f2a5 Mon Sep 17 00:00:00 2001 From: yousefed Date: Thu, 4 Dec 2025 14:45:09 +0100 Subject: [PATCH 2/2] improve logging --- .../src/api/formats/base-tools/createUpdateBlockTool.ts | 8 +++++--- packages/xl-ai/src/api/formats/base-tools/delete.ts | 6 +++++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/xl-ai/src/api/formats/base-tools/createUpdateBlockTool.ts b/packages/xl-ai/src/api/formats/base-tools/createUpdateBlockTool.ts index 645914eada..1394e247c4 100644 --- a/packages/xl-ai/src/api/formats/base-tools/createUpdateBlockTool.ts +++ b/packages/xl-ai/src/api/formats/base-tools/createUpdateBlockTool.ts @@ -143,11 +143,13 @@ export function createUpdateBlockTool(config: { const block = editor.getBlock(id); if (!block) { - // eslint-disable-next-line no-console - console.error("BLOCK NOT FOUND", id); return { ok: false, - error: "block not found", + error: new Error("Block not found (update)", { + cause: { + blockId: id, + }, + }), }; } diff --git a/packages/xl-ai/src/api/formats/base-tools/delete.ts b/packages/xl-ai/src/api/formats/base-tools/delete.ts index 69642a9ddb..dc109bf9a0 100644 --- a/packages/xl-ai/src/api/formats/base-tools/delete.ts +++ b/packages/xl-ai/src/api/formats/base-tools/delete.ts @@ -62,7 +62,11 @@ export const deleteBlockTool = ( if (!block) { return { ok: false, - error: "block not found", + error: new Error("Block not found (delete)", { + cause: { + blockId: id, + }, + }), }; }