@eigenpal/docx-editor-agents/bridge
Editor bridge that connects agent tools to a live `DocxEditor` instance. Framework-agnostic. The React adapter lives in `@eigenpal/docx-editor-agents/react`.
Functions(4)
createEditorBridge
Create an EditorBridge from a DocxEditorRef.
declare function createEditorBridge(editorRef: EditorRefLike, author?: string): EditorBridge;createReviewerBridge
Create an EditorBridge backed by a DocxReviewer. The agent (or MCP client) can read, comment, propose changes, etc., against a parsed DOCX file on disk. Call `reviewer.toBuffer()` afterwards to get the modified DOCX.
declare function createReviewerBridge(reviewer: DocxReviewer): EditorBridge;executeToolCall
Execute a tool call against an EditorBridge. Returns the result (never throws).
declare function executeToolCall(toolName: string, input: Record<string, unknown>, bridge: EditorBridge): AgentToolResult;getToolSchemas
Get tool schemas in OpenAI function-calling format. Works directly with the OpenAI SDK and Anthropic's tools API. For Vercel AI SDK, LangChain, or other agent runtimes, transform this output to that runtime's required shape — see `examples/agent-chat-demo/` for a Vercel AI SDK example. The package stays runtime-agnostic.
declare function getToolSchemas(): {
type: "function";
function: {
name: string;
description: string;
parameters: Record<string, unknown>;
};
}[];Interfaces(5)
AgentToolDefinition
Definition of an agent tool — name, JSON-schema input, handler. Use this to build custom tools alongside the built-in `agentTools`.
interface AgentToolDefinition<TInput = Record<string, unknown>>| Member | Type | Summary |
|---|---|---|
| description | string | Human-readable description for the LLM |
| displayName? | string | Friendly UI label for the tool. Shown in the agent panel's timeline (e.g. "Reading document"). Falls back to a sentence-case version of `name` if omitted, so consumer-defined tools render readably without specifying this. |
| handler | (input: TInput, bridge: EditorBridge) => AgentToolResult | Handler — receives parsed input + bridge, returns result |
| inputSchema | Record<string, unknown> | JSON Schema for the input parameters |
| name | string | Tool name (used in tool_use blocks) |
AgentToolResult
Result returned by a tool handler. `success: false` carries an `error` message; `success: true` may carry tool-specific `data`.
interface AgentToolResult| Member | Type | Summary |
|---|---|---|
| data? | unknown | |
| error? | string | |
| success | boolean |
ContentChangeEvent
Event payload for `onContentChange`.
interface ContentChangeEvent| Member | Type | Summary |
|---|---|---|
| changeCount | number | Total tracked changes after the change. |
| changes | ReviewChange[] | Snapshot of all current tracked changes. |
| commentCount | number | Total comments in the document after the change. |
| comments | ReviewComment[] | Snapshot of all current comments. |
EditorBridge
High-level agent surface over a live editor (or a headless reviewer). Every built-in tool calls into this contract — implement it once and the agent toolkit works against your editor.
interface EditorBridge| Member | Type | Summary |
|---|---|---|
| addComment | — | Add a comment, anchored to a paragraph by paraId. |
| applyFormatting | — | Apply character formatting (bold / italic / color / size / font / etc.) to a paragraph, or to a unique phrase within it. This is a direct edit — not a tracked change. |
| findText | — | Locate text in the document. Returns one handle per matching paragraph. |
| getChanges | — | Get all tracked changes in the document. |
| getComments | — | Get all comments in the document. |
| getContent | — | Get document content as structured blocks (each paragraph carries its `paraId`). |
| getContentAsText | — | Get document content as paraId-tagged text lines for LLM prompts. |
| getCurrentPage | — | 1-indexed page the user's cursor / selection is on. 0 if unknown. |
| getPage | — | Read a single page (1-indexed). Returns null if the page does not exist. |
| getPages | — | Read a range of pages (1-indexed, inclusive). Out-of-range pages are skipped. |
| getSelection | — | Read the user's current cursor / selection. |
| getTotalPages | — | Total number of pages currently rendered in the editor. |
| onContentChange | — | Subscribe to document content changes. Returns an unsubscribe function. |
| onSelectionChange | — | Subscribe to selection changes (cursor moves / selection changes). Returns an unsubscribe function. |
| proposeChange | — | Suggest a tracked change. `replaceWith=''` deletes; `search=''` inserts at paragraph end. |
| replyTo | — | Reply to an existing comment. Returns the reply ID or null. |
| resolveComment | — | Resolve a comment (mark as done). |
| scrollTo | — | Scroll the editor to a paragraph by paraId. |
| setParagraphStyle | — | Apply a paragraph style by styleId (e.g. `'Heading1'`, `'Quote'`). Direct edit, not a tracked change. |
EditorRefLike
Agent-bridge contract every editor adapter (React, Vue, future) MUST satisfy. Versioning: additions are coordinated minor bumps across the fixed group; signature changes / removals are major. See `openspec/changes/vue-editor-robust-implementation/design.md` Decision 18.
interface EditorRefLike| Member | Type | Summary |
|---|---|---|
| addComment | — | |
| applyFormatting | — | Apply character formatting to a paragraph or sub-range. Returns false on missing paraId / ambiguous search. |
| findInDocument | — | |
| getComments | — | |
| getCurrentPage | — | 1-indexed page the user's cursor / selection is on. 0 if unknown. |
| getDocument | — | |
| getEditorRef | — | |
| getPageContent | — | Read a single page's paragraphs (1-indexed). Returns null if the page does not exist. |
| getSelectionInfo | — | |
| getTotalPages | — | Total number of pages currently rendered. |
| onContentChange | — | |
| onSelectionChange | — | |
| proposeChange | — | |
| replyToComment | — | |
| resolveComment | — | |
| scrollToParaId | — | |
| setParagraphStyle | — | Apply a paragraph style by styleId. Returns false if paraId is unknown. |
Type aliases(1)
SelectionChangeEvent
Event payload for `onSelectionChange`.
type SelectionChangeEvent = SelectionInfo | null;Variables(1)
agentTools
All built-in agent tools — read/write document content, comments, and tracked changes. Use `getToolSchemas()` to feed them to an LLM and `executeToolCall()` to run the handlers against an `EditorBridge`.
agentTools: AgentToolDefinition<any>[]