@ckeditor/ckeditor5-ai 48.1.1 → 48.2.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/aiactions/model/aiactionsinteraction.d.ts +3 -0
- package/dist/aiactions/model/aiactionsreply.d.ts +7 -0
- package/dist/aiballoon/aiballoon.d.ts +2 -5
- package/dist/aichat/aichatballoon.d.ts +4 -0
- package/dist/aichat/aichatcontroller.d.ts +9 -3
- package/dist/aichat/aichatui.d.ts +11 -0
- package/dist/aichat/model/aichatcontext.d.ts +29 -62
- package/dist/aichat/model/aichatconversation.d.ts +18 -23
- package/dist/aichat/model/aichatinteraction.d.ts +0 -9
- package/dist/aichat/ui/aichatballoonview.d.ts +4 -0
- package/dist/aichat/ui/aichatcontrolsview.d.ts +5 -0
- package/dist/aichat/ui/aichatfeedview.d.ts +8 -0
- package/dist/aichat/ui/aichatview.d.ts +1 -0
- package/dist/aichat/ui/controls/aichatcontextpanelview.d.ts +4 -0
- package/dist/aichat/ui/controls/aichatdropzoneview.d.ts +26 -0
- package/dist/aichat/ui/controls/resources/aichatresourcesballoonview.d.ts +4 -0
- package/dist/aichat/utils/eventnames.d.ts +1 -1
- package/dist/aichat/utils/parsesingleurl.d.ts +5 -0
- package/dist/aichat/utils/readdatatransferfiles.d.ts +14 -0
- package/dist/aichat/utils/resolvepaste.d.ts +71 -0
- package/dist/aichatshortcuts/ui/aichatshortcutsview.d.ts +6 -0
- package/dist/aiconfig.d.ts +1 -1
- package/dist/aicore/aiconnector.d.ts +22 -0
- package/dist/aicore/aiediting.d.ts +14 -5
- package/dist/aicore/aigateway.d.ts +63 -0
- package/dist/aicore/model/aicontext.d.ts +4 -20
- package/dist/aicore/model/aiinteraction.d.ts +7 -1
- package/dist/aicore/model/aireply.d.ts +20 -17
- package/dist/aicore/model/airunresult.d.ts +95 -0
- package/dist/aicore/pipeline/airesponseapplier.d.ts +3 -15
- package/dist/aicore/ui/suggestioncontainer/aisuggestioncontentpartheaderview.d.ts +4 -0
- package/dist/aicore/ui/suggestioncontainer/aisuggestioncontentparttoolbarview.d.ts +4 -0
- package/dist/aicore/ui/suggestioncontainer/aisuggestioncontentpartview.d.ts +4 -0
- package/dist/aicore/utils/{geteditorfromcontext.d.ts → geteditorsfromcontext.d.ts} +1 -2
- package/dist/aicore/utils/getoperationsfromreply.d.ts +6 -4
- package/dist/aicore/utils/getsuggestionpartsfromreply.d.ts +6 -3
- package/dist/aicore/utils/htmlparser.d.ts +8 -2
- package/dist/aiquickactions/aiquickactions.d.ts +4 -4
- package/dist/aiquickactions/aiquickactionsui.d.ts +1 -1
- package/dist/aiquickactions/ui/aiquickactionsdropdowncontentview.d.ts +2 -2
- package/dist/aireviewcore/aireviewcorecheckregistry.d.ts +34 -0
- package/dist/aireviewcore/aireviewcorecontroller.d.ts +31 -6
- package/dist/aireviewcore/aireviewcoreediting.d.ts +1 -1
- package/dist/aireviewcore/model/aireviewcheckrun.d.ts +4 -0
- package/dist/aireviewmode/aireviewgateway.d.ts +161 -0
- package/dist/aireviewmode/aireviewmode.d.ts +60 -2
- package/dist/aireviewmode/aireviewmodecheckregistry.d.ts +39 -0
- package/dist/aireviewmode/aireviewmodecontroller.d.ts +7 -2
- package/dist/aireviewmode/model/aireviewmodechecklist.d.ts +4 -0
- package/dist/aireviewmode/model/aireviewrunresult.d.ts +20 -0
- package/dist/aitranslate/aitranslatecheckregistry.d.ts +27 -0
- package/dist/aitranslate/aitranslatecontroller.d.ts +2 -2
- package/dist/augmentation.d.ts +11 -1
- package/dist/index-content.css +1 -1
- package/dist/index-editor.css +212 -8
- package/dist/index.css +212 -8
- package/dist/index.d.ts +7 -3
- package/dist/index.js +6 -6
- package/dist/translations/af.js +1 -1
- package/dist/translations/af.umd.js +1 -1
- package/dist/translations/ar.js +1 -1
- package/dist/translations/ar.umd.js +1 -1
- package/dist/translations/ast.js +1 -1
- package/dist/translations/ast.umd.js +1 -1
- package/dist/translations/az.js +1 -1
- package/dist/translations/az.umd.js +1 -1
- package/dist/translations/be.js +1 -1
- package/dist/translations/be.umd.js +1 -1
- package/dist/translations/bg.js +1 -1
- package/dist/translations/bg.umd.js +1 -1
- package/dist/translations/bn.js +1 -1
- package/dist/translations/bn.umd.js +1 -1
- package/dist/translations/bs.js +1 -1
- package/dist/translations/bs.umd.js +1 -1
- package/dist/translations/ca.js +1 -1
- package/dist/translations/ca.umd.js +1 -1
- package/dist/translations/cs.js +1 -1
- package/dist/translations/cs.umd.js +1 -1
- package/dist/translations/da.js +1 -1
- package/dist/translations/da.umd.js +1 -1
- package/dist/translations/de-ch.js +1 -1
- package/dist/translations/de-ch.umd.js +1 -1
- package/dist/translations/de.js +1 -1
- package/dist/translations/de.umd.js +1 -1
- package/dist/translations/el.js +1 -1
- package/dist/translations/el.umd.js +1 -1
- package/dist/translations/en-au.js +1 -1
- package/dist/translations/en-au.umd.js +1 -1
- package/dist/translations/en-gb.js +1 -1
- package/dist/translations/en-gb.umd.js +1 -1
- package/dist/translations/en.js +1 -1
- package/dist/translations/en.umd.js +1 -1
- package/dist/translations/eo.js +1 -1
- package/dist/translations/eo.umd.js +1 -1
- package/dist/translations/es-co.js +1 -1
- package/dist/translations/es-co.umd.js +1 -1
- package/dist/translations/es.js +1 -1
- package/dist/translations/es.umd.js +1 -1
- package/dist/translations/et.js +1 -1
- package/dist/translations/et.umd.js +1 -1
- package/dist/translations/eu.js +1 -1
- package/dist/translations/eu.umd.js +1 -1
- package/dist/translations/fa.js +1 -1
- package/dist/translations/fa.umd.js +1 -1
- package/dist/translations/fi.js +1 -1
- package/dist/translations/fi.umd.js +1 -1
- package/dist/translations/fr.js +1 -1
- package/dist/translations/fr.umd.js +1 -1
- package/dist/translations/gl.js +1 -1
- package/dist/translations/gl.umd.js +1 -1
- package/dist/translations/gu.js +1 -1
- package/dist/translations/gu.umd.js +1 -1
- package/dist/translations/he.js +1 -1
- package/dist/translations/he.umd.js +1 -1
- package/dist/translations/hi.js +1 -1
- package/dist/translations/hi.umd.js +1 -1
- package/dist/translations/hr.js +1 -1
- package/dist/translations/hr.umd.js +1 -1
- package/dist/translations/hu.js +1 -1
- package/dist/translations/hu.umd.js +1 -1
- package/dist/translations/hy.js +1 -1
- package/dist/translations/hy.umd.js +1 -1
- package/dist/translations/id.js +1 -1
- package/dist/translations/id.umd.js +1 -1
- package/dist/translations/it.js +1 -1
- package/dist/translations/it.umd.js +1 -1
- package/dist/translations/ja.js +1 -1
- package/dist/translations/ja.umd.js +1 -1
- package/dist/translations/jv.js +1 -1
- package/dist/translations/jv.umd.js +1 -1
- package/dist/translations/kk.js +1 -1
- package/dist/translations/kk.umd.js +1 -1
- package/dist/translations/km.js +1 -1
- package/dist/translations/km.umd.js +1 -1
- package/dist/translations/kn.js +1 -1
- package/dist/translations/kn.umd.js +1 -1
- package/dist/translations/ko.js +1 -1
- package/dist/translations/ko.umd.js +1 -1
- package/dist/translations/ku.js +1 -1
- package/dist/translations/ku.umd.js +1 -1
- package/dist/translations/lt.js +1 -1
- package/dist/translations/lt.umd.js +1 -1
- package/dist/translations/lv.js +1 -1
- package/dist/translations/lv.umd.js +1 -1
- package/dist/translations/ms.js +1 -1
- package/dist/translations/ms.umd.js +1 -1
- package/dist/translations/nb.js +1 -1
- package/dist/translations/nb.umd.js +1 -1
- package/dist/translations/ne.js +1 -1
- package/dist/translations/ne.umd.js +1 -1
- package/dist/translations/nl.js +1 -1
- package/dist/translations/nl.umd.js +1 -1
- package/dist/translations/no.js +1 -1
- package/dist/translations/no.umd.js +1 -1
- package/dist/translations/oc.js +1 -1
- package/dist/translations/oc.umd.js +1 -1
- package/dist/translations/pl.js +1 -1
- package/dist/translations/pl.umd.js +1 -1
- package/dist/translations/pt-br.js +1 -1
- package/dist/translations/pt-br.umd.js +1 -1
- package/dist/translations/pt.js +1 -1
- package/dist/translations/pt.umd.js +1 -1
- package/dist/translations/ro.js +1 -1
- package/dist/translations/ro.umd.js +1 -1
- package/dist/translations/ru.js +1 -1
- package/dist/translations/ru.umd.js +1 -1
- package/dist/translations/si.js +1 -1
- package/dist/translations/si.umd.js +1 -1
- package/dist/translations/sk.js +1 -1
- package/dist/translations/sk.umd.js +1 -1
- package/dist/translations/sl.js +1 -1
- package/dist/translations/sl.umd.js +1 -1
- package/dist/translations/sq.js +1 -1
- package/dist/translations/sq.umd.js +1 -1
- package/dist/translations/sr-latn.js +1 -1
- package/dist/translations/sr-latn.umd.js +1 -1
- package/dist/translations/sr.js +1 -1
- package/dist/translations/sr.umd.js +1 -1
- package/dist/translations/sv.js +1 -1
- package/dist/translations/sv.umd.js +1 -1
- package/dist/translations/th.js +1 -1
- package/dist/translations/th.umd.js +1 -1
- package/dist/translations/ti.js +1 -1
- package/dist/translations/ti.umd.js +1 -1
- package/dist/translations/tk.js +1 -1
- package/dist/translations/tk.umd.js +1 -1
- package/dist/translations/tr.js +1 -1
- package/dist/translations/tr.umd.js +1 -1
- package/dist/translations/tt.js +1 -1
- package/dist/translations/tt.umd.js +1 -1
- package/dist/translations/ug.js +1 -1
- package/dist/translations/ug.umd.js +1 -1
- package/dist/translations/uk.js +1 -1
- package/dist/translations/uk.umd.js +1 -1
- package/dist/translations/ur.js +1 -1
- package/dist/translations/ur.umd.js +1 -1
- package/dist/translations/uz.js +1 -1
- package/dist/translations/uz.umd.js +1 -1
- package/dist/translations/vi.js +1 -1
- package/dist/translations/vi.umd.js +1 -1
- package/dist/translations/zh-cn.js +1 -1
- package/dist/translations/zh-cn.umd.js +1 -1
- package/dist/translations/zh.js +1 -1
- package/dist/translations/zh.umd.js +1 -1
- package/package.json +12 -12
|
@@ -26,10 +26,15 @@ export declare class AIEditing extends ContextPlugin {
|
|
|
26
26
|
*/
|
|
27
27
|
static get isPremiumPlugin(): true;
|
|
28
28
|
/**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
29
|
+
* Returns the session ID for the given editor. If the editor has the
|
|
30
|
+
* {@link module:real-time-collaboration/realtimecollaborativeediting/realtimecollaborationclient~RealTimeCollaborationClient}
|
|
31
|
+
* plugin its `sessionId` is reused; otherwise a random id is generated on first call and cached for the editor's lifetime.
|
|
32
|
+
*
|
|
33
|
+
* The session id is used to determine whether AI chat changes were created in the same editing session (and therefore
|
|
34
|
+
* can be safely applied) or in a different one. Each editor in the context has its own session id, so multi-editor and
|
|
35
|
+
* multi-root setups can route the mismatch check against the editor that actually produced the change.
|
|
31
36
|
*/
|
|
32
|
-
|
|
37
|
+
getSessionId(editor: Editor): string;
|
|
33
38
|
/**
|
|
34
39
|
* Returns the data and version of each document (one entry per editor root, excluding `$graveyard`).
|
|
35
40
|
*
|
|
@@ -37,7 +42,7 @@ export declare class AIEditing extends ContextPlugin {
|
|
|
37
42
|
* they came from.
|
|
38
43
|
*/
|
|
39
44
|
getDocumentData(): Promise<Array<AIEditingDocumentData>>;
|
|
40
|
-
afterInit():
|
|
45
|
+
afterInit(): void;
|
|
41
46
|
/**
|
|
42
47
|
* Displays a fake visual selection on given ranges.
|
|
43
48
|
*
|
|
@@ -52,7 +57,7 @@ export declare class AIEditing extends ContextPlugin {
|
|
|
52
57
|
* @param id ID of the fake visual selection to remove.
|
|
53
58
|
*/
|
|
54
59
|
hideFakeVisualSelection(id: string): void;
|
|
55
|
-
modelToDataWithIds(modelFragment: ModelDocumentFragment): Promise<string>;
|
|
60
|
+
modelToDataWithIds(modelFragment: ModelDocumentFragment, editor: Editor): Promise<string>;
|
|
56
61
|
}
|
|
57
62
|
/**
|
|
58
63
|
* A single document entry returned by {@link module:ai/aicore/aiediting~AIEditing#getDocumentData `AIEditing#getDocumentData()`}. One
|
|
@@ -95,5 +100,9 @@ type FakeSelectionData = {
|
|
|
95
100
|
* multiple features asked to show fake selection on different ranges.
|
|
96
101
|
*/
|
|
97
102
|
priority: number;
|
|
103
|
+
/**
|
|
104
|
+
* Editor instance in which the fake selection is created.
|
|
105
|
+
*/
|
|
106
|
+
editor: Editor;
|
|
98
107
|
};
|
|
99
108
|
export {};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @module ai/aicore/aigateway
|
|
7
|
+
* @publicApi
|
|
8
|
+
*/
|
|
9
|
+
import { ContextPlugin, type Editor } from '@ckeditor/ckeditor5-core';
|
|
10
|
+
import { type AIRunResult } from './model/airunresult.js';
|
|
11
|
+
import { AIResponseApplier } from './pipeline/airesponseapplier.js';
|
|
12
|
+
/**
|
|
13
|
+
* How AI run changes are applied to the editor when using {@link module:ai/aicore/aigateway~AIGateway#apply}.
|
|
14
|
+
*/
|
|
15
|
+
export type AIRunApplyMethod = 'suggest' | 'insert';
|
|
16
|
+
/**
|
|
17
|
+
* A single AI suggestion.
|
|
18
|
+
*
|
|
19
|
+
* The suggestion refers to a single block element modified by AI. The `id` is a unique identifier of the modified element. It is the same
|
|
20
|
+
* as `data-id` attribute for this element in the initial content. The `content` is the HTML content of the modified
|
|
21
|
+
* block element with all AI changes applied.
|
|
22
|
+
*/
|
|
23
|
+
export type AIRunChangeData = {
|
|
24
|
+
id: string;
|
|
25
|
+
content: string;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Base plugin exposing common methods for end-to-end public AI API.
|
|
29
|
+
*/
|
|
30
|
+
export declare class AIGateway extends ContextPlugin {
|
|
31
|
+
/**
|
|
32
|
+
* @inheritDoc
|
|
33
|
+
*/
|
|
34
|
+
static get pluginName(): "AIGateway";
|
|
35
|
+
/**
|
|
36
|
+
* @inheritDoc
|
|
37
|
+
*/
|
|
38
|
+
static get isOfficialPlugin(): true;
|
|
39
|
+
/**
|
|
40
|
+
* @inheritDoc
|
|
41
|
+
*/
|
|
42
|
+
static get isPremiumPlugin(): true;
|
|
43
|
+
/**
|
|
44
|
+
* Applies the AI run result to the editor content.
|
|
45
|
+
*
|
|
46
|
+
* With `applyMethod: 'insert'` the changes are written directly into the editor content. With `applyMethod: 'suggest'` they are
|
|
47
|
+
* wrapped as track-changes suggestions — this requires the `TrackChanges` plugin to be loaded on the editor, and
|
|
48
|
+
* throws `ai-no-track-changes` otherwise.
|
|
49
|
+
*
|
|
50
|
+
* @experimental **Experimental:** This is a production-ready API but may change in minor releases
|
|
51
|
+
* without the standard deprecation policy. Check the changelog for migration guidance.
|
|
52
|
+
* @param result The result of a completed AI run.
|
|
53
|
+
* @param applyMethod Method of applying the review suggestions to the editor content.
|
|
54
|
+
*/
|
|
55
|
+
apply(result: AIRunResult, applyMethod: AIRunApplyMethod): void;
|
|
56
|
+
/**
|
|
57
|
+
* Merges the AI changes with the original content, creating the final document content with all AI changes applied.
|
|
58
|
+
*
|
|
59
|
+
* @experimental **Experimental:** This is a production-ready API but may change in minor releases
|
|
60
|
+
* without the standard deprecation policy. Check the changelog for migration guidance.
|
|
61
|
+
*/
|
|
62
|
+
mergeChangesIntoContent(changes: Array<AIRunChangeData>, content: string, editor: Editor): ReturnType<AIResponseApplier['merge']>['parsedContent'];
|
|
63
|
+
}
|
|
@@ -6,31 +6,15 @@
|
|
|
6
6
|
* @module ai/aicore/model/aicontext
|
|
7
7
|
* @publicApi
|
|
8
8
|
*/
|
|
9
|
-
import type { Editor } from '@ckeditor/ckeditor5-core';
|
|
10
|
-
/**
|
|
11
|
-
* Locates a `data-id` from AI chat document HTML in a specific editor model root (multi-editor / multi-root contexts).
|
|
12
|
-
*/
|
|
13
|
-
export type AIDataIdDocumentSource = {
|
|
14
|
-
editor: Editor;
|
|
15
|
-
rootName: string;
|
|
16
|
-
};
|
|
17
|
-
/**
|
|
18
|
-
* One concatenation segment of the AI chat document HTML (single editor model root). The post-AI portion of the merged document that
|
|
19
|
-
* belongs to this slice is recovered by routing each top-level child via `AIReply#dataIdDocumentSources`, not by index.
|
|
20
|
-
*/
|
|
21
|
-
export type AIDocumentContextSlice = {
|
|
22
|
-
editor: Editor;
|
|
23
|
-
rootName: string;
|
|
24
|
-
html: string;
|
|
25
|
-
version: number;
|
|
26
|
-
};
|
|
27
9
|
/**
|
|
28
10
|
* The type of context item.
|
|
29
11
|
*
|
|
30
12
|
* Available types:
|
|
31
13
|
* * `'mcp-tool-context'`: a tool-related context item,
|
|
32
14
|
* * `'file'`: a file (PDF, Word document, etc.),
|
|
33
|
-
* * `'document'`:
|
|
15
|
+
* * `'document'`: all current editors documents (one per each root in each editor),
|
|
16
|
+
* * `'image'`: an image file — internal sub-type of file, derived from the file's MIME type
|
|
17
|
+
* so the chip renders a distinct icon. Serialized to the backend as `'file'`.
|
|
34
18
|
* (used by {@link module:ai/aichat/model/aichatcontext~AIChatContextConfig#document `config.ai.chat.context.document` option}),
|
|
35
19
|
* * `'web-resource'`: a URL (web page, blog post, etc.),
|
|
36
20
|
* * `'text'`: a text (plain text, Markdown, HTML, etc.),
|
|
@@ -38,7 +22,7 @@ export type AIDocumentContextSlice = {
|
|
|
38
22
|
* (used by {@link module:ai/aiquickactions/aiquickactions~AIQuickActions AI Quick Actions} that pass the user selection
|
|
39
23
|
* to the {@link module:ai/aichat/aichat~AIChat AI Chat}).
|
|
40
24
|
*/
|
|
41
|
-
export type AIContextItemType = 'mcp-tool-context' | 'file' | 'document' | 'web-resource' | 'text' | 'selection';
|
|
25
|
+
export type AIContextItemType = 'mcp-tool-context' | 'file' | 'image' | 'document' | 'web-resource' | 'text' | 'selection';
|
|
42
26
|
/**
|
|
43
27
|
* The type of text resource.
|
|
44
28
|
*/
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
import { type Locale } from '@ckeditor/ckeditor5-utils';
|
|
10
10
|
import { type AIConnector } from '../aiconnector.js';
|
|
11
11
|
import { AIReply } from './aireply.js';
|
|
12
|
+
import type { Editor } from '@ckeditor/ckeditor5-core';
|
|
12
13
|
declare const AIInteraction_base: {
|
|
13
14
|
new (): import("@ckeditor/ckeditor5-utils").Emitter;
|
|
14
15
|
prototype: import("@ckeditor/ckeditor5-utils").Emitter;
|
|
@@ -37,7 +38,7 @@ export declare abstract class AIInteraction extends /* #__PURE__ */ AIInteractio
|
|
|
37
38
|
* from the AI endpoint.
|
|
38
39
|
*/
|
|
39
40
|
currentReply?: AIReply;
|
|
40
|
-
constructor({ connector, locale }: AIInteractionOptions);
|
|
41
|
+
constructor({ connector, locale, channelsToEditors }: AIInteractionOptions);
|
|
41
42
|
/**
|
|
42
43
|
* Stops the interaction. It marks the last reply as done and aborts the current request to the AI endpoint.
|
|
43
44
|
*
|
|
@@ -74,6 +75,11 @@ export type AIInteractionOptions = {
|
|
|
74
75
|
* removed content while change groups are computed).
|
|
75
76
|
*/
|
|
76
77
|
locale?: Locale;
|
|
78
|
+
/**
|
|
79
|
+
* The channel ID to editor instance map. Optional — interactions that don't depend on per-channel routing
|
|
80
|
+
* (e.g. AI Actions, which wires a synthetic single-editor map inside its `createReply` override) can omit it.
|
|
81
|
+
*/
|
|
82
|
+
channelsToEditors?: Map<string, Editor>;
|
|
77
83
|
};
|
|
78
84
|
export type AIToolData = {
|
|
79
85
|
/**
|
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
* @publicApi
|
|
8
8
|
*/
|
|
9
9
|
import { type Locale } from '@ckeditor/ckeditor5-utils';
|
|
10
|
-
import { Element, Document } from '../utils/htmlparser.js';
|
|
10
|
+
import { Element, type Document } from '../utils/htmlparser.js';
|
|
11
|
+
import { type Editor } from '@ckeditor/ckeditor5-core';
|
|
11
12
|
import { type AISuggestionContentPartDefinition } from '../utils/getsuggestionpartsfromreply.js';
|
|
12
13
|
import type { AISource } from '../aiconnector.js';
|
|
13
|
-
import type { AIDataIdDocumentSource } from './aicontext.js';
|
|
14
14
|
/**
|
|
15
15
|
* The type of the reply. It can be one of the following:
|
|
16
16
|
*
|
|
@@ -41,11 +41,9 @@ export declare class AIReply extends /* #__PURE__ */ AIReply_base {
|
|
|
41
41
|
*/
|
|
42
42
|
readonly type: AIReplyType;
|
|
43
43
|
/**
|
|
44
|
-
* The content of the reply as received from AI endpoint.
|
|
45
|
-
*
|
|
46
|
-
* @observable
|
|
44
|
+
* The content of the reply as received from AI endpoint. It stores separate content for each document.
|
|
47
45
|
*/
|
|
48
|
-
content: string
|
|
46
|
+
content: Map<string, string>;
|
|
49
47
|
/**
|
|
50
48
|
* The sources of the reply. Used for web search reply.
|
|
51
49
|
*/
|
|
@@ -58,7 +56,7 @@ export declare class AIReply extends /* #__PURE__ */ AIReply_base {
|
|
|
58
56
|
*
|
|
59
57
|
* Note, that this property type is not DOM Document, but a simplified version provided by `domhandler` library.
|
|
60
58
|
*/
|
|
61
|
-
parsedContent: Document
|
|
59
|
+
parsedContent: Map<string, Document>;
|
|
62
60
|
/**
|
|
63
61
|
* Whether the reply is done. The reply is done once the AI endpoint emitted the last chunk of the content
|
|
64
62
|
* that matches the reply's type or the reply was interrupted (user stop, error, connection drop).
|
|
@@ -81,26 +79,28 @@ export declare class AIReply extends /* #__PURE__ */ AIReply_base {
|
|
|
81
79
|
/**
|
|
82
80
|
* @inheritDoc
|
|
83
81
|
*/
|
|
84
|
-
constructor({ type,
|
|
82
|
+
constructor({ type, isDone, isComplete, interactionId, areActionsDisabled, isFromHistory, documentContextContent, locale, id, channelsToEditors }: {
|
|
85
83
|
type: AIReplyType;
|
|
86
84
|
interactionId: string;
|
|
85
|
+
channelsToEditors: Map<string, Editor>;
|
|
87
86
|
areActionsDisabled?: boolean;
|
|
88
87
|
isFromHistory?: boolean;
|
|
89
|
-
content?: string;
|
|
90
88
|
isDone?: boolean;
|
|
91
89
|
isComplete?: boolean;
|
|
92
|
-
documentContextContent?:
|
|
93
|
-
|
|
94
|
-
|
|
90
|
+
documentContextContent?: Array<{
|
|
91
|
+
id?: string;
|
|
92
|
+
content?: string;
|
|
93
|
+
channelId: string;
|
|
94
|
+
rootName?: string;
|
|
95
|
+
}>;
|
|
95
96
|
locale?: Locale;
|
|
96
97
|
id?: string;
|
|
97
98
|
});
|
|
98
99
|
/**
|
|
99
|
-
* Appends new content to the reply.
|
|
100
|
-
*
|
|
101
|
-
* See {@link #content} for more information.
|
|
100
|
+
* Appends new content to the reply. Text replies and any plain-text fragments default to the `'text'` bucket;
|
|
101
|
+
* modification replies route by `documentId` to the per-document buckets in {@link #content}.
|
|
102
102
|
*/
|
|
103
|
-
appendContent(content: string): void;
|
|
103
|
+
appendContent(content: string, documentId?: string): void;
|
|
104
104
|
/**
|
|
105
105
|
* Destroys the reply.
|
|
106
106
|
*/
|
|
@@ -127,7 +127,10 @@ export type AIReplyHotNode = {
|
|
|
127
127
|
};
|
|
128
128
|
export type AIReplyChangeGroup = {
|
|
129
129
|
readonly changes: Array<AIReplyHotNode>;
|
|
130
|
-
readonly
|
|
130
|
+
readonly documentId: string;
|
|
131
|
+
readonly editor: Editor;
|
|
132
|
+
readonly rootName: string;
|
|
133
|
+
index: number;
|
|
131
134
|
state: AIReplyChangeGroupState;
|
|
132
135
|
};
|
|
133
136
|
export type AIReplyChangeGroupState = 'pending' | 'accepted' | 'rejected' | 'outdated';
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @module ai/aicore/model/airunresult
|
|
7
|
+
* @publicApi
|
|
8
|
+
*/
|
|
9
|
+
import { type Editor } from '@ckeditor/ckeditor5-core';
|
|
10
|
+
import { type CKEditorError } from '@ckeditor/ckeditor5-utils';
|
|
11
|
+
/**
|
|
12
|
+
* The status of an AI run, reported by the {@link module:ai/aicore/model/airunresult~AIRunResult#status `status`}.
|
|
13
|
+
*/
|
|
14
|
+
export type AIRunStatus = 'initialized' | 'completed' | 'aborted' | 'error';
|
|
15
|
+
/**
|
|
16
|
+
* The shape of the data accepted by the {@link module:ai/aicore/model/airunresult~AIRunResult} constructor.
|
|
17
|
+
*/
|
|
18
|
+
export type AIRunResultInput = {
|
|
19
|
+
/**
|
|
20
|
+
* The editor that is the source of content for the AI run.
|
|
21
|
+
*/
|
|
22
|
+
editor: Editor;
|
|
23
|
+
/**
|
|
24
|
+
* Name of the editor root the AI run targets.
|
|
25
|
+
*/
|
|
26
|
+
rootName: string;
|
|
27
|
+
/**
|
|
28
|
+
* Collaboration channel id captured at the start of the run.
|
|
29
|
+
*/
|
|
30
|
+
channelId?: string;
|
|
31
|
+
/**
|
|
32
|
+
* AI editing session id captured at the start of the run.
|
|
33
|
+
*/
|
|
34
|
+
sessionId: string;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* The result of an AI run.
|
|
38
|
+
*/
|
|
39
|
+
export declare class AIRunResult {
|
|
40
|
+
constructor(data: AIRunResultInput);
|
|
41
|
+
/**
|
|
42
|
+
* Outcome of the run. Anything other than `'completed'` means the run did not finish successfully — see {@link #error} for details.
|
|
43
|
+
*/
|
|
44
|
+
get status(): AIRunStatus;
|
|
45
|
+
/**
|
|
46
|
+
* The editor the AI run was performed against.
|
|
47
|
+
*/
|
|
48
|
+
get editor(): Editor;
|
|
49
|
+
/**
|
|
50
|
+
* Name of the editor root the AI run targeted.
|
|
51
|
+
*/
|
|
52
|
+
get rootName(): string;
|
|
53
|
+
/**
|
|
54
|
+
* Collaboration channel id captured at the start of the run.
|
|
55
|
+
*/
|
|
56
|
+
get channelId(): string | undefined;
|
|
57
|
+
/**
|
|
58
|
+
* AI editing session id captured at the start of the run.
|
|
59
|
+
*/
|
|
60
|
+
get sessionId(): string;
|
|
61
|
+
/**
|
|
62
|
+
* Document version captured when the run started. `undefined` until the run starts.
|
|
63
|
+
*/
|
|
64
|
+
get documentVersion(): number | undefined;
|
|
65
|
+
set documentVersion(value: number);
|
|
66
|
+
/**
|
|
67
|
+
* The pre-run document snapshot as captured at the time the run started, with `data-id` attributes preserved.
|
|
68
|
+
* `undefined` until the run starts.
|
|
69
|
+
*/
|
|
70
|
+
get contentRawOld(): string | undefined;
|
|
71
|
+
set contentRawOld(value: string);
|
|
72
|
+
/**
|
|
73
|
+
* The post-run document snapshot with all returned suggestions merged in, with `data-id` attributes preserved.
|
|
74
|
+
* Equals {@link #contentRawOld} when the run produced no suggestions. `undefined` until the run completes.
|
|
75
|
+
*/
|
|
76
|
+
get contentRawNew(): string | undefined;
|
|
77
|
+
set contentRawNew(value: string);
|
|
78
|
+
/**
|
|
79
|
+
* The {@link #contentRawOld} with `data-id` attributes stripped. Suitable for surfacing to end-users.
|
|
80
|
+
*/
|
|
81
|
+
get contentOld(): string;
|
|
82
|
+
/**
|
|
83
|
+
* The {@link #contentRawNew} with `data-id` attributes stripped. Suitable for surfacing to end-users.
|
|
84
|
+
*/
|
|
85
|
+
get contentNew(): string;
|
|
86
|
+
/**
|
|
87
|
+
* The error that caused the run to fail.
|
|
88
|
+
*/
|
|
89
|
+
get error(): Error | undefined;
|
|
90
|
+
set error(value: CKEditorError | undefined);
|
|
91
|
+
/**
|
|
92
|
+
* Marks the run as aborted. Reflected via {@link #status}.
|
|
93
|
+
*/
|
|
94
|
+
abort(): void;
|
|
95
|
+
}
|
|
@@ -274,10 +274,8 @@ export declare class AIResponseApplier extends /* #__PURE__ -- @preserve */ AIRe
|
|
|
274
274
|
* if an existing element was modified or not.
|
|
275
275
|
*
|
|
276
276
|
* Additionally, this method supports the following options:
|
|
277
|
-
* - `
|
|
278
|
-
*
|
|
279
|
-
* as unstable by adding a special 'data-unstable' attribute to them.
|
|
280
|
-
* - `markUnstableElementsDepth`: if set, it will determine how deep the unstable marking should go.
|
|
277
|
+
* - `cutAfterUnstable`: if set to `true`, marks unconfirmed elements as unstable (via `data-unstable` attribute)
|
|
278
|
+
* and cuts the content after the last touched element. Used during streaming.
|
|
281
279
|
*/
|
|
282
280
|
merge(contentPart: Document, parsedContent: Document, options?: MergeOptions): MergeResult;
|
|
283
281
|
}
|
|
@@ -286,19 +284,9 @@ export type MergeResult = {
|
|
|
286
284
|
newNodeIds: Array<string>;
|
|
287
285
|
modifiedNodeIds: Array<string>;
|
|
288
286
|
removedNodeIds: Array<string>;
|
|
289
|
-
/**
|
|
290
|
-
* Maps each newly-inserted top-level node id to the `data-id` of the existing element the merger picked as its anchor (the
|
|
291
|
-
* preceding or following existing element the AI's stream attached the new node to). Lets consumers route a new node to the
|
|
292
|
-
* correct source document when neighbour positions in the merged tree are ambiguous — e.g. "prepend at the start of doc B"
|
|
293
|
-
* produces the same merged tree as "append at the end of doc A", but only the AI's anchor disambiguates which doc owns the new
|
|
294
|
-
* node.
|
|
295
|
-
*/
|
|
296
|
-
newAnchorIds: ReadonlyMap<string, string>;
|
|
297
287
|
};
|
|
298
288
|
export type MergeOptions = {
|
|
299
|
-
|
|
300
|
-
markUnstableElements?: boolean;
|
|
301
|
-
markUnstableElementsDepth?: number;
|
|
289
|
+
cutAfterUnstable?: boolean;
|
|
302
290
|
replaceRemovedWith?: Element;
|
|
303
291
|
};
|
|
304
292
|
export {};
|
|
@@ -33,6 +33,10 @@ export declare class AISuggestionContentPartHeaderView extends View<HTMLDivEleme
|
|
|
33
33
|
* The view that displays the toolbar for the content part ("Apply", "Suggest", "Reject").
|
|
34
34
|
*/
|
|
35
35
|
toolbarView: AISuggestionContentPartToolbarView;
|
|
36
|
+
/**
|
|
37
|
+
* Observable property that indicates whether the track changes feature is on.
|
|
38
|
+
*/
|
|
39
|
+
isTrackChangesOn: boolean;
|
|
36
40
|
constructor(locale: Locale, { part, uiIndex, availableActions, areActionsDisabled }: {
|
|
37
41
|
part: AISuggestionContentPartDefinition;
|
|
38
42
|
uiIndex: number;
|
|
@@ -15,6 +15,10 @@ import '../../../../theme/common/aisuggestioncontentparttoolbar.css';
|
|
|
15
15
|
export declare class AISuggestionContentPartToolbarView extends ToolbarView {
|
|
16
16
|
isEnabled: boolean;
|
|
17
17
|
isVisible: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Observable property that indicates whether the track changes feature is on.
|
|
20
|
+
*/
|
|
21
|
+
isTrackChangesOn: boolean;
|
|
18
22
|
constructor(locale: Locale, availableActions: Array<AISuggestionActionName>, areActionsDisabled?: boolean);
|
|
19
23
|
/**
|
|
20
24
|
* Toggles the visibility of the apply and suggest buttons.
|
|
@@ -39,6 +39,10 @@ export declare class AISuggestionBodyViewContentPartView extends View<HTMLDivEle
|
|
|
39
39
|
* Controls the visibility of the content part.
|
|
40
40
|
*/
|
|
41
41
|
isVisible: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Observable property that indicates whether the track changes feature is on.
|
|
44
|
+
*/
|
|
45
|
+
isTrackChangesOn: boolean;
|
|
42
46
|
/**
|
|
43
47
|
* @inheritDoc
|
|
44
48
|
*/
|
|
@@ -15,5 +15,4 @@ export declare function getEditorsFromContext(context: ContextInterface | null |
|
|
|
15
15
|
*
|
|
16
16
|
* For a single editor passed as `context`, returns that editor.
|
|
17
17
|
*/
|
|
18
|
-
export declare function
|
|
19
|
-
export declare function getEditorFromContext(context: ContextInterface): Editor;
|
|
18
|
+
export declare function getFocusedEditorFromContext(context: ContextInterface): Editor;
|
|
@@ -8,17 +8,19 @@
|
|
|
8
8
|
import { type DocumentCompare, type DocumentCompareOptions } from '@ckeditor/ckeditor5-collaboration-core';
|
|
9
9
|
import { type Operation } from '@ckeditor/ckeditor5-engine';
|
|
10
10
|
import { type AIInteraction } from '../model/aiinteraction.js';
|
|
11
|
-
import type { AIDocumentContextSlice } from '../model/aicontext.js';
|
|
12
11
|
import type { AIReply, AIReplyChangeGroup } from '../model/aireply.js';
|
|
13
12
|
import { type Editor } from '@ckeditor/ckeditor5-core';
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Returns operations that need to be applied to the editor document to apply the AI reply to the document.
|
|
15
|
+
* All provided change groups **MUST** be related to the same editor instance. Otherwise crashes will happen as we will operate
|
|
16
|
+
* on wrong editor instances.
|
|
17
|
+
*/
|
|
18
|
+
export declare function getOperationsFromReply({ interaction, reply, groups, transform, documentCompare, documentCompareOptions }: {
|
|
16
19
|
interaction: AIInteraction;
|
|
17
20
|
reply: AIReply;
|
|
18
21
|
transform: boolean;
|
|
19
22
|
groups: Array<AIReplyChangeGroup>;
|
|
20
23
|
documentCompare: DocumentCompare;
|
|
21
24
|
documentCompareOptions: DocumentCompareOptions;
|
|
22
|
-
documentContextSlice?: AIDocumentContextSlice;
|
|
23
25
|
}): Array<Operation>;
|
|
24
26
|
export declare function fixMarkerOperationOldRange(editor: Editor, operation: Operation): void;
|
|
@@ -8,13 +8,16 @@
|
|
|
8
8
|
import { type Editor } from '@ckeditor/ckeditor5-core';
|
|
9
9
|
import { Document } from './htmlparser.js';
|
|
10
10
|
import { type AIReplyChangeGroup } from '../model/aireply.js';
|
|
11
|
-
export declare function getSuggestionPartsFromReply({
|
|
12
|
-
editor: Editor;
|
|
11
|
+
export declare function getSuggestionPartsFromReply({ changeGroups, documentContextContent, showDiff, trimUnchanged }: {
|
|
13
12
|
showDiff: boolean;
|
|
14
13
|
changeGroups: Array<AIReplyChangeGroup>;
|
|
15
|
-
documentContextContent: Document
|
|
14
|
+
documentContextContent: Map<string, Document>;
|
|
16
15
|
trimUnchanged?: boolean;
|
|
17
16
|
}): Array<AISuggestionContentPartDefinition>;
|
|
17
|
+
export declare function passThroughEditorDataPipeline(editor: Editor, before: Document, after: Document, showDiff: boolean, trimUnchanged?: boolean): {
|
|
18
|
+
content: Document;
|
|
19
|
+
hasChanges: boolean;
|
|
20
|
+
};
|
|
18
21
|
export type AISuggestionContentPartDefinition = {
|
|
19
22
|
type: 'modified' | 'new' | 'removed' | 'context';
|
|
20
23
|
index: number;
|
|
@@ -2,15 +2,21 @@
|
|
|
2
2
|
* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
3
|
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
4
4
|
*/
|
|
5
|
+
/**
|
|
6
|
+
* @module ai/aicore/utils/htmlparser
|
|
7
|
+
*/
|
|
8
|
+
import { parseDocument } from 'htmlparser2';
|
|
5
9
|
import { append, appendChild, find, findAll, findOne, getChildren, isComment, isTag, prepend, prependChild, removeElement, replaceElement, textContent, getParent, hasChildren } from 'domutils';
|
|
6
10
|
import render from 'dom-serializer';
|
|
7
11
|
import { cloneNode, isDocument, isText, Element, Text, type AnyNode, type ChildNode, type Comment, Document, NodeWithChildren, type ParentNode } from 'domhandler';
|
|
8
12
|
export { cloneNode, find, findOne, findAll, getChildren, getParent, isComment, isDocument, isTag, isText, append, appendChild, prepend, prependChild, render, removeElement, replaceElement, textContent, hasChildren, Element, Document, NodeWithChildren, Text };
|
|
9
13
|
export type { AnyNode, ParentNode, ChildNode };
|
|
10
|
-
export declare function parse(html: string): Document;
|
|
11
|
-
export declare function serialize(document: Document | AnyNode): string;
|
|
14
|
+
export declare function parse(html: string, options?: Parameters<typeof parseDocument>[1]): Document;
|
|
15
|
+
export declare function serialize(document: Document | AnyNode, options?: Parameters<typeof render>[1]): string;
|
|
12
16
|
export declare function findByAttribute(name: string, value: string | null, nodes: Array<AnyNode> | ParentNode): ReturnType<typeof findOne>;
|
|
13
17
|
export declare function findAllByAttribute(name: string, value: string | null, nodes: Array<AnyNode> | ParentNode): ReturnType<typeof findAll>;
|
|
18
|
+
export declare function isUnsupportedTag(name: string): boolean;
|
|
19
|
+
export declare function findAllUnsupported(root: ParentNode): Array<Element>;
|
|
14
20
|
export declare function findAllComments(document: Document): Array<Comment>;
|
|
15
21
|
export declare function getAttribute(node: AnyNode | null, name: string): string | null;
|
|
16
22
|
export declare function setAttribute(node: AnyNode, name: string, value: string | null): void;
|
|
@@ -80,8 +80,8 @@ export interface AIQuickActionsConfig {
|
|
|
80
80
|
* id: 'add-quote-from-famous-person',
|
|
81
81
|
* label: 'Add a quote from a famous person',
|
|
82
82
|
* prompt: 'Add a quote from a known person, which would make sense in the context of the selected text.',
|
|
83
|
-
* type: 'action'
|
|
84
|
-
* model
|
|
83
|
+
* type: 'action'
|
|
84
|
+
* // No `model` specified — uses the default configured in `ai.models.defaultModelId`.
|
|
85
85
|
* },
|
|
86
86
|
* {
|
|
87
87
|
* id: 'summarize-in-bullet-points',
|
|
@@ -95,7 +95,7 @@ export interface AIQuickActionsConfig {
|
|
|
95
95
|
* label: 'Add sarcasm',
|
|
96
96
|
* prompt: 'Rewrite using a sarcastic tone.',
|
|
97
97
|
* type: 'action',
|
|
98
|
-
* model: 'claude-4-sonnet'
|
|
98
|
+
* model: 'claude-4-6-sonnet' // Pin a specific model for this action.
|
|
99
99
|
* }
|
|
100
100
|
* ],
|
|
101
101
|
* },
|
|
@@ -237,7 +237,7 @@ export interface AIQuickActionCustomBaseDefinition {
|
|
|
237
237
|
* label: 'Add a quote from a famous person',
|
|
238
238
|
* prompt: 'Add a quote from a known person, which would make sense in the context of the selected text.',
|
|
239
239
|
* type: 'action',
|
|
240
|
-
* model: 'claude-4-sonnet'
|
|
240
|
+
* model: 'claude-4-6-sonnet'
|
|
241
241
|
* }
|
|
242
242
|
* ```
|
|
243
243
|
*/
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { type Editor } from '@ckeditor/ckeditor5-core';
|
|
9
9
|
import { View, type BodyCollection, type DropdownView, type ViewWithFocusCycler, FocusCycler } from '@ckeditor/ckeditor5-ui';
|
|
10
|
-
import { type AIQuickActionDefinition, type AIQuickActionsGroupDefinition } from '../aiquickactionsui.js';
|
|
10
|
+
import { type AIQuickActionsButtonEntry, type AIQuickActionDefinition, type AIQuickActionsGroupDefinition } from '../aiquickactionsui.js';
|
|
11
11
|
import { FocusTracker, KeystrokeHandler } from '@ckeditor/ckeditor5-utils';
|
|
12
12
|
/**
|
|
13
13
|
* The content view for AI Quick Actions dropdown that renders a structured list of AI commands.
|
|
@@ -36,7 +36,7 @@ export declare class AIQuickActionsDropdownContentView extends View implements V
|
|
|
36
36
|
* Helps cycling over {@link #_focusables} in the form.
|
|
37
37
|
*/
|
|
38
38
|
readonly focusCycler: FocusCycler;
|
|
39
|
-
constructor(editor: Editor, content: Array<AIQuickActionsGroupDefinition | AIQuickActionDefinition>, dropdownView: DropdownView, bodyCollection: BodyCollection, hasSearch?: boolean);
|
|
39
|
+
constructor(editor: Editor, content: Array<AIQuickActionsGroupDefinition | AIQuickActionDefinition>, dropdownView: DropdownView, bodyCollection: BodyCollection, hasSearch?: boolean, actionButtons?: Array<AIQuickActionsButtonEntry>);
|
|
40
40
|
/**
|
|
41
41
|
* Resets the search input and restores all list items.
|
|
42
42
|
* Called when the dropdown is closed to ensure clean state on next open.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @module ai/aireviewcore/aireviewcorecheckregistry
|
|
7
|
+
*/
|
|
8
|
+
import { ContextPlugin } from '@ckeditor/ckeditor5-core';
|
|
9
|
+
import { AIConnector } from '../aicore/aiconnector.js';
|
|
10
|
+
import { type AIReviewCheckList } from './model/aireviewchecklist.js';
|
|
11
|
+
/**
|
|
12
|
+
* Base class for feature-specific check-list registries.
|
|
13
|
+
*
|
|
14
|
+
* Each feature (review mode, translate, …) ships a concrete subclass that knows how to build its own {@link AIReviewCheckList}.
|
|
15
|
+
*/
|
|
16
|
+
export declare abstract class AIReviewCoreCheckRegistry<T extends AIReviewCheckList> extends ContextPlugin {
|
|
17
|
+
/**
|
|
18
|
+
* @inheritDoc
|
|
19
|
+
*/
|
|
20
|
+
static get requires(): readonly [typeof AIConnector];
|
|
21
|
+
/**
|
|
22
|
+
* @inheritDoc
|
|
23
|
+
*/
|
|
24
|
+
static get isOfficialPlugin(): true;
|
|
25
|
+
/**
|
|
26
|
+
* @inheritDoc
|
|
27
|
+
*/
|
|
28
|
+
static get isPremiumPlugin(): true;
|
|
29
|
+
/**
|
|
30
|
+
* Returns the check list. The result is cached — subsequent calls return the same promise, so concurrent
|
|
31
|
+
* consumers (e.g. a controller + a headless gateway) share a single load.
|
|
32
|
+
*/
|
|
33
|
+
getChecksList(): Promise<T>;
|
|
34
|
+
}
|