Built-in provider resolvers
One-line adapters for OpenAI, Anthropic, and Azure OpenAI. Bring your own key; keys never leave your server. Also works with OpenAI-compatible endpoints (Groq, Together.ai, local Ollama) via a BaseUrl override.
Ask AI, AI Chat, inline preview, and a reviewable suggestion drawer - all wired into the editor. Writers stay in the document, reviewers keep control, and engineers swap in their own resolver when they are ready.
Our new release improves performance by 34% while shipping a smaller bundle.
The new release improves performance by 34% and ships with a smaller bundle.
Everything below ships in the base license. No premium tier, no usage credits to buy. See the full release notes for version-by-version detail.
One-line adapters for OpenAI, Anthropic, and Azure OpenAI. Bring your own key; keys never leave your server. Also works with OpenAI-compatible endpoints (Groq, Together.ai, local Ollama) via a BaseUrl override.
Tokens render as they arrive — same feel as ChatGPT / Claude. SSE-based wire format; editor.aiToolkit.streamRequest({ onDelta, onDone }) on the client, with XHR fallback for old browsers. Abortable mid-stream.
Server-side HTML → .docx via MIT-licensed DocumentFormat.OpenXml. Client helper editor.aiToolkit.exportDocx() triggers a browser download. No cloud SaaS subscription.
Toolbar mic button; interim transcripts render live under the cursor. The only major editor to ship dictation out of the box. Opt-in via dictationEnabled: true.
AI suggestions + human Track Changes + threaded comments all flow through a single editor.reviewLedger store. One drawer, interleaved entries, accept / reject regardless of source. Competitors silo these in separate plugins.
Opt in with textSync: true to bind the editor HTML to a shared Y.Text. CRDT merges concurrent inserts / deletes at character level. Per-node binding is next on the roadmap.
Different editing tasks want different surfaces. Ask AI for quick actions, Chat for a conversation about the document, Review for batch decisions. They share state, so what you preview in one is reviewable in the others.
Toolbar-first dialog. Proofread, rewrite, shorten, expand, summarize, or translate the selection or the whole document.
Docked panel for multi-turn work. Scope-aware: uses the selection or the whole document, with quick prompts built in.
Queue of pending, accepted, and rejected suggestions. Preview before applying, batch-accept or reject, or sync with your server ledger.
Instead of copying content to a separate AI window and pasting results back, RichTextEditor keeps AI actions attached to the document. Writers can select text, ask for a rewrite, preview the result inline, and review suggestions without leaving the editor.
Keep users in your app with an editor-native AI experience that feels integrated, reviewable, and consistent with your content workflow.
Start with the built-in demo resolver, then swap in your own model or provider when you are ready. Same UI, new backend.
Seven one-click modes plus your own: proofread, rewrite, shorten, expand, summarize, translate, justify. Each returns a rationale.
Resolvers return one or many operations (preview, replace, insert, comment). Users apply step-by-step or as a batch.
Before/after view with change highlighting, operation summary, and accept/reject controls. Nothing commits until a human says so.
Pending, accepted, and rejected suggestions persist per editor. Hook a remote ledger endpoint to sync across sessions.
Every action knows what it is acting on. Selection-aware by default, with a one-tap switch to whole-document scope.
Docked panel with quick prompts, message history, and copy / apply / insert / replace actions on every AI response.
Use registerAction to add domain-specific actions (legal clause check, SEO rewrite, tone matcher). They plug into the same UI.
Built-in deterministic resolver ships with the plugin. Evaluate the UX first, wire a real model later - same front-end.
The aiToolkitResolver hook receives a structured request (action, source text, scope, snapshot) and returns a result or a list of operations. The editor handles rendering, preview, and review for you.
var editor = new RichTextEditor("#editor", {toolbar: "full",aiToolkitResolver: async function (request) {// request: { mode, source, scope, snapshot, language, ... }const reply = await fetch("/api/ai", {method: "POST",body: JSON.stringify({mode: request.mode,text: request.source})}).then(r => r.json());return {result: reply.text,reason: reply.explanation,operations: [{ type: "preview-suggestion",text: reply.text }]};}});
Use the structured content bridge alongside AI Toolkit to move between HTML, semantic JSON, Markdown, static HTML rendering, and validation. That makes it easier to save, inspect, render, and process AI-assisted content in real applications.
Open the AI Toolkit demo in a new tab, run the built-in resolver locally, and decide how you want to wire a real provider. No account, no download.