/** * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options */ /** * @module ai/aireviewmode/aireviewmode * @publicApi */ import { ContextPlugin } from '@ckeditor/ckeditor5-core'; import { AIReviewModeUI } from './aireviewmodeui.js'; import { AIReviewCoreEditing } from '../aireviewcore/aireviewcoreediting.js'; import { AIReviewModeController } from './aireviewmodecontroller.js'; /** * The AI Review Mode feature. * * The Review feature provides users with AI-powered quality assurance for their content by automatically running checks * for grammar, style, tone, and more. * * Learn more about AI features in CKEditor in the {@glink features/ai/ckeditor-ai-overview AI Overview} documentation. */ export declare class AIReviewMode extends ContextPlugin { /** * @inheritDoc */ static get requires(): readonly [typeof AIReviewModeController, typeof AIReviewModeUI, typeof AIReviewCoreEditing]; /** * @inheritDoc */ static get pluginName(): "AIReviewMode"; /** * @inheritDoc */ static get isOfficialPlugin(): true; /** * @inheritDoc */ static get isPremiumPlugin(): true; } export interface AIReviewModeConfig { /** * List of IDs of review commands that will be available in the AI Review feature UI. If not set, all available * predefined commands will be used. The order of IDs defines the order of commands in the UI. * * The list of all predefined commands, used by default: * - `custom` * - `correctness` * - `clarity` * - `readability` * - `length` * - `tone` * * The commands can be used selectively and rearranged with this configuration option. For example: * * ```ts * ClassicEditor * .create( { * ai: { * review: { * availableCommands: [ * 'length', 'tone', 'clarity', 'readability' * ] * } * } * } ) * .then( ... ) * .catch( ... ); * ``` * * @default [ 'custom', 'correctness', 'clarity', 'readability', 'length', 'tone' ] */ availableCommands?: Array; /** * List of extra review commands that can be added to the AI Review feature. * * Keep in mind that each command should have a unique ID that does not collide with predefined commands. * The `custom` command ID is reserved and cannot be used as an ID for extra command. * * To add a command and expose it in the UI, first a command definition needs to be provided: * * ```ts * ClassicEditor * .create( { * ai: { * review: { * extraCommands: [ * { * id: 'improve-captions', * label: 'Improve Captions', * description: 'Improve image captions in the document.', * prompt: 'Suggest improvements for the image captions in the document.', * }, * { * id: 'expand-abbreviations', * label: 'Expand Abbreviations', * description: 'Expand abbreviations in the document.', * prompt: 'Suggest expansions for abbreviations in the document.', * model: 'gpt-5-2' // Optional, if not set, default model will be used. * } * ] * } * } * } ) * .then( ... ) * .catch( ... ); * ``` * * Then if {@link #availableCommands} is not set, the extra commands will be added to the end of the list of available * commands and visible in the UI by default. Otherwise, the extra commands need to be explicitly added to the list * of available commands to be exposed in the UI: * * ```ts * ClassicEditor * .create( { * ai: { * review: { * extraCommands: [ ... ], * availableCommands: [ * 'custom', 'correctness', 'clarity', 'readability', 'length', 'tone', 'improve-captions', 'expand-abbreviations' * ] * } * } * } ) * .then( ... ) * .catch( ... ); * ``` */ extraCommands?: Array; } export type AIReviewCustomCommand = { id: string; label: string; description: string; prompt: string; model?: string; };