From c416d9c0bc4878eddaf0af039b702fd5466a3fcf Mon Sep 17 00:00:00 2001
From: Nick the Sick
Date: Thu, 2 Apr 2026 18:59:01 +0200
Subject: [PATCH 01/15] refactor: remove dep on @tiptap/extension-link and
linkify
---
.github/dependabot.yml | 2 +-
packages/core/package.json | 1 -
.../managers/ExtensionManager/extensions.ts | 6 +-
.../Link/helpers/autolink.ts | 204 ++
.../Link/helpers/clickHandler.ts | 75 +
.../Link/helpers/linkDetector.ts | 403 +++
.../Link/helpers/pasteHandler.ts | 52 +
.../Link/helpers/whitespace.ts | 13 +
.../tiptap-extensions/Link/index.ts | 3 +
.../tiptap-extensions/Link/link.test.ts | 855 ++++++
.../extensions/tiptap-extensions/Link/link.ts | 529 ++++
pnpm-lock.yaml | 2605 ++++++++++++-----
12 files changed, 4054 insertions(+), 694 deletions(-)
create mode 100644 packages/core/src/extensions/tiptap-extensions/Link/helpers/autolink.ts
create mode 100644 packages/core/src/extensions/tiptap-extensions/Link/helpers/clickHandler.ts
create mode 100644 packages/core/src/extensions/tiptap-extensions/Link/helpers/linkDetector.ts
create mode 100644 packages/core/src/extensions/tiptap-extensions/Link/helpers/pasteHandler.ts
create mode 100644 packages/core/src/extensions/tiptap-extensions/Link/helpers/whitespace.ts
create mode 100644 packages/core/src/extensions/tiptap-extensions/Link/index.ts
create mode 100644 packages/core/src/extensions/tiptap-extensions/Link/link.test.ts
create mode 100644 packages/core/src/extensions/tiptap-extensions/Link/link.ts
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 3458bfff2a..165dad4e01 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -21,7 +21,7 @@ updates:
- dependency-name: "@tiptap/extension-code"
- dependency-name: "@tiptap/extension-horizontal-rule"
- dependency-name: "@tiptap/extension-italic"
- - dependency-name: "@tiptap/extension-link"
+
- dependency-name: "@tiptap/extension-paragraph"
- dependency-name: "@tiptap/extension-strike"
- dependency-name: "@tiptap/extension-text"
diff --git a/packages/core/package.json b/packages/core/package.json
index f20292ad57..eb5095a817 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -98,7 +98,6 @@
"@tiptap/extension-code": "^3.13.0",
"@tiptap/extension-horizontal-rule": "^3.13.0",
"@tiptap/extension-italic": "^3.13.0",
- "@tiptap/extension-link": "^3.22.1",
"@tiptap/extension-paragraph": "^3.13.0",
"@tiptap/extension-strike": "^3.13.0",
"@tiptap/extension-text": "^3.13.0",
diff --git a/packages/core/src/editor/managers/ExtensionManager/extensions.ts b/packages/core/src/editor/managers/ExtensionManager/extensions.ts
index 4364afaaa0..ee651104a3 100644
--- a/packages/core/src/editor/managers/ExtensionManager/extensions.ts
+++ b/packages/core/src/editor/managers/ExtensionManager/extensions.ts
@@ -5,7 +5,7 @@ import {
Extension as TiptapExtension,
} from "@tiptap/core";
import { Gapcursor } from "@tiptap/extensions/gap-cursor";
-import { Link } from "@tiptap/extension-link";
+import { Link } from "../../../extensions/tiptap-extensions/Link/link.js";
import { Text } from "@tiptap/extension-text";
import { createDropFileExtension } from "../../../api/clipboard/fromClipboard/fileDropExtension.js";
import { createPasteFromClipboardExtension } from "../../../api/clipboard/fromClipboard/pasteExtension.js";
@@ -49,7 +49,6 @@ import {
import { ExtensionFactoryInstance } from "../../BlockNoteExtension.js";
import { CollaborationExtension } from "../../../extensions/Collaboration/Collaboration.js";
-// TODO remove linkify completely by vendoring the link extension & dropping linkifyjs as a dependency
let LINKIFY_INITIALIZED = false;
/**
@@ -84,8 +83,7 @@ export function getDefaultTiptapExtensions(
inclusive: false,
})
.extend({
- // Remove the title attribute added in newer versions of @tiptap/extension-link
- // to avoid unnecessary null attributes in serialized output
+ // Remove the title attribute to avoid unnecessary null attributes in serialized output
addAttributes() {
const attrs = this.parent?.() || {};
delete (attrs as Record).title;
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/helpers/autolink.ts b/packages/core/src/extensions/tiptap-extensions/Link/helpers/autolink.ts
new file mode 100644
index 0000000000..5e898c6309
--- /dev/null
+++ b/packages/core/src/extensions/tiptap-extensions/Link/helpers/autolink.ts
@@ -0,0 +1,204 @@
+import type { NodeWithPos } from "@tiptap/core";
+import {
+ combineTransactionSteps,
+ findChildrenInRange,
+ getChangedRanges,
+ getMarksBetween,
+} from "@tiptap/core";
+import type { MarkType } from "@tiptap/pm/model";
+import { Plugin, PluginKey } from "@tiptap/pm/state";
+import type { LinkMatch } from "./linkDetector.js";
+import { tokenizeLink } from "./linkDetector.js";
+
+import {
+ UNICODE_WHITESPACE_REGEX,
+ UNICODE_WHITESPACE_REGEX_END,
+} from "./whitespace.js";
+
+/**
+ * Check if the provided tokens form a valid link structure, which can either be a single link token
+ * or a link token surrounded by parentheses or square brackets.
+ *
+ * This ensures that only complete and valid text is hyperlinked, preventing cases where a valid
+ * top-level domain (TLD) is immediately followed by an invalid character, like a number. For
+ * example, with the `find` method from Linkify, entering `example.com1` would result in
+ * `example.com` being linked and the trailing `1` left as plain text. By using the `tokenize`
+ * method, we can perform more comprehensive validation on the input text.
+ */
+function isValidLinkStructure(tokens: LinkMatch[]) {
+ if (tokens.length === 1) {
+ return tokens[0].isLink;
+ }
+
+ if (tokens.length === 3 && tokens[1].isLink) {
+ return ["()", "[]"].includes(tokens[0].value + tokens[2].value);
+ }
+
+ return false;
+}
+
+type AutolinkOptions = {
+ type: MarkType;
+ defaultProtocol: string;
+ validate: (url: string) => boolean;
+ shouldAutoLink: (url: string) => boolean;
+ protocols: Array<{ scheme: string; optionalSlashes?: boolean } | string>;
+};
+
+/**
+ * This plugin allows you to automatically add links to your editor.
+ * @param options The plugin options
+ * @returns The plugin instance
+ */
+export function autolink(options: AutolinkOptions): Plugin {
+ return new Plugin({
+ key: new PluginKey("autolink"),
+ appendTransaction: (transactions, oldState, newState) => {
+ /**
+ * Does the transaction change the document?
+ */
+ const docChanges =
+ transactions.some((transaction) => transaction.docChanged) &&
+ !oldState.doc.eq(newState.doc);
+
+ /**
+ * Prevent autolink if the transaction is not a document change or if the transaction has the meta `preventAutolink`.
+ */
+ const preventAutolink = transactions.some((transaction) =>
+ transaction.getMeta("preventAutolink")
+ );
+
+ /**
+ * Prevent autolink if the transaction is not a document change
+ * or if the transaction has the meta `preventAutolink`.
+ */
+ if (!docChanges || preventAutolink) {
+ return;
+ }
+
+ const { tr } = newState;
+ const transform = combineTransactionSteps(oldState.doc, [
+ ...transactions,
+ ]);
+ const changes = getChangedRanges(transform);
+
+ changes.forEach(({ newRange }) => {
+ // Now let's see if we can add new links.
+ const nodesInChangedRanges = findChildrenInRange(
+ newState.doc,
+ newRange,
+ (node) => node.isTextblock
+ );
+
+ let textBlock: NodeWithPos | undefined;
+ let textBeforeWhitespace: string | undefined;
+
+ if (nodesInChangedRanges.length > 1) {
+ // Grab the first node within the changed ranges (ex. the first of two paragraphs when hitting enter).
+ textBlock = nodesInChangedRanges[0];
+ textBeforeWhitespace = newState.doc.textBetween(
+ textBlock.pos,
+ textBlock.pos + textBlock.node.nodeSize,
+ undefined,
+ " "
+ );
+ } else if (nodesInChangedRanges.length) {
+ const endText = newState.doc.textBetween(
+ newRange.from,
+ newRange.to,
+ " ",
+ " "
+ );
+ if (!UNICODE_WHITESPACE_REGEX_END.test(endText)) {
+ return;
+ }
+ textBlock = nodesInChangedRanges[0];
+ textBeforeWhitespace = newState.doc.textBetween(
+ textBlock.pos,
+ newRange.to,
+ undefined,
+ " "
+ );
+ }
+
+ if (textBlock && textBeforeWhitespace) {
+ const wordsBeforeWhitespace = textBeforeWhitespace
+ .split(UNICODE_WHITESPACE_REGEX)
+ .filter(Boolean);
+
+ if (wordsBeforeWhitespace.length <= 0) {
+ return;
+ }
+
+ const lastWordBeforeSpace =
+ wordsBeforeWhitespace[wordsBeforeWhitespace.length - 1];
+ const lastWordAndBlockOffset =
+ textBlock.pos +
+ textBeforeWhitespace.lastIndexOf(lastWordBeforeSpace);
+
+ if (!lastWordBeforeSpace) {
+ return;
+ }
+
+ const linksBeforeSpace = tokenizeLink(
+ lastWordBeforeSpace,
+ options.defaultProtocol
+ );
+
+ if (!isValidLinkStructure(linksBeforeSpace)) {
+ return;
+ }
+
+ linksBeforeSpace
+ .filter((link) => link.isLink)
+ // Calculate link position.
+ .map((link) => ({
+ ...link,
+ from: lastWordAndBlockOffset + link.start + 1,
+ to: lastWordAndBlockOffset + link.end + 1,
+ }))
+ // ignore link inside code mark
+ .filter((link) => {
+ if (!newState.schema.marks.code) {
+ return true;
+ }
+
+ return !newState.doc.rangeHasMark(
+ link.from,
+ link.to,
+ newState.schema.marks.code
+ );
+ })
+ // validate link
+ .filter((link) => options.validate(link.value))
+ // check whether should autolink
+ .filter((link) => options.shouldAutoLink(link.value))
+ // Add link mark.
+ .forEach((link) => {
+ if (
+ getMarksBetween(link.from, link.to, newState.doc).some(
+ (item) => item.mark.type === options.type
+ )
+ ) {
+ return;
+ }
+
+ tr.addMark(
+ link.from,
+ link.to,
+ options.type.create({
+ href: link.href,
+ })
+ );
+ });
+ }
+ });
+
+ if (!tr.steps.length) {
+ return;
+ }
+
+ return tr;
+ },
+ });
+}
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/helpers/clickHandler.ts b/packages/core/src/extensions/tiptap-extensions/Link/helpers/clickHandler.ts
new file mode 100644
index 0000000000..9fa248c65a
--- /dev/null
+++ b/packages/core/src/extensions/tiptap-extensions/Link/helpers/clickHandler.ts
@@ -0,0 +1,75 @@
+import type { Editor } from "@tiptap/core";
+import { getAttributes } from "@tiptap/core";
+import type { MarkType } from "@tiptap/pm/model";
+import { Plugin, PluginKey } from "@tiptap/pm/state";
+
+type ClickHandlerOptions = {
+ type: MarkType;
+ editor: Editor;
+ openOnClick?: boolean;
+ enableClickSelection?: boolean;
+};
+
+export function clickHandler(options: ClickHandlerOptions): Plugin {
+ return new Plugin({
+ key: new PluginKey("handleClickLink"),
+ props: {
+ handleClick: (view, _pos, event) => {
+ if (event.button !== 0) {
+ return false;
+ }
+
+ if (!view.editable) {
+ return false;
+ }
+
+ let link: HTMLAnchorElement | null = null;
+
+ if (event.target instanceof HTMLAnchorElement) {
+ link = event.target;
+ } else {
+ const target = event.target as HTMLElement | null;
+ if (!target) {
+ return false;
+ }
+
+ const root = options.editor.view.dom;
+
+ // Intentionally limit the lookup to the editor root.
+ // Using tag names like DIV as boundaries breaks with custom NodeViews,
+ link = target.closest("a");
+
+ if (link && !root.contains(link)) {
+ link = null;
+ }
+ }
+
+ if (!link) {
+ return false;
+ }
+
+ let handled = false;
+
+ if (options.enableClickSelection) {
+ const commandResult = options.editor.commands.extendMarkRange(
+ options.type.name
+ );
+ handled = commandResult;
+ }
+
+ if (options.openOnClick) {
+ const attrs = getAttributes(view.state, options.type.name);
+ const href = link.href ?? attrs.href;
+ const target = link.target ?? attrs.target;
+
+ if (href) {
+ window.open(href, target);
+ handled = true;
+ }
+ }
+
+ return handled;
+ },
+ },
+ });
+}
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/helpers/linkDetector.ts b/packages/core/src/extensions/tiptap-extensions/Link/helpers/linkDetector.ts
new file mode 100644
index 0000000000..403b5cce8e
--- /dev/null
+++ b/packages/core/src/extensions/tiptap-extensions/Link/helpers/linkDetector.ts
@@ -0,0 +1,403 @@
+/**
+ * Lightweight URL detection module replacing linkifyjs.
+ *
+ * Provides two functions:
+ * - findLinks(): find all URLs/emails in arbitrary text (replaces linkifyjs find())
+ * - tokenizeLink(): tokenize a single word for autolink validation (replaces linkifyjs tokenize())
+ */
+
+export interface LinkMatch {
+ type: string;
+ value: string;
+ isLink: boolean;
+ href: string;
+ start: number;
+ end: number;
+}
+
+// ---------------------------------------------------------------------------
+// TLD set – used only for schemeless URL validation.
+// Protocol URLs (http://, https://, etc.) skip TLD checks.
+// ---------------------------------------------------------------------------
+
+// prettier-ignore
+const CC_TLDS =
+ "ac ad ae af ag ai al am ao aq ar as at au aw ax az ba bb bd be bf bg bh bi bj bm bn bo br bs bt bv bw by bz ca cc cd cf cg ch ci ck cl cm cn co cr cu cv cw cx cy cz de dj dk dm do dz ec ee eg er es et eu fi fj fk fm fo fr ga gb gd ge gf gg gh gi gl gm gn gp gq gr gs gt gu gw gy hk hm hn hr ht hu id ie il im in io iq ir is it je jm jo jp ke kg kh ki km kn kp kr kw ky kz la lb lc li lk lr ls lt lu lv ly ma mc md me mg mh mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na nc ne nf ng ni nl no np nr nu nz om pa pe pf pg ph pk pl pm pn pr ps pt pw py qa re ro rs ru rw sa sb sc sd se sg sh si sj sk sl sm sn so sr ss st su sv sx sy sz tc td tf tg th tj tk tl tm tn to tr tt tv tw tz ua ug uk us uy uz va vc ve vg vi vn vu wf ws ye yt za zm zw";
+
+// prettier-ignore
+const G_TLDS =
+ "com org net edu gov mil int aero asia biz cat coop info jobs mobi museum name post pro tel travel xxx academy accountant accountants actor adult agency airforce apartments app army associates attorney auction auto band bank bar bargains beer best bet bid bike bingo bio black blog blue boutique broker build builders business buzz cab cafe cam camera camp capital car cards care career careers casa cash casino catering center ceo chat cheap church city claims cleaning click clinic clothing cloud club coach codes coffee college community company computer condos construction consulting contractors cooking cool country coupons courses credit creditcard cruise dad dance date dating day dealer deals degree delivery democrat dental dentist design dev diamonds diet digital direct directory discount doctor dog domains download earth eat education email energy engineer engineering enterprises equipment estate events exchange expert exposed express fail faith family fan fans farm fashion film final finance financial fish fishing fit fitness flights florist flowers fly foo football forex forsale forum foundation fun fund furniture futbol fyi gallery game games garden gift gifts gives glass global gmbh gold golf graphics gratis green gripe group guide guru hair haus health healthcare help hiphop hockey holdings holiday homes horse hospital host hosting hot house how inc industries ink institute insurance insure international investments irish jewelry jetzt jot joy kim kitchen land law lawyer lease legal life lighting limited limo link live llc loan loans lol love ltd luxury maison management map market marketing mba media memorial men menu miami moda mom money monster mortgage movie music navy network new news ninja now observer one online ooo organic page partners parts party pay pet pharmacy photo photography photos pink pizza place plumbing plus poker porn press productions promo properties property pub quest racing radio realestate realty recipes red rehab rent rentals repair report republican rest restaurant review reviews rich rip rocks rodeo run sale salon sarl save school science search security select services sex sexy shoes shop shopping show singles site ski skin social software solar solutions space sport spot srl storage store stream studio style sucks supplies supply support surf surgery systems tax taxi team tech technology tennis theater theatre tips tires today tools top tours town toys trade trading training tube university uno vacations vegas ventures vet video villas vin vip vision vodka vote voyage wang watch webcam website wedding whoswho wiki win wine work works world wtf xyz yoga you zone";
+
+const TLD_SET = new Set([...CC_TLDS.split(" "), ...G_TLDS.split(" ")]);
+
+// Special hostnames recognized without a TLD
+const SPECIAL_HOSTS = new Set(["localhost"]);
+
+// ---------------------------------------------------------------------------
+// Regex building blocks
+// ---------------------------------------------------------------------------
+
+// URL-safe characters in path/query/fragment (everything except whitespace)
+const URL_BODY = "[^\\s]";
+// Characters that are unlikely to be part of a URL when they appear at the end
+const TRAILING_PUNCT = /[.,;:!?"']+$/;
+
+// Protocol URLs: http:// https:// ftp:// ftps://
+const PROTOCOL_RE =
+ /(?:https?|ftp|ftps):\/\/[^\s]+/g;
+
+// Mailto URLs: mailto:...
+const MAILTO_RE = /mailto:[^\s]+/g;
+
+// Bare email addresses: user@domain.tld
+const EMAIL_RE =
+ /[a-zA-Z0-9._%+\-]+@(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}/g;
+
+// Schemeless URLs: domain.tld with optional port and path
+// Hostname: one or more labels separated by dots, TLD is alpha-only 2+ chars
+const SCHEMELESS_RE =
+ /(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}(?::\d{1,5})?(?:\/[^\s]*)?/g;
+
+// ---------------------------------------------------------------------------
+// Post-processing helpers
+// ---------------------------------------------------------------------------
+
+/**
+ * Trim trailing punctuation and unbalanced closing brackets from a URL match.
+ */
+function trimTrailing(value: string): string {
+ let v = value;
+
+ // Iteratively trim trailing punctuation and unbalanced brackets
+ let changed = true;
+ while (changed) {
+ changed = false;
+
+ // Trim trailing punctuation chars
+ const before = v;
+ v = v.replace(TRAILING_PUNCT, "");
+ if (v !== before) changed = true;
+
+ // Trim unbalanced closing brackets from the end
+ for (const [open, close] of [
+ ["(", ")"],
+ ["[", "]"],
+ ] as const) {
+ while (v.endsWith(close)) {
+ const openCount = countChar(v, open);
+ const closeCount = countChar(v, close);
+ if (closeCount > openCount) {
+ v = v.slice(0, -1);
+ changed = true;
+ } else {
+ break;
+ }
+ }
+ }
+ }
+
+ return v;
+}
+
+function countChar(str: string, ch: string): number {
+ let count = 0;
+ for (let i = 0; i < str.length; i++) {
+ if (str[i] === ch) count++;
+ }
+ return count;
+}
+
+/**
+ * Extract the TLD from a hostname string.
+ * Returns the last dot-separated segment.
+ */
+function extractTld(hostname: string): string {
+ const parts = hostname.split(".");
+ return parts[parts.length - 1].toLowerCase();
+}
+
+/**
+ * Extract hostname from a URL value (no protocol).
+ */
+function extractHostname(value: string): string {
+ // Remove protocol if present
+ let s = value;
+ const protoIdx = s.indexOf("://");
+ if (protoIdx !== -1) {
+ s = s.slice(protoIdx + 3);
+ } else if (s.startsWith("mailto:")) {
+ s = s.slice(7);
+ }
+
+ // Remove path, query, fragment
+ s = s.split(/[/?#]/)[0];
+ // Remove port
+ s = s.split(":")[0];
+ // Remove userinfo
+ if (s.includes("@")) {
+ s = s.split("@").pop()!;
+ }
+
+ return s;
+}
+
+function isValidTld(hostname: string): boolean {
+ const tld = extractTld(hostname);
+ return TLD_SET.has(tld);
+}
+
+/**
+ * Build the href for a URL value, prepending the default protocol if needed.
+ */
+function buildHref(
+ value: string,
+ type: string,
+ defaultProtocol: string
+): string {
+ if (type === "email") {
+ return "mailto:" + value;
+ }
+ if (/^[a-zA-Z][a-zA-Z0-9+.\-]*:\/\//.test(value) || /^mailto:/i.test(value)) {
+ // Already has a protocol
+ return value;
+ }
+ return defaultProtocol + "://" + value;
+}
+
+// ---------------------------------------------------------------------------
+// findLinks()
+// ---------------------------------------------------------------------------
+
+export interface FindOptions {
+ defaultProtocol?: string;
+}
+
+interface RawMatch {
+ type: string;
+ value: string;
+ start: number;
+ end: number;
+}
+
+/**
+ * Find all URLs and email addresses in the given text.
+ * Drop-in replacement for linkifyjs find().
+ */
+export function findLinks(
+ text: string,
+ options?: FindOptions
+): LinkMatch[] {
+ if (!text) return [];
+
+ const defaultProtocol = options?.defaultProtocol || "http";
+ const rawMatches: RawMatch[] = [];
+
+ // 1. Protocol URLs
+ for (const m of text.matchAll(PROTOCOL_RE)) {
+ rawMatches.push({
+ type: "url",
+ value: m[0],
+ start: m.index!,
+ end: m.index! + m[0].length,
+ });
+ }
+
+ // 2. Mailto URLs
+ for (const m of text.matchAll(MAILTO_RE)) {
+ rawMatches.push({
+ type: "url",
+ value: m[0],
+ start: m.index!,
+ end: m.index! + m[0].length,
+ });
+ }
+
+ // 3. Bare email addresses
+ for (const m of text.matchAll(EMAIL_RE)) {
+ rawMatches.push({
+ type: "email",
+ value: m[0],
+ start: m.index!,
+ end: m.index! + m[0].length,
+ });
+ }
+
+ // 4. Schemeless URLs
+ for (const m of text.matchAll(SCHEMELESS_RE)) {
+ rawMatches.push({
+ type: "url",
+ value: m[0],
+ start: m.index!,
+ end: m.index! + m[0].length,
+ });
+ }
+
+ // Sort by start position
+ rawMatches.sort((a, b) => a.start - b.start || b.end - a.end);
+
+ // Deduplicate overlapping matches (prefer earlier & longer)
+ const deduped: RawMatch[] = [];
+ let lastEnd = -1;
+ for (const match of rawMatches) {
+ if (match.start >= lastEnd) {
+ deduped.push(match);
+ lastEnd = match.end;
+ }
+ }
+
+ // Post-process each match
+ const results: LinkMatch[] = [];
+ for (const raw of deduped) {
+ let value = trimTrailing(raw.value);
+ if (!value) continue;
+
+ const start = raw.start;
+ const end = start + value.length;
+
+ // For schemeless URLs, validate TLD
+ if (raw.type === "url" && !/^[a-zA-Z][a-zA-Z0-9+.\-]*:/.test(value)) {
+ const hostname = extractHostname(value);
+ if (!isValidTld(hostname)) continue;
+ }
+
+ // For emails, validate TLD
+ if (raw.type === "email") {
+ const hostname = value.split("@")[1];
+ if (!isValidTld(hostname)) continue;
+ }
+
+ const href = buildHref(value, raw.type, defaultProtocol);
+
+ results.push({
+ type: raw.type,
+ value,
+ isLink: true,
+ href,
+ start,
+ end,
+ });
+ }
+
+ return results;
+}
+
+// ---------------------------------------------------------------------------
+// tokenizeLink()
+// ---------------------------------------------------------------------------
+
+/**
+ * Tokenize a single word for autolink validation.
+ * Drop-in replacement for: tokenize(word).map(t => t.toObject(defaultProtocol))
+ *
+ * Returns an array of LinkMatch tokens. The autolink code checks:
+ * - 1 token with isLink=true → valid single link
+ * - 3 tokens with middle isLink=true and outer brackets → valid wrapped link
+ */
+export function tokenizeLink(
+ text: string,
+ defaultProtocol = "http"
+): LinkMatch[] {
+ if (!text) {
+ return [nonLinkToken(text, 0, 0)];
+ }
+
+ // Check for bracket wrapping: (url), [url], {url}
+ const brackets: Array<[string, string]> = [
+ ["(", ")"],
+ ["[", "]"],
+ ["{", "}"],
+ ];
+ for (const [open, close] of brackets) {
+ if (text.startsWith(open) && text.endsWith(close) && text.length > 2) {
+ const inner = text.slice(1, -1);
+ if (isSingleUrl(inner)) {
+ return [
+ nonLinkToken(open, 0, 1),
+ linkToken(inner, 1, 1 + inner.length, defaultProtocol),
+ nonLinkToken(close, 1 + inner.length, text.length),
+ ];
+ }
+ }
+ }
+
+ // Check for trailing punctuation (e.g., "example.com." → link + dot)
+ if (text.endsWith(".") && text.length > 1) {
+ const withoutDot = text.slice(0, -1);
+ if (isSingleUrl(withoutDot)) {
+ return [
+ linkToken(withoutDot, 0, withoutDot.length, defaultProtocol),
+ nonLinkToken(".", withoutDot.length, text.length),
+ ];
+ }
+ }
+
+ // Check if the whole text is a single URL
+ if (isSingleUrl(text)) {
+ return [linkToken(text, 0, text.length, defaultProtocol)];
+ }
+
+ // Not a link
+ return [nonLinkToken(text, 0, text.length)];
+}
+
+/**
+ * Check if a string is a single complete URL (no extra chars).
+ */
+function isSingleUrl(text: string): boolean {
+ // Protocol URLs
+ if (/^(?:https?|ftp|ftps):\/\/[^\s]+$/.test(text)) {
+ return true;
+ }
+
+ // Mailto URLs
+ if (/^mailto:[^\s]+$/.test(text)) {
+ return true;
+ }
+
+ // Special hosts (e.g., localhost)
+ if (SPECIAL_HOSTS.has(text.toLowerCase())) {
+ return true;
+ }
+
+ // Schemeless URLs: hostname.tld with optional port and path
+ const schemelessFull =
+ /^(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?\.)+([a-zA-Z]{2,})(?::\d{1,5})?(?:\/[^\s]*)?$/;
+ const match = text.match(schemelessFull);
+ if (match) {
+ const tld = match[1].toLowerCase();
+ // TLD must be a-z only (no numbers) and recognized
+ if (TLD_SET.has(tld)) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+function linkToken(
+ value: string,
+ start: number,
+ end: number,
+ defaultProtocol: string
+): LinkMatch {
+ const type = value.includes("@") && !value.includes("://") ? "email" : "url";
+ return {
+ type,
+ value,
+ isLink: true,
+ href: buildHref(value, type, defaultProtocol),
+ start,
+ end,
+ };
+}
+
+function nonLinkToken(value: string, start: number, end: number): LinkMatch {
+ return {
+ type: "text",
+ value,
+ isLink: false,
+ href: value,
+ start,
+ end,
+ };
+}
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/helpers/pasteHandler.ts b/packages/core/src/extensions/tiptap-extensions/Link/helpers/pasteHandler.ts
new file mode 100644
index 0000000000..2f95bb2d49
--- /dev/null
+++ b/packages/core/src/extensions/tiptap-extensions/Link/helpers/pasteHandler.ts
@@ -0,0 +1,52 @@
+import type { Editor } from "@tiptap/core";
+import type { MarkType } from "@tiptap/pm/model";
+import { Plugin, PluginKey } from "@tiptap/pm/state";
+import type { LinkOptions } from "../link.js";
+import { findLinks } from "./linkDetector.js";
+
+type PasteHandlerOptions = {
+ editor: Editor;
+ defaultProtocol: string;
+ type: MarkType;
+ shouldAutoLink?: LinkOptions["shouldAutoLink"];
+};
+
+export function pasteHandler(options: PasteHandlerOptions): Plugin {
+ return new Plugin({
+ key: new PluginKey("handlePasteLink"),
+ props: {
+ handlePaste: (view, _event, slice) => {
+ const { shouldAutoLink } = options;
+ const { state } = view;
+ const { selection } = state;
+ const { empty } = selection;
+
+ if (empty) {
+ return false;
+ }
+
+ let textContent = "";
+
+ slice.content.forEach((node) => {
+ textContent += node.textContent;
+ });
+
+ const link = findLinks(textContent, {
+ defaultProtocol: options.defaultProtocol,
+ }).find((item) => item.isLink && item.value === textContent);
+
+ if (
+ !textContent ||
+ !link ||
+ (shouldAutoLink !== undefined && !shouldAutoLink(link.value))
+ ) {
+ return false;
+ }
+
+ return options.editor.commands.setMark(options.type, {
+ href: link.href,
+ });
+ },
+ },
+ });
+}
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/helpers/whitespace.ts b/packages/core/src/extensions/tiptap-extensions/Link/helpers/whitespace.ts
new file mode 100644
index 0000000000..70d6612ae1
--- /dev/null
+++ b/packages/core/src/extensions/tiptap-extensions/Link/helpers/whitespace.ts
@@ -0,0 +1,13 @@
+// From DOMPurify
+// https://github.com/cure53/DOMPurify/blob/main/src/regexp.ts
+export const UNICODE_WHITESPACE_PATTERN =
+ "[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]";
+
+export const UNICODE_WHITESPACE_REGEX = new RegExp(UNICODE_WHITESPACE_PATTERN);
+export const UNICODE_WHITESPACE_REGEX_END = new RegExp(
+ `${UNICODE_WHITESPACE_PATTERN}$`
+);
+export const UNICODE_WHITESPACE_REGEX_GLOBAL = new RegExp(
+ UNICODE_WHITESPACE_PATTERN,
+ "g"
+);
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/index.ts b/packages/core/src/extensions/tiptap-extensions/Link/index.ts
new file mode 100644
index 0000000000..c9bbe60114
--- /dev/null
+++ b/packages/core/src/extensions/tiptap-extensions/Link/index.ts
@@ -0,0 +1,3 @@
+export { Link } from "./link.js";
+export type { LinkOptions, LinkProtocolOptions } from "./link.js";
+export { isAllowedUri, pasteRegex } from "./link.js";
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/link.test.ts b/packages/core/src/extensions/tiptap-extensions/Link/link.test.ts
new file mode 100644
index 0000000000..221f5c74e1
--- /dev/null
+++ b/packages/core/src/extensions/tiptap-extensions/Link/link.test.ts
@@ -0,0 +1,855 @@
+import { afterEach, describe, expect, it } from "vitest";
+
+import { BlockNoteEditor } from "../../../editor/BlockNoteEditor.js";
+import { findLinks, tokenizeLink } from "./helpers/linkDetector.js";
+
+/**
+ * @vitest-environment jsdom
+ */
+
+// ============================================================================
+// Helpers
+// ============================================================================
+
+/** Wrapper matching the old tokenize().map(t => t.toObject(defaultProtocol)) pattern */
+function tokenizeToObjects(text: string, defaultProtocol = "http") {
+ return tokenizeLink(text, defaultProtocol);
+}
+
+/**
+ * Mirrors the isValidLinkStructure function from autolink.ts.
+ * A valid structure is either:
+ * - A single link token
+ * - A link token wrapped in () or []
+ */
+function isValidLinkStructure(
+ tokens: Array<{ isLink: boolean; value: string }>
+) {
+ if (tokens.length === 1) {
+ return tokens[0].isLink;
+ }
+ if (tokens.length === 3 && tokens[1].isLink) {
+ return ["()", "[]"].includes(tokens[0].value + tokens[2].value);
+ }
+ return false;
+}
+
+function createEditor() {
+ const editor = BlockNoteEditor.create();
+ const div = document.createElement("div");
+ editor.mount(div);
+ return editor;
+}
+
+/**
+ * Insert text at the end of a block, followed by a space to trigger autolink.
+ * Returns the link marks found in that block afterward.
+ */
+function typeTextThenSpace(
+ editor: BlockNoteEditor,
+ blockId: string,
+ text: string
+) {
+ editor.setTextCursorPosition(blockId, "end");
+ const view = editor._tiptapEditor.view;
+ const { from } = view.state.selection;
+
+ // Insert the text
+ view.dispatch(view.state.tr.insertText(text, from));
+
+ // Now insert a space to trigger autolink
+ const afterInsert = view.state.selection.from;
+ view.dispatch(view.state.tr.insertText(" ", afterInsert));
+
+ return getLinksInDocument(editor);
+}
+
+/**
+ * Walk the ProseMirror doc and collect all link marks with their text and href.
+ */
+function getLinksInDocument(editor: BlockNoteEditor) {
+ const links: Array<{ text: string; href: string; from: number; to: number }> =
+ [];
+ const doc = editor._tiptapEditor.state.doc;
+ const linkType = editor._tiptapEditor.schema.marks.link;
+
+ doc.descendants((node, pos) => {
+ if (node.isText && node.marks.length > 0) {
+ const linkMark = node.marks.find((m) => m.type === linkType);
+ if (linkMark) {
+ links.push({
+ text: node.text || "",
+ href: linkMark.attrs.href,
+ from: pos,
+ to: pos + node.nodeSize,
+ });
+ }
+ }
+ });
+ return links;
+}
+
+// ============================================================================
+// Level 1: Unit tests for findLinks() and tokenizeLink()
+// ============================================================================
+
+describe("findLinks() baseline behavior", () => {
+ describe("basic URL detection", () => {
+ it("detects https URLs", () => {
+ const results = findLinks("https://example.com");
+ expect(results).toHaveLength(1);
+ expect(results[0]).toMatchObject({
+ isLink: true,
+ value: "https://example.com",
+ href: "https://example.com",
+ start: 0,
+ end: 19,
+ });
+ });
+
+ it("detects http URLs", () => {
+ const results = findLinks("http://example.com");
+ expect(results).toHaveLength(1);
+ expect(results[0]).toMatchObject({
+ isLink: true,
+ value: "http://example.com",
+ href: "http://example.com",
+ });
+ });
+
+ it("detects schemeless URLs and prepends default protocol", () => {
+ const results = findLinks("example.com");
+ expect(results).toHaveLength(1);
+ expect(results[0]).toMatchObject({
+ isLink: true,
+ value: "example.com",
+ href: "http://example.com",
+ start: 0,
+ end: 11,
+ });
+ });
+
+ it("respects defaultProtocol option", () => {
+ const results = findLinks("example.com", { defaultProtocol: "https" });
+ expect(results).toHaveLength(1);
+ expect(results[0].href).toBe("https://example.com");
+ });
+
+ it("detects www URLs", () => {
+ const results = findLinks("www.example.com");
+ expect(results).toHaveLength(1);
+ expect(results[0]).toMatchObject({
+ isLink: true,
+ value: "www.example.com",
+ href: "http://www.example.com",
+ });
+ });
+ });
+
+ describe("multiple URLs in text", () => {
+ it("finds multiple URLs with correct positions", () => {
+ const results = findLinks("Visit https://a.com and https://b.com");
+ expect(results).toHaveLength(2);
+ expect(results[0]).toMatchObject({
+ value: "https://a.com",
+ start: 6,
+ end: 19,
+ });
+ expect(results[1]).toMatchObject({
+ value: "https://b.com",
+ start: 24,
+ end: 37,
+ });
+ });
+
+ it("finds multiple schemeless URLs", () => {
+ const results = findLinks("Check example.com or test.org");
+ expect(results).toHaveLength(2);
+ expect(results[0].value).toBe("example.com");
+ expect(results[1].value).toBe("test.org");
+ });
+ });
+
+ describe("URLs with paths, queries, and fragments", () => {
+ it("includes full path", () => {
+ const results = findLinks("https://example.com/path/to/page");
+ expect(results).toHaveLength(1);
+ expect(results[0].value).toBe("https://example.com/path/to/page");
+ });
+
+ it("includes query string", () => {
+ const results = findLinks("https://example.com?q=hello&b=world");
+ expect(results).toHaveLength(1);
+ expect(results[0].value).toBe("https://example.com?q=hello&b=world");
+ });
+
+ it("includes fragment", () => {
+ const results = findLinks("https://example.com#section");
+ expect(results).toHaveLength(1);
+ expect(results[0].value).toBe("https://example.com#section");
+ });
+
+ it("includes path + query + fragment", () => {
+ const results = findLinks("https://example.com/path?q=1#frag");
+ expect(results).toHaveLength(1);
+ expect(results[0].value).toBe("https://example.com/path?q=1#frag");
+ });
+
+ it("includes encoded characters", () => {
+ const results = findLinks("https://example.com/path%20name");
+ expect(results).toHaveLength(1);
+ expect(results[0].value).toBe("https://example.com/path%20name");
+ });
+
+ it("includes trailing slash", () => {
+ const results = findLinks("https://example.com/");
+ expect(results).toHaveLength(1);
+ expect(results[0].value).toBe("https://example.com/");
+ });
+ });
+
+ describe("URLs with ports", () => {
+ it("detects URL with port", () => {
+ const results = findLinks("https://example.com:8080");
+ expect(results).toHaveLength(1);
+ expect(results[0].value).toBe("https://example.com:8080");
+ });
+
+ it("detects schemeless URL with port and path", () => {
+ const results = findLinks("example.com:3000/path");
+ expect(results).toHaveLength(1);
+ expect(results[0]).toMatchObject({
+ value: "example.com:3000/path",
+ href: "http://example.com:3000/path",
+ });
+ });
+ });
+
+ describe("trailing punctuation handling", () => {
+ it("excludes trailing period", () => {
+ const results = findLinks("Visit https://example.com.");
+ expect(results).toHaveLength(1);
+ expect(results[0].value).toBe("https://example.com");
+ });
+
+ it("excludes trailing comma", () => {
+ const results = findLinks("See https://example.com, and more");
+ expect(results).toHaveLength(1);
+ expect(results[0].value).toBe("https://example.com");
+ });
+
+ it("excludes surrounding parentheses", () => {
+ const results = findLinks("(https://example.com)");
+ expect(results).toHaveLength(1);
+ expect(results[0]).toMatchObject({
+ value: "https://example.com",
+ start: 1,
+ end: 20,
+ });
+ });
+
+ it("keeps balanced parentheses in path (Wikipedia-style)", () => {
+ const results = findLinks(
+ "https://en.wikipedia.org/wiki/Foo_(bar)"
+ );
+ expect(results).toHaveLength(1);
+ expect(results[0].value).toBe(
+ "https://en.wikipedia.org/wiki/Foo_(bar)"
+ );
+ });
+ });
+
+ describe("non-links", () => {
+ it("returns empty for plain text", () => {
+ expect(findLinks("not a link")).toHaveLength(0);
+ });
+
+ it("returns empty for single word", () => {
+ expect(findLinks("hello")).toHaveLength(0);
+ });
+
+ it("returns empty for empty string", () => {
+ expect(findLinks("")).toHaveLength(0);
+ });
+
+ it("returns empty for just a protocol", () => {
+ expect(findLinks("https://")).toHaveLength(0);
+ });
+
+ it("does not detect bare IP addresses", () => {
+ expect(findLinks("192.168.1.1")).toHaveLength(0);
+ });
+ });
+
+ describe("domain variations", () => {
+ it("detects hyphenated domains", () => {
+ const results = findLinks("my-site.example.com");
+ expect(results).toHaveLength(1);
+ expect(results[0].value).toBe("my-site.example.com");
+ });
+
+ it("detects subdomains", () => {
+ const results = findLinks("sub.domain.example.com");
+ expect(results).toHaveLength(1);
+ expect(results[0].value).toBe("sub.domain.example.com");
+ });
+ });
+
+ describe("URL position in text", () => {
+ it("detects URL at end of text", () => {
+ const results = findLinks("go to example.com");
+ expect(results).toHaveLength(1);
+ expect(results[0]).toMatchObject({
+ value: "example.com",
+ start: 6,
+ end: 17,
+ });
+ });
+
+ it("detects URL at start of text", () => {
+ const results = findLinks("example.com is great");
+ expect(results).toHaveLength(1);
+ expect(results[0]).toMatchObject({
+ value: "example.com",
+ start: 0,
+ end: 11,
+ });
+ });
+ });
+
+ describe("protocol variations", () => {
+ it("detects ftp URLs", () => {
+ const results = findLinks("ftp://files.example.com");
+ expect(results).toHaveLength(1);
+ expect(results[0].value).toBe("ftp://files.example.com");
+ });
+
+ it("detects mailto URLs", () => {
+ const results = findLinks("mailto:user@example.com");
+ expect(results).toHaveLength(1);
+ expect(results[0]).toMatchObject({
+ value: "mailto:user@example.com",
+ href: "mailto:user@example.com",
+ });
+ });
+
+ it("detects bare email addresses as links", () => {
+ const results = findLinks("user@example.com");
+ expect(results).toHaveLength(1);
+ expect(results[0]).toMatchObject({
+ isLink: true,
+ value: "user@example.com",
+ href: "mailto:user@example.com",
+ });
+ });
+ });
+
+ describe("boundary handling", () => {
+ it("stops at whitespace", () => {
+ const results = findLinks("https://example.com/path with spaces");
+ expect(results).toHaveLength(1);
+ expect(results[0].value).toBe("https://example.com/path");
+ });
+ });
+});
+
+describe("tokenizeLink() baseline behavior", () => {
+ describe("single valid links", () => {
+ it("tokenizes schemeless URL as single link token", () => {
+ const tokens = tokenizeToObjects("example.com");
+ expect(tokens).toHaveLength(1);
+ expect(tokens[0]).toMatchObject({
+ isLink: true,
+ value: "example.com",
+ href: "http://example.com",
+ start: 0,
+ end: 11,
+ });
+ });
+
+ it("tokenizes https URL as single link token", () => {
+ const tokens = tokenizeToObjects("https://example.com");
+ expect(tokens).toHaveLength(1);
+ expect(tokens[0]).toMatchObject({
+ isLink: true,
+ value: "https://example.com",
+ href: "https://example.com",
+ });
+ });
+
+ it("tokenizes URL with path as single link token", () => {
+ const tokens = tokenizeToObjects("example.com/path");
+ expect(tokens).toHaveLength(1);
+ expect(tokens[0]).toMatchObject({
+ isLink: true,
+ value: "example.com/path",
+ href: "http://example.com/path",
+ });
+ });
+
+ it("tokenizes www URL as single link token", () => {
+ const tokens = tokenizeToObjects("www.example.com");
+ expect(tokens).toHaveLength(1);
+ expect(tokens[0]).toMatchObject({
+ isLink: true,
+ value: "www.example.com",
+ href: "http://www.example.com",
+ });
+ });
+
+ it("tokenizes URL with https and path as single link token", () => {
+ const tokens = tokenizeToObjects("https://example.com/path");
+ expect(tokens).toHaveLength(1);
+ expect(tokens[0]).toMatchObject({
+ isLink: true,
+ value: "https://example.com/path",
+ href: "https://example.com/path",
+ });
+ });
+
+ it("tokenizes short TLD (2 chars) as link", () => {
+ const tokens = tokenizeToObjects("test.co");
+ expect(tokens).toHaveLength(1);
+ expect(tokens[0].isLink).toBe(true);
+ });
+ });
+
+ describe("bracket-wrapped links", () => {
+ it("tokenizes (url) as 3 tokens with link in middle", () => {
+ const tokens = tokenizeToObjects("(example.com)");
+ expect(tokens).toHaveLength(3);
+ expect(tokens[0]).toMatchObject({
+ isLink: false,
+ value: "(",
+ start: 0,
+ end: 1,
+ });
+ expect(tokens[1]).toMatchObject({
+ isLink: true,
+ value: "example.com",
+ href: "http://example.com",
+ start: 1,
+ end: 12,
+ });
+ expect(tokens[2]).toMatchObject({
+ isLink: false,
+ value: ")",
+ start: 12,
+ end: 13,
+ });
+ });
+
+ it("tokenizes [url] as 3 tokens with link in middle", () => {
+ const tokens = tokenizeToObjects("[example.com]");
+ expect(tokens).toHaveLength(3);
+ expect(tokens[0]).toMatchObject({ isLink: false, value: "[" });
+ expect(tokens[1]).toMatchObject({
+ isLink: true,
+ value: "example.com",
+ });
+ expect(tokens[2]).toMatchObject({ isLink: false, value: "]" });
+ });
+
+ it("tokenizes (https://url) as 3 tokens", () => {
+ const tokens = tokenizeToObjects("(https://example.com)");
+ expect(tokens).toHaveLength(3);
+ expect(tokens[0]).toMatchObject({ isLink: false, value: "(" });
+ expect(tokens[1]).toMatchObject({
+ isLink: true,
+ value: "https://example.com",
+ href: "https://example.com",
+ });
+ expect(tokens[2]).toMatchObject({ isLink: false, value: ")" });
+ });
+ });
+
+ describe("non-links", () => {
+ it("tokenizes plain word as non-link", () => {
+ const tokens = tokenizeToObjects("notaurl");
+ expect(tokens).toHaveLength(1);
+ expect(tokens[0].isLink).toBe(false);
+ });
+
+ it("tokenizes domain with trailing number as non-link", () => {
+ // This is a key behavior: example.com1 is NOT a valid link
+ // because the TLD is "com1" which is not valid
+ const tokens = tokenizeToObjects("example.com1");
+ expect(tokens).toHaveLength(1);
+ expect(tokens[0].isLink).toBe(false);
+ });
+
+ it("tokenizes single-char TLD as non-link", () => {
+ const tokens = tokenizeToObjects("test.x");
+ expect(tokens).toHaveLength(1);
+ expect(tokens[0].isLink).toBe(false);
+ });
+
+ it("tokenizes single-char hostname as non-link", () => {
+ const tokens = tokenizeToObjects("a.bc");
+ expect(tokens).toHaveLength(1);
+ expect(tokens[0].isLink).toBe(false);
+ });
+ });
+
+ describe("edge cases", () => {
+ it("tokenizes IP address as non-link", () => {
+ const tokens = tokenizeToObjects("192.168.1.1");
+ expect(tokens).toHaveLength(1);
+ expect(tokens[0].isLink).toBe(false);
+ });
+
+ it("tokenizes localhost as link (filtered downstream by shouldAutoLink)", () => {
+ const tokens = tokenizeToObjects("localhost");
+ expect(tokens).toHaveLength(1);
+ expect(tokens[0].isLink).toBe(true);
+ });
+
+ it("tokenizes url with trailing dot as url + dot tokens", () => {
+ const tokens = tokenizeToObjects("example.com.");
+ expect(tokens).toHaveLength(2);
+ expect(tokens[0]).toMatchObject({
+ isLink: true,
+ value: "example.com",
+ });
+ expect(tokens[1]).toMatchObject({
+ isLink: false,
+ value: ".",
+ });
+ });
+
+ it("tokenizes {url} as 3 tokens (curly braces)", () => {
+ const tokens = tokenizeToObjects("{example.com}");
+ expect(tokens).toHaveLength(3);
+ expect(tokens[0]).toMatchObject({ isLink: false, value: "{" });
+ expect(tokens[1]).toMatchObject({ isLink: true, value: "example.com" });
+ expect(tokens[2]).toMatchObject({ isLink: false, value: "}" });
+ });
+
+ it("respects defaultProtocol parameter", () => {
+ const tokens = tokenizeToObjects("example.com", "https");
+ expect(tokens[0].href).toBe("https://example.com");
+ });
+ });
+});
+
+describe("isValidLinkStructure baseline", () => {
+ it("accepts single link token", () => {
+ const tokens = tokenizeToObjects("example.com");
+ expect(isValidLinkStructure(tokens)).toBe(true);
+ });
+
+ it("accepts link wrapped in parentheses", () => {
+ const tokens = tokenizeToObjects("(example.com)");
+ expect(isValidLinkStructure(tokens)).toBe(true);
+ });
+
+ it("accepts link wrapped in square brackets", () => {
+ const tokens = tokenizeToObjects("[example.com]");
+ expect(isValidLinkStructure(tokens)).toBe(true);
+ });
+
+ it("rejects link wrapped in curly braces", () => {
+ // {url} tokenizes to 3 tokens but {} is not in the accepted list
+ const tokens = tokenizeToObjects("{example.com}");
+ expect(isValidLinkStructure(tokens)).toBe(false);
+ });
+
+ it("rejects non-link single token", () => {
+ const tokens = tokenizeToObjects("notaurl");
+ expect(isValidLinkStructure(tokens)).toBe(false);
+ });
+
+ it("rejects url with trailing dot (2 tokens)", () => {
+ const tokens = tokenizeToObjects("example.com.");
+ expect(isValidLinkStructure(tokens)).toBe(false);
+ });
+
+ it("rejects example.com1 (invalid TLD)", () => {
+ const tokens = tokenizeToObjects("example.com1");
+ expect(isValidLinkStructure(tokens)).toBe(false);
+ });
+});
+
+// ============================================================================
+// Level 2: Integration tests through the editor
+// ============================================================================
+
+describe("Link extension autolink behavior", () => {
+ let editor: BlockNoteEditor;
+
+ afterEach(() => {
+ if (editor) {
+ editor._tiptapEditor.destroy();
+ }
+ });
+
+ function setupEditorWithBlock(content = "") {
+ editor = createEditor();
+ editor.replaceBlocks(editor.document, [
+ {
+ id: "test-block",
+ type: "paragraph",
+ content: content || undefined,
+ },
+ ]);
+ return editor;
+ }
+
+ describe("should autolink", () => {
+ it("autolinks https URL when followed by space", () => {
+ setupEditorWithBlock();
+ const links = typeTextThenSpace(editor, "test-block", "https://example.com");
+ expect(links).toHaveLength(1);
+ expect(links[0].href).toBe("https://example.com");
+ expect(links[0].text).toBe("https://example.com");
+ });
+
+ it("autolinks http URL when followed by space", () => {
+ setupEditorWithBlock();
+ const links = typeTextThenSpace(editor, "test-block", "http://example.com");
+ expect(links).toHaveLength(1);
+ expect(links[0].href).toBe("http://example.com");
+ });
+
+ it("autolinks schemeless URL with default protocol (https in BlockNote)", () => {
+ setupEditorWithBlock();
+ const links = typeTextThenSpace(editor, "test-block", "example.com");
+ expect(links).toHaveLength(1);
+ // BlockNote overrides the tiptap default to "https" via DEFAULT_LINK_PROTOCOL
+ expect(links[0].href).toBe("https://example.com");
+ expect(links[0].text).toBe("example.com");
+ });
+
+ it("autolinks www URL", () => {
+ setupEditorWithBlock();
+ const links = typeTextThenSpace(editor, "test-block", "www.example.com");
+ expect(links).toHaveLength(1);
+ expect(links[0].href).toBe("https://www.example.com");
+ });
+
+ it("autolinks URL with path and query", () => {
+ setupEditorWithBlock();
+ const links = typeTextThenSpace(
+ editor,
+ "test-block",
+ "https://example.com/path?q=1"
+ );
+ expect(links).toHaveLength(1);
+ expect(links[0].href).toBe("https://example.com/path?q=1");
+ });
+ });
+
+ describe("should NOT autolink", () => {
+ it("does not autolink plain text", () => {
+ setupEditorWithBlock();
+ const links = typeTextThenSpace(editor, "test-block", "notaurl");
+ expect(links).toHaveLength(0);
+ });
+
+ it("does not autolink single word", () => {
+ setupEditorWithBlock();
+ const links = typeTextThenSpace(editor, "test-block", "hello");
+ expect(links).toHaveLength(0);
+ });
+
+ it("does not autolink IP address without protocol", () => {
+ setupEditorWithBlock();
+ const links = typeTextThenSpace(editor, "test-block", "192.168.1.1");
+ expect(links).toHaveLength(0);
+ });
+
+ it("does not autolink localhost (single-word hostname)", () => {
+ setupEditorWithBlock();
+ const links = typeTextThenSpace(editor, "test-block", "localhost");
+ expect(links).toHaveLength(0);
+ });
+
+ it("does not autolink domain with trailing number (invalid TLD)", () => {
+ setupEditorWithBlock();
+ const links = typeTextThenSpace(editor, "test-block", "example.com1");
+ expect(links).toHaveLength(0);
+ });
+ });
+
+ describe("bracket-wrapped URLs", () => {
+ it("autolinks URL in parentheses, linking only the URL", () => {
+ setupEditorWithBlock();
+ const links = typeTextThenSpace(
+ editor,
+ "test-block",
+ "(https://example.com)"
+ );
+ expect(links).toHaveLength(1);
+ expect(links[0].href).toBe("https://example.com");
+ expect(links[0].text).toBe("https://example.com");
+ });
+
+ it("autolinks URL in square brackets, linking only the URL", () => {
+ setupEditorWithBlock();
+ const links = typeTextThenSpace(
+ editor,
+ "test-block",
+ "[https://example.com]"
+ );
+ expect(links).toHaveLength(1);
+ expect(links[0].href).toBe("https://example.com");
+ expect(links[0].text).toBe("https://example.com");
+ });
+ });
+});
+
+describe("Link extension paste handler behavior", () => {
+ let editor: BlockNoteEditor;
+
+ afterEach(() => {
+ if (editor) {
+ editor._tiptapEditor.destroy();
+ }
+ });
+
+ it("applies link mark when pasting URL over selected text", () => {
+ editor = createEditor();
+ editor.replaceBlocks(editor.document, [
+ {
+ id: "test-block",
+ type: "paragraph",
+ content: "click here",
+ },
+ ]);
+
+ // Select "click here"
+ editor.setTextCursorPosition("test-block", "start");
+ const view = editor._tiptapEditor.view;
+ const doc = view.state.doc;
+
+ // Find the text node position
+ let textStart = 0;
+ let textEnd = 0;
+ doc.descendants((node, pos) => {
+ if (node.isText && node.text === "click here") {
+ textStart = pos;
+ textEnd = pos + node.nodeSize;
+ }
+ });
+
+ // Create selection over the text
+ const { TextSelection } = require("@tiptap/pm/state");
+ const tr = view.state.tr.setSelection(
+ TextSelection.create(view.state.doc, textStart, textEnd)
+ );
+ view.dispatch(tr);
+
+ // Simulate paste via the paste handler plugin
+ const pastePlugin = view.state.plugins.find(
+ (p) => (p as any).key === "handlePasteLink$"
+ );
+
+ if (pastePlugin && pastePlugin.props.handlePaste) {
+ // Create a minimal slice that looks like pasted URL text
+ const { Slice, Fragment } = require("@tiptap/pm/model");
+ const textNode = view.state.schema.text("https://example.com");
+ const slice = new Slice(Fragment.from(textNode), 0, 0);
+
+ const result = (pastePlugin.props.handlePaste as any)(
+ view,
+ new ClipboardEvent("paste"),
+ slice
+ );
+
+ if (result) {
+ // Check that link mark was applied
+ const links = getLinksInDocument(editor);
+ expect(links).toHaveLength(1);
+ expect(links[0].href).toBe("https://example.com");
+ expect(links[0].text).toBe("click here");
+ }
+ }
+ });
+
+ it("does not apply link when pasting non-URL text over selection", () => {
+ editor = createEditor();
+ editor.replaceBlocks(editor.document, [
+ {
+ id: "test-block",
+ type: "paragraph",
+ content: "click here",
+ },
+ ]);
+
+ editor.setTextCursorPosition("test-block", "start");
+ const view = editor._tiptapEditor.view;
+ const doc = view.state.doc;
+
+ let textStart = 0;
+ let textEnd = 0;
+ doc.descendants((node, pos) => {
+ if (node.isText && node.text === "click here") {
+ textStart = pos;
+ textEnd = pos + node.nodeSize;
+ }
+ });
+
+ const { TextSelection } = require("@tiptap/pm/state");
+ const tr = view.state.tr.setSelection(
+ TextSelection.create(view.state.doc, textStart, textEnd)
+ );
+ view.dispatch(tr);
+
+ const pastePlugin = view.state.plugins.find(
+ (p) => (p as any).key === "handlePasteLink$"
+ );
+
+ if (pastePlugin && pastePlugin.props.handlePaste) {
+ const { Slice, Fragment } = require("@tiptap/pm/model");
+ const textNode = view.state.schema.text("not a url");
+ const slice = new Slice(Fragment.from(textNode), 0, 0);
+
+ const result = (pastePlugin.props.handlePaste as any)(
+ view,
+ new ClipboardEvent("paste"),
+ slice
+ );
+
+ // Should return false (not handled)
+ expect(result).toBe(false);
+
+ // No links should exist
+ const links = getLinksInDocument(editor);
+ expect(links).toHaveLength(0);
+ }
+ });
+
+ it("does not apply link when pasting URL with empty selection", () => {
+ editor = createEditor();
+ editor.replaceBlocks(editor.document, [
+ {
+ id: "test-block",
+ type: "paragraph",
+ content: "some text",
+ },
+ ]);
+
+ // Place cursor without selection
+ editor.setTextCursorPosition("test-block", "end");
+ const view = editor._tiptapEditor.view;
+
+ const pastePlugin = view.state.plugins.find(
+ (p) => (p as any).key === "handlePasteLink$"
+ );
+
+ if (pastePlugin && pastePlugin.props.handlePaste) {
+ const { Slice, Fragment } = require("@tiptap/pm/model");
+ const textNode = view.state.schema.text("https://example.com");
+ const slice = new Slice(Fragment.from(textNode), 0, 0);
+
+ const result = (pastePlugin.props.handlePaste as any)(
+ view,
+ new ClipboardEvent("paste"),
+ slice
+ );
+
+ // Should return false because selection is empty
+ expect(result).toBe(false);
+ }
+ });
+});
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/link.ts b/packages/core/src/extensions/tiptap-extensions/Link/link.ts
new file mode 100644
index 0000000000..1c879dc78c
--- /dev/null
+++ b/packages/core/src/extensions/tiptap-extensions/Link/link.ts
@@ -0,0 +1,529 @@
+import type { PasteRuleMatch } from "@tiptap/core";
+import { Mark, markPasteRule, mergeAttributes } from "@tiptap/core";
+import type { Plugin } from "@tiptap/pm/state";
+import { autolink } from "./helpers/autolink.js";
+import { findLinks } from "./helpers/linkDetector.js";
+import { clickHandler } from "./helpers/clickHandler.js";
+import { pasteHandler } from "./helpers/pasteHandler.js";
+import { UNICODE_WHITESPACE_REGEX_GLOBAL } from "./helpers/whitespace.js";
+
+export interface LinkProtocolOptions {
+ /**
+ * The protocol scheme to be registered.
+ * @default '''
+ * @example 'ftp'
+ * @example 'git'
+ */
+ scheme: string;
+
+ /**
+ * If enabled, it allows optional slashes after the protocol.
+ * @default false
+ * @example true
+ */
+ optionalSlashes?: boolean;
+}
+
+export const pasteRegex =
+ /https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z]{2,}\b(?:[-a-zA-Z0-9@:%._+~#=?!&/]*)(?:[-a-zA-Z0-9@:%._+~#=?!&/]*)/gi;
+
+/**
+ * @deprecated The default behavior is now to open links when the editor is not editable.
+ */
+type DeprecatedOpenWhenNotEditable = "whenNotEditable";
+
+export interface LinkOptions {
+ /**
+ * If enabled, the extension will automatically add links as you type.
+ * @default true
+ * @example false
+ */
+ autolink: boolean;
+
+ /**
+ * An array of custom protocols to be recognized by the link detector.
+ * @default []
+ * @example ['ftp', 'git']
+ */
+ protocols: Array;
+
+ /**
+ * Default protocol to use when no protocol is specified.
+ * @default 'http'
+ */
+ defaultProtocol: string;
+ /**
+ * If enabled, links will be opened on click.
+ * @default true
+ * @example false
+ */
+ openOnClick: boolean | DeprecatedOpenWhenNotEditable;
+ /**
+ * If enabled, the link will be selected when clicked.
+ * @default false
+ * @example true
+ */
+ enableClickSelection: boolean;
+ /**
+ * Adds a link to the current selection if the pasted content only contains an url.
+ * @default true
+ * @example false
+ */
+ linkOnPaste: boolean;
+
+ /**
+ * HTML attributes to add to the link element.
+ * @default {}
+ * @example { class: 'foo' }
+ */
+ HTMLAttributes: Record;
+
+ /**
+ * @deprecated Use the `shouldAutoLink` option instead.
+ * A validation function that modifies link verification for the auto linker.
+ * @param url - The url to be validated.
+ * @returns - True if the url is valid, false otherwise.
+ */
+ validate: (url: string) => boolean;
+
+ /**
+ * A validation function which is used for configuring link verification for preventing XSS attacks.
+ * Only modify this if you know what you're doing.
+ *
+ * @returns {boolean} `true` if the URL is valid, `false` otherwise.
+ *
+ * @example
+ * isAllowedUri: (url, { defaultValidate, protocols, defaultProtocol }) => {
+ * return url.startsWith('./') || defaultValidate(url)
+ * }
+ */
+ isAllowedUri: (
+ /**
+ * The URL to be validated.
+ */
+ url: string,
+ ctx: {
+ /**
+ * The default validation function.
+ */
+ defaultValidate: (url: string) => boolean;
+ /**
+ * An array of allowed protocols for the URL (e.g., "http", "https"). As defined in the `protocols` option.
+ */
+ protocols: Array;
+ /**
+ * A string that represents the default protocol (e.g., 'http'). As defined in the `defaultProtocol` option.
+ */
+ defaultProtocol: string;
+ }
+ ) => boolean;
+
+ /**
+ * Determines whether a valid link should be automatically linked in the content.
+ *
+ * @param {string} url - The URL that has already been validated.
+ * @returns {boolean} - True if the link should be auto-linked; false if it should not be auto-linked.
+ */
+ shouldAutoLink: (url: string) => boolean;
+}
+
+declare module "@tiptap/core" {
+ interface Commands {
+ link: {
+ /**
+ * Set a link mark
+ * @param attributes The link attributes
+ * @example editor.commands.setLink({ href: 'https://tiptap.dev' })
+ */
+ setLink: (attributes: {
+ href: string;
+ target?: string | null;
+ rel?: string | null;
+ class?: string | null;
+ title?: string | null;
+ }) => ReturnType;
+ /**
+ * Toggle a link mark
+ * @param attributes The link attributes
+ * @example editor.commands.toggleLink({ href: 'https://tiptap.dev' })
+ */
+ toggleLink: (attributes?: {
+ href: string;
+ target?: string | null;
+ rel?: string | null;
+ class?: string | null;
+ title?: string | null;
+ }) => ReturnType;
+ /**
+ * Unset a link mark
+ * @example editor.commands.unsetLink()
+ */
+ unsetLink: () => ReturnType;
+ };
+ }
+}
+
+export function isAllowedUri(
+ uri: string | undefined,
+ protocols?: LinkOptions["protocols"]
+) {
+ const allowedProtocols: string[] = [
+ "http",
+ "https",
+ "ftp",
+ "ftps",
+ "mailto",
+ "tel",
+ "callto",
+ "sms",
+ "cid",
+ "xmpp",
+ ];
+
+ if (protocols) {
+ protocols.forEach((protocol) => {
+ const nextProtocol =
+ typeof protocol === "string" ? protocol : protocol.scheme;
+
+ if (nextProtocol) {
+ allowedProtocols.push(nextProtocol);
+ }
+ });
+ }
+
+ return (
+ !uri ||
+ uri
+ .replace(UNICODE_WHITESPACE_REGEX_GLOBAL, "")
+ .match(
+ new RegExp(
+ // eslint-disable-next-line no-useless-escape
+ `^(?:(?:${allowedProtocols.join("|")}):|[^a-z]|[a-z0-9+.\-]+(?:[^a-z+.\-:]|$))`,
+ "i"
+ )
+ )
+ );
+}
+
+/**
+ * This extension allows you to create links.
+ * @see https://www.tiptap.dev/api/marks/link
+ */
+export const Link = Mark.create({
+ name: "link",
+
+ priority: 1000,
+
+ keepOnSplit: false,
+
+ exitable: true,
+
+ onCreate() {
+ // TODO: v4 - remove validate option
+ if (this.options.validate && !this.options.shouldAutoLink) {
+ // Copy the validate function to the shouldAutoLink option
+ this.options.shouldAutoLink = this.options.validate;
+ console.warn(
+ 'The `validate` option is deprecated. Rename to the `shouldAutoLink` option instead.'
+ );
+ }
+ },
+
+ inclusive() {
+ return this.options.autolink;
+ },
+
+ addOptions() {
+ return {
+ openOnClick: true,
+ enableClickSelection: false,
+ linkOnPaste: true,
+ autolink: true,
+ protocols: [],
+ defaultProtocol: "http",
+ HTMLAttributes: {
+ target: "_blank",
+ rel: "noopener noreferrer nofollow",
+ class: null,
+ },
+ isAllowedUri: (url, ctx) => !!isAllowedUri(url, ctx.protocols),
+ validate: (url) => !!url,
+ shouldAutoLink: (url) => {
+ // URLs with explicit protocols (e.g., https://) should be auto-linked
+ // But not if @ appears before :// (that would be userinfo like user:pass@host)
+ const hasProtocol = /^[a-z][a-z0-9+.-]*:\/\//i.test(url);
+ const hasMaybeProtocol = /^[a-z][a-z0-9+.-]*:/i.test(url);
+
+ if (hasProtocol || (hasMaybeProtocol && !url.includes("@"))) {
+ return true;
+ }
+ // Strip userinfo (user:pass@) if present, then extract hostname
+ const urlWithoutUserinfo = url.includes("@")
+ ? url.split("@").pop()!
+ : url;
+ const hostname = urlWithoutUserinfo.split(/[/?#:]/)[0];
+
+ // Don't auto-link IP addresses without protocol
+ if (/^\d{1,3}(\.\d{1,3}){3}$/.test(hostname)) {
+ return false;
+ }
+ // Don't auto-link single-word hostnames without TLD (e.g., "localhost")
+ if (!/\./.test(hostname)) {
+ return false;
+ }
+ return true;
+ },
+ };
+ },
+
+ addAttributes() {
+ return {
+ href: {
+ default: null,
+ parseHTML(element) {
+ return element.getAttribute("href");
+ },
+ },
+ target: {
+ default: this.options.HTMLAttributes.target,
+ },
+ rel: {
+ default: this.options.HTMLAttributes.rel,
+ },
+ class: {
+ default: this.options.HTMLAttributes.class,
+ },
+ title: {
+ default: null,
+ },
+ };
+ },
+
+ parseHTML() {
+ return [
+ {
+ tag: "a[href]",
+ getAttrs: (dom) => {
+ const href = (dom as HTMLElement).getAttribute("href");
+
+ // prevent XSS attacks
+ if (
+ !href ||
+ !this.options.isAllowedUri(href, {
+ defaultValidate: (url) =>
+ !!isAllowedUri(url, this.options.protocols),
+ protocols: this.options.protocols,
+ defaultProtocol: this.options.defaultProtocol,
+ })
+ ) {
+ return false;
+ }
+ return null;
+ },
+ },
+ ];
+ },
+
+ renderHTML({ HTMLAttributes }) {
+ // prevent XSS attacks
+ if (
+ !this.options.isAllowedUri(HTMLAttributes.href, {
+ defaultValidate: (href) =>
+ !!isAllowedUri(href, this.options.protocols),
+ protocols: this.options.protocols,
+ defaultProtocol: this.options.defaultProtocol,
+ })
+ ) {
+ // strip out the href
+ return [
+ "a",
+ mergeAttributes(this.options.HTMLAttributes, {
+ ...HTMLAttributes,
+ href: "",
+ }),
+ 0,
+ ];
+ }
+
+ return [
+ "a",
+ mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),
+ 0,
+ ];
+ },
+
+ markdownTokenName: "link",
+
+ parseMarkdown: (token, helpers) => {
+ return helpers.applyMark(
+ "link",
+ helpers.parseInline(token.tokens || []),
+ {
+ href: token.href,
+ title: token.title || null,
+ }
+ );
+ },
+
+ renderMarkdown: (node, h) => {
+ const href = node.attrs?.href ?? "";
+ const title = node.attrs?.title ?? "";
+ const text = h.renderChildren(node);
+
+ return title ? `[${text}](${href} "${title}")` : `[${text}](${href})`;
+ },
+
+ addCommands() {
+ return {
+ setLink:
+ (attributes) =>
+ ({ chain }) => {
+ const { href } = attributes;
+
+ if (
+ !this.options.isAllowedUri(href, {
+ defaultValidate: (url) =>
+ !!isAllowedUri(url, this.options.protocols),
+ protocols: this.options.protocols,
+ defaultProtocol: this.options.defaultProtocol,
+ })
+ ) {
+ return false;
+ }
+
+ return chain()
+ .setMark(this.name, attributes)
+ .setMeta("preventAutolink", true)
+ .run();
+ },
+
+ toggleLink:
+ (attributes) =>
+ ({ chain }) => {
+ const { href } = attributes || {};
+
+ if (
+ href &&
+ !this.options.isAllowedUri(href, {
+ defaultValidate: (url) =>
+ !!isAllowedUri(url, this.options.protocols),
+ protocols: this.options.protocols,
+ defaultProtocol: this.options.defaultProtocol,
+ })
+ ) {
+ return false;
+ }
+
+ return chain()
+ .toggleMark(this.name, attributes, { extendEmptyMarkRange: true })
+ .setMeta("preventAutolink", true)
+ .run();
+ },
+
+ unsetLink:
+ () =>
+ ({ chain }) => {
+ return chain()
+ .unsetMark(this.name, { extendEmptyMarkRange: true })
+ .setMeta("preventAutolink", true)
+ .run();
+ },
+ };
+ },
+
+ addPasteRules() {
+ return [
+ markPasteRule({
+ find: (text) => {
+ const foundLinks: PasteRuleMatch[] = [];
+
+ if (text) {
+ const { protocols, defaultProtocol } = this.options;
+ const links = findLinks(text, { defaultProtocol }).filter(
+ (item) =>
+ item.isLink &&
+ this.options.isAllowedUri(item.value, {
+ defaultValidate: (href) =>
+ !!isAllowedUri(href, protocols),
+ protocols,
+ defaultProtocol,
+ })
+ );
+
+ if (links.length) {
+ links.forEach((link) => {
+ if (!this.options.shouldAutoLink(link.value)) {
+ return;
+ }
+
+ foundLinks.push({
+ text: link.value,
+ data: {
+ href: link.href,
+ },
+ index: link.start,
+ });
+ });
+ }
+ }
+
+ return foundLinks;
+ },
+ type: this.type,
+ getAttributes: (match) => {
+ return {
+ href: match.data?.href,
+ };
+ },
+ }),
+ ];
+ },
+
+ addProseMirrorPlugins() {
+ const plugins: Plugin[] = [];
+ const { protocols, defaultProtocol } = this.options;
+
+ if (this.options.autolink) {
+ plugins.push(
+ autolink({
+ type: this.type,
+ defaultProtocol: this.options.defaultProtocol,
+ validate: (url) =>
+ this.options.isAllowedUri(url, {
+ defaultValidate: (href) =>
+ !!isAllowedUri(href, protocols),
+ protocols,
+ defaultProtocol,
+ }),
+ shouldAutoLink: this.options.shouldAutoLink,
+ protocols,
+ })
+ );
+ }
+
+ plugins.push(
+ clickHandler({
+ type: this.type,
+ editor: this.editor,
+ openOnClick:
+ this.options.openOnClick === "whenNotEditable"
+ ? true
+ : this.options.openOnClick,
+ enableClickSelection: this.options.enableClickSelection,
+ })
+ );
+
+ if (this.options.linkOnPaste) {
+ plugins.push(
+ pasteHandler({
+ editor: this.editor,
+ defaultProtocol: this.options.defaultProtocol,
+ type: this.type,
+ shouldAutoLink: this.options.shouldAutoLink,
+ })
+ );
+ }
+
+ return plugins;
+ },
+});
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 202a26aeda..793f637a20 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -133,10 +133,10 @@ importers:
version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.5)
'@liveblocks/react-blocknote':
specifier: ^3.17.0
- version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)
+ version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)
'@liveblocks/react-tiptap':
specifier: ^3.17.0
- version: 3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))
+ version: 3.17.0(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))
'@liveblocks/react-ui':
specifier: ^3.17.0
version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -196,7 +196,7 @@ importers:
version: 4.0.2
'@tiptap/core':
specifier: ^3.13.0
- version: 3.22.3(@tiptap/pm@3.22.3)
+ version: 3.22.1(@tiptap/pm@3.22.1)
'@uppy/core':
specifier: ^3.13.1
version: 3.13.1
@@ -392,19 +392,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -438,19 +438,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -487,19 +487,19 @@ importers:
version: link:../../../packages/xl-multi-column
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -533,19 +533,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -579,19 +579,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -625,19 +625,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -671,19 +671,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -717,19 +717,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -763,19 +763,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
tailwindcss:
specifier: ^4.1.14
version: 4.2.2
@@ -818,19 +818,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -864,19 +864,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -910,19 +910,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -956,19 +956,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1002,19 +1002,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1048,19 +1048,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1094,19 +1094,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1140,19 +1140,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1186,19 +1186,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1232,19 +1232,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1284,19 +1284,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1333,19 +1333,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1379,19 +1379,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1425,19 +1425,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1471,22 +1471,22 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
react-icons:
specifier: ^5.5.0
- version: 5.6.0(react@19.2.5)
+ version: 5.6.0(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1520,22 +1520,22 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
react-icons:
specifier: ^5.5.0
- version: 5.6.0(react@19.2.5)
+ version: 5.6.0(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1569,22 +1569,22 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
react-icons:
specifier: ^5.5.0
- version: 5.6.0(react@19.2.5)
+ version: 5.6.0(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1618,22 +1618,22 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
react-icons:
specifier: ^5.5.0
- version: 5.6.0(react@19.2.5)
+ version: 5.6.0(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1667,19 +1667,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1713,19 +1713,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1759,19 +1759,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1805,19 +1805,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1851,13 +1851,13 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
'@uppy/core':
specifier: ^3.13.1
version: 3.13.1
@@ -1878,7 +1878,7 @@ importers:
version: 3.1.1(@uppy/core@3.13.1)
'@uppy/react':
specifier: ^3.4.0
- version: 3.4.0(@uppy/core@3.13.1)(@uppy/dashboard@3.9.1(@uppy/core@3.13.1))(@uppy/drag-drop@3.1.1(@uppy/core@3.13.1))(@uppy/file-input@3.1.2(@uppy/core@3.13.1))(@uppy/progress-bar@3.1.1(@uppy/core@3.13.1))(@uppy/status-bar@3.3.3(@uppy/core@3.13.1))(react@19.2.5)
+ version: 3.4.0(@uppy/core@3.13.1)(@uppy/dashboard@3.9.1(@uppy/core@3.13.1))(@uppy/drag-drop@3.1.1(@uppy/core@3.13.1))(@uppy/file-input@3.1.2(@uppy/core@3.13.1))(@uppy/progress-bar@3.1.1(@uppy/core@3.13.1))(@uppy/status-bar@3.3.3(@uppy/core@3.13.1))(react@19.2.4)
'@uppy/screen-capture':
specifier: ^3.2.0
version: 3.2.0(@uppy/core@3.13.1)
@@ -1893,13 +1893,13 @@ importers:
version: 3.6.8(@uppy/core@3.13.1)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
react-icons:
specifier: ^5.5.0
- version: 5.6.0(react@19.2.5)
+ version: 5.6.0(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1933,19 +1933,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1979,25 +1979,25 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
'@mui/icons-material':
specifier: ^5.16.1
- version: 5.18.0(@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)
+ version: 5.18.0(@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
'@mui/material':
specifier: ^5.16.1
- version: 5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2031,19 +2031,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2077,19 +2077,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2123,19 +2123,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2169,19 +2169,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2215,19 +2215,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2261,19 +2261,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2307,19 +2307,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2353,19 +2353,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2399,19 +2399,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2445,19 +2445,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2494,19 +2494,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2543,13 +2543,13 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
'@shikijs/core':
specifier: ^4
version: 4.0.2
@@ -2567,10 +2567,10 @@ importers:
version: 4.0.2
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2604,19 +2604,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2650,19 +2650,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2696,19 +2696,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2742,19 +2742,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2794,22 +2794,22 @@ importers:
version: link:../../../packages/xl-pdf-exporter
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
'@react-pdf/renderer':
specifier: ^4.3.0
- version: 4.3.2(react@19.2.5)
+ version: 4.3.2(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2849,19 +2849,19 @@ importers:
version: link:../../../packages/xl-multi-column
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2901,19 +2901,19 @@ importers:
version: link:../../../packages/xl-odt-exporter
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2950,22 +2950,22 @@ importers:
version: link:../../../packages/xl-email-exporter
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
'@react-email/render':
specifier: ^2.0.4
- version: 2.0.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 2.0.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2999,19 +2999,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3045,19 +3045,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3091,22 +3091,22 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
react-icons:
specifier: ^5.5.0
- version: 5.6.0(react@19.2.5)
+ version: 5.6.0(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3140,19 +3140,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3186,22 +3186,22 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
react-icons:
specifier: ^5.5.0
- version: 5.6.0(react@19.2.5)
+ version: 5.6.0(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3235,22 +3235,22 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
react-icons:
specifier: ^5.5.0
- version: 5.6.0(react@19.2.5)
+ version: 5.6.0(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3284,22 +3284,22 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
react-icons:
specifier: ^5.5.0
- version: 5.6.0(react@19.2.5)
+ version: 5.6.0(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3333,19 +3333,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3379,19 +3379,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3425,19 +3425,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3471,19 +3471,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3517,19 +3517,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3563,19 +3563,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3609,19 +3609,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
y-partykit:
specifier: ^0.0.25
version: 0.0.25
@@ -3664,31 +3664,31 @@ importers:
version: 3.17.0(@types/json-schema@7.0.15)
'@liveblocks/react':
specifier: ^3.17.0
- version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.5)
+ version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.4)
'@liveblocks/react-blocknote':
specifier: ^3.17.0
- version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)
+ version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)
'@liveblocks/react-tiptap':
specifier: ^3.17.0
- version: 3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))
+ version: 3.17.0(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30))
'@liveblocks/react-ui':
specifier: ^3.17.0
- version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
yjs:
specifier: ^13.6.27
version: 13.6.30
@@ -3725,22 +3725,22 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
'@y-sweet/react':
specifier: ^0.6.3
- version: 0.6.4(react@19.2.5)(yjs@13.6.30)
+ version: 0.6.4(react@19.2.4)(yjs@13.6.30)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3774,19 +3774,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3820,22 +3820,22 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
'@y-sweet/react':
specifier: ^0.6.3
- version: 0.6.4(react@19.2.5)(yjs@13.6.30)
+ version: 0.6.4(react@19.2.4)(yjs@13.6.30)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3869,19 +3869,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
y-partykit:
specifier: ^0.0.25
version: 0.0.25
@@ -3921,19 +3921,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
y-partykit:
specifier: ^0.0.25
version: 0.0.25
@@ -3973,19 +3973,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
y-partykit:
specifier: ^0.0.25
version: 0.0.25
@@ -4074,22 +4074,22 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
'@tiptap/core':
specifier: ^3.13.0
- version: 3.22.3(@tiptap/pm@3.22.3)
+ version: 3.22.1(@tiptap/pm@3.22.1)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -4126,22 +4126,22 @@ importers:
version: link:../../../packages/xl-ai
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
ai:
specifier: 6.0.5
version: 6.0.5(zod@4.3.6)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -4178,22 +4178,22 @@ importers:
version: link:../../../packages/xl-ai
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
ai:
specifier: 6.0.5
version: 6.0.5(zod@4.3.6)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -4230,25 +4230,25 @@ importers:
version: link:../../../packages/xl-ai
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
ai:
specifier: 6.0.5
version: 6.0.5(zod@4.3.6)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
react-icons:
specifier: ^5.5.0
- version: 5.6.0(react@19.2.5)
+ version: 5.6.0(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -4285,22 +4285,22 @@ importers:
version: link:../../../packages/xl-ai
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
ai:
specifier: 6.0.5
version: 6.0.5(zod@4.3.6)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
y-partykit:
specifier: ^0.0.25
version: 0.0.25
@@ -4343,22 +4343,22 @@ importers:
version: link:../../../packages/xl-ai
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
ai:
specifier: 6.0.5
version: 6.0.5(zod@4.3.6)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
y-partykit:
specifier: ^0.0.25
version: 0.0.25
@@ -4404,22 +4404,22 @@ importers:
version: link:../../../packages/xl-ai
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
ai:
specifier: 6.0.5
version: 6.0.5(zod@4.3.6)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -4456,22 +4456,22 @@ importers:
version: link:../../../packages/xl-ai
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
ai:
specifier: 6.0.5
version: 6.0.5(zod@4.3.6)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -4505,19 +4505,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -4551,19 +4551,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -4597,19 +4597,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.5)
+ version: 8.3.18(react@19.2.4)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.5)
+ version: 6.0.22(react@19.2.4)
react:
specifier: ^19.2.3
- version: 19.2.5
+ version: 19.2.4
react-dom:
specifier: ^19.2.3
- version: 19.2.5(react@19.2.5)
+ version: 19.2.4(react@19.2.4)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -4729,40 +4729,37 @@ importers:
version: 0.7.7
'@tiptap/core':
specifier: ^3.13.0
- version: 3.22.3(@tiptap/pm@3.22.3)
+ version: 3.22.1(@tiptap/pm@3.22.1)
'@tiptap/extension-bold':
specifier: ^3.13.0
- version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))
+ version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))
'@tiptap/extension-code':
specifier: ^3.13.0
- version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))
+ version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))
'@tiptap/extension-horizontal-rule':
specifier: ^3.13.0
- version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)
+ version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)
'@tiptap/extension-italic':
specifier: ^3.13.0
- version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))
- '@tiptap/extension-link':
- specifier: ^3.22.1
- version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)
+ version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))
'@tiptap/extension-paragraph':
specifier: ^3.13.0
- version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))
+ version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))
'@tiptap/extension-strike':
specifier: ^3.13.0
- version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))
+ version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))
'@tiptap/extension-text':
specifier: ^3.13.0
- version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))
+ version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))
'@tiptap/extension-underline':
specifier: ^3.13.0
- version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))
+ version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))
'@tiptap/extensions':
specifier: ^3.13.0
- version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)
+ version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)
'@tiptap/pm':
specifier: ^3.13.0
- version: 3.22.3
+ version: 3.22.1
emoji-mart:
specifier: ^5.6.0
version: 5.6.0
@@ -4972,13 +4969,13 @@ importers:
version: 0.7.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@tiptap/core':
specifier: ^3.13.0
- version: 3.22.3(@tiptap/pm@3.22.3)
+ version: 3.22.1(@tiptap/pm@3.22.1)
'@tiptap/pm':
specifier: ^3.13.0
- version: 3.22.3
+ version: 3.22.1
'@tiptap/react':
specifier: ^3.13.0
- version: 3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@types/use-sync-external-store':
specifier: 1.5.0
version: 1.5.0
@@ -5057,10 +5054,10 @@ importers:
version: link:../react
'@tiptap/core':
specifier: ^3.13.0
- version: 3.22.3(@tiptap/pm@3.22.3)
+ version: 3.22.1(@tiptap/pm@3.22.1)
'@tiptap/pm':
specifier: ^3.13.0
- version: 3.22.3
+ version: 3.22.1
jsdom:
specifier: ^25.0.1
version: 25.0.1(canvas@2.11.2)
@@ -5233,7 +5230,7 @@ importers:
version: 0.1.8(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-transform@1.12.0)(prosemirror-view@1.41.8)
'@tiptap/core':
specifier: ^3.13.0
- version: 3.22.3(@tiptap/pm@3.22.3)
+ version: 3.22.1(@tiptap/pm@3.22.1)
ai:
specifier: 6.0.5
version: 6.0.5(zod@4.3.6)
@@ -5245,7 +5242,7 @@ importers:
version: 4.6.2
prosemirror-changeset:
specifier: ^2.3.1
- version: 2.4.1
+ version: 2.3.1
prosemirror-model:
specifier: ^1.25.4
version: 1.25.4
@@ -5357,7 +5354,7 @@ importers:
version: 5.9.3
undici:
specifier: ^6.22.0
- version: 6.25.0
+ version: 6.22.0
vite:
specifier: ^8.0.8
version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)
@@ -5396,13 +5393,13 @@ importers:
version: link:../xl-ai
'@hono/node-server':
specifier: ^1.19.5
- version: 1.19.14(hono@4.12.14)
+ version: 1.19.14(hono@4.12.10)
ai:
specifier: 6.0.5
version: 6.0.5(zod@4.3.6)
hono:
specifier: ^4.10.3
- version: 4.12.14
+ version: 4.12.10
devDependencies:
eslint:
specifier: ^8.57.1
@@ -5418,7 +5415,7 @@ importers:
version: 5.9.3
undici:
specifier: ^6.22.0
- version: 6.25.0
+ version: 6.22.0
vite:
specifier: ^8.0.8
version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)
@@ -5558,7 +5555,7 @@ importers:
version: link:../react
'@tiptap/core':
specifier: ^3.13.0
- version: 3.22.3(@tiptap/pm@3.22.3)
+ version: 3.22.1(@tiptap/pm@3.22.1)
prosemirror-model:
specifier: ^1.25.4
version: 1.25.4
@@ -5804,10 +5801,10 @@ importers:
version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.5)
'@liveblocks/react-blocknote':
specifier: ^3.17.0
- version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)
+ version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)
'@liveblocks/react-tiptap':
specifier: ^3.17.0
- version: 3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))
+ version: 3.17.0(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))
'@liveblocks/react-ui':
specifier: ^3.17.0
version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -5972,7 +5969,7 @@ importers:
version: 1.51.1
'@tiptap/pm':
specifier: ^3.13.0
- version: 3.22.3
+ version: 3.22.1
'@types/node':
specifier: ^20.19.22
version: 20.19.37
@@ -6096,8 +6093,8 @@ packages:
resolution: {integrity: sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg==}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
- '@asamuzakjp/dom-selector@7.0.10':
- resolution: {integrity: sha512-KyOb19eytNSELkmdqzZZUXWCU25byIlOld5qVFg0RYdS0T3tt7jeDByxk9hIAC73frclD8GKrHttr0SUjKCCdQ==}
+ '@asamuzakjp/dom-selector@7.1.1':
+ resolution: {integrity: sha512-67RZDnYRc8H/8MLDgQCDE//zoqVFwajkepHZgmXrbwybzXOEwOWGPYGmALYl9J2DOLfFPPs6kKCqmbzV895hTQ==}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
'@asamuzakjp/generational-cache@1.0.1':
@@ -7066,15 +7063,9 @@ packages:
'@date-fns/tz@1.4.1':
resolution: {integrity: sha512-P5LUNhtbj6YfI3iJjw5EL9eUAG6OitD0W3fWQcpQjDRc/QIsL0tRNuO1PcDvPccWL1fSTXXdE1ds+l95DV/OFA==}
- '@emnapi/core@1.10.0':
- resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==}
-
'@emnapi/core@1.9.2':
resolution: {integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==}
- '@emnapi/runtime@1.10.0':
- resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==}
-
'@emnapi/runtime@1.9.2':
resolution: {integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==}
@@ -10465,85 +10456,79 @@ packages:
'@types/react-dom':
optional: true
- '@tiptap/core@3.22.3':
- resolution: {integrity: sha512-Dv9MKK5BDWCF0N2l6/Pxv3JNCce2kwuWf2cKMBc2bEetx0Pn6o7zlFmSxMvYK4UtG1Tw9Yg/ZHi6QOFWK0Zm9Q==}
+ '@tiptap/core@3.22.1':
+ resolution: {integrity: sha512-6wPNhkdLIGYiKAGqepDCRtR0TYGJxV40SwOEN2vlPhsXqAgzmyG37UyREj5pGH5xTekugqMCgCnyRg7m5nYoYQ==}
peerDependencies:
- '@tiptap/pm': ^3.22.3
+ '@tiptap/pm': ^3.22.1
- '@tiptap/extension-bold@3.22.3':
- resolution: {integrity: sha512-tysipHla2zCWr8XNIWRaW9O+7i7/SoEqnRqSRUUi2ailcJjlia+RBy3RykhkgyThrQDStu5KGBS/UvrXwA+O1A==}
+ '@tiptap/extension-bold@3.15.3':
+ resolution: {integrity: sha512-I8JYbkkUTNUXbHd/wCse2bR0QhQtJD7+0/lgrKOmGfv5ioLxcki079Nzuqqay3PjgYoJLIJQvm3RAGxT+4X91w==}
peerDependencies:
- '@tiptap/core': ^3.22.3
+ '@tiptap/core': ^3.15.3
- '@tiptap/extension-bubble-menu@3.22.3':
- resolution: {integrity: sha512-Y6zQjh0ypDg32HWgICEvmPSKjGLr39k3aDxxt/H0uQEZSfw4smT0hxUyyyjVjx68C6t6MTnwdfz0hPI5lL68vQ==}
+ '@tiptap/extension-bubble-menu@3.22.1':
+ resolution: {integrity: sha512-JJI63N55hLPjfqHgBnbG1ORZTXJiswnfBkfNd8YKytCC8D++g5qX3UMObxmJKLMBRGyqjEi6krzOyYtOix5ALA==}
peerDependencies:
- '@tiptap/core': ^3.22.3
- '@tiptap/pm': ^3.22.3
+ '@tiptap/core': ^3.22.1
+ '@tiptap/pm': ^3.22.1
- '@tiptap/extension-code@3.22.3':
- resolution: {integrity: sha512-wafWTDQOuMKtXpZEuk1PFQmzopabBciNLryL90MB9S03MNLaQQZYLnmYkDBlzAaLAbgF5QiC+2XZQEBQuTVjFQ==}
+ '@tiptap/extension-code@3.15.3':
+ resolution: {integrity: sha512-x6LFt3Og6MFINYpsMzrJnz7vaT9Yk1t4oXkbJsJRSavdIWBEBcoRudKZ4sSe/AnsYlRJs8FY2uR76mt9e+7xAQ==}
peerDependencies:
- '@tiptap/core': ^3.22.3
+ '@tiptap/core': ^3.15.3
- '@tiptap/extension-floating-menu@3.22.3':
- resolution: {integrity: sha512-0f8b4KZ3XKai8GXWseIYJGdOfQr3evtFbBo3U08zy2aYzMMXWG0zEF7qe5/oiYp2aZ95edjjITnEceviTsZkIg==}
+ '@tiptap/extension-floating-menu@3.22.1':
+ resolution: {integrity: sha512-TaZqmaoKv36FzbKTrBkkv74o0t8dYTftNZ7NotBqfSki0BB2PupTCJHafdu1YI0zmJ3xEzjB/XKcKPz2+10sDA==}
peerDependencies:
'@floating-ui/dom': ^1.0.0
- '@tiptap/core': ^3.22.3
- '@tiptap/pm': ^3.22.3
-
- '@tiptap/extension-horizontal-rule@3.22.3':
- resolution: {integrity: sha512-wI2bFzScs+KgWeBH/BtypcVKeYelCyqV0RG8nxsZMWtPrBhqixzNd0Oi3gEKtjSjKUqMQ/kjJAIRuESr5UzlHA==}
- peerDependencies:
- '@tiptap/core': ^3.22.3
- '@tiptap/pm': ^3.22.3
+ '@tiptap/core': ^3.22.1
+ '@tiptap/pm': ^3.22.1
- '@tiptap/extension-italic@3.22.3':
- resolution: {integrity: sha512-LteA4cb4EGCiUtrK2JHvDF/Zg0/YqV4DUyHhAAho+oGEQDupZlsS6m0ia5wQcclkiTLzsoPrwcSNu6RDGQ16wQ==}
+ '@tiptap/extension-horizontal-rule@3.15.3':
+ resolution: {integrity: sha512-FYkN7L6JsfwwNEntmLklCVKvgL0B0N47OXMacRk6kYKQmVQ4Nvc7q/VJLpD9sk4wh4KT1aiCBfhKEBTu5pv1fg==}
peerDependencies:
- '@tiptap/core': ^3.22.3
+ '@tiptap/core': ^3.15.3
+ '@tiptap/pm': ^3.15.3
- '@tiptap/extension-link@3.22.3':
- resolution: {integrity: sha512-S8/P2o9pv6B3kqLjH2TRWwSAximGbciNc6R8/QcN6HWLYxp0N0JoqN3rZHl9VWIBAGRWc4zkt80dhqrl2xmgfQ==}
+ '@tiptap/extension-italic@3.15.3':
+ resolution: {integrity: sha512-6XeuPjcWy7OBxpkgOV7bD6PATO5jhIxc8SEK4m8xn8nelGTBIbHGqK37evRv+QkC7E0MUryLtzwnmmiaxcKL0Q==}
peerDependencies:
- '@tiptap/core': ^3.22.3
- '@tiptap/pm': ^3.22.3
+ '@tiptap/core': ^3.15.3
- '@tiptap/extension-paragraph@3.22.3':
- resolution: {integrity: sha512-oO7rhfyhEuwm+50s9K3GZPjYyEEEvFAvm1wXopvZnhbkBLydIWImBfrZoC5IQh4/sRDlTIjosV2C+ji5y0tUSg==}
+ '@tiptap/extension-paragraph@3.15.3':
+ resolution: {integrity: sha512-lc0Qu/1AgzcEfS67NJMj5tSHHhH6NtA6uUpvppEKGsvJwgE2wKG1onE4isrVXmcGRdxSMiCtyTDemPNMu6/ozQ==}
peerDependencies:
- '@tiptap/core': ^3.22.3
+ '@tiptap/core': ^3.15.3
- '@tiptap/extension-strike@3.22.3':
- resolution: {integrity: sha512-jY2InoUlKkuk5KHoIDGdML1OCA2n6PRHAtxwHNkAmiYh0Khf0zaVPGFpx4dgQrN7W5Q1WE6oBZnjrvy6qb7w0g==}
+ '@tiptap/extension-strike@3.15.3':
+ resolution: {integrity: sha512-Y1P3eGNY7RxQs2BcR6NfLo9VfEOplXXHAqkOM88oowWWOE7dMNeFFZM9H8HNxoQgXJ7H0aWW9B7ZTWM9hWli2Q==}
peerDependencies:
- '@tiptap/core': ^3.22.3
+ '@tiptap/core': ^3.15.3
- '@tiptap/extension-text@3.22.3':
- resolution: {integrity: sha512-Q9R7JsTdomP5uUjtPjNKxHT1xoh/i9OJZnmgJLe7FcgZEaPOQ3bWxmKZoLZQfDfZjyB8BtH+Hc7nUvhCMOePxw==}
+ '@tiptap/extension-text@3.15.3':
+ resolution: {integrity: sha512-MhkBz8ZvrqOKtKNp+ZWISKkLUlTrDR7tbKZc2OnNcUTttL9dz0HwT+cg91GGz19fuo7ttDcfsPV6eVmflvGToA==}
peerDependencies:
- '@tiptap/core': ^3.22.3
+ '@tiptap/core': ^3.15.3
- '@tiptap/extension-underline@3.22.3':
- resolution: {integrity: sha512-Ch6CBWRa5w90yYSPUW6x9Py9JdrXMqk3pZ9OIlMYD8A7BqyZGfiHerX7XDMYDS09KjyK3U9XH60/zxYOzXdDLA==}
+ '@tiptap/extension-underline@3.15.3':
+ resolution: {integrity: sha512-r/IwcNN0W366jGu4Y0n2MiFq9jGa4aopOwtfWO4d+J0DyeS2m7Go3+KwoUqi0wQTiVU74yfi4DF6eRsMQ9/iHQ==}
peerDependencies:
- '@tiptap/core': ^3.22.3
+ '@tiptap/core': ^3.15.3
- '@tiptap/extensions@3.22.3':
- resolution: {integrity: sha512-s5eiMq0m5N6N+W7dU6rd60KgZyyCD7FvtPNNswISfPr12EQwJBfbjWwTqd0UKNzA4fNrhQEERXnzORkykttPeA==}
+ '@tiptap/extensions@3.15.3':
+ resolution: {integrity: sha512-ycx/BgxR4rc9tf3ZyTdI98Z19yKLFfqM3UN+v42ChuIwkzyr9zyp7kG8dB9xN2lNqrD+5y/HyJobz/VJ7T90gA==}
peerDependencies:
- '@tiptap/core': ^3.22.3
- '@tiptap/pm': ^3.22.3
+ '@tiptap/core': ^3.15.3
+ '@tiptap/pm': ^3.15.3
- '@tiptap/pm@3.22.3':
- resolution: {integrity: sha512-NjfWjZuvrqmpICT+GZWNIjtOdhPyqFKDMtQy7tsQ5rErM9L2ZQdy/+T/BKSO1JdTeBhdg9OP+0yfsqoYp2aT6A==}
+ '@tiptap/pm@3.22.1':
+ resolution: {integrity: sha512-OSqSg2974eLJT5PNKFLM7156lBXCUf/dsKTQXWSzsLTf6HOP4dYP6c0YbAk6lgbNI+BdszsHNClmLVLA8H/L9A==}
- '@tiptap/react@3.22.3':
- resolution: {integrity: sha512-6MNr6z0PxwfJFs+BKhHcvPNvY+UV1PXgqzTiTM4Z9guml84iVZxv7ZOCSj1dFYTr3Bf1MiOs4hT1yvBFlTfIaQ==}
+ '@tiptap/react@3.22.1':
+ resolution: {integrity: sha512-1pIRfgK9wape4nDXVJRfgUcYVZdPPkuECbGtz8bo0rgtdsVN7B8PBVCDyuitZ7acdLbMuuX5+TxeUOvME8np7Q==}
peerDependencies:
- '@tiptap/core': ^3.22.3
- '@tiptap/pm': ^3.22.3
+ '@tiptap/core': ^3.22.1
+ '@tiptap/pm': ^3.22.1
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
'@types/react-dom': ^17.0.0 || ^18.0.0 || ^19.0.0
react: ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -10714,9 +10699,6 @@ packages:
'@types/node@20.19.37':
resolution: {integrity: sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw==}
- '@types/node@20.19.39':
- resolution: {integrity: sha512-orrrD74MBUyK8jOAD/r0+lfa1I2MO6I+vAkmAWzMYbCcgrN4lCrmK52gRFQq/JRxfYPfonkr4b0jcY7Olqdqbw==}
-
'@types/node@22.13.13':
resolution: {integrity: sha512-ClsL5nMwKaBRwPcCvH8E7+nU4GxHVx1axNvMZTFHMEfNI7oahimt26P5zjVCRrjiIWj6YFXfE1v3dEp94wLcGQ==}
@@ -11514,6 +11496,9 @@ packages:
axios@1.15.0:
resolution: {integrity: sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==}
+ axios@1.15.1:
+ resolution: {integrity: sha512-WOG+Jj8ZOvR0a3rAn+Tuf1UQJRxw5venr6DgdbJzngJE3qG7X0kL83CZGpdHMxEm+ZK3seAbvFsw4FfOfP9vxg==}
+
axobject-query@4.1.0:
resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
engines: {node: '>= 0.4'}
@@ -12348,6 +12333,10 @@ packages:
resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==}
engines: {node: '>=0.12'}
+ entities@8.0.0:
+ resolution: {integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==}
+ engines: {node: '>=20.19.0'}
+
env-paths@3.0.0:
resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -12788,8 +12777,8 @@ packages:
flatted@3.4.2:
resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==}
- follow-redirects@1.16.0:
- resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==}
+ follow-redirects@1.15.11:
+ resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==}
engines: {node: '>=4.0'}
peerDependencies:
debug: '*'
@@ -13218,8 +13207,8 @@ packages:
hoist-non-react-statics@3.3.2:
resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
- hono@4.12.14:
- resolution: {integrity: sha512-am5zfg3yu6sqn5yjKBNqhnTX7Cv+m00ox+7jbaKkrLMRJ4rAdldd1xPd/JzbBWspqaQv6RSTrgFN95EsfhC+7w==}
+ hono@4.12.10:
+ resolution: {integrity: sha512-mx/p18PLy5og9ufies2GOSUqep98Td9q4i/EF6X7yJgAiIopxqdfIO3jbqsi3jRgTgw88jMDEzVKi+V2EF+27w==}
engines: {node: '>=16.9.0'}
hsl-to-hex@1.0.0:
@@ -13837,9 +13826,6 @@ packages:
linkify-it@5.0.0:
resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==}
- linkifyjs@4.3.2:
- resolution: {integrity: sha512-NT1CJtq3hHIreOianA8aSXn6Cw0JzYOuDQbOrSPe7gqFnCpKP++MQe3ODgO3oh2GJFORkAAdqredOa60z63GbA==}
-
loader-runner@4.3.1:
resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==}
engines: {node: '>=6.11.5'}
@@ -14573,8 +14559,8 @@ packages:
parse5@7.3.0:
resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
- parse5@8.0.0:
- resolution: {integrity: sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==}
+ parse5@8.0.1:
+ resolution: {integrity: sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==}
parseley@0.12.1:
resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==}
@@ -14873,8 +14859,8 @@ packages:
property-information@7.1.0:
resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==}
- prosemirror-changeset@2.4.1:
- resolution: {integrity: sha512-96WBLhOaYhJ+kPhLg3uW359Tz6I/MfcrQfL4EGv4SrcqKEMC1gmoGrXHecPE8eOwTVCJ4IwgfzM8fFad25wNfw==}
+ prosemirror-changeset@2.3.1:
+ resolution: {integrity: sha512-j0kORIBm8ayJNl3zQvD1TTPHJX3g042et6y/KQhZhnPrruO8exkTgG8X+NRpj7kIyMMEx74Xb3DyMIBtO0IKkQ==}
prosemirror-collab@1.3.1:
resolution: {integrity: sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==}
@@ -15023,6 +15009,11 @@ packages:
peerDependencies:
react: '>=16.8.0'
+ react-dom@19.2.4:
+ resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==}
+ peerDependencies:
+ react: ^19.2.4
+
react-dom@19.2.5:
resolution: {integrity: sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==}
peerDependencies:
@@ -15175,6 +15166,10 @@ packages:
resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
engines: {node: '>=0.10.0'}
+ react@19.2.4:
+ resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==}
+ engines: {node: '>=0.10.0'}
+
react@19.2.5:
resolution: {integrity: sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==}
engines: {node: '>=0.10.0'}
@@ -15265,8 +15260,8 @@ packages:
regjsgen@0.8.0:
resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==}
- regjsparser@0.13.1:
- resolution: {integrity: sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==}
+ regjsparser@0.13.0:
+ resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==}
hasBin: true
rehype-format@5.0.1:
@@ -15331,8 +15326,8 @@ packages:
resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==}
engines: {node: '>=10'}
- resolve@1.22.12:
- resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==}
+ resolve@1.22.11:
+ resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==}
engines: {node: '>= 0.4'}
hasBin: true
@@ -15910,10 +15905,6 @@ packages:
resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
engines: {node: '>=12.0.0'}
- tinyglobby@0.2.16:
- resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==}
- engines: {node: '>=12.0.0'}
-
tinyrainbow@3.1.0:
resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==}
engines: {node: '>=14.0.0'}
@@ -16107,8 +16098,8 @@ packages:
undici-types@7.19.2:
resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==}
- undici@6.25.0:
- resolution: {integrity: sha512-ZgpWDC5gmNiuY9CnLVXEH8rl50xhRCuLNA97fAUnKi8RRuV4E6KG31pDTsLVUKnohJE0I3XDrTeEydAXRw47xg==}
+ undici@6.22.0:
+ resolution: {integrity: sha512-hU/10obOIu62MGYjdskASR3CUAiYaFTtC9Pa6vHyf//mAipSvSQg6od2CnJswq7fvzNS3zJhxoRkgNVaHurWKw==}
engines: {node: '>=18.17'}
undici@7.25.0:
@@ -16785,7 +16776,7 @@ snapshots:
'@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0)
'@csstools/css-tokenizer': 4.0.0
- '@asamuzakjp/dom-selector@7.0.10':
+ '@asamuzakjp/dom-selector@7.1.1':
dependencies:
'@asamuzakjp/generational-cache': 1.0.1
'@asamuzakjp/nwsapi': 2.3.9
@@ -17342,7 +17333,7 @@ snapshots:
'@babel/helper-plugin-utils': 7.28.6
debug: 4.4.3
lodash.debounce: 4.0.8
- resolve: 1.22.12
+ resolve: 1.22.11
transitivePeerDependencies:
- supports-color
@@ -18225,25 +18216,14 @@ snapshots:
'@date-fns/tz@1.4.1': {}
- '@emnapi/core@1.10.0':
- dependencies:
- '@emnapi/wasi-threads': 1.2.1
- tslib: 2.8.1
-
'@emnapi/core@1.9.2':
dependencies:
'@emnapi/wasi-threads': 1.2.1
tslib: 2.8.1
- optional: true
-
- '@emnapi/runtime@1.10.0':
- dependencies:
- tslib: 2.8.1
'@emnapi/runtime@1.9.2':
dependencies:
tslib: 2.8.1
- optional: true
'@emnapi/wasi-threads@1.2.1':
dependencies:
@@ -18283,6 +18263,23 @@ snapshots:
'@emotion/memoize@0.9.0': {}
+ '@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4)':
+ dependencies:
+ '@babel/runtime': 7.29.2
+ '@emotion/babel-plugin': 11.13.5
+ '@emotion/cache': 11.14.0
+ '@emotion/serialize': 1.3.3
+ '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.4)
+ '@emotion/utils': 1.4.2
+ '@emotion/weak-memoize': 0.4.0
+ hoist-non-react-statics: 3.3.2
+ react: 19.2.4
+ optionalDependencies:
+ '@types/react': 19.2.14
+ transitivePeerDependencies:
+ - supports-color
+ optional: true
+
'@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@babel/runtime': 7.29.2
@@ -18309,6 +18306,22 @@ snapshots:
'@emotion/sheet@1.4.0': {}
+ '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)':
+ dependencies:
+ '@babel/runtime': 7.29.2
+ '@emotion/babel-plugin': 11.13.5
+ '@emotion/is-prop-valid': 1.4.0
+ '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.4)
+ '@emotion/serialize': 1.3.3
+ '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.4)
+ '@emotion/utils': 1.4.2
+ react: 19.2.4
+ optionalDependencies:
+ '@types/react': 19.2.14
+ transitivePeerDependencies:
+ - supports-color
+ optional: true
+
'@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@babel/runtime': 7.29.2
@@ -18326,6 +18339,11 @@ snapshots:
'@emotion/unitless@0.10.0': {}
+ '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.2.4)':
+ dependencies:
+ react: 19.2.4
+ optional: true
+
'@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.2.5)':
dependencies:
react: 19.2.5
@@ -18649,12 +18667,26 @@ snapshots:
'@floating-ui/core': 1.7.5
'@floating-ui/utils': 0.2.11
+ '@floating-ui/react-dom@2.1.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@floating-ui/dom': 1.7.6
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+
'@floating-ui/react-dom@2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@floating-ui/dom': 1.7.6
react: 19.2.5
react-dom: 19.2.5(react@19.2.5)
+ '@floating-ui/react@0.27.19(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@floating-ui/react-dom': 2.1.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@floating-ui/utils': 0.2.11
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ tabbable: 6.4.0
+
'@floating-ui/react@0.27.19(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@floating-ui/react-dom': 2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -18732,9 +18764,9 @@ snapshots:
dependencies:
'@hapi/hoek': 11.0.7
- '@hono/node-server@1.19.14(hono@4.12.14)':
+ '@hono/node-server@1.19.14(hono@4.12.10)':
dependencies:
- hono: 4.12.14
+ hono: 4.12.10
'@humanfs/core@0.19.1': {}
@@ -18842,7 +18874,7 @@ snapshots:
'@img/sharp-wasm32@0.34.5':
dependencies:
- '@emnapi/runtime': 1.10.0
+ '@emnapi/runtime': 1.9.2
optional: true
'@img/sharp-win32-arm64@0.34.5':
@@ -19008,17 +19040,46 @@ snapshots:
dependencies:
'@types/json-schema': 7.0.15
- '@liveblocks/react-blocknote@3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)':
+ '@liveblocks/react-blocknote@3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)':
dependencies:
'@blocknote/core': link:packages/core
'@blocknote/react': link:packages/react
'@liveblocks/client': 3.17.0(@types/json-schema@7.0.15)
'@liveblocks/core': 3.17.0(@types/json-schema@7.0.15)
- '@liveblocks/react': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.5)
- '@liveblocks/react-tiptap': 3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))
- '@liveblocks/react-ui': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ '@liveblocks/react': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.4)
+ '@liveblocks/react-tiptap': 3.17.0(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30))
+ '@liveblocks/react-ui': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@liveblocks/yjs': 3.17.0(@types/json-schema@7.0.15)(yjs@13.6.30)
- '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
+ '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ vitest-tsconfig-paths: 3.4.1
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+ transitivePeerDependencies:
+ - '@tiptap/pm'
+ - '@tiptap/react'
+ - '@tiptap/suggestion'
+ - '@types/json-schema'
+ - prosemirror-model
+ - prosemirror-state
+ - prosemirror-view
+ - supports-color
+ - y-protocols
+ - yjs
+
+ '@liveblocks/react-blocknote@3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)':
+ dependencies:
+ '@blocknote/core': link:packages/core
+ '@blocknote/react': link:packages/react
+ '@liveblocks/client': 3.17.0(@types/json-schema@7.0.15)
+ '@liveblocks/core': 3.17.0(@types/json-schema@7.0.15)
+ '@liveblocks/react': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.5)
+ '@liveblocks/react-tiptap': 3.17.0(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))
+ '@liveblocks/react-ui': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ '@liveblocks/yjs': 3.17.0(@types/json-schema@7.0.15)(yjs@13.6.30)
+ '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
react: 19.2.5
react-dom: 19.2.5(react@19.2.5)
vitest-tsconfig-paths: 3.4.1
@@ -19037,7 +19098,35 @@ snapshots:
- y-protocols
- yjs
- '@liveblocks/react-tiptap@3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))':
+ '@liveblocks/react-tiptap@3.17.0(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30))':
+ dependencies:
+ '@floating-ui/react-dom': 2.1.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@liveblocks/client': 3.17.0(@types/json-schema@7.0.15)
+ '@liveblocks/core': 3.17.0(@types/json-schema@7.0.15)
+ '@liveblocks/react': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.4)
+ '@liveblocks/react-ui': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@liveblocks/yjs': 3.17.0(@types/json-schema@7.0.15)(yjs@13.6.30)
+ '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
+ '@tiptap/pm': 3.22.1
+ '@tiptap/react': 3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@tiptap/suggestion': 2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)
+ cmdk: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ radix-ui: 1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ y-prosemirror: 1.3.7(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)
+ yjs: 13.6.30
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+ transitivePeerDependencies:
+ - '@types/json-schema'
+ - prosemirror-model
+ - prosemirror-state
+ - prosemirror-view
+ - y-protocols
+
+ '@liveblocks/react-tiptap@3.17.0(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))':
dependencies:
'@floating-ui/react-dom': 2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@liveblocks/client': 3.17.0(@types/json-schema@7.0.15)
@@ -19045,10 +19134,10 @@ snapshots:
'@liveblocks/react': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.5)
'@liveblocks/react-ui': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@liveblocks/yjs': 3.17.0(@types/json-schema@7.0.15)(yjs@13.6.30)
- '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
- '@tiptap/pm': 3.22.3
- '@tiptap/react': 3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
- '@tiptap/suggestion': 2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)
+ '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
+ '@tiptap/pm': 3.22.1
+ '@tiptap/react': 3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ '@tiptap/suggestion': 2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)
cmdk: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
radix-ui: 1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
react: 19.2.5
@@ -19065,6 +19154,27 @@ snapshots:
- prosemirror-view
- y-protocols
+ '@liveblocks/react-ui@3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@floating-ui/react-dom': 2.1.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@liveblocks/client': 3.17.0(@types/json-schema@7.0.15)
+ '@liveblocks/core': 3.17.0(@types/json-schema@7.0.15)
+ '@liveblocks/react': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.4)
+ frimousse: 0.2.0(react@19.2.4)
+ marked: 15.0.12
+ radix-ui: 1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ slate: 0.110.2
+ slate-history: 0.110.3(slate@0.110.2)
+ slate-hyperscript: 0.100.0(slate@0.110.2)
+ slate-react: 0.110.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(slate@0.110.2)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+ transitivePeerDependencies:
+ - '@types/json-schema'
+
'@liveblocks/react-ui@3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@floating-ui/react-dom': 2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -19086,6 +19196,17 @@ snapshots:
transitivePeerDependencies:
- '@types/json-schema'
+ '@liveblocks/react@3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.4)':
+ dependencies:
+ '@liveblocks/client': 3.17.0(@types/json-schema@7.0.15)
+ '@liveblocks/core': 3.17.0(@types/json-schema@7.0.15)
+ react: 19.2.4
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+ transitivePeerDependencies:
+ - '@types/json-schema'
+
'@liveblocks/react@3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@liveblocks/client': 3.17.0(@types/json-schema@7.0.15)
@@ -19108,6 +19229,20 @@ snapshots:
transitivePeerDependencies:
- '@types/json-schema'
+ '@mantine/core@8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@floating-ui/react': 0.27.19(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@mantine/hooks': 8.3.18(react@19.2.4)
+ clsx: 2.1.1
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ react-number-format: 5.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4)
+ react-textarea-autosize: 8.5.9(@types/react@19.2.14)(react@19.2.4)
+ type-fest: 4.41.0
+ transitivePeerDependencies:
+ - '@types/react'
+
'@mantine/core@8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@floating-ui/react': 0.27.19(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -19122,10 +19257,18 @@ snapshots:
transitivePeerDependencies:
- '@types/react'
+ '@mantine/hooks@8.3.18(react@19.2.4)':
+ dependencies:
+ react: 19.2.4
+
'@mantine/hooks@8.3.18(react@19.2.5)':
dependencies:
react: 19.2.5
+ '@mantine/utils@6.0.22(react@19.2.4)':
+ dependencies:
+ react: 19.2.4
+
'@mantine/utils@6.0.22(react@19.2.5)':
dependencies:
react: 19.2.5
@@ -19201,6 +19344,14 @@ snapshots:
'@mui/core-downloads-tracker@5.18.0': {}
+ '@mui/icons-material@5.18.0(@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)':
+ dependencies:
+ '@babel/runtime': 7.29.2
+ '@mui/material': 5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ react: 19.2.4
+ optionalDependencies:
+ '@types/react': 19.2.14
+
'@mui/icons-material@5.18.0(@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@babel/runtime': 7.29.2
@@ -19209,6 +19360,27 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
+ '@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@babel/runtime': 7.29.2
+ '@mui/core-downloads-tracker': 5.18.0
+ '@mui/system': 5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
+ '@mui/types': 7.2.24(@types/react@19.2.14)
+ '@mui/utils': 5.17.1(@types/react@19.2.14)(react@19.2.4)
+ '@popperjs/core': 2.11.8
+ '@types/react-transition-group': 4.4.12(@types/react@19.2.14)
+ clsx: 2.1.1
+ csstype: 3.2.3
+ prop-types: 15.8.1
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ react-is: 19.2.4
+ react-transition-group: 4.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ optionalDependencies:
+ '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.4)
+ '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
+ '@types/react': 19.2.14
+
'@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@babel/runtime': 7.29.2
@@ -19230,6 +19402,15 @@ snapshots:
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)
'@types/react': 19.2.14
+ '@mui/private-theming@5.17.1(@types/react@19.2.14)(react@19.2.4)':
+ dependencies:
+ '@babel/runtime': 7.29.2
+ '@mui/utils': 5.17.1(@types/react@19.2.14)(react@19.2.4)
+ prop-types: 15.8.1
+ react: 19.2.4
+ optionalDependencies:
+ '@types/react': 19.2.14
+
'@mui/private-theming@5.17.1(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@babel/runtime': 7.29.2
@@ -19239,6 +19420,18 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
+ '@mui/styled-engine@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@babel/runtime': 7.29.2
+ '@emotion/cache': 11.14.0
+ '@emotion/serialize': 1.3.3
+ csstype: 3.2.3
+ prop-types: 15.8.1
+ react: 19.2.4
+ optionalDependencies:
+ '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.4)
+ '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
+
'@mui/styled-engine@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(react@19.2.5)':
dependencies:
'@babel/runtime': 7.29.2
@@ -19251,6 +19444,22 @@ snapshots:
'@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.5)
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)
+ '@mui/system@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)':
+ dependencies:
+ '@babel/runtime': 7.29.2
+ '@mui/private-theming': 5.17.1(@types/react@19.2.14)(react@19.2.4)
+ '@mui/styled-engine': 5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)
+ '@mui/types': 7.2.24(@types/react@19.2.14)
+ '@mui/utils': 5.17.1(@types/react@19.2.14)(react@19.2.4)
+ clsx: 2.1.1
+ csstype: 3.2.3
+ prop-types: 15.8.1
+ react: 19.2.4
+ optionalDependencies:
+ '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.4)
+ '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
+ '@types/react': 19.2.14
+
'@mui/system@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@babel/runtime': 7.29.2
@@ -19271,6 +19480,18 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
+ '@mui/utils@5.17.1(@types/react@19.2.14)(react@19.2.4)':
+ dependencies:
+ '@babel/runtime': 7.29.2
+ '@mui/types': 7.2.24(@types/react@19.2.14)
+ '@types/prop-types': 15.7.15
+ clsx: 2.1.1
+ prop-types: 15.8.1
+ react: 19.2.4
+ react-is: 19.2.4
+ optionalDependencies:
+ '@types/react': 19.2.14
+
'@mui/utils@5.17.1(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@babel/runtime': 7.29.2
@@ -19285,15 +19506,15 @@ snapshots:
'@napi-rs/wasm-runtime@0.2.12':
dependencies:
- '@emnapi/core': 1.10.0
- '@emnapi/runtime': 1.10.0
+ '@emnapi/core': 1.9.2
+ '@emnapi/runtime': 1.9.2
'@tybys/wasm-util': 0.10.1
optional: true
'@napi-rs/wasm-runtime@0.2.4':
dependencies:
- '@emnapi/core': 1.10.0
- '@emnapi/runtime': 1.10.0
+ '@emnapi/core': 1.9.2
+ '@emnapi/runtime': 1.9.2
'@tybys/wasm-util': 0.9.0
'@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)':
@@ -19394,7 +19615,7 @@ snapshots:
picomatch: 4.0.4
semver: 7.7.4
source-map-support: 0.5.19
- tinyglobby: 0.2.16
+ tinyglobby: 0.2.12
tslib: 2.8.1
transitivePeerDependencies:
- '@babel/traverse'
@@ -19862,6 +20083,15 @@ snapshots:
'@radix-ui/primitive@1.1.3': {}
+ '@radix-ui/react-accessible-icon@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-accessible-icon@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -19871,6 +20101,23 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -19888,6 +20135,20 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -19902,6 +20163,15 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -19911,6 +20181,15 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-aspect-ratio@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-aspect-ratio@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -19920,6 +20199,19 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-avatar@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-avatar@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5)
@@ -19946,6 +20238,22 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-checkbox@1.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-checkbox@1.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -19962,6 +20270,22 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -19978,6 +20302,18 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5)
@@ -19990,12 +20326,32 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.14)(react@19.2.4)':
+ dependencies:
+ react: 19.2.4
+ optionalDependencies:
+ '@types/react': 19.2.14
+
'@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.14)(react@19.2.5)':
dependencies:
react: 19.2.5
optionalDependencies:
'@types/react': 19.2.14
+ '@radix-ui/react-context-menu@2.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-context-menu@2.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20010,6 +20366,12 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-context@1.1.2(@types/react@19.2.14)(react@19.2.4)':
+ dependencies:
+ react: 19.2.4
+ optionalDependencies:
+ '@types/react': 19.2.14
+
'@radix-ui/react-context@1.1.2(@types/react@19.2.14)(react@19.2.5)':
dependencies:
react: 19.2.5
@@ -20022,6 +20384,28 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
+ '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
+ aria-hidden: 1.2.6
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20044,12 +20428,31 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-direction@1.1.1(@types/react@19.2.14)(react@19.2.4)':
+ dependencies:
+ react: 19.2.4
+ optionalDependencies:
+ '@types/react': 19.2.14
+
'@radix-ui/react-direction@1.1.1(@types/react@19.2.14)(react@19.2.5)':
dependencies:
react: 19.2.5
optionalDependencies:
'@types/react': 19.2.14
+ '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20063,6 +20466,21 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20078,12 +20496,29 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.14)(react@19.2.4)':
+ dependencies:
+ react: 19.2.4
+ optionalDependencies:
+ '@types/react': 19.2.14
+
'@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.14)(react@19.2.5)':
dependencies:
react: 19.2.5
optionalDependencies:
'@types/react': 19.2.14
+ '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5)
@@ -20095,6 +20530,20 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-form@0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-label': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-form@0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20109,6 +20558,23 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-hover-card@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-hover-card@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20126,6 +20592,13 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-id@1.1.1(@types/react@19.2.14)(react@19.2.4)':
+ dependencies:
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ optionalDependencies:
+ '@types/react': 19.2.14
+
'@radix-ui/react-id@1.1.1(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5)
@@ -20133,6 +20606,15 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
+ '@radix-ui/react-label@2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-label@2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -20151,6 +20633,32 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ aria-hidden: 1.2.6
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20177,6 +20685,24 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-menubar@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-menubar@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20195,6 +20721,28 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-navigation-menu@1.2.14(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-navigation-menu@1.2.14(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20217,6 +20765,26 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-one-time-password-field@0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/number': 1.1.1
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-one-time-password-field@0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/number': 1.1.1
@@ -20237,6 +20805,22 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-password-toggle-field@0.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-password-toggle-field@0.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20253,6 +20837,29 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
+ aria-hidden: 1.2.6
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20276,6 +20883,24 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@floating-ui/react-dom': 2.1.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/rect': 1.1.1
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@floating-ui/react-dom': 2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -20294,6 +20919,16 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -20304,6 +20939,16 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5)
@@ -20314,6 +20959,15 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5)
@@ -20323,6 +20977,15 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-primitive@2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/react-slot': 1.2.4(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-primitive@2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-slot': 1.2.4(@types/react@19.2.14)(react@19.2.5)
@@ -20332,6 +20995,16 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-progress@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-progress@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5)
@@ -20342,6 +21015,24 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-radio-group@1.3.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-radio-group@1.3.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20360,6 +21051,23 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20377,6 +21085,23 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-scroll-area@1.2.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/number': 1.1.1
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-scroll-area@1.2.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/number': 1.1.1
@@ -20394,6 +21119,35 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-select@2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/number': 1.1.1
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ aria-hidden: 1.2.6
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-select@2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/number': 1.1.1
@@ -20423,6 +21177,15 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-separator@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-separator@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -20441,6 +21204,25 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-slider@1.3.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/number': 1.1.1
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-slider@1.3.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/number': 1.1.1
@@ -20460,6 +21242,13 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-slot@1.2.3(@types/react@19.2.14)(react@19.2.4)':
+ dependencies:
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ optionalDependencies:
+ '@types/react': 19.2.14
+
'@radix-ui/react-slot@1.2.3(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5)
@@ -20467,6 +21256,13 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
+ '@radix-ui/react-slot@1.2.4(@types/react@19.2.14)(react@19.2.4)':
+ dependencies:
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ optionalDependencies:
+ '@types/react': 19.2.14
+
'@radix-ui/react-slot@1.2.4(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5)
@@ -20474,6 +21270,21 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
+ '@radix-ui/react-switch@1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-switch@1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20489,6 +21300,22 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20505,6 +21332,26 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-toast@1.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-toast@1.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20525,6 +21372,21 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-toggle-group@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-toggle-group@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20540,6 +21402,17 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-toggle@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-toggle@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20551,6 +21424,21 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-toolbar@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-separator': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-toolbar@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20566,6 +21454,26 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20586,12 +21494,26 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.14)(react@19.2.4)':
+ dependencies:
+ react: 19.2.4
+ optionalDependencies:
+ '@types/react': 19.2.14
+
'@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.14)(react@19.2.5)':
dependencies:
react: 19.2.5
optionalDependencies:
'@types/react': 19.2.14
+ '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.14)(react@19.2.4)':
+ dependencies:
+ '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ optionalDependencies:
+ '@types/react': 19.2.14
+
'@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.5)
@@ -20600,6 +21522,13 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
+ '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.14)(react@19.2.4)':
+ dependencies:
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ optionalDependencies:
+ '@types/react': 19.2.14
+
'@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5)
@@ -20607,6 +21536,13 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
+ '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.14)(react@19.2.4)':
+ dependencies:
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ optionalDependencies:
+ '@types/react': 19.2.14
+
'@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5)
@@ -20614,6 +21550,13 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
+ '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.2.14)(react@19.2.4)':
+ dependencies:
+ react: 19.2.4
+ use-sync-external-store: 1.6.0(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+
'@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.2.14)(react@19.2.5)':
dependencies:
react: 19.2.5
@@ -20621,18 +21564,37 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
+ '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.14)(react@19.2.4)':
+ dependencies:
+ react: 19.2.4
+ optionalDependencies:
+ '@types/react': 19.2.14
+
'@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.14)(react@19.2.5)':
dependencies:
react: 19.2.5
optionalDependencies:
'@types/react': 19.2.14
+ '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.14)(react@19.2.4)':
+ dependencies:
+ react: 19.2.4
+ optionalDependencies:
+ '@types/react': 19.2.14
+
'@radix-ui/react-use-previous@1.1.1(@types/react@19.2.14)(react@19.2.5)':
dependencies:
react: 19.2.5
optionalDependencies:
'@types/react': 19.2.14
+ '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.14)(react@19.2.4)':
+ dependencies:
+ '@radix-ui/rect': 1.1.1
+ react: 19.2.4
+ optionalDependencies:
+ '@types/react': 19.2.14
+
'@radix-ui/react-use-rect@1.1.1(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@radix-ui/rect': 1.1.1
@@ -20640,6 +21602,13 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
+ '@radix-ui/react-use-size@1.1.1(@types/react@19.2.14)(react@19.2.4)':
+ dependencies:
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ react: 19.2.4
+ optionalDependencies:
+ '@types/react': 19.2.14
+
'@radix-ui/react-use-size@1.1.1(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5)
@@ -20647,6 +21616,15 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
+ '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -20746,6 +21724,13 @@ snapshots:
dependencies:
react: 19.2.5
+ '@react-email/render@2.0.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ html-to-text: 9.0.5
+ prettier: 3.6.2
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+
'@react-email/render@2.0.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
html-to-text: 9.0.5
@@ -20825,6 +21810,12 @@ snapshots:
'@react-pdf/primitives@4.1.1': {}
+ '@react-pdf/reconciler@2.0.0(react@19.2.4)':
+ dependencies:
+ object-assign: 4.1.1
+ react: 19.2.4
+ scheduler: 0.25.0-rc-603e6108-20241029
+
'@react-pdf/reconciler@2.0.0(react@19.2.5)':
dependencies:
object-assign: 4.1.1
@@ -20844,6 +21835,23 @@ snapshots:
parse-svg-path: 0.1.2
svg-arc-to-cubic-bezier: 3.2.0
+ '@react-pdf/renderer@4.3.2(react@19.2.4)':
+ dependencies:
+ '@babel/runtime': 7.29.2
+ '@react-pdf/fns': 3.1.2
+ '@react-pdf/font': 4.0.4
+ '@react-pdf/layout': 4.4.2
+ '@react-pdf/pdfkit': 4.1.0
+ '@react-pdf/primitives': 4.1.1
+ '@react-pdf/reconciler': 2.0.0(react@19.2.4)
+ '@react-pdf/render': 4.3.2
+ '@react-pdf/types': 2.9.2
+ events: 3.3.0
+ object-assign: 4.1.1
+ prop-types: 15.8.1
+ queue: 6.0.2
+ react: 19.2.4
+
'@react-pdf/renderer@4.3.2(react@19.2.5)':
dependencies:
'@babel/runtime': 7.29.2
@@ -21835,71 +22843,65 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@tiptap/core@3.22.3(@tiptap/pm@3.22.3)':
+ '@tiptap/core@3.22.1(@tiptap/pm@3.22.1)':
dependencies:
- '@tiptap/pm': 3.22.3
+ '@tiptap/pm': 3.22.1
- '@tiptap/extension-bold@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))':
+ '@tiptap/extension-bold@3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))':
dependencies:
- '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
+ '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
- '@tiptap/extension-bubble-menu@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)':
+ '@tiptap/extension-bubble-menu@3.22.1(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)':
dependencies:
'@floating-ui/dom': 1.7.6
- '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
- '@tiptap/pm': 3.22.3
+ '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
+ '@tiptap/pm': 3.22.1
optional: true
- '@tiptap/extension-code@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))':
+ '@tiptap/extension-code@3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))':
dependencies:
- '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
+ '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
- '@tiptap/extension-floating-menu@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)':
+ '@tiptap/extension-floating-menu@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)':
dependencies:
'@floating-ui/dom': 1.7.6
- '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
- '@tiptap/pm': 3.22.3
+ '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
+ '@tiptap/pm': 3.22.1
optional: true
- '@tiptap/extension-horizontal-rule@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)':
+ '@tiptap/extension-horizontal-rule@3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)':
dependencies:
- '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
- '@tiptap/pm': 3.22.3
+ '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
+ '@tiptap/pm': 3.22.1
- '@tiptap/extension-italic@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))':
+ '@tiptap/extension-italic@3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))':
dependencies:
- '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
+ '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
- '@tiptap/extension-link@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)':
+ '@tiptap/extension-paragraph@3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))':
dependencies:
- '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
- '@tiptap/pm': 3.22.3
- linkifyjs: 4.3.2
+ '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
- '@tiptap/extension-paragraph@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))':
+ '@tiptap/extension-strike@3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))':
dependencies:
- '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
+ '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
- '@tiptap/extension-strike@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))':
+ '@tiptap/extension-text@3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))':
dependencies:
- '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
+ '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
- '@tiptap/extension-text@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))':
+ '@tiptap/extension-underline@3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))':
dependencies:
- '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
+ '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
- '@tiptap/extension-underline@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))':
+ '@tiptap/extensions@3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)':
dependencies:
- '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
+ '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
+ '@tiptap/pm': 3.22.1
- '@tiptap/extensions@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)':
+ '@tiptap/pm@3.22.1':
dependencies:
- '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
- '@tiptap/pm': 3.22.3
-
- '@tiptap/pm@3.22.3':
- dependencies:
- prosemirror-changeset: 2.4.1
+ prosemirror-changeset: 2.3.1
prosemirror-collab: 1.3.1
prosemirror-commands: 1.7.1
prosemirror-dropcursor: 1.8.2
@@ -21918,10 +22920,27 @@ snapshots:
prosemirror-transform: 1.12.0
prosemirror-view: 1.41.8
- '@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
+ '@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
+ '@tiptap/pm': 3.22.1
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@types/use-sync-external-store': 0.0.6
+ fast-equals: 5.4.0
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ use-sync-external-store: 1.6.0(react@19.2.4)
+ optionalDependencies:
+ '@tiptap/extension-bubble-menu': 3.22.1(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)
+ '@tiptap/extension-floating-menu': 3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)
+ transitivePeerDependencies:
+ - '@floating-ui/dom'
+
+ '@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
- '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
- '@tiptap/pm': 3.22.3
+ '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
+ '@tiptap/pm': 3.22.1
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
'@types/use-sync-external-store': 0.0.6
@@ -21930,15 +22949,15 @@ snapshots:
react-dom: 19.2.5(react@19.2.5)
use-sync-external-store: 1.6.0(react@19.2.5)
optionalDependencies:
- '@tiptap/extension-bubble-menu': 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)
- '@tiptap/extension-floating-menu': 3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)
+ '@tiptap/extension-bubble-menu': 3.22.1(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)
+ '@tiptap/extension-floating-menu': 3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)
transitivePeerDependencies:
- '@floating-ui/dom'
- '@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)':
+ '@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)':
dependencies:
- '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
- '@tiptap/pm': 3.22.3
+ '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
+ '@tiptap/pm': 3.22.1
'@transloadit/prettier-bytes@0.3.5': {}
@@ -21946,7 +22965,7 @@ snapshots:
dependencies:
minimatch: 10.2.5
path-browserify: 1.0.1
- tinyglobby: 0.2.16
+ tinyglobby: 0.2.15
'@tybys/wasm-util@0.10.1':
dependencies:
@@ -21991,7 +23010,7 @@ snapshots:
'@types/connect@3.4.38':
dependencies:
- '@types/node': 25.5.0
+ '@types/node': 25.6.0
'@types/cors@2.8.19':
dependencies:
@@ -22124,16 +23143,12 @@ snapshots:
'@types/mysql@2.15.27':
dependencies:
- '@types/node': 25.5.0
+ '@types/node': 25.6.0
'@types/node@20.19.37':
dependencies:
undici-types: 6.21.0
- '@types/node@20.19.39':
- dependencies:
- undici-types: 6.21.0
-
'@types/node@22.13.13':
dependencies:
undici-types: 6.20.0
@@ -22162,7 +23177,7 @@ snapshots:
'@types/pg@8.15.6':
dependencies:
- '@types/node': 25.5.0
+ '@types/node': 25.6.0
pg-protocol: 1.13.0
pg-types: 2.2.0
@@ -22174,7 +23189,7 @@ snapshots:
'@types/pixelmatch@5.2.6':
dependencies:
- '@types/node': 25.6.0
+ '@types/node': 25.5.0
'@types/prop-types@15.7.15': {}
@@ -22200,7 +23215,7 @@ snapshots:
'@types/tedious@4.0.14':
dependencies:
- '@types/node': 25.5.0
+ '@types/node': 25.6.0
'@types/tough-cookie@4.0.5': {}
@@ -22363,7 +23378,7 @@ snapshots:
debug: 4.4.3
minimatch: 10.2.5
semver: 7.7.4
- tinyglobby: 0.2.16
+ tinyglobby: 0.2.15
ts-api-utils: 2.5.0(typescript@5.9.3)
typescript: 5.9.3
transitivePeerDependencies:
@@ -22547,6 +23562,19 @@ snapshots:
p-queue: 7.4.1
preact: 10.29.0
+ '@uppy/react@3.4.0(@uppy/core@3.13.1)(@uppy/dashboard@3.9.1(@uppy/core@3.13.1))(@uppy/drag-drop@3.1.1(@uppy/core@3.13.1))(@uppy/file-input@3.1.2(@uppy/core@3.13.1))(@uppy/progress-bar@3.1.1(@uppy/core@3.13.1))(@uppy/status-bar@3.3.3(@uppy/core@3.13.1))(react@19.2.4)':
+ dependencies:
+ '@uppy/core': 3.13.1
+ '@uppy/utils': 5.9.0
+ prop-types: 15.8.1
+ react: 19.2.4
+ optionalDependencies:
+ '@uppy/dashboard': 3.9.1(@uppy/core@3.13.1)
+ '@uppy/drag-drop': 3.1.1(@uppy/core@3.13.1)
+ '@uppy/file-input': 3.1.2(@uppy/core@3.13.1)
+ '@uppy/progress-bar': 3.1.1(@uppy/core@3.13.1)
+ '@uppy/status-bar': 3.3.3(@uppy/core@3.13.1)
+
'@uppy/react@3.4.0(@uppy/core@3.13.1)(@uppy/dashboard@3.9.1(@uppy/core@3.13.1))(@uppy/drag-drop@3.1.1(@uppy/core@3.13.1))(@uppy/file-input@3.1.2(@uppy/core@3.13.1))(@uppy/progress-bar@3.1.1(@uppy/core@3.13.1))(@uppy/status-bar@3.3.3(@uppy/core@3.13.1))(react@19.2.5)':
dependencies:
'@uppy/core': 3.13.1
@@ -22802,6 +23830,14 @@ snapshots:
y-protocols: 1.0.7(yjs@13.6.30)
yjs: 13.6.30
+ '@y-sweet/react@0.6.4(react@19.2.4)(yjs@13.6.30)':
+ dependencies:
+ '@y-sweet/client': 0.6.4(yjs@13.6.30)
+ '@y-sweet/sdk': 0.6.4
+ react: 19.2.4
+ y-protocols: 1.0.7(yjs@13.6.30)
+ yjs: 13.6.30
+
'@y-sweet/react@0.6.4(react@19.2.5)(yjs@13.6.30)':
dependencies:
'@y-sweet/client': 0.6.4(yjs@13.6.30)
@@ -22812,7 +23848,7 @@ snapshots:
'@y-sweet/sdk@0.6.4':
dependencies:
- '@types/node': 20.19.39
+ '@types/node': 20.19.37
'@yarnpkg/lockfile@1.1.0': {}
@@ -23051,7 +24087,15 @@ snapshots:
axios@1.15.0:
dependencies:
- follow-redirects: 1.16.0
+ follow-redirects: 1.15.11
+ form-data: 4.0.5
+ proxy-from-env: 2.1.0
+ transitivePeerDependencies:
+ - debug
+
+ axios@1.15.1:
+ dependencies:
+ follow-redirects: 1.15.11
form-data: 4.0.5
proxy-from-env: 2.1.0
transitivePeerDependencies:
@@ -23072,7 +24116,7 @@ snapshots:
dependencies:
'@babel/runtime': 7.29.2
cosmiconfig: 7.1.0
- resolve: 1.22.12
+ resolve: 1.22.11
babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.0):
dependencies:
@@ -23405,6 +24449,18 @@ snapshots:
clsx@2.1.1: {}
+ cmdk@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
+ dependencies:
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ transitivePeerDependencies:
+ - '@types/react'
+ - '@types/react-dom'
+
cmdk@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
dependencies:
'@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5)
@@ -23795,7 +24851,7 @@ snapshots:
dotenv-expand@11.0.7:
dependencies:
- dotenv: 16.4.7
+ dotenv: 16.6.1
dotenv@16.4.7: {}
@@ -23832,7 +24888,7 @@ snapshots:
engine.io@6.6.6:
dependencies:
'@types/cors': 2.8.19
- '@types/node': 25.6.0
+ '@types/node': 25.5.0
'@types/ws': 8.18.1
accepts: 1.3.8
base64id: 2.0.0
@@ -23859,6 +24915,8 @@ snapshots:
entities@6.0.1: {}
+ entities@8.0.0: {}
+
env-paths@3.0.0: {}
error-ex@1.3.4:
@@ -24144,7 +25202,7 @@ snapshots:
get-tsconfig: 4.13.7
is-bun-module: 2.0.0
stable-hash: 0.0.5
- tinyglobby: 0.2.16
+ tinyglobby: 0.2.15
unrs-resolver: 1.11.1
optionalDependencies:
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1))
@@ -24658,7 +25716,7 @@ snapshots:
flatted@3.4.2: {}
- follow-redirects@1.16.0: {}
+ follow-redirects@1.15.11: {}
fontkit@2.0.4:
dependencies:
@@ -24703,6 +25761,10 @@ snapshots:
react: 19.2.5
react-dom: 19.2.5(react@19.2.5)
+ frimousse@0.2.0(react@19.2.4):
+ dependencies:
+ react: 19.2.4
+
frimousse@0.2.0(react@19.2.5):
dependencies:
react: 19.2.5
@@ -25195,7 +26257,7 @@ snapshots:
dependencies:
react-is: 16.13.1
- hono@4.12.14: {}
+ hono@4.12.10: {}
hsl-to-hex@1.0.0:
dependencies:
@@ -25659,7 +26721,7 @@ snapshots:
jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0):
dependencies:
'@asamuzakjp/css-color': 5.1.11
- '@asamuzakjp/dom-selector': 7.0.10
+ '@asamuzakjp/dom-selector': 7.1.1
'@bramus/specificity': 2.4.2
'@csstools/css-syntax-patches-for-csstree': 1.1.3(css-tree@3.2.1)
'@exodus/bytes': 1.15.0(@noble/hashes@2.0.1)
@@ -25669,7 +26731,7 @@ snapshots:
html-encoding-sniffer: 6.0.0(@noble/hashes@2.0.1)
is-potential-custom-element-name: 1.0.1
lru-cache: 11.2.7
- parse5: 8.0.0
+ parse5: 8.0.1
saxes: 6.0.0
symbol-tree: 3.2.4
tough-cookie: 6.0.1
@@ -25815,8 +26877,6 @@ snapshots:
dependencies:
uc.micro: 2.1.0
- linkifyjs@4.3.2: {}
-
loader-runner@4.3.1: {}
locate-path@6.0.0:
@@ -26824,7 +27884,7 @@ snapshots:
bl: 4.1.0
chalk: 4.1.2
cli-cursor: 3.1.0
- cli-spinners: 2.6.1
+ cli-spinners: 2.9.2
is-interactive: 1.0.0
log-symbols: 4.1.0
strip-ansi: 6.0.1
@@ -26910,9 +27970,9 @@ snapshots:
dependencies:
entities: 6.0.1
- parse5@8.0.0:
+ parse5@8.0.1:
dependencies:
- entities: 6.0.1
+ entities: 8.0.0
parseley@0.12.1:
dependencies:
@@ -27132,7 +28192,7 @@ snapshots:
property-information@7.1.0: {}
- prosemirror-changeset@2.4.1:
+ prosemirror-changeset@2.3.1:
dependencies:
prosemirror-transform: 1.12.0
@@ -27263,6 +28323,69 @@ snapshots:
dependencies:
inherits: 2.0.4
+ radix-ui@1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
+ dependencies:
+ '@radix-ui/primitive': 1.1.3
+ '@radix-ui/react-accessible-icon': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-alert-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-aspect-ratio': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-avatar': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-checkbox': 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-context-menu': 2.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-dropdown-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-form': 0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-hover-card': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-label': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-menubar': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-navigation-menu': 1.2.14(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-one-time-password-field': 0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-password-toggle-field': 0.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-popover': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-progress': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-radio-group': 1.3.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-scroll-area': 1.2.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-select': 2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-separator': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-slider': 1.3.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-switch': 1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-toast': 1.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-toolbar': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-tooltip': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4)
+ '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
radix-ui@1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -27343,6 +28466,11 @@ snapshots:
date-fns-jalali: 4.1.0-0
react: 19.2.5
+ react-dom@19.2.4(react@19.2.4):
+ dependencies:
+ react: 19.2.4
+ scheduler: 0.27.0
+
react-dom@19.2.5(react@19.2.5):
dependencies:
react: 19.2.5
@@ -27393,6 +28521,10 @@ snapshots:
dependencies:
react: 19.2.5
+ react-icons@5.6.0(react@19.2.4):
+ dependencies:
+ react: 19.2.4
+
react-icons@5.6.0(react@19.2.5):
dependencies:
react: 19.2.5
@@ -27410,6 +28542,11 @@ snapshots:
react: 19.2.5
react-dom: 19.2.5(react@19.2.5)
+ react-number-format@5.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
+ dependencies:
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+
react-number-format@5.4.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
dependencies:
react: 19.2.5
@@ -27426,6 +28563,14 @@ snapshots:
react-refresh@0.17.0: {}
+ react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.2.4):
+ dependencies:
+ react: 19.2.4
+ react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.4)
+ tslib: 2.8.1
+ optionalDependencies:
+ '@types/react': 19.2.14
+
react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.2.5):
dependencies:
react: 19.2.5
@@ -27434,6 +28579,17 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
+ react-remove-scroll@2.7.2(@types/react@19.2.14)(react@19.2.4):
+ dependencies:
+ react: 19.2.4
+ react-remove-scroll-bar: 2.3.8(@types/react@19.2.14)(react@19.2.4)
+ react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.4)
+ tslib: 2.8.1
+ use-callback-ref: 1.3.3(@types/react@19.2.14)(react@19.2.4)
+ use-sidecar: 1.1.3(@types/react@19.2.14)(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+
react-remove-scroll@2.7.2(@types/react@19.2.14)(react@19.2.5):
dependencies:
react: 19.2.5
@@ -27457,6 +28613,14 @@ snapshots:
'@remix-run/router': 1.23.2
react: 19.2.5
+ react-style-singleton@2.2.3(@types/react@19.2.14)(react@19.2.4):
+ dependencies:
+ get-nonce: 1.0.1
+ react: 19.2.4
+ tslib: 2.8.1
+ optionalDependencies:
+ '@types/react': 19.2.14
+
react-style-singleton@2.2.3(@types/react@19.2.14)(react@19.2.5):
dependencies:
get-nonce: 1.0.1
@@ -27465,6 +28629,15 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
+ react-textarea-autosize@8.5.9(@types/react@19.2.14)(react@19.2.4):
+ dependencies:
+ '@babel/runtime': 7.29.2
+ react: 19.2.4
+ use-composed-ref: 1.4.0(@types/react@19.2.14)(react@19.2.4)
+ use-latest: 1.3.0(@types/react@19.2.14)(react@19.2.4)
+ transitivePeerDependencies:
+ - '@types/react'
+
react-textarea-autosize@8.5.9(@types/react@19.2.14)(react@19.2.5):
dependencies:
'@babel/runtime': 7.29.2
@@ -27478,6 +28651,15 @@ snapshots:
dependencies:
react: 19.2.5
+ react-transition-group@4.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
+ dependencies:
+ '@babel/runtime': 7.29.2
+ dom-helpers: 5.2.1
+ loose-envify: 1.4.0
+ prop-types: 15.8.1
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+
react-transition-group@4.4.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
dependencies:
'@babel/runtime': 7.29.2
@@ -27497,6 +28679,8 @@ snapshots:
dependencies:
loose-envify: 1.4.0
+ react@19.2.4: {}
+
react@19.2.5: {}
readable-stream@2.3.8:
@@ -27623,7 +28807,7 @@ snapshots:
regenerate: 1.4.2
regenerate-unicode-properties: 10.2.2
regjsgen: 0.8.0
- regjsparser: 0.13.1
+ regjsparser: 0.13.0
unicode-match-property-ecmascript: 2.0.0
unicode-match-property-value-ecmascript: 2.2.1
@@ -27638,7 +28822,7 @@ snapshots:
regjsgen@0.8.0: {}
- regjsparser@0.13.1:
+ regjsparser@0.13.0:
dependencies:
jsesc: 3.1.0
@@ -27749,9 +28933,8 @@ snapshots:
resolve.exports@2.0.3: {}
- resolve@1.22.12:
+ resolve@1.22.11:
dependencies:
- es-errors: 1.3.0
is-core-module: 2.16.1
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
@@ -28118,6 +29301,19 @@ snapshots:
is-plain-object: 5.0.0
slate: 0.110.2
+ slate-react@0.110.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(slate@0.110.2):
+ dependencies:
+ '@juggle/resize-observer': 3.4.0
+ direction: 1.0.4
+ is-hotkey: 0.2.0
+ is-plain-object: 5.0.0
+ lodash: 4.18.1
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ scroll-into-view-if-needed: 3.1.0
+ slate: 0.110.2
+ tiny-invariant: 1.3.1
+
slate-react@0.110.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(slate@0.110.2):
dependencies:
'@juggle/resize-observer': 3.4.0
@@ -28471,11 +29667,6 @@ snapshots:
fdir: 6.5.0(picomatch@4.0.4)
picomatch: 4.0.4
- tinyglobby@0.2.16:
- dependencies:
- fdir: 6.5.0(picomatch@4.0.4)
- picomatch: 4.0.4
-
tinyrainbow@3.1.0: {}
tldts-core@6.1.86: {}
@@ -28665,7 +29856,7 @@ snapshots:
undici-types@7.19.2: {}
- undici@6.25.0: {}
+ undici@6.22.0: {}
undici@7.25.0: {}
@@ -28783,6 +29974,13 @@ snapshots:
dependencies:
punycode: 2.3.1
+ use-callback-ref@1.3.3(@types/react@19.2.14)(react@19.2.4):
+ dependencies:
+ react: 19.2.4
+ tslib: 2.8.1
+ optionalDependencies:
+ '@types/react': 19.2.14
+
use-callback-ref@1.3.3(@types/react@19.2.14)(react@19.2.5):
dependencies:
react: 19.2.5
@@ -28790,18 +29988,37 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
+ use-composed-ref@1.4.0(@types/react@19.2.14)(react@19.2.4):
+ dependencies:
+ react: 19.2.4
+ optionalDependencies:
+ '@types/react': 19.2.14
+
use-composed-ref@1.4.0(@types/react@19.2.14)(react@19.2.5):
dependencies:
react: 19.2.5
optionalDependencies:
'@types/react': 19.2.14
+ use-isomorphic-layout-effect@1.2.1(@types/react@19.2.14)(react@19.2.4):
+ dependencies:
+ react: 19.2.4
+ optionalDependencies:
+ '@types/react': 19.2.14
+
use-isomorphic-layout-effect@1.2.1(@types/react@19.2.14)(react@19.2.5):
dependencies:
react: 19.2.5
optionalDependencies:
'@types/react': 19.2.14
+ use-latest@1.3.0(@types/react@19.2.14)(react@19.2.4):
+ dependencies:
+ react: 19.2.4
+ use-isomorphic-layout-effect: 1.2.1(@types/react@19.2.14)(react@19.2.4)
+ optionalDependencies:
+ '@types/react': 19.2.14
+
use-latest@1.3.0(@types/react@19.2.14)(react@19.2.5):
dependencies:
react: 19.2.5
@@ -28809,6 +30026,14 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
+ use-sidecar@1.1.3(@types/react@19.2.14)(react@19.2.4):
+ dependencies:
+ detect-node-es: 1.1.0
+ react: 19.2.4
+ tslib: 2.8.1
+ optionalDependencies:
+ '@types/react': 19.2.14
+
use-sidecar@1.1.3(@types/react@19.2.14)(react@19.2.5):
dependencies:
detect-node-es: 1.1.0
@@ -28817,6 +30042,10 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
+ use-sync-external-store@1.6.0(react@19.2.4):
+ dependencies:
+ react: 19.2.4
+
use-sync-external-store@1.6.0(react@19.2.5):
dependencies:
react: 19.2.5
@@ -28947,7 +30176,7 @@ snapshots:
picomatch: 4.0.4
postcss: 8.5.8
rolldown: 1.0.0-rc.15
- tinyglobby: 0.2.16
+ tinyglobby: 0.2.15
optionalDependencies:
'@types/node': 20.19.37
esbuild: 0.27.5
@@ -28963,7 +30192,7 @@ snapshots:
picomatch: 4.0.4
postcss: 8.5.8
rolldown: 1.0.0-rc.15
- tinyglobby: 0.2.16
+ tinyglobby: 0.2.15
optionalDependencies:
'@types/node': 25.5.0
esbuild: 0.27.5
@@ -28980,7 +30209,7 @@ snapshots:
picomatch: 4.0.4
postcss: 8.5.8
rolldown: 1.0.0-rc.15
- tinyglobby: 0.2.16
+ tinyglobby: 0.2.15
optionalDependencies:
'@types/node': 25.6.0
esbuild: 0.27.5
@@ -29017,7 +30246,7 @@ snapshots:
std-env: 4.0.0
tinybench: 2.9.0
tinyexec: 1.0.4
- tinyglobby: 0.2.16
+ tinyglobby: 0.2.15
tinyrainbow: 3.1.0
vite: 8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)
why-is-node-running: 2.3.0
@@ -29046,7 +30275,7 @@ snapshots:
std-env: 4.0.0
tinybench: 2.9.0
tinyexec: 1.0.4
- tinyglobby: 0.2.16
+ tinyglobby: 0.2.15
tinyrainbow: 3.1.0
vite: 8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)
why-is-node-running: 2.3.0
@@ -29076,7 +30305,7 @@ snapshots:
std-env: 4.0.0
tinybench: 2.9.0
tinyexec: 1.0.4
- tinyglobby: 0.2.16
+ tinyglobby: 0.2.15
tinyrainbow: 3.1.0
vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)
why-is-node-running: 2.3.0
@@ -29105,7 +30334,7 @@ snapshots:
std-env: 4.0.0
tinybench: 2.9.0
tinyexec: 1.0.4
- tinyglobby: 0.2.16
+ tinyglobby: 0.2.15
tinyrainbow: 3.1.0
vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)
why-is-node-running: 2.3.0
@@ -29124,7 +30353,7 @@ snapshots:
wait-on@9.0.5:
dependencies:
- axios: 1.15.0
+ axios: 1.15.1
joi: 18.1.2
lodash: 4.18.1
minimist: 1.2.8
From 3393322e3dd626072d873a86faafbc3ef53f83ae Mon Sep 17 00:00:00 2001
From: Nick the Sick
Date: Fri, 3 Apr 2026 08:21:35 +0200
Subject: [PATCH 02/15] refactor: simplify inlined Link extension by removing
unused tiptap options
Strip out carried-over options (openOnClick, enableClickSelection, linkOnPaste,
protocols, validate), deprecated types (LinkProtocolOptions, LinkOptions), and
verbose JSDoc comments. Inline configuration defaults directly, pre-compile the
URI validation regex, and simplify the extension registration in ExtensionManager.
Co-Authored-By: Claude Opus 4.6 (1M context)
---
.../managers/ExtensionManager/extensions.ts | 25 +-
.../Link/helpers/autolink.ts | 27 +-
.../Link/helpers/clickHandler.ts | 27 +-
.../Link/helpers/linkDetector.ts | 2 -
.../Link/helpers/pasteHandler.ts | 3 +-
.../tiptap-extensions/Link/index.ts | 3 +-
.../extensions/tiptap-extensions/Link/link.ts | 474 ++++--------------
7 files changed, 97 insertions(+), 464 deletions(-)
diff --git a/packages/core/src/editor/managers/ExtensionManager/extensions.ts b/packages/core/src/editor/managers/ExtensionManager/extensions.ts
index ee651104a3..487063b861 100644
--- a/packages/core/src/editor/managers/ExtensionManager/extensions.ts
+++ b/packages/core/src/editor/managers/ExtensionManager/extensions.ts
@@ -26,10 +26,6 @@ import {
TableHandlesExtension,
TrailingNodeExtension,
} from "../../../extensions/index.js";
-import {
- DEFAULT_LINK_PROTOCOL,
- VALID_LINK_PROTOCOLS,
-} from "../../../extensions/LinkToolbar/protocols.js";
import {
BackgroundColorExtension,
HardBreak,
@@ -49,8 +45,6 @@ import {
import { ExtensionFactoryInstance } from "../../BlockNoteExtension.js";
import { CollaborationExtension } from "../../../extensions/Collaboration/Collaboration.js";
-let LINKIFY_INITIALIZED = false;
-
/**
* Get all the Tiptap extensions BlockNote is configured with by default
*/
@@ -79,22 +73,7 @@ export function getDefaultTiptapExtensions(
SuggestionAddMark,
SuggestionDeleteMark,
SuggestionModificationMark,
- Link.extend({
- inclusive: false,
- })
- .extend({
- // Remove the title attribute to avoid unnecessary null attributes in serialized output
- addAttributes() {
- const attrs = this.parent?.() || {};
- delete (attrs as Record).title;
- return attrs;
- },
- })
- .configure({
- defaultProtocol: DEFAULT_LINK_PROTOCOL,
- // only call this once if we have multiple editors installed. Or fix https://github.com/ueberdosis/tiptap/issues/5450
- protocols: LINKIFY_INITIALIZED ? [] : VALID_LINK_PROTOCOLS,
- }),
+ Link,
...(Object.values(editor.schema.styleSpecs).map((styleSpec) => {
return styleSpec.implementation.mark.configure({
editor: editor,
@@ -171,8 +150,6 @@ export function getDefaultTiptapExtensions(
createDropFileExtension(editor),
];
- LINKIFY_INITIALIZED = true;
-
return tiptapExtensions;
}
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/helpers/autolink.ts b/packages/core/src/extensions/tiptap-extensions/Link/helpers/autolink.ts
index 5e898c6309..88ca510c2a 100644
--- a/packages/core/src/extensions/tiptap-extensions/Link/helpers/autolink.ts
+++ b/packages/core/src/extensions/tiptap-extensions/Link/helpers/autolink.ts
@@ -18,12 +18,6 @@ import {
/**
* Check if the provided tokens form a valid link structure, which can either be a single link token
* or a link token surrounded by parentheses or square brackets.
- *
- * This ensures that only complete and valid text is hyperlinked, preventing cases where a valid
- * top-level domain (TLD) is immediately followed by an invalid character, like a number. For
- * example, with the `find` method from Linkify, entering `example.com1` would result in
- * `example.com` being linked and the trailing `1` left as plain text. By using the `tokenize`
- * method, we can perform more comprehensive validation on the input text.
*/
function isValidLinkStructure(tokens: LinkMatch[]) {
if (tokens.length === 1) {
@@ -42,36 +36,23 @@ type AutolinkOptions = {
defaultProtocol: string;
validate: (url: string) => boolean;
shouldAutoLink: (url: string) => boolean;
- protocols: Array<{ scheme: string; optionalSlashes?: boolean } | string>;
};
/**
- * This plugin allows you to automatically add links to your editor.
- * @param options The plugin options
- * @returns The plugin instance
+ * Plugin that automatically adds link marks when typing URLs.
*/
export function autolink(options: AutolinkOptions): Plugin {
return new Plugin({
key: new PluginKey("autolink"),
appendTransaction: (transactions, oldState, newState) => {
- /**
- * Does the transaction change the document?
- */
const docChanges =
transactions.some((transaction) => transaction.docChanged) &&
!oldState.doc.eq(newState.doc);
- /**
- * Prevent autolink if the transaction is not a document change or if the transaction has the meta `preventAutolink`.
- */
const preventAutolink = transactions.some((transaction) =>
transaction.getMeta("preventAutolink")
);
- /**
- * Prevent autolink if the transaction is not a document change
- * or if the transaction has the meta `preventAutolink`.
- */
if (!docChanges || preventAutolink) {
return;
}
@@ -83,7 +64,6 @@ export function autolink(options: AutolinkOptions): Plugin {
const changes = getChangedRanges(transform);
changes.forEach(({ newRange }) => {
- // Now let's see if we can add new links.
const nodesInChangedRanges = findChildrenInRange(
newState.doc,
newRange,
@@ -94,7 +74,6 @@ export function autolink(options: AutolinkOptions): Plugin {
let textBeforeWhitespace: string | undefined;
if (nodesInChangedRanges.length > 1) {
- // Grab the first node within the changed ranges (ex. the first of two paragraphs when hitting enter).
textBlock = nodesInChangedRanges[0];
textBeforeWhitespace = newState.doc.textBetween(
textBlock.pos,
@@ -151,7 +130,6 @@ export function autolink(options: AutolinkOptions): Plugin {
linksBeforeSpace
.filter((link) => link.isLink)
- // Calculate link position.
.map((link) => ({
...link,
from: lastWordAndBlockOffset + link.start + 1,
@@ -169,11 +147,8 @@ export function autolink(options: AutolinkOptions): Plugin {
newState.schema.marks.code
);
})
- // validate link
.filter((link) => options.validate(link.value))
- // check whether should autolink
.filter((link) => options.shouldAutoLink(link.value))
- // Add link mark.
.forEach((link) => {
if (
getMarksBetween(link.from, link.to, newState.doc).some(
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/helpers/clickHandler.ts b/packages/core/src/extensions/tiptap-extensions/Link/helpers/clickHandler.ts
index 9fa248c65a..fe31821e77 100644
--- a/packages/core/src/extensions/tiptap-extensions/Link/helpers/clickHandler.ts
+++ b/packages/core/src/extensions/tiptap-extensions/Link/helpers/clickHandler.ts
@@ -6,8 +6,6 @@ import { Plugin, PluginKey } from "@tiptap/pm/state";
type ClickHandlerOptions = {
type: MarkType;
editor: Editor;
- openOnClick?: boolean;
- enableClickSelection?: boolean;
};
export function clickHandler(options: ClickHandlerOptions): Plugin {
@@ -48,27 +46,16 @@ export function clickHandler(options: ClickHandlerOptions): Plugin {
return false;
}
- let handled = false;
+ const attrs = getAttributes(view.state, options.type.name);
+ const href = link.href ?? attrs.href;
+ const target = link.target ?? attrs.target;
- if (options.enableClickSelection) {
- const commandResult = options.editor.commands.extendMarkRange(
- options.type.name
- );
- handled = commandResult;
+ if (href) {
+ window.open(href, target);
+ return true;
}
- if (options.openOnClick) {
- const attrs = getAttributes(view.state, options.type.name);
- const href = link.href ?? attrs.href;
- const target = link.target ?? attrs.target;
-
- if (href) {
- window.open(href, target);
- handled = true;
- }
- }
-
- return handled;
+ return false;
},
},
});
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/helpers/linkDetector.ts b/packages/core/src/extensions/tiptap-extensions/Link/helpers/linkDetector.ts
index 403b5cce8e..d0e56e31e6 100644
--- a/packages/core/src/extensions/tiptap-extensions/Link/helpers/linkDetector.ts
+++ b/packages/core/src/extensions/tiptap-extensions/Link/helpers/linkDetector.ts
@@ -37,8 +37,6 @@ const SPECIAL_HOSTS = new Set(["localhost"]);
// Regex building blocks
// ---------------------------------------------------------------------------
-// URL-safe characters in path/query/fragment (everything except whitespace)
-const URL_BODY = "[^\\s]";
// Characters that are unlikely to be part of a URL when they appear at the end
const TRAILING_PUNCT = /[.,;:!?"']+$/;
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/helpers/pasteHandler.ts b/packages/core/src/extensions/tiptap-extensions/Link/helpers/pasteHandler.ts
index 2f95bb2d49..947be17e37 100644
--- a/packages/core/src/extensions/tiptap-extensions/Link/helpers/pasteHandler.ts
+++ b/packages/core/src/extensions/tiptap-extensions/Link/helpers/pasteHandler.ts
@@ -1,14 +1,13 @@
import type { Editor } from "@tiptap/core";
import type { MarkType } from "@tiptap/pm/model";
import { Plugin, PluginKey } from "@tiptap/pm/state";
-import type { LinkOptions } from "../link.js";
import { findLinks } from "./linkDetector.js";
type PasteHandlerOptions = {
editor: Editor;
defaultProtocol: string;
type: MarkType;
- shouldAutoLink?: LinkOptions["shouldAutoLink"];
+ shouldAutoLink?: (url: string) => boolean;
};
export function pasteHandler(options: PasteHandlerOptions): Plugin {
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/index.ts b/packages/core/src/extensions/tiptap-extensions/Link/index.ts
index c9bbe60114..5324cbbe38 100644
--- a/packages/core/src/extensions/tiptap-extensions/Link/index.ts
+++ b/packages/core/src/extensions/tiptap-extensions/Link/index.ts
@@ -1,3 +1,2 @@
export { Link } from "./link.js";
-export type { LinkOptions, LinkProtocolOptions } from "./link.js";
-export { isAllowedUri, pasteRegex } from "./link.js";
+export { isAllowedUri } from "./link.js";
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/link.ts b/packages/core/src/extensions/tiptap-extensions/Link/link.ts
index 1c879dc78c..15783a12f9 100644
--- a/packages/core/src/extensions/tiptap-extensions/Link/link.ts
+++ b/packages/core/src/extensions/tiptap-extensions/Link/link.ts
@@ -7,209 +7,66 @@ import { clickHandler } from "./helpers/clickHandler.js";
import { pasteHandler } from "./helpers/pasteHandler.js";
import { UNICODE_WHITESPACE_REGEX_GLOBAL } from "./helpers/whitespace.js";
-export interface LinkProtocolOptions {
- /**
- * The protocol scheme to be registered.
- * @default '''
- * @example 'ftp'
- * @example 'git'
- */
- scheme: string;
-
- /**
- * If enabled, it allows optional slashes after the protocol.
- * @default false
- * @example true
- */
- optionalSlashes?: boolean;
-}
+const DEFAULT_PROTOCOL = "https";
-export const pasteRegex =
- /https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z]{2,}\b(?:[-a-zA-Z0-9@:%._+~#=?!&/]*)(?:[-a-zA-Z0-9@:%._+~#=?!&/]*)/gi;
-
-/**
- * @deprecated The default behavior is now to open links when the editor is not editable.
- */
-type DeprecatedOpenWhenNotEditable = "whenNotEditable";
-
-export interface LinkOptions {
- /**
- * If enabled, the extension will automatically add links as you type.
- * @default true
- * @example false
- */
- autolink: boolean;
-
- /**
- * An array of custom protocols to be recognized by the link detector.
- * @default []
- * @example ['ftp', 'git']
- */
- protocols: Array;
-
- /**
- * Default protocol to use when no protocol is specified.
- * @default 'http'
- */
- defaultProtocol: string;
- /**
- * If enabled, links will be opened on click.
- * @default true
- * @example false
- */
- openOnClick: boolean | DeprecatedOpenWhenNotEditable;
- /**
- * If enabled, the link will be selected when clicked.
- * @default false
- * @example true
- */
- enableClickSelection: boolean;
- /**
- * Adds a link to the current selection if the pasted content only contains an url.
- * @default true
- * @example false
- */
- linkOnPaste: boolean;
-
- /**
- * HTML attributes to add to the link element.
- * @default {}
- * @example { class: 'foo' }
- */
- HTMLAttributes: Record;
-
- /**
- * @deprecated Use the `shouldAutoLink` option instead.
- * A validation function that modifies link verification for the auto linker.
- * @param url - The url to be validated.
- * @returns - True if the url is valid, false otherwise.
- */
- validate: (url: string) => boolean;
-
- /**
- * A validation function which is used for configuring link verification for preventing XSS attacks.
- * Only modify this if you know what you're doing.
- *
- * @returns {boolean} `true` if the URL is valid, `false` otherwise.
- *
- * @example
- * isAllowedUri: (url, { defaultValidate, protocols, defaultProtocol }) => {
- * return url.startsWith('./') || defaultValidate(url)
- * }
- */
- isAllowedUri: (
- /**
- * The URL to be validated.
- */
- url: string,
- ctx: {
- /**
- * The default validation function.
- */
- defaultValidate: (url: string) => boolean;
- /**
- * An array of allowed protocols for the URL (e.g., "http", "https"). As defined in the `protocols` option.
- */
- protocols: Array;
- /**
- * A string that represents the default protocol (e.g., 'http'). As defined in the `defaultProtocol` option.
- */
- defaultProtocol: string;
- }
- ) => boolean;
-
- /**
- * Determines whether a valid link should be automatically linked in the content.
- *
- * @param {string} url - The URL that has already been validated.
- * @returns {boolean} - True if the link should be auto-linked; false if it should not be auto-linked.
- */
- shouldAutoLink: (url: string) => boolean;
-}
+const HTML_ATTRIBUTES = {
+ target: "_blank",
+ rel: "noopener noreferrer nofollow",
+};
declare module "@tiptap/core" {
interface Commands {
link: {
- /**
- * Set a link mark
- * @param attributes The link attributes
- * @example editor.commands.setLink({ href: 'https://tiptap.dev' })
- */
- setLink: (attributes: {
- href: string;
- target?: string | null;
- rel?: string | null;
- class?: string | null;
- title?: string | null;
- }) => ReturnType;
- /**
- * Toggle a link mark
- * @param attributes The link attributes
- * @example editor.commands.toggleLink({ href: 'https://tiptap.dev' })
- */
- toggleLink: (attributes?: {
- href: string;
- target?: string | null;
- rel?: string | null;
- class?: string | null;
- title?: string | null;
- }) => ReturnType;
- /**
- * Unset a link mark
- * @example editor.commands.unsetLink()
- */
+ setLink: (attributes: { href: string }) => ReturnType;
+ toggleLink: (attributes?: { href: string }) => ReturnType;
unsetLink: () => ReturnType;
};
}
}
-export function isAllowedUri(
- uri: string | undefined,
- protocols?: LinkOptions["protocols"]
-) {
- const allowedProtocols: string[] = [
- "http",
- "https",
- "ftp",
- "ftps",
- "mailto",
- "tel",
- "callto",
- "sms",
- "cid",
- "xmpp",
- ];
-
- if (protocols) {
- protocols.forEach((protocol) => {
- const nextProtocol =
- typeof protocol === "string" ? protocol : protocol.scheme;
-
- if (nextProtocol) {
- allowedProtocols.push(nextProtocol);
- }
- });
+// Pre-compiled regex for URI protocol validation.
+// Allows: http, https, ftp, ftps, mailto, tel, callto, sms, cid, xmpp
+const ALLOWED_URI_REGEX =
+ // eslint-disable-next-line no-useless-escape
+ /^(?:(?:http|https|ftp|ftps|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z0-9+.\-]+(?:[^a-z+.\-:]|$))/i;
+
+export function isAllowedUri(uri: string | undefined): boolean {
+ if (!uri) return true;
+ const cleaned = uri.replace(UNICODE_WHITESPACE_REGEX_GLOBAL, "");
+ return ALLOWED_URI_REGEX.test(cleaned);
+}
+
+/**
+ * Determine whether a detected URL should be auto-linked.
+ * URLs with explicit protocols are always auto-linked.
+ * Bare hostnames must have a TLD (no IP addresses or single words).
+ */
+function shouldAutoLink(url: string): boolean {
+ const hasProtocol = /^[a-z][a-z0-9+.-]*:\/\//i.test(url);
+ const hasMaybeProtocol = /^[a-z][a-z0-9+.-]*:/i.test(url);
+
+ if (hasProtocol || (hasMaybeProtocol && !url.includes("@"))) {
+ return true;
}
+ // Strip userinfo (user:pass@) if present, then extract hostname
+ const urlWithoutUserinfo = url.includes("@") ? url.split("@").pop()! : url;
+ const hostname = urlWithoutUserinfo.split(/[/?#:]/)[0];
- return (
- !uri ||
- uri
- .replace(UNICODE_WHITESPACE_REGEX_GLOBAL, "")
- .match(
- new RegExp(
- // eslint-disable-next-line no-useless-escape
- `^(?:(?:${allowedProtocols.join("|")}):|[^a-z]|[a-z0-9+.\-]+(?:[^a-z+.\-:]|$))`,
- "i"
- )
- )
- );
+ // Don't auto-link IP addresses without protocol
+ if (/^\d{1,3}(\.\d{1,3}){3}$/.test(hostname)) {
+ return false;
+ }
+ // Don't auto-link single-word hostnames without TLD (e.g., "localhost")
+ if (!/\./.test(hostname)) {
+ return false;
+ }
+ return true;
}
/**
- * This extension allows you to create links.
- * @see https://www.tiptap.dev/api/marks/link
+ * BlockNote Link mark extension.
*/
-export const Link = Mark.create({
+export const Link = Mark.create({
name: "link",
priority: 1000,
@@ -218,63 +75,7 @@ export const Link = Mark.create({
exitable: true,
- onCreate() {
- // TODO: v4 - remove validate option
- if (this.options.validate && !this.options.shouldAutoLink) {
- // Copy the validate function to the shouldAutoLink option
- this.options.shouldAutoLink = this.options.validate;
- console.warn(
- 'The `validate` option is deprecated. Rename to the `shouldAutoLink` option instead.'
- );
- }
- },
-
- inclusive() {
- return this.options.autolink;
- },
-
- addOptions() {
- return {
- openOnClick: true,
- enableClickSelection: false,
- linkOnPaste: true,
- autolink: true,
- protocols: [],
- defaultProtocol: "http",
- HTMLAttributes: {
- target: "_blank",
- rel: "noopener noreferrer nofollow",
- class: null,
- },
- isAllowedUri: (url, ctx) => !!isAllowedUri(url, ctx.protocols),
- validate: (url) => !!url,
- shouldAutoLink: (url) => {
- // URLs with explicit protocols (e.g., https://) should be auto-linked
- // But not if @ appears before :// (that would be userinfo like user:pass@host)
- const hasProtocol = /^[a-z][a-z0-9+.-]*:\/\//i.test(url);
- const hasMaybeProtocol = /^[a-z][a-z0-9+.-]*:/i.test(url);
-
- if (hasProtocol || (hasMaybeProtocol && !url.includes("@"))) {
- return true;
- }
- // Strip userinfo (user:pass@) if present, then extract hostname
- const urlWithoutUserinfo = url.includes("@")
- ? url.split("@").pop()!
- : url;
- const hostname = urlWithoutUserinfo.split(/[/?#:]/)[0];
-
- // Don't auto-link IP addresses without protocol
- if (/^\d{1,3}(\.\d{1,3}){3}$/.test(hostname)) {
- return false;
- }
- // Don't auto-link single-word hostnames without TLD (e.g., "localhost")
- if (!/\./.test(hostname)) {
- return false;
- }
- return true;
- },
- };
- },
+ inclusive: false,
addAttributes() {
return {
@@ -285,16 +86,10 @@ export const Link = Mark.create({
},
},
target: {
- default: this.options.HTMLAttributes.target,
+ default: HTML_ATTRIBUTES.target,
},
rel: {
- default: this.options.HTMLAttributes.rel,
- },
- class: {
- default: this.options.HTMLAttributes.class,
- },
- title: {
- default: null,
+ default: HTML_ATTRIBUTES.rel,
},
};
},
@@ -305,17 +100,7 @@ export const Link = Mark.create({
tag: "a[href]",
getAttrs: (dom) => {
const href = (dom as HTMLElement).getAttribute("href");
-
- // prevent XSS attacks
- if (
- !href ||
- !this.options.isAllowedUri(href, {
- defaultValidate: (url) =>
- !!isAllowedUri(url, this.options.protocols),
- protocols: this.options.protocols,
- defaultProtocol: this.options.defaultProtocol,
- })
- ) {
+ if (!href || !isAllowedUri(href)) {
return false;
}
return null;
@@ -325,52 +110,15 @@ export const Link = Mark.create({
},
renderHTML({ HTMLAttributes }) {
- // prevent XSS attacks
- if (
- !this.options.isAllowedUri(HTMLAttributes.href, {
- defaultValidate: (href) =>
- !!isAllowedUri(href, this.options.protocols),
- protocols: this.options.protocols,
- defaultProtocol: this.options.defaultProtocol,
- })
- ) {
- // strip out the href
+ if (!isAllowedUri(HTMLAttributes.href)) {
return [
"a",
- mergeAttributes(this.options.HTMLAttributes, {
- ...HTMLAttributes,
- href: "",
- }),
+ mergeAttributes(HTML_ATTRIBUTES, { ...HTMLAttributes, href: "" }),
0,
];
}
- return [
- "a",
- mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),
- 0,
- ];
- },
-
- markdownTokenName: "link",
-
- parseMarkdown: (token, helpers) => {
- return helpers.applyMark(
- "link",
- helpers.parseInline(token.tokens || []),
- {
- href: token.href,
- title: token.title || null,
- }
- );
- },
-
- renderMarkdown: (node, h) => {
- const href = node.attrs?.href ?? "";
- const title = node.attrs?.title ?? "";
- const text = h.renderChildren(node);
-
- return title ? `[${text}](${href} "${title}")` : `[${text}](${href})`;
+ return ["a", mergeAttributes(HTML_ATTRIBUTES, HTMLAttributes), 0];
},
addCommands() {
@@ -378,16 +126,7 @@ export const Link = Mark.create({
setLink:
(attributes) =>
({ chain }) => {
- const { href } = attributes;
-
- if (
- !this.options.isAllowedUri(href, {
- defaultValidate: (url) =>
- !!isAllowedUri(url, this.options.protocols),
- protocols: this.options.protocols,
- defaultProtocol: this.options.defaultProtocol,
- })
- ) {
+ if (!isAllowedUri(attributes.href)) {
return false;
}
@@ -400,17 +139,7 @@ export const Link = Mark.create({
toggleLink:
(attributes) =>
({ chain }) => {
- const { href } = attributes || {};
-
- if (
- href &&
- !this.options.isAllowedUri(href, {
- defaultValidate: (url) =>
- !!isAllowedUri(url, this.options.protocols),
- protocols: this.options.protocols,
- defaultProtocol: this.options.defaultProtocol,
- })
- ) {
+ if (attributes?.href && !isAllowedUri(attributes.href)) {
return false;
}
@@ -438,31 +167,19 @@ export const Link = Mark.create({
const foundLinks: PasteRuleMatch[] = [];
if (text) {
- const { protocols, defaultProtocol } = this.options;
- const links = findLinks(text, { defaultProtocol }).filter(
- (item) =>
- item.isLink &&
- this.options.isAllowedUri(item.value, {
- defaultValidate: (href) =>
- !!isAllowedUri(href, protocols),
- protocols,
- defaultProtocol,
- })
- );
-
- if (links.length) {
- links.forEach((link) => {
- if (!this.options.shouldAutoLink(link.value)) {
- return;
- }
-
- foundLinks.push({
- text: link.value,
- data: {
- href: link.href,
- },
- index: link.start,
- });
+ const links = findLinks(text, {
+ defaultProtocol: DEFAULT_PROTOCOL,
+ }).filter((item) => item.isLink && isAllowedUri(item.value));
+
+ for (const link of links) {
+ if (!shouldAutoLink(link.value)) {
+ continue;
+ }
+
+ foundLinks.push({
+ text: link.value,
+ data: { href: link.href },
+ index: link.start,
});
}
}
@@ -470,59 +187,40 @@ export const Link = Mark.create({
return foundLinks;
},
type: this.type,
- getAttributes: (match) => {
- return {
- href: match.data?.href,
- };
- },
+ getAttributes: (match) => ({
+ href: match.data?.href,
+ }),
}),
];
},
addProseMirrorPlugins() {
const plugins: Plugin[] = [];
- const { protocols, defaultProtocol } = this.options;
-
- if (this.options.autolink) {
- plugins.push(
- autolink({
- type: this.type,
- defaultProtocol: this.options.defaultProtocol,
- validate: (url) =>
- this.options.isAllowedUri(url, {
- defaultValidate: (href) =>
- !!isAllowedUri(href, protocols),
- protocols,
- defaultProtocol,
- }),
- shouldAutoLink: this.options.shouldAutoLink,
- protocols,
- })
- );
- }
+
+ plugins.push(
+ autolink({
+ type: this.type,
+ defaultProtocol: DEFAULT_PROTOCOL,
+ validate: isAllowedUri,
+ shouldAutoLink,
+ })
+ );
plugins.push(
clickHandler({
type: this.type,
editor: this.editor,
- openOnClick:
- this.options.openOnClick === "whenNotEditable"
- ? true
- : this.options.openOnClick,
- enableClickSelection: this.options.enableClickSelection,
})
);
- if (this.options.linkOnPaste) {
- plugins.push(
- pasteHandler({
- editor: this.editor,
- defaultProtocol: this.options.defaultProtocol,
- type: this.type,
- shouldAutoLink: this.options.shouldAutoLink,
- })
- );
- }
+ plugins.push(
+ pasteHandler({
+ editor: this.editor,
+ defaultProtocol: DEFAULT_PROTOCOL,
+ type: this.type,
+ shouldAutoLink,
+ })
+ );
return plugins;
},
From 50210b7587f28e107528622d7ee9b9317abe58a0 Mon Sep 17 00:00:00 2001
From: Nick the Sick
Date: Fri, 3 Apr 2026 15:00:00 +0200
Subject: [PATCH 03/15] =?UTF-8?q?refactor:=20simplify=20link=20API=20?=
=?UTF-8?q?=E2=80=94=20move=20operations=20to=20StyleManager,=20rewrite=20?=
=?UTF-8?q?conversion=20logic?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- Remove unused setLink/toggleLink/unsetLink TipTap commands from Link mark extension
- Move editLink/deleteLink/getLinkMarkAtPos from LinkToolbar into StyleManager,
exposing them as public API on BlockNoteEditor
- LinkToolbar now delegates to editor API instead of doing raw mark operations
- Rewrite contentNodeToInlineContent as a two-pass flatten-then-merge approach,
replacing ~200 lines of nested state machine
- Simplify linkToNodes in blockToNode.ts
Co-Authored-By: Claude Opus 4.6 (1M context)
---
.../src/api/nodeConversions/blockToNode.ts | 20 +-
.../src/api/nodeConversions/nodeToBlock.ts | 285 +++++++-----------
packages/core/src/editor/BlockNoteEditor.ts | 26 ++
.../core/src/editor/managers/StyleManager.ts | 101 ++++++-
.../src/extensions/LinkToolbar/LinkToolbar.ts | 110 ++-----
.../extensions/tiptap-extensions/Link/link.ts | 49 ---
.../__snapshots__/agent.test.ts.snap | 238 +++++++--------
.../__snapshots__/changeset.test.ts.snap | 2 -
.../nodes/hardbreak/between-links.json | 2 -
.../__snapshots__/nodes/hardbreak/link.json | 2 -
.../__snapshots__/nodes/link/adjacent.json | 2 -
.../__snapshots__/nodes/link/basic.json | 1 -
.../__snapshots__/nodes/link/styled.json | 2 -
13 files changed, 380 insertions(+), 460 deletions(-)
diff --git a/packages/core/src/api/nodeConversions/blockToNode.ts b/packages/core/src/api/nodeConversions/blockToNode.ts
index 206ff8d9fd..1f8a389fd8 100644
--- a/packages/core/src/api/nodeConversions/blockToNode.ts
+++ b/packages/core/src/api/nodeConversions/blockToNode.ts
@@ -80,28 +80,20 @@ function styledTextToNodes(
/**
* Converts a Link inline content element to
- * prosemirror text nodes with the appropriate marks
+ * prosemirror text nodes with the link mark applied.
*/
function linkToNodes(
link: PartialLink,
schema: Schema,
styleSchema: StyleSchema,
): Node[] {
- const linkMark = schema.marks.link.create({
- href: link.href,
- });
+ const linkMark = schema.marks.link.create({ href: link.href });
return styledTextArrayToNodes(link.content, schema, styleSchema).map(
- (node) => {
- if (node.type.name === "text") {
- return node.mark([...node.marks, linkMark]);
- }
-
- if (node.type.name === "hardBreak") {
- return node;
- }
- throw new Error("unexpected node type");
- },
+ (node) =>
+ node.type.name === "text"
+ ? node.mark([...node.marks, linkMark])
+ : node,
);
}
diff --git a/packages/core/src/api/nodeConversions/nodeToBlock.ts b/packages/core/src/api/nodeConversions/nodeToBlock.ts
index 5048f91a2b..c2691ae500 100644
--- a/packages/core/src/api/nodeConversions/nodeToBlock.ts
+++ b/packages/core/src/api/nodeConversions/nodeToBlock.ts
@@ -1,4 +1,4 @@
-import { Mark, Node, Schema, Slice } from "@tiptap/pm/model";
+import { Node, Schema, Slice } from "@tiptap/pm/model";
import type { Block } from "../../blocks/defaultBlocks.js";
import UniqueID from "../../extensions/tiptap-extensions/UniqueID/UniqueID.js";
import type {
@@ -135,206 +135,147 @@ export function contentNodeToTableContent<
return ret;
}
+/**
+ * Extract styles from a PM node's marks, separating link href from style marks.
+ */
+function extractMarks(
+ node: Node,
+ styleSchema: S,
+): { styles: Styles; href: string | undefined } {
+ const styles: Styles = {};
+ let href: string | undefined;
+
+ for (const mark of node.marks) {
+ if (mark.type.name === "link") {
+ href = mark.attrs.href;
+ } else {
+ const config = styleSchema[mark.type.name];
+ if (!config) {
+ if (mark.type.spec.blocknoteIgnore) {
+ continue;
+ }
+ throw new Error(`style ${mark.type.name} not found in styleSchema`);
+ }
+ if (config.propSchema === "boolean") {
+ (styles as any)[config.type] = true;
+ } else if (config.propSchema === "string") {
+ (styles as any)[config.type] = mark.attrs.stringValue;
+ } else {
+ throw new UnreachableCaseError(config.propSchema);
+ }
+ }
+ }
+
+ return { styles, href };
+}
+
+// A flattened record representing one PM text node's contribution.
+type FlatTextRecord = {
+ kind: "text";
+ text: string;
+ styles: Styles;
+ href: string | undefined;
+};
+
+type FlatRecord =
+ | FlatTextRecord
+ | { kind: "custom"; node: Node };
+
/**
* Converts an internal (prosemirror) content node to a BlockNote InlineContent array.
+ *
+ * Two-pass approach:
+ * 1. Flatten each PM child node into a simple record (text + styles + optional href, or custom node)
+ * 2. Merge consecutive records with the same href/styles into StyledText or Link objects
*/
export function contentNodeToInlineContent<
I extends InlineContentSchema,
S extends StyleSchema,
>(contentNode: Node, inlineContentSchema: I, styleSchema: S) {
- const content: InlineContent[] = [];
- let currentContent: InlineContent | undefined = undefined;
+ // Pass 1: Flatten PM nodes into records
+ const records: FlatRecord[] = [];
- // Most of the logic below is for handling links because in ProseMirror links are marks
- // while in BlockNote links are a type of inline content
contentNode.content.forEach((node) => {
- // hardBreak nodes do not have an InlineContent equivalent, instead we
- // add a newline to the previous node.
if (node.type.name === "hardBreak") {
- if (currentContent) {
- // Current content exists.
- if (isStyledTextInlineContent(currentContent)) {
- // Current content is text.
- currentContent.text += "\n";
- } else if (isLinkInlineContent(currentContent)) {
- // Current content is a link.
- currentContent.content[currentContent.content.length - 1].text +=
- "\n";
- } else {
- throw new Error("unexpected");
- }
+ // Append newline to the previous text record, or create one
+ const last = records[records.length - 1];
+ if (last && last.kind === "text") {
+ last.text += "\n";
} else {
- // Current content does not exist.
- currentContent = {
- type: "text",
+ records.push({
+ kind: "text",
text: "\n",
- styles: {},
- };
+ styles: {} as Styles,
+ href: undefined,
+ });
}
-
return;
}
- if (node.type.name !== "link" && node.type.name !== "text") {
- if (!inlineContentSchema[node.type.name]) {
- // eslint-disable-next-line no-console
- console.warn("unrecognized inline content type", node.type.name);
- return;
- }
- if (currentContent) {
- content.push(currentContent);
- currentContent = undefined;
- }
-
- content.push(
- nodeToCustomInlineContent(node, inlineContentSchema, styleSchema),
- );
+ if (node.type.name === "text") {
+ const { styles, href } = extractMarks(node, styleSchema);
+ records.push({ kind: "text", text: node.textContent, styles, href });
+ return;
+ }
+ // Custom inline content node
+ if (!inlineContentSchema[node.type.name]) {
+ // eslint-disable-next-line no-console
+ console.warn("unrecognized inline content type", node.type.name);
return;
}
+ records.push({ kind: "custom", node });
+ });
- const styles: Styles = {};
- let linkMark: Mark | undefined;
+ // Pass 2: Merge consecutive text records into StyledText / Link
+ const content: InlineContent[] = [];
- for (const mark of node.marks) {
- if (mark.type.name === "link") {
- linkMark = mark;
- } else {
- const config = styleSchema[mark.type.name];
- if (!config) {
- if (mark.type.spec.blocknoteIgnore) {
- // at this point, we don't want to show certain marks (such as comments)
- // in the BlockNote JSON output. These marks should be tagged with "blocknoteIgnore" in the spec
- continue;
- }
- throw new Error(`style ${mark.type.name} not found in styleSchema`);
- }
- if (config.propSchema === "boolean") {
- (styles as any)[config.type] = true;
- } else if (config.propSchema === "string") {
- (styles as any)[config.type] = mark.attrs.stringValue;
- } else {
- throw new UnreachableCaseError(config.propSchema);
- }
- }
+ for (const record of records) {
+ if (record.kind === "custom") {
+ content.push(
+ nodeToCustomInlineContent(record.node, inlineContentSchema, styleSchema),
+ );
+ continue;
}
- // Parsing links and text.
- // Current content exists.
- if (currentContent) {
- // Current content is text.
- if (isStyledTextInlineContent(currentContent)) {
- if (!linkMark) {
- // Node is text (same type as current content).
- if (
- JSON.stringify(currentContent.styles) === JSON.stringify(styles)
- ) {
- // Styles are the same.
- currentContent.text += node.textContent;
- } else {
- // Styles are different.
- content.push(currentContent);
- currentContent = {
- type: "text",
- text: node.textContent,
- styles,
- };
- }
+ const { text, styles, href } = record;
+ const stylesKey = JSON.stringify(styles);
+ const last = content[content.length - 1];
+
+ if (href !== undefined) {
+ // This text belongs to a link
+ if (
+ last &&
+ isLinkInlineContent(last) &&
+ last.href === href
+ ) {
+ // Same link — try to merge with the last StyledText inside it
+ const lastChild = last.content[last.content.length - 1];
+ if (JSON.stringify(lastChild.styles) === stylesKey) {
+ lastChild.text += text;
} else {
- // Node is a link (different type to current content).
- content.push(currentContent);
- currentContent = {
- type: "link",
- href: linkMark.attrs.href,
- content: [
- {
- type: "text",
- text: node.textContent,
- styles,
- },
- ],
- };
- }
- } else if (isLinkInlineContent(currentContent)) {
- // Current content is a link.
- if (linkMark) {
- // Node is a link (same type as current content).
- // Link URLs are the same.
- if (currentContent.href === linkMark.attrs.href) {
- // Styles are the same.
- if (
- JSON.stringify(
- currentContent.content[currentContent.content.length - 1]
- .styles,
- ) === JSON.stringify(styles)
- ) {
- currentContent.content[currentContent.content.length - 1].text +=
- node.textContent;
- } else {
- // Styles are different.
- currentContent.content.push({
- type: "text",
- text: node.textContent,
- styles,
- });
- }
- } else {
- // Link URLs are different.
- content.push(currentContent);
- currentContent = {
- type: "link",
- href: linkMark.attrs.href,
- content: [
- {
- type: "text",
- text: node.textContent,
- styles,
- },
- ],
- };
- }
- } else {
- // Node is text (different type to current content).
- content.push(currentContent);
- currentContent = {
- type: "text",
- text: node.textContent,
- styles,
- };
+ last.content.push({ type: "text", text, styles });
}
} else {
- // TODO
- }
- }
- // Current content does not exist.
- else {
- // Node is text.
- if (!linkMark) {
- currentContent = {
- type: "text",
- text: node.textContent,
- styles,
- };
- }
- // Node is a link.
- else {
- currentContent = {
+ // New link
+ content.push({
type: "link",
- href: linkMark.attrs.href,
- content: [
- {
- type: "text",
- text: node.textContent,
- styles,
- },
- ],
- };
+ href,
+ content: [{ type: "text", text, styles }],
+ });
+ }
+ } else {
+ // Plain text
+ if (
+ last &&
+ isStyledTextInlineContent(last) &&
+ JSON.stringify(last.styles) === stylesKey
+ ) {
+ last.text += text;
+ } else {
+ content.push({ type: "text", text, styles });
}
}
- });
-
- if (currentContent) {
- content.push(currentContent);
}
return content as InlineContent[];
diff --git a/packages/core/src/editor/BlockNoteEditor.ts b/packages/core/src/editor/BlockNoteEditor.ts
index 51c54be196..bc3622a529 100644
--- a/packages/core/src/editor/BlockNoteEditor.ts
+++ b/packages/core/src/editor/BlockNoteEditor.ts
@@ -1135,6 +1135,32 @@ export class BlockNoteEditor<
this._styleManager.createLink(url, text);
}
+ /**
+ * Find the link mark and its range at the given position.
+ * Returns undefined if there is no link at that position.
+ */
+ public getLinkMarkAtPos(pos: number) {
+ return this._styleManager.getLinkMarkAtPos(pos);
+ }
+
+ /**
+ * Updates the link at the given position with a new URL and text.
+ * @param url The new link URL.
+ * @param text The new text to display.
+ * @param position The position inside the link to edit. Defaults to the current selection anchor.
+ */
+ public editLink(url: string, text: string, position?: number) {
+ this._styleManager.editLink(url, text, position);
+ }
+
+ /**
+ * Removes the link at the given position, keeping the text.
+ * @param position The position inside the link to remove. Defaults to the current selection anchor.
+ */
+ public deleteLink(position?: number) {
+ this._styleManager.deleteLink(position);
+ }
+
/**
* Checks if the block containing the text cursor can be nested.
*/
diff --git a/packages/core/src/editor/managers/StyleManager.ts b/packages/core/src/editor/managers/StyleManager.ts
index e8ffa99881..6f5c37d462 100644
--- a/packages/core/src/editor/managers/StyleManager.ts
+++ b/packages/core/src/editor/managers/StyleManager.ts
@@ -1,3 +1,4 @@
+import { getMarkRange } from "@tiptap/core";
import { insertContentAt } from "../../api/blockManipulation/insertContentAt.js";
import { inlineContentToNodes } from "../../api/nodeConversions/blockToNode.js";
import {
@@ -12,7 +13,6 @@ import {
DefaultInlineContentSchema,
DefaultStyleSchema,
} from "../../blocks/defaultBlocks.js";
-import { TextSelection } from "@tiptap/pm/state";
import { UnreachableCaseError } from "../../util/typescript.js";
import { BlockNoteEditor } from "../BlockNoteEditor.js";
@@ -146,13 +146,42 @@ export class StyleManager<
});
}
+ /**
+ * Find the link mark and its range at the given position.
+ * Returns undefined if there is no link at that position.
+ */
+ public getLinkMarkAtPos(pos: number) {
+ return this.editor.transact((tr) => {
+ const resolvedPos = tr.doc.resolve(pos);
+ const linkMark = resolvedPos
+ .marks()
+ .find((mark) => mark.type.name === "link");
+
+ if (!linkMark) {
+ return undefined;
+ }
+
+ const range = getMarkRange(resolvedPos, linkMark.type);
+ if (!range) {
+ return undefined;
+ }
+
+ return {
+ href: linkMark.attrs.href as string,
+ from: range.from,
+ to: range.to,
+ text: tr.doc.textBetween(range.from, range.to),
+ };
+ });
+ }
+
/**
* Gets the URL of the last link in the current selection, or `undefined` if there are no links in the selection.
*/
public getSelectedLinkUrl() {
- return this.editor._tiptapEditor.getAttributes("link").href as
- | string
- | undefined;
+ return this.editor.transact((tr) => {
+ return this.getLinkMarkAtPos(tr.selection.from)?.href;
+ });
}
/**
@@ -164,24 +193,66 @@ export class StyleManager<
if (url === "") {
return;
}
- const mark = this.editor.pmSchema.mark("link", { href: url });
+
this.editor.transact((tr) => {
const { from, to } = tr.selection;
+ const linkMark = this.editor.pmSchema.mark("link", { href: url });
if (text) {
- const existingText = tr.doc.textBetween(from, to);
- if (text !== existingText) {
- tr.insertText(text, from, to);
- }
-
- tr.addMark(from, from + text.length, mark);
- } else {
- tr.setSelection(TextSelection.create(tr.doc, to)).addMark(
+ tr.insertText(text, from, to).addMark(
from,
- to,
- mark,
+ from + text.length,
+ linkMark,
);
+ } else {
+ tr.addMark(from, to, linkMark);
}
});
}
+
+ /**
+ * Updates the link at the given position with a new URL and text.
+ * @param url The new link URL.
+ * @param text The new text to display.
+ * @param position The position inside the link to edit. Defaults to the current selection anchor.
+ */
+ public editLink(
+ url: string,
+ text: string,
+ position = this.editor.transact((tr) => tr.selection.anchor),
+ ) {
+ this.editor.transact((tr) => {
+ const linkData = this.getLinkMarkAtPos(position + 1);
+ const { from, to } = linkData || {
+ from: tr.selection.from,
+ to: tr.selection.to,
+ };
+
+ const linkMark = this.editor.pmSchema.mark("link", { href: url });
+ tr.insertText(text, from, to).addMark(from, from + text.length, linkMark);
+ });
+ this.editor.prosemirrorView.focus();
+ }
+
+ /**
+ * Removes the link at the given position, keeping the text.
+ * @param position The position inside the link to remove. Defaults to the current selection anchor.
+ */
+ public deleteLink(
+ position = this.editor.transact((tr) => tr.selection.anchor),
+ ) {
+ this.editor.transact((tr) => {
+ const linkData = this.getLinkMarkAtPos(position + 1);
+ const { from, to } = linkData || {
+ from: tr.selection.from,
+ to: tr.selection.to,
+ };
+
+ tr.removeMark(from, to, this.editor.pmSchema.marks["link"]).setMeta(
+ "preventAutolink",
+ true,
+ );
+ });
+ this.editor.prosemirrorView.focus();
+ }
}
diff --git a/packages/core/src/extensions/LinkToolbar/LinkToolbar.ts b/packages/core/src/extensions/LinkToolbar/LinkToolbar.ts
index f190bc97e6..a4377ab599 100644
--- a/packages/core/src/extensions/LinkToolbar/LinkToolbar.ts
+++ b/packages/core/src/extensions/LinkToolbar/LinkToolbar.ts
@@ -1,5 +1,4 @@
-import { getMarkRange, posToDOMRect } from "@tiptap/core";
-import { getPmSchema } from "../../api/pmUtil.js";
+import { posToDOMRect } from "@tiptap/core";
import { createExtension } from "../../editor/BlockNoteExtension.js";
export const LinkToolbarExtension = createExtension(({ editor }) => {
@@ -14,47 +13,35 @@ export const LinkToolbarExtension = createExtension(({ editor }) => {
return null;
}
- function getMarkAtPos(pos: number, markType: string) {
- return editor.transact((tr) => {
- const resolvedPos = tr.doc.resolve(pos);
- const mark = resolvedPos
- .marks()
- .find((mark) => mark.type.name === markType);
-
- if (!mark) {
- return;
- }
-
- const markRange = getMarkRange(resolvedPos, mark.type);
- if (!markRange) {
- return;
- }
+ function getLinkAtPos(pos: number) {
+ const linkData = editor.getLinkMarkAtPos(pos);
+ if (!linkData) {
+ return undefined;
+ }
- return {
- range: markRange,
- mark,
- get text() {
- return tr.doc.textBetween(markRange.from, markRange.to);
- },
- get position() {
- // to minimize re-renders, we convert to JSON, which is the same shape anyway
- return posToDOMRect(
- editor.prosemirrorView,
- markRange.from,
- markRange.to,
- ).toJSON() as DOMRect;
- },
- };
- });
+ return {
+ range: { from: linkData.from, to: linkData.to },
+ // Expose mark-like attrs for backward compat with React LinkToolbarController
+ mark: { attrs: { href: linkData.href } },
+ get text() {
+ return linkData.text;
+ },
+ get position() {
+ return posToDOMRect(
+ editor.prosemirrorView,
+ linkData.from,
+ linkData.to,
+ ).toJSON() as DOMRect;
+ },
+ };
}
function getLinkAtSelection() {
return editor.transact((tr) => {
- const selection = tr.selection;
- if (!selection.empty) {
+ if (!tr.selection.empty) {
return undefined;
}
- return getMarkAtPos(selection.anchor, "link");
+ return getLinkAtPos(tr.selection.anchor);
});
}
@@ -63,12 +50,14 @@ export const LinkToolbarExtension = createExtension(({ editor }) => {
getLinkAtSelection,
getLinkElementAtPos,
- getMarkAtPos,
+ getMarkAtPos(pos: number, _markType: string) {
+ return getLinkAtPos(pos);
+ },
getLinkAtElement(element: HTMLElement) {
return editor.transact(() => {
const posAtElement = editor.prosemirrorView.posAtDOM(element, 0) + 1;
- return getMarkAtPos(posAtElement, "link");
+ return getLinkAtPos(posAtElement);
});
},
@@ -77,50 +66,11 @@ export const LinkToolbarExtension = createExtension(({ editor }) => {
text: string,
position = editor.transact((tr) => tr.selection.anchor),
) {
- editor.transact((tr) => {
- const pmSchema = getPmSchema(tr);
- const { range } = getMarkAtPos(position + 1, "link") || {
- range: {
- from: tr.selection.from,
- to: tr.selection.to,
- },
- };
- if (!range) {
- return;
- }
-
- const existingText = tr.doc.textBetween(range.from, range.to);
- if (text !== existingText) {
- tr.insertText(text, range.from, range.to);
- }
-
- tr.addMark(
- range.from,
- range.from + text.length,
- pmSchema.mark("link", { href: url }),
- );
- });
- editor.prosemirrorView.focus();
+ editor.editLink(url, text, position);
},
- deleteLink(position = editor.transact((tr) => tr.selection.anchor)) {
- editor.transact((tr) => {
- const pmSchema = getPmSchema(tr);
- const { range } = getMarkAtPos(position + 1, "link") || {
- range: {
- from: tr.selection.from,
- to: tr.selection.to,
- },
- };
- if (!range) {
- return;
- }
- tr.removeMark(range.from, range.to, pmSchema.marks["link"]).setMeta(
- "preventAutolink",
- true,
- );
- });
- editor.prosemirrorView.focus();
+ deleteLink(position = editor.transact((tr) => tr.selection.anchor)) {
+ editor.deleteLink(position);
},
} as const;
});
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/link.ts b/packages/core/src/extensions/tiptap-extensions/Link/link.ts
index 15783a12f9..d83d91d475 100644
--- a/packages/core/src/extensions/tiptap-extensions/Link/link.ts
+++ b/packages/core/src/extensions/tiptap-extensions/Link/link.ts
@@ -14,16 +14,6 @@ const HTML_ATTRIBUTES = {
rel: "noopener noreferrer nofollow",
};
-declare module "@tiptap/core" {
- interface Commands {
- link: {
- setLink: (attributes: { href: string }) => ReturnType;
- toggleLink: (attributes?: { href: string }) => ReturnType;
- unsetLink: () => ReturnType;
- };
- }
-}
-
// Pre-compiled regex for URI protocol validation.
// Allows: http, https, ftp, ftps, mailto, tel, callto, sms, cid, xmpp
const ALLOWED_URI_REGEX =
@@ -121,45 +111,6 @@ export const Link = Mark.create({
return ["a", mergeAttributes(HTML_ATTRIBUTES, HTMLAttributes), 0];
},
- addCommands() {
- return {
- setLink:
- (attributes) =>
- ({ chain }) => {
- if (!isAllowedUri(attributes.href)) {
- return false;
- }
-
- return chain()
- .setMark(this.name, attributes)
- .setMeta("preventAutolink", true)
- .run();
- },
-
- toggleLink:
- (attributes) =>
- ({ chain }) => {
- if (attributes?.href && !isAllowedUri(attributes.href)) {
- return false;
- }
-
- return chain()
- .toggleMark(this.name, attributes, { extendEmptyMarkRange: true })
- .setMeta("preventAutolink", true)
- .run();
- },
-
- unsetLink:
- () =>
- ({ chain }) => {
- return chain()
- .unsetMark(this.name, { extendEmptyMarkRange: true })
- .setMeta("preventAutolink", true)
- .run();
- },
- };
- },
-
addPasteRules() {
return [
markPasteRule({
diff --git a/packages/xl-ai/src/prosemirror/__snapshots__/agent.test.ts.snap b/packages/xl-ai/src/prosemirror/__snapshots__/agent.test.ts.snap
index e4244ca453..426acde29f 100644
--- a/packages/xl-ai/src/prosemirror/__snapshots__/agent.test.ts.snap
+++ b/packages/xl-ai/src/prosemirror/__snapshots__/agent.test.ts.snap
@@ -9,29 +9,29 @@ exports[`agentStepToTr > Update > clear block formatting 1`] = `
exports[`agentStepToTr > Update > drop mark and link 1`] = `
[
- "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}},{"type":"deletion","attrs":{"id":null}}],"text":"Link."},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Link."}]}]}]}]}",
+ "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}},{"type":"deletion","attrs":{"id":null}}],"text":"Link."},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Link."}]}]}]}]}",
]
`;
exports[`agentStepToTr > Update > drop mark and link and change text within mark 1`] = `
[
- "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"H"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold "},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold t"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold th"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}},{"type":"deletion","attrs":{"id":null}}],"text":"Link."},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Link."}]}]}]}]}",
+ "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"H"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold "},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold t"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold th"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}},{"type":"deletion","attrs":{"id":null}}],"text":"Link."},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Link."}]}]}]}]}",
]
`;
@@ -73,128 +73,128 @@ exports[`agentStepToTr > Update > modify parent content 1`] = `
exports[`agentStepToTr > Update > plain source block, add mention 1`] = `
[
- "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"mention","attrs":{"user":"Jane Doe"},"marks":[{"type":"insertion","attrs":{"id":null}}]},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
+ "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"mention","attrs":{"user":"Jane Doe"},"marks":[{"type":"insertion","attrs":{"id":null}}]},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
]
`;
exports[`agentStepToTr > Update > standard update 1`] = `
[
- "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"W"},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"We"},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wel"},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Welt"},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
+ "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"W"},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"We"},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wel"},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Welt"},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
]
`;
exports[`agentStepToTr > Update > styles + ic in source block, remove mark 1`] = `
[
- "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
+ "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
]
`;
exports[`agentStepToTr > Update > styles + ic in source block, remove mention 1`] = `
[
- "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":", "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
+ "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":", "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
]
`;
exports[`agentStepToTr > Update > styles + ic in source block, replace content 1`] = `
[
- "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"u"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"up"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"upd"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"upda"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updat"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"update"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated "}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated c"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated co"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated con"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated cont"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated conte"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated conten"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated content"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
+ "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"u"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"up"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"upd"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"upda"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updat"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"update"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated "}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated c"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated co"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated con"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated cont"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated conte"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated conten"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated content"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
]
`;
exports[`agentStepToTr > Update > styles + ic in source block, update mention prop 1`] = `
[
- "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"mention","attrs":{"user":"Jane Doe"},"marks":[{"type":"insertion","attrs":{"id":null}}]},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
+ "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"mention","attrs":{"user":"Jane Doe"},"marks":[{"type":"insertion","attrs":{"id":null}}]},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
]
`;
exports[`agentStepToTr > Update > styles + ic in source block, update text 1`] = `
[
- "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"W"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wi"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie g"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie ge"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geh"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht e"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es d"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es di"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"D"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Di"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Die"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dies"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Diese"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser T"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Te"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Tex"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"i"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"is"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist b"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist bl"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist bla"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist blau"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
+ "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"W"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wi"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie g"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie ge"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geh"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht e"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es d"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es di"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"D"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Di"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Die"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dies"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Diese"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser T"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Te"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Tex"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"i"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"is"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist b"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist bl"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist bla"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist blau"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
]
`;
exports[`agentStepToTr > Update > styles + ic in target block, add mark (paragraph) 1`] = `
[
- "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello, world!"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
+ "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello, world!"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
]
`;
exports[`agentStepToTr > Update > styles + ic in target block, add mark (word) 1`] = `
[
- "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world!"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
+ "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world!"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
]
`;
exports[`agentStepToTr > Update > translate selection 1`] = `
[
- "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
+ "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
]
`;
@@ -207,45 +207,45 @@ exports[`agentStepToTr > Update > turn paragraphs into list 1`] = `
exports[`agentStepToTr > Update > update block prop 1`] = `
[
- "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
+ "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
]
`;
exports[`agentStepToTr > Update > update block prop and content 1`] = `
[
- "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"W"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wh"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wha"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What'"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's "},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's u"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's up"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
+ "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"W"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wh"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wha"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What'"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's "},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's u"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's up"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
]
`;
exports[`agentStepToTr > Update > update block type 1`] = `
[
- "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
+ "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
]
`;
exports[`agentStepToTr > Update > update block type and content 1`] = `
[
- "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"W"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wh"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wha"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What'"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's "},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's u"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
- "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's up"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}",
+ "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"W"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wh"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wha"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What'"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's "},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's u"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
+ "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's up"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}",
]
`;
diff --git a/packages/xl-ai/src/prosemirror/__snapshots__/changeset.test.ts.snap b/packages/xl-ai/src/prosemirror/__snapshots__/changeset.test.ts.snap
index a2f632d849..2e6d6ea8f4 100644
--- a/packages/xl-ai/src/prosemirror/__snapshots__/changeset.test.ts.snap
+++ b/packages/xl-ai/src/prosemirror/__snapshots__/changeset.test.ts.snap
@@ -115,7 +115,6 @@ exports[`drop mark and link 1`] = `
"marks": [
{
"attrs": {
- "class": null,
"href": "https://www.google.com",
"rel": "noopener noreferrer nofollow",
"target": "_blank",
@@ -249,7 +248,6 @@ exports[`drop mark and link and change text within mark 1`] = `
"marks": [
{
"attrs": {
- "class": null,
"href": "https://www.google.com",
"rel": "noopener noreferrer nofollow",
"target": "_blank",
diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/hardbreak/between-links.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/hardbreak/between-links.json
index 174eeecd5b..ec5babf930 100644
--- a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/hardbreak/between-links.json
+++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/hardbreak/between-links.json
@@ -15,7 +15,6 @@
"marks": [
{
"attrs": {
- "class": null,
"href": "https://www.website.com",
"rel": "noopener noreferrer nofollow",
"target": "_blank",
@@ -33,7 +32,6 @@
"marks": [
{
"attrs": {
- "class": null,
"href": "https://www.website2.com",
"rel": "noopener noreferrer nofollow",
"target": "_blank",
diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/hardbreak/link.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/hardbreak/link.json
index 4ae3cc342b..33be9006e7 100644
--- a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/hardbreak/link.json
+++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/hardbreak/link.json
@@ -15,7 +15,6 @@
"marks": [
{
"attrs": {
- "class": null,
"href": "https://www.website.com",
"rel": "noopener noreferrer nofollow",
"target": "_blank",
@@ -33,7 +32,6 @@
"marks": [
{
"attrs": {
- "class": null,
"href": "https://www.website.com",
"rel": "noopener noreferrer nofollow",
"target": "_blank",
diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/adjacent.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/adjacent.json
index d546271743..928b37b152 100644
--- a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/adjacent.json
+++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/adjacent.json
@@ -15,7 +15,6 @@
"marks": [
{
"attrs": {
- "class": null,
"href": "https://www.website.com",
"rel": "noopener noreferrer nofollow",
"target": "_blank",
@@ -30,7 +29,6 @@
"marks": [
{
"attrs": {
- "class": null,
"href": "https://www.website2.com",
"rel": "noopener noreferrer nofollow",
"target": "_blank",
diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/basic.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/basic.json
index 3964520c13..f2bc979545 100644
--- a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/basic.json
+++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/basic.json
@@ -15,7 +15,6 @@
"marks": [
{
"attrs": {
- "class": null,
"href": "https://www.website.com",
"rel": "noopener noreferrer nofollow",
"target": "_blank",
diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/styled.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/styled.json
index 84c3a57c95..e55e628ec4 100644
--- a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/styled.json
+++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/styled.json
@@ -18,7 +18,6 @@
},
{
"attrs": {
- "class": null,
"href": "https://www.website.com",
"rel": "noopener noreferrer nofollow",
"target": "_blank",
@@ -33,7 +32,6 @@
"marks": [
{
"attrs": {
- "class": null,
"href": "https://www.website.com",
"rel": "noopener noreferrer nofollow",
"target": "_blank",
From 421cff59952f07aef63988fd9bc85564f7bb5b43 Mon Sep 17 00:00:00 2001
From: Nick the Sick
Date: Fri, 3 Apr 2026 15:17:59 +0200
Subject: [PATCH 04/15] fix: resolve lint errors in Link extension files
- Fix no-useless-escape warnings in linkDetector.ts regex patterns
- Fix curly brace requirements in linkDetector.ts and link.ts
- Fix prefer-const in linkDetector.ts
- Replace require() with ES imports in link.test.ts
- Fix jest/no-conditional-expect by using view.someProp for paste tests
Co-Authored-By: Claude Opus 4.6 (1M context)
---
.../Link/helpers/linkDetector.ts | 36 +++++---
.../tiptap-extensions/Link/link.test.ts | 92 +++++++------------
.../extensions/tiptap-extensions/Link/link.ts | 4 +-
3 files changed, 59 insertions(+), 73 deletions(-)
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/helpers/linkDetector.ts b/packages/core/src/extensions/tiptap-extensions/Link/helpers/linkDetector.ts
index d0e56e31e6..72de06415b 100644
--- a/packages/core/src/extensions/tiptap-extensions/Link/helpers/linkDetector.ts
+++ b/packages/core/src/extensions/tiptap-extensions/Link/helpers/linkDetector.ts
@@ -49,12 +49,12 @@ const MAILTO_RE = /mailto:[^\s]+/g;
// Bare email addresses: user@domain.tld
const EMAIL_RE =
- /[a-zA-Z0-9._%+\-]+@(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}/g;
+ /[a-zA-Z0-9._%+-]+@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}/g;
// Schemeless URLs: domain.tld with optional port and path
// Hostname: one or more labels separated by dots, TLD is alpha-only 2+ chars
const SCHEMELESS_RE =
- /(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}(?::\d{1,5})?(?:\/[^\s]*)?/g;
+ /(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}(?::\d{1,5})?(?:\/[^\s]*)?/g;
// ---------------------------------------------------------------------------
// Post-processing helpers
@@ -74,7 +74,9 @@ function trimTrailing(value: string): string {
// Trim trailing punctuation chars
const before = v;
v = v.replace(TRAILING_PUNCT, "");
- if (v !== before) changed = true;
+ if (v !== before) {
+ changed = true;
+ }
// Trim unbalanced closing brackets from the end
for (const [open, close] of [
@@ -100,7 +102,9 @@ function trimTrailing(value: string): string {
function countChar(str: string, ch: string): number {
let count = 0;
for (let i = 0; i < str.length; i++) {
- if (str[i] === ch) count++;
+ if (str[i] === ch) {
+ count++;
+ }
}
return count;
}
@@ -155,7 +159,7 @@ function buildHref(
if (type === "email") {
return "mailto:" + value;
}
- if (/^[a-zA-Z][a-zA-Z0-9+.\-]*:\/\//.test(value) || /^mailto:/i.test(value)) {
+ if (/^[a-zA-Z][a-zA-Z0-9+.-]*:\/\//.test(value) || /^mailto:/i.test(value)) {
// Already has a protocol
return value;
}
@@ -185,7 +189,9 @@ export function findLinks(
text: string,
options?: FindOptions
): LinkMatch[] {
- if (!text) return [];
+ if (!text) {
+ return [];
+ }
const defaultProtocol = options?.defaultProtocol || "http";
const rawMatches: RawMatch[] = [];
@@ -246,22 +252,28 @@ export function findLinks(
// Post-process each match
const results: LinkMatch[] = [];
for (const raw of deduped) {
- let value = trimTrailing(raw.value);
- if (!value) continue;
+ const value = trimTrailing(raw.value);
+ if (!value) {
+ continue;
+ }
const start = raw.start;
const end = start + value.length;
// For schemeless URLs, validate TLD
- if (raw.type === "url" && !/^[a-zA-Z][a-zA-Z0-9+.\-]*:/.test(value)) {
+ if (raw.type === "url" && !/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(value)) {
const hostname = extractHostname(value);
- if (!isValidTld(hostname)) continue;
+ if (!isValidTld(hostname)) {
+ continue;
+ }
}
// For emails, validate TLD
if (raw.type === "email") {
const hostname = value.split("@")[1];
- if (!isValidTld(hostname)) continue;
+ if (!isValidTld(hostname)) {
+ continue;
+ }
}
const href = buildHref(value, raw.type, defaultProtocol);
@@ -359,7 +371,7 @@ function isSingleUrl(text: string): boolean {
// Schemeless URLs: hostname.tld with optional port and path
const schemelessFull =
- /^(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?\.)+([a-zA-Z]{2,})(?::\d{1,5})?(?:\/[^\s]*)?$/;
+ /^(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+([a-zA-Z]{2,})(?::\d{1,5})?(?:\/[^\s]*)?$/;
const match = text.match(schemelessFull);
if (match) {
const tld = match[1].toLowerCase();
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/link.test.ts b/packages/core/src/extensions/tiptap-extensions/Link/link.test.ts
index 221f5c74e1..ea6925eab0 100644
--- a/packages/core/src/extensions/tiptap-extensions/Link/link.test.ts
+++ b/packages/core/src/extensions/tiptap-extensions/Link/link.test.ts
@@ -1,4 +1,6 @@
import { afterEach, describe, expect, it } from "vitest";
+import { TextSelection } from "@tiptap/pm/state";
+import { Slice, Fragment } from "@tiptap/pm/model";
import { BlockNoteEditor } from "../../../editor/BlockNoteEditor.js";
import { findLinks, tokenizeLink } from "./helpers/linkDetector.js";
@@ -733,37 +735,26 @@ describe("Link extension paste handler behavior", () => {
});
// Create selection over the text
- const { TextSelection } = require("@tiptap/pm/state");
const tr = view.state.tr.setSelection(
TextSelection.create(view.state.doc, textStart, textEnd)
);
view.dispatch(tr);
- // Simulate paste via the paste handler plugin
- const pastePlugin = view.state.plugins.find(
- (p) => (p as any).key === "handlePasteLink$"
- );
-
- if (pastePlugin && pastePlugin.props.handlePaste) {
- // Create a minimal slice that looks like pasted URL text
- const { Slice, Fragment } = require("@tiptap/pm/model");
- const textNode = view.state.schema.text("https://example.com");
- const slice = new Slice(Fragment.from(textNode), 0, 0);
+ // Create a minimal slice that looks like pasted URL text
+ const textNode = view.state.schema.text("https://example.com");
+ const slice = new Slice(Fragment.from(textNode), 0, 0);
- const result = (pastePlugin.props.handlePaste as any)(
- view,
- new ClipboardEvent("paste"),
- slice
- );
+ // Dispatch paste through the editor view
+ const handled = view.someProp("handlePaste", (f) =>
+ f(view, new ClipboardEvent("paste"), slice)
+ );
- if (result) {
- // Check that link mark was applied
- const links = getLinksInDocument(editor);
- expect(links).toHaveLength(1);
- expect(links[0].href).toBe("https://example.com");
- expect(links[0].text).toBe("click here");
- }
- }
+ expect(handled).toBeTruthy();
+ // Check that link mark was applied
+ const links = getLinksInDocument(editor);
+ expect(links).toHaveLength(1);
+ expect(links[0].href).toBe("https://example.com");
+ expect(links[0].text).toBe("click here");
});
it("does not apply link when pasting non-URL text over selection", () => {
@@ -789,34 +780,24 @@ describe("Link extension paste handler behavior", () => {
}
});
- const { TextSelection } = require("@tiptap/pm/state");
const tr = view.state.tr.setSelection(
TextSelection.create(view.state.doc, textStart, textEnd)
);
view.dispatch(tr);
- const pastePlugin = view.state.plugins.find(
- (p) => (p as any).key === "handlePasteLink$"
- );
-
- if (pastePlugin && pastePlugin.props.handlePaste) {
- const { Slice, Fragment } = require("@tiptap/pm/model");
- const textNode = view.state.schema.text("not a url");
- const slice = new Slice(Fragment.from(textNode), 0, 0);
+ const textNode = view.state.schema.text("not a url");
+ const slice = new Slice(Fragment.from(textNode), 0, 0);
- const result = (pastePlugin.props.handlePaste as any)(
- view,
- new ClipboardEvent("paste"),
- slice
- );
+ const handled = view.someProp("handlePaste", (f) =>
+ f(view, new ClipboardEvent("paste"), slice)
+ );
- // Should return false (not handled)
- expect(result).toBe(false);
+ // Should not be handled (not a URL)
+ expect(handled).toBeFalsy();
- // No links should exist
- const links = getLinksInDocument(editor);
- expect(links).toHaveLength(0);
- }
+ // No links should exist
+ const links = getLinksInDocument(editor);
+ expect(links).toHaveLength(0);
});
it("does not apply link when pasting URL with empty selection", () => {
@@ -833,23 +814,14 @@ describe("Link extension paste handler behavior", () => {
editor.setTextCursorPosition("test-block", "end");
const view = editor._tiptapEditor.view;
- const pastePlugin = view.state.plugins.find(
- (p) => (p as any).key === "handlePasteLink$"
- );
-
- if (pastePlugin && pastePlugin.props.handlePaste) {
- const { Slice, Fragment } = require("@tiptap/pm/model");
- const textNode = view.state.schema.text("https://example.com");
- const slice = new Slice(Fragment.from(textNode), 0, 0);
+ const textNode = view.state.schema.text("https://example.com");
+ const slice = new Slice(Fragment.from(textNode), 0, 0);
- const result = (pastePlugin.props.handlePaste as any)(
- view,
- new ClipboardEvent("paste"),
- slice
- );
+ const handled = view.someProp("handlePaste", (f) =>
+ f(view, new ClipboardEvent("paste"), slice)
+ );
- // Should return false because selection is empty
- expect(result).toBe(false);
- }
+ // Should not be handled because selection is empty
+ expect(handled).toBeFalsy();
});
});
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/link.ts b/packages/core/src/extensions/tiptap-extensions/Link/link.ts
index d83d91d475..c0c1811d4f 100644
--- a/packages/core/src/extensions/tiptap-extensions/Link/link.ts
+++ b/packages/core/src/extensions/tiptap-extensions/Link/link.ts
@@ -21,7 +21,9 @@ const ALLOWED_URI_REGEX =
/^(?:(?:http|https|ftp|ftps|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z0-9+.\-]+(?:[^a-z+.\-:]|$))/i;
export function isAllowedUri(uri: string | undefined): boolean {
- if (!uri) return true;
+ if (!uri) {
+ return true;
+ }
const cleaned = uri.replace(UNICODE_WHITESPACE_REGEX_GLOBAL, "");
return ALLOWED_URI_REGEX.test(cleaned);
}
From 42dfa8757c808bc33af788e259269b8a27ca3f77 Mon Sep 17 00:00:00 2001
From: Nick the Sick
Date: Fri, 3 Apr 2026 15:25:45 +0200
Subject: [PATCH 05/15] fix: address CodeRabbit review feedback in linkDetector
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- Fix double mailto: prefix for mailto: URLs in linkToken() — values
starting with "mailto:" are now classified as "url" not "email"
- Support schemeless URLs with ? or # suffixes (e.g. example.com?x=1,
example.com#frag) in both SCHEMELESS_RE and isSingleUrl()
Co-Authored-By: Claude Opus 4.6 (1M context)
---
.../tiptap-extensions/Link/helpers/linkDetector.ts | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/helpers/linkDetector.ts b/packages/core/src/extensions/tiptap-extensions/Link/helpers/linkDetector.ts
index 72de06415b..e678a44c50 100644
--- a/packages/core/src/extensions/tiptap-extensions/Link/helpers/linkDetector.ts
+++ b/packages/core/src/extensions/tiptap-extensions/Link/helpers/linkDetector.ts
@@ -54,7 +54,7 @@ const EMAIL_RE =
// Schemeless URLs: domain.tld with optional port and path
// Hostname: one or more labels separated by dots, TLD is alpha-only 2+ chars
const SCHEMELESS_RE =
- /(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}(?::\d{1,5})?(?:\/[^\s]*)?/g;
+ /(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}(?::\d{1,5})?(?:[/?#][^\s]*)?/g;
// ---------------------------------------------------------------------------
// Post-processing helpers
@@ -371,7 +371,7 @@ function isSingleUrl(text: string): boolean {
// Schemeless URLs: hostname.tld with optional port and path
const schemelessFull =
- /^(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+([a-zA-Z]{2,})(?::\d{1,5})?(?:\/[^\s]*)?$/;
+ /^(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+([a-zA-Z]{2,})(?::\d{1,5})?(?:[/?#][^\s]*)?$/;
const match = text.match(schemelessFull);
if (match) {
const tld = match[1].toLowerCase();
@@ -390,7 +390,10 @@ function linkToken(
end: number,
defaultProtocol: string
): LinkMatch {
- const type = value.includes("@") && !value.includes("://") ? "email" : "url";
+ const type =
+ value.includes("@") && !value.includes("://") && !value.startsWith("mailto:")
+ ? "email"
+ : "url";
return {
type,
value,
From 35add49140a59ec846cf6634a16c9abad6b294d1 Mon Sep 17 00:00:00 2001
From: Nick the Sick
Date: Thu, 16 Apr 2026 16:01:06 +0200
Subject: [PATCH 06/15] chore: relax dependency version ranges and add
workspaces config
Move overrides to top-level in package.json, add workspaces field,
and relax pinned versions to use caret ranges for tiptap, AI SDK,
and msw dependencies.
Co-Authored-By: Claude Opus 4.6 (1M context)
---
package.json | 46 ++++++++-----
pnpm-lock.yaml | 174 +++++++++++++++++++++++--------------------------
2 files changed, 111 insertions(+), 109 deletions(-)
diff --git a/package.json b/package.json
index f28cc4977b..3d22036161 100644
--- a/package.json
+++ b/package.json
@@ -33,22 +33,7 @@
"msw",
"nx",
"unrs-resolver"
- ],
- "overrides": {
- "vitest": "4.1.2",
- "@vitest/runner": "4.1.2",
- "msw": "2.11.5",
- "ai": "6.0.5",
- "@ai-sdk/anthropic": "3.0.2",
- "@ai-sdk/openai": "3.0.2",
- "@ai-sdk/groq": "3.0.2",
- "@ai-sdk/google": "3.0.2",
- "@ai-sdk/mistral": "3.0.2",
- "@ai-sdk/openai-compatible": "2.0.2",
- "@ai-sdk/provider-utils": "4.0.2",
- "@ai-sdk/react": "3.0.5",
- "@ai-sdk/gateway": "3.0.4"
- }
+ ]
},
"packageManager": "pnpm@10.23.0+sha512.21c4e5698002ade97e4efe8b8b4a89a8de3c85a37919f957e7a0f30f38fbc5bbdd05980ffe29179b2fb6e6e691242e098d945d1601772cad0fef5fb6411e2a4b",
"private": true,
@@ -71,5 +56,32 @@
"start": "serve playground/dist -c ../serve.json",
"test": "nx run-many --target=test",
"format": "prettier --write \"**/*.{js,jsx,ts,tsx,css,scss,md}\""
- }
+ },
+ "overrides": {
+ "vitest": "4.1.2",
+ "@vitest/runner": "4.1.2",
+ "msw": "2.11.5",
+ "ai": "6.0.5",
+ "@ai-sdk/anthropic": "3.0.2",
+ "@ai-sdk/openai": "3.0.2",
+ "@ai-sdk/groq": "3.0.2",
+ "@ai-sdk/google": "3.0.2",
+ "@ai-sdk/mistral": "3.0.2",
+ "@ai-sdk/openai-compatible": "2.0.2",
+ "@ai-sdk/provider-utils": "4.0.2",
+ "@ai-sdk/react": "3.0.5",
+ "@ai-sdk/gateway": "3.0.4",
+ "@headlessui/react": "^2.2.4",
+ "@tiptap/core": "^3.0.0",
+ "@tiptap/pm": "^3.0.0"
+ },
+ "workspaces": [
+ "packages/*",
+ "examples/*/*",
+ "playground",
+ "fumadocs",
+ "docs",
+ "shared",
+ "tests"
+ ]
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 793f637a20..b5f7933aa7 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -5,19 +5,9 @@ settings:
excludeLinksFromLockfile: false
overrides:
- vitest: 4.1.2
- '@vitest/runner': 4.1.2
- msw: 2.11.5
- ai: 6.0.5
- '@ai-sdk/anthropic': 3.0.2
- '@ai-sdk/openai': 3.0.2
- '@ai-sdk/groq': 3.0.2
- '@ai-sdk/google': 3.0.2
- '@ai-sdk/mistral': 3.0.2
- '@ai-sdk/openai-compatible': 2.0.2
- '@ai-sdk/provider-utils': 4.0.2
- '@ai-sdk/react': 3.0.5
- '@ai-sdk/gateway': 3.0.4
+ '@headlessui/react': ^2.2.4
+ '@tiptap/core': ^3.0.0
+ '@tiptap/pm': ^3.0.0
importers:
@@ -63,7 +53,7 @@ importers:
specifier: ^5.9.3
version: 5.9.3
vitest:
- specifier: 4.1.2
+ specifier: ^4.1.2
version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
wait-on:
specifier: 9.0.5
@@ -72,7 +62,7 @@ importers:
docs:
dependencies:
'@ai-sdk/groq':
- specifier: 3.0.2
+ specifier: ^3.0.2
version: 3.0.2(zod@4.3.6)
'@aws-sdk/client-s3':
specifier: ^3.609.0
@@ -195,7 +185,7 @@ importers:
specifier: ^4
version: 4.0.2
'@tiptap/core':
- specifier: ^3.13.0
+ specifier: ^3.0.0
version: 3.22.1(@tiptap/pm@3.22.1)
'@uppy/core':
specifier: ^3.13.1
@@ -237,7 +227,7 @@ importers:
specifier: ^0.6.3
version: 0.6.4(react@19.2.5)(yjs@13.6.30)
ai:
- specifier: 6.0.5
+ specifier: ^6.0.5
version: 6.0.5(zod@4.3.6)
better-auth:
specifier: ~1.4.15
@@ -4082,7 +4072,7 @@ importers:
specifier: ^6.0.22
version: 6.0.22(react@19.2.4)
'@tiptap/core':
- specifier: ^3.13.0
+ specifier: ^3.0.0
version: 3.22.1(@tiptap/pm@3.22.1)
react:
specifier: ^19.2.3
@@ -4134,7 +4124,7 @@ importers:
specifier: ^6.0.22
version: 6.0.22(react@19.2.4)
ai:
- specifier: 6.0.5
+ specifier: ^6.0.5
version: 6.0.5(zod@4.3.6)
react:
specifier: ^19.2.3
@@ -4186,7 +4176,7 @@ importers:
specifier: ^6.0.22
version: 6.0.22(react@19.2.4)
ai:
- specifier: 6.0.5
+ specifier: ^6.0.5
version: 6.0.5(zod@4.3.6)
react:
specifier: ^19.2.3
@@ -4238,7 +4228,7 @@ importers:
specifier: ^6.0.22
version: 6.0.22(react@19.2.4)
ai:
- specifier: 6.0.5
+ specifier: ^6.0.5
version: 6.0.5(zod@4.3.6)
react:
specifier: ^19.2.3
@@ -4293,7 +4283,7 @@ importers:
specifier: ^6.0.22
version: 6.0.22(react@19.2.4)
ai:
- specifier: 6.0.5
+ specifier: ^6.0.5
version: 6.0.5(zod@4.3.6)
react:
specifier: ^19.2.3
@@ -4351,7 +4341,7 @@ importers:
specifier: ^6.0.22
version: 6.0.22(react@19.2.4)
ai:
- specifier: 6.0.5
+ specifier: ^6.0.5
version: 6.0.5(zod@4.3.6)
react:
specifier: ^19.2.3
@@ -4382,7 +4372,7 @@ importers:
examples/09-ai/06-client-side-transport:
dependencies:
'@ai-sdk/groq':
- specifier: 3.0.2
+ specifier: ^3.0.2
version: 3.0.2(zod@4.3.6)
'@blocknote/ariakit':
specifier: latest
@@ -4412,7 +4402,7 @@ importers:
specifier: ^6.0.22
version: 6.0.22(react@19.2.4)
ai:
- specifier: 6.0.5
+ specifier: ^6.0.5
version: 6.0.5(zod@4.3.6)
react:
specifier: ^19.2.3
@@ -4464,7 +4454,7 @@ importers:
specifier: ^6.0.22
version: 6.0.22(react@19.2.4)
ai:
- specifier: 6.0.5
+ specifier: ^6.0.5
version: 6.0.5(zod@4.3.6)
react:
specifier: ^19.2.3
@@ -4710,7 +4700,7 @@ importers:
specifier: ^1.8.1
version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
vitest:
- specifier: 4.1.2
+ specifier: ^4.1.2
version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
packages/core:
@@ -4728,7 +4718,7 @@ importers:
specifier: ^0.7.7
version: 0.7.7
'@tiptap/core':
- specifier: ^3.13.0
+ specifier: ^3.0.0
version: 3.22.1(@tiptap/pm@3.22.1)
'@tiptap/extension-bold':
specifier: ^3.13.0
@@ -4758,7 +4748,7 @@ importers:
specifier: ^3.13.0
version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)
'@tiptap/pm':
- specifier: ^3.13.0
+ specifier: ^3.0.0
version: 3.22.1
emoji-mart:
specifier: ^5.6.0
@@ -4855,7 +4845,7 @@ importers:
specifier: ^1.8.1
version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
vitest:
- specifier: 4.1.2
+ specifier: ^4.1.2
version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
packages/dev-scripts:
@@ -4968,10 +4958,10 @@ importers:
specifier: 0.7.7
version: 0.7.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@tiptap/core':
- specifier: ^3.13.0
+ specifier: ^3.0.0
version: 3.22.1(@tiptap/pm@3.22.1)
'@tiptap/pm':
- specifier: ^3.13.0
+ specifier: ^3.0.0
version: 3.22.1
'@tiptap/react':
specifier: ^3.13.0
@@ -5041,7 +5031,7 @@ importers:
specifier: ^0.10.0
version: 0.10.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
vitest:
- specifier: 4.1.2
+ specifier: ^4.1.2
version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
packages/server-util:
@@ -5053,10 +5043,10 @@ importers:
specifier: 0.48.1
version: link:../react
'@tiptap/core':
- specifier: ^3.13.0
+ specifier: ^3.0.0
version: 3.22.1(@tiptap/pm@3.22.1)
'@tiptap/pm':
- specifier: ^3.13.0
+ specifier: ^3.0.0
version: 3.22.1
jsdom:
specifier: ^25.0.1
@@ -5102,7 +5092,7 @@ importers:
specifier: ^1.8.1
version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
vitest:
- specifier: 4.1.2
+ specifier: ^4.1.2
version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
packages/shadcn:
@@ -5208,10 +5198,10 @@ importers:
packages/xl-ai:
dependencies:
'@ai-sdk/provider-utils':
- specifier: 4.0.2
+ specifier: ^4.0.2
version: 4.0.2(zod@4.3.6)
'@ai-sdk/react':
- specifier: 3.0.5
+ specifier: ^3.0.5
version: 3.0.5(react@19.2.5)(zod@4.3.6)
'@blocknote/core':
specifier: 0.48.1
@@ -5229,10 +5219,10 @@ importers:
specifier: ^0.1.8
version: 0.1.8(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-transform@1.12.0)(prosemirror-view@1.41.8)
'@tiptap/core':
- specifier: ^3.13.0
+ specifier: ^3.0.0
version: 3.22.1(@tiptap/pm@3.22.1)
ai:
- specifier: 6.0.5
+ specifier: ^6.0.5
version: 6.0.5(zod@4.3.6)
lodash.isequal:
specifier: ^4.5.0
@@ -5281,22 +5271,22 @@ importers:
version: 1.3.7(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)
devDependencies:
'@ai-sdk/anthropic':
- specifier: 3.0.2
+ specifier: ^3.0.2
version: 3.0.2(zod@4.3.6)
'@ai-sdk/google':
- specifier: 3.0.2
+ specifier: ^3.0.2
version: 3.0.2(zod@4.3.6)
'@ai-sdk/groq':
- specifier: 3.0.2
+ specifier: ^3.0.2
version: 3.0.2(zod@4.3.6)
'@ai-sdk/mistral':
- specifier: 3.0.2
+ specifier: ^3.0.2
version: 3.0.2(zod@4.3.6)
'@ai-sdk/openai':
- specifier: 3.0.2
+ specifier: ^3.0.2
version: 3.0.2(zod@4.3.6)
'@ai-sdk/openai-compatible':
- specifier: 2.0.2
+ specifier: ^2.0.2
version: 2.0.2(zod@4.3.6)
'@mswjs/interceptors':
specifier: ^0.37.6
@@ -5326,7 +5316,7 @@ importers:
specifier: ^6.0.1
version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
'@vitest/runner':
- specifier: 4.1.2
+ specifier: ^4.1.2
version: 4.1.2
eslint:
specifier: ^8.57.1
@@ -5338,7 +5328,7 @@ importers:
specifier: ^4.0.3
version: 4.0.3
msw:
- specifier: 2.11.5
+ specifier: ^2.11.5
version: 2.11.5(@types/node@25.6.0)(typescript@5.9.3)
msw-snapshot:
specifier: ^5.3.0
@@ -5365,28 +5355,28 @@ importers:
specifier: ^0.10.0
version: 0.10.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
vitest:
- specifier: 4.1.2
+ specifier: ^4.1.2
version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
packages/xl-ai-server:
dependencies:
'@ai-sdk/anthropic':
- specifier: 3.0.2
+ specifier: ^3.0.2
version: 3.0.2(zod@4.3.6)
'@ai-sdk/google':
- specifier: 3.0.2
+ specifier: ^3.0.2
version: 3.0.2(zod@4.3.6)
'@ai-sdk/groq':
- specifier: 3.0.2
+ specifier: ^3.0.2
version: 3.0.2(zod@4.3.6)
'@ai-sdk/mistral':
- specifier: 3.0.2
+ specifier: ^3.0.2
version: 3.0.2(zod@4.3.6)
'@ai-sdk/openai':
- specifier: 3.0.2
+ specifier: ^3.0.2
version: 3.0.2(zod@4.3.6)
'@ai-sdk/openai-compatible':
- specifier: 2.0.2
+ specifier: ^2.0.2
version: 2.0.2(zod@4.3.6)
'@blocknote/xl-ai':
specifier: 0.48.1
@@ -5395,7 +5385,7 @@ importers:
specifier: ^1.19.5
version: 1.19.14(hono@4.12.10)
ai:
- specifier: 6.0.5
+ specifier: ^6.0.5
version: 6.0.5(zod@4.3.6)
hono:
specifier: ^4.10.3
@@ -5429,7 +5419,7 @@ importers:
specifier: ^0.10.0
version: 0.10.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
vitest:
- specifier: 4.1.2
+ specifier: ^4.1.2
version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
packages/xl-docx-exporter:
@@ -5481,7 +5471,7 @@ importers:
specifier: ^1.8.1
version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
vitest:
- specifier: 4.1.2
+ specifier: ^4.1.2
version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
xml-formatter:
specifier: ^3.6.7
@@ -5542,7 +5532,7 @@ importers:
specifier: ^1.8.1
version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
vitest:
- specifier: 4.1.2
+ specifier: ^4.1.2
version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
packages/xl-multi-column:
@@ -5554,7 +5544,7 @@ importers:
specifier: 0.48.1
version: link:../react
'@tiptap/core':
- specifier: ^3.13.0
+ specifier: ^3.0.0
version: 3.22.1(@tiptap/pm@3.22.1)
prosemirror-model:
specifier: ^1.25.4
@@ -5609,7 +5599,7 @@ importers:
specifier: ^1.8.1
version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
vitest:
- specifier: 4.1.2
+ specifier: ^4.1.2
version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
packages/xl-odt-exporter:
@@ -5661,7 +5651,7 @@ importers:
specifier: ^1.8.1
version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
vitest:
- specifier: 4.1.2
+ specifier: ^4.1.2
version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
xml-formatter:
specifier: ^3.6.7
@@ -5734,13 +5724,13 @@ importers:
specifier: ^1.8.1
version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
vitest:
- specifier: 4.1.2
+ specifier: ^4.1.2
version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
playground:
dependencies:
'@ai-sdk/groq':
- specifier: 3.0.2
+ specifier: ^3.0.2
version: 3.0.2(zod@4.3.6)
'@aws-sdk/client-s3':
specifier: ^3.911.0
@@ -5860,7 +5850,7 @@ importers:
specifier: ^0.6.4
version: 0.6.4(react@19.2.5)(yjs@13.6.30)
ai:
- specifier: 6.0.5
+ specifier: ^6.0.5
version: 6.0.5(zod@4.3.6)
autoprefixer:
specifier: 10.4.21
@@ -5968,7 +5958,7 @@ importers:
specifier: 1.51.1
version: 1.51.1
'@tiptap/pm':
- specifier: ^3.13.0
+ specifier: ^3.0.0
version: 3.22.1
'@types/node':
specifier: ^20.19.22
@@ -6004,7 +5994,7 @@ importers:
specifier: ^1.8.1
version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
vitest:
- specifier: 4.1.2
+ specifier: ^4.1.2
version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@20.19.37)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
packages:
@@ -8001,7 +7991,7 @@ packages:
peerDependencies:
'@blocknote/core': 0.43.0 - 1.0.0
'@blocknote/react': 0.43.0 - 1.0.0
- '@tiptap/core': ^3.19.0
+ '@tiptap/core': ^3.0.0
'@types/react': '*'
'@types/react-dom': '*'
react: ^18 || ^19 || ^19.0.0-rc
@@ -8015,7 +8005,7 @@ packages:
'@liveblocks/react-tiptap@3.17.0':
resolution: {integrity: sha512-IVAN5sZCOTtGy8alKw4EpArikBLu/dwjvbNya5IaH3ZiO6eoYmPFbHxinVN08BKPe208YjhZWefwrFr7bKAVNw==}
peerDependencies:
- '@tiptap/pm': ^3.19.0
+ '@tiptap/pm': ^3.0.0
'@tiptap/react': ^3.19.0
'@tiptap/suggestion': ^3.19.0
'@types/react': '*'
@@ -10459,67 +10449,67 @@ packages:
'@tiptap/core@3.22.1':
resolution: {integrity: sha512-6wPNhkdLIGYiKAGqepDCRtR0TYGJxV40SwOEN2vlPhsXqAgzmyG37UyREj5pGH5xTekugqMCgCnyRg7m5nYoYQ==}
peerDependencies:
- '@tiptap/pm': ^3.22.1
+ '@tiptap/pm': ^3.0.0
'@tiptap/extension-bold@3.15.3':
resolution: {integrity: sha512-I8JYbkkUTNUXbHd/wCse2bR0QhQtJD7+0/lgrKOmGfv5ioLxcki079Nzuqqay3PjgYoJLIJQvm3RAGxT+4X91w==}
peerDependencies:
- '@tiptap/core': ^3.15.3
+ '@tiptap/core': ^3.0.0
'@tiptap/extension-bubble-menu@3.22.1':
resolution: {integrity: sha512-JJI63N55hLPjfqHgBnbG1ORZTXJiswnfBkfNd8YKytCC8D++g5qX3UMObxmJKLMBRGyqjEi6krzOyYtOix5ALA==}
peerDependencies:
- '@tiptap/core': ^3.22.1
- '@tiptap/pm': ^3.22.1
+ '@tiptap/core': ^3.0.0
+ '@tiptap/pm': ^3.0.0
'@tiptap/extension-code@3.15.3':
resolution: {integrity: sha512-x6LFt3Og6MFINYpsMzrJnz7vaT9Yk1t4oXkbJsJRSavdIWBEBcoRudKZ4sSe/AnsYlRJs8FY2uR76mt9e+7xAQ==}
peerDependencies:
- '@tiptap/core': ^3.15.3
+ '@tiptap/core': ^3.0.0
'@tiptap/extension-floating-menu@3.22.1':
resolution: {integrity: sha512-TaZqmaoKv36FzbKTrBkkv74o0t8dYTftNZ7NotBqfSki0BB2PupTCJHafdu1YI0zmJ3xEzjB/XKcKPz2+10sDA==}
peerDependencies:
'@floating-ui/dom': ^1.0.0
- '@tiptap/core': ^3.22.1
- '@tiptap/pm': ^3.22.1
+ '@tiptap/core': ^3.0.0
+ '@tiptap/pm': ^3.0.0
'@tiptap/extension-horizontal-rule@3.15.3':
resolution: {integrity: sha512-FYkN7L6JsfwwNEntmLklCVKvgL0B0N47OXMacRk6kYKQmVQ4Nvc7q/VJLpD9sk4wh4KT1aiCBfhKEBTu5pv1fg==}
peerDependencies:
- '@tiptap/core': ^3.15.3
- '@tiptap/pm': ^3.15.3
+ '@tiptap/core': ^3.0.0
+ '@tiptap/pm': ^3.0.0
'@tiptap/extension-italic@3.15.3':
resolution: {integrity: sha512-6XeuPjcWy7OBxpkgOV7bD6PATO5jhIxc8SEK4m8xn8nelGTBIbHGqK37evRv+QkC7E0MUryLtzwnmmiaxcKL0Q==}
peerDependencies:
- '@tiptap/core': ^3.15.3
+ '@tiptap/core': ^3.0.0
'@tiptap/extension-paragraph@3.15.3':
resolution: {integrity: sha512-lc0Qu/1AgzcEfS67NJMj5tSHHhH6NtA6uUpvppEKGsvJwgE2wKG1onE4isrVXmcGRdxSMiCtyTDemPNMu6/ozQ==}
peerDependencies:
- '@tiptap/core': ^3.15.3
+ '@tiptap/core': ^3.0.0
'@tiptap/extension-strike@3.15.3':
resolution: {integrity: sha512-Y1P3eGNY7RxQs2BcR6NfLo9VfEOplXXHAqkOM88oowWWOE7dMNeFFZM9H8HNxoQgXJ7H0aWW9B7ZTWM9hWli2Q==}
peerDependencies:
- '@tiptap/core': ^3.15.3
+ '@tiptap/core': ^3.0.0
'@tiptap/extension-text@3.15.3':
resolution: {integrity: sha512-MhkBz8ZvrqOKtKNp+ZWISKkLUlTrDR7tbKZc2OnNcUTttL9dz0HwT+cg91GGz19fuo7ttDcfsPV6eVmflvGToA==}
peerDependencies:
- '@tiptap/core': ^3.15.3
+ '@tiptap/core': ^3.0.0
'@tiptap/extension-underline@3.15.3':
resolution: {integrity: sha512-r/IwcNN0W366jGu4Y0n2MiFq9jGa4aopOwtfWO4d+J0DyeS2m7Go3+KwoUqi0wQTiVU74yfi4DF6eRsMQ9/iHQ==}
peerDependencies:
- '@tiptap/core': ^3.15.3
+ '@tiptap/core': ^3.0.0
'@tiptap/extensions@3.15.3':
resolution: {integrity: sha512-ycx/BgxR4rc9tf3ZyTdI98Z19yKLFfqM3UN+v42ChuIwkzyr9zyp7kG8dB9xN2lNqrD+5y/HyJobz/VJ7T90gA==}
peerDependencies:
- '@tiptap/core': ^3.15.3
- '@tiptap/pm': ^3.15.3
+ '@tiptap/core': ^3.0.0
+ '@tiptap/pm': ^3.0.0
'@tiptap/pm@3.22.1':
resolution: {integrity: sha512-OSqSg2974eLJT5PNKFLM7156lBXCUf/dsKTQXWSzsLTf6HOP4dYP6c0YbAk6lgbNI+BdszsHNClmLVLA8H/L9A==}
@@ -10527,8 +10517,8 @@ packages:
'@tiptap/react@3.22.1':
resolution: {integrity: sha512-1pIRfgK9wape4nDXVJRfgUcYVZdPPkuECbGtz8bo0rgtdsVN7B8PBVCDyuitZ7acdLbMuuX5+TxeUOvME8np7Q==}
peerDependencies:
- '@tiptap/core': ^3.22.1
- '@tiptap/pm': ^3.22.1
+ '@tiptap/core': ^3.0.0
+ '@tiptap/pm': ^3.0.0
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
'@types/react-dom': ^17.0.0 || ^18.0.0 || ^19.0.0
react: ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -10537,8 +10527,8 @@ packages:
'@tiptap/suggestion@2.27.2':
resolution: {integrity: sha512-dQyvCIg0hcAVeh4fCIVCxogvbp+bF+GpbUb8sNlgnGrmHXnapGxzkvrlHnvneXZxLk/j7CxmBPKJNnm4Pbx4zw==}
peerDependencies:
- '@tiptap/core': ^2.7.0
- '@tiptap/pm': ^2.7.0
+ '@tiptap/core': ^3.0.0
+ '@tiptap/pm': ^3.0.0
'@transloadit/prettier-bytes@0.3.5':
resolution: {integrity: sha512-xF4A3d/ZyX2LJWeQZREZQw+qFX4TGQ8bGVP97OLRt6sPO6T0TNHBFTuRHOJh7RNmYOBmQ9MHxpolD9bXihpuVA==}
@@ -11174,7 +11164,7 @@ packages:
'@vitest/mocker@4.1.2':
resolution: {integrity: sha512-Ize4iQtEALHDttPRCmN+FKqOl2vxTiNUhzobQFFt/BM1lRUTG7zRCLOykG/6Vo4E4hnUdfVLo5/eqKPukcWW7Q==}
peerDependencies:
- msw: 2.11.5
+ msw: ^2.4.9
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
peerDependenciesMeta:
msw:
@@ -11596,7 +11586,7 @@ packages:
react-dom: ^18.0.0 || ^19.0.0
solid-js: ^1.0.0
svelte: ^4.0.0 || ^5.0.0
- vitest: 4.1.2
+ vitest: ^2.0.0 || ^3.0.0 || ^4.0.0
vue: ^3.0.0
peerDependenciesMeta:
'@lynx-js/react':
@@ -14236,7 +14226,7 @@ packages:
msw-snapshot@5.3.0:
resolution: {integrity: sha512-UdHPR67Qg0VAoQamu4AFevp0c3XG4oiOTmPGd98CezIwR9Il9jm9WFd2HebeYnjJ+Y5tVLPdwYiA72VWbnMX4Q==}
peerDependencies:
- msw: 2.11.5
+ msw: ^2.0.0
msw@2.11.5:
resolution: {integrity: sha512-atFI4GjKSJComxcigz273honh8h4j5zzpk5kwG4tGm0TPcYne6bqmVrufeRll6auBeouIkXqZYXxVbWSWxM3RA==}
From 606c872c42542de68196bd05b04ccd9ddcd11092 Mon Sep 17 00:00:00 2001
From: Nick the Sick
Date: Mon, 20 Apr 2026 06:37:44 +0200
Subject: [PATCH 07/15] fix(ci): resolve duplicate React install and npm
overrides conflict
Move vitest/@vitest/runner overrides to pnpm.overrides so npm
(used by `npx playwright merge-reports`) doesn't reject them as
conflicting with the direct devDependency. Regenerate the lockfile
to consolidate React on a single 19.x version, fixing the
"Cannot read properties of null (reading 'useContext')" error
that prevented the editor from mounting on multicolumn and
custom-block pages in the built playground.
Co-Authored-By: Claude Opus 4.6 (1M context)
---
package.json | 8 +-
pnpm-lock.yaml | 2277 +++++++++++-------------------------------------
2 files changed, 510 insertions(+), 1775 deletions(-)
diff --git a/package.json b/package.json
index 3d22036161..d0f2875eec 100644
--- a/package.json
+++ b/package.json
@@ -33,7 +33,11 @@
"msw",
"nx",
"unrs-resolver"
- ]
+ ],
+ "overrides": {
+ "vitest": "4.1.2",
+ "@vitest/runner": "4.1.2"
+ }
},
"packageManager": "pnpm@10.23.0+sha512.21c4e5698002ade97e4efe8b8b4a89a8de3c85a37919f957e7a0f30f38fbc5bbdd05980ffe29179b2fb6e6e691242e098d945d1601772cad0fef5fb6411e2a4b",
"private": true,
@@ -58,8 +62,6 @@
"format": "prettier --write \"**/*.{js,jsx,ts,tsx,css,scss,md}\""
},
"overrides": {
- "vitest": "4.1.2",
- "@vitest/runner": "4.1.2",
"msw": "2.11.5",
"ai": "6.0.5",
"@ai-sdk/anthropic": "3.0.2",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b5f7933aa7..c50b29c787 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -5,9 +5,8 @@ settings:
excludeLinksFromLockfile: false
overrides:
- '@headlessui/react': ^2.2.4
- '@tiptap/core': ^3.0.0
- '@tiptap/pm': ^3.0.0
+ vitest: 4.1.2
+ '@vitest/runner': 4.1.2
importers:
@@ -53,7 +52,7 @@ importers:
specifier: ^5.9.3
version: 5.9.3
vitest:
- specifier: ^4.1.2
+ specifier: 4.1.2
version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
wait-on:
specifier: 9.0.5
@@ -185,7 +184,7 @@ importers:
specifier: ^4
version: 4.0.2
'@tiptap/core':
- specifier: ^3.0.0
+ specifier: ^3.13.0
version: 3.22.1(@tiptap/pm@3.22.1)
'@uppy/core':
specifier: ^3.13.1
@@ -382,19 +381,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -428,19 +427,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -477,19 +476,19 @@ importers:
version: link:../../../packages/xl-multi-column
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -523,19 +522,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -569,19 +568,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -615,19 +614,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -661,19 +660,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -707,19 +706,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -753,19 +752,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
tailwindcss:
specifier: ^4.1.14
version: 4.2.2
@@ -808,19 +807,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -854,19 +853,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -900,19 +899,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -946,19 +945,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -992,19 +991,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1038,19 +1037,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1084,19 +1083,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1130,19 +1129,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1176,19 +1175,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1222,19 +1221,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1274,19 +1273,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1323,19 +1322,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1369,19 +1368,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1415,19 +1414,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1461,22 +1460,22 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
react-icons:
specifier: ^5.5.0
- version: 5.6.0(react@19.2.4)
+ version: 5.6.0(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1510,22 +1509,22 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
react-icons:
specifier: ^5.5.0
- version: 5.6.0(react@19.2.4)
+ version: 5.6.0(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1559,22 +1558,22 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
react-icons:
specifier: ^5.5.0
- version: 5.6.0(react@19.2.4)
+ version: 5.6.0(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1608,22 +1607,22 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
react-icons:
specifier: ^5.5.0
- version: 5.6.0(react@19.2.4)
+ version: 5.6.0(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1657,19 +1656,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1703,19 +1702,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1749,19 +1748,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1795,19 +1794,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1841,13 +1840,13 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
'@uppy/core':
specifier: ^3.13.1
version: 3.13.1
@@ -1868,7 +1867,7 @@ importers:
version: 3.1.1(@uppy/core@3.13.1)
'@uppy/react':
specifier: ^3.4.0
- version: 3.4.0(@uppy/core@3.13.1)(@uppy/dashboard@3.9.1(@uppy/core@3.13.1))(@uppy/drag-drop@3.1.1(@uppy/core@3.13.1))(@uppy/file-input@3.1.2(@uppy/core@3.13.1))(@uppy/progress-bar@3.1.1(@uppy/core@3.13.1))(@uppy/status-bar@3.3.3(@uppy/core@3.13.1))(react@19.2.4)
+ version: 3.4.0(@uppy/core@3.13.1)(@uppy/dashboard@3.9.1(@uppy/core@3.13.1))(@uppy/drag-drop@3.1.1(@uppy/core@3.13.1))(@uppy/file-input@3.1.2(@uppy/core@3.13.1))(@uppy/progress-bar@3.1.1(@uppy/core@3.13.1))(@uppy/status-bar@3.3.3(@uppy/core@3.13.1))(react@19.2.5)
'@uppy/screen-capture':
specifier: ^3.2.0
version: 3.2.0(@uppy/core@3.13.1)
@@ -1883,13 +1882,13 @@ importers:
version: 3.6.8(@uppy/core@3.13.1)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
react-icons:
specifier: ^5.5.0
- version: 5.6.0(react@19.2.4)
+ version: 5.6.0(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1923,19 +1922,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -1969,25 +1968,25 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
'@mui/icons-material':
specifier: ^5.16.1
- version: 5.18.0(@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
+ version: 5.18.0(@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)
'@mui/material':
specifier: ^5.16.1
- version: 5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2021,19 +2020,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2067,19 +2066,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2113,19 +2112,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2159,19 +2158,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2205,19 +2204,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2251,19 +2250,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2297,19 +2296,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2343,19 +2342,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2389,19 +2388,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2435,19 +2434,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2484,19 +2483,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2533,13 +2532,13 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
'@shikijs/core':
specifier: ^4
version: 4.0.2
@@ -2557,10 +2556,10 @@ importers:
version: 4.0.2
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2594,19 +2593,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2640,19 +2639,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2686,19 +2685,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2732,19 +2731,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2784,22 +2783,22 @@ importers:
version: link:../../../packages/xl-pdf-exporter
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
'@react-pdf/renderer':
specifier: ^4.3.0
- version: 4.3.2(react@19.2.4)
+ version: 4.3.2(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2839,19 +2838,19 @@ importers:
version: link:../../../packages/xl-multi-column
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2891,19 +2890,19 @@ importers:
version: link:../../../packages/xl-odt-exporter
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2940,22 +2939,22 @@ importers:
version: link:../../../packages/xl-email-exporter
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
'@react-email/render':
specifier: ^2.0.4
- version: 2.0.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 2.0.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -2989,19 +2988,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3035,19 +3034,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3081,22 +3080,22 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
react-icons:
specifier: ^5.5.0
- version: 5.6.0(react@19.2.4)
+ version: 5.6.0(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3130,19 +3129,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3176,22 +3175,22 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
react-icons:
specifier: ^5.5.0
- version: 5.6.0(react@19.2.4)
+ version: 5.6.0(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3225,22 +3224,22 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
react-icons:
specifier: ^5.5.0
- version: 5.6.0(react@19.2.4)
+ version: 5.6.0(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3274,22 +3273,22 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
react-icons:
specifier: ^5.5.0
- version: 5.6.0(react@19.2.4)
+ version: 5.6.0(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3323,19 +3322,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3369,19 +3368,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3415,19 +3414,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3461,19 +3460,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3507,19 +3506,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3553,19 +3552,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3599,19 +3598,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
y-partykit:
specifier: ^0.0.25
version: 0.0.25
@@ -3654,31 +3653,31 @@ importers:
version: 3.17.0(@types/json-schema@7.0.15)
'@liveblocks/react':
specifier: ^3.17.0
- version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.4)
+ version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.5)
'@liveblocks/react-blocknote':
specifier: ^3.17.0
- version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)
+ version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)
'@liveblocks/react-tiptap':
specifier: ^3.17.0
- version: 3.17.0(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30))
+ version: 3.17.0(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))
'@liveblocks/react-ui':
specifier: ^3.17.0
- version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
yjs:
specifier: ^13.6.27
version: 13.6.30
@@ -3715,22 +3714,22 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
'@y-sweet/react':
specifier: ^0.6.3
- version: 0.6.4(react@19.2.4)(yjs@13.6.30)
+ version: 0.6.4(react@19.2.5)(yjs@13.6.30)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3764,19 +3763,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3810,22 +3809,22 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
'@y-sweet/react':
specifier: ^0.6.3
- version: 0.6.4(react@19.2.4)(yjs@13.6.30)
+ version: 0.6.4(react@19.2.5)(yjs@13.6.30)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -3859,19 +3858,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
y-partykit:
specifier: ^0.0.25
version: 0.0.25
@@ -3911,19 +3910,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
y-partykit:
specifier: ^0.0.25
version: 0.0.25
@@ -3963,19 +3962,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
y-partykit:
specifier: ^0.0.25
version: 0.0.25
@@ -4064,22 +4063,22 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
'@tiptap/core':
- specifier: ^3.0.0
+ specifier: ^3.13.0
version: 3.22.1(@tiptap/pm@3.22.1)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -4116,22 +4115,22 @@ importers:
version: link:../../../packages/xl-ai
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
ai:
specifier: ^6.0.5
version: 6.0.5(zod@4.3.6)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -4168,22 +4167,22 @@ importers:
version: link:../../../packages/xl-ai
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
ai:
specifier: ^6.0.5
version: 6.0.5(zod@4.3.6)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -4220,25 +4219,25 @@ importers:
version: link:../../../packages/xl-ai
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
ai:
specifier: ^6.0.5
version: 6.0.5(zod@4.3.6)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
react-icons:
specifier: ^5.5.0
- version: 5.6.0(react@19.2.4)
+ version: 5.6.0(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -4275,22 +4274,22 @@ importers:
version: link:../../../packages/xl-ai
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
ai:
specifier: ^6.0.5
version: 6.0.5(zod@4.3.6)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
y-partykit:
specifier: ^0.0.25
version: 0.0.25
@@ -4333,22 +4332,22 @@ importers:
version: link:../../../packages/xl-ai
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
ai:
specifier: ^6.0.5
version: 6.0.5(zod@4.3.6)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
y-partykit:
specifier: ^0.0.25
version: 0.0.25
@@ -4394,22 +4393,22 @@ importers:
version: link:../../../packages/xl-ai
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
ai:
specifier: ^6.0.5
version: 6.0.5(zod@4.3.6)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -4446,22 +4445,22 @@ importers:
version: link:../../../packages/xl-ai
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
ai:
specifier: ^6.0.5
version: 6.0.5(zod@4.3.6)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -4495,19 +4494,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -4541,19 +4540,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -4587,19 +4586,19 @@ importers:
version: link:../../../packages/shadcn
'@mantine/core':
specifier: ^8.3.11
- version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@mantine/hooks':
specifier: ^8.3.11
- version: 8.3.18(react@19.2.4)
+ version: 8.3.18(react@19.2.5)
'@mantine/utils':
specifier: ^6.0.22
- version: 6.0.22(react@19.2.4)
+ version: 6.0.22(react@19.2.5)
react:
specifier: ^19.2.3
- version: 19.2.4
+ version: 19.2.5
react-dom:
specifier: ^19.2.3
- version: 19.2.4(react@19.2.4)
+ version: 19.2.5(react@19.2.5)
devDependencies:
'@types/react':
specifier: ^19.2.3
@@ -4700,7 +4699,7 @@ importers:
specifier: ^1.8.1
version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
vitest:
- specifier: ^4.1.2
+ specifier: 4.1.2
version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
packages/core:
@@ -4718,7 +4717,7 @@ importers:
specifier: ^0.7.7
version: 0.7.7
'@tiptap/core':
- specifier: ^3.0.0
+ specifier: ^3.13.0
version: 3.22.1(@tiptap/pm@3.22.1)
'@tiptap/extension-bold':
specifier: ^3.13.0
@@ -4748,7 +4747,7 @@ importers:
specifier: ^3.13.0
version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)
'@tiptap/pm':
- specifier: ^3.0.0
+ specifier: ^3.13.0
version: 3.22.1
emoji-mart:
specifier: ^5.6.0
@@ -4845,7 +4844,7 @@ importers:
specifier: ^1.8.1
version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
vitest:
- specifier: ^4.1.2
+ specifier: 4.1.2
version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
packages/dev-scripts:
@@ -4958,10 +4957,10 @@ importers:
specifier: 0.7.7
version: 0.7.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@tiptap/core':
- specifier: ^3.0.0
+ specifier: ^3.13.0
version: 3.22.1(@tiptap/pm@3.22.1)
'@tiptap/pm':
- specifier: ^3.0.0
+ specifier: ^3.13.0
version: 3.22.1
'@tiptap/react':
specifier: ^3.13.0
@@ -5031,7 +5030,7 @@ importers:
specifier: ^0.10.0
version: 0.10.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
vitest:
- specifier: ^4.1.2
+ specifier: 4.1.2
version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
packages/server-util:
@@ -5043,10 +5042,10 @@ importers:
specifier: 0.48.1
version: link:../react
'@tiptap/core':
- specifier: ^3.0.0
+ specifier: ^3.13.0
version: 3.22.1(@tiptap/pm@3.22.1)
'@tiptap/pm':
- specifier: ^3.0.0
+ specifier: ^3.13.0
version: 3.22.1
jsdom:
specifier: ^25.0.1
@@ -5092,7 +5091,7 @@ importers:
specifier: ^1.8.1
version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
vitest:
- specifier: ^4.1.2
+ specifier: 4.1.2
version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
packages/shadcn:
@@ -5219,7 +5218,7 @@ importers:
specifier: ^0.1.8
version: 0.1.8(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-transform@1.12.0)(prosemirror-view@1.41.8)
'@tiptap/core':
- specifier: ^3.0.0
+ specifier: ^3.13.0
version: 3.22.1(@tiptap/pm@3.22.1)
ai:
specifier: ^6.0.5
@@ -5316,7 +5315,7 @@ importers:
specifier: ^6.0.1
version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
'@vitest/runner':
- specifier: ^4.1.2
+ specifier: 4.1.2
version: 4.1.2
eslint:
specifier: ^8.57.1
@@ -5355,7 +5354,7 @@ importers:
specifier: ^0.10.0
version: 0.10.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
vitest:
- specifier: ^4.1.2
+ specifier: 4.1.2
version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
packages/xl-ai-server:
@@ -5419,7 +5418,7 @@ importers:
specifier: ^0.10.0
version: 0.10.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
vitest:
- specifier: ^4.1.2
+ specifier: 4.1.2
version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
packages/xl-docx-exporter:
@@ -5471,7 +5470,7 @@ importers:
specifier: ^1.8.1
version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
vitest:
- specifier: ^4.1.2
+ specifier: 4.1.2
version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
xml-formatter:
specifier: ^3.6.7
@@ -5532,7 +5531,7 @@ importers:
specifier: ^1.8.1
version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
vitest:
- specifier: ^4.1.2
+ specifier: 4.1.2
version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
packages/xl-multi-column:
@@ -5544,7 +5543,7 @@ importers:
specifier: 0.48.1
version: link:../react
'@tiptap/core':
- specifier: ^3.0.0
+ specifier: ^3.13.0
version: 3.22.1(@tiptap/pm@3.22.1)
prosemirror-model:
specifier: ^1.25.4
@@ -5599,7 +5598,7 @@ importers:
specifier: ^1.8.1
version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
vitest:
- specifier: ^4.1.2
+ specifier: 4.1.2
version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
packages/xl-odt-exporter:
@@ -5651,7 +5650,7 @@ importers:
specifier: ^1.8.1
version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
vitest:
- specifier: ^4.1.2
+ specifier: 4.1.2
version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
xml-formatter:
specifier: ^3.6.7
@@ -5724,7 +5723,7 @@ importers:
specifier: ^1.8.1
version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
vitest:
- specifier: ^4.1.2
+ specifier: 4.1.2
version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
playground:
@@ -5958,7 +5957,7 @@ importers:
specifier: 1.51.1
version: 1.51.1
'@tiptap/pm':
- specifier: ^3.0.0
+ specifier: ^3.13.0
version: 3.22.1
'@types/node':
specifier: ^20.19.22
@@ -5994,7 +5993,7 @@ importers:
specifier: ^1.8.1
version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
vitest:
- specifier: ^4.1.2
+ specifier: 4.1.2
version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@20.19.37)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))
packages:
@@ -7991,7 +7990,7 @@ packages:
peerDependencies:
'@blocknote/core': 0.43.0 - 1.0.0
'@blocknote/react': 0.43.0 - 1.0.0
- '@tiptap/core': ^3.0.0
+ '@tiptap/core': ^3.19.0
'@types/react': '*'
'@types/react-dom': '*'
react: ^18 || ^19 || ^19.0.0-rc
@@ -8005,7 +8004,7 @@ packages:
'@liveblocks/react-tiptap@3.17.0':
resolution: {integrity: sha512-IVAN5sZCOTtGy8alKw4EpArikBLu/dwjvbNya5IaH3ZiO6eoYmPFbHxinVN08BKPe208YjhZWefwrFr7bKAVNw==}
peerDependencies:
- '@tiptap/pm': ^3.0.0
+ '@tiptap/pm': ^3.19.0
'@tiptap/react': ^3.19.0
'@tiptap/suggestion': ^3.19.0
'@types/react': '*'
@@ -10449,67 +10448,67 @@ packages:
'@tiptap/core@3.22.1':
resolution: {integrity: sha512-6wPNhkdLIGYiKAGqepDCRtR0TYGJxV40SwOEN2vlPhsXqAgzmyG37UyREj5pGH5xTekugqMCgCnyRg7m5nYoYQ==}
peerDependencies:
- '@tiptap/pm': ^3.0.0
+ '@tiptap/pm': ^3.22.1
'@tiptap/extension-bold@3.15.3':
resolution: {integrity: sha512-I8JYbkkUTNUXbHd/wCse2bR0QhQtJD7+0/lgrKOmGfv5ioLxcki079Nzuqqay3PjgYoJLIJQvm3RAGxT+4X91w==}
peerDependencies:
- '@tiptap/core': ^3.0.0
+ '@tiptap/core': ^3.15.3
'@tiptap/extension-bubble-menu@3.22.1':
resolution: {integrity: sha512-JJI63N55hLPjfqHgBnbG1ORZTXJiswnfBkfNd8YKytCC8D++g5qX3UMObxmJKLMBRGyqjEi6krzOyYtOix5ALA==}
peerDependencies:
- '@tiptap/core': ^3.0.0
- '@tiptap/pm': ^3.0.0
+ '@tiptap/core': ^3.22.1
+ '@tiptap/pm': ^3.22.1
'@tiptap/extension-code@3.15.3':
resolution: {integrity: sha512-x6LFt3Og6MFINYpsMzrJnz7vaT9Yk1t4oXkbJsJRSavdIWBEBcoRudKZ4sSe/AnsYlRJs8FY2uR76mt9e+7xAQ==}
peerDependencies:
- '@tiptap/core': ^3.0.0
+ '@tiptap/core': ^3.15.3
'@tiptap/extension-floating-menu@3.22.1':
resolution: {integrity: sha512-TaZqmaoKv36FzbKTrBkkv74o0t8dYTftNZ7NotBqfSki0BB2PupTCJHafdu1YI0zmJ3xEzjB/XKcKPz2+10sDA==}
peerDependencies:
'@floating-ui/dom': ^1.0.0
- '@tiptap/core': ^3.0.0
- '@tiptap/pm': ^3.0.0
+ '@tiptap/core': ^3.22.1
+ '@tiptap/pm': ^3.22.1
'@tiptap/extension-horizontal-rule@3.15.3':
resolution: {integrity: sha512-FYkN7L6JsfwwNEntmLklCVKvgL0B0N47OXMacRk6kYKQmVQ4Nvc7q/VJLpD9sk4wh4KT1aiCBfhKEBTu5pv1fg==}
peerDependencies:
- '@tiptap/core': ^3.0.0
- '@tiptap/pm': ^3.0.0
+ '@tiptap/core': ^3.15.3
+ '@tiptap/pm': ^3.15.3
'@tiptap/extension-italic@3.15.3':
resolution: {integrity: sha512-6XeuPjcWy7OBxpkgOV7bD6PATO5jhIxc8SEK4m8xn8nelGTBIbHGqK37evRv+QkC7E0MUryLtzwnmmiaxcKL0Q==}
peerDependencies:
- '@tiptap/core': ^3.0.0
+ '@tiptap/core': ^3.15.3
'@tiptap/extension-paragraph@3.15.3':
resolution: {integrity: sha512-lc0Qu/1AgzcEfS67NJMj5tSHHhH6NtA6uUpvppEKGsvJwgE2wKG1onE4isrVXmcGRdxSMiCtyTDemPNMu6/ozQ==}
peerDependencies:
- '@tiptap/core': ^3.0.0
+ '@tiptap/core': ^3.15.3
'@tiptap/extension-strike@3.15.3':
resolution: {integrity: sha512-Y1P3eGNY7RxQs2BcR6NfLo9VfEOplXXHAqkOM88oowWWOE7dMNeFFZM9H8HNxoQgXJ7H0aWW9B7ZTWM9hWli2Q==}
peerDependencies:
- '@tiptap/core': ^3.0.0
+ '@tiptap/core': ^3.15.3
'@tiptap/extension-text@3.15.3':
resolution: {integrity: sha512-MhkBz8ZvrqOKtKNp+ZWISKkLUlTrDR7tbKZc2OnNcUTttL9dz0HwT+cg91GGz19fuo7ttDcfsPV6eVmflvGToA==}
peerDependencies:
- '@tiptap/core': ^3.0.0
+ '@tiptap/core': ^3.15.3
'@tiptap/extension-underline@3.15.3':
resolution: {integrity: sha512-r/IwcNN0W366jGu4Y0n2MiFq9jGa4aopOwtfWO4d+J0DyeS2m7Go3+KwoUqi0wQTiVU74yfi4DF6eRsMQ9/iHQ==}
peerDependencies:
- '@tiptap/core': ^3.0.0
+ '@tiptap/core': ^3.15.3
'@tiptap/extensions@3.15.3':
resolution: {integrity: sha512-ycx/BgxR4rc9tf3ZyTdI98Z19yKLFfqM3UN+v42ChuIwkzyr9zyp7kG8dB9xN2lNqrD+5y/HyJobz/VJ7T90gA==}
peerDependencies:
- '@tiptap/core': ^3.0.0
- '@tiptap/pm': ^3.0.0
+ '@tiptap/core': ^3.15.3
+ '@tiptap/pm': ^3.15.3
'@tiptap/pm@3.22.1':
resolution: {integrity: sha512-OSqSg2974eLJT5PNKFLM7156lBXCUf/dsKTQXWSzsLTf6HOP4dYP6c0YbAk6lgbNI+BdszsHNClmLVLA8H/L9A==}
@@ -10517,8 +10516,8 @@ packages:
'@tiptap/react@3.22.1':
resolution: {integrity: sha512-1pIRfgK9wape4nDXVJRfgUcYVZdPPkuECbGtz8bo0rgtdsVN7B8PBVCDyuitZ7acdLbMuuX5+TxeUOvME8np7Q==}
peerDependencies:
- '@tiptap/core': ^3.0.0
- '@tiptap/pm': ^3.0.0
+ '@tiptap/core': ^3.22.1
+ '@tiptap/pm': ^3.22.1
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
'@types/react-dom': ^17.0.0 || ^18.0.0 || ^19.0.0
react: ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -10527,8 +10526,8 @@ packages:
'@tiptap/suggestion@2.27.2':
resolution: {integrity: sha512-dQyvCIg0hcAVeh4fCIVCxogvbp+bF+GpbUb8sNlgnGrmHXnapGxzkvrlHnvneXZxLk/j7CxmBPKJNnm4Pbx4zw==}
peerDependencies:
- '@tiptap/core': ^3.0.0
- '@tiptap/pm': ^3.0.0
+ '@tiptap/core': ^2.7.0
+ '@tiptap/pm': ^2.7.0
'@transloadit/prettier-bytes@0.3.5':
resolution: {integrity: sha512-xF4A3d/ZyX2LJWeQZREZQw+qFX4TGQ8bGVP97OLRt6sPO6T0TNHBFTuRHOJh7RNmYOBmQ9MHxpolD9bXihpuVA==}
@@ -11586,7 +11585,7 @@ packages:
react-dom: ^18.0.0 || ^19.0.0
solid-js: ^1.0.0
svelte: ^4.0.0 || ^5.0.0
- vitest: ^2.0.0 || ^3.0.0 || ^4.0.0
+ vitest: 4.1.2
vue: ^3.0.0
peerDependenciesMeta:
'@lynx-js/react':
@@ -14999,11 +14998,6 @@ packages:
peerDependencies:
react: '>=16.8.0'
- react-dom@19.2.4:
- resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==}
- peerDependencies:
- react: ^19.2.4
-
react-dom@19.2.5:
resolution: {integrity: sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==}
peerDependencies:
@@ -15156,10 +15150,6 @@ packages:
resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
engines: {node: '>=0.10.0'}
- react@19.2.4:
- resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==}
- engines: {node: '>=0.10.0'}
-
react@19.2.5:
resolution: {integrity: sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==}
engines: {node: '>=0.10.0'}
@@ -18253,23 +18243,6 @@ snapshots:
'@emotion/memoize@0.9.0': {}
- '@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4)':
- dependencies:
- '@babel/runtime': 7.29.2
- '@emotion/babel-plugin': 11.13.5
- '@emotion/cache': 11.14.0
- '@emotion/serialize': 1.3.3
- '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.4)
- '@emotion/utils': 1.4.2
- '@emotion/weak-memoize': 0.4.0
- hoist-non-react-statics: 3.3.2
- react: 19.2.4
- optionalDependencies:
- '@types/react': 19.2.14
- transitivePeerDependencies:
- - supports-color
- optional: true
-
'@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@babel/runtime': 7.29.2
@@ -18296,22 +18269,6 @@ snapshots:
'@emotion/sheet@1.4.0': {}
- '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)':
- dependencies:
- '@babel/runtime': 7.29.2
- '@emotion/babel-plugin': 11.13.5
- '@emotion/is-prop-valid': 1.4.0
- '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.4)
- '@emotion/serialize': 1.3.3
- '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.4)
- '@emotion/utils': 1.4.2
- react: 19.2.4
- optionalDependencies:
- '@types/react': 19.2.14
- transitivePeerDependencies:
- - supports-color
- optional: true
-
'@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@babel/runtime': 7.29.2
@@ -18329,11 +18286,6 @@ snapshots:
'@emotion/unitless@0.10.0': {}
- '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.2.4)':
- dependencies:
- react: 19.2.4
- optional: true
-
'@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.2.5)':
dependencies:
react: 19.2.5
@@ -18657,29 +18609,15 @@ snapshots:
'@floating-ui/core': 1.7.5
'@floating-ui/utils': 0.2.11
- '@floating-ui/react-dom@2.1.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@floating-ui/dom': 1.7.6
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
-
'@floating-ui/react-dom@2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@floating-ui/dom': 1.7.6
react: 19.2.5
react-dom: 19.2.5(react@19.2.5)
- '@floating-ui/react@0.27.19(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ '@floating-ui/react@0.27.19(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
- '@floating-ui/react-dom': 2.1.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@floating-ui/utils': 0.2.11
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- tabbable: 6.4.0
-
- '@floating-ui/react@0.27.19(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
- dependencies:
- '@floating-ui/react-dom': 2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ '@floating-ui/react-dom': 2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@floating-ui/utils': 0.2.11
react: 19.2.5
react-dom: 19.2.5(react@19.2.5)
@@ -19030,35 +18968,6 @@ snapshots:
dependencies:
'@types/json-schema': 7.0.15
- '@liveblocks/react-blocknote@3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)':
- dependencies:
- '@blocknote/core': link:packages/core
- '@blocknote/react': link:packages/react
- '@liveblocks/client': 3.17.0(@types/json-schema@7.0.15)
- '@liveblocks/core': 3.17.0(@types/json-schema@7.0.15)
- '@liveblocks/react': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.4)
- '@liveblocks/react-tiptap': 3.17.0(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30))
- '@liveblocks/react-ui': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@liveblocks/yjs': 3.17.0(@types/json-schema@7.0.15)(yjs@13.6.30)
- '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- vitest-tsconfig-paths: 3.4.1
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
- transitivePeerDependencies:
- - '@tiptap/pm'
- - '@tiptap/react'
- - '@tiptap/suggestion'
- - '@types/json-schema'
- - prosemirror-model
- - prosemirror-state
- - prosemirror-view
- - supports-color
- - y-protocols
- - yjs
-
'@liveblocks/react-blocknote@3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)':
dependencies:
'@blocknote/core': link:packages/core
@@ -19088,34 +18997,6 @@ snapshots:
- y-protocols
- yjs
- '@liveblocks/react-tiptap@3.17.0(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30))':
- dependencies:
- '@floating-ui/react-dom': 2.1.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@liveblocks/client': 3.17.0(@types/json-schema@7.0.15)
- '@liveblocks/core': 3.17.0(@types/json-schema@7.0.15)
- '@liveblocks/react': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.4)
- '@liveblocks/react-ui': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@liveblocks/yjs': 3.17.0(@types/json-schema@7.0.15)(yjs@13.6.30)
- '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
- '@tiptap/pm': 3.22.1
- '@tiptap/react': 3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@tiptap/suggestion': 2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)
- cmdk: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- radix-ui: 1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- y-prosemirror: 1.3.7(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)
- yjs: 13.6.30
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
- transitivePeerDependencies:
- - '@types/json-schema'
- - prosemirror-model
- - prosemirror-state
- - prosemirror-view
- - y-protocols
-
'@liveblocks/react-tiptap@3.17.0(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))':
dependencies:
'@floating-ui/react-dom': 2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -19144,27 +19025,6 @@ snapshots:
- prosemirror-view
- y-protocols
- '@liveblocks/react-ui@3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@floating-ui/react-dom': 2.1.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@liveblocks/client': 3.17.0(@types/json-schema@7.0.15)
- '@liveblocks/core': 3.17.0(@types/json-schema@7.0.15)
- '@liveblocks/react': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.4)
- frimousse: 0.2.0(react@19.2.4)
- marked: 15.0.12
- radix-ui: 1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- slate: 0.110.2
- slate-history: 0.110.3(slate@0.110.2)
- slate-hyperscript: 0.100.0(slate@0.110.2)
- slate-react: 0.110.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(slate@0.110.2)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
- transitivePeerDependencies:
- - '@types/json-schema'
-
'@liveblocks/react-ui@3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@floating-ui/react-dom': 2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -19186,17 +19046,6 @@ snapshots:
transitivePeerDependencies:
- '@types/json-schema'
- '@liveblocks/react@3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.4)':
- dependencies:
- '@liveblocks/client': 3.17.0(@types/json-schema@7.0.15)
- '@liveblocks/core': 3.17.0(@types/json-schema@7.0.15)
- react: 19.2.4
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
- transitivePeerDependencies:
- - '@types/json-schema'
-
'@liveblocks/react@3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@liveblocks/client': 3.17.0(@types/json-schema@7.0.15)
@@ -19219,20 +19068,6 @@ snapshots:
transitivePeerDependencies:
- '@types/json-schema'
- '@mantine/core@8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@floating-ui/react': 0.27.19(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@mantine/hooks': 8.3.18(react@19.2.4)
- clsx: 2.1.1
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- react-number-format: 5.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4)
- react-textarea-autosize: 8.5.9(@types/react@19.2.14)(react@19.2.4)
- type-fest: 4.41.0
- transitivePeerDependencies:
- - '@types/react'
-
'@mantine/core@8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@floating-ui/react': 0.27.19(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -19247,18 +19082,10 @@ snapshots:
transitivePeerDependencies:
- '@types/react'
- '@mantine/hooks@8.3.18(react@19.2.4)':
- dependencies:
- react: 19.2.4
-
'@mantine/hooks@8.3.18(react@19.2.5)':
dependencies:
react: 19.2.5
- '@mantine/utils@6.0.22(react@19.2.4)':
- dependencies:
- react: 19.2.4
-
'@mantine/utils@6.0.22(react@19.2.5)':
dependencies:
react: 19.2.5
@@ -19334,14 +19161,6 @@ snapshots:
'@mui/core-downloads-tracker@5.18.0': {}
- '@mui/icons-material@5.18.0(@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)':
- dependencies:
- '@babel/runtime': 7.29.2
- '@mui/material': 5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- react: 19.2.4
- optionalDependencies:
- '@types/react': 19.2.14
-
'@mui/icons-material@5.18.0(@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@babel/runtime': 7.29.2
@@ -19350,27 +19169,6 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
- '@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@babel/runtime': 7.29.2
- '@mui/core-downloads-tracker': 5.18.0
- '@mui/system': 5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
- '@mui/types': 7.2.24(@types/react@19.2.14)
- '@mui/utils': 5.17.1(@types/react@19.2.14)(react@19.2.4)
- '@popperjs/core': 2.11.8
- '@types/react-transition-group': 4.4.12(@types/react@19.2.14)
- clsx: 2.1.1
- csstype: 3.2.3
- prop-types: 15.8.1
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- react-is: 19.2.4
- react-transition-group: 4.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- optionalDependencies:
- '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.4)
- '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
- '@types/react': 19.2.14
-
'@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@babel/runtime': 7.29.2
@@ -19392,15 +19190,6 @@ snapshots:
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)
'@types/react': 19.2.14
- '@mui/private-theming@5.17.1(@types/react@19.2.14)(react@19.2.4)':
- dependencies:
- '@babel/runtime': 7.29.2
- '@mui/utils': 5.17.1(@types/react@19.2.14)(react@19.2.4)
- prop-types: 15.8.1
- react: 19.2.4
- optionalDependencies:
- '@types/react': 19.2.14
-
'@mui/private-theming@5.17.1(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@babel/runtime': 7.29.2
@@ -19410,18 +19199,6 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
- '@mui/styled-engine@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@babel/runtime': 7.29.2
- '@emotion/cache': 11.14.0
- '@emotion/serialize': 1.3.3
- csstype: 3.2.3
- prop-types: 15.8.1
- react: 19.2.4
- optionalDependencies:
- '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.4)
- '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
-
'@mui/styled-engine@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(react@19.2.5)':
dependencies:
'@babel/runtime': 7.29.2
@@ -19434,22 +19211,6 @@ snapshots:
'@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.5)
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)
- '@mui/system@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)':
- dependencies:
- '@babel/runtime': 7.29.2
- '@mui/private-theming': 5.17.1(@types/react@19.2.14)(react@19.2.4)
- '@mui/styled-engine': 5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)
- '@mui/types': 7.2.24(@types/react@19.2.14)
- '@mui/utils': 5.17.1(@types/react@19.2.14)(react@19.2.4)
- clsx: 2.1.1
- csstype: 3.2.3
- prop-types: 15.8.1
- react: 19.2.4
- optionalDependencies:
- '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.4)
- '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)
- '@types/react': 19.2.14
-
'@mui/system@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@babel/runtime': 7.29.2
@@ -19470,18 +19231,6 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
- '@mui/utils@5.17.1(@types/react@19.2.14)(react@19.2.4)':
- dependencies:
- '@babel/runtime': 7.29.2
- '@mui/types': 7.2.24(@types/react@19.2.14)
- '@types/prop-types': 15.7.15
- clsx: 2.1.1
- prop-types: 15.8.1
- react: 19.2.4
- react-is: 19.2.4
- optionalDependencies:
- '@types/react': 19.2.14
-
'@mui/utils@5.17.1(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@babel/runtime': 7.29.2
@@ -20073,15 +19822,6 @@ snapshots:
'@radix-ui/primitive@1.1.3': {}
- '@radix-ui/react-accessible-icon@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-accessible-icon@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -20091,23 +19831,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20125,20 +19848,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20153,15 +19862,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -20171,15 +19871,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-aspect-ratio@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-aspect-ratio@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -20189,19 +19880,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-avatar@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-avatar@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5)
@@ -20228,22 +19906,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-checkbox@1.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-checkbox@1.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20260,22 +19922,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20292,18 +19938,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5)
@@ -20316,32 +19950,12 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.14)(react@19.2.4)':
- dependencies:
- react: 19.2.4
- optionalDependencies:
- '@types/react': 19.2.14
-
'@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.14)(react@19.2.5)':
dependencies:
react: 19.2.5
optionalDependencies:
'@types/react': 19.2.14
- '@radix-ui/react-context-menu@2.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-context-menu@2.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20356,12 +19970,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-context@1.1.2(@types/react@19.2.14)(react@19.2.4)':
- dependencies:
- react: 19.2.4
- optionalDependencies:
- '@types/react': 19.2.14
-
'@radix-ui/react-context@1.1.2(@types/react@19.2.14)(react@19.2.5)':
dependencies:
react: 19.2.5
@@ -20374,28 +19982,6 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
- '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
- aria-hidden: 1.2.6
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20418,31 +20004,12 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-direction@1.1.1(@types/react@19.2.14)(react@19.2.4)':
- dependencies:
- react: 19.2.4
- optionalDependencies:
- '@types/react': 19.2.14
-
'@radix-ui/react-direction@1.1.1(@types/react@19.2.14)(react@19.2.5)':
dependencies:
react: 19.2.5
optionalDependencies:
'@types/react': 19.2.14
- '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20456,21 +20023,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20486,29 +20038,12 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.14)(react@19.2.4)':
- dependencies:
- react: 19.2.4
- optionalDependencies:
- '@types/react': 19.2.14
-
'@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.14)(react@19.2.5)':
dependencies:
react: 19.2.5
optionalDependencies:
'@types/react': 19.2.14
- '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5)
@@ -20520,20 +20055,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-form@0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-label': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-form@0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20548,23 +20069,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-hover-card@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-hover-card@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20582,13 +20086,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-id@1.1.1(@types/react@19.2.14)(react@19.2.4)':
- dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- optionalDependencies:
- '@types/react': 19.2.14
-
'@radix-ui/react-id@1.1.1(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5)
@@ -20596,15 +20093,6 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
- '@radix-ui/react-label@2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-label@2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -20623,32 +20111,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- aria-hidden: 1.2.6
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20675,24 +20137,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-menubar@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-menubar@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20711,28 +20155,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-navigation-menu@1.2.14(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-navigation-menu@1.2.14(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20755,26 +20177,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-one-time-password-field@0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/number': 1.1.1
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-one-time-password-field@0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/number': 1.1.1
@@ -20795,22 +20197,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-password-toggle-field@0.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-password-toggle-field@0.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20827,29 +20213,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
- aria-hidden: 1.2.6
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -20873,24 +20236,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@floating-ui/react-dom': 2.1.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/rect': 1.1.1
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@floating-ui/react-dom': 2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -20909,16 +20254,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -20929,16 +20264,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5)
@@ -20949,15 +20274,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5)
@@ -20967,15 +20283,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-primitive@2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/react-slot': 1.2.4(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-primitive@2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-slot': 1.2.4(@types/react@19.2.14)(react@19.2.5)
@@ -20985,16 +20292,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-progress@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-progress@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5)
@@ -21005,24 +20302,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-radio-group@1.3.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-radio-group@1.3.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -21035,25 +20314,8 @@ snapshots:
'@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5)
'@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.5)
'@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.5)
- react: 19.2.5
- react-dom: 19.2.5(react@19.2.5)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
- '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
+ react: 19.2.5
+ react-dom: 19.2.5(react@19.2.5)
optionalDependencies:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
@@ -21075,23 +20337,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-scroll-area@1.2.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/number': 1.1.1
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-scroll-area@1.2.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/number': 1.1.1
@@ -21109,35 +20354,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-select@2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/number': 1.1.1
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- aria-hidden: 1.2.6
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-select@2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/number': 1.1.1
@@ -21167,15 +20383,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-separator@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-separator@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -21194,25 +20401,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-slider@1.3.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/number': 1.1.1
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-slider@1.3.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/number': 1.1.1
@@ -21232,13 +20420,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-slot@1.2.3(@types/react@19.2.14)(react@19.2.4)':
- dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- optionalDependencies:
- '@types/react': 19.2.14
-
'@radix-ui/react-slot@1.2.3(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5)
@@ -21246,13 +20427,6 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
- '@radix-ui/react-slot@1.2.4(@types/react@19.2.14)(react@19.2.4)':
- dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- optionalDependencies:
- '@types/react': 19.2.14
-
'@radix-ui/react-slot@1.2.4(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5)
@@ -21260,21 +20434,6 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
- '@radix-ui/react-switch@1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-switch@1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -21290,22 +20449,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -21322,26 +20465,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-toast@1.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-toast@1.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -21362,21 +20485,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-toggle-group@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-toggle-group@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -21392,17 +20500,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-toggle@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-toggle@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -21414,21 +20511,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-toolbar@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-separator': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-toolbar@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -21444,26 +20526,6 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -21484,26 +20546,12 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.14)(react@19.2.4)':
- dependencies:
- react: 19.2.4
- optionalDependencies:
- '@types/react': 19.2.14
-
'@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.14)(react@19.2.5)':
dependencies:
react: 19.2.5
optionalDependencies:
'@types/react': 19.2.14
- '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.14)(react@19.2.4)':
- dependencies:
- '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- optionalDependencies:
- '@types/react': 19.2.14
-
'@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.5)
@@ -21512,13 +20560,6 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
- '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.14)(react@19.2.4)':
- dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- optionalDependencies:
- '@types/react': 19.2.14
-
'@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5)
@@ -21526,13 +20567,6 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
- '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.14)(react@19.2.4)':
- dependencies:
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- optionalDependencies:
- '@types/react': 19.2.14
-
'@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5)
@@ -21540,13 +20574,6 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
- '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.2.14)(react@19.2.4)':
- dependencies:
- react: 19.2.4
- use-sync-external-store: 1.6.0(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
-
'@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.2.14)(react@19.2.5)':
dependencies:
react: 19.2.5
@@ -21554,37 +20581,18 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
- '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.14)(react@19.2.4)':
- dependencies:
- react: 19.2.4
- optionalDependencies:
- '@types/react': 19.2.14
-
'@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.14)(react@19.2.5)':
dependencies:
react: 19.2.5
optionalDependencies:
'@types/react': 19.2.14
- '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.14)(react@19.2.4)':
- dependencies:
- react: 19.2.4
- optionalDependencies:
- '@types/react': 19.2.14
-
'@radix-ui/react-use-previous@1.1.1(@types/react@19.2.14)(react@19.2.5)':
dependencies:
react: 19.2.5
optionalDependencies:
'@types/react': 19.2.14
- '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.14)(react@19.2.4)':
- dependencies:
- '@radix-ui/rect': 1.1.1
- react: 19.2.4
- optionalDependencies:
- '@types/react': 19.2.14
-
'@radix-ui/react-use-rect@1.1.1(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@radix-ui/rect': 1.1.1
@@ -21592,13 +20600,6 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
- '@radix-ui/react-use-size@1.1.1(@types/react@19.2.14)(react@19.2.4)':
- dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- react: 19.2.4
- optionalDependencies:
- '@types/react': 19.2.14
-
'@radix-ui/react-use-size@1.1.1(@types/react@19.2.14)(react@19.2.5)':
dependencies:
'@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5)
@@ -21606,15 +20607,6 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
- '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
'@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -21714,13 +20706,6 @@ snapshots:
dependencies:
react: 19.2.5
- '@react-email/render@2.0.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- html-to-text: 9.0.5
- prettier: 3.6.2
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
-
'@react-email/render@2.0.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
html-to-text: 9.0.5
@@ -21800,12 +20785,6 @@ snapshots:
'@react-pdf/primitives@4.1.1': {}
- '@react-pdf/reconciler@2.0.0(react@19.2.4)':
- dependencies:
- object-assign: 4.1.1
- react: 19.2.4
- scheduler: 0.25.0-rc-603e6108-20241029
-
'@react-pdf/reconciler@2.0.0(react@19.2.5)':
dependencies:
object-assign: 4.1.1
@@ -21825,23 +20804,6 @@ snapshots:
parse-svg-path: 0.1.2
svg-arc-to-cubic-bezier: 3.2.0
- '@react-pdf/renderer@4.3.2(react@19.2.4)':
- dependencies:
- '@babel/runtime': 7.29.2
- '@react-pdf/fns': 3.1.2
- '@react-pdf/font': 4.0.4
- '@react-pdf/layout': 4.4.2
- '@react-pdf/pdfkit': 4.1.0
- '@react-pdf/primitives': 4.1.1
- '@react-pdf/reconciler': 2.0.0(react@19.2.4)
- '@react-pdf/render': 4.3.2
- '@react-pdf/types': 2.9.2
- events: 3.3.0
- object-assign: 4.1.1
- prop-types: 15.8.1
- queue: 6.0.2
- react: 19.2.4
-
'@react-pdf/renderer@4.3.2(react@19.2.5)':
dependencies:
'@babel/runtime': 7.29.2
@@ -22910,23 +21872,6 @@ snapshots:
prosemirror-transform: 1.12.0
prosemirror-view: 1.41.8
- '@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
- '@tiptap/pm': 3.22.1
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@types/use-sync-external-store': 0.0.6
- fast-equals: 5.4.0
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- use-sync-external-store: 1.6.0(react@19.2.4)
- optionalDependencies:
- '@tiptap/extension-bubble-menu': 3.22.1(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)
- '@tiptap/extension-floating-menu': 3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)
- transitivePeerDependencies:
- - '@floating-ui/dom'
-
'@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
'@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
@@ -23552,19 +22497,6 @@ snapshots:
p-queue: 7.4.1
preact: 10.29.0
- '@uppy/react@3.4.0(@uppy/core@3.13.1)(@uppy/dashboard@3.9.1(@uppy/core@3.13.1))(@uppy/drag-drop@3.1.1(@uppy/core@3.13.1))(@uppy/file-input@3.1.2(@uppy/core@3.13.1))(@uppy/progress-bar@3.1.1(@uppy/core@3.13.1))(@uppy/status-bar@3.3.3(@uppy/core@3.13.1))(react@19.2.4)':
- dependencies:
- '@uppy/core': 3.13.1
- '@uppy/utils': 5.9.0
- prop-types: 15.8.1
- react: 19.2.4
- optionalDependencies:
- '@uppy/dashboard': 3.9.1(@uppy/core@3.13.1)
- '@uppy/drag-drop': 3.1.1(@uppy/core@3.13.1)
- '@uppy/file-input': 3.1.2(@uppy/core@3.13.1)
- '@uppy/progress-bar': 3.1.1(@uppy/core@3.13.1)
- '@uppy/status-bar': 3.3.3(@uppy/core@3.13.1)
-
'@uppy/react@3.4.0(@uppy/core@3.13.1)(@uppy/dashboard@3.9.1(@uppy/core@3.13.1))(@uppy/drag-drop@3.1.1(@uppy/core@3.13.1))(@uppy/file-input@3.1.2(@uppy/core@3.13.1))(@uppy/progress-bar@3.1.1(@uppy/core@3.13.1))(@uppy/status-bar@3.3.3(@uppy/core@3.13.1))(react@19.2.5)':
dependencies:
'@uppy/core': 3.13.1
@@ -23820,14 +22752,6 @@ snapshots:
y-protocols: 1.0.7(yjs@13.6.30)
yjs: 13.6.30
- '@y-sweet/react@0.6.4(react@19.2.4)(yjs@13.6.30)':
- dependencies:
- '@y-sweet/client': 0.6.4(yjs@13.6.30)
- '@y-sweet/sdk': 0.6.4
- react: 19.2.4
- y-protocols: 1.0.7(yjs@13.6.30)
- yjs: 13.6.30
-
'@y-sweet/react@0.6.4(react@19.2.5)(yjs@13.6.30)':
dependencies:
'@y-sweet/client': 0.6.4(yjs@13.6.30)
@@ -24439,18 +23363,6 @@ snapshots:
clsx@2.1.1: {}
- cmdk@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
- dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- transitivePeerDependencies:
- - '@types/react'
- - '@types/react-dom'
-
cmdk@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
dependencies:
'@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5)
@@ -25751,10 +24663,6 @@ snapshots:
react: 19.2.5
react-dom: 19.2.5(react@19.2.5)
- frimousse@0.2.0(react@19.2.4):
- dependencies:
- react: 19.2.4
-
frimousse@0.2.0(react@19.2.5):
dependencies:
react: 19.2.5
@@ -28313,69 +27221,6 @@ snapshots:
dependencies:
inherits: 2.0.4
- radix-ui@1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-accessible-icon': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-alert-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-aspect-ratio': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-avatar': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-checkbox': 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-context-menu': 2.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-dropdown-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-form': 0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-hover-card': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-label': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-menubar': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-navigation-menu': 1.2.14(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-one-time-password-field': 0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-password-toggle-field': 0.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-popover': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-progress': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-radio-group': 1.3.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-scroll-area': 1.2.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-select': 2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-separator': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-slider': 1.3.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-switch': 1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-toast': 1.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-toolbar': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-tooltip': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
-
radix-ui@1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -28456,11 +27301,6 @@ snapshots:
date-fns-jalali: 4.1.0-0
react: 19.2.5
- react-dom@19.2.4(react@19.2.4):
- dependencies:
- react: 19.2.4
- scheduler: 0.27.0
-
react-dom@19.2.5(react@19.2.5):
dependencies:
react: 19.2.5
@@ -28511,10 +27351,6 @@ snapshots:
dependencies:
react: 19.2.5
- react-icons@5.6.0(react@19.2.4):
- dependencies:
- react: 19.2.4
-
react-icons@5.6.0(react@19.2.5):
dependencies:
react: 19.2.5
@@ -28532,11 +27368,6 @@ snapshots:
react: 19.2.5
react-dom: 19.2.5(react@19.2.5)
- react-number-format@5.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
- dependencies:
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
-
react-number-format@5.4.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
dependencies:
react: 19.2.5
@@ -28553,14 +27384,6 @@ snapshots:
react-refresh@0.17.0: {}
- react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.2.4):
- dependencies:
- react: 19.2.4
- react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.4)
- tslib: 2.8.1
- optionalDependencies:
- '@types/react': 19.2.14
-
react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.2.5):
dependencies:
react: 19.2.5
@@ -28569,17 +27392,6 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
- react-remove-scroll@2.7.2(@types/react@19.2.14)(react@19.2.4):
- dependencies:
- react: 19.2.4
- react-remove-scroll-bar: 2.3.8(@types/react@19.2.14)(react@19.2.4)
- react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.4)
- tslib: 2.8.1
- use-callback-ref: 1.3.3(@types/react@19.2.14)(react@19.2.4)
- use-sidecar: 1.1.3(@types/react@19.2.14)(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
-
react-remove-scroll@2.7.2(@types/react@19.2.14)(react@19.2.5):
dependencies:
react: 19.2.5
@@ -28603,14 +27415,6 @@ snapshots:
'@remix-run/router': 1.23.2
react: 19.2.5
- react-style-singleton@2.2.3(@types/react@19.2.14)(react@19.2.4):
- dependencies:
- get-nonce: 1.0.1
- react: 19.2.4
- tslib: 2.8.1
- optionalDependencies:
- '@types/react': 19.2.14
-
react-style-singleton@2.2.3(@types/react@19.2.14)(react@19.2.5):
dependencies:
get-nonce: 1.0.1
@@ -28619,15 +27423,6 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
- react-textarea-autosize@8.5.9(@types/react@19.2.14)(react@19.2.4):
- dependencies:
- '@babel/runtime': 7.29.2
- react: 19.2.4
- use-composed-ref: 1.4.0(@types/react@19.2.14)(react@19.2.4)
- use-latest: 1.3.0(@types/react@19.2.14)(react@19.2.4)
- transitivePeerDependencies:
- - '@types/react'
-
react-textarea-autosize@8.5.9(@types/react@19.2.14)(react@19.2.5):
dependencies:
'@babel/runtime': 7.29.2
@@ -28641,15 +27436,6 @@ snapshots:
dependencies:
react: 19.2.5
- react-transition-group@4.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
- dependencies:
- '@babel/runtime': 7.29.2
- dom-helpers: 5.2.1
- loose-envify: 1.4.0
- prop-types: 15.8.1
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
-
react-transition-group@4.4.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
dependencies:
'@babel/runtime': 7.29.2
@@ -28669,8 +27455,6 @@ snapshots:
dependencies:
loose-envify: 1.4.0
- react@19.2.4: {}
-
react@19.2.5: {}
readable-stream@2.3.8:
@@ -29291,19 +28075,6 @@ snapshots:
is-plain-object: 5.0.0
slate: 0.110.2
- slate-react@0.110.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(slate@0.110.2):
- dependencies:
- '@juggle/resize-observer': 3.4.0
- direction: 1.0.4
- is-hotkey: 0.2.0
- is-plain-object: 5.0.0
- lodash: 4.18.1
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- scroll-into-view-if-needed: 3.1.0
- slate: 0.110.2
- tiny-invariant: 1.3.1
-
slate-react@0.110.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(slate@0.110.2):
dependencies:
'@juggle/resize-observer': 3.4.0
@@ -29964,13 +28735,6 @@ snapshots:
dependencies:
punycode: 2.3.1
- use-callback-ref@1.3.3(@types/react@19.2.14)(react@19.2.4):
- dependencies:
- react: 19.2.4
- tslib: 2.8.1
- optionalDependencies:
- '@types/react': 19.2.14
-
use-callback-ref@1.3.3(@types/react@19.2.14)(react@19.2.5):
dependencies:
react: 19.2.5
@@ -29978,37 +28742,18 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
- use-composed-ref@1.4.0(@types/react@19.2.14)(react@19.2.4):
- dependencies:
- react: 19.2.4
- optionalDependencies:
- '@types/react': 19.2.14
-
use-composed-ref@1.4.0(@types/react@19.2.14)(react@19.2.5):
dependencies:
react: 19.2.5
optionalDependencies:
'@types/react': 19.2.14
- use-isomorphic-layout-effect@1.2.1(@types/react@19.2.14)(react@19.2.4):
- dependencies:
- react: 19.2.4
- optionalDependencies:
- '@types/react': 19.2.14
-
use-isomorphic-layout-effect@1.2.1(@types/react@19.2.14)(react@19.2.5):
dependencies:
react: 19.2.5
optionalDependencies:
'@types/react': 19.2.14
- use-latest@1.3.0(@types/react@19.2.14)(react@19.2.4):
- dependencies:
- react: 19.2.4
- use-isomorphic-layout-effect: 1.2.1(@types/react@19.2.14)(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
-
use-latest@1.3.0(@types/react@19.2.14)(react@19.2.5):
dependencies:
react: 19.2.5
@@ -30016,14 +28761,6 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
- use-sidecar@1.1.3(@types/react@19.2.14)(react@19.2.4):
- dependencies:
- detect-node-es: 1.1.0
- react: 19.2.4
- tslib: 2.8.1
- optionalDependencies:
- '@types/react': 19.2.14
-
use-sidecar@1.1.3(@types/react@19.2.14)(react@19.2.5):
dependencies:
detect-node-es: 1.1.0
@@ -30032,10 +28769,6 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
- use-sync-external-store@1.6.0(react@19.2.4):
- dependencies:
- react: 19.2.4
-
use-sync-external-store@1.6.0(react@19.2.5):
dependencies:
react: 19.2.5
From 0ca9a3ed57f29e9eabcfd2eb6896c6bc6d70a970 Mon Sep 17 00:00:00 2001
From: Matthew Lipski
Date: Tue, 21 Apr 2026 16:55:33 +0200
Subject: [PATCH 08/15] Fixed lock file
---
pnpm-lock.yaml | 417 +++++++++++++++++++++++++------------------------
1 file changed, 217 insertions(+), 200 deletions(-)
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index c50b29c787..e16325a8ac 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -122,10 +122,10 @@ importers:
version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.5)
'@liveblocks/react-blocknote':
specifier: ^3.17.0
- version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)
+ version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)
'@liveblocks/react-tiptap':
specifier: ^3.17.0
- version: 3.17.0(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))
+ version: 3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))
'@liveblocks/react-ui':
specifier: ^3.17.0
version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -185,7 +185,7 @@ importers:
version: 4.0.2
'@tiptap/core':
specifier: ^3.13.0
- version: 3.22.1(@tiptap/pm@3.22.1)
+ version: 3.22.3(@tiptap/pm@3.22.3)
'@uppy/core':
specifier: ^3.13.1
version: 3.13.1
@@ -3656,10 +3656,10 @@ importers:
version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.5)
'@liveblocks/react-blocknote':
specifier: ^3.17.0
- version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)
+ version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)
'@liveblocks/react-tiptap':
specifier: ^3.17.0
- version: 3.17.0(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))
+ version: 3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))
'@liveblocks/react-ui':
specifier: ^3.17.0
version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -4072,7 +4072,7 @@ importers:
version: 6.0.22(react@19.2.5)
'@tiptap/core':
specifier: ^3.13.0
- version: 3.22.1(@tiptap/pm@3.22.1)
+ version: 3.22.3(@tiptap/pm@3.22.3)
react:
specifier: ^19.2.3
version: 19.2.5
@@ -4718,37 +4718,37 @@ importers:
version: 0.7.7
'@tiptap/core':
specifier: ^3.13.0
- version: 3.22.1(@tiptap/pm@3.22.1)
+ version: 3.22.3(@tiptap/pm@3.22.3)
'@tiptap/extension-bold':
specifier: ^3.13.0
- version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))
+ version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))
'@tiptap/extension-code':
specifier: ^3.13.0
- version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))
+ version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))
'@tiptap/extension-horizontal-rule':
specifier: ^3.13.0
- version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)
+ version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)
'@tiptap/extension-italic':
specifier: ^3.13.0
- version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))
+ version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))
'@tiptap/extension-paragraph':
specifier: ^3.13.0
- version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))
+ version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))
'@tiptap/extension-strike':
specifier: ^3.13.0
- version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))
+ version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))
'@tiptap/extension-text':
specifier: ^3.13.0
- version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))
+ version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))
'@tiptap/extension-underline':
specifier: ^3.13.0
- version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))
+ version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))
'@tiptap/extensions':
specifier: ^3.13.0
- version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)
+ version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)
'@tiptap/pm':
specifier: ^3.13.0
- version: 3.22.1
+ version: 3.22.3
emoji-mart:
specifier: ^5.6.0
version: 5.6.0
@@ -4958,13 +4958,13 @@ importers:
version: 0.7.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@tiptap/core':
specifier: ^3.13.0
- version: 3.22.1(@tiptap/pm@3.22.1)
+ version: 3.22.3(@tiptap/pm@3.22.3)
'@tiptap/pm':
specifier: ^3.13.0
- version: 3.22.1
+ version: 3.22.3
'@tiptap/react':
specifier: ^3.13.0
- version: 3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ version: 3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@types/use-sync-external-store':
specifier: 1.5.0
version: 1.5.0
@@ -5043,10 +5043,10 @@ importers:
version: link:../react
'@tiptap/core':
specifier: ^3.13.0
- version: 3.22.1(@tiptap/pm@3.22.1)
+ version: 3.22.3(@tiptap/pm@3.22.3)
'@tiptap/pm':
specifier: ^3.13.0
- version: 3.22.1
+ version: 3.22.3
jsdom:
specifier: ^25.0.1
version: 25.0.1(canvas@2.11.2)
@@ -5219,7 +5219,7 @@ importers:
version: 0.1.8(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-transform@1.12.0)(prosemirror-view@1.41.8)
'@tiptap/core':
specifier: ^3.13.0
- version: 3.22.1(@tiptap/pm@3.22.1)
+ version: 3.22.3(@tiptap/pm@3.22.3)
ai:
specifier: ^6.0.5
version: 6.0.5(zod@4.3.6)
@@ -5231,7 +5231,7 @@ importers:
version: 4.6.2
prosemirror-changeset:
specifier: ^2.3.1
- version: 2.3.1
+ version: 2.4.1
prosemirror-model:
specifier: ^1.25.4
version: 1.25.4
@@ -5343,7 +5343,7 @@ importers:
version: 5.9.3
undici:
specifier: ^6.22.0
- version: 6.22.0
+ version: 6.25.0
vite:
specifier: ^8.0.8
version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)
@@ -5382,13 +5382,13 @@ importers:
version: link:../xl-ai
'@hono/node-server':
specifier: ^1.19.5
- version: 1.19.14(hono@4.12.10)
+ version: 1.19.14(hono@4.12.14)
ai:
specifier: ^6.0.5
version: 6.0.5(zod@4.3.6)
hono:
specifier: ^4.10.3
- version: 4.12.10
+ version: 4.12.14
devDependencies:
eslint:
specifier: ^8.57.1
@@ -5404,7 +5404,7 @@ importers:
version: 5.9.3
undici:
specifier: ^6.22.0
- version: 6.22.0
+ version: 6.25.0
vite:
specifier: ^8.0.8
version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)
@@ -5544,7 +5544,7 @@ importers:
version: link:../react
'@tiptap/core':
specifier: ^3.13.0
- version: 3.22.1(@tiptap/pm@3.22.1)
+ version: 3.22.3(@tiptap/pm@3.22.3)
prosemirror-model:
specifier: ^1.25.4
version: 1.25.4
@@ -5790,10 +5790,10 @@ importers:
version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.5)
'@liveblocks/react-blocknote':
specifier: ^3.17.0
- version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)
+ version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)
'@liveblocks/react-tiptap':
specifier: ^3.17.0
- version: 3.17.0(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))
+ version: 3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))
'@liveblocks/react-ui':
specifier: ^3.17.0
version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
@@ -5958,7 +5958,7 @@ importers:
version: 1.51.1
'@tiptap/pm':
specifier: ^3.13.0
- version: 3.22.1
+ version: 3.22.3
'@types/node':
specifier: ^20.19.22
version: 20.19.37
@@ -6082,8 +6082,8 @@ packages:
resolution: {integrity: sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg==}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
- '@asamuzakjp/dom-selector@7.1.1':
- resolution: {integrity: sha512-67RZDnYRc8H/8MLDgQCDE//zoqVFwajkepHZgmXrbwybzXOEwOWGPYGmALYl9J2DOLfFPPs6kKCqmbzV895hTQ==}
+ '@asamuzakjp/dom-selector@7.0.10':
+ resolution: {integrity: sha512-KyOb19eytNSELkmdqzZZUXWCU25byIlOld5qVFg0RYdS0T3tt7jeDByxk9hIAC73frclD8GKrHttr0SUjKCCdQ==}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
'@asamuzakjp/generational-cache@1.0.1':
@@ -7052,9 +7052,15 @@ packages:
'@date-fns/tz@1.4.1':
resolution: {integrity: sha512-P5LUNhtbj6YfI3iJjw5EL9eUAG6OitD0W3fWQcpQjDRc/QIsL0tRNuO1PcDvPccWL1fSTXXdE1ds+l95DV/OFA==}
+ '@emnapi/core@1.10.0':
+ resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==}
+
'@emnapi/core@1.9.2':
resolution: {integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==}
+ '@emnapi/runtime@1.10.0':
+ resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==}
+
'@emnapi/runtime@1.9.2':
resolution: {integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==}
@@ -10445,79 +10451,79 @@ packages:
'@types/react-dom':
optional: true
- '@tiptap/core@3.22.1':
- resolution: {integrity: sha512-6wPNhkdLIGYiKAGqepDCRtR0TYGJxV40SwOEN2vlPhsXqAgzmyG37UyREj5pGH5xTekugqMCgCnyRg7m5nYoYQ==}
+ '@tiptap/core@3.22.3':
+ resolution: {integrity: sha512-Dv9MKK5BDWCF0N2l6/Pxv3JNCce2kwuWf2cKMBc2bEetx0Pn6o7zlFmSxMvYK4UtG1Tw9Yg/ZHi6QOFWK0Zm9Q==}
peerDependencies:
- '@tiptap/pm': ^3.22.1
+ '@tiptap/pm': ^3.22.3
- '@tiptap/extension-bold@3.15.3':
- resolution: {integrity: sha512-I8JYbkkUTNUXbHd/wCse2bR0QhQtJD7+0/lgrKOmGfv5ioLxcki079Nzuqqay3PjgYoJLIJQvm3RAGxT+4X91w==}
+ '@tiptap/extension-bold@3.22.3':
+ resolution: {integrity: sha512-tysipHla2zCWr8XNIWRaW9O+7i7/SoEqnRqSRUUi2ailcJjlia+RBy3RykhkgyThrQDStu5KGBS/UvrXwA+O1A==}
peerDependencies:
- '@tiptap/core': ^3.15.3
+ '@tiptap/core': ^3.22.3
- '@tiptap/extension-bubble-menu@3.22.1':
- resolution: {integrity: sha512-JJI63N55hLPjfqHgBnbG1ORZTXJiswnfBkfNd8YKytCC8D++g5qX3UMObxmJKLMBRGyqjEi6krzOyYtOix5ALA==}
+ '@tiptap/extension-bubble-menu@3.22.3':
+ resolution: {integrity: sha512-Y6zQjh0ypDg32HWgICEvmPSKjGLr39k3aDxxt/H0uQEZSfw4smT0hxUyyyjVjx68C6t6MTnwdfz0hPI5lL68vQ==}
peerDependencies:
- '@tiptap/core': ^3.22.1
- '@tiptap/pm': ^3.22.1
+ '@tiptap/core': ^3.22.3
+ '@tiptap/pm': ^3.22.3
- '@tiptap/extension-code@3.15.3':
- resolution: {integrity: sha512-x6LFt3Og6MFINYpsMzrJnz7vaT9Yk1t4oXkbJsJRSavdIWBEBcoRudKZ4sSe/AnsYlRJs8FY2uR76mt9e+7xAQ==}
+ '@tiptap/extension-code@3.22.3':
+ resolution: {integrity: sha512-wafWTDQOuMKtXpZEuk1PFQmzopabBciNLryL90MB9S03MNLaQQZYLnmYkDBlzAaLAbgF5QiC+2XZQEBQuTVjFQ==}
peerDependencies:
- '@tiptap/core': ^3.15.3
+ '@tiptap/core': ^3.22.3
- '@tiptap/extension-floating-menu@3.22.1':
- resolution: {integrity: sha512-TaZqmaoKv36FzbKTrBkkv74o0t8dYTftNZ7NotBqfSki0BB2PupTCJHafdu1YI0zmJ3xEzjB/XKcKPz2+10sDA==}
+ '@tiptap/extension-floating-menu@3.22.3':
+ resolution: {integrity: sha512-0f8b4KZ3XKai8GXWseIYJGdOfQr3evtFbBo3U08zy2aYzMMXWG0zEF7qe5/oiYp2aZ95edjjITnEceviTsZkIg==}
peerDependencies:
'@floating-ui/dom': ^1.0.0
- '@tiptap/core': ^3.22.1
- '@tiptap/pm': ^3.22.1
+ '@tiptap/core': ^3.22.3
+ '@tiptap/pm': ^3.22.3
- '@tiptap/extension-horizontal-rule@3.15.3':
- resolution: {integrity: sha512-FYkN7L6JsfwwNEntmLklCVKvgL0B0N47OXMacRk6kYKQmVQ4Nvc7q/VJLpD9sk4wh4KT1aiCBfhKEBTu5pv1fg==}
+ '@tiptap/extension-horizontal-rule@3.22.3':
+ resolution: {integrity: sha512-wI2bFzScs+KgWeBH/BtypcVKeYelCyqV0RG8nxsZMWtPrBhqixzNd0Oi3gEKtjSjKUqMQ/kjJAIRuESr5UzlHA==}
peerDependencies:
- '@tiptap/core': ^3.15.3
- '@tiptap/pm': ^3.15.3
+ '@tiptap/core': ^3.22.3
+ '@tiptap/pm': ^3.22.3
- '@tiptap/extension-italic@3.15.3':
- resolution: {integrity: sha512-6XeuPjcWy7OBxpkgOV7bD6PATO5jhIxc8SEK4m8xn8nelGTBIbHGqK37evRv+QkC7E0MUryLtzwnmmiaxcKL0Q==}
+ '@tiptap/extension-italic@3.22.3':
+ resolution: {integrity: sha512-LteA4cb4EGCiUtrK2JHvDF/Zg0/YqV4DUyHhAAho+oGEQDupZlsS6m0ia5wQcclkiTLzsoPrwcSNu6RDGQ16wQ==}
peerDependencies:
- '@tiptap/core': ^3.15.3
+ '@tiptap/core': ^3.22.3
- '@tiptap/extension-paragraph@3.15.3':
- resolution: {integrity: sha512-lc0Qu/1AgzcEfS67NJMj5tSHHhH6NtA6uUpvppEKGsvJwgE2wKG1onE4isrVXmcGRdxSMiCtyTDemPNMu6/ozQ==}
+ '@tiptap/extension-paragraph@3.22.3':
+ resolution: {integrity: sha512-oO7rhfyhEuwm+50s9K3GZPjYyEEEvFAvm1wXopvZnhbkBLydIWImBfrZoC5IQh4/sRDlTIjosV2C+ji5y0tUSg==}
peerDependencies:
- '@tiptap/core': ^3.15.3
+ '@tiptap/core': ^3.22.3
- '@tiptap/extension-strike@3.15.3':
- resolution: {integrity: sha512-Y1P3eGNY7RxQs2BcR6NfLo9VfEOplXXHAqkOM88oowWWOE7dMNeFFZM9H8HNxoQgXJ7H0aWW9B7ZTWM9hWli2Q==}
+ '@tiptap/extension-strike@3.22.3':
+ resolution: {integrity: sha512-jY2InoUlKkuk5KHoIDGdML1OCA2n6PRHAtxwHNkAmiYh0Khf0zaVPGFpx4dgQrN7W5Q1WE6oBZnjrvy6qb7w0g==}
peerDependencies:
- '@tiptap/core': ^3.15.3
+ '@tiptap/core': ^3.22.3
- '@tiptap/extension-text@3.15.3':
- resolution: {integrity: sha512-MhkBz8ZvrqOKtKNp+ZWISKkLUlTrDR7tbKZc2OnNcUTttL9dz0HwT+cg91GGz19fuo7ttDcfsPV6eVmflvGToA==}
+ '@tiptap/extension-text@3.22.3':
+ resolution: {integrity: sha512-Q9R7JsTdomP5uUjtPjNKxHT1xoh/i9OJZnmgJLe7FcgZEaPOQ3bWxmKZoLZQfDfZjyB8BtH+Hc7nUvhCMOePxw==}
peerDependencies:
- '@tiptap/core': ^3.15.3
+ '@tiptap/core': ^3.22.3
- '@tiptap/extension-underline@3.15.3':
- resolution: {integrity: sha512-r/IwcNN0W366jGu4Y0n2MiFq9jGa4aopOwtfWO4d+J0DyeS2m7Go3+KwoUqi0wQTiVU74yfi4DF6eRsMQ9/iHQ==}
+ '@tiptap/extension-underline@3.22.3':
+ resolution: {integrity: sha512-Ch6CBWRa5w90yYSPUW6x9Py9JdrXMqk3pZ9OIlMYD8A7BqyZGfiHerX7XDMYDS09KjyK3U9XH60/zxYOzXdDLA==}
peerDependencies:
- '@tiptap/core': ^3.15.3
+ '@tiptap/core': ^3.22.3
- '@tiptap/extensions@3.15.3':
- resolution: {integrity: sha512-ycx/BgxR4rc9tf3ZyTdI98Z19yKLFfqM3UN+v42ChuIwkzyr9zyp7kG8dB9xN2lNqrD+5y/HyJobz/VJ7T90gA==}
+ '@tiptap/extensions@3.22.3':
+ resolution: {integrity: sha512-s5eiMq0m5N6N+W7dU6rd60KgZyyCD7FvtPNNswISfPr12EQwJBfbjWwTqd0UKNzA4fNrhQEERXnzORkykttPeA==}
peerDependencies:
- '@tiptap/core': ^3.15.3
- '@tiptap/pm': ^3.15.3
+ '@tiptap/core': ^3.22.3
+ '@tiptap/pm': ^3.22.3
- '@tiptap/pm@3.22.1':
- resolution: {integrity: sha512-OSqSg2974eLJT5PNKFLM7156lBXCUf/dsKTQXWSzsLTf6HOP4dYP6c0YbAk6lgbNI+BdszsHNClmLVLA8H/L9A==}
+ '@tiptap/pm@3.22.3':
+ resolution: {integrity: sha512-NjfWjZuvrqmpICT+GZWNIjtOdhPyqFKDMtQy7tsQ5rErM9L2ZQdy/+T/BKSO1JdTeBhdg9OP+0yfsqoYp2aT6A==}
- '@tiptap/react@3.22.1':
- resolution: {integrity: sha512-1pIRfgK9wape4nDXVJRfgUcYVZdPPkuECbGtz8bo0rgtdsVN7B8PBVCDyuitZ7acdLbMuuX5+TxeUOvME8np7Q==}
+ '@tiptap/react@3.22.3':
+ resolution: {integrity: sha512-6MNr6z0PxwfJFs+BKhHcvPNvY+UV1PXgqzTiTM4Z9guml84iVZxv7ZOCSj1dFYTr3Bf1MiOs4hT1yvBFlTfIaQ==}
peerDependencies:
- '@tiptap/core': ^3.22.1
- '@tiptap/pm': ^3.22.1
+ '@tiptap/core': ^3.22.3
+ '@tiptap/pm': ^3.22.3
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
'@types/react-dom': ^17.0.0 || ^18.0.0 || ^19.0.0
react: ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -10688,6 +10694,9 @@ packages:
'@types/node@20.19.37':
resolution: {integrity: sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw==}
+ '@types/node@20.19.39':
+ resolution: {integrity: sha512-orrrD74MBUyK8jOAD/r0+lfa1I2MO6I+vAkmAWzMYbCcgrN4lCrmK52gRFQq/JRxfYPfonkr4b0jcY7Olqdqbw==}
+
'@types/node@22.13.13':
resolution: {integrity: sha512-ClsL5nMwKaBRwPcCvH8E7+nU4GxHVx1axNvMZTFHMEfNI7oahimt26P5zjVCRrjiIWj6YFXfE1v3dEp94wLcGQ==}
@@ -11485,9 +11494,6 @@ packages:
axios@1.15.0:
resolution: {integrity: sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==}
- axios@1.15.1:
- resolution: {integrity: sha512-WOG+Jj8ZOvR0a3rAn+Tuf1UQJRxw5venr6DgdbJzngJE3qG7X0kL83CZGpdHMxEm+ZK3seAbvFsw4FfOfP9vxg==}
-
axobject-query@4.1.0:
resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
engines: {node: '>= 0.4'}
@@ -12322,10 +12328,6 @@ packages:
resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==}
engines: {node: '>=0.12'}
- entities@8.0.0:
- resolution: {integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==}
- engines: {node: '>=20.19.0'}
-
env-paths@3.0.0:
resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -12766,8 +12768,8 @@ packages:
flatted@3.4.2:
resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==}
- follow-redirects@1.15.11:
- resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==}
+ follow-redirects@1.16.0:
+ resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==}
engines: {node: '>=4.0'}
peerDependencies:
debug: '*'
@@ -13196,8 +13198,8 @@ packages:
hoist-non-react-statics@3.3.2:
resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
- hono@4.12.10:
- resolution: {integrity: sha512-mx/p18PLy5og9ufies2GOSUqep98Td9q4i/EF6X7yJgAiIopxqdfIO3jbqsi3jRgTgw88jMDEzVKi+V2EF+27w==}
+ hono@4.12.14:
+ resolution: {integrity: sha512-am5zfg3yu6sqn5yjKBNqhnTX7Cv+m00ox+7jbaKkrLMRJ4rAdldd1xPd/JzbBWspqaQv6RSTrgFN95EsfhC+7w==}
engines: {node: '>=16.9.0'}
hsl-to-hex@1.0.0:
@@ -14548,8 +14550,8 @@ packages:
parse5@7.3.0:
resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
- parse5@8.0.1:
- resolution: {integrity: sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==}
+ parse5@8.0.0:
+ resolution: {integrity: sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==}
parseley@0.12.1:
resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==}
@@ -14848,8 +14850,8 @@ packages:
property-information@7.1.0:
resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==}
- prosemirror-changeset@2.3.1:
- resolution: {integrity: sha512-j0kORIBm8ayJNl3zQvD1TTPHJX3g042et6y/KQhZhnPrruO8exkTgG8X+NRpj7kIyMMEx74Xb3DyMIBtO0IKkQ==}
+ prosemirror-changeset@2.4.1:
+ resolution: {integrity: sha512-96WBLhOaYhJ+kPhLg3uW359Tz6I/MfcrQfL4EGv4SrcqKEMC1gmoGrXHecPE8eOwTVCJ4IwgfzM8fFad25wNfw==}
prosemirror-collab@1.3.1:
resolution: {integrity: sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==}
@@ -15240,8 +15242,8 @@ packages:
regjsgen@0.8.0:
resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==}
- regjsparser@0.13.0:
- resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==}
+ regjsparser@0.13.1:
+ resolution: {integrity: sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==}
hasBin: true
rehype-format@5.0.1:
@@ -15306,8 +15308,8 @@ packages:
resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==}
engines: {node: '>=10'}
- resolve@1.22.11:
- resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==}
+ resolve@1.22.12:
+ resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==}
engines: {node: '>= 0.4'}
hasBin: true
@@ -15885,6 +15887,10 @@ packages:
resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
engines: {node: '>=12.0.0'}
+ tinyglobby@0.2.16:
+ resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==}
+ engines: {node: '>=12.0.0'}
+
tinyrainbow@3.1.0:
resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==}
engines: {node: '>=14.0.0'}
@@ -16078,8 +16084,8 @@ packages:
undici-types@7.19.2:
resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==}
- undici@6.22.0:
- resolution: {integrity: sha512-hU/10obOIu62MGYjdskASR3CUAiYaFTtC9Pa6vHyf//mAipSvSQg6od2CnJswq7fvzNS3zJhxoRkgNVaHurWKw==}
+ undici@6.25.0:
+ resolution: {integrity: sha512-ZgpWDC5gmNiuY9CnLVXEH8rl50xhRCuLNA97fAUnKi8RRuV4E6KG31pDTsLVUKnohJE0I3XDrTeEydAXRw47xg==}
engines: {node: '>=18.17'}
undici@7.25.0:
@@ -16756,7 +16762,7 @@ snapshots:
'@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0)
'@csstools/css-tokenizer': 4.0.0
- '@asamuzakjp/dom-selector@7.1.1':
+ '@asamuzakjp/dom-selector@7.0.10':
dependencies:
'@asamuzakjp/generational-cache': 1.0.1
'@asamuzakjp/nwsapi': 2.3.9
@@ -17313,7 +17319,7 @@ snapshots:
'@babel/helper-plugin-utils': 7.28.6
debug: 4.4.3
lodash.debounce: 4.0.8
- resolve: 1.22.11
+ resolve: 1.22.12
transitivePeerDependencies:
- supports-color
@@ -18196,14 +18202,25 @@ snapshots:
'@date-fns/tz@1.4.1': {}
+ '@emnapi/core@1.10.0':
+ dependencies:
+ '@emnapi/wasi-threads': 1.2.1
+ tslib: 2.8.1
+
'@emnapi/core@1.9.2':
dependencies:
'@emnapi/wasi-threads': 1.2.1
tslib: 2.8.1
+ optional: true
+
+ '@emnapi/runtime@1.10.0':
+ dependencies:
+ tslib: 2.8.1
'@emnapi/runtime@1.9.2':
dependencies:
tslib: 2.8.1
+ optional: true
'@emnapi/wasi-threads@1.2.1':
dependencies:
@@ -18692,9 +18709,9 @@ snapshots:
dependencies:
'@hapi/hoek': 11.0.7
- '@hono/node-server@1.19.14(hono@4.12.10)':
+ '@hono/node-server@1.19.14(hono@4.12.14)':
dependencies:
- hono: 4.12.10
+ hono: 4.12.14
'@humanfs/core@0.19.1': {}
@@ -18802,7 +18819,7 @@ snapshots:
'@img/sharp-wasm32@0.34.5':
dependencies:
- '@emnapi/runtime': 1.9.2
+ '@emnapi/runtime': 1.10.0
optional: true
'@img/sharp-win32-arm64@0.34.5':
@@ -18968,17 +18985,17 @@ snapshots:
dependencies:
'@types/json-schema': 7.0.15
- '@liveblocks/react-blocknote@3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)':
+ '@liveblocks/react-blocknote@3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)':
dependencies:
'@blocknote/core': link:packages/core
'@blocknote/react': link:packages/react
'@liveblocks/client': 3.17.0(@types/json-schema@7.0.15)
'@liveblocks/core': 3.17.0(@types/json-schema@7.0.15)
'@liveblocks/react': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.5)
- '@liveblocks/react-tiptap': 3.17.0(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))
+ '@liveblocks/react-tiptap': 3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))
'@liveblocks/react-ui': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@liveblocks/yjs': 3.17.0(@types/json-schema@7.0.15)(yjs@13.6.30)
- '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
+ '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
react: 19.2.5
react-dom: 19.2.5(react@19.2.5)
vitest-tsconfig-paths: 3.4.1
@@ -18997,7 +19014,7 @@ snapshots:
- y-protocols
- yjs
- '@liveblocks/react-tiptap@3.17.0(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))':
+ '@liveblocks/react-tiptap@3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))':
dependencies:
'@floating-ui/react-dom': 2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@liveblocks/client': 3.17.0(@types/json-schema@7.0.15)
@@ -19005,10 +19022,10 @@ snapshots:
'@liveblocks/react': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.5)
'@liveblocks/react-ui': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
'@liveblocks/yjs': 3.17.0(@types/json-schema@7.0.15)(yjs@13.6.30)
- '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
- '@tiptap/pm': 3.22.1
- '@tiptap/react': 3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
- '@tiptap/suggestion': 2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)
+ '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
+ '@tiptap/pm': 3.22.3
+ '@tiptap/react': 3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
+ '@tiptap/suggestion': 2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)
cmdk: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
radix-ui: 1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
react: 19.2.5
@@ -19245,15 +19262,15 @@ snapshots:
'@napi-rs/wasm-runtime@0.2.12':
dependencies:
- '@emnapi/core': 1.9.2
- '@emnapi/runtime': 1.9.2
+ '@emnapi/core': 1.10.0
+ '@emnapi/runtime': 1.10.0
'@tybys/wasm-util': 0.10.1
optional: true
'@napi-rs/wasm-runtime@0.2.4':
dependencies:
- '@emnapi/core': 1.9.2
- '@emnapi/runtime': 1.9.2
+ '@emnapi/core': 1.10.0
+ '@emnapi/runtime': 1.10.0
'@tybys/wasm-util': 0.9.0
'@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)':
@@ -19354,7 +19371,7 @@ snapshots:
picomatch: 4.0.4
semver: 7.7.4
source-map-support: 0.5.19
- tinyglobby: 0.2.12
+ tinyglobby: 0.2.16
tslib: 2.8.1
transitivePeerDependencies:
- '@babel/traverse'
@@ -21795,65 +21812,65 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@tiptap/core@3.22.1(@tiptap/pm@3.22.1)':
+ '@tiptap/core@3.22.3(@tiptap/pm@3.22.3)':
dependencies:
- '@tiptap/pm': 3.22.1
+ '@tiptap/pm': 3.22.3
- '@tiptap/extension-bold@3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))':
+ '@tiptap/extension-bold@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))':
dependencies:
- '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
+ '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
- '@tiptap/extension-bubble-menu@3.22.1(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)':
+ '@tiptap/extension-bubble-menu@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)':
dependencies:
'@floating-ui/dom': 1.7.6
- '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
- '@tiptap/pm': 3.22.1
+ '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
+ '@tiptap/pm': 3.22.3
optional: true
- '@tiptap/extension-code@3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))':
+ '@tiptap/extension-code@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))':
dependencies:
- '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
+ '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
- '@tiptap/extension-floating-menu@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)':
+ '@tiptap/extension-floating-menu@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)':
dependencies:
'@floating-ui/dom': 1.7.6
- '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
- '@tiptap/pm': 3.22.1
+ '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
+ '@tiptap/pm': 3.22.3
optional: true
- '@tiptap/extension-horizontal-rule@3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)':
+ '@tiptap/extension-horizontal-rule@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)':
dependencies:
- '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
- '@tiptap/pm': 3.22.1
+ '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
+ '@tiptap/pm': 3.22.3
- '@tiptap/extension-italic@3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))':
+ '@tiptap/extension-italic@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))':
dependencies:
- '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
+ '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
- '@tiptap/extension-paragraph@3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))':
+ '@tiptap/extension-paragraph@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))':
dependencies:
- '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
+ '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
- '@tiptap/extension-strike@3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))':
+ '@tiptap/extension-strike@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))':
dependencies:
- '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
+ '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
- '@tiptap/extension-text@3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))':
+ '@tiptap/extension-text@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))':
dependencies:
- '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
+ '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
- '@tiptap/extension-underline@3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))':
+ '@tiptap/extension-underline@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))':
dependencies:
- '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
+ '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
- '@tiptap/extensions@3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)':
+ '@tiptap/extensions@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)':
dependencies:
- '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
- '@tiptap/pm': 3.22.1
+ '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
+ '@tiptap/pm': 3.22.3
- '@tiptap/pm@3.22.1':
+ '@tiptap/pm@3.22.3':
dependencies:
- prosemirror-changeset: 2.3.1
+ prosemirror-changeset: 2.4.1
prosemirror-collab: 1.3.1
prosemirror-commands: 1.7.1
prosemirror-dropcursor: 1.8.2
@@ -21872,10 +21889,10 @@ snapshots:
prosemirror-transform: 1.12.0
prosemirror-view: 1.41.8
- '@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
+ '@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
dependencies:
- '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
- '@tiptap/pm': 3.22.1
+ '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
+ '@tiptap/pm': 3.22.3
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
'@types/use-sync-external-store': 0.0.6
@@ -21884,15 +21901,15 @@ snapshots:
react-dom: 19.2.5(react@19.2.5)
use-sync-external-store: 1.6.0(react@19.2.5)
optionalDependencies:
- '@tiptap/extension-bubble-menu': 3.22.1(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)
- '@tiptap/extension-floating-menu': 3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)
+ '@tiptap/extension-bubble-menu': 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)
+ '@tiptap/extension-floating-menu': 3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)
transitivePeerDependencies:
- '@floating-ui/dom'
- '@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)':
+ '@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)':
dependencies:
- '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1)
- '@tiptap/pm': 3.22.1
+ '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3)
+ '@tiptap/pm': 3.22.3
'@transloadit/prettier-bytes@0.3.5': {}
@@ -21900,7 +21917,7 @@ snapshots:
dependencies:
minimatch: 10.2.5
path-browserify: 1.0.1
- tinyglobby: 0.2.15
+ tinyglobby: 0.2.16
'@tybys/wasm-util@0.10.1':
dependencies:
@@ -21945,7 +21962,7 @@ snapshots:
'@types/connect@3.4.38':
dependencies:
- '@types/node': 25.6.0
+ '@types/node': 25.5.0
'@types/cors@2.8.19':
dependencies:
@@ -22078,12 +22095,16 @@ snapshots:
'@types/mysql@2.15.27':
dependencies:
- '@types/node': 25.6.0
+ '@types/node': 25.5.0
'@types/node@20.19.37':
dependencies:
undici-types: 6.21.0
+ '@types/node@20.19.39':
+ dependencies:
+ undici-types: 6.21.0
+
'@types/node@22.13.13':
dependencies:
undici-types: 6.20.0
@@ -22112,7 +22133,7 @@ snapshots:
'@types/pg@8.15.6':
dependencies:
- '@types/node': 25.6.0
+ '@types/node': 25.5.0
pg-protocol: 1.13.0
pg-types: 2.2.0
@@ -22124,7 +22145,7 @@ snapshots:
'@types/pixelmatch@5.2.6':
dependencies:
- '@types/node': 25.5.0
+ '@types/node': 25.6.0
'@types/prop-types@15.7.15': {}
@@ -22150,7 +22171,7 @@ snapshots:
'@types/tedious@4.0.14':
dependencies:
- '@types/node': 25.6.0
+ '@types/node': 25.5.0
'@types/tough-cookie@4.0.5': {}
@@ -22313,7 +22334,7 @@ snapshots:
debug: 4.4.3
minimatch: 10.2.5
semver: 7.7.4
- tinyglobby: 0.2.15
+ tinyglobby: 0.2.16
ts-api-utils: 2.5.0(typescript@5.9.3)
typescript: 5.9.3
transitivePeerDependencies:
@@ -22762,7 +22783,7 @@ snapshots:
'@y-sweet/sdk@0.6.4':
dependencies:
- '@types/node': 20.19.37
+ '@types/node': 20.19.39
'@yarnpkg/lockfile@1.1.0': {}
@@ -23001,15 +23022,7 @@ snapshots:
axios@1.15.0:
dependencies:
- follow-redirects: 1.15.11
- form-data: 4.0.5
- proxy-from-env: 2.1.0
- transitivePeerDependencies:
- - debug
-
- axios@1.15.1:
- dependencies:
- follow-redirects: 1.15.11
+ follow-redirects: 1.16.0
form-data: 4.0.5
proxy-from-env: 2.1.0
transitivePeerDependencies:
@@ -23030,7 +23043,7 @@ snapshots:
dependencies:
'@babel/runtime': 7.29.2
cosmiconfig: 7.1.0
- resolve: 1.22.11
+ resolve: 1.22.12
babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.0):
dependencies:
@@ -23753,7 +23766,7 @@ snapshots:
dotenv-expand@11.0.7:
dependencies:
- dotenv: 16.6.1
+ dotenv: 16.4.7
dotenv@16.4.7: {}
@@ -23790,7 +23803,7 @@ snapshots:
engine.io@6.6.6:
dependencies:
'@types/cors': 2.8.19
- '@types/node': 25.5.0
+ '@types/node': 25.6.0
'@types/ws': 8.18.1
accepts: 1.3.8
base64id: 2.0.0
@@ -23817,8 +23830,6 @@ snapshots:
entities@6.0.1: {}
- entities@8.0.0: {}
-
env-paths@3.0.0: {}
error-ex@1.3.4:
@@ -24104,7 +24115,7 @@ snapshots:
get-tsconfig: 4.13.7
is-bun-module: 2.0.0
stable-hash: 0.0.5
- tinyglobby: 0.2.15
+ tinyglobby: 0.2.16
unrs-resolver: 1.11.1
optionalDependencies:
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1))
@@ -24618,7 +24629,7 @@ snapshots:
flatted@3.4.2: {}
- follow-redirects@1.15.11: {}
+ follow-redirects@1.16.0: {}
fontkit@2.0.4:
dependencies:
@@ -25155,7 +25166,7 @@ snapshots:
dependencies:
react-is: 16.13.1
- hono@4.12.10: {}
+ hono@4.12.14: {}
hsl-to-hex@1.0.0:
dependencies:
@@ -25619,7 +25630,7 @@ snapshots:
jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0):
dependencies:
'@asamuzakjp/css-color': 5.1.11
- '@asamuzakjp/dom-selector': 7.1.1
+ '@asamuzakjp/dom-selector': 7.0.10
'@bramus/specificity': 2.4.2
'@csstools/css-syntax-patches-for-csstree': 1.1.3(css-tree@3.2.1)
'@exodus/bytes': 1.15.0(@noble/hashes@2.0.1)
@@ -25629,7 +25640,7 @@ snapshots:
html-encoding-sniffer: 6.0.0(@noble/hashes@2.0.1)
is-potential-custom-element-name: 1.0.1
lru-cache: 11.2.7
- parse5: 8.0.1
+ parse5: 8.0.0
saxes: 6.0.0
symbol-tree: 3.2.4
tough-cookie: 6.0.1
@@ -26782,7 +26793,7 @@ snapshots:
bl: 4.1.0
chalk: 4.1.2
cli-cursor: 3.1.0
- cli-spinners: 2.9.2
+ cli-spinners: 2.6.1
is-interactive: 1.0.0
log-symbols: 4.1.0
strip-ansi: 6.0.1
@@ -26868,9 +26879,9 @@ snapshots:
dependencies:
entities: 6.0.1
- parse5@8.0.1:
+ parse5@8.0.0:
dependencies:
- entities: 8.0.0
+ entities: 6.0.1
parseley@0.12.1:
dependencies:
@@ -27090,7 +27101,7 @@ snapshots:
property-information@7.1.0: {}
- prosemirror-changeset@2.3.1:
+ prosemirror-changeset@2.4.1:
dependencies:
prosemirror-transform: 1.12.0
@@ -27581,7 +27592,7 @@ snapshots:
regenerate: 1.4.2
regenerate-unicode-properties: 10.2.2
regjsgen: 0.8.0
- regjsparser: 0.13.0
+ regjsparser: 0.13.1
unicode-match-property-ecmascript: 2.0.0
unicode-match-property-value-ecmascript: 2.2.1
@@ -27596,7 +27607,7 @@ snapshots:
regjsgen@0.8.0: {}
- regjsparser@0.13.0:
+ regjsparser@0.13.1:
dependencies:
jsesc: 3.1.0
@@ -27707,8 +27718,9 @@ snapshots:
resolve.exports@2.0.3: {}
- resolve@1.22.11:
+ resolve@1.22.12:
dependencies:
+ es-errors: 1.3.0
is-core-module: 2.16.1
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
@@ -28428,6 +28440,11 @@ snapshots:
fdir: 6.5.0(picomatch@4.0.4)
picomatch: 4.0.4
+ tinyglobby@0.2.16:
+ dependencies:
+ fdir: 6.5.0(picomatch@4.0.4)
+ picomatch: 4.0.4
+
tinyrainbow@3.1.0: {}
tldts-core@6.1.86: {}
@@ -28617,7 +28634,7 @@ snapshots:
undici-types@7.19.2: {}
- undici@6.22.0: {}
+ undici@6.25.0: {}
undici@7.25.0: {}
@@ -28899,7 +28916,7 @@ snapshots:
picomatch: 4.0.4
postcss: 8.5.8
rolldown: 1.0.0-rc.15
- tinyglobby: 0.2.15
+ tinyglobby: 0.2.16
optionalDependencies:
'@types/node': 20.19.37
esbuild: 0.27.5
@@ -28915,7 +28932,7 @@ snapshots:
picomatch: 4.0.4
postcss: 8.5.8
rolldown: 1.0.0-rc.15
- tinyglobby: 0.2.15
+ tinyglobby: 0.2.16
optionalDependencies:
'@types/node': 25.5.0
esbuild: 0.27.5
@@ -28932,7 +28949,7 @@ snapshots:
picomatch: 4.0.4
postcss: 8.5.8
rolldown: 1.0.0-rc.15
- tinyglobby: 0.2.15
+ tinyglobby: 0.2.16
optionalDependencies:
'@types/node': 25.6.0
esbuild: 0.27.5
@@ -28969,7 +28986,7 @@ snapshots:
std-env: 4.0.0
tinybench: 2.9.0
tinyexec: 1.0.4
- tinyglobby: 0.2.15
+ tinyglobby: 0.2.16
tinyrainbow: 3.1.0
vite: 8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)
why-is-node-running: 2.3.0
@@ -28998,7 +29015,7 @@ snapshots:
std-env: 4.0.0
tinybench: 2.9.0
tinyexec: 1.0.4
- tinyglobby: 0.2.15
+ tinyglobby: 0.2.16
tinyrainbow: 3.1.0
vite: 8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)
why-is-node-running: 2.3.0
@@ -29028,7 +29045,7 @@ snapshots:
std-env: 4.0.0
tinybench: 2.9.0
tinyexec: 1.0.4
- tinyglobby: 0.2.15
+ tinyglobby: 0.2.16
tinyrainbow: 3.1.0
vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)
why-is-node-running: 2.3.0
@@ -29057,7 +29074,7 @@ snapshots:
std-env: 4.0.0
tinybench: 2.9.0
tinyexec: 1.0.4
- tinyglobby: 0.2.15
+ tinyglobby: 0.2.16
tinyrainbow: 3.1.0
vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)
why-is-node-running: 2.3.0
@@ -29076,7 +29093,7 @@ snapshots:
wait-on@9.0.5:
dependencies:
- axios: 1.15.1
+ axios: 1.15.0
joi: 18.1.2
lodash: 4.18.1
minimist: 1.2.8
From da46433eea1413bb7f9d8cc6236653f2002210e9 Mon Sep 17 00:00:00 2001
From: Matthew Lipski <50169049+matthewlipski@users.noreply.github.com>
Date: Thu, 23 Apr 2026 10:14:02 +0200
Subject: [PATCH 09/15] fix: Non-editable link clicks opening duplicate tabs
(#2667)
* Fixed clicking non-editable links opening 2 new tabs instead of 1
* fix: migrate MSW snapshot hashes after schema change to link HTML
The link refactor changed the HTML representation of tags by adding
classname="bn-inline-content-section" data-inline-content-type="link"
attributes. This changed the request bodies sent to LLM providers in tests,
which broke the MD5 hash-based MSW snapshot filenames. Additionally, the
test runtime now captures actual request headers (authorization,
content-type, etc.) instead of empty arrays, further changing the hashes.
57 snapshot files were migrated (56 via script + 1 manual fix):
- Old-hash files deleted, new-hash files created with the same valid
200 response bodies transplanted from the originals.
## How MSW Snapshot Hashing Works
Each test records HTTP requests via msw-snapshot. The snapshot filename
includes an MD5 hash computed from:
[method, url.origin, url.pathname, sorted(searchParams), sorted(headers), body]
See createRequestHash() in each test file (e.g. htmlBlocks.test.ts:22).
The hash function is toHashString() from msw-snapshot, which does:
crypto.createHash('md5').update(JSON.stringify(array), 'binary').digest('hex')
## How to Migrate Snapshots When Schema Changes
When a code change alters the HTML/content sent to LLM providers, the
request body changes, which changes the hash, which means snapshot files
won't be found by filename.
### Step 1: Run the tests to create duplicate snapshots
cd packages/xl-ai && npm run test
Tests with hash mismatches will try to fetch from real servers (which
will fail without API keys), creating NEW snapshot files with correct
hashes but 401 error responses alongside the OLD files with valid 200
responses. The validateTestEnvironment test will report duplicates.
### Step 2: Identify duplicate pairs
For each test directory under __msw_snapshots__/{provider}/{model}/,
look for snapshot pairs with the same test name prefix but different
hashes. The OLD file (valid 200 response, older mtime) needs its
response transplanted into the NEW file (401 error, newer mtime).
### Step 3: Transplant responses
For each duplicate pair:
1. Read the response body from the OLD file (status 200)
2. Write that response into the NEW file (replacing the 401 error)
3. Delete the OLD file
This can be scripted in Python:
import json, os, glob
from collections import defaultdict
base = 'packages/xl-ai/src/api/formats/html-blocks/__snapshots__'
files = glob.glob(f'{base}/**/*.json', recursive=True)
# Group by test name prefix (everything before the hash)
groups = defaultdict(list)
for f in files:
name = os.path.basename(f)
# Pattern: testname_N_hash.json
prefix = '_'.join(name.rsplit('_', 1)[:-1])
groups[prefix].append(f)
for prefix, paths in groups.items():
if len(paths) == 2:
# Identify old (200) vs new (401) by checking response status
for p in paths:
data = json.load(open(p))
if data['response']['status'] == 200:
old_file, old_data = p, data
else:
new_file = p
# Transplant response
new_data = json.load(open(new_file))
new_data['response'] = old_data['response']
json.dump(new_data, open(new_file, 'w'), indent=2)
os.remove(old_file)
### Step 4: Handle edge cases
Some tests may fail with 'TypeError: unusable' at Request.clone in
msw-snapshot. This happens when a snapshot hash changed but the test
crashes before creating a new file (no duplicate pair to migrate).
To fix these:
1. Add debug logging in createSnapshotPath to print the computed hash
2. Run the failing test to get the new hash
3. Rename the old snapshot file to use the new hash
4. Remove the debug logging
### Step 5: Verify
cd packages/xl-ai && npm run test
All tests should pass and the duplicate validation test should be green.
---------
Co-authored-by: Nick the Sick
---
.../Link/helpers/clickHandler.ts | 10 ++++++--
.../extensions/tiptap-extensions/Link/link.ts | 2 ++
...h_1_801ad86e0c3a4562338793805e66a52f.json} | 25 +++++++++++++++++--
...n_1_b6ecf36636295d284db3ba7243cd4835.json} | 25 +++++++++++++++++--
...h_1_3c276441275032fe98b12356026537a0.json} | 17 +++++++++++--
...n_1_0207de852025d2c0a1d417a7d66fa03c.json} | 17 +++++++++++--
...h_1_937647a13580b4dbb611e3de3b2c8788.json} | 17 +++++++++++--
...n_1_d9ea724851130649f405ff50190452b5.json} | 17 +++++++++++--
...k_1_afd5ee1bda075c7482d1861d03ad0a29.json} | 25 +++++++++++++++++--
...k_1_9a26ba1fa4692c62b4f519ed3669fdc5.json} | 17 +++++++++++--
...k_1_2fd92a4c2642fff1ef49d65014aa1ac3.json} | 17 +++++++++++--
...k_1_fd54b2fefac722ab5057252b68c4faec.json} | 25 +++++++++++++++++--
...k_1_93038afbc107d8439571e6287fc76a8f.json} | 25 +++++++++++++++++--
...n_1_7035efab1f6d9e5a46dde12d39f9ed19.json} | 25 +++++++++++++++++--
...e_1_467258028a5a6bef3542c1a5417d4b3d.json} | 25 +++++++++++++++++--
...k_1_90c0b37bad31f3b9b0d15c492c610d0b.json} | 25 +++++++++++++++++--
...n_1_3e8b04b91ca15c467180df1c60c9e1b2.json} | 25 +++++++++++++++++--
...t_1_3551fccc96307281574c2c96eaa05002.json} | 25 +++++++++++++++++--
...p_1_e7ef562479ab33624bfa2bd75c4d1f5e.json} | 25 +++++++++++++++++--
...t_1_3a3fa0950f819e8073475e78106b353d.json} | 25 +++++++++++++++++--
...)_1_7a05ed5acf369206dda586e41235430b.json} | 25 +++++++++++++++++--
...)_1_0d9c02b01414a68a2dab4af392179183.json} | 25 +++++++++++++++++--
...n_1_ade79bca32d420b4323b2a888817b5d5.json} | 25 +++++++++++++++++--
...t_1_f90879213f18f8b8e13748443299b6dc.json} | 25 +++++++++++++++++--
...p_1_3f8e13d1cfa75e24cd4e0dfb0eab9ef4.json} | 25 +++++++++++++++++--
...t_1_07d3d8730ff541c3a2bf5e53c6707dac.json} | 25 +++++++++++++++++--
...e_1_6cc7ad0b6e2c278095f03deb353e4c9b.json} | 0
...k_1_17fe180166622808ade902a2eccad8aa.json} | 17 +++++++++++--
...k_1_a055d5e9dcf9d3ce1e1cddf57b441dc1.json} | 17 +++++++++++--
...n_1_7692c767dc159df75724f2a49cc38b0e.json} | 17 +++++++++++--
...e_1_b81e76afad4cf5e84bd6815d2bc8d069.json} | 17 +++++++++++--
...k_1_da7d1e5e03db624c6007dc8137fc3588.json} | 17 +++++++++++--
...n_1_758855f114117cd6c8f70c7caa84cc68.json} | 17 +++++++++++--
...t_1_222775b0c617ba9bcada86cd238b6d64.json} | 17 +++++++++++--
...p_1_ad74c153b3f0beb850955148f0a42c78.json} | 17 +++++++++++--
...t_1_4bf0b01b1e009966973599ebc2194362.json} | 17 +++++++++++--
...)_1_5ce19f53eaf195c6e284c91b0db7d586.json} | 17 +++++++++++--
...)_1_0f8ce96b644d6bd531f0558208cf5790.json} | 17 +++++++++++--
...n_1_1cf9377128e689feac5e5e13a1d0e26f.json} | 17 +++++++++++--
...t_1_260e8bc6dd5c9cbd0650701e6d95ada3.json} | 17 +++++++++++--
...p_1_339e6b8d82d281185c6ccbcd1809374f.json} | 17 +++++++++++--
...t_1_ff26ae30546f4e0d4279e60e4b7a1fbf.json} | 17 +++++++++++--
...e_1_d9cbf71a8b55c8be0b247c3bb200c59c.json} | 17 +++++++++++--
...k_1_d1f45ba6fee8787529137c920d6bc58e.json} | 17 +++++++++++--
...k_1_c9489269d9a2d4353eda54289ed7f395.json} | 17 +++++++++++--
...n_1_416931598559b3e7e906647a66f0b8b1.json} | 17 +++++++++++--
...e_1_9728e4dd714a6a14ce441d72378dd67a.json} | 17 +++++++++++--
...k_1_198059a270dbbb88db8f1cba97503205.json} | 17 +++++++++++--
...n_1_9313219c085c3b39c7c14c00f388b4be.json} | 17 +++++++++++--
...t_1_f7a4c2a7fc5e362c3484586f45b2501d.json} | 17 +++++++++++--
...p_1_38090ebbfaca38fca97b1e4f0a0dd942.json} | 17 +++++++++++--
...t_1_6374879c3f8fbc16db7c43304d2faacd.json} | 17 +++++++++++--
...)_1_0afac4d00d3f0bbdfd251a8394b6ff28.json} | 17 +++++++++++--
...)_1_00156bb4dd5722d44e0ff5332561928a.json} | 17 +++++++++++--
...n_1_24abe901176e9d834f9542d0b26e82ae.json} | 17 +++++++++++--
...t_1_3f479c81e81f4f9460df3af74ddd2207.json} | 17 +++++++++++--
...p_1_6012638796e6e00b242b43642bb90a7a.json} | 17 +++++++++++--
...t_1_04e027a89c6d4e69a0f805d5c8987e2c.json} | 17 +++++++++++--
...e_1_72aecf62b6c9c807411d248d46a62eea.json} | 17 +++++++++++--
.../hardbreak/between-links.html | 4 +++
.../blocknoteHTML/hardbreak/link.html | 4 +++
.../blocknoteHTML/link/adjacent.html | 4 +++
.../blocknoteHTML/link/basic.html | 2 ++
.../blocknoteHTML/link/styled.html | 4 +++
.../html/hardbreak/between-links.html | 4 +++
.../__snapshots__/html/hardbreak/link.html | 4 +++
.../__snapshots__/html/link/adjacent.html | 4 +++
.../export/__snapshots__/html/link/basic.html | 2 ++
.../__snapshots__/html/link/styled.html | 4 +++
69 files changed, 1030 insertions(+), 114 deletions(-)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{add and update paragraph_1_380a0c02b5089b38247457135c044cf7.json => add and update paragraph_1_801ad86e0c3a4562338793805e66a52f.json} (77%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{add paragraph and update selection_1_298b51bb28c5f95ab9a00205d4e38460.json => add paragraph and update selection_1_b6ecf36636295d284db3ba7243cd4835.json} (77%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{add and update paragraph_1_f6253c11196abdbeae0f898cc9df85eb.json => add and update paragraph_1_3c276441275032fe98b12356026537a0.json} (66%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{add paragraph and update selection_1_dc29d735348684d1ec3e290ad8c03a71.json => add paragraph and update selection_1_0207de852025d2c0a1d417a7d66fa03c.json} (66%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{add and update paragraph_1_a27ae10badcc3913a00eb86f77ac64db.json => add and update paragraph_1_937647a13580b4dbb611e3de3b2c8788.json} (92%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{add paragraph and update selection_1_86f10ca461ee44e74ae571fb9f214338.json => add paragraph and update selection_1_d9ea724851130649f405ff50190452b5.json} (92%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{delete first block_1_91346200727a71ab9ad8c5d014835688.json => delete first block_1_afd5ee1bda075c7482d1861d03ad0a29.json} (69%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{delete first block_1_150a539024aa981c9f6bcb068875a6c9.json => delete first block_1_9a26ba1fa4692c62b4f519ed3669fdc5.json} (66%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{delete first block_1_1b3c4ac85d448677697457098332ceba.json => delete first block_1_2fd92a4c2642fff1ef49d65014aa1ac3.json} (88%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{drop mark and link and change text within mark_1_fe3cac9da9d1e17a20ee8c0c4380d925.json => drop mark and link and change text within mark_1_fd54b2fefac722ab5057252b68c4faec.json} (72%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{drop mark and link_1_f6ee881e6d3b4cd9553256523e67683a.json => drop mark and link_1_93038afbc107d8439571e6287fc76a8f.json} (72%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{plain source block, add mention_1_ccd752aefdbc2252a5a09bebac393afb.json => plain source block, add mention_1_7035efab1f6d9e5a46dde12d39f9ed19.json} (75%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{standard update_1_c44a31a1631a3a10efcd5e17645998f1.json => standard update_1_467258028a5a6bef3542c1a5417d4b3d.json} (70%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{styles + ic in source block, remove mark_1_df177a6a4f26b0fbcba307c6d21cab76.json => styles + ic in source block, remove mark_1_90c0b37bad31f3b9b0d15c492c610d0b.json} (79%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{styles + ic in source block, remove mention_1_4ba9f3411694f807e85e8e33f4b3c8cd.json => styles + ic in source block, remove mention_1_3e8b04b91ca15c467180df1c60c9e1b2.json} (77%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{styles + ic in source block, replace content_1_f5b001d0f8415a00e8b043f3e3e33535.json => styles + ic in source block, replace content_1_3551fccc96307281574c2c96eaa05002.json} (71%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{styles + ic in source block, update mention prop_1_c197e3f5ce1dbc1a68765acbd198881a.json => styles + ic in source block, update mention prop_1_e7ef562479ab33624bfa2bd75c4d1f5e.json} (79%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{styles + ic in source block, update text_1_a0b93418bb2a5c0049e0a5c896f72191.json => styles + ic in source block, update text_1_3a3fa0950f819e8073475e78106b353d.json} (79%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{styles + ic in target block, add mark (paragraph)_1_fb2285b8d362cb8adcf78f6039ad3058.json => styles + ic in target block, add mark (paragraph)_1_7a05ed5acf369206dda586e41235430b.json} (72%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{styles + ic in target block, add mark (word)_1_e0087b91327576eaff9f8d4d368e0a03.json => styles + ic in target block, add mark (word)_1_0d9c02b01414a68a2dab4af392179183.json} (73%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{translate selection_1_4706b49daa5ad7afe9dfadded2e335c5.json => translate selection_1_ade79bca32d420b4323b2a888817b5d5.json} (72%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{update block prop and content_1_5bb684c9ae46815b5367a39bd42d5257.json => update block prop and content_1_f90879213f18f8b8e13748443299b6dc.json} (72%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{update block prop_1_8469a78802d46f3d9ec74dd1fbf49fd8.json => update block prop_1_3f8e13d1cfa75e24cd4e0dfb0eab9ef4.json} (72%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{update block type and content_1_226cc5d7352c8c7e58a15d064543518c.json => update block type and content_1_07d3d8730ff541c3a2bf5e53c6707dac.json} (72%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{update block type_1_c4cc00889532e0baa73998da5e79c303.json => update block type_1_6cc7ad0b6e2c278095f03deb353e4c9b.json} (100%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{drop mark and link and change text within mark_1_e5c77f0f881e77f6ee27a25f203ffdcb.json => drop mark and link and change text within mark_1_17fe180166622808ade902a2eccad8aa.json} (65%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{drop mark and link_1_b93576392cb38dc57acd85f7fc55c6cd.json => drop mark and link_1_a055d5e9dcf9d3ce1e1cddf57b441dc1.json} (66%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{plain source block, add mention_1_b18afae076d7f7f423477f1e1bc5813a.json => plain source block, add mention_1_7692c767dc159df75724f2a49cc38b0e.json} (66%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{standard update_1_529e09ae665507a31316cb632f5cabcd.json => standard update_1_b81e76afad4cf5e84bd6815d2bc8d069.json} (66%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{styles + ic in source block, remove mark_1_20036398e12cf4a20b50024ad5f30018.json => styles + ic in source block, remove mark_1_da7d1e5e03db624c6007dc8137fc3588.json} (68%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{styles + ic in source block, remove mention_1_ed131f0383e7709a4e5fae2df28af29a.json => styles + ic in source block, remove mention_1_758855f114117cd6c8f70c7caa84cc68.json} (67%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{styles + ic in source block, replace content_1_51bfdc443e43bbf18599fcc3a16c5683.json => styles + ic in source block, replace content_1_222775b0c617ba9bcada86cd238b6d64.json} (66%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{styles + ic in source block, update mention prop_1_7641f5691799d2666855c113b6659b71.json => styles + ic in source block, update mention prop_1_ad74c153b3f0beb850955148f0a42c78.json} (68%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{styles + ic in source block, update text_1_8fcb24a91437026c480205de77507871.json => styles + ic in source block, update text_1_4bf0b01b1e009966973599ebc2194362.json} (68%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{styles + ic in target block, add mark (paragraph)_1_be126322b804c53145dbd35a6aa1131f.json => styles + ic in target block, add mark (paragraph)_1_5ce19f53eaf195c6e284c91b0db7d586.json} (66%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{styles + ic in target block, add mark (word)_1_ec13a3b1d4f97b79148833b507295ffa.json => styles + ic in target block, add mark (word)_1_0f8ce96b644d6bd531f0558208cf5790.json} (66%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{translate selection_1_f1a2ffb178b441d40625b8f110e3290f.json => translate selection_1_1cf9377128e689feac5e5e13a1d0e26f.json} (66%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{update block prop and content_1_8557c5a4249c324adfff5d243645e3de.json => update block prop and content_1_260e8bc6dd5c9cbd0650701e6d95ada3.json} (66%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{update block prop_1_16dda1caa1f43ab624eb28a605179dd3.json => update block prop_1_339e6b8d82d281185c6ccbcd1809374f.json} (66%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{update block type and content_1_8b167672c96bf3c69b9b146eb4f26451.json => update block type and content_1_ff26ae30546f4e0d4279e60e4b7a1fbf.json} (66%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{update block type_1_7326b3d0db43c8f399aba2bc44c80194.json => update block type_1_d9cbf71a8b55c8be0b247c3bb200c59c.json} (66%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{drop mark and link and change text within mark_1_94f36faff958747b5d66a185e268bba7.json => drop mark and link and change text within mark_1_d1f45ba6fee8787529137c920d6bc58e.json} (90%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{drop mark and link_1_60bf97139612cd25b1f99502383df8aa.json => drop mark and link_1_c9489269d9a2d4353eda54289ed7f395.json} (90%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{plain source block, add mention_1_d5759fe9868f60a47538d31361c68b3c.json => plain source block, add mention_1_416931598559b3e7e906647a66f0b8b1.json} (91%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{standard update_1_f6a167a6ea376d70d84dd9aac6ac7bb3.json => standard update_1_9728e4dd714a6a14ce441d72378dd67a.json} (89%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{styles + ic in source block, remove mark_1_990c696cfe9af87de056328060fd1f93.json => styles + ic in source block, remove mark_1_198059a270dbbb88db8f1cba97503205.json} (94%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{styles + ic in source block, remove mention_1_fd4deb4dce4d79ae14939fda71c510fd.json => styles + ic in source block, remove mention_1_9313219c085c3b39c7c14c00f388b4be.json} (93%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{styles + ic in source block, replace content_1_6cd810cd03bff509578637fe27d13a92.json => styles + ic in source block, replace content_1_f7a4c2a7fc5e362c3484586f45b2501d.json} (89%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{styles + ic in source block, update mention prop_1_f0e30d1d6cbc94e6b7dcb8abb7e0221f.json => styles + ic in source block, update mention prop_1_38090ebbfaca38fca97b1e4f0a0dd942.json} (94%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{styles + ic in source block, update text_1_1104dff815f18f8f786fb7d4e4522d47.json => styles + ic in source block, update text_1_6374879c3f8fbc16db7c43304d2faacd.json} (94%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{styles + ic in target block, add mark (paragraph)_1_e2f4cdb3df42b17c74cd1d2d00d2f8d5.json => styles + ic in target block, add mark (paragraph)_1_0afac4d00d3f0bbdfd251a8394b6ff28.json} (90%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{styles + ic in target block, add mark (word)_1_6b5073ce92485be7974a344d50247b4a.json => styles + ic in target block, add mark (word)_1_00156bb4dd5722d44e0ff5332561928a.json} (90%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{translate selection_1_d343e10867cc7b3d9850847c99826b61.json => translate selection_1_24abe901176e9d834f9542d0b26e82ae.json} (89%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{update block prop and content_1_780bfe04d42dd48e9115cba7c4582c01.json => update block prop and content_1_3f479c81e81f4f9460df3af74ddd2207.json} (90%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{update block prop_1_667c03220ba6e678d0c91b9de092484b.json => update block prop_1_6012638796e6e00b242b43642bb90a7a.json} (90%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{update block type and content_1_f3c6521f6f12dc50dc16d0bbc277a858.json => update block type and content_1_04e027a89c6d4e69a0f805d5c8987e2c.json} (90%)
rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{update block type_1_7c4fbdcabcec0568ade27d2b47afbaab.json => update block type_1_72aecf62b6c9c807411d248d46a62eea.json} (90%)
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/helpers/clickHandler.ts b/packages/core/src/extensions/tiptap-extensions/Link/helpers/clickHandler.ts
index fe31821e77..ba8f9fa131 100644
--- a/packages/core/src/extensions/tiptap-extensions/Link/helpers/clickHandler.ts
+++ b/packages/core/src/extensions/tiptap-extensions/Link/helpers/clickHandler.ts
@@ -23,7 +23,11 @@ export function clickHandler(options: ClickHandlerOptions): Plugin {
let link: HTMLAnchorElement | null = null;
- if (event.target instanceof HTMLAnchorElement) {
+ if (
+ event.target instanceof HTMLAnchorElement &&
+ // Differentiate between link inline content and read-only links.
+ event.target.getAttribute("data-inline-content-type") === "link"
+ ) {
link = event.target;
} else {
const target = event.target as HTMLElement | null;
@@ -35,7 +39,9 @@ export function clickHandler(options: ClickHandlerOptions): Plugin {
// Intentionally limit the lookup to the editor root.
// Using tag names like DIV as boundaries breaks with custom NodeViews,
- link = target.closest("a");
+ link = target.closest(
+ 'a[data-inline-content-type="link"]',
+ );
if (link && !root.contains(link)) {
link = null;
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/link.ts b/packages/core/src/extensions/tiptap-extensions/Link/link.ts
index c0c1811d4f..b6ac0fa5e6 100644
--- a/packages/core/src/extensions/tiptap-extensions/Link/link.ts
+++ b/packages/core/src/extensions/tiptap-extensions/Link/link.ts
@@ -12,6 +12,8 @@ const DEFAULT_PROTOCOL = "https";
const HTML_ATTRIBUTES = {
target: "_blank",
rel: "noopener noreferrer nofollow",
+ className: "bn-inline-content-section",
+ "data-inline-content-type": "link",
};
// Pre-compiled regex for URI protocol validation.
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add and update paragraph_1_380a0c02b5089b38247457135c044cf7.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add and update paragraph_1_801ad86e0c3a4562338793805e66a52f.json
similarity index 77%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add and update paragraph_1_380a0c02b5089b38247457135c044cf7.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add and update paragraph_1_801ad86e0c3a4562338793805e66a52f.json
index f27c0f4cbd..17cb4f5a39 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add and update paragraph_1_380a0c02b5089b38247457135c044cf7.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add and update paragraph_1_801ad86e0c3a4562338793805e66a52f.json
@@ -2,8 +2,29 @@
"request": {
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
- "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"add a new paragraph with the text 'You look great today!' after the first paragraph and translate first 'Hello, world' to dutch\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"add a new paragraph with the text 'You look great today!' after the first paragraph and translate first 'Hello, world' to dutch\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
+ "headers": [
+ [
+ "anthropic-beta",
+ "fine-grained-tool-streaming-2025-05-14"
+ ],
+ [
+ "anthropic-version",
+ "2023-06-01"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ],
+ [
+ "x-api-key",
+ "not-available-in-ci"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add paragraph and update selection_1_298b51bb28c5f95ab9a00205d4e38460.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add paragraph and update selection_1_b6ecf36636295d284db3ba7243cd4835.json
similarity index 77%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add paragraph and update selection_1_298b51bb28c5f95ab9a00205d4e38460.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add paragraph and update selection_1_b6ecf36636295d284db3ba7243cd4835.json
index 4c5381201b..a838ce9887 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add paragraph and update selection_1_298b51bb28c5f95ab9a00205d4e38460.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add paragraph and update selection_1_b6ecf36636295d284db3ba7243cd4835.json
@@ -2,8 +2,29 @@
"request": {
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
- "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello,
\\\"}]\"},{\"type\":\"text\",\"text\":\"This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):\"},{\"type\":\"text\",\"text\":\"[{\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"add a paragraph with the text 'You look great today!' before the selection and translate selection to German\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello,
\\\"}]\"},{\"type\":\"text\",\"text\":\"This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):\"},{\"type\":\"text\",\"text\":\"[{\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"add a paragraph with the text 'You look great today!' before the selection and translate selection to German\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
+ "headers": [
+ [
+ "anthropic-beta",
+ "fine-grained-tool-streaming-2025-05-14"
+ ],
+ [
+ "anthropic-version",
+ "2023-06-01"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ],
+ [
+ "x-api-key",
+ "not-available-in-ci"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add and update paragraph_1_f6253c11196abdbeae0f898cc9df85eb.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add and update paragraph_1_3c276441275032fe98b12356026537a0.json
similarity index 66%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add and update paragraph_1_f6253c11196abdbeae0f898cc9df85eb.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add and update paragraph_1_3c276441275032fe98b12356026537a0.json
index 369dab7df1..2a80ef2c4b 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add and update paragraph_1_f6253c11196abdbeae0f898cc9df85eb.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add and update paragraph_1_3c276441275032fe98b12356026537a0.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
- "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"add a new paragraph with the text 'You look great today!' after the first paragraph and translate first 'Hello, world' to dutch\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"add a new paragraph with the text 'You look great today!' after the first paragraph and translate first 'Hello, world' to dutch\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add paragraph and update selection_1_dc29d735348684d1ec3e290ad8c03a71.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add paragraph and update selection_1_0207de852025d2c0a1d417a7d66fa03c.json
similarity index 66%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add paragraph and update selection_1_dc29d735348684d1ec3e290ad8c03a71.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add paragraph and update selection_1_0207de852025d2c0a1d417a7d66fa03c.json
index a1215c6d16..4e41813c1f 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add paragraph and update selection_1_dc29d735348684d1ec3e290ad8c03a71.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add paragraph and update selection_1_0207de852025d2c0a1d417a7d66fa03c.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
- "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello,
\\\"}]This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):[{\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"add a paragraph with the text 'You look great today!' before the selection and translate selection to German\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello,
\\\"}]This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):[{\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"add a paragraph with the text 'You look great today!' before the selection and translate selection to German\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add and update paragraph_1_a27ae10badcc3913a00eb86f77ac64db.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add and update paragraph_1_937647a13580b4dbb611e3de3b2c8788.json
similarity index 92%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add and update paragraph_1_a27ae10badcc3913a00eb86f77ac64db.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add and update paragraph_1_937647a13580b4dbb611e3de3b2c8788.json
index 3c8c38137a..47f0b8028b 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add and update paragraph_1_a27ae10badcc3913a00eb86f77ac64db.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add and update paragraph_1_937647a13580b4dbb611e3de3b2c8788.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.openai.com/v1/responses",
- "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"add a new paragraph with the text 'You look great today!' after the first paragraph and translate first 'Hello, world' to dutch\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"add a new paragraph with the text 'You look great today!' after the first paragraph and translate first 'Hello, world' to dutch\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add paragraph and update selection_1_86f10ca461ee44e74ae571fb9f214338.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add paragraph and update selection_1_d9ea724851130649f405ff50190452b5.json
similarity index 92%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add paragraph and update selection_1_86f10ca461ee44e74ae571fb9f214338.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add paragraph and update selection_1_d9ea724851130649f405ff50190452b5.json
index 41e7f245f4..42c2b39c8c 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add paragraph and update selection_1_86f10ca461ee44e74ae571fb9f214338.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add paragraph and update selection_1_d9ea724851130649f405ff50190452b5.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.openai.com/v1/responses",
- "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello,
\\\"}]\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"add a paragraph with the text 'You look great today!' before the selection and translate selection to German\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello,
\\\"}]\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"add a paragraph with the text 'You look great today!' before the selection and translate selection to German\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/delete first block_1_91346200727a71ab9ad8c5d014835688.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/delete first block_1_afd5ee1bda075c7482d1861d03ad0a29.json
similarity index 69%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/delete first block_1_91346200727a71ab9ad8c5d014835688.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/delete first block_1_afd5ee1bda075c7482d1861d03ad0a29.json
index cd9f61961f..5300fdf5b7 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/delete first block_1_91346200727a71ab9ad8c5d014835688.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/delete first block_1_afd5ee1bda075c7482d1861d03ad0a29.json
@@ -2,8 +2,29 @@
"request": {
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
- "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"delete the first paragraph\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"delete the first paragraph\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
+ "headers": [
+ [
+ "anthropic-beta",
+ "fine-grained-tool-streaming-2025-05-14"
+ ],
+ [
+ "anthropic-version",
+ "2023-06-01"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ],
+ [
+ "x-api-key",
+ "not-available-in-ci"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/delete first block_1_150a539024aa981c9f6bcb068875a6c9.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/delete first block_1_9a26ba1fa4692c62b4f519ed3669fdc5.json
similarity index 66%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/delete first block_1_150a539024aa981c9f6bcb068875a6c9.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/delete first block_1_9a26ba1fa4692c62b4f519ed3669fdc5.json
index 7295e28681..bb5eaf6f2c 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/delete first block_1_150a539024aa981c9f6bcb068875a6c9.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/delete first block_1_9a26ba1fa4692c62b4f519ed3669fdc5.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
- "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"delete the first paragraph\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"delete the first paragraph\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/delete first block_1_1b3c4ac85d448677697457098332ceba.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/delete first block_1_2fd92a4c2642fff1ef49d65014aa1ac3.json
similarity index 88%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/delete first block_1_1b3c4ac85d448677697457098332ceba.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/delete first block_1_2fd92a4c2642fff1ef49d65014aa1ac3.json
index c6665d1949..814ffc9d70 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/delete first block_1_1b3c4ac85d448677697457098332ceba.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/delete first block_1_2fd92a4c2642fff1ef49d65014aa1ac3.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.openai.com/v1/responses",
- "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"delete the first paragraph\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"delete the first paragraph\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link and change text within mark_1_fe3cac9da9d1e17a20ee8c0c4380d925.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link and change text within mark_1_fd54b2fefac722ab5057252b68c4faec.json
similarity index 72%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link and change text within mark_1_fe3cac9da9d1e17a20ee8c0c4380d925.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link and change text within mark_1_fd54b2fefac722ab5057252b68c4faec.json
index 8eb74d80fb..91288a6156 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link and change text within mark_1_fe3cac9da9d1e17a20ee8c0c4380d925.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link and change text within mark_1_fd54b2fefac722ab5057252b68c4faec.json
@@ -2,8 +2,29 @@
"request": {
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
- "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"change the last paragraph to 'Hi, world! Bold the text. Link.' without any markup like bold or link\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"change the last paragraph to 'Hi, world! Bold the text. Link.' without any markup like bold or link\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
+ "headers": [
+ [
+ "anthropic-beta",
+ "fine-grained-tool-streaming-2025-05-14"
+ ],
+ [
+ "anthropic-version",
+ "2023-06-01"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ],
+ [
+ "x-api-key",
+ "not-available-in-ci"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link_1_f6ee881e6d3b4cd9553256523e67683a.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link_1_93038afbc107d8439571e6287fc76a8f.json
similarity index 72%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link_1_f6ee881e6d3b4cd9553256523e67683a.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link_1_93038afbc107d8439571e6287fc76a8f.json
index 7c544f01e8..01edd35bd9 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link_1_f6ee881e6d3b4cd9553256523e67683a.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link_1_93038afbc107d8439571e6287fc76a8f.json
@@ -2,8 +2,29 @@
"request": {
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
- "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"remove the formatting (turn into plain text without styles or urls) from the last paragraph\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"remove the formatting (turn into plain text without styles or urls) from the last paragraph\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
+ "headers": [
+ [
+ "anthropic-beta",
+ "fine-grained-tool-streaming-2025-05-14"
+ ],
+ [
+ "anthropic-version",
+ "2023-06-01"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ],
+ [
+ "x-api-key",
+ "not-available-in-ci"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/plain source block, add mention_1_ccd752aefdbc2252a5a09bebac393afb.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/plain source block, add mention_1_7035efab1f6d9e5a46dde12d39f9ed19.json
similarity index 75%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/plain source block, add mention_1_ccd752aefdbc2252a5a09bebac393afb.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/plain source block, add mention_1_7035efab1f6d9e5a46dde12d39f9ed19.json
index 583f74e72f..bc4e3fc826 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/plain source block, add mention_1_ccd752aefdbc2252a5a09bebac393afb.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/plain source block, add mention_1_7035efab1f6d9e5a46dde12d39f9ed19.json
@@ -2,8 +2,29 @@
"request": {
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
- "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"Change the first paragraph to Hello, Jane Doe! (use a mention)\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"Change the first paragraph to Hello, Jane Doe! (use a mention)\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
+ "headers": [
+ [
+ "anthropic-beta",
+ "fine-grained-tool-streaming-2025-05-14"
+ ],
+ [
+ "anthropic-version",
+ "2023-06-01"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ],
+ [
+ "x-api-key",
+ "not-available-in-ci"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/standard update_1_c44a31a1631a3a10efcd5e17645998f1.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/standard update_1_467258028a5a6bef3542c1a5417d4b3d.json
similarity index 70%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/standard update_1_c44a31a1631a3a10efcd5e17645998f1.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/standard update_1_467258028a5a6bef3542c1a5417d4b3d.json
index 6c661ae541..dea1f47b37 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/standard update_1_c44a31a1631a3a10efcd5e17645998f1.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/standard update_1_467258028a5a6bef3542c1a5417d4b3d.json
@@ -2,8 +2,29 @@
"request": {
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
- "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"translate the first paragraph to german\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"translate the first paragraph to german\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
+ "headers": [
+ [
+ "anthropic-beta",
+ "fine-grained-tool-streaming-2025-05-14"
+ ],
+ [
+ "anthropic-version",
+ "2023-06-01"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ],
+ [
+ "x-api-key",
+ "not-available-in-ci"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mark_1_df177a6a4f26b0fbcba307c6d21cab76.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mark_1_90c0b37bad31f3b9b0d15c492c610d0b.json
similarity index 79%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mark_1_df177a6a4f26b0fbcba307c6d21cab76.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mark_1_90c0b37bad31f3b9b0d15c492c610d0b.json
index 9d99a67db6..1f4c83cef1 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mark_1_df177a6a4f26b0fbcba307c6d21cab76.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mark_1_90c0b37bad31f3b9b0d15c492c610d0b.json
@@ -2,8 +2,29 @@
"request": {
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
- "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"remove the bold style from the second block\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"remove the bold style from the second block\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
+ "headers": [
+ [
+ "anthropic-beta",
+ "fine-grained-tool-streaming-2025-05-14"
+ ],
+ [
+ "anthropic-version",
+ "2023-06-01"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ],
+ [
+ "x-api-key",
+ "not-available-in-ci"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mention_1_4ba9f3411694f807e85e8e33f4b3c8cd.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mention_1_3e8b04b91ca15c467180df1c60c9e1b2.json
similarity index 77%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mention_1_4ba9f3411694f807e85e8e33f4b3c8cd.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mention_1_3e8b04b91ca15c467180df1c60c9e1b2.json
index 20f13a4e94..418d42818a 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mention_1_4ba9f3411694f807e85e8e33f4b3c8cd.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mention_1_3e8b04b91ca15c467180df1c60c9e1b2.json
@@ -2,8 +2,29 @@
"request": {
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
- "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"change to say 'Hello! How are you doing? This text is blue!' (remove mention but keep bold text)\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"change to say 'Hello! How are you doing? This text is blue!' (remove mention but keep bold text)\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
+ "headers": [
+ [
+ "anthropic-beta",
+ "fine-grained-tool-streaming-2025-05-14"
+ ],
+ [
+ "anthropic-version",
+ "2023-06-01"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ],
+ [
+ "x-api-key",
+ "not-available-in-ci"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, replace content_1_f5b001d0f8415a00e8b043f3e3e33535.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, replace content_1_3551fccc96307281574c2c96eaa05002.json
similarity index 71%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, replace content_1_f5b001d0f8415a00e8b043f3e3e33535.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, replace content_1_3551fccc96307281574c2c96eaa05002.json
index 44f04c2711..38aa7114d8 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, replace content_1_f5b001d0f8415a00e8b043f3e3e33535.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, replace content_1_3551fccc96307281574c2c96eaa05002.json
@@ -2,8 +2,29 @@
"request": {
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
- "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"update the content of the second block to 'Hello, updated content'\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"update the content of the second block to 'Hello, updated content'\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
+ "headers": [
+ [
+ "anthropic-beta",
+ "fine-grained-tool-streaming-2025-05-14"
+ ],
+ [
+ "anthropic-version",
+ "2023-06-01"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ],
+ [
+ "x-api-key",
+ "not-available-in-ci"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update mention prop_1_c197e3f5ce1dbc1a68765acbd198881a.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update mention prop_1_e7ef562479ab33624bfa2bd75c4d1f5e.json
similarity index 79%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update mention prop_1_c197e3f5ce1dbc1a68765acbd198881a.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update mention prop_1_e7ef562479ab33624bfa2bd75c4d1f5e.json
index 2d719ce333..c4862b6867 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update mention prop_1_c197e3f5ce1dbc1a68765acbd198881a.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update mention prop_1_e7ef562479ab33624bfa2bd75c4d1f5e.json
@@ -2,8 +2,29 @@
"request": {
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
- "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"update the mention to Jane Doe\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"update the mention to Jane Doe\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
+ "headers": [
+ [
+ "anthropic-beta",
+ "fine-grained-tool-streaming-2025-05-14"
+ ],
+ [
+ "anthropic-version",
+ "2023-06-01"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ],
+ [
+ "x-api-key",
+ "not-available-in-ci"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update text_1_a0b93418bb2a5c0049e0a5c896f72191.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update text_1_3a3fa0950f819e8073475e78106b353d.json
similarity index 79%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update text_1_a0b93418bb2a5c0049e0a5c896f72191.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update text_1_3a3fa0950f819e8073475e78106b353d.json
index b6ed9fe796..aff55ef011 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update text_1_a0b93418bb2a5c0049e0a5c896f72191.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update text_1_3a3fa0950f819e8073475e78106b353d.json
@@ -2,8 +2,29 @@
"request": {
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
- "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"translate second block including the greeting to German (use dir instead of Ihnen)\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"translate second block including the greeting to German (use dir instead of Ihnen)\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
+ "headers": [
+ [
+ "anthropic-beta",
+ "fine-grained-tool-streaming-2025-05-14"
+ ],
+ [
+ "anthropic-version",
+ "2023-06-01"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ],
+ [
+ "x-api-key",
+ "not-available-in-ci"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (paragraph)_1_fb2285b8d362cb8adcf78f6039ad3058.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (paragraph)_1_7a05ed5acf369206dda586e41235430b.json
similarity index 72%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (paragraph)_1_fb2285b8d362cb8adcf78f6039ad3058.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (paragraph)_1_7a05ed5acf369206dda586e41235430b.json
index 06890c2090..92ee3b08ab 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (paragraph)_1_fb2285b8d362cb8adcf78f6039ad3058.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (paragraph)_1_7a05ed5acf369206dda586e41235430b.json
@@ -2,8 +2,29 @@
"request": {
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
- "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"make first paragraph bold\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"make first paragraph bold\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
+ "headers": [
+ [
+ "anthropic-beta",
+ "fine-grained-tool-streaming-2025-05-14"
+ ],
+ [
+ "anthropic-version",
+ "2023-06-01"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ],
+ [
+ "x-api-key",
+ "not-available-in-ci"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (word)_1_e0087b91327576eaff9f8d4d368e0a03.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (word)_1_0d9c02b01414a68a2dab4af392179183.json
similarity index 73%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (word)_1_e0087b91327576eaff9f8d4d368e0a03.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (word)_1_0d9c02b01414a68a2dab4af392179183.json
index bf9a4944f5..6ada120256 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (word)_1_e0087b91327576eaff9f8d4d368e0a03.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (word)_1_0d9c02b01414a68a2dab4af392179183.json
@@ -2,8 +2,29 @@
"request": {
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
- "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"make 'world!' (in the first block) bold\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"make 'world!' (in the first block) bold\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
+ "headers": [
+ [
+ "anthropic-beta",
+ "fine-grained-tool-streaming-2025-05-14"
+ ],
+ [
+ "anthropic-version",
+ "2023-06-01"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ],
+ [
+ "x-api-key",
+ "not-available-in-ci"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/translate selection_1_4706b49daa5ad7afe9dfadded2e335c5.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/translate selection_1_ade79bca32d420b4323b2a888817b5d5.json
similarity index 72%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/translate selection_1_4706b49daa5ad7afe9dfadded2e335c5.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/translate selection_1_ade79bca32d420b4323b2a888817b5d5.json
index 3a897ed622..dfc1595250 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/translate selection_1_4706b49daa5ad7afe9dfadded2e335c5.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/translate selection_1_ade79bca32d420b4323b2a888817b5d5.json
@@ -2,8 +2,29 @@
"request": {
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
- "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello,
\\\"}]\"},{\"type\":\"text\",\"text\":\"This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):\"},{\"type\":\"text\",\"text\":\"[{\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"translate to German\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello,
\\\"}]\"},{\"type\":\"text\",\"text\":\"This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):\"},{\"type\":\"text\",\"text\":\"[{\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"translate to German\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
+ "headers": [
+ [
+ "anthropic-beta",
+ "fine-grained-tool-streaming-2025-05-14"
+ ],
+ [
+ "anthropic-version",
+ "2023-06-01"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ],
+ [
+ "x-api-key",
+ "not-available-in-ci"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop and content_1_5bb684c9ae46815b5367a39bd42d5257.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop and content_1_f90879213f18f8b8e13748443299b6dc.json
similarity index 72%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop and content_1_5bb684c9ae46815b5367a39bd42d5257.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop and content_1_f90879213f18f8b8e13748443299b6dc.json
index 50078a7a22..93f6d6b339 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop and content_1_5bb684c9ae46815b5367a39bd42d5257.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop and content_1_f90879213f18f8b8e13748443299b6dc.json
@@ -2,8 +2,29 @@
"request": {
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
- "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"make the first paragraph right aligned and update the content to 'What's up, world!'\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"make the first paragraph right aligned and update the content to 'What's up, world!'\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
+ "headers": [
+ [
+ "anthropic-beta",
+ "fine-grained-tool-streaming-2025-05-14"
+ ],
+ [
+ "anthropic-version",
+ "2023-06-01"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ],
+ [
+ "x-api-key",
+ "not-available-in-ci"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop_1_8469a78802d46f3d9ec74dd1fbf49fd8.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop_1_3f8e13d1cfa75e24cd4e0dfb0eab9ef4.json
similarity index 72%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop_1_8469a78802d46f3d9ec74dd1fbf49fd8.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop_1_3f8e13d1cfa75e24cd4e0dfb0eab9ef4.json
index bc2bae4de7..ce8a307c89 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop_1_8469a78802d46f3d9ec74dd1fbf49fd8.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop_1_3f8e13d1cfa75e24cd4e0dfb0eab9ef4.json
@@ -2,8 +2,29 @@
"request": {
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
- "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"make the first paragraph right aligned\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"make the first paragraph right aligned\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
+ "headers": [
+ [
+ "anthropic-beta",
+ "fine-grained-tool-streaming-2025-05-14"
+ ],
+ [
+ "anthropic-version",
+ "2023-06-01"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ],
+ [
+ "x-api-key",
+ "not-available-in-ci"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type and content_1_226cc5d7352c8c7e58a15d064543518c.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type and content_1_07d3d8730ff541c3a2bf5e53c6707dac.json
similarity index 72%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type and content_1_226cc5d7352c8c7e58a15d064543518c.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type and content_1_07d3d8730ff541c3a2bf5e53c6707dac.json
index 08e8d0a896..70c61a4455 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type and content_1_226cc5d7352c8c7e58a15d064543518c.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type and content_1_07d3d8730ff541c3a2bf5e53c6707dac.json
@@ -2,8 +2,29 @@
"request": {
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
- "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"make the first paragraph a heading and update the content to 'What's up, world!'\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"make the first paragraph a heading and update the content to 'What's up, world!'\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
+ "headers": [
+ [
+ "anthropic-beta",
+ "fine-grained-tool-streaming-2025-05-14"
+ ],
+ [
+ "anthropic-version",
+ "2023-06-01"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ],
+ [
+ "x-api-key",
+ "not-available-in-ci"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type_1_c4cc00889532e0baa73998da5e79c303.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type_1_6cc7ad0b6e2c278095f03deb353e4c9b.json
similarity index 100%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type_1_c4cc00889532e0baa73998da5e79c303.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type_1_6cc7ad0b6e2c278095f03deb353e4c9b.json
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link and change text within mark_1_e5c77f0f881e77f6ee27a25f203ffdcb.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link and change text within mark_1_17fe180166622808ade902a2eccad8aa.json
similarity index 65%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link and change text within mark_1_e5c77f0f881e77f6ee27a25f203ffdcb.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link and change text within mark_1_17fe180166622808ade902a2eccad8aa.json
index 44277745ba..86cf47e52c 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link and change text within mark_1_e5c77f0f881e77f6ee27a25f203ffdcb.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link and change text within mark_1_17fe180166622808ade902a2eccad8aa.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
- "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"change the last paragraph to 'Hi, world! Bold the text. Link.' without any markup like bold or link\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"change the last paragraph to 'Hi, world! Bold the text. Link.' without any markup like bold or link\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link_1_b93576392cb38dc57acd85f7fc55c6cd.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link_1_a055d5e9dcf9d3ce1e1cddf57b441dc1.json
similarity index 66%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link_1_b93576392cb38dc57acd85f7fc55c6cd.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link_1_a055d5e9dcf9d3ce1e1cddf57b441dc1.json
index 66510ce8dc..9c7c6aadea 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link_1_b93576392cb38dc57acd85f7fc55c6cd.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link_1_a055d5e9dcf9d3ce1e1cddf57b441dc1.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
- "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"remove the formatting (turn into plain text without styles or urls) from the last paragraph\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"remove the formatting (turn into plain text without styles or urls) from the last paragraph\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/plain source block, add mention_1_b18afae076d7f7f423477f1e1bc5813a.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/plain source block, add mention_1_7692c767dc159df75724f2a49cc38b0e.json
similarity index 66%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/plain source block, add mention_1_b18afae076d7f7f423477f1e1bc5813a.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/plain source block, add mention_1_7692c767dc159df75724f2a49cc38b0e.json
index 62bfe269be..e69c8a1cff 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/plain source block, add mention_1_b18afae076d7f7f423477f1e1bc5813a.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/plain source block, add mention_1_7692c767dc159df75724f2a49cc38b0e.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
- "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"Change the first paragraph to Hello, Jane Doe! (use a mention)\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"Change the first paragraph to Hello, Jane Doe! (use a mention)\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/standard update_1_529e09ae665507a31316cb632f5cabcd.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/standard update_1_b81e76afad4cf5e84bd6815d2bc8d069.json
similarity index 66%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/standard update_1_529e09ae665507a31316cb632f5cabcd.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/standard update_1_b81e76afad4cf5e84bd6815d2bc8d069.json
index c5b665e689..e778aaca31 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/standard update_1_529e09ae665507a31316cb632f5cabcd.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/standard update_1_b81e76afad4cf5e84bd6815d2bc8d069.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
- "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"translate the first paragraph to german\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"translate the first paragraph to german\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mark_1_20036398e12cf4a20b50024ad5f30018.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mark_1_da7d1e5e03db624c6007dc8137fc3588.json
similarity index 68%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mark_1_20036398e12cf4a20b50024ad5f30018.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mark_1_da7d1e5e03db624c6007dc8137fc3588.json
index 8b12b184b5..5178b27856 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mark_1_20036398e12cf4a20b50024ad5f30018.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mark_1_da7d1e5e03db624c6007dc8137fc3588.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
- "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"remove the bold style from the second block\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"remove the bold style from the second block\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mention_1_ed131f0383e7709a4e5fae2df28af29a.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mention_1_758855f114117cd6c8f70c7caa84cc68.json
similarity index 67%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mention_1_ed131f0383e7709a4e5fae2df28af29a.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mention_1_758855f114117cd6c8f70c7caa84cc68.json
index 3038e2a09a..5d64e8febf 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mention_1_ed131f0383e7709a4e5fae2df28af29a.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mention_1_758855f114117cd6c8f70c7caa84cc68.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
- "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"change to say 'Hello! How are you doing? This text is blue!' (remove mention but keep bold text)\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"change to say 'Hello! How are you doing? This text is blue!' (remove mention but keep bold text)\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, replace content_1_51bfdc443e43bbf18599fcc3a16c5683.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, replace content_1_222775b0c617ba9bcada86cd238b6d64.json
similarity index 66%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, replace content_1_51bfdc443e43bbf18599fcc3a16c5683.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, replace content_1_222775b0c617ba9bcada86cd238b6d64.json
index 812efd8c9d..4bad856005 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, replace content_1_51bfdc443e43bbf18599fcc3a16c5683.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, replace content_1_222775b0c617ba9bcada86cd238b6d64.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
- "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"update the content of the second block to 'Hello, updated content'\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"update the content of the second block to 'Hello, updated content'\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update mention prop_1_7641f5691799d2666855c113b6659b71.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update mention prop_1_ad74c153b3f0beb850955148f0a42c78.json
similarity index 68%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update mention prop_1_7641f5691799d2666855c113b6659b71.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update mention prop_1_ad74c153b3f0beb850955148f0a42c78.json
index 05452f7742..8e44760e5f 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update mention prop_1_7641f5691799d2666855c113b6659b71.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update mention prop_1_ad74c153b3f0beb850955148f0a42c78.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
- "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"update the mention to Jane Doe\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"update the mention to Jane Doe\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update text_1_8fcb24a91437026c480205de77507871.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update text_1_4bf0b01b1e009966973599ebc2194362.json
similarity index 68%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update text_1_8fcb24a91437026c480205de77507871.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update text_1_4bf0b01b1e009966973599ebc2194362.json
index 04e06bbde4..f3e0f8c04c 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update text_1_8fcb24a91437026c480205de77507871.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update text_1_4bf0b01b1e009966973599ebc2194362.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
- "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"translate second block including the greeting to German (use dir instead of Ihnen)\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"translate second block including the greeting to German (use dir instead of Ihnen)\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (paragraph)_1_be126322b804c53145dbd35a6aa1131f.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (paragraph)_1_5ce19f53eaf195c6e284c91b0db7d586.json
similarity index 66%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (paragraph)_1_be126322b804c53145dbd35a6aa1131f.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (paragraph)_1_5ce19f53eaf195c6e284c91b0db7d586.json
index 3760882743..e6f6557f11 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (paragraph)_1_be126322b804c53145dbd35a6aa1131f.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (paragraph)_1_5ce19f53eaf195c6e284c91b0db7d586.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
- "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"make first paragraph bold\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"make first paragraph bold\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (word)_1_ec13a3b1d4f97b79148833b507295ffa.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (word)_1_0f8ce96b644d6bd531f0558208cf5790.json
similarity index 66%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (word)_1_ec13a3b1d4f97b79148833b507295ffa.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (word)_1_0f8ce96b644d6bd531f0558208cf5790.json
index 245e84c358..1d1065da27 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (word)_1_ec13a3b1d4f97b79148833b507295ffa.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (word)_1_0f8ce96b644d6bd531f0558208cf5790.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
- "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"make 'world!' (in the first block) bold\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"make 'world!' (in the first block) bold\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/translate selection_1_f1a2ffb178b441d40625b8f110e3290f.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/translate selection_1_1cf9377128e689feac5e5e13a1d0e26f.json
similarity index 66%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/translate selection_1_f1a2ffb178b441d40625b8f110e3290f.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/translate selection_1_1cf9377128e689feac5e5e13a1d0e26f.json
index f972d7a861..ba1d3d025d 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/translate selection_1_f1a2ffb178b441d40625b8f110e3290f.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/translate selection_1_1cf9377128e689feac5e5e13a1d0e26f.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
- "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello,
\\\"}]This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):[{\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"translate to German\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello,
\\\"}]This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):[{\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"translate to German\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop and content_1_8557c5a4249c324adfff5d243645e3de.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop and content_1_260e8bc6dd5c9cbd0650701e6d95ada3.json
similarity index 66%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop and content_1_8557c5a4249c324adfff5d243645e3de.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop and content_1_260e8bc6dd5c9cbd0650701e6d95ada3.json
index 23dd266599..82d73acbb5 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop and content_1_8557c5a4249c324adfff5d243645e3de.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop and content_1_260e8bc6dd5c9cbd0650701e6d95ada3.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
- "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"make the first paragraph right aligned and update the content to 'What's up, world!'\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"make the first paragraph right aligned and update the content to 'What's up, world!'\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop_1_16dda1caa1f43ab624eb28a605179dd3.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop_1_339e6b8d82d281185c6ccbcd1809374f.json
similarity index 66%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop_1_16dda1caa1f43ab624eb28a605179dd3.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop_1_339e6b8d82d281185c6ccbcd1809374f.json
index 8c5740dc72..01e33786f8 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop_1_16dda1caa1f43ab624eb28a605179dd3.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop_1_339e6b8d82d281185c6ccbcd1809374f.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
- "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"make the first paragraph right aligned\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"make the first paragraph right aligned\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type and content_1_8b167672c96bf3c69b9b146eb4f26451.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type and content_1_ff26ae30546f4e0d4279e60e4b7a1fbf.json
similarity index 66%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type and content_1_8b167672c96bf3c69b9b146eb4f26451.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type and content_1_ff26ae30546f4e0d4279e60e4b7a1fbf.json
index 8e578c399a..0e993d6871 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type and content_1_8b167672c96bf3c69b9b146eb4f26451.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type and content_1_ff26ae30546f4e0d4279e60e4b7a1fbf.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
- "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"make the first paragraph a heading and update the content to 'What's up, world!'\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"make the first paragraph a heading and update the content to 'What's up, world!'\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type_1_7326b3d0db43c8f399aba2bc44c80194.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type_1_d9cbf71a8b55c8be0b247c3bb200c59c.json
similarity index 66%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type_1_7326b3d0db43c8f399aba2bc44c80194.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type_1_d9cbf71a8b55c8be0b247c3bb200c59c.json
index c7d2c8b42d..94dca71924 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type_1_7326b3d0db43c8f399aba2bc44c80194.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type_1_d9cbf71a8b55c8be0b247c3bb200c59c.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
- "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"make the first paragraph a heading\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"make the first paragraph a heading\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link and change text within mark_1_94f36faff958747b5d66a185e268bba7.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link and change text within mark_1_d1f45ba6fee8787529137c920d6bc58e.json
similarity index 90%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link and change text within mark_1_94f36faff958747b5d66a185e268bba7.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link and change text within mark_1_d1f45ba6fee8787529137c920d6bc58e.json
index b618e169d5..7828001204 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link and change text within mark_1_94f36faff958747b5d66a185e268bba7.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link and change text within mark_1_d1f45ba6fee8787529137c920d6bc58e.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.openai.com/v1/responses",
- "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"change the last paragraph to 'Hi, world! Bold the text. Link.' without any markup like bold or link\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"change the last paragraph to 'Hi, world! Bold the text. Link.' without any markup like bold or link\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link_1_60bf97139612cd25b1f99502383df8aa.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link_1_c9489269d9a2d4353eda54289ed7f395.json
similarity index 90%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link_1_60bf97139612cd25b1f99502383df8aa.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link_1_c9489269d9a2d4353eda54289ed7f395.json
index 57739d10bc..5c110de741 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link_1_60bf97139612cd25b1f99502383df8aa.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link_1_c9489269d9a2d4353eda54289ed7f395.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.openai.com/v1/responses",
- "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"remove the formatting (turn into plain text without styles or urls) from the last paragraph\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"remove the formatting (turn into plain text without styles or urls) from the last paragraph\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/plain source block, add mention_1_d5759fe9868f60a47538d31361c68b3c.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/plain source block, add mention_1_416931598559b3e7e906647a66f0b8b1.json
similarity index 91%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/plain source block, add mention_1_d5759fe9868f60a47538d31361c68b3c.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/plain source block, add mention_1_416931598559b3e7e906647a66f0b8b1.json
index 3a823cb720..c084b5dcaf 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/plain source block, add mention_1_d5759fe9868f60a47538d31361c68b3c.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/plain source block, add mention_1_416931598559b3e7e906647a66f0b8b1.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.openai.com/v1/responses",
- "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"Change the first paragraph to Hello, Jane Doe! (use a mention)\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"Change the first paragraph to Hello, Jane Doe! (use a mention)\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/standard update_1_f6a167a6ea376d70d84dd9aac6ac7bb3.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/standard update_1_9728e4dd714a6a14ce441d72378dd67a.json
similarity index 89%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/standard update_1_f6a167a6ea376d70d84dd9aac6ac7bb3.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/standard update_1_9728e4dd714a6a14ce441d72378dd67a.json
index e147797b0f..d151e649ad 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/standard update_1_f6a167a6ea376d70d84dd9aac6ac7bb3.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/standard update_1_9728e4dd714a6a14ce441d72378dd67a.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.openai.com/v1/responses",
- "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"translate the first paragraph to german\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"translate the first paragraph to german\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mark_1_990c696cfe9af87de056328060fd1f93.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mark_1_198059a270dbbb88db8f1cba97503205.json
similarity index 94%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mark_1_990c696cfe9af87de056328060fd1f93.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mark_1_198059a270dbbb88db8f1cba97503205.json
index 48cab99917..7eb5789ee6 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mark_1_990c696cfe9af87de056328060fd1f93.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mark_1_198059a270dbbb88db8f1cba97503205.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.openai.com/v1/responses",
- "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"remove the bold style from the second block\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"remove the bold style from the second block\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mention_1_fd4deb4dce4d79ae14939fda71c510fd.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mention_1_9313219c085c3b39c7c14c00f388b4be.json
similarity index 93%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mention_1_fd4deb4dce4d79ae14939fda71c510fd.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mention_1_9313219c085c3b39c7c14c00f388b4be.json
index fc2363fdf3..9d91395de9 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mention_1_fd4deb4dce4d79ae14939fda71c510fd.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mention_1_9313219c085c3b39c7c14c00f388b4be.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.openai.com/v1/responses",
- "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"change to say 'Hello! How are you doing? This text is blue!' (remove mention but keep bold text)\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"change to say 'Hello! How are you doing? This text is blue!' (remove mention but keep bold text)\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, replace content_1_6cd810cd03bff509578637fe27d13a92.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, replace content_1_f7a4c2a7fc5e362c3484586f45b2501d.json
similarity index 89%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, replace content_1_6cd810cd03bff509578637fe27d13a92.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, replace content_1_f7a4c2a7fc5e362c3484586f45b2501d.json
index f789eb926d..2d00fde690 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, replace content_1_6cd810cd03bff509578637fe27d13a92.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, replace content_1_f7a4c2a7fc5e362c3484586f45b2501d.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.openai.com/v1/responses",
- "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"update the content of the second block to 'Hello, updated content'\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"update the content of the second block to 'Hello, updated content'\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update mention prop_1_f0e30d1d6cbc94e6b7dcb8abb7e0221f.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update mention prop_1_38090ebbfaca38fca97b1e4f0a0dd942.json
similarity index 94%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update mention prop_1_f0e30d1d6cbc94e6b7dcb8abb7e0221f.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update mention prop_1_38090ebbfaca38fca97b1e4f0a0dd942.json
index b234cbca44..3c984969c3 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update mention prop_1_f0e30d1d6cbc94e6b7dcb8abb7e0221f.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update mention prop_1_38090ebbfaca38fca97b1e4f0a0dd942.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.openai.com/v1/responses",
- "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"update the mention to Jane Doe\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"update the mention to Jane Doe\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update text_1_1104dff815f18f8f786fb7d4e4522d47.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update text_1_6374879c3f8fbc16db7c43304d2faacd.json
similarity index 94%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update text_1_1104dff815f18f8f786fb7d4e4522d47.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update text_1_6374879c3f8fbc16db7c43304d2faacd.json
index 6ed1009ec7..fe132f67e5 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update text_1_1104dff815f18f8f786fb7d4e4522d47.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update text_1_6374879c3f8fbc16db7c43304d2faacd.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.openai.com/v1/responses",
- "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"translate second block including the greeting to German (use dir instead of Ihnen)\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"translate second block including the greeting to German (use dir instead of Ihnen)\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (paragraph)_1_e2f4cdb3df42b17c74cd1d2d00d2f8d5.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (paragraph)_1_0afac4d00d3f0bbdfd251a8394b6ff28.json
similarity index 90%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (paragraph)_1_e2f4cdb3df42b17c74cd1d2d00d2f8d5.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (paragraph)_1_0afac4d00d3f0bbdfd251a8394b6ff28.json
index 2b47f33773..f67596bec5 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (paragraph)_1_e2f4cdb3df42b17c74cd1d2d00d2f8d5.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (paragraph)_1_0afac4d00d3f0bbdfd251a8394b6ff28.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.openai.com/v1/responses",
- "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make first paragraph bold\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make first paragraph bold\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (word)_1_6b5073ce92485be7974a344d50247b4a.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (word)_1_00156bb4dd5722d44e0ff5332561928a.json
similarity index 90%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (word)_1_6b5073ce92485be7974a344d50247b4a.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (word)_1_00156bb4dd5722d44e0ff5332561928a.json
index 9d2eece130..84d94e2567 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (word)_1_6b5073ce92485be7974a344d50247b4a.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (word)_1_00156bb4dd5722d44e0ff5332561928a.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.openai.com/v1/responses",
- "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make 'world!' (in the first block) bold\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make 'world!' (in the first block) bold\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/translate selection_1_d343e10867cc7b3d9850847c99826b61.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/translate selection_1_24abe901176e9d834f9542d0b26e82ae.json
similarity index 89%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/translate selection_1_d343e10867cc7b3d9850847c99826b61.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/translate selection_1_24abe901176e9d834f9542d0b26e82ae.json
index c6d53c61e5..4b9686d1c6 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/translate selection_1_d343e10867cc7b3d9850847c99826b61.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/translate selection_1_24abe901176e9d834f9542d0b26e82ae.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.openai.com/v1/responses",
- "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello,
\\\"}]\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"translate to German\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello,
\\\"}]\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"translate to German\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop and content_1_780bfe04d42dd48e9115cba7c4582c01.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop and content_1_3f479c81e81f4f9460df3af74ddd2207.json
similarity index 90%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop and content_1_780bfe04d42dd48e9115cba7c4582c01.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop and content_1_3f479c81e81f4f9460df3af74ddd2207.json
index 7d6aa02461..412ec36043 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop and content_1_780bfe04d42dd48e9115cba7c4582c01.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop and content_1_3f479c81e81f4f9460df3af74ddd2207.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.openai.com/v1/responses",
- "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make the first paragraph right aligned and update the content to 'What's up, world!'\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make the first paragraph right aligned and update the content to 'What's up, world!'\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop_1_667c03220ba6e678d0c91b9de092484b.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop_1_6012638796e6e00b242b43642bb90a7a.json
similarity index 90%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop_1_667c03220ba6e678d0c91b9de092484b.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop_1_6012638796e6e00b242b43642bb90a7a.json
index 6192ff50d7..255a4f5160 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop_1_667c03220ba6e678d0c91b9de092484b.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop_1_6012638796e6e00b242b43642bb90a7a.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.openai.com/v1/responses",
- "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make the first paragraph right aligned\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make the first paragraph right aligned\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type and content_1_f3c6521f6f12dc50dc16d0bbc277a858.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type and content_1_04e027a89c6d4e69a0f805d5c8987e2c.json
similarity index 90%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type and content_1_f3c6521f6f12dc50dc16d0bbc277a858.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type and content_1_04e027a89c6d4e69a0f805d5c8987e2c.json
index 396b47c075..eb063403bd 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type and content_1_f3c6521f6f12dc50dc16d0bbc277a858.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type and content_1_04e027a89c6d4e69a0f805d5c8987e2c.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.openai.com/v1/responses",
- "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make the first paragraph a heading and update the content to 'What's up, world!'\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make the first paragraph a heading and update the content to 'What's up, world!'\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type_1_7c4fbdcabcec0568ade27d2b47afbaab.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type_1_72aecf62b6c9c807411d248d46a62eea.json
similarity index 90%
rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type_1_7c4fbdcabcec0568ade27d2b47afbaab.json
rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type_1_72aecf62b6c9c807411d248d46a62eea.json
index 0f834059e8..c9390ad2cd 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type_1_7c4fbdcabcec0568ade27d2b47afbaab.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type_1_72aecf62b6c9c807411d248d46a62eea.json
@@ -2,8 +2,21 @@
"request": {
"method": "POST",
"url": "https://api.openai.com/v1/responses",
- "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make the first paragraph a heading\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [],
+ "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make the first paragraph a heading\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
+ "headers": [
+ [
+ "authorization",
+ "Bearer not-available-in-ci"
+ ],
+ [
+ "content-type",
+ "application/json"
+ ],
+ [
+ "user-agent",
+ "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
+ ]
+ ],
"cookies": []
},
"response": {
diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/hardbreak/between-links.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/hardbreak/between-links.html
index 9e4b427c62..fbe9ef135f 100644
--- a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/hardbreak/between-links.html
+++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/hardbreak/between-links.html
@@ -6,12 +6,16 @@
Link1
Link2
diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/hardbreak/link.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/hardbreak/link.html
index 4cae02d67b..691a663449 100644
--- a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/hardbreak/link.html
+++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/hardbreak/link.html
@@ -6,12 +6,16 @@
Link1
Link1
diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/adjacent.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/adjacent.html
index 2408c611ac..b89f21cd59 100644
--- a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/adjacent.html
+++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/adjacent.html
@@ -6,11 +6,15 @@
Website
Website2
diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/basic.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/basic.html
index 3daea90831..bfc8c80945 100644
--- a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/basic.html
+++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/basic.html
@@ -6,6 +6,8 @@
Website
diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/styled.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/styled.html
index 2b9d4cb574..6c67039ff9 100644
--- a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/styled.html
+++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/styled.html
@@ -7,12 +7,16 @@
Web
site
diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/hardbreak/between-links.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/hardbreak/between-links.html
index 701b5d4213..7b074b0120 100644
--- a/tests/src/unit/core/formatConversion/export/__snapshots__/html/hardbreak/between-links.html
+++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/hardbreak/between-links.html
@@ -2,12 +2,16 @@
Link1
Link2
\ No newline at end of file
diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/hardbreak/link.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/hardbreak/link.html
index 2c762aedc5..aab38c859f 100644
--- a/tests/src/unit/core/formatConversion/export/__snapshots__/html/hardbreak/link.html
+++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/hardbreak/link.html
@@ -2,12 +2,16 @@
Link1
Link1
\ No newline at end of file
diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/adjacent.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/adjacent.html
index db99691d33..e37cee5aa7 100644
--- a/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/adjacent.html
+++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/adjacent.html
@@ -2,11 +2,15 @@
Website
Website2
\ No newline at end of file
diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/basic.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/basic.html
index 4b61e8c582..6174bf9428 100644
--- a/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/basic.html
+++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/basic.html
@@ -2,6 +2,8 @@
Website
\ No newline at end of file
diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/styled.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/styled.html
index fb7737f7f8..fd2832b117 100644
--- a/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/styled.html
+++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/styled.html
@@ -3,12 +3,16 @@
Web
site
\ No newline at end of file
From f18f03768cc24ea9ba9cb7fb33ab2f627e68eb99 Mon Sep 17 00:00:00 2001
From: Matthew Lipski <50169049+matthewlipski@users.noreply.github.com>
Date: Thu, 23 Apr 2026 10:44:16 +0200
Subject: [PATCH 10/15] feat: Link customization options (BLO-913) (#2666)
* Added link customization options to editor
* Updated `onClick` to optionally return a boolean
---
.../docs/features/blocks/inline-content.mdx | 49 +++++++++++++++++++
packages/core/src/editor/BlockNoteEditor.ts | 22 +++++++++
.../managers/ExtensionManager/extensions.ts | 5 +-
.../Link/helpers/clickHandler.ts | 6 +++
.../extensions/tiptap-extensions/Link/link.ts | 20 ++++++--
5 files changed, 97 insertions(+), 5 deletions(-)
diff --git a/docs/content/docs/features/blocks/inline-content.mdx b/docs/content/docs/features/blocks/inline-content.mdx
index ca7799d841..a22e93f19c 100644
--- a/docs/content/docs/features/blocks/inline-content.mdx
+++ b/docs/content/docs/features/blocks/inline-content.mdx
@@ -79,6 +79,55 @@ type Link = {
};
```
+### Customizing Links
+
+You can customize how links are rendered and how they respond to clicks with the `links` editor option.
+
+```ts
+const editor = BlockNoteEditor.create({
+ links: {
+ HTMLAttributes: {
+ class: "my-link-class",
+ target: "_blank",
+ },
+ onClick: (event) => {
+ // Custom click logic, e.g. routing without a page reload.
+ },
+ },
+});
+```
+
+#### `HTMLAttributes`
+
+Additional HTML attributes that should be added to rendered link elements.
+
+```ts
+const editor = BlockNoteEditor.create({
+ links: {
+ HTMLAttributes: {
+ class: "my-link-class",
+ target: "_blank",
+ },
+ },
+});
+```
+
+#### `onClick`
+
+Custom handler invoked when a link is clicked. If left `undefined`, links are opened in a new window on click (the default behavior). If provided, that default behavior is disabled and this function is called instead.
+
+Returning `false` will let BlockNote run other click handlers after this one. Returning `true` or nothing (the default) marks the event as handled.
+
+```ts
+const editor = BlockNoteEditor.create({
+ links: {
+ onClick: (event) => {
+ // Do something when a link is clicked.
+ },
+ },
+});
+```
+
## Default Styles
The default text formatting options in BlockNote are represented by the `Styles` in the default schema:
diff --git a/packages/core/src/editor/BlockNoteEditor.ts b/packages/core/src/editor/BlockNoteEditor.ts
index bc3622a529..72c3fc7082 100644
--- a/packages/core/src/editor/BlockNoteEditor.ts
+++ b/packages/core/src/editor/BlockNoteEditor.ts
@@ -140,6 +140,28 @@ export interface BlockNoteEditorOptions<
NoInfer
>[];
+ /**
+ * Options for configuring how links behave in the editor.
+ */
+ links?: {
+ /**
+ * HTML attributes to add to rendered link elements.
+ *
+ * @default {}
+ * @example { class: "my-link-class", target: "_blank" }
+ */
+ HTMLAttributes?: Record;
+ /**
+ * Custom handler invoked when a link is clicked. If left `undefined`,
+ * links are opened in a new window on click. If provided, the default
+ * open-on-click behavior is disabled and this function is called instead.
+ *
+ * Return `false` to let ProseMirror continue handling the click event.
+ * Returning `true` or nothing (the default) marks the event as handled.
+ */
+ onClick?: (event: MouseEvent) => boolean | void;
+ };
+
/**
* @deprecated, provide placeholders via dictionary instead
* @internal
diff --git a/packages/core/src/editor/managers/ExtensionManager/extensions.ts b/packages/core/src/editor/managers/ExtensionManager/extensions.ts
index 487063b861..6e77780f22 100644
--- a/packages/core/src/editor/managers/ExtensionManager/extensions.ts
+++ b/packages/core/src/editor/managers/ExtensionManager/extensions.ts
@@ -73,7 +73,10 @@ export function getDefaultTiptapExtensions(
SuggestionAddMark,
SuggestionDeleteMark,
SuggestionModificationMark,
- Link,
+ Link.configure({
+ HTMLAttributes: options.links?.HTMLAttributes ?? {},
+ onClick: options.links?.onClick,
+ }),
...(Object.values(editor.schema.styleSpecs).map((styleSpec) => {
return styleSpec.implementation.mark.configure({
editor: editor,
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/helpers/clickHandler.ts b/packages/core/src/extensions/tiptap-extensions/Link/helpers/clickHandler.ts
index ba8f9fa131..210ac20ea5 100644
--- a/packages/core/src/extensions/tiptap-extensions/Link/helpers/clickHandler.ts
+++ b/packages/core/src/extensions/tiptap-extensions/Link/helpers/clickHandler.ts
@@ -6,6 +6,7 @@ import { Plugin, PluginKey } from "@tiptap/pm/state";
type ClickHandlerOptions = {
type: MarkType;
editor: Editor;
+ onClick?: (event: MouseEvent) => boolean | void;
};
export function clickHandler(options: ClickHandlerOptions): Plugin {
@@ -52,6 +53,11 @@ export function clickHandler(options: ClickHandlerOptions): Plugin {
return false;
}
+ if (options.onClick) {
+ const result = options.onClick(event);
+ return result ?? true;
+ }
+
const attrs = getAttributes(view.state, options.type.name);
const href = link.href ?? attrs.href;
const target = link.target ?? attrs.target;
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/link.ts b/packages/core/src/extensions/tiptap-extensions/Link/link.ts
index b6ac0fa5e6..9a7e2b0728 100644
--- a/packages/core/src/extensions/tiptap-extensions/Link/link.ts
+++ b/packages/core/src/extensions/tiptap-extensions/Link/link.ts
@@ -57,10 +57,15 @@ function shouldAutoLink(url: string): boolean {
return true;
}
+export type LinkOptions = {
+ HTMLAttributes: Record;
+ onClick?: (event: MouseEvent) => boolean | void;
+};
+
/**
* BlockNote Link mark extension.
*/
-export const Link = Mark.create({
+export const Link = Mark.create({
name: "link",
priority: 1000,
@@ -71,6 +76,13 @@ export const Link = Mark.create({
inclusive: false,
+ addOptions() {
+ return {
+ HTMLAttributes: {},
+ onClick: undefined,
+ };
+ },
+
addAttributes() {
return {
href: {
@@ -158,14 +170,14 @@ export const Link = Mark.create({
defaultProtocol: DEFAULT_PROTOCOL,
validate: isAllowedUri,
shouldAutoLink,
- })
+ }),
);
plugins.push(
clickHandler({
type: this.type,
editor: this.editor,
- })
+ }),
);
plugins.push(
@@ -174,7 +186,7 @@ export const Link = Mark.create({
defaultProtocol: DEFAULT_PROTOCOL,
type: this.type,
shouldAutoLink,
- })
+ }),
);
return plugins;
From c9c3f5da32591a51aaab04fc44bdef37935846df Mon Sep 17 00:00:00 2001
From: Nick the Sick
Date: Fri, 24 Apr 2026 10:44:23 +0200
Subject: [PATCH 11/15] revert: restore nodeToBlock/blockToNode to main
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Revert the refactor of the PM ↔ BlockNote inline-content conversion
logic on this branch. Behavior is already covered by the existing
link-mark handling on main, and the new link flow doesn't require
these changes.
Co-Authored-By: Claude Opus 4.7 (1M context)
---
.../src/api/nodeConversions/blockToNode.ts | 20 +-
.../src/api/nodeConversions/nodeToBlock.ts | 285 +++++++++++-------
2 files changed, 186 insertions(+), 119 deletions(-)
diff --git a/packages/core/src/api/nodeConversions/blockToNode.ts b/packages/core/src/api/nodeConversions/blockToNode.ts
index 1f8a389fd8..206ff8d9fd 100644
--- a/packages/core/src/api/nodeConversions/blockToNode.ts
+++ b/packages/core/src/api/nodeConversions/blockToNode.ts
@@ -80,20 +80,28 @@ function styledTextToNodes(
/**
* Converts a Link inline content element to
- * prosemirror text nodes with the link mark applied.
+ * prosemirror text nodes with the appropriate marks
*/
function linkToNodes(
link: PartialLink,
schema: Schema,
styleSchema: StyleSchema,
): Node[] {
- const linkMark = schema.marks.link.create({ href: link.href });
+ const linkMark = schema.marks.link.create({
+ href: link.href,
+ });
return styledTextArrayToNodes(link.content, schema, styleSchema).map(
- (node) =>
- node.type.name === "text"
- ? node.mark([...node.marks, linkMark])
- : node,
+ (node) => {
+ if (node.type.name === "text") {
+ return node.mark([...node.marks, linkMark]);
+ }
+
+ if (node.type.name === "hardBreak") {
+ return node;
+ }
+ throw new Error("unexpected node type");
+ },
);
}
diff --git a/packages/core/src/api/nodeConversions/nodeToBlock.ts b/packages/core/src/api/nodeConversions/nodeToBlock.ts
index c2691ae500..5048f91a2b 100644
--- a/packages/core/src/api/nodeConversions/nodeToBlock.ts
+++ b/packages/core/src/api/nodeConversions/nodeToBlock.ts
@@ -1,4 +1,4 @@
-import { Node, Schema, Slice } from "@tiptap/pm/model";
+import { Mark, Node, Schema, Slice } from "@tiptap/pm/model";
import type { Block } from "../../blocks/defaultBlocks.js";
import UniqueID from "../../extensions/tiptap-extensions/UniqueID/UniqueID.js";
import type {
@@ -135,147 +135,206 @@ export function contentNodeToTableContent<
return ret;
}
-/**
- * Extract styles from a PM node's marks, separating link href from style marks.
- */
-function extractMarks(
- node: Node,
- styleSchema: S,
-): { styles: Styles; href: string | undefined } {
- const styles: Styles = {};
- let href: string | undefined;
-
- for (const mark of node.marks) {
- if (mark.type.name === "link") {
- href = mark.attrs.href;
- } else {
- const config = styleSchema[mark.type.name];
- if (!config) {
- if (mark.type.spec.blocknoteIgnore) {
- continue;
- }
- throw new Error(`style ${mark.type.name} not found in styleSchema`);
- }
- if (config.propSchema === "boolean") {
- (styles as any)[config.type] = true;
- } else if (config.propSchema === "string") {
- (styles as any)[config.type] = mark.attrs.stringValue;
- } else {
- throw new UnreachableCaseError(config.propSchema);
- }
- }
- }
-
- return { styles, href };
-}
-
-// A flattened record representing one PM text node's contribution.
-type FlatTextRecord = {
- kind: "text";
- text: string;
- styles: Styles;
- href: string | undefined;
-};
-
-type FlatRecord =
- | FlatTextRecord
- | { kind: "custom"; node: Node };
-
/**
* Converts an internal (prosemirror) content node to a BlockNote InlineContent array.
- *
- * Two-pass approach:
- * 1. Flatten each PM child node into a simple record (text + styles + optional href, or custom node)
- * 2. Merge consecutive records with the same href/styles into StyledText or Link objects
*/
export function contentNodeToInlineContent<
I extends InlineContentSchema,
S extends StyleSchema,
>(contentNode: Node, inlineContentSchema: I, styleSchema: S) {
- // Pass 1: Flatten PM nodes into records
- const records: FlatRecord[] = [];
+ const content: InlineContent[] = [];
+ let currentContent: InlineContent | undefined = undefined;
+ // Most of the logic below is for handling links because in ProseMirror links are marks
+ // while in BlockNote links are a type of inline content
contentNode.content.forEach((node) => {
+ // hardBreak nodes do not have an InlineContent equivalent, instead we
+ // add a newline to the previous node.
if (node.type.name === "hardBreak") {
- // Append newline to the previous text record, or create one
- const last = records[records.length - 1];
- if (last && last.kind === "text") {
- last.text += "\n";
+ if (currentContent) {
+ // Current content exists.
+ if (isStyledTextInlineContent(currentContent)) {
+ // Current content is text.
+ currentContent.text += "\n";
+ } else if (isLinkInlineContent(currentContent)) {
+ // Current content is a link.
+ currentContent.content[currentContent.content.length - 1].text +=
+ "\n";
+ } else {
+ throw new Error("unexpected");
+ }
} else {
- records.push({
- kind: "text",
+ // Current content does not exist.
+ currentContent = {
+ type: "text",
text: "\n",
- styles: {} as Styles,
- href: undefined,
- });
+ styles: {},
+ };
}
- return;
- }
- if (node.type.name === "text") {
- const { styles, href } = extractMarks(node, styleSchema);
- records.push({ kind: "text", text: node.textContent, styles, href });
return;
}
- // Custom inline content node
- if (!inlineContentSchema[node.type.name]) {
- // eslint-disable-next-line no-console
- console.warn("unrecognized inline content type", node.type.name);
+ if (node.type.name !== "link" && node.type.name !== "text") {
+ if (!inlineContentSchema[node.type.name]) {
+ // eslint-disable-next-line no-console
+ console.warn("unrecognized inline content type", node.type.name);
+ return;
+ }
+ if (currentContent) {
+ content.push(currentContent);
+ currentContent = undefined;
+ }
+
+ content.push(
+ nodeToCustomInlineContent(node, inlineContentSchema, styleSchema),
+ );
+
return;
}
- records.push({ kind: "custom", node });
- });
- // Pass 2: Merge consecutive text records into StyledText / Link
- const content: InlineContent[] = [];
+ const styles: Styles = {};
+ let linkMark: Mark | undefined;
- for (const record of records) {
- if (record.kind === "custom") {
- content.push(
- nodeToCustomInlineContent(record.node, inlineContentSchema, styleSchema),
- );
- continue;
+ for (const mark of node.marks) {
+ if (mark.type.name === "link") {
+ linkMark = mark;
+ } else {
+ const config = styleSchema[mark.type.name];
+ if (!config) {
+ if (mark.type.spec.blocknoteIgnore) {
+ // at this point, we don't want to show certain marks (such as comments)
+ // in the BlockNote JSON output. These marks should be tagged with "blocknoteIgnore" in the spec
+ continue;
+ }
+ throw new Error(`style ${mark.type.name} not found in styleSchema`);
+ }
+ if (config.propSchema === "boolean") {
+ (styles as any)[config.type] = true;
+ } else if (config.propSchema === "string") {
+ (styles as any)[config.type] = mark.attrs.stringValue;
+ } else {
+ throw new UnreachableCaseError(config.propSchema);
+ }
+ }
}
- const { text, styles, href } = record;
- const stylesKey = JSON.stringify(styles);
- const last = content[content.length - 1];
-
- if (href !== undefined) {
- // This text belongs to a link
- if (
- last &&
- isLinkInlineContent(last) &&
- last.href === href
- ) {
- // Same link — try to merge with the last StyledText inside it
- const lastChild = last.content[last.content.length - 1];
- if (JSON.stringify(lastChild.styles) === stylesKey) {
- lastChild.text += text;
+ // Parsing links and text.
+ // Current content exists.
+ if (currentContent) {
+ // Current content is text.
+ if (isStyledTextInlineContent(currentContent)) {
+ if (!linkMark) {
+ // Node is text (same type as current content).
+ if (
+ JSON.stringify(currentContent.styles) === JSON.stringify(styles)
+ ) {
+ // Styles are the same.
+ currentContent.text += node.textContent;
+ } else {
+ // Styles are different.
+ content.push(currentContent);
+ currentContent = {
+ type: "text",
+ text: node.textContent,
+ styles,
+ };
+ }
} else {
- last.content.push({ type: "text", text, styles });
+ // Node is a link (different type to current content).
+ content.push(currentContent);
+ currentContent = {
+ type: "link",
+ href: linkMark.attrs.href,
+ content: [
+ {
+ type: "text",
+ text: node.textContent,
+ styles,
+ },
+ ],
+ };
+ }
+ } else if (isLinkInlineContent(currentContent)) {
+ // Current content is a link.
+ if (linkMark) {
+ // Node is a link (same type as current content).
+ // Link URLs are the same.
+ if (currentContent.href === linkMark.attrs.href) {
+ // Styles are the same.
+ if (
+ JSON.stringify(
+ currentContent.content[currentContent.content.length - 1]
+ .styles,
+ ) === JSON.stringify(styles)
+ ) {
+ currentContent.content[currentContent.content.length - 1].text +=
+ node.textContent;
+ } else {
+ // Styles are different.
+ currentContent.content.push({
+ type: "text",
+ text: node.textContent,
+ styles,
+ });
+ }
+ } else {
+ // Link URLs are different.
+ content.push(currentContent);
+ currentContent = {
+ type: "link",
+ href: linkMark.attrs.href,
+ content: [
+ {
+ type: "text",
+ text: node.textContent,
+ styles,
+ },
+ ],
+ };
+ }
+ } else {
+ // Node is text (different type to current content).
+ content.push(currentContent);
+ currentContent = {
+ type: "text",
+ text: node.textContent,
+ styles,
+ };
}
} else {
- // New link
- content.push({
- type: "link",
- href,
- content: [{ type: "text", text, styles }],
- });
+ // TODO
}
- } else {
- // Plain text
- if (
- last &&
- isStyledTextInlineContent(last) &&
- JSON.stringify(last.styles) === stylesKey
- ) {
- last.text += text;
- } else {
- content.push({ type: "text", text, styles });
+ }
+ // Current content does not exist.
+ else {
+ // Node is text.
+ if (!linkMark) {
+ currentContent = {
+ type: "text",
+ text: node.textContent,
+ styles,
+ };
+ }
+ // Node is a link.
+ else {
+ currentContent = {
+ type: "link",
+ href: linkMark.attrs.href,
+ content: [
+ {
+ type: "text",
+ text: node.textContent,
+ styles,
+ },
+ ],
+ };
}
}
+ });
+
+ if (currentContent) {
+ content.push(currentContent);
}
return content as InlineContent[];
From bcb526b0b49d25932e2011df9dcafd8e0f5f1a64 Mon Sep 17 00:00:00 2001
From: Nick the Sick
Date: Fri, 24 Apr 2026 10:52:47 +0200
Subject: [PATCH 12/15] fix: preserve cursor position in editLink when text is
unchanged
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Restores the upstream bug fix from ddd42f8dc (BLO-913) that was lost
during conflict resolution — only call insertText when the text actually
changed, so editing a link URL without touching the text doesn't reset
the selection.
Co-Authored-By: Claude Sonnet 4.6
---
packages/core/src/editor/managers/StyleManager.ts | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/packages/core/src/editor/managers/StyleManager.ts b/packages/core/src/editor/managers/StyleManager.ts
index 6f5c37d462..123ac6187b 100644
--- a/packages/core/src/editor/managers/StyleManager.ts
+++ b/packages/core/src/editor/managers/StyleManager.ts
@@ -229,7 +229,11 @@ export class StyleManager<
};
const linkMark = this.editor.pmSchema.mark("link", { href: url });
- tr.insertText(text, from, to).addMark(from, from + text.length, linkMark);
+ const existingText = tr.doc.textBetween(from, to);
+ if (text !== existingText) {
+ tr.insertText(text, from, to);
+ }
+ tr.addMark(from, from + text.length, linkMark);
});
this.editor.prosemirrorView.focus();
}
From 77cb1ef388c23c72c9cf0d273e0aee8f8fe297e7 Mon Sep 17 00:00:00 2001
From: Nick the Sick
Date: Fri, 24 Apr 2026 11:16:56 +0200
Subject: [PATCH 13/15] chore: clear request headers in xl-ai MSW snapshots
Reduces diff noise by zeroing out the request.headers arrays that started
getting recorded in snapshots on this branch; matches the convention on main.
Co-Authored-By: Claude Opus 4.7 (1M context)
---
...ph_1_801ad86e0c3a4562338793805e66a52f.json | 23 +------------------
...on_1_b6ecf36636295d284db3ba7243cd4835.json | 23 +------------------
...ph_1_3c276441275032fe98b12356026537a0.json | 15 +-----------
...on_1_0207de852025d2c0a1d417a7d66fa03c.json | 15 +-----------
...ph_1_937647a13580b4dbb611e3de3b2c8788.json | 15 +-----------
...on_1_d9ea724851130649f405ff50190452b5.json | 15 +-----------
...ck_1_afd5ee1bda075c7482d1861d03ad0a29.json | 23 +------------------
...ck_1_9a26ba1fa4692c62b4f519ed3669fdc5.json | 15 +-----------
...ck_1_2fd92a4c2642fff1ef49d65014aa1ac3.json | 15 +-----------
...rk_1_fd54b2fefac722ab5057252b68c4faec.json | 23 +------------------
...nk_1_93038afbc107d8439571e6287fc76a8f.json | 23 +------------------
...on_1_7035efab1f6d9e5a46dde12d39f9ed19.json | 23 +------------------
...te_1_467258028a5a6bef3542c1a5417d4b3d.json | 23 +------------------
...rk_1_90c0b37bad31f3b9b0d15c492c610d0b.json | 23 +------------------
...on_1_3e8b04b91ca15c467180df1c60c9e1b2.json | 23 +------------------
...nt_1_3551fccc96307281574c2c96eaa05002.json | 23 +------------------
...op_1_e7ef562479ab33624bfa2bd75c4d1f5e.json | 23 +------------------
...xt_1_3a3fa0950f819e8073475e78106b353d.json | 23 +------------------
...h)_1_7a05ed5acf369206dda586e41235430b.json | 23 +------------------
...d)_1_0d9c02b01414a68a2dab4af392179183.json | 23 +------------------
...on_1_ade79bca32d420b4323b2a888817b5d5.json | 23 +------------------
...nt_1_f90879213f18f8b8e13748443299b6dc.json | 23 +------------------
...op_1_3f8e13d1cfa75e24cd4e0dfb0eab9ef4.json | 23 +------------------
...nt_1_07d3d8730ff541c3a2bf5e53c6707dac.json | 23 +------------------
...rk_1_17fe180166622808ade902a2eccad8aa.json | 15 +-----------
...nk_1_a055d5e9dcf9d3ce1e1cddf57b441dc1.json | 15 +-----------
...on_1_7692c767dc159df75724f2a49cc38b0e.json | 15 +-----------
...te_1_b81e76afad4cf5e84bd6815d2bc8d069.json | 15 +-----------
...rk_1_da7d1e5e03db624c6007dc8137fc3588.json | 15 +-----------
...on_1_758855f114117cd6c8f70c7caa84cc68.json | 15 +-----------
...nt_1_222775b0c617ba9bcada86cd238b6d64.json | 15 +-----------
...op_1_ad74c153b3f0beb850955148f0a42c78.json | 15 +-----------
...xt_1_4bf0b01b1e009966973599ebc2194362.json | 15 +-----------
...h)_1_5ce19f53eaf195c6e284c91b0db7d586.json | 15 +-----------
...d)_1_0f8ce96b644d6bd531f0558208cf5790.json | 15 +-----------
...on_1_1cf9377128e689feac5e5e13a1d0e26f.json | 15 +-----------
...nt_1_260e8bc6dd5c9cbd0650701e6d95ada3.json | 15 +-----------
...op_1_339e6b8d82d281185c6ccbcd1809374f.json | 15 +-----------
...nt_1_ff26ae30546f4e0d4279e60e4b7a1fbf.json | 15 +-----------
...pe_1_d9cbf71a8b55c8be0b247c3bb200c59c.json | 15 +-----------
...rk_1_d1f45ba6fee8787529137c920d6bc58e.json | 15 +-----------
...nk_1_c9489269d9a2d4353eda54289ed7f395.json | 15 +-----------
...on_1_416931598559b3e7e906647a66f0b8b1.json | 15 +-----------
...te_1_9728e4dd714a6a14ce441d72378dd67a.json | 15 +-----------
...rk_1_198059a270dbbb88db8f1cba97503205.json | 15 +-----------
...on_1_9313219c085c3b39c7c14c00f388b4be.json | 15 +-----------
...nt_1_f7a4c2a7fc5e362c3484586f45b2501d.json | 15 +-----------
...op_1_38090ebbfaca38fca97b1e4f0a0dd942.json | 15 +-----------
...xt_1_6374879c3f8fbc16db7c43304d2faacd.json | 15 +-----------
...h)_1_0afac4d00d3f0bbdfd251a8394b6ff28.json | 15 +-----------
...d)_1_00156bb4dd5722d44e0ff5332561928a.json | 15 +-----------
...on_1_24abe901176e9d834f9542d0b26e82ae.json | 15 +-----------
...nt_1_3f479c81e81f4f9460df3af74ddd2207.json | 15 +-----------
...op_1_6012638796e6e00b242b43642bb90a7a.json | 15 +-----------
...nt_1_04e027a89c6d4e69a0f805d5c8987e2c.json | 15 +-----------
...pe_1_72aecf62b6c9c807411d248d46a62eea.json | 15 +-----------
56 files changed, 56 insertions(+), 928 deletions(-)
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add and update paragraph_1_801ad86e0c3a4562338793805e66a52f.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add and update paragraph_1_801ad86e0c3a4562338793805e66a52f.json
index 17cb4f5a39..a13940c3ca 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add and update paragraph_1_801ad86e0c3a4562338793805e66a52f.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add and update paragraph_1_801ad86e0c3a4562338793805e66a52f.json
@@ -3,28 +3,7 @@
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
"body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"add a new paragraph with the text 'You look great today!' after the first paragraph and translate first 'Hello, world' to dutch\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [
- [
- "anthropic-beta",
- "fine-grained-tool-streaming-2025-05-14"
- ],
- [
- "anthropic-version",
- "2023-06-01"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ],
- [
- "x-api-key",
- "not-available-in-ci"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add paragraph and update selection_1_b6ecf36636295d284db3ba7243cd4835.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add paragraph and update selection_1_b6ecf36636295d284db3ba7243cd4835.json
index a838ce9887..6954af0437 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add paragraph and update selection_1_b6ecf36636295d284db3ba7243cd4835.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add paragraph and update selection_1_b6ecf36636295d284db3ba7243cd4835.json
@@ -3,28 +3,7 @@
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
"body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello,
\\\"}]\"},{\"type\":\"text\",\"text\":\"This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):\"},{\"type\":\"text\",\"text\":\"[{\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"add a paragraph with the text 'You look great today!' before the selection and translate selection to German\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [
- [
- "anthropic-beta",
- "fine-grained-tool-streaming-2025-05-14"
- ],
- [
- "anthropic-version",
- "2023-06-01"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ],
- [
- "x-api-key",
- "not-available-in-ci"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add and update paragraph_1_3c276441275032fe98b12356026537a0.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add and update paragraph_1_3c276441275032fe98b12356026537a0.json
index 2a80ef2c4b..560da57620 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add and update paragraph_1_3c276441275032fe98b12356026537a0.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add and update paragraph_1_3c276441275032fe98b12356026537a0.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
"body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"add a new paragraph with the text 'You look great today!' after the first paragraph and translate first 'Hello, world' to dutch\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add paragraph and update selection_1_0207de852025d2c0a1d417a7d66fa03c.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add paragraph and update selection_1_0207de852025d2c0a1d417a7d66fa03c.json
index 4e41813c1f..90d8cd376f 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add paragraph and update selection_1_0207de852025d2c0a1d417a7d66fa03c.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add paragraph and update selection_1_0207de852025d2c0a1d417a7d66fa03c.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
"body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello,
\\\"}]This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):[{\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"add a paragraph with the text 'You look great today!' before the selection and translate selection to German\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add and update paragraph_1_937647a13580b4dbb611e3de3b2c8788.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add and update paragraph_1_937647a13580b4dbb611e3de3b2c8788.json
index 47f0b8028b..172301e1c3 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add and update paragraph_1_937647a13580b4dbb611e3de3b2c8788.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add and update paragraph_1_937647a13580b4dbb611e3de3b2c8788.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.openai.com/v1/responses",
"body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"add a new paragraph with the text 'You look great today!' after the first paragraph and translate first 'Hello, world' to dutch\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add paragraph and update selection_1_d9ea724851130649f405ff50190452b5.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add paragraph and update selection_1_d9ea724851130649f405ff50190452b5.json
index 42c2b39c8c..9fde0b3b35 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add paragraph and update selection_1_d9ea724851130649f405ff50190452b5.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add paragraph and update selection_1_d9ea724851130649f405ff50190452b5.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.openai.com/v1/responses",
"body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello,
\\\"}]\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"add a paragraph with the text 'You look great today!' before the selection and translate selection to German\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/delete first block_1_afd5ee1bda075c7482d1861d03ad0a29.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/delete first block_1_afd5ee1bda075c7482d1861d03ad0a29.json
index 5300fdf5b7..d779faf1ce 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/delete first block_1_afd5ee1bda075c7482d1861d03ad0a29.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/delete first block_1_afd5ee1bda075c7482d1861d03ad0a29.json
@@ -3,28 +3,7 @@
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
"body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"delete the first paragraph\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [
- [
- "anthropic-beta",
- "fine-grained-tool-streaming-2025-05-14"
- ],
- [
- "anthropic-version",
- "2023-06-01"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ],
- [
- "x-api-key",
- "not-available-in-ci"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/delete first block_1_9a26ba1fa4692c62b4f519ed3669fdc5.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/delete first block_1_9a26ba1fa4692c62b4f519ed3669fdc5.json
index bb5eaf6f2c..a5df8e290a 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/delete first block_1_9a26ba1fa4692c62b4f519ed3669fdc5.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/delete first block_1_9a26ba1fa4692c62b4f519ed3669fdc5.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
"body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"delete the first paragraph\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/delete first block_1_2fd92a4c2642fff1ef49d65014aa1ac3.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/delete first block_1_2fd92a4c2642fff1ef49d65014aa1ac3.json
index 814ffc9d70..4623687a48 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/delete first block_1_2fd92a4c2642fff1ef49d65014aa1ac3.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/delete first block_1_2fd92a4c2642fff1ef49d65014aa1ac3.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.openai.com/v1/responses",
"body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"delete the first paragraph\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link and change text within mark_1_fd54b2fefac722ab5057252b68c4faec.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link and change text within mark_1_fd54b2fefac722ab5057252b68c4faec.json
index 91288a6156..2a0016ad79 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link and change text within mark_1_fd54b2fefac722ab5057252b68c4faec.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link and change text within mark_1_fd54b2fefac722ab5057252b68c4faec.json
@@ -3,28 +3,7 @@
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
"body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"change the last paragraph to 'Hi, world! Bold the text. Link.' without any markup like bold or link\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [
- [
- "anthropic-beta",
- "fine-grained-tool-streaming-2025-05-14"
- ],
- [
- "anthropic-version",
- "2023-06-01"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ],
- [
- "x-api-key",
- "not-available-in-ci"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link_1_93038afbc107d8439571e6287fc76a8f.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link_1_93038afbc107d8439571e6287fc76a8f.json
index 01edd35bd9..cf26b5ee4e 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link_1_93038afbc107d8439571e6287fc76a8f.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link_1_93038afbc107d8439571e6287fc76a8f.json
@@ -3,28 +3,7 @@
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
"body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"remove the formatting (turn into plain text without styles or urls) from the last paragraph\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [
- [
- "anthropic-beta",
- "fine-grained-tool-streaming-2025-05-14"
- ],
- [
- "anthropic-version",
- "2023-06-01"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ],
- [
- "x-api-key",
- "not-available-in-ci"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/plain source block, add mention_1_7035efab1f6d9e5a46dde12d39f9ed19.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/plain source block, add mention_1_7035efab1f6d9e5a46dde12d39f9ed19.json
index bc4e3fc826..37d66c3a0f 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/plain source block, add mention_1_7035efab1f6d9e5a46dde12d39f9ed19.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/plain source block, add mention_1_7035efab1f6d9e5a46dde12d39f9ed19.json
@@ -3,28 +3,7 @@
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
"body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"Change the first paragraph to Hello, Jane Doe! (use a mention)\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [
- [
- "anthropic-beta",
- "fine-grained-tool-streaming-2025-05-14"
- ],
- [
- "anthropic-version",
- "2023-06-01"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ],
- [
- "x-api-key",
- "not-available-in-ci"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/standard update_1_467258028a5a6bef3542c1a5417d4b3d.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/standard update_1_467258028a5a6bef3542c1a5417d4b3d.json
index dea1f47b37..47b40ced02 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/standard update_1_467258028a5a6bef3542c1a5417d4b3d.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/standard update_1_467258028a5a6bef3542c1a5417d4b3d.json
@@ -3,28 +3,7 @@
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
"body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"translate the first paragraph to german\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [
- [
- "anthropic-beta",
- "fine-grained-tool-streaming-2025-05-14"
- ],
- [
- "anthropic-version",
- "2023-06-01"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ],
- [
- "x-api-key",
- "not-available-in-ci"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mark_1_90c0b37bad31f3b9b0d15c492c610d0b.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mark_1_90c0b37bad31f3b9b0d15c492c610d0b.json
index 1f4c83cef1..a571792edd 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mark_1_90c0b37bad31f3b9b0d15c492c610d0b.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mark_1_90c0b37bad31f3b9b0d15c492c610d0b.json
@@ -3,28 +3,7 @@
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
"body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"remove the bold style from the second block\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [
- [
- "anthropic-beta",
- "fine-grained-tool-streaming-2025-05-14"
- ],
- [
- "anthropic-version",
- "2023-06-01"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ],
- [
- "x-api-key",
- "not-available-in-ci"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mention_1_3e8b04b91ca15c467180df1c60c9e1b2.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mention_1_3e8b04b91ca15c467180df1c60c9e1b2.json
index 418d42818a..a538f8cbed 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mention_1_3e8b04b91ca15c467180df1c60c9e1b2.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mention_1_3e8b04b91ca15c467180df1c60c9e1b2.json
@@ -3,28 +3,7 @@
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
"body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"change to say 'Hello! How are you doing? This text is blue!' (remove mention but keep bold text)\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [
- [
- "anthropic-beta",
- "fine-grained-tool-streaming-2025-05-14"
- ],
- [
- "anthropic-version",
- "2023-06-01"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ],
- [
- "x-api-key",
- "not-available-in-ci"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, replace content_1_3551fccc96307281574c2c96eaa05002.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, replace content_1_3551fccc96307281574c2c96eaa05002.json
index 38aa7114d8..cc1fda50fd 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, replace content_1_3551fccc96307281574c2c96eaa05002.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, replace content_1_3551fccc96307281574c2c96eaa05002.json
@@ -3,28 +3,7 @@
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
"body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"update the content of the second block to 'Hello, updated content'\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [
- [
- "anthropic-beta",
- "fine-grained-tool-streaming-2025-05-14"
- ],
- [
- "anthropic-version",
- "2023-06-01"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ],
- [
- "x-api-key",
- "not-available-in-ci"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update mention prop_1_e7ef562479ab33624bfa2bd75c4d1f5e.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update mention prop_1_e7ef562479ab33624bfa2bd75c4d1f5e.json
index c4862b6867..32cc521cab 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update mention prop_1_e7ef562479ab33624bfa2bd75c4d1f5e.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update mention prop_1_e7ef562479ab33624bfa2bd75c4d1f5e.json
@@ -3,28 +3,7 @@
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
"body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"update the mention to Jane Doe\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [
- [
- "anthropic-beta",
- "fine-grained-tool-streaming-2025-05-14"
- ],
- [
- "anthropic-version",
- "2023-06-01"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ],
- [
- "x-api-key",
- "not-available-in-ci"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update text_1_3a3fa0950f819e8073475e78106b353d.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update text_1_3a3fa0950f819e8073475e78106b353d.json
index aff55ef011..ea892aa5f8 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update text_1_3a3fa0950f819e8073475e78106b353d.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update text_1_3a3fa0950f819e8073475e78106b353d.json
@@ -3,28 +3,7 @@
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
"body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"translate second block including the greeting to German (use dir instead of Ihnen)\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [
- [
- "anthropic-beta",
- "fine-grained-tool-streaming-2025-05-14"
- ],
- [
- "anthropic-version",
- "2023-06-01"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ],
- [
- "x-api-key",
- "not-available-in-ci"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (paragraph)_1_7a05ed5acf369206dda586e41235430b.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (paragraph)_1_7a05ed5acf369206dda586e41235430b.json
index 92ee3b08ab..2cd852de24 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (paragraph)_1_7a05ed5acf369206dda586e41235430b.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (paragraph)_1_7a05ed5acf369206dda586e41235430b.json
@@ -3,28 +3,7 @@
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
"body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"make first paragraph bold\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [
- [
- "anthropic-beta",
- "fine-grained-tool-streaming-2025-05-14"
- ],
- [
- "anthropic-version",
- "2023-06-01"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ],
- [
- "x-api-key",
- "not-available-in-ci"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (word)_1_0d9c02b01414a68a2dab4af392179183.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (word)_1_0d9c02b01414a68a2dab4af392179183.json
index 6ada120256..6398c3e50a 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (word)_1_0d9c02b01414a68a2dab4af392179183.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (word)_1_0d9c02b01414a68a2dab4af392179183.json
@@ -3,28 +3,7 @@
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
"body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"make 'world!' (in the first block) bold\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [
- [
- "anthropic-beta",
- "fine-grained-tool-streaming-2025-05-14"
- ],
- [
- "anthropic-version",
- "2023-06-01"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ],
- [
- "x-api-key",
- "not-available-in-ci"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/translate selection_1_ade79bca32d420b4323b2a888817b5d5.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/translate selection_1_ade79bca32d420b4323b2a888817b5d5.json
index dfc1595250..a6de21617f 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/translate selection_1_ade79bca32d420b4323b2a888817b5d5.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/translate selection_1_ade79bca32d420b4323b2a888817b5d5.json
@@ -3,28 +3,7 @@
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
"body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello,
\\\"}]\"},{\"type\":\"text\",\"text\":\"This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):\"},{\"type\":\"text\",\"text\":\"[{\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"translate to German\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [
- [
- "anthropic-beta",
- "fine-grained-tool-streaming-2025-05-14"
- ],
- [
- "anthropic-version",
- "2023-06-01"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ],
- [
- "x-api-key",
- "not-available-in-ci"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop and content_1_f90879213f18f8b8e13748443299b6dc.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop and content_1_f90879213f18f8b8e13748443299b6dc.json
index 93f6d6b339..495ce50897 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop and content_1_f90879213f18f8b8e13748443299b6dc.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop and content_1_f90879213f18f8b8e13748443299b6dc.json
@@ -3,28 +3,7 @@
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
"body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"make the first paragraph right aligned and update the content to 'What's up, world!'\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [
- [
- "anthropic-beta",
- "fine-grained-tool-streaming-2025-05-14"
- ],
- [
- "anthropic-version",
- "2023-06-01"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ],
- [
- "x-api-key",
- "not-available-in-ci"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop_1_3f8e13d1cfa75e24cd4e0dfb0eab9ef4.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop_1_3f8e13d1cfa75e24cd4e0dfb0eab9ef4.json
index ce8a307c89..3238970c3d 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop_1_3f8e13d1cfa75e24cd4e0dfb0eab9ef4.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop_1_3f8e13d1cfa75e24cd4e0dfb0eab9ef4.json
@@ -3,28 +3,7 @@
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
"body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"make the first paragraph right aligned\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [
- [
- "anthropic-beta",
- "fine-grained-tool-streaming-2025-05-14"
- ],
- [
- "anthropic-version",
- "2023-06-01"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ],
- [
- "x-api-key",
- "not-available-in-ci"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type and content_1_07d3d8730ff541c3a2bf5e53c6707dac.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type and content_1_07d3d8730ff541c3a2bf5e53c6707dac.json
index 70c61a4455..0bc6d38170 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type and content_1_07d3d8730ff541c3a2bf5e53c6707dac.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type and content_1_07d3d8730ff541c3a2bf5e53c6707dac.json
@@ -3,28 +3,7 @@
"method": "POST",
"url": "https://api.anthropic.com/v1/messages",
"body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"make the first paragraph a heading and update the content to 'What's up, world!'\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}",
- "headers": [
- [
- "anthropic-beta",
- "fine-grained-tool-streaming-2025-05-14"
- ],
- [
- "anthropic-version",
- "2023-06-01"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/anthropic/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ],
- [
- "x-api-key",
- "not-available-in-ci"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link and change text within mark_1_17fe180166622808ade902a2eccad8aa.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link and change text within mark_1_17fe180166622808ade902a2eccad8aa.json
index 86cf47e52c..047fcba079 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link and change text within mark_1_17fe180166622808ade902a2eccad8aa.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link and change text within mark_1_17fe180166622808ade902a2eccad8aa.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
"body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"change the last paragraph to 'Hi, world! Bold the text. Link.' without any markup like bold or link\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link_1_a055d5e9dcf9d3ce1e1cddf57b441dc1.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link_1_a055d5e9dcf9d3ce1e1cddf57b441dc1.json
index 9c7c6aadea..129adc84b8 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link_1_a055d5e9dcf9d3ce1e1cddf57b441dc1.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link_1_a055d5e9dcf9d3ce1e1cddf57b441dc1.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
"body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"remove the formatting (turn into plain text without styles or urls) from the last paragraph\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/plain source block, add mention_1_7692c767dc159df75724f2a49cc38b0e.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/plain source block, add mention_1_7692c767dc159df75724f2a49cc38b0e.json
index e69c8a1cff..baa60153ab 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/plain source block, add mention_1_7692c767dc159df75724f2a49cc38b0e.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/plain source block, add mention_1_7692c767dc159df75724f2a49cc38b0e.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
"body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"Change the first paragraph to Hello, Jane Doe! (use a mention)\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/standard update_1_b81e76afad4cf5e84bd6815d2bc8d069.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/standard update_1_b81e76afad4cf5e84bd6815d2bc8d069.json
index e778aaca31..e92f32e21e 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/standard update_1_b81e76afad4cf5e84bd6815d2bc8d069.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/standard update_1_b81e76afad4cf5e84bd6815d2bc8d069.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
"body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"translate the first paragraph to german\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mark_1_da7d1e5e03db624c6007dc8137fc3588.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mark_1_da7d1e5e03db624c6007dc8137fc3588.json
index 5178b27856..c46f82c3fe 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mark_1_da7d1e5e03db624c6007dc8137fc3588.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mark_1_da7d1e5e03db624c6007dc8137fc3588.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
"body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"remove the bold style from the second block\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mention_1_758855f114117cd6c8f70c7caa84cc68.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mention_1_758855f114117cd6c8f70c7caa84cc68.json
index 5d64e8febf..e4d28f7a0c 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mention_1_758855f114117cd6c8f70c7caa84cc68.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mention_1_758855f114117cd6c8f70c7caa84cc68.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
"body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"change to say 'Hello! How are you doing? This text is blue!' (remove mention but keep bold text)\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, replace content_1_222775b0c617ba9bcada86cd238b6d64.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, replace content_1_222775b0c617ba9bcada86cd238b6d64.json
index 4bad856005..b8846d247a 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, replace content_1_222775b0c617ba9bcada86cd238b6d64.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, replace content_1_222775b0c617ba9bcada86cd238b6d64.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
"body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"update the content of the second block to 'Hello, updated content'\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update mention prop_1_ad74c153b3f0beb850955148f0a42c78.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update mention prop_1_ad74c153b3f0beb850955148f0a42c78.json
index 8e44760e5f..ea41351a31 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update mention prop_1_ad74c153b3f0beb850955148f0a42c78.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update mention prop_1_ad74c153b3f0beb850955148f0a42c78.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
"body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"update the mention to Jane Doe\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update text_1_4bf0b01b1e009966973599ebc2194362.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update text_1_4bf0b01b1e009966973599ebc2194362.json
index f3e0f8c04c..0ef8a20a64 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update text_1_4bf0b01b1e009966973599ebc2194362.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update text_1_4bf0b01b1e009966973599ebc2194362.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
"body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"translate second block including the greeting to German (use dir instead of Ihnen)\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (paragraph)_1_5ce19f53eaf195c6e284c91b0db7d586.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (paragraph)_1_5ce19f53eaf195c6e284c91b0db7d586.json
index e6f6557f11..fe97cf21ae 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (paragraph)_1_5ce19f53eaf195c6e284c91b0db7d586.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (paragraph)_1_5ce19f53eaf195c6e284c91b0db7d586.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
"body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"make first paragraph bold\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (word)_1_0f8ce96b644d6bd531f0558208cf5790.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (word)_1_0f8ce96b644d6bd531f0558208cf5790.json
index 1d1065da27..551f482c07 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (word)_1_0f8ce96b644d6bd531f0558208cf5790.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (word)_1_0f8ce96b644d6bd531f0558208cf5790.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
"body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"make 'world!' (in the first block) bold\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/translate selection_1_1cf9377128e689feac5e5e13a1d0e26f.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/translate selection_1_1cf9377128e689feac5e5e13a1d0e26f.json
index ba1d3d025d..5e95bd637b 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/translate selection_1_1cf9377128e689feac5e5e13a1d0e26f.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/translate selection_1_1cf9377128e689feac5e5e13a1d0e26f.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
"body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello,
\\\"}]This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):[{\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"translate to German\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop and content_1_260e8bc6dd5c9cbd0650701e6d95ada3.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop and content_1_260e8bc6dd5c9cbd0650701e6d95ada3.json
index 82d73acbb5..e5c9bc26e2 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop and content_1_260e8bc6dd5c9cbd0650701e6d95ada3.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop and content_1_260e8bc6dd5c9cbd0650701e6d95ada3.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
"body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"make the first paragraph right aligned and update the content to 'What's up, world!'\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop_1_339e6b8d82d281185c6ccbcd1809374f.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop_1_339e6b8d82d281185c6ccbcd1809374f.json
index 01e33786f8..ce84d2dd94 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop_1_339e6b8d82d281185c6ccbcd1809374f.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop_1_339e6b8d82d281185c6ccbcd1809374f.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
"body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"make the first paragraph right aligned\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type and content_1_ff26ae30546f4e0d4279e60e4b7a1fbf.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type and content_1_ff26ae30546f4e0d4279e60e4b7a1fbf.json
index 0e993d6871..a022adac06 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type and content_1_ff26ae30546f4e0d4279e60e4b7a1fbf.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type and content_1_ff26ae30546f4e0d4279e60e4b7a1fbf.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
"body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"make the first paragraph a heading and update the content to 'What's up, world!'\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type_1_d9cbf71a8b55c8be0b247c3bb200c59c.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type_1_d9cbf71a8b55c8be0b247c3bb200c59c.json
index 94dca71924..3e59eeb97b 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type_1_d9cbf71a8b55c8be0b247c3bb200c59c.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type_1_d9cbf71a8b55c8be0b247c3bb200c59c.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.groq.com/openai/v1/chat/completions",
"body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"},{\"role\":\"user\",\"content\":\"make the first paragraph a heading\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/groq/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link and change text within mark_1_d1f45ba6fee8787529137c920d6bc58e.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link and change text within mark_1_d1f45ba6fee8787529137c920d6bc58e.json
index 7828001204..2b259a1162 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link and change text within mark_1_d1f45ba6fee8787529137c920d6bc58e.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link and change text within mark_1_d1f45ba6fee8787529137c920d6bc58e.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.openai.com/v1/responses",
"body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"change the last paragraph to 'Hi, world! Bold the text. Link.' without any markup like bold or link\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link_1_c9489269d9a2d4353eda54289ed7f395.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link_1_c9489269d9a2d4353eda54289ed7f395.json
index 5c110de741..9959e8debf 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link_1_c9489269d9a2d4353eda54289ed7f395.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link_1_c9489269d9a2d4353eda54289ed7f395.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.openai.com/v1/responses",
"body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"remove the formatting (turn into plain text without styles or urls) from the last paragraph\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/plain source block, add mention_1_416931598559b3e7e906647a66f0b8b1.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/plain source block, add mention_1_416931598559b3e7e906647a66f0b8b1.json
index c084b5dcaf..3fe6710506 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/plain source block, add mention_1_416931598559b3e7e906647a66f0b8b1.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/plain source block, add mention_1_416931598559b3e7e906647a66f0b8b1.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.openai.com/v1/responses",
"body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"Change the first paragraph to Hello, Jane Doe! (use a mention)\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/standard update_1_9728e4dd714a6a14ce441d72378dd67a.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/standard update_1_9728e4dd714a6a14ce441d72378dd67a.json
index d151e649ad..23218a2a7a 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/standard update_1_9728e4dd714a6a14ce441d72378dd67a.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/standard update_1_9728e4dd714a6a14ce441d72378dd67a.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.openai.com/v1/responses",
"body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"translate the first paragraph to german\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mark_1_198059a270dbbb88db8f1cba97503205.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mark_1_198059a270dbbb88db8f1cba97503205.json
index 7eb5789ee6..6c351e480f 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mark_1_198059a270dbbb88db8f1cba97503205.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mark_1_198059a270dbbb88db8f1cba97503205.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.openai.com/v1/responses",
"body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"remove the bold style from the second block\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mention_1_9313219c085c3b39c7c14c00f388b4be.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mention_1_9313219c085c3b39c7c14c00f388b4be.json
index 9d91395de9..23a80634d8 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mention_1_9313219c085c3b39c7c14c00f388b4be.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mention_1_9313219c085c3b39c7c14c00f388b4be.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.openai.com/v1/responses",
"body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"change to say 'Hello! How are you doing? This text is blue!' (remove mention but keep bold text)\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, replace content_1_f7a4c2a7fc5e362c3484586f45b2501d.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, replace content_1_f7a4c2a7fc5e362c3484586f45b2501d.json
index 2d00fde690..1393f867cc 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, replace content_1_f7a4c2a7fc5e362c3484586f45b2501d.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, replace content_1_f7a4c2a7fc5e362c3484586f45b2501d.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.openai.com/v1/responses",
"body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"update the content of the second block to 'Hello, updated content'\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update mention prop_1_38090ebbfaca38fca97b1e4f0a0dd942.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update mention prop_1_38090ebbfaca38fca97b1e4f0a0dd942.json
index 3c984969c3..47630e82dc 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update mention prop_1_38090ebbfaca38fca97b1e4f0a0dd942.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update mention prop_1_38090ebbfaca38fca97b1e4f0a0dd942.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.openai.com/v1/responses",
"body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"update the mention to Jane Doe\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update text_1_6374879c3f8fbc16db7c43304d2faacd.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update text_1_6374879c3f8fbc16db7c43304d2faacd.json
index fe132f67e5..0b039d4534 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update text_1_6374879c3f8fbc16db7c43304d2faacd.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update text_1_6374879c3f8fbc16db7c43304d2faacd.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.openai.com/v1/responses",
"body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"translate second block including the greeting to German (use dir instead of Ihnen)\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (paragraph)_1_0afac4d00d3f0bbdfd251a8394b6ff28.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (paragraph)_1_0afac4d00d3f0bbdfd251a8394b6ff28.json
index f67596bec5..2afc4287e4 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (paragraph)_1_0afac4d00d3f0bbdfd251a8394b6ff28.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (paragraph)_1_0afac4d00d3f0bbdfd251a8394b6ff28.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.openai.com/v1/responses",
"body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make first paragraph bold\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (word)_1_00156bb4dd5722d44e0ff5332561928a.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (word)_1_00156bb4dd5722d44e0ff5332561928a.json
index 84d94e2567..c4a11396f5 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (word)_1_00156bb4dd5722d44e0ff5332561928a.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (word)_1_00156bb4dd5722d44e0ff5332561928a.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.openai.com/v1/responses",
"body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make 'world!' (in the first block) bold\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/translate selection_1_24abe901176e9d834f9542d0b26e82ae.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/translate selection_1_24abe901176e9d834f9542d0b26e82ae.json
index 4b9686d1c6..26d38da62e 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/translate selection_1_24abe901176e9d834f9542d0b26e82ae.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/translate selection_1_24abe901176e9d834f9542d0b26e82ae.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.openai.com/v1/responses",
"body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello,
\\\"}]\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"translate to German\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop and content_1_3f479c81e81f4f9460df3af74ddd2207.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop and content_1_3f479c81e81f4f9460df3af74ddd2207.json
index 412ec36043..b05a2da52c 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop and content_1_3f479c81e81f4f9460df3af74ddd2207.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop and content_1_3f479c81e81f4f9460df3af74ddd2207.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.openai.com/v1/responses",
"body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make the first paragraph right aligned and update the content to 'What's up, world!'\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop_1_6012638796e6e00b242b43642bb90a7a.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop_1_6012638796e6e00b242b43642bb90a7a.json
index 255a4f5160..20786e18a6 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop_1_6012638796e6e00b242b43642bb90a7a.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop_1_6012638796e6e00b242b43642bb90a7a.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.openai.com/v1/responses",
"body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make the first paragraph right aligned\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type and content_1_04e027a89c6d4e69a0f805d5c8987e2c.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type and content_1_04e027a89c6d4e69a0f805d5c8987e2c.json
index eb063403bd..96ce64c058 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type and content_1_04e027a89c6d4e69a0f805d5c8987e2c.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type and content_1_04e027a89c6d4e69a0f805d5c8987e2c.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.openai.com/v1/responses",
"body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make the first paragraph a heading and update the content to 'What's up, world!'\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type_1_72aecf62b6c9c807411d248d46a62eea.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type_1_72aecf62b6c9c807411d248d46a62eea.json
index c9390ad2cd..765dc3458e 100644
--- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type_1_72aecf62b6c9c807411d248d46a62eea.json
+++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type_1_72aecf62b6c9c807411d248d46a62eea.json
@@ -3,20 +3,7 @@
"method": "POST",
"url": "https://api.openai.com/v1/responses",
"body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `` is valid, but `` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with ) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"Hello, world!
\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"Hello, @John Doe! How are you doing? This text is blue!
\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"Hello, world! Bold text. Link.
\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make the first paragraph a heading\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}",
- "headers": [
- [
- "authorization",
- "Bearer not-available-in-ci"
- ],
- [
- "content-type",
- "application/json"
- ],
- [
- "user-agent",
- "ai-sdk/openai/3.0.2 ai-sdk/provider-utils/4.0.2 runtime/browser"
- ]
- ],
+ "headers": [],
"cookies": []
},
"response": {
From b6756ab4f21a0b73052c8bccb8cd5bd47cd65e08 Mon Sep 17 00:00:00 2001
From: Matthew Lipski
Date: Fri, 24 Apr 2026 13:07:34 +0200
Subject: [PATCH 14/15] Implemented PR feedback
---
docs/content/docs/react/overview.mdx | 4 ++--
docs/content/docs/reference/editor/overview.mdx | 4 ++--
packages/core/src/editor/BlockNoteEditor.ts | 5 ++++-
.../managers/ExtensionManager/extensions.ts | 1 +
.../Link/helpers/clickHandler.ts | 16 ++++++++++++----
.../extensions/tiptap-extensions/Link/link.ts | 12 ++++++++++--
6 files changed, 31 insertions(+), 11 deletions(-)
diff --git a/docs/content/docs/react/overview.mdx b/docs/content/docs/react/overview.mdx
index da09fe2a3c..b85d29ab21 100644
--- a/docs/content/docs/react/overview.mdx
+++ b/docs/content/docs/react/overview.mdx
@@ -45,8 +45,8 @@ The `` component is used to render the editor. It also provides a
### Props
-
diff --git a/docs/content/docs/reference/editor/overview.mdx b/docs/content/docs/reference/editor/overview.mdx
index 5230aeff02..086d91c754 100644
--- a/docs/content/docs/reference/editor/overview.mdx
+++ b/docs/content/docs/reference/editor/overview.mdx
@@ -113,8 +113,8 @@ editor.pasteMarkdown("# Hello\n\nThis is **bold** text.");
The editor can be configured with the following options when using `BlockNoteEditor.create`:
-
diff --git a/packages/core/src/editor/BlockNoteEditor.ts b/packages/core/src/editor/BlockNoteEditor.ts
index 72c3fc7082..107974b2fc 100644
--- a/packages/core/src/editor/BlockNoteEditor.ts
+++ b/packages/core/src/editor/BlockNoteEditor.ts
@@ -159,7 +159,10 @@ export interface BlockNoteEditorOptions<
* Return `false` to let ProseMirror continue handling the click event.
* Returning `true` or nothing (the default) marks the event as handled.
*/
- onClick?: (event: MouseEvent) => boolean | void;
+ onClick?: (
+ event: MouseEvent,
+ editor: BlockNoteEditor,
+ ) => boolean | void;
};
/**
diff --git a/packages/core/src/editor/managers/ExtensionManager/extensions.ts b/packages/core/src/editor/managers/ExtensionManager/extensions.ts
index 6e77780f22..fd14d7c2b5 100644
--- a/packages/core/src/editor/managers/ExtensionManager/extensions.ts
+++ b/packages/core/src/editor/managers/ExtensionManager/extensions.ts
@@ -75,6 +75,7 @@ export function getDefaultTiptapExtensions(
SuggestionModificationMark,
Link.configure({
HTMLAttributes: options.links?.HTMLAttributes ?? {},
+ editor,
onClick: options.links?.onClick,
}),
...(Object.values(editor.schema.styleSpecs).map((styleSpec) => {
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/helpers/clickHandler.ts b/packages/core/src/extensions/tiptap-extensions/Link/helpers/clickHandler.ts
index 210ac20ea5..d41082cc17 100644
--- a/packages/core/src/extensions/tiptap-extensions/Link/helpers/clickHandler.ts
+++ b/packages/core/src/extensions/tiptap-extensions/Link/helpers/clickHandler.ts
@@ -2,11 +2,16 @@ import type { Editor } from "@tiptap/core";
import { getAttributes } from "@tiptap/core";
import type { MarkType } from "@tiptap/pm/model";
import { Plugin, PluginKey } from "@tiptap/pm/state";
+import type { BlockNoteEditor } from "../../../../editor/BlockNoteEditor.js";
type ClickHandlerOptions = {
type: MarkType;
- editor: Editor;
- onClick?: (event: MouseEvent) => boolean | void;
+ tiptapEditor: Editor;
+ editor?: BlockNoteEditor;
+ onClick?: (
+ event: MouseEvent,
+ editor: BlockNoteEditor,
+ ) => boolean | void;
};
export function clickHandler(options: ClickHandlerOptions): Plugin {
@@ -36,7 +41,7 @@ export function clickHandler(options: ClickHandlerOptions): Plugin {
return false;
}
- const root = options.editor.view.dom;
+ const root = options.tiptapEditor.view.dom;
// Intentionally limit the lookup to the editor root.
// Using tag names like DIV as boundaries breaks with custom NodeViews,
@@ -54,7 +59,10 @@ export function clickHandler(options: ClickHandlerOptions): Plugin {
}
if (options.onClick) {
- const result = options.onClick(event);
+ if (!options.editor) {
+ throw new Error("BlockNoteEditor not found in Link click handler");
+ }
+ const result = options.onClick(event, options.editor);
return result ?? true;
}
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/link.ts b/packages/core/src/extensions/tiptap-extensions/Link/link.ts
index 9a7e2b0728..2752237ff2 100644
--- a/packages/core/src/extensions/tiptap-extensions/Link/link.ts
+++ b/packages/core/src/extensions/tiptap-extensions/Link/link.ts
@@ -1,6 +1,7 @@
import type { PasteRuleMatch } from "@tiptap/core";
import { Mark, markPasteRule, mergeAttributes } from "@tiptap/core";
import type { Plugin } from "@tiptap/pm/state";
+import type { BlockNoteEditor } from "../../../editor/BlockNoteEditor.js";
import { autolink } from "./helpers/autolink.js";
import { findLinks } from "./helpers/linkDetector.js";
import { clickHandler } from "./helpers/clickHandler.js";
@@ -59,7 +60,11 @@ function shouldAutoLink(url: string): boolean {
export type LinkOptions = {
HTMLAttributes: Record;
- onClick?: (event: MouseEvent) => boolean | void;
+ editor?: BlockNoteEditor;
+ onClick?: (
+ event: MouseEvent,
+ editor: BlockNoteEditor,
+ ) => boolean | void;
};
/**
@@ -79,6 +84,7 @@ export const Link = Mark.create({
addOptions() {
return {
HTMLAttributes: {},
+ editor: undefined,
onClick: undefined,
};
},
@@ -176,7 +182,9 @@ export const Link = Mark.create({
plugins.push(
clickHandler({
type: this.type,
- editor: this.editor,
+ tiptapEditor: this.editor,
+ editor: this.options.editor,
+ onClick: this.options.onClick,
}),
);
From 295a0deb7b3d83a2b7918cef6f6197776874c15d Mon Sep 17 00:00:00 2001
From: Nick the Sick
Date: Fri, 24 Apr 2026 14:27:41 +0200
Subject: [PATCH 15/15] feat: add isValidLink option and auto-generate TLD list
from IANA
Adds `links.isValidLink` editor option to customize link validation across
HTML import/export, paste, and autolink gates. Replaces the hand-maintained
TLD list with a trie-encoded list generated from IANA's official source
via a new `update-tlds` script.
Co-Authored-By: Claude Opus 4.7 (1M context)
---
packages/core/package.json | 3 +-
packages/core/scripts/update-tlds.mjs | 135 ++++++++++++++++++
packages/core/src/editor/BlockNoteEditor.ts | 23 +++
.../managers/ExtensionManager/extensions.ts | 3 +
.../Link/helpers/linkDetector.ts | 66 +++++----
.../Link/helpers/pasteHandler.ts | 4 +-
.../tiptap-extensions/Link/helpers/tlds.ts | 7 +
.../tiptap-extensions/Link/link.test.ts | 118 ++++++++++++++-
.../extensions/tiptap-extensions/Link/link.ts | 13 +-
tests/nextjs-test-app/package.json | 8 +-
10 files changed, 334 insertions(+), 46 deletions(-)
create mode 100644 packages/core/scripts/update-tlds.mjs
create mode 100644 packages/core/src/extensions/tiptap-extensions/Link/helpers/tlds.ts
diff --git a/packages/core/package.json b/packages/core/package.json
index eb5095a817..0cc8f53bc0 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -86,7 +86,8 @@
"lint": "eslint src --max-warnings 0",
"test": "vitest --run",
"test-watch": "vitest watch",
- "clean": "rimraf dist && rimraf types"
+ "clean": "rimraf dist && rimraf types",
+ "update-tlds": "node scripts/update-tlds.mjs"
},
"dependencies": {
"@emoji-mart/data": "^1.2.1",
diff --git a/packages/core/scripts/update-tlds.mjs b/packages/core/scripts/update-tlds.mjs
new file mode 100644
index 0000000000..43f4d02e15
--- /dev/null
+++ b/packages/core/scripts/update-tlds.mjs
@@ -0,0 +1,135 @@
+#!/usr/bin/env node
+/**
+ * Regenerate src/extensions/tiptap-extensions/Link/helpers/tlds.ts from IANA's
+ * authoritative TLD list.
+ *
+ * Run with: pnpm --filter @blocknote/core update-tlds
+ *
+ * Encoding format ported from linkifyjs (MIT, https://github.com/nfrasser/linkifyjs):
+ * a sorted TLD list is built into a trie, then serialized as an ASCII string
+ * where letters descend the trie and digit runs mean "emit a word and pop N
+ * levels back up." Shared TLD prefixes (e.g. construction/consulting/
+ * contractors) collapse, producing a payload smaller than a flat list.
+ *
+ * IDN punycode entries (XN--...) are skipped: the schemeless URL regex in
+ * linkDetector.ts requires ASCII-only TLDs, so unicode TLDs would never reach
+ * the validation step.
+ */
+
+import { writeFileSync } from "node:fs";
+import { fileURLToPath } from "node:url";
+import { dirname, resolve } from "node:path";
+
+const TLDS_URL = "https://data.iana.org/TLD/tlds-alpha-by-domain.txt";
+
+const __dirname = dirname(fileURLToPath(import.meta.url));
+const OUT_PATH = resolve(
+ __dirname,
+ "../src/extensions/tiptap-extensions/Link/helpers/tlds.ts",
+);
+
+function createTrie(words) {
+ const root = {};
+ for (const word of words) {
+ let current = root;
+ for (const letter of word) {
+ if (!(letter in current)) {
+ current[letter] = {};
+ }
+ current = current[letter];
+ }
+ current.isWord = true;
+ }
+ return root;
+}
+
+function encodeTrieHelper(trie) {
+ const output = [];
+ for (const k in trie) {
+ if (k === "isWord") {
+ output.push(0);
+ continue;
+ }
+ output.push(k);
+ output.push(...encodeTrieHelper(trie[k]));
+ if (typeof output[output.length - 1] === "number") {
+ output[output.length - 1] += 1;
+ } else {
+ output.push(1);
+ }
+ }
+ return output;
+}
+
+function encodeTlds(tlds) {
+ return encodeTrieHelper(createTrie(tlds)).join("");
+}
+
+function decodeTlds(encoded) {
+ const words = [];
+ const stack = [];
+ let i = 0;
+ const digits = "0123456789";
+ while (i < encoded.length) {
+ let popDigitCount = 0;
+ while (digits.indexOf(encoded[i + popDigitCount]) >= 0) {
+ popDigitCount++;
+ }
+ if (popDigitCount > 0) {
+ words.push(stack.join(""));
+ let popCount = parseInt(encoded.substring(i, i + popDigitCount), 10);
+ while (popCount-- > 0) {
+ stack.pop();
+ }
+ i += popDigitCount;
+ } else {
+ stack.push(encoded[i]);
+ i++;
+ }
+ }
+ return words;
+}
+
+async function main() {
+ console.log(`Fetching ${TLDS_URL}...`);
+ const response = await fetch(TLDS_URL);
+ if (!response.ok) {
+ throw new Error(`Failed to fetch IANA TLDs: ${response.status}`);
+ }
+ const body = await response.text();
+
+ const tlds = body
+ .split("\n")
+ .map((line) => line.trim())
+ .filter((line) => line && !line.startsWith("#") && !/^XN--/i.test(line))
+ .map((line) => line.toLowerCase())
+ .sort();
+
+ console.log(`Encoding ${tlds.length} TLDs...`);
+ const encoded = encodeTlds(tlds);
+
+ console.log("Round-trip asserting...");
+ const decoded = decodeTlds(encoded);
+ if (JSON.stringify(decoded) !== JSON.stringify(tlds)) {
+ throw new Error("Encode/decode round-trip mismatch");
+ }
+
+ const fileContents = `// THIS FILE IS AUTO-GENERATED. DO NOT EDIT DIRECTLY.
+// Source: ${TLDS_URL}
+// Regenerate with: pnpm --filter @blocknote/core update-tlds
+// Encoding format ported from linkifyjs (MIT) — trie collapsed into ASCII.
+
+export const ENCODED_TLDS =
+ "${encoded}";
+`;
+
+ writeFileSync(OUT_PATH, fileContents);
+ console.log(
+ `Wrote ${OUT_PATH} (${encoded.length} chars, ${tlds.length} TLDs)`,
+ );
+}
+
+main().catch((err) => {
+ console.error(err);
+ process.exit(1);
+});
diff --git a/packages/core/src/editor/BlockNoteEditor.ts b/packages/core/src/editor/BlockNoteEditor.ts
index 107974b2fc..ca6e0b4817 100644
--- a/packages/core/src/editor/BlockNoteEditor.ts
+++ b/packages/core/src/editor/BlockNoteEditor.ts
@@ -163,6 +163,29 @@ export interface BlockNoteEditorOptions<
event: MouseEvent,
editor: BlockNoteEditor,
) => boolean | void;
+ /**
+ * Callback that decides whether a given `href` is a valid link. Applied at
+ * every gate where a link enters the document: HTML import, HTML export,
+ * paste, and autolink. Useful for supporting additional URI schemes (e.g.
+ * `vscode:`, `myapp:`) or tightening the default allowlist.
+ *
+ * Defaults to `isAllowedUri`, which allows
+ * `http|https|ftp|ftps|mailto|tel|callto|sms|cid|xmpp`. Import
+ * `isAllowedUri` from `@blocknote/core` to layer on top of the default.
+ *
+ * @example
+ * ```ts
+ * import { isAllowedUri } from "@blocknote/core";
+ *
+ * BlockNoteEditor.create({
+ * links: {
+ * isValidLink: (href) =>
+ * isAllowedUri(href) || href.startsWith("myapp:"),
+ * },
+ * });
+ * ```
+ */
+ isValidLink?: (href: string) => boolean;
};
/**
diff --git a/packages/core/src/editor/managers/ExtensionManager/extensions.ts b/packages/core/src/editor/managers/ExtensionManager/extensions.ts
index fd14d7c2b5..21d2d86f91 100644
--- a/packages/core/src/editor/managers/ExtensionManager/extensions.ts
+++ b/packages/core/src/editor/managers/ExtensionManager/extensions.ts
@@ -77,6 +77,9 @@ export function getDefaultTiptapExtensions(
HTMLAttributes: options.links?.HTMLAttributes ?? {},
editor,
onClick: options.links?.onClick,
+ ...(options.links?.isValidLink
+ ? { isValidLink: options.links.isValidLink }
+ : {}),
}),
...(Object.values(editor.schema.styleSpecs).map((styleSpec) => {
return styleSpec.implementation.mark.configure({
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/helpers/linkDetector.ts b/packages/core/src/extensions/tiptap-extensions/Link/helpers/linkDetector.ts
index e678a44c50..310bb9a5d8 100644
--- a/packages/core/src/extensions/tiptap-extensions/Link/helpers/linkDetector.ts
+++ b/packages/core/src/extensions/tiptap-extensions/Link/helpers/linkDetector.ts
@@ -6,6 +6,8 @@
* - tokenizeLink(): tokenize a single word for autolink validation (replaces linkifyjs tokenize())
*/
+import { ENCODED_TLDS } from "./tlds.js";
+
export interface LinkMatch {
type: string;
value: string;
@@ -18,17 +20,38 @@ export interface LinkMatch {
// ---------------------------------------------------------------------------
// TLD set – used only for schemeless URL validation.
// Protocol URLs (http://, https://, etc.) skip TLD checks.
+// Decoded once at module load from the trie-encoded IANA list in tlds.ts.
// ---------------------------------------------------------------------------
-// prettier-ignore
-const CC_TLDS =
- "ac ad ae af ag ai al am ao aq ar as at au aw ax az ba bb bd be bf bg bh bi bj bm bn bo br bs bt bv bw by bz ca cc cd cf cg ch ci ck cl cm cn co cr cu cv cw cx cy cz de dj dk dm do dz ec ee eg er es et eu fi fj fk fm fo fr ga gb gd ge gf gg gh gi gl gm gn gp gq gr gs gt gu gw gy hk hm hn hr ht hu id ie il im in io iq ir is it je jm jo jp ke kg kh ki km kn kp kr kw ky kz la lb lc li lk lr ls lt lu lv ly ma mc md me mg mh mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na nc ne nf ng ni nl no np nr nu nz om pa pe pf pg ph pk pl pm pn pr ps pt pw py qa re ro rs ru rw sa sb sc sd se sg sh si sj sk sl sm sn so sr ss st su sv sx sy sz tc td tf tg th tj tk tl tm tn to tr tt tv tw tz ua ug uk us uy uz va vc ve vg vi vn vu wf ws ye yt za zm zw";
-
-// prettier-ignore
-const G_TLDS =
- "com org net edu gov mil int aero asia biz cat coop info jobs mobi museum name post pro tel travel xxx academy accountant accountants actor adult agency airforce apartments app army associates attorney auction auto band bank bar bargains beer best bet bid bike bingo bio black blog blue boutique broker build builders business buzz cab cafe cam camera camp capital car cards care career careers casa cash casino catering center ceo chat cheap church city claims cleaning click clinic clothing cloud club coach codes coffee college community company computer condos construction consulting contractors cooking cool country coupons courses credit creditcard cruise dad dance date dating day dealer deals degree delivery democrat dental dentist design dev diamonds diet digital direct directory discount doctor dog domains download earth eat education email energy engineer engineering enterprises equipment estate events exchange expert exposed express fail faith family fan fans farm fashion film final finance financial fish fishing fit fitness flights florist flowers fly foo football forex forsale forum foundation fun fund furniture futbol fyi gallery game games garden gift gifts gives glass global gmbh gold golf graphics gratis green gripe group guide guru hair haus health healthcare help hiphop hockey holdings holiday homes horse hospital host hosting hot house how inc industries ink institute insurance insure international investments irish jewelry jetzt jot joy kim kitchen land law lawyer lease legal life lighting limited limo link live llc loan loans lol love ltd luxury maison management map market marketing mba media memorial men menu miami moda mom money monster mortgage movie music navy network new news ninja now observer one online ooo organic page partners parts party pay pet pharmacy photo photography photos pink pizza place plumbing plus poker porn press productions promo properties property pub quest racing radio realestate realty recipes red rehab rent rentals repair report republican rest restaurant review reviews rich rip rocks rodeo run sale salon sarl save school science search security select services sex sexy shoes shop shopping show singles site ski skin social software solar solutions space sport spot srl storage store stream studio style sucks supplies supply support surf surgery systems tax taxi team tech technology tennis theater theatre tips tires today tools top tours town toys trade trading training tube university uno vacations vegas ventures vet video villas vin vip vision vodka vote voyage wang watch webcam website wedding whoswho wiki win wine work works world wtf xyz yoga you zone";
+function decodeTlds(encoded: string): string[] {
+ const words: string[] = [];
+ const stack: string[] = [];
+ let i = 0;
+ while (i < encoded.length) {
+ let popDigitCount = 0;
+ while (
+ i + popDigitCount < encoded.length &&
+ encoded.charCodeAt(i + popDigitCount) >= 48 &&
+ encoded.charCodeAt(i + popDigitCount) <= 57
+ ) {
+ popDigitCount++;
+ }
+ if (popDigitCount > 0) {
+ words.push(stack.join(""));
+ let popCount = parseInt(encoded.substring(i, i + popDigitCount), 10);
+ while (popCount-- > 0) {
+ stack.pop();
+ }
+ i += popDigitCount;
+ } else {
+ stack.push(encoded[i]);
+ i++;
+ }
+ }
+ return words;
+}
-const TLD_SET = new Set([...CC_TLDS.split(" "), ...G_TLDS.split(" ")]);
+const TLD_SET = new Set(decodeTlds(ENCODED_TLDS));
// Special hostnames recognized without a TLD
const SPECIAL_HOSTS = new Set(["localhost"]);
@@ -118,31 +141,6 @@ function extractTld(hostname: string): string {
return parts[parts.length - 1].toLowerCase();
}
-/**
- * Extract hostname from a URL value (no protocol).
- */
-function extractHostname(value: string): string {
- // Remove protocol if present
- let s = value;
- const protoIdx = s.indexOf("://");
- if (protoIdx !== -1) {
- s = s.slice(protoIdx + 3);
- } else if (s.startsWith("mailto:")) {
- s = s.slice(7);
- }
-
- // Remove path, query, fragment
- s = s.split(/[/?#]/)[0];
- // Remove port
- s = s.split(":")[0];
- // Remove userinfo
- if (s.includes("@")) {
- s = s.split("@").pop()!;
- }
-
- return s;
-}
-
function isValidTld(hostname: string): boolean {
const tld = extractTld(hostname);
return TLD_SET.has(tld);
@@ -262,7 +260,7 @@ export function findLinks(
// For schemeless URLs, validate TLD
if (raw.type === "url" && !/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(value)) {
- const hostname = extractHostname(value);
+ const hostname = new URL("http://" + value).hostname;
if (!isValidTld(hostname)) {
continue;
}
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/helpers/pasteHandler.ts b/packages/core/src/extensions/tiptap-extensions/Link/helpers/pasteHandler.ts
index 947be17e37..f318d08b61 100644
--- a/packages/core/src/extensions/tiptap-extensions/Link/helpers/pasteHandler.ts
+++ b/packages/core/src/extensions/tiptap-extensions/Link/helpers/pasteHandler.ts
@@ -8,6 +8,7 @@ type PasteHandlerOptions = {
defaultProtocol: string;
type: MarkType;
shouldAutoLink?: (url: string) => boolean;
+ isValidLink: (href: string) => boolean;
};
export function pasteHandler(options: PasteHandlerOptions): Plugin {
@@ -15,7 +16,7 @@ export function pasteHandler(options: PasteHandlerOptions): Plugin {
key: new PluginKey("handlePasteLink"),
props: {
handlePaste: (view, _event, slice) => {
- const { shouldAutoLink } = options;
+ const { shouldAutoLink, isValidLink } = options;
const { state } = view;
const { selection } = state;
const { empty } = selection;
@@ -37,6 +38,7 @@ export function pasteHandler(options: PasteHandlerOptions): Plugin {
if (
!textContent ||
!link ||
+ !isValidLink(link.value) ||
(shouldAutoLink !== undefined && !shouldAutoLink(link.value))
) {
return false;
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/helpers/tlds.ts b/packages/core/src/extensions/tiptap-extensions/Link/helpers/tlds.ts
new file mode 100644
index 0000000000..a1377f505a
--- /dev/null
+++ b/packages/core/src/extensions/tiptap-extensions/Link/helpers/tlds.ts
@@ -0,0 +1,7 @@
+// THIS FILE IS AUTO-GENERATED. DO NOT EDIT DIRECTLY.
+// Source: https://data.iana.org/TLD/tlds-alpha-by-domain.txt
+// Regenerate with: pnpm --filter @blocknote/core update-tlds
+// Encoding format ported from linkifyjs (MIT) — trie collapsed into ASCII.
+
+export const ENCODED_TLDS =
+ "aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4w0s2x0a2z0ure5ba0by2idu3namex4d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dad1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2odyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3nd0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rck0msd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0axi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp3ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2oodside6rk0s2ld3w2s1tc1f3xbox3erox4ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2";
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/link.test.ts b/packages/core/src/extensions/tiptap-extensions/Link/link.test.ts
index ea6925eab0..3af3046078 100644
--- a/packages/core/src/extensions/tiptap-extensions/Link/link.test.ts
+++ b/packages/core/src/extensions/tiptap-extensions/Link/link.test.ts
@@ -4,6 +4,7 @@ import { Slice, Fragment } from "@tiptap/pm/model";
import { BlockNoteEditor } from "../../../editor/BlockNoteEditor.js";
import { findLinks, tokenizeLink } from "./helpers/linkDetector.js";
+import { isAllowedUri } from "./link.js";
/**
* @vitest-environment jsdom
@@ -36,8 +37,8 @@ function isValidLinkStructure(
return false;
}
-function createEditor() {
- const editor = BlockNoteEditor.create();
+function createEditor(links?: { isValidLink?: (href: string) => boolean }) {
+ const editor = BlockNoteEditor.create(links ? { links } : undefined);
const div = document.createElement("div");
editor.mount(div);
return editor;
@@ -825,3 +826,116 @@ describe("Link extension paste handler behavior", () => {
expect(handled).toBeFalsy();
});
});
+
+describe("Link extension isValidLink option", () => {
+ let editor: BlockNoteEditor;
+
+ afterEach(() => {
+ if (editor) {
+ editor._tiptapEditor.destroy();
+ }
+ });
+
+ it("autolink: restrictive override blocks normally-valid URLs on typing", () => {
+ editor = createEditor({ isValidLink: () => false });
+ editor.replaceBlocks(editor.document, [
+ {
+ id: "test-block",
+ type: "paragraph",
+ content: "",
+ },
+ ]);
+
+ const links = typeTextThenSpace(
+ editor,
+ "test-block",
+ "https://example.com"
+ );
+ expect(links).toHaveLength(0);
+ });
+
+ it("paste-rule: restrictive override blocks pasted URL text", () => {
+ editor = createEditor({ isValidLink: () => false });
+ editor.replaceBlocks(editor.document, [
+ {
+ id: "test-block",
+ type: "paragraph",
+ content: "some text here",
+ },
+ ]);
+
+ editor._tiptapEditor.commands.insertContent("https://example.com ");
+
+ const links = getLinksInDocument(editor);
+ expect(links).toHaveLength(0);
+ });
+
+ it("paste-handler: restrictive override blocks URL pasted over selection", () => {
+ editor = createEditor({ isValidLink: () => false });
+ editor.replaceBlocks(editor.document, [
+ {
+ id: "test-block",
+ type: "paragraph",
+ content: "click here",
+ },
+ ]);
+
+ editor.setTextCursorPosition("test-block", "start");
+ const view = editor._tiptapEditor.view;
+ const doc = view.state.doc;
+
+ let textStart = 0;
+ let textEnd = 0;
+ doc.descendants((node, pos) => {
+ if (node.isText && node.text === "click here") {
+ textStart = pos;
+ textEnd = pos + node.nodeSize;
+ }
+ });
+
+ const tr = view.state.tr.setSelection(
+ TextSelection.create(view.state.doc, textStart, textEnd)
+ );
+ view.dispatch(tr);
+
+ const textNode = view.state.schema.text("https://example.com");
+ const slice = new Slice(Fragment.from(textNode), 0, 0);
+
+ const handled = view.someProp("handlePaste", (f) =>
+ f(view, new ClipboardEvent("paste"), slice)
+ );
+
+ expect(handled).toBeFalsy();
+ const links = getLinksInDocument(editor);
+ expect(links).toHaveLength(0);
+ });
+
+ it("parseHTML: permissive override accepts custom-scheme links", () => {
+ editor = createEditor({
+ isValidLink: (href) => isAllowedUri(href) || href.startsWith("myapp:"),
+ });
+ editor.pasteHTML(`click
`);
+
+ const links = getLinksInDocument(editor);
+ expect(links).toHaveLength(1);
+ expect(links[0].href).toBe("myapp://foo");
+ });
+
+ it("parseHTML: default rejects unknown-scheme links", () => {
+ editor = createEditor();
+ editor.pasteHTML(`click
`);
+
+ const links = getLinksInDocument(editor);
+ expect(links).toHaveLength(0);
+ });
+
+ it("renderHTML: permissive override preserves custom-scheme href on export", () => {
+ editor = createEditor({
+ isValidLink: (href) => isAllowedUri(href) || href.startsWith("myapp:"),
+ });
+ editor.pasteHTML(`click
`);
+
+ const html = editor.blocksToFullHTML(editor.document);
+ expect(html).toContain('href="myapp://foo"');
+ });
+});
diff --git a/packages/core/src/extensions/tiptap-extensions/Link/link.ts b/packages/core/src/extensions/tiptap-extensions/Link/link.ts
index 2752237ff2..9b3405d536 100644
--- a/packages/core/src/extensions/tiptap-extensions/Link/link.ts
+++ b/packages/core/src/extensions/tiptap-extensions/Link/link.ts
@@ -65,6 +65,7 @@ export type LinkOptions = {
event: MouseEvent,
editor: BlockNoteEditor,
) => boolean | void;
+ isValidLink: (href: string) => boolean;
};
/**
@@ -86,6 +87,7 @@ export const Link = Mark.create({
HTMLAttributes: {},
editor: undefined,
onClick: undefined,
+ isValidLink: isAllowedUri,
};
},
@@ -107,12 +109,13 @@ export const Link = Mark.create({
},
parseHTML() {
+ const isValidLink = this.options.isValidLink;
return [
{
tag: "a[href]",
getAttrs: (dom) => {
const href = (dom as HTMLElement).getAttribute("href");
- if (!href || !isAllowedUri(href)) {
+ if (!href || !isValidLink(href)) {
return false;
}
return null;
@@ -122,7 +125,7 @@ export const Link = Mark.create({
},
renderHTML({ HTMLAttributes }) {
- if (!isAllowedUri(HTMLAttributes.href)) {
+ if (!this.options.isValidLink(HTMLAttributes.href)) {
return [
"a",
mergeAttributes(HTML_ATTRIBUTES, { ...HTMLAttributes, href: "" }),
@@ -134,6 +137,7 @@ export const Link = Mark.create({
},
addPasteRules() {
+ const isValidLink = this.options.isValidLink;
return [
markPasteRule({
find: (text) => {
@@ -142,7 +146,7 @@ export const Link = Mark.create({
if (text) {
const links = findLinks(text, {
defaultProtocol: DEFAULT_PROTOCOL,
- }).filter((item) => item.isLink && isAllowedUri(item.value));
+ }).filter((item) => item.isLink && isValidLink(item.value));
for (const link of links) {
if (!shouldAutoLink(link.value)) {
@@ -174,7 +178,7 @@ export const Link = Mark.create({
autolink({
type: this.type,
defaultProtocol: DEFAULT_PROTOCOL,
- validate: isAllowedUri,
+ validate: this.options.isValidLink,
shouldAutoLink,
}),
);
@@ -194,6 +198,7 @@ export const Link = Mark.create({
defaultProtocol: DEFAULT_PROTOCOL,
type: this.type,
shouldAutoLink,
+ isValidLink: this.options.isValidLink,
}),
);
diff --git a/tests/nextjs-test-app/package.json b/tests/nextjs-test-app/package.json
index ca14347bab..f4f81ae9f7 100644
--- a/tests/nextjs-test-app/package.json
+++ b/tests/nextjs-test-app/package.json
@@ -3,10 +3,10 @@
"private": true,
"version": "0.0.0",
"dependencies": {
- "@blocknote/core": "file:.tarballs/blocknote-core-0.48.0.tgz",
- "@blocknote/mantine": "file:.tarballs/blocknote-mantine-0.48.0.tgz",
- "@blocknote/react": "file:.tarballs/blocknote-react-0.48.0.tgz",
- "@blocknote/server-util": "file:.tarballs/blocknote-server-util-0.48.0.tgz",
+ "@blocknote/core": "file:.tarballs/blocknote-core-0.48.1.tgz",
+ "@blocknote/mantine": "file:.tarballs/blocknote-mantine-0.48.1.tgz",
+ "@blocknote/react": "file:.tarballs/blocknote-react-0.48.1.tgz",
+ "@blocknote/server-util": "file:.tarballs/blocknote-server-util-0.48.1.tgz",
"@mantine/core": "^8.3.11",
"@mantine/hooks": "^8.3.11",
"next": "^16.0.0",