{"record":{"id":"b2724f52a650431c","repo":"ueberdosis/tiptap","slug":"tiptap-warn-aiinsertreveal-needs-the-collabor","errorCode":null,"errorMessage":"[tiptap warn]: \"AiInsertReveal\" needs the Collaboration extension to see incoming text. Nothing is revealed.","messagePattern":"\\[tiptap warn\\]: \"AiInsertReveal\" needs the Collaboration extension to see incoming text\\. Nothing is revealed\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/ai-toolkit/src/streaming-reveal.ts","lineNumber":309,"sourceCode":"            // animation; offset by the run's age to resume the fade instead.\n            const decorations = mergeRuns(ranges).map(range =>\n              Decoration.inline(range.from, range.to, {\n                class: className,\n                style: `animation-delay: -${range.delay}ms`,\n              }),\n            )\n\n            return DecorationSet.create(state.doc, decorations)\n          },\n        },\n\n        view: view => {\n          const initialState = ySyncPluginKey.getState(view.state) as YSyncState | undefined\n          const fragment = initialState?.type ?? null\n          const awareness = provider?.awareness ?? null\n\n          if (fragment === null) {\n            console.warn(\n              '[tiptap warn]: \"AiInsertReveal\" needs the Collaboration extension to see incoming text. Nothing is revealed.',\n            )\n          }\n\n          const trackAiClients = () => {\n            const known = aiClients.size\n            awareness\n              ?.getStates()\n              .forEach((state: Record<string, any> | undefined, clientId: number) => {\n                if (isAiUser(state?.user)) aiClients.add(clientId)\n              })\n            // Runs that arrived before the AI was identified can now be revealed.\n            if (aiClients.size > known) scheduleRerender()\n          }\n\n          let raf: number | null = null\n          let pruneTimer: ReturnType<typeof setTimeout> | null = null\n","sourceCodeStart":291,"sourceCodeEnd":327,"githubUrl":"https://github.com/ueberdosis/tiptap/blob/496d53afd7e4e3c7424b4749adeff4f45e27ddb0/packages/ai-toolkit/src/streaming-reveal.ts#L291-L327","documentation":"Error \"[tiptap warn]: \"AiInsertReveal\" needs the Collaboration extension to see incoming text. Nothing is revealed.\" thrown in ueberdosis/tiptap.","triggerScenarios":"Thrown at packages/ai-toolkit/src/streaming-reveal.ts:309 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"496d53afd7e4e3c7424b4749adeff4f45e27ddb0","analyzedAt":"2026-08-26T22:41:43.400Z","schemaVersion":2},"datasetVersion":"2026-08-27T03:17:27.898Z"}