tiptap-apcore 0.3.0 → 0.4.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/README.md +77 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime/TiptapAPCore.d.ts +39 -1
- package/dist/runtime/TiptapAPCore.d.ts.map +1 -1
- package/dist/runtime/TiptapAPCore.js +57 -1
- package/dist/runtime/TiptapAPCore.js.map +1 -1
- package/dist/runtime/TiptapExecutor.d.ts +37 -0
- package/dist/runtime/TiptapExecutor.d.ts.map +1 -1
- package/dist/runtime/TiptapExecutor.js +197 -0
- package/dist/runtime/TiptapExecutor.js.map +1 -1
- package/dist/security/AclGuard.d.ts +12 -2
- package/dist/security/AclGuard.d.ts.map +1 -1
- package/dist/security/AclGuard.js +34 -3
- package/dist/security/AclGuard.js.map +1 -1
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +9 -9
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> Let AI safely control your TipTap editor via the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) and OpenAI Function Calling.
|
|
4
4
|
|
|
5
|
-
**tiptap-apcore** wraps every TipTap editor command as a schema-driven [APCore](https://github.com/
|
|
5
|
+
**tiptap-apcore** wraps every TipTap editor command as a schema-driven [APCore](https://github.com/aiperceivable) module — complete with JSON Schema validation, safety annotations, and fine-grained access control. Any MCP-compatible AI agent can then discover and invoke these modules to read, format, insert, or restructure rich-text content.
|
|
6
6
|
|
|
7
7
|
[](https://www.apache.org/licenses/LICENSE-2.0)
|
|
8
8
|
[](https://tiptap.dev)
|
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
- **OpenAI Function Calling** — `toOpenaiTools(executor)` exports tool definitions for GPT
|
|
16
16
|
- **Role-based ACL** — `readonly`, `editor`, `admin` roles with tag-level and module-level overrides
|
|
17
17
|
- **Safety annotations** — every command tagged `readonly`, `destructive`, `idempotent`, `requiresApproval`, `openWorld`, `streaming`
|
|
18
|
+
- **Preview & approval** — `apcore.validate()` predicts a command's effects *before* running it; over MCP this drives the `__apcore_module_preview` meta-tool and gates high-risk commands behind human approval automatically
|
|
19
|
+
- **Audit logging** — opt-in structured `allow` / `deny` audit trail (`audit: true` → `apcore.getAuditLog()`, or supply your own logger)
|
|
18
20
|
- **Strict JSON Schemas** — `inputSchema` + `outputSchema` with `additionalProperties: false` for all known commands
|
|
19
21
|
- **Dynamic re-discovery** — call `apcore.refresh()` or `registry.discover()` to pick up extensions added at runtime
|
|
20
22
|
- **Dynamic ACL** — call `apcore.setAcl()` to switch roles without recreating the instance
|
|
@@ -152,6 +154,80 @@ apcore.setAcl({ role: "admin" });
|
|
|
152
154
|
|
|
153
155
|
> **Note:** `allowModules` is additive — it grants access to listed modules but does not deny unlisted ones. Combine with a role to restrict the baseline.
|
|
154
156
|
|
|
157
|
+
## Preview & Approval (Safety)
|
|
158
|
+
|
|
159
|
+
Before executing a command, an AI agent can ask **"what would this change?"** via
|
|
160
|
+
`validate()` (aka `preflight()`). It runs the same checks as `call()` — editor
|
|
161
|
+
readiness, module existence, ACL, and input validation — **without touching the
|
|
162
|
+
document**, and returns a structured prediction of the effects.
|
|
163
|
+
|
|
164
|
+
```typescript
|
|
165
|
+
const result = await apcore.validate("tiptap.destructive.setContent", {
|
|
166
|
+
value: "<p>Replaced</p>",
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
// result.valid → true
|
|
170
|
+
// result.requiresApproval → true (sourced from the command's annotations)
|
|
171
|
+
// result.checks → [{ check: "editor_ready", passed: true }, ...]
|
|
172
|
+
// result.predictedChanges → [{
|
|
173
|
+
// action: "replace",
|
|
174
|
+
// target: "editor.content",
|
|
175
|
+
// summary: "Replace all editor content",
|
|
176
|
+
// before: "<p>Hello world</p>", // truncated snapshot of current content
|
|
177
|
+
// after: "<p>Replaced</p>",
|
|
178
|
+
// }]
|
|
179
|
+
|
|
180
|
+
if (result.valid && !result.requiresApproval) {
|
|
181
|
+
await apcore.call("tiptap.destructive.setContent", { value: "<p>Replaced</p>" });
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Predicted `Change` records are produced for destructive and content-mutating
|
|
186
|
+
commands (`clearContent`, `setContent`, `deleteSelection`, `deleteRange`,
|
|
187
|
+
`deleteCurrentNode`, `cut`, `deleteNode`, `insertContent`, `insertContentAt`,
|
|
188
|
+
`setLink`). Read-only, formatting, and selection commands report an empty list.
|
|
189
|
+
|
|
190
|
+
### Automatic MCP preview & approval
|
|
191
|
+
|
|
192
|
+
This is powered by the apcore `Executor.validate()` contract. When you pass the
|
|
193
|
+
executor to `serve()`, **apcore-mcp exposes the `__apcore_module_preview`
|
|
194
|
+
meta-tool and gates commands whose `requiresApproval` annotation is `true`
|
|
195
|
+
behind its elicitation-based approval flow** — no extra wiring required. All six
|
|
196
|
+
`destructive` commands are annotated `requiresApproval: true` out of the box.
|
|
197
|
+
|
|
198
|
+
```typescript
|
|
199
|
+
import { serve } from "tiptap-apcore/server";
|
|
200
|
+
await serve(apcore.executor); // preview meta-tool + approval flow enabled automatically
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## Audit Logging
|
|
204
|
+
|
|
205
|
+
Opt in to a structured audit trail of every ACL `allow` / `deny` decision.
|
|
206
|
+
|
|
207
|
+
```typescript
|
|
208
|
+
// Built-in in-memory collector
|
|
209
|
+
const apcore = new TiptapAPCore(editor, { acl: { role: "editor" }, audit: true });
|
|
210
|
+
|
|
211
|
+
await apcore.call("tiptap.query.getHTML", {}); // allow
|
|
212
|
+
await apcore.call("tiptap.destructive.clearContent", {}).catch(() => {}); // deny
|
|
213
|
+
|
|
214
|
+
apcore.getAuditLog();
|
|
215
|
+
// [
|
|
216
|
+
// { timestamp: "2026-07-06T...", targetId: "tiptap.query.getHTML",
|
|
217
|
+
// decision: "allow", roles: ["editor"], reason: "", ... },
|
|
218
|
+
// { timestamp: "2026-07-06T...", targetId: "tiptap.destructive.clearContent",
|
|
219
|
+
// decision: "deny", roles: ["editor"], reason: "Role 'editor' does not permit ...", ... },
|
|
220
|
+
// ]
|
|
221
|
+
|
|
222
|
+
// Or route entries to your own sink (apcore-js AuditLogger)
|
|
223
|
+
new TiptapAPCore(editor, {
|
|
224
|
+
audit: (entry) => myLogger.info("acl", entry),
|
|
225
|
+
});
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
Entries follow the apcore-js `AuditEntry` wire shape (the TipTap module ID is the
|
|
229
|
+
`targetId`), so they interoperate with the rest of the apcore ecosystem.
|
|
230
|
+
|
|
155
231
|
## MCP Server
|
|
156
232
|
|
|
157
233
|
Server functions must be imported from the `tiptap-apcore/server` subpath (Node.js only).
|
package/dist/index.d.ts
CHANGED
|
@@ -10,11 +10,12 @@
|
|
|
10
10
|
*/
|
|
11
11
|
export { withApcore } from "./withApcore.js";
|
|
12
12
|
export { TiptapAPCore } from "./runtime/TiptapAPCore.js";
|
|
13
|
-
export type { ApcoreOptions, ApcoreResult, AclConfig, ExtensionCommandInfo, AnnotationEntry, SelectionEffect, SchemaEntry, Logger, EditorLike, ChainLike, Registry, Executor, ModuleDescriptor, ModuleAnnotations, JsonSchema, } from "./types.js";
|
|
13
|
+
export type { ApcoreOptions, ApcoreResult, AclConfig, ExtensionCommandInfo, AnnotationEntry, SelectionEffect, SchemaEntry, Logger, EditorLike, ChainLike, Registry, Executor, ModuleDescriptor, ModuleAnnotations, JsonSchema, AuditLogger, AuditEntry, } from "./types.js";
|
|
14
14
|
export { TiptapModuleError, ErrorCodes } from "./errors/index.js";
|
|
15
15
|
export { TiptapRegistry } from "./runtime/index.js";
|
|
16
16
|
export { TiptapExecutor } from "./runtime/index.js";
|
|
17
17
|
export { AclGuard } from "./security/index.js";
|
|
18
18
|
export type { ServeOptions, AsyncServeOptions, AsyncServeApp, ToOpenaiToolsOptions, RegistryOrExecutor, OpenAIToolDef, } from "apcore-mcp";
|
|
19
19
|
export { REGISTRY_EVENTS, MODULE_ID_PATTERN } from "apcore-mcp";
|
|
20
|
+
export type { PreflightResult, PreflightCheckResult, PreviewResult, Change, } from "apcore-js";
|
|
20
21
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,YAAY,EACV,aAAa,EACb,YAAY,EACZ,SAAS,EACT,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,WAAW,EACX,MAAM,EACN,UAAU,EACV,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,YAAY,EACV,aAAa,EACb,YAAY,EACZ,SAAS,EACT,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,WAAW,EACX,MAAM,EACN,UAAU,EACV,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAKhE,YAAY,EACV,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,MAAM,GACP,MAAM,WAAW,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAoBzD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAW/C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { ApcoreOptions, EditorLike, AclConfig, ModuleDescriptor } from "../types.js";
|
|
1
|
+
import type { ApcoreOptions, EditorLike, AclConfig, ModuleDescriptor, AuditLogger, AuditEntry } from "../types.js";
|
|
2
|
+
import type { PreflightResult } from "apcore-js";
|
|
2
3
|
import { TiptapRegistry } from "./TiptapRegistry.js";
|
|
3
4
|
import { TiptapExecutor } from "./TiptapExecutor.js";
|
|
4
5
|
/**
|
|
@@ -15,11 +16,33 @@ export declare class TiptapAPCore {
|
|
|
15
16
|
private _aclGuard;
|
|
16
17
|
private _scanner;
|
|
17
18
|
private _builder;
|
|
19
|
+
private _auditLogger;
|
|
20
|
+
private _auditEntries;
|
|
18
21
|
constructor(editor: EditorLike, options?: ApcoreOptions);
|
|
19
22
|
/** The APCore Registry containing all discovered module definitions */
|
|
20
23
|
get registry(): TiptapRegistry;
|
|
21
24
|
/** The APCore Executor for running commands against the editor */
|
|
22
25
|
get executor(): TiptapExecutor;
|
|
26
|
+
/** The structured ACL audit logger, if auditing was enabled via options. */
|
|
27
|
+
get auditLogger(): AuditLogger | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* Return the recorded ACL audit entries (allow/deny decisions).
|
|
30
|
+
*
|
|
31
|
+
* Only populated when `audit: true` was passed in the options (which enables
|
|
32
|
+
* the built-in in-memory collector). When a custom {@link AuditLogger}
|
|
33
|
+
* function is supplied instead, entries go to that sink and this returns an
|
|
34
|
+
* empty array — query your own store.
|
|
35
|
+
*/
|
|
36
|
+
getAuditLog(): AuditEntry[];
|
|
37
|
+
/**
|
|
38
|
+
* Resolve the `audit` option into an apcore-js {@link AuditLogger} callback.
|
|
39
|
+
*
|
|
40
|
+
* - `true` → a built-in in-memory collector (entries readable via
|
|
41
|
+
* {@link getAuditLog}).
|
|
42
|
+
* - an {@link AuditLogger} function → used directly as the sink.
|
|
43
|
+
* - falsy → auditing disabled.
|
|
44
|
+
*/
|
|
45
|
+
private resolveAuditLogger;
|
|
23
46
|
/**
|
|
24
47
|
* Execute an editor command via APCore.
|
|
25
48
|
*
|
|
@@ -28,6 +51,21 @@ export declare class TiptapAPCore {
|
|
|
28
51
|
* @returns The execution result
|
|
29
52
|
*/
|
|
30
53
|
call(moduleId: string, inputs: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
54
|
+
/**
|
|
55
|
+
* Validate a command and predict its effects WITHOUT executing it.
|
|
56
|
+
*
|
|
57
|
+
* Delegates to the executor's apcore `validate()` contract, returning a
|
|
58
|
+
* PreflightResult with validity, approval requirement, and predicted changes.
|
|
59
|
+
* This is what powers the apcore-mcp preview meta-tool and approval flow.
|
|
60
|
+
*
|
|
61
|
+
* @param moduleId - The module ID (e.g., 'tiptap.destructive.clearContent')
|
|
62
|
+
* @param inputs - Input arguments for the command
|
|
63
|
+
*/
|
|
64
|
+
validate(moduleId: string, inputs: Record<string, unknown>): Promise<PreflightResult>;
|
|
65
|
+
/**
|
|
66
|
+
* Preflight — alias for {@link validate}, mirroring the apcore-js Executor API.
|
|
67
|
+
*/
|
|
68
|
+
preflight(moduleId: string, inputs: Record<string, unknown>): Promise<PreflightResult>;
|
|
31
69
|
/**
|
|
32
70
|
* List available modules in the registry.
|
|
33
71
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TiptapAPCore.d.ts","sourceRoot":"","sources":["../../src/runtime/TiptapAPCore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,SAAS,EACT,gBAAgB,
|
|
1
|
+
{"version":3,"file":"TiptapAPCore.d.ts","sourceRoot":"","sources":["../../src/runtime/TiptapAPCore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,UAAU,EACX,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAMrD;;;;;GAKG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,aAAa,CAA2B;gBAEpC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,aAAa;IAgEvD,uEAAuE;IACvE,IAAI,QAAQ,IAAI,cAAc,CAE7B;IAED,kEAAkE;IAClE,IAAI,QAAQ,IAAI,cAAc,CAE7B;IAED,4EAA4E;IAC5E,IAAI,WAAW,IAAI,WAAW,GAAG,SAAS,CAEzC;IAED;;;;;;;OAOG;IACH,WAAW,IAAI,UAAU,EAAE;IAI3B;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;;;;;OAMG;IACG,IAAI,CACR,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAInC;;;;;;;;;OASG;IACG,QAAQ,CACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,eAAe,CAAC;IAI3B;;OAEG;IACG,SAAS,CACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,eAAe,CAAC;IAI3B;;;;;OAKG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,EAAE;IAI9D;;;;;OAKG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAIxD;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI;IAa5B;;;;OAIG;IACH,OAAO,IAAI,MAAM;CA6BlB"}
|
|
@@ -19,6 +19,8 @@ export class TiptapAPCore {
|
|
|
19
19
|
_aclGuard;
|
|
20
20
|
_scanner;
|
|
21
21
|
_builder;
|
|
22
|
+
_auditLogger;
|
|
23
|
+
_auditEntries;
|
|
22
24
|
constructor(editor, options) {
|
|
23
25
|
if (editor == null) {
|
|
24
26
|
throw new TypeError("editor must be a valid TipTap Editor instance");
|
|
@@ -42,7 +44,10 @@ export class TiptapAPCore {
|
|
|
42
44
|
this._scanner = new ExtensionScanner(this._options.logger);
|
|
43
45
|
this._builder = new ModuleBuilder(prefix);
|
|
44
46
|
this._registry = new TiptapRegistry();
|
|
45
|
-
|
|
47
|
+
const resolvedAudit = this.resolveAuditLogger(this._options.audit);
|
|
48
|
+
this._auditLogger = resolvedAudit.logger;
|
|
49
|
+
this._auditEntries = resolvedAudit.entries;
|
|
50
|
+
this._aclGuard = new AclGuard(this._options.acl, this._options.logger, this._auditLogger);
|
|
46
51
|
this._executor = new TiptapExecutor(editor, this._registry, this._aclGuard, this._options.sanitizeHtml);
|
|
47
52
|
// 2. Initial discovery
|
|
48
53
|
this.refresh();
|
|
@@ -57,6 +62,38 @@ export class TiptapAPCore {
|
|
|
57
62
|
get executor() {
|
|
58
63
|
return this._executor;
|
|
59
64
|
}
|
|
65
|
+
/** The structured ACL audit logger, if auditing was enabled via options. */
|
|
66
|
+
get auditLogger() {
|
|
67
|
+
return this._auditLogger;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Return the recorded ACL audit entries (allow/deny decisions).
|
|
71
|
+
*
|
|
72
|
+
* Only populated when `audit: true` was passed in the options (which enables
|
|
73
|
+
* the built-in in-memory collector). When a custom {@link AuditLogger}
|
|
74
|
+
* function is supplied instead, entries go to that sink and this returns an
|
|
75
|
+
* empty array — query your own store.
|
|
76
|
+
*/
|
|
77
|
+
getAuditLog() {
|
|
78
|
+
return this._auditEntries ? [...this._auditEntries] : [];
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Resolve the `audit` option into an apcore-js {@link AuditLogger} callback.
|
|
82
|
+
*
|
|
83
|
+
* - `true` → a built-in in-memory collector (entries readable via
|
|
84
|
+
* {@link getAuditLog}).
|
|
85
|
+
* - an {@link AuditLogger} function → used directly as the sink.
|
|
86
|
+
* - falsy → auditing disabled.
|
|
87
|
+
*/
|
|
88
|
+
resolveAuditLogger(audit) {
|
|
89
|
+
if (!audit)
|
|
90
|
+
return { logger: undefined, entries: undefined };
|
|
91
|
+
if (audit === true) {
|
|
92
|
+
const entries = [];
|
|
93
|
+
return { logger: (entry) => { entries.push(entry); }, entries };
|
|
94
|
+
}
|
|
95
|
+
return { logger: audit, entries: undefined };
|
|
96
|
+
}
|
|
60
97
|
/**
|
|
61
98
|
* Execute an editor command via APCore.
|
|
62
99
|
*
|
|
@@ -67,6 +104,25 @@ export class TiptapAPCore {
|
|
|
67
104
|
async call(moduleId, inputs) {
|
|
68
105
|
return this._executor.call(moduleId, inputs);
|
|
69
106
|
}
|
|
107
|
+
/**
|
|
108
|
+
* Validate a command and predict its effects WITHOUT executing it.
|
|
109
|
+
*
|
|
110
|
+
* Delegates to the executor's apcore `validate()` contract, returning a
|
|
111
|
+
* PreflightResult with validity, approval requirement, and predicted changes.
|
|
112
|
+
* This is what powers the apcore-mcp preview meta-tool and approval flow.
|
|
113
|
+
*
|
|
114
|
+
* @param moduleId - The module ID (e.g., 'tiptap.destructive.clearContent')
|
|
115
|
+
* @param inputs - Input arguments for the command
|
|
116
|
+
*/
|
|
117
|
+
async validate(moduleId, inputs) {
|
|
118
|
+
return this._executor.validate(moduleId, inputs);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Preflight — alias for {@link validate}, mirroring the apcore-js Executor API.
|
|
122
|
+
*/
|
|
123
|
+
async preflight(moduleId, inputs) {
|
|
124
|
+
return this._executor.preflight(moduleId, inputs);
|
|
125
|
+
}
|
|
70
126
|
/**
|
|
71
127
|
* List available modules in the registry.
|
|
72
128
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TiptapAPCore.js","sourceRoot":"","sources":["../../src/runtime/TiptapAPCore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TiptapAPCore.js","sourceRoot":"","sources":["../../src/runtime/TiptapAPCore.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEnE,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,OAAO,YAAY;IACf,OAAO,CAAa;IACpB,QAAQ,CAAgB;IACxB,SAAS,CAAiB;IAC1B,SAAS,CAAiB;IAC1B,SAAS,CAAW;IACpB,QAAQ,CAAmB;IAC3B,QAAQ,CAAgB;IACxB,YAAY,CAA0B;IACtC,aAAa,CAA2B;IAEhD,YAAY,MAAkB,EAAE,OAAuB;QACrD,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,MAAM,IAAI,iBAAiB,CACzB,UAAU,CAAC,gBAAgB,EAC3B,qBAAqB,EACrB,EAAE,eAAe,EAAE,IAAI,EAAE,CAC1B,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAE/B,mBAAmB;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC;QAChD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,iBAAiB,CACzB,UAAU,CAAC,uBAAuB,EAClC,mBAAmB,MAAM,kCAAkC,EAC3D,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CACnC,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,IACE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI;YACvB,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAC5C,CAAC;YACD,MAAM,IAAI,iBAAiB,CACzB,UAAU,CAAC,uBAAuB,EAClC,qBAAqB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,qBAAqB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACvF,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CACrD,CAAC;QACJ,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,EAAE,CAAC;QACtC,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnE,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC;QACzC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,QAAQ,CAC3B,IAAI,CAAC,QAAQ,CAAC,GAAG,EACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,EACpB,IAAI,CAAC,YAAY,CAClB,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CACjC,MAAM,EACN,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,QAAQ,CAAC,YAAY,CAC3B,CAAC;QAEF,uBAAuB;QACvB,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,uDAAuD;QACvD,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,uEAAuE;IACvE,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,kEAAkE;IAClE,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,4EAA4E;IAC5E,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;;;;;OAOG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3D,CAAC;IAED;;;;;;;OAOG;IACK,kBAAkB,CAAC,KAAwC;QAIjE,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAC7D,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,MAAM,OAAO,GAAiB,EAAE,CAAC;YACjC,OAAO,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;QAClE,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAC/C,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,CACR,QAAgB,EAChB,MAA+B;QAE/B,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,QAAQ,CACZ,QAAgB,EAChB,MAA+B;QAE/B,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CACb,QAAgB,EAChB,MAA+B;QAE/B,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAC,OAA8C;QACjD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,QAAgB;QAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,GAAc;QACnB,MAAM,UAAU,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,iBAAiB,CACzB,UAAU,CAAC,uBAAuB,EAClC,qBAAqB,GAAG,CAAC,IAAI,qBAAqB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACzE,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,CACvC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC;QACxB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACH,OAAO;QACL,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,IAAI,KAAK,CAAC;QAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;QAEjC,uBAAuB;QACvB,KAAK,MAAM,CAAC,EAAE,aAAa,CAAC,IAAI,YAAY,EAAE,CAAC;YAC7C,KAAK,MAAM,WAAW,IAAI,aAAa,CAAC,YAAY,EAAE,CAAC;gBACrD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;gBAEnE,kDAAkD;gBAClD,IAAI,CAAC,aAAa,IAAI,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC3D,SAAS;gBACX,CAAC;gBAED,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAChC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;CACF"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Executor, EditorLike } from "../types.js";
|
|
2
|
+
import type { PreflightResult } from "apcore-js";
|
|
2
3
|
import type { TiptapRegistry } from "./TiptapRegistry.js";
|
|
3
4
|
import { AclGuard } from "../security/AclGuard.js";
|
|
4
5
|
export type { EditorLike, ChainLike } from "../types.js";
|
|
@@ -10,6 +11,42 @@ export declare class TiptapExecutor implements Executor {
|
|
|
10
11
|
constructor(editor: EditorLike, registry: TiptapRegistry, aclGuard: AclGuard, sanitizeHtml?: (html: string) => string);
|
|
11
12
|
call(moduleId: string, inputs: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
12
13
|
callAsync(moduleId: string, inputs: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
14
|
+
/**
|
|
15
|
+
* Validate inputs and predict effects WITHOUT executing the command.
|
|
16
|
+
*
|
|
17
|
+
* Implements the apcore Executor `validate()` contract (PROTOCOL_SPEC §5.6).
|
|
18
|
+
* When this executor is passed to `serve()`, apcore-mcp exposes the
|
|
19
|
+
* `__apcore_module_preview` meta-tool and gates high-risk calls behind its
|
|
20
|
+
* elicitation-based approval flow — both driven entirely by this method.
|
|
21
|
+
*
|
|
22
|
+
* @returns A PreflightResult describing whether the call is valid, whether it
|
|
23
|
+
* requires human approval, and a structured prediction of its changes.
|
|
24
|
+
*/
|
|
25
|
+
validate(moduleId: string, inputs: Record<string, unknown>): Promise<PreflightResult>;
|
|
26
|
+
/**
|
|
27
|
+
* Preflight — apcore-js API-parity alias for {@link validate}. Validates the
|
|
28
|
+
* call without side effects and returns the same PreflightResult.
|
|
29
|
+
*/
|
|
30
|
+
preflight(moduleId: string, inputs: Record<string, unknown>): Promise<PreflightResult>;
|
|
31
|
+
/**
|
|
32
|
+
* Run the same input validation that call() performs, but without executing
|
|
33
|
+
* the command. Returns a structured error record when inputs are invalid,
|
|
34
|
+
* or null when they pass.
|
|
35
|
+
*/
|
|
36
|
+
private dryValidateInputs;
|
|
37
|
+
/** Validate required inputs for the built-in query commands. */
|
|
38
|
+
private validateQueryInputs;
|
|
39
|
+
/**
|
|
40
|
+
* Produce a structured prediction of the side effects a command would have,
|
|
41
|
+
* per the apcore preview contract. Only destructive and content-mutating
|
|
42
|
+
* commands report changes; read-only, formatting, and selection commands
|
|
43
|
+
* return an empty list.
|
|
44
|
+
*/
|
|
45
|
+
private predictChanges;
|
|
46
|
+
/** Truncated snapshot of the editor's current HTML, for change previews. */
|
|
47
|
+
private snapshot;
|
|
48
|
+
/** Coerce a value to a length-bounded preview string. */
|
|
49
|
+
private truncate;
|
|
13
50
|
private extractCategory;
|
|
14
51
|
private extractCommandName;
|
|
15
52
|
private executeQuery;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TiptapExecutor.d.ts","sourceRoot":"","sources":["../../src/runtime/TiptapExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAa,MAAM,aAAa,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"TiptapExecutor.d.ts","sourceRoot":"","sources":["../../src/runtime/TiptapExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAa,MAAM,aAAa,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,WAAW,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAOnD,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AA4DzD,qBAAa,cAAe,YAAW,QAAQ;IAC7C,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,YAAY,CAAyC;gBAG3D,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,QAAQ,EAClB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM;IAQnC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAuBzF,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIpG;;;;;;;;;;OAUG;IACG,QAAQ,CACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,eAAe,CAAC;IAqD3B;;;OAGG;IACG,SAAS,CACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,eAAe,CAAC;IAI3B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IA4BzB,gEAAgE;IAChE,OAAO,CAAC,mBAAmB;IAgB3B;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IA0EtB,4EAA4E;IAC5E,OAAO,CAAC,QAAQ;IAIhB,yDAAyD;IACzD,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,YAAY;IAmDpB,OAAO,CAAC,cAAc;IAyCtB,OAAO,CAAC,gBAAgB;IAsCxB,OAAO,CAAC,SAAS;CAiHlB"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { TiptapModuleError, ErrorCodes } from "../errors/index.js";
|
|
2
|
+
/** Max length of a content snapshot / preview string embedded in a Change. */
|
|
3
|
+
const MAX_PREVIEW_LEN = 500;
|
|
2
4
|
// ── URL safety (C-1) ──────────────────────────────────────────────
|
|
3
5
|
const SAFE_PROTOCOLS = /^(https?|mailto|tel):/i;
|
|
4
6
|
const SAFE_RELATIVE = /^[/#?]/;
|
|
@@ -66,6 +68,201 @@ export class TiptapExecutor {
|
|
|
66
68
|
async callAsync(moduleId, inputs) {
|
|
67
69
|
return this.call(moduleId, inputs);
|
|
68
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Validate inputs and predict effects WITHOUT executing the command.
|
|
73
|
+
*
|
|
74
|
+
* Implements the apcore Executor `validate()` contract (PROTOCOL_SPEC §5.6).
|
|
75
|
+
* When this executor is passed to `serve()`, apcore-mcp exposes the
|
|
76
|
+
* `__apcore_module_preview` meta-tool and gates high-risk calls behind its
|
|
77
|
+
* elicitation-based approval flow — both driven entirely by this method.
|
|
78
|
+
*
|
|
79
|
+
* @returns A PreflightResult describing whether the call is valid, whether it
|
|
80
|
+
* requires human approval, and a structured prediction of its changes.
|
|
81
|
+
*/
|
|
82
|
+
async validate(moduleId, inputs) {
|
|
83
|
+
const checks = [];
|
|
84
|
+
const errors = [];
|
|
85
|
+
// 1. Editor readiness
|
|
86
|
+
if (this.editor.isDestroyed) {
|
|
87
|
+
checks.push({ check: "editor_ready", passed: false, error: { editorDestroyed: true } });
|
|
88
|
+
errors.push({ code: ErrorCodes.EDITOR_NOT_READY, message: "Editor is not ready" });
|
|
89
|
+
return { valid: false, checks, requiresApproval: false, errors };
|
|
90
|
+
}
|
|
91
|
+
checks.push({ check: "editor_ready", passed: true });
|
|
92
|
+
// 2. Module resolution
|
|
93
|
+
const descriptor = this.registry.getDefinition(moduleId);
|
|
94
|
+
if (!descriptor) {
|
|
95
|
+
checks.push({ check: "module_exists", passed: false });
|
|
96
|
+
errors.push({ code: ErrorCodes.MODULE_NOT_FOUND, message: `Module '${moduleId}' not found` });
|
|
97
|
+
return { valid: false, checks, requiresApproval: false, errors };
|
|
98
|
+
}
|
|
99
|
+
checks.push({ check: "module_exists", passed: true });
|
|
100
|
+
// 3. Access control (non-throwing — mirrors the check enforced by call())
|
|
101
|
+
const aclAllowed = this.aclGuard.isAllowed(moduleId, descriptor);
|
|
102
|
+
checks.push({ check: "acl", passed: aclAllowed });
|
|
103
|
+
if (!aclAllowed) {
|
|
104
|
+
errors.push({
|
|
105
|
+
code: ErrorCodes.ACL_DENIED,
|
|
106
|
+
message: `Access denied: module '${moduleId}' is not permitted`,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
// 4. Input validation (dry — reuses the same arg-building logic as call())
|
|
110
|
+
const inputError = this.dryValidateInputs(moduleId, inputs);
|
|
111
|
+
checks.push({ check: "input_schema", passed: inputError == null, error: inputError ?? undefined });
|
|
112
|
+
if (inputError) {
|
|
113
|
+
errors.push(inputError);
|
|
114
|
+
}
|
|
115
|
+
// 5. Approval requirement, sourced from the module's safety annotations
|
|
116
|
+
const requiresApproval = descriptor.annotations?.requiresApproval ?? false;
|
|
117
|
+
// 6. Predicted changes — only meaningful when the call would actually run
|
|
118
|
+
const predictedChanges = errors.length === 0 ? this.predictChanges(moduleId, inputs) : [];
|
|
119
|
+
return {
|
|
120
|
+
valid: errors.length === 0,
|
|
121
|
+
checks,
|
|
122
|
+
requiresApproval,
|
|
123
|
+
errors,
|
|
124
|
+
predictedChanges,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Preflight — apcore-js API-parity alias for {@link validate}. Validates the
|
|
129
|
+
* call without side effects and returns the same PreflightResult.
|
|
130
|
+
*/
|
|
131
|
+
async preflight(moduleId, inputs) {
|
|
132
|
+
return this.validate(moduleId, inputs);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Run the same input validation that call() performs, but without executing
|
|
136
|
+
* the command. Returns a structured error record when inputs are invalid,
|
|
137
|
+
* or null when they pass.
|
|
138
|
+
*/
|
|
139
|
+
dryValidateInputs(moduleId, inputs) {
|
|
140
|
+
const category = this.extractCategory(moduleId);
|
|
141
|
+
const commandName = this.extractCommandName(moduleId);
|
|
142
|
+
try {
|
|
143
|
+
if (category === "query") {
|
|
144
|
+
this.validateQueryInputs(commandName, inputs, moduleId);
|
|
145
|
+
}
|
|
146
|
+
else if (commandName === "selectText") {
|
|
147
|
+
requireString(inputs, "text", moduleId);
|
|
148
|
+
}
|
|
149
|
+
else if (!FORBIDDEN_PROPS.has(commandName)) {
|
|
150
|
+
// buildArgs performs the same required-field and URL-safety checks as
|
|
151
|
+
// call(), and has no side effects, so it doubles as a dry validator.
|
|
152
|
+
this.buildArgs(commandName, inputs, moduleId);
|
|
153
|
+
}
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
catch (err) {
|
|
157
|
+
if (err instanceof TiptapModuleError) {
|
|
158
|
+
return { code: err.code, message: err.message, ...(err.details ?? {}) };
|
|
159
|
+
}
|
|
160
|
+
return {
|
|
161
|
+
code: ErrorCodes.SCHEMA_VALIDATION_ERROR,
|
|
162
|
+
message: err instanceof Error ? err.message : String(err),
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/** Validate required inputs for the built-in query commands. */
|
|
167
|
+
validateQueryInputs(commandName, inputs, moduleId) {
|
|
168
|
+
switch (commandName) {
|
|
169
|
+
case "isActive":
|
|
170
|
+
requireString(inputs, "name", moduleId);
|
|
171
|
+
break;
|
|
172
|
+
case "getAttributes":
|
|
173
|
+
requireString(inputs, "typeOrName", moduleId);
|
|
174
|
+
break;
|
|
175
|
+
// Remaining query commands take no required inputs.
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Produce a structured prediction of the side effects a command would have,
|
|
180
|
+
* per the apcore preview contract. Only destructive and content-mutating
|
|
181
|
+
* commands report changes; read-only, formatting, and selection commands
|
|
182
|
+
* return an empty list.
|
|
183
|
+
*/
|
|
184
|
+
predictChanges(moduleId, inputs) {
|
|
185
|
+
const commandName = this.extractCommandName(moduleId);
|
|
186
|
+
switch (commandName) {
|
|
187
|
+
case "clearContent":
|
|
188
|
+
return [{
|
|
189
|
+
action: "delete",
|
|
190
|
+
target: "editor.content",
|
|
191
|
+
summary: "Clear all editor content",
|
|
192
|
+
before: this.snapshot(),
|
|
193
|
+
}];
|
|
194
|
+
case "setContent":
|
|
195
|
+
return [{
|
|
196
|
+
action: "replace",
|
|
197
|
+
target: "editor.content",
|
|
198
|
+
summary: "Replace all editor content",
|
|
199
|
+
before: this.snapshot(),
|
|
200
|
+
after: this.truncate(inputs.value),
|
|
201
|
+
}];
|
|
202
|
+
case "deleteSelection":
|
|
203
|
+
return [{
|
|
204
|
+
action: "delete",
|
|
205
|
+
target: "editor.selection",
|
|
206
|
+
summary: "Delete the current text selection",
|
|
207
|
+
}];
|
|
208
|
+
case "deleteRange":
|
|
209
|
+
return [{
|
|
210
|
+
action: "delete",
|
|
211
|
+
target: `editor.range[${inputs.from}..${inputs.to}]`,
|
|
212
|
+
summary: `Delete the document range from ${inputs.from} to ${inputs.to}`,
|
|
213
|
+
}];
|
|
214
|
+
case "deleteCurrentNode":
|
|
215
|
+
return [{
|
|
216
|
+
action: "delete",
|
|
217
|
+
target: "editor.currentNode",
|
|
218
|
+
summary: "Delete the node at the current cursor position",
|
|
219
|
+
}];
|
|
220
|
+
case "cut":
|
|
221
|
+
return [{
|
|
222
|
+
action: "delete",
|
|
223
|
+
target: "editor.selection",
|
|
224
|
+
summary: "Cut (remove) the current selection",
|
|
225
|
+
}];
|
|
226
|
+
case "deleteNode":
|
|
227
|
+
return [{
|
|
228
|
+
action: "delete",
|
|
229
|
+
target: `editor.node[${String(inputs.typeOrName)}]`,
|
|
230
|
+
summary: `Delete the nearest '${String(inputs.typeOrName)}' node`,
|
|
231
|
+
}];
|
|
232
|
+
case "insertContent":
|
|
233
|
+
return [{
|
|
234
|
+
action: "insert",
|
|
235
|
+
target: "editor.selection",
|
|
236
|
+
summary: "Insert content at the cursor",
|
|
237
|
+
after: this.truncate(inputs.value),
|
|
238
|
+
}];
|
|
239
|
+
case "insertContentAt":
|
|
240
|
+
return [{
|
|
241
|
+
action: "insert",
|
|
242
|
+
target: `editor.position[${inputs.position}]`,
|
|
243
|
+
summary: `Insert content at position ${inputs.position}`,
|
|
244
|
+
after: this.truncate(inputs.value),
|
|
245
|
+
}];
|
|
246
|
+
case "setLink":
|
|
247
|
+
return [{
|
|
248
|
+
action: "write",
|
|
249
|
+
target: "editor.selection",
|
|
250
|
+
summary: `Set link href to '${String(inputs.href)}'`,
|
|
251
|
+
after: inputs.href,
|
|
252
|
+
}];
|
|
253
|
+
default:
|
|
254
|
+
return [];
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
/** Truncated snapshot of the editor's current HTML, for change previews. */
|
|
258
|
+
snapshot() {
|
|
259
|
+
return this.truncate(this.editor.getHTML());
|
|
260
|
+
}
|
|
261
|
+
/** Coerce a value to a length-bounded preview string. */
|
|
262
|
+
truncate(value) {
|
|
263
|
+
const str = typeof value === "string" ? value : JSON.stringify(value ?? null);
|
|
264
|
+
return str.length > MAX_PREVIEW_LEN ? `${str.slice(0, MAX_PREVIEW_LEN)}...` : str;
|
|
265
|
+
}
|
|
69
266
|
extractCategory(moduleId) {
|
|
70
267
|
// "tiptap.format.toggleBold" → "format"
|
|
71
268
|
const parts = moduleId.split(".");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TiptapExecutor.js","sourceRoot":"","sources":["../../src/runtime/TiptapExecutor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TiptapExecutor.js","sourceRoot":"","sources":["../../src/runtime/TiptapExecutor.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEnE,8EAA8E;AAC9E,MAAM,eAAe,GAAG,GAAG,CAAC;AAK5B,qEAAqE;AAErE,MAAM,cAAc,GAAG,wBAAwB,CAAC;AAChD,MAAM,aAAa,GAAG,QAAQ,CAAC;AAE/B,SAAS,SAAS,CAAC,GAAY;IAC7B,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC1C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrE,CAAC;AAED,qEAAqE;AAErE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,WAAW;IACX,aAAa;IACb,WAAW;IACX,UAAU;IACV,SAAS;IACT,gBAAgB;CACjB,CAAC,CAAC;AAEH,qEAAqE;AAErE,SAAS,aAAa,CACpB,MAA+B,EAC/B,KAAa,EACb,QAAgB;IAEhB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,iBAAiB,CACzB,UAAU,CAAC,uBAAuB,EAClC,IAAI,KAAK,8BAA8B,EACvC,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,aAAa,CACpB,MAA+B,EAC/B,KAAa,EACb,QAAgB;IAEhB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,iBAAiB,CACzB,UAAU,CAAC,uBAAuB,EAClC,IAAI,KAAK,2BAA2B,EACpC,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,qEAAqE;AAErE,MAAM,OAAO,cAAc;IAChB,QAAQ,CAAiB;IAC1B,MAAM,CAAa;IACnB,QAAQ,CAAW;IACnB,YAAY,CAAyC;IAE7D,YACE,MAAkB,EAClB,QAAwB,EACxB,QAAkB,EAClB,YAAuC;QAEvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAgB,EAAE,MAA+B;QAC1D,wBAAwB;QACxB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5B,MAAM,IAAI,iBAAiB,CAAC,UAAU,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7G,CAAC;QAED,wBAAwB;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,iBAAiB,CAAC,UAAU,CAAC,gBAAgB,EAAE,WAAW,QAAQ,aAAa,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3G,CAAC;QAED,mCAAmC;QACnC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAE1C,sBAAsB;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAgB,EAAE,MAA+B;QAC/D,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,QAAQ,CACZ,QAAgB,EAChB,MAA+B;QAE/B,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAmC,EAAE,CAAC;QAElD,sBAAsB;QACtB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;YACxF,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,gBAAgB,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC;YACnF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACnE,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAErD,uBAAuB;QACvB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YACvD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,gBAAgB,EAAE,OAAO,EAAE,WAAW,QAAQ,aAAa,EAAE,CAAC,CAAC;YAC9F,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACnE,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAEtD,0EAA0E;QAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,UAAU,CAAC,UAAU;gBAC3B,OAAO,EAAE,0BAA0B,QAAQ,oBAAoB;aAChE,CAAC,CAAC;QACL,CAAC;QAED,2EAA2E;QAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5D,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,IAAI,IAAI,EAAE,KAAK,EAAE,UAAU,IAAI,SAAS,EAAE,CAAC,CAAC;QACnG,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1B,CAAC;QAED,wEAAwE;QACxE,MAAM,gBAAgB,GAAG,UAAU,CAAC,WAAW,EAAE,gBAAgB,IAAI,KAAK,CAAC;QAE3E,0EAA0E;QAC1E,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE1F,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;YAC1B,MAAM;YACN,gBAAgB;YAChB,MAAM;YACN,gBAAgB;SACjB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CACb,QAAgB,EAChB,MAA+B;QAE/B,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACK,iBAAiB,CACvB,QAAgB,EAChB,MAA+B;QAE/B,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,CAAC;YACH,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACzB,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC1D,CAAC;iBAAM,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;gBACxC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC1C,CAAC;iBAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC7C,sEAAsE;gBACtE,qEAAqE;gBACrE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAChD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,iBAAiB,EAAE,CAAC;gBACrC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;YAC1E,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,UAAU,CAAC,uBAAuB;gBACxC,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aAC1D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,gEAAgE;IACxD,mBAAmB,CACzB,WAAmB,EACnB,MAA+B,EAC/B,QAAgB;QAEhB,QAAQ,WAAW,EAAE,CAAC;YACpB,KAAK,UAAU;gBACb,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;gBACxC,MAAM;YACR,KAAK,eAAe;gBAClB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;gBAC9C,MAAM;YACR,oDAAoD;QACtD,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,cAAc,CAAC,QAAgB,EAAE,MAA+B;QACtE,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACtD,QAAQ,WAAW,EAAE,CAAC;YACpB,KAAK,cAAc;gBACjB,OAAO,CAAC;wBACN,MAAM,EAAE,QAAQ;wBAChB,MAAM,EAAE,gBAAgB;wBACxB,OAAO,EAAE,0BAA0B;wBACnC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE;qBACxB,CAAC,CAAC;YACL,KAAK,YAAY;gBACf,OAAO,CAAC;wBACN,MAAM,EAAE,SAAS;wBACjB,MAAM,EAAE,gBAAgB;wBACxB,OAAO,EAAE,4BAA4B;wBACrC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE;wBACvB,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;qBACnC,CAAC,CAAC;YACL,KAAK,iBAAiB;gBACpB,OAAO,CAAC;wBACN,MAAM,EAAE,QAAQ;wBAChB,MAAM,EAAE,kBAAkB;wBAC1B,OAAO,EAAE,mCAAmC;qBAC7C,CAAC,CAAC;YACL,KAAK,aAAa;gBAChB,OAAO,CAAC;wBACN,MAAM,EAAE,QAAQ;wBAChB,MAAM,EAAE,gBAAgB,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,GAAG;wBACpD,OAAO,EAAE,kCAAkC,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,EAAE,EAAE;qBACzE,CAAC,CAAC;YACL,KAAK,mBAAmB;gBACtB,OAAO,CAAC;wBACN,MAAM,EAAE,QAAQ;wBAChB,MAAM,EAAE,oBAAoB;wBAC5B,OAAO,EAAE,gDAAgD;qBAC1D,CAAC,CAAC;YACL,KAAK,KAAK;gBACR,OAAO,CAAC;wBACN,MAAM,EAAE,QAAQ;wBAChB,MAAM,EAAE,kBAAkB;wBAC1B,OAAO,EAAE,oCAAoC;qBAC9C,CAAC,CAAC;YACL,KAAK,YAAY;gBACf,OAAO,CAAC;wBACN,MAAM,EAAE,QAAQ;wBAChB,MAAM,EAAE,eAAe,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG;wBACnD,OAAO,EAAE,uBAAuB,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ;qBAClE,CAAC,CAAC;YACL,KAAK,eAAe;gBAClB,OAAO,CAAC;wBACN,MAAM,EAAE,QAAQ;wBAChB,MAAM,EAAE,kBAAkB;wBAC1B,OAAO,EAAE,8BAA8B;wBACvC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;qBACnC,CAAC,CAAC;YACL,KAAK,iBAAiB;gBACpB,OAAO,CAAC;wBACN,MAAM,EAAE,QAAQ;wBAChB,MAAM,EAAE,mBAAmB,MAAM,CAAC,QAAQ,GAAG;wBAC7C,OAAO,EAAE,8BAA8B,MAAM,CAAC,QAAQ,EAAE;wBACxD,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;qBACnC,CAAC,CAAC;YACL,KAAK,SAAS;gBACZ,OAAO,CAAC;wBACN,MAAM,EAAE,OAAO;wBACf,MAAM,EAAE,kBAAkB;wBAC1B,OAAO,EAAE,qBAAqB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG;wBACpD,KAAK,EAAE,MAAM,CAAC,IAAI;qBACnB,CAAC,CAAC;YACL;gBACE,OAAO,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IAED,4EAA4E;IACpE,QAAQ;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,yDAAyD;IACjD,QAAQ,CAAC,KAAc;QAC7B,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;QAC9E,OAAO,GAAG,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;IACpF,CAAC;IAEO,eAAe,CAAC,QAAgB;QACtC,wCAAwC;QACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClD,CAAC;IAEO,kBAAkB,CAAC,QAAgB;QACzC,4CAA4C;QAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACjD,CAAC;IAEO,YAAY,CAAC,QAAgB,EAAE,MAA+B;QACpE,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAEtD,QAAQ,WAAW,EAAE,CAAC;YACpB,KAAK,SAAS;gBACZ,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YACzC,KAAK,SAAS;gBACZ,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YACzC,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,OAAO,GAAgC,EAAE,CAAC;gBAChD,IAAI,OAAO,MAAM,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;oBAC9C,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;gBACjD,CAAC;gBACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAChD,CAAC;YACD,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;gBACrD,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAC,KAAiC,IAAI,EAAE,CAAC,EAAE,CAAC;YACjG,CAAC;YACD,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;gBACjE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/D,CAAC;YACD,KAAK,SAAS;gBACZ,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxC,KAAK,YAAY;gBACf,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC3C,KAAK,WAAW;gBACd,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC1C,KAAK,mBAAmB,CAAC,CAAC,CAAC;gBACzB,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC;gBAC/C,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;oBAC/C,MAAM,IAAI,iBAAiB,CAAC,UAAU,CAAC,iBAAiB,EACtD,yCAAyC,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;gBAC1E,CAAC;gBACD,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,EAAY,EAAE,CAAC;YAC9C,CAAC;YACD,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC;gBAC/C,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;oBAC1C,MAAM,IAAI,iBAAiB,CAAC,UAAU,CAAC,iBAAiB,EACtD,yCAAyC,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;gBAC1E,CAAC;gBACD,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAY,EAAE,CAAC;YACzC,CAAC;YACD;gBACE,MAAM,IAAI,iBAAiB,CAAC,UAAU,CAAC,iBAAiB,EACtD,YAAY,WAAW,2BAA2B,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,QAAgB,EAAE,MAA+B;QACtE,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAEtD,6DAA6D;QAC7D,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACjD,CAAC;QAED,2DAA2D;QAC3D,IAAI,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,iBAAiB,CAAC,UAAU,CAAC,iBAAiB,EACtD,YAAY,WAAW,kBAAkB,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,mEAAmE;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;QAErC,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;YACpC,MAAM,IAAI,iBAAiB,CAAC,UAAU,CAAC,iBAAiB,EACtD,YAAY,WAAW,2BAA2B,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;QACnF,CAAC;QAED,0CAA0C;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAElC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,wEAAwE;YACxE,uEAAuE;YACvE,IAAI,WAAW,KAAK,MAAM,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;gBACrD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,WAAW,EAAE,EAAE,CAAC;YACjE,CAAC;YACD,MAAM,IAAI,iBAAiB,CAAC,UAAU,CAAC,cAAc,EACnD,YAAY,WAAW,UAAU,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAEO,gBAAgB,CAAC,MAA+B,EAAE,QAAgB;QACxE,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE9F,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;QAClC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;QACnB,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;QAEjB,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YAC5B,IAAI,SAAS,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAC;YACjC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC7B,IAAI,UAAU,GAAG,CAAC,CAAC;gBACnB,OAAO,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACrC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;oBAChD,IAAI,GAAG,KAAK,CAAC,CAAC;wBAAE,MAAM;oBACtB,KAAK,EAAE,CAAC;oBACR,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;wBACzB,SAAS,GAAG,GAAG,GAAG,GAAG,CAAC;wBACtB,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;wBAClC,OAAO,KAAK,CAAC;oBACf,CAAC;oBACD,UAAU,GAAG,GAAG,GAAG,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC1B,CAAC;QAED,2CAA2C;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;QAC1C,KAAK,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;QAE/D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;IACvD,CAAC;IAEO,SAAS,CAAC,WAAmB,EAAE,MAA+B,EAAE,QAAgB;QACtF,gFAAgF;QAChF,iCAAiC;QACjC,QAAQ,WAAW,EAAE,CAAC;YACpB,wBAAwB;YACxB,KAAK,YAAY,CAAC;YAAC,KAAK,cAAc,CAAC;YAAC,KAAK,cAAc,CAAC;YAAC,KAAK,YAAY,CAAC;YAC/E,KAAK,iBAAiB,CAAC;YAAC,KAAK,iBAAiB,CAAC;YAAC,KAAK,mBAAmB,CAAC;YACzE,KAAK,kBAAkB,CAAC;YAAC,KAAK,mBAAmB,CAAC;YAAC,KAAK,gBAAgB,CAAC;YACzE,KAAK,kBAAkB,CAAC;YAAC,KAAK,eAAe,CAAC;YAAC,KAAK,YAAY,CAAC;YACjE,KAAK,cAAc,CAAC;YAAC,KAAK,mBAAmB,CAAC;YAAC,KAAK,WAAW,CAAC;YAChE,KAAK,WAAW,CAAC;YAAC,KAAK,kBAAkB,CAAC;YAAC,KAAK,sBAAsB,CAAC;YACvE,KAAK,oBAAoB,CAAC;YAAC,KAAK,MAAM,CAAC;YAAC,KAAK,gBAAgB,CAAC;YAC9D,KAAK,MAAM,CAAC;YAAC,KAAK,MAAM,CAAC;YAAC,KAAK,iBAAiB,CAAC;YAAC,KAAK,mBAAmB,CAAC;YAC3E,KAAK,KAAK,CAAC;YAAC,KAAK,cAAc,CAAC;YAAC,KAAK,aAAa,CAAC;YACpD,KAAK,SAAS,CAAC;YAAC,KAAK,WAAW,CAAC;YAAC,KAAK,WAAW,CAAC;YAAC,KAAK,aAAa,CAAC;YACvE,KAAK,WAAW,CAAC;YAAC,KAAK,aAAa,CAAC;YAAC,KAAK,SAAS,CAAC;YAAC,KAAK,WAAW,CAAC;YACvE,KAAK,eAAe,CAAC;YAAC,KAAK,iBAAiB,CAAC;YAAC,KAAK,cAAc,CAAC;YAClE,KAAK,UAAU;gBACb,OAAO,EAAE,CAAC;YAEZ,KAAK,YAAY;gBACf,OAAO,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAEjF,kCAAkC;YAClC,KAAK,eAAe;gBAClB,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACnC,KAAK,YAAY;gBACf,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACnC,KAAK,iBAAiB;gBACpB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,KAAK,iBAAiB;gBACpB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,KAAK,cAAc;gBACjB,OAAO,CAAC,MAAM,CAAC,SAAmB,CAAC,CAAC;YACtC,KAAK,SAAS;gBACZ,OAAO,CAAC,MAAM,CAAC,UAAoB,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC3D,KAAK,WAAW;gBACd,OAAO,CAAC,MAAM,CAAC,UAAoB,CAAC,CAAC;YACvC,KAAK,kBAAkB;gBACrB,OAAO,CAAC,MAAM,CAAC,UAAoB,EAAE,MAAM,CAAC,KAAgC,CAAC,CAAC;YAChF,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,+BAA+B;gBAC/B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5B,MAAM,IAAI,iBAAiB,CAAC,UAAU,CAAC,uBAAuB,EAC5D,gCAAgC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;gBACzD,CAAC;gBACD,MAAM,SAAS,GAA4B,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjE,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;oBAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;gBAClE,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS;oBAAE,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;gBACzD,OAAO,CAAC,SAAS,CAAC,CAAC;YACrB,CAAC;YAED,wCAAwC;YACxC,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBACnD,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBACnC,CAAC;gBACD,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YACvC,CAAC;YACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACvB,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;gBAC7D,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBACnD,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBACnC,CAAC;gBACD,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YACjD,CAAC;YACD,KAAK,SAAS;gBACZ,OAAO,CAAC,MAAM,CAAC,UAAoB,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC3D,KAAK,cAAc,CAAC;YAAC,KAAK,cAAc;gBACtC,OAAO,CAAC,MAAM,CAAC,UAAoB,CAAC,CAAC;YACvC,KAAK,QAAQ;gBACX,OAAO,CAAC,MAAM,CAAC,UAAoB,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC3D,KAAK,MAAM;gBACT,OAAO,CAAC,MAAM,CAAC,UAAoB,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC3D,KAAK,eAAe;gBAClB,OAAO,CAAC,MAAM,CAAC,UAAoB,EAAE,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;YACnE,KAAK,YAAY;gBACf,OAAO,CAAC,MAAM,CAAC,UAAoB,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;YAChE,KAAK,YAAY;gBACf,OAAO,CAAC,MAAM,CAAC,cAAwB,EAAE,MAAM,CAAC,cAAwB,EAAE,MAAM,CAAC,SAAS,IAAI,KAAK,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;YAChI,KAAK,YAAY;gBACf,OAAO,CAAC,MAAM,CAAC,UAAoB,CAAC,CAAC;YAEvC,uBAAuB;YACvB,KAAK,cAAc;gBACjB,OAAO,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,IAAI,KAAK,GAAG,MAAM,CAAC,KAAe,CAAC;gBACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBACnD,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBACnC,CAAC;gBACD,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;YACvE,CAAC;YACD,KAAK,aAAa;gBAChB,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YAEhD,qBAAqB;YACrB,KAAK,kBAAkB;gBACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC3B,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;gBAC7D,OAAO,CAAC,QAAQ,CAAC,CAAC;YACpB,CAAC;YACD,KAAK,OAAO;gBACV,OAAO,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAEhE;gBACE,yDAAyD;gBACzD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,11 +1,21 @@
|
|
|
1
|
-
import type { AclConfig, Logger, ModuleDescriptor } from "../types.js";
|
|
1
|
+
import type { AclConfig, Logger, ModuleDescriptor, AuditLogger } from "../types.js";
|
|
2
2
|
export declare class AclGuard {
|
|
3
3
|
private config;
|
|
4
4
|
private logger;
|
|
5
|
-
|
|
5
|
+
private auditLogger;
|
|
6
|
+
constructor(config?: AclConfig, logger?: Logger, auditLogger?: AuditLogger);
|
|
6
7
|
/** Update ACL configuration at runtime */
|
|
7
8
|
updateConfig(config: AclConfig | undefined): void;
|
|
8
9
|
check(moduleId: string, descriptor: ModuleDescriptor): void;
|
|
10
|
+
/**
|
|
11
|
+
* Append an ACL decision to the structured audit log, when configured.
|
|
12
|
+
*
|
|
13
|
+
* Emits an apcore-js `AuditEntry` (cross-ecosystem wire shape) with the
|
|
14
|
+
* TipTap module ID as the `targetId`. Fields that have no meaning in the
|
|
15
|
+
* editor domain (caller identity, named rules, trace/call-depth) are left
|
|
16
|
+
* empty/null per the entry contract.
|
|
17
|
+
*/
|
|
18
|
+
private audit;
|
|
9
19
|
isAllowed(moduleId: string, descriptor: ModuleDescriptor): boolean;
|
|
10
20
|
private getDenialReason;
|
|
11
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AclGuard.d.ts","sourceRoot":"","sources":["../../src/security/AclGuard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"AclGuard.d.ts","sourceRoot":"","sources":["../../src/security/AclGuard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AASpF,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,WAAW,CAA0B;gBAEjC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW;IAM1E,0CAA0C;IAC1C,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI;IAKjD,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,GAAG,IAAI;IAiB3D;;;;;;;OAOG;IACH,OAAO,CAAC,KAAK;IAsBb,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,GAAG,OAAO;IAwClE,OAAO,CAAC,eAAe;CAgDxB"}
|
|
@@ -7,9 +7,11 @@ const ROLE_TAGS = {
|
|
|
7
7
|
export class AclGuard {
|
|
8
8
|
config;
|
|
9
9
|
logger;
|
|
10
|
-
|
|
10
|
+
auditLogger;
|
|
11
|
+
constructor(config, logger, auditLogger) {
|
|
11
12
|
this.config = config;
|
|
12
13
|
this.logger = logger;
|
|
14
|
+
this.auditLogger = auditLogger;
|
|
13
15
|
}
|
|
14
16
|
/** Update ACL configuration at runtime */
|
|
15
17
|
updateConfig(config) {
|
|
@@ -17,12 +19,41 @@ export class AclGuard {
|
|
|
17
19
|
this.logger?.info?.("ACL configuration updated", { role: config?.role });
|
|
18
20
|
}
|
|
19
21
|
check(moduleId, descriptor) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
const allowed = this.isAllowed(moduleId, descriptor);
|
|
23
|
+
const reason = allowed ? undefined : this.getDenialReason(moduleId, descriptor);
|
|
24
|
+
// Record the enforcement decision in the structured audit trail (if any).
|
|
25
|
+
this.audit(moduleId, allowed ? "allow" : "deny", reason);
|
|
26
|
+
if (!allowed) {
|
|
22
27
|
this.logger?.warn(`ACL denied: ${moduleId}`, { reason });
|
|
23
28
|
throw new TiptapModuleError(ErrorCodes.ACL_DENIED, `Access denied: module '${moduleId}' is not permitted`, { moduleId });
|
|
24
29
|
}
|
|
25
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Append an ACL decision to the structured audit log, when configured.
|
|
33
|
+
*
|
|
34
|
+
* Emits an apcore-js `AuditEntry` (cross-ecosystem wire shape) with the
|
|
35
|
+
* TipTap module ID as the `targetId`. Fields that have no meaning in the
|
|
36
|
+
* editor domain (caller identity, named rules, trace/call-depth) are left
|
|
37
|
+
* empty/null per the entry contract.
|
|
38
|
+
*/
|
|
39
|
+
audit(moduleId, decision, reason) {
|
|
40
|
+
if (!this.auditLogger)
|
|
41
|
+
return;
|
|
42
|
+
this.auditLogger({
|
|
43
|
+
timestamp: new Date().toISOString(),
|
|
44
|
+
callerId: "",
|
|
45
|
+
targetId: moduleId,
|
|
46
|
+
decision,
|
|
47
|
+
reason: reason ?? "",
|
|
48
|
+
matchedRule: null,
|
|
49
|
+
matchedRuleIndex: null,
|
|
50
|
+
identityType: null,
|
|
51
|
+
roles: this.config?.role ? [this.config.role] : [],
|
|
52
|
+
callDepth: null,
|
|
53
|
+
traceId: null,
|
|
54
|
+
handlerError: null,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
26
57
|
isAllowed(moduleId, descriptor) {
|
|
27
58
|
// No ACL config = all allowed (opt-in security)
|
|
28
59
|
if (!this.config)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AclGuard.js","sourceRoot":"","sources":["../../src/security/AclGuard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEnE,MAAM,SAAS,GAA6B;IAC1C,QAAQ,EAAE,CAAC,OAAO,CAAC;IACnB,MAAM,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC;IAC9D,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,CAAC;CAC7E,CAAC;AAEF,MAAM,OAAO,QAAQ;IACX,MAAM,CAAwB;IAC9B,MAAM,CAAqB;
|
|
1
|
+
{"version":3,"file":"AclGuard.js","sourceRoot":"","sources":["../../src/security/AclGuard.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -6,6 +6,9 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export type { Registry, Executor, ModuleDescriptor, ModuleAnnotations, JsonSchema, } from "apcore-mcp";
|
|
8
8
|
import type { ModuleAnnotations, JsonSchema } from "apcore-mcp";
|
|
9
|
+
import type { AuditLogger } from "apcore-js";
|
|
10
|
+
/** Structured ACL audit logger, re-exported from apcore-js. */
|
|
11
|
+
export type { AuditLogger, AuditEntry } from "apcore-js";
|
|
9
12
|
/** Minimal logger interface for diagnostic output */
|
|
10
13
|
export interface Logger {
|
|
11
14
|
info?(msg: string, ctx?: Record<string, unknown>): void;
|
|
@@ -86,6 +89,13 @@ export interface ApcoreOptions {
|
|
|
86
89
|
logger?: Logger;
|
|
87
90
|
/** Optional HTML sanitizer applied to insertContent/setContent values */
|
|
88
91
|
sanitizeHtml?: (html: string) => string;
|
|
92
|
+
/**
|
|
93
|
+
* Structured audit logging for ACL decisions. Pass `true` to record every
|
|
94
|
+
* allow/deny decision in an in-memory apcore-js audit log (queryable via
|
|
95
|
+
* {@link TiptapAPCore.getAuditLog}), or supply your own {@link AuditLogger}.
|
|
96
|
+
* Defaults to disabled.
|
|
97
|
+
*/
|
|
98
|
+
audit?: boolean | AuditLogger;
|
|
89
99
|
}
|
|
90
100
|
/** Return value of withApcore() */
|
|
91
101
|
export interface ApcoreResult {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EACV,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,GACX,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tiptap-apcore",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "TipTap editor APCore modules - let AI safely control your TipTap editor",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -29,16 +29,16 @@
|
|
|
29
29
|
},
|
|
30
30
|
"peerDependencies": {
|
|
31
31
|
"@tiptap/core": "^2.0.0",
|
|
32
|
-
"apcore-js": "
|
|
33
|
-
"apcore-mcp": "^0.
|
|
32
|
+
"apcore-js": ">=0.25.0",
|
|
33
|
+
"apcore-mcp": "^0.17.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@tiptap/core": "^2.10.0",
|
|
37
37
|
"@tiptap/pm": "^2.10.0",
|
|
38
38
|
"@tiptap/starter-kit": "^2.10.0",
|
|
39
39
|
"@vitest/coverage-v8": "^3.0.0",
|
|
40
|
-
"apcore-js": "^0.
|
|
41
|
-
"apcore-mcp": "^0.
|
|
40
|
+
"apcore-js": "^0.25.0",
|
|
41
|
+
"apcore-mcp": "^0.17.0",
|
|
42
42
|
"apdev-js": "^0.2.2",
|
|
43
43
|
"jsdom": "^25.0.0",
|
|
44
44
|
"typescript": "^5.5.0",
|
|
@@ -67,13 +67,13 @@
|
|
|
67
67
|
"rich-text",
|
|
68
68
|
"prosemirror"
|
|
69
69
|
],
|
|
70
|
-
"author": "
|
|
71
|
-
"homepage": "https://
|
|
70
|
+
"author": "aiperceivable",
|
|
71
|
+
"homepage": "https://aiperceivable.com",
|
|
72
72
|
"repository": {
|
|
73
73
|
"type": "git",
|
|
74
|
-
"url": "https://github.com/
|
|
74
|
+
"url": "https://github.com/aiperceivable/tiptap-apcore.git"
|
|
75
75
|
},
|
|
76
76
|
"bugs": {
|
|
77
|
-
"url": "https://github.com/
|
|
77
|
+
"url": "https://github.com/aiperceivable/tiptap-apcore/issues"
|
|
78
78
|
}
|
|
79
79
|
}
|