@eigenpal/docx-editor-agents 1.0.2 → 1.1.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.
Files changed (49) hide show
  1. package/LICENSE +13 -16
  2. package/README.md +1 -1
  3. package/dist/bridge.d.mts +1 -1
  4. package/dist/bridge.d.ts +1 -1
  5. package/dist/bridge.js +1 -1
  6. package/dist/bridge.mjs +1 -1
  7. package/dist/chunk-EPRXZTIE.js +1 -0
  8. package/dist/chunk-F22XEI77.mjs +5 -0
  9. package/dist/chunk-FUL3O7MO.js +5 -0
  10. package/dist/{chunk-W6AWGFM4.js → chunk-NKRT67UB.js} +2 -2
  11. package/dist/chunk-QPFWFH5W.mjs +72 -0
  12. package/dist/{chunk-MQIZY6IO.mjs → chunk-UIE7JPED.mjs} +1 -1
  13. package/dist/{chunk-RP4LYHUB.js → chunk-VGEZQUGC.js} +1 -1
  14. package/dist/chunk-XDZHYYU6.mjs +1 -0
  15. package/dist/{chunk-J2BSSNNF.mjs → chunk-XQG2G2LT.mjs} +1 -1
  16. package/dist/chunk-YNUYVVTY.js +72 -0
  17. package/dist/executor-SBR6X4JZ.mjs +1 -0
  18. package/dist/executor-ZTSOZMKE.js +1 -0
  19. package/dist/headless-B66Z373X.mjs +1 -0
  20. package/dist/headless-Y3JKFH2E.js +1 -0
  21. package/dist/index.d.mts +2 -2
  22. package/dist/index.d.ts +2 -2
  23. package/dist/index.js +1 -1
  24. package/dist/index.mjs +1 -1
  25. package/dist/mcp.d.mts +1 -1
  26. package/dist/mcp.d.ts +1 -1
  27. package/dist/react.d.mts +2 -2
  28. package/dist/react.d.ts +2 -2
  29. package/dist/react.js +1 -1
  30. package/dist/react.mjs +1 -1
  31. package/dist/{server-B7RHNVSu.d.mts → server-BELKcdSd.d.mts} +49 -0
  32. package/dist/{server-B7RHNVSu.d.ts → server-BELKcdSd.d.ts} +49 -0
  33. package/dist/server.d.mts +1 -1
  34. package/dist/server.d.ts +1 -1
  35. package/dist/server.js +1 -1
  36. package/dist/server.mjs +1 -1
  37. package/dist/vue.js +2 -2
  38. package/dist/vue.mjs +18 -20
  39. package/package.json +2 -2
  40. package/dist/chunk-4UY5MI2V.mjs +0 -71
  41. package/dist/chunk-6Z6UJ4RC.js +0 -5
  42. package/dist/chunk-EKCQF23W.mjs +0 -5
  43. package/dist/chunk-NISW2GF6.js +0 -1
  44. package/dist/chunk-ONK67NAB.js +0 -71
  45. package/dist/chunk-X4YGLGUM.mjs +0 -1
  46. package/dist/executor-QBMOTUCJ.js +0 -1
  47. package/dist/executor-RSQI3VOF.mjs +0 -1
  48. package/dist/headless-2IWI27NG.mjs +0 -1
  49. package/dist/headless-JZRG6TNP.js +0 -1
@@ -0,0 +1 @@
1
+ export{o as executeCommand,p as executeCommands}from'./chunk-XDZHYYU6.mjs';
@@ -0,0 +1 @@
1
+ 'use strict';var chunkEPRXZTIE_js=require('./chunk-EPRXZTIE.js');Object.defineProperty(exports,"executeCommand",{enumerable:true,get:function(){return chunkEPRXZTIE_js.o}});Object.defineProperty(exports,"executeCommands",{enumerable:true,get:function(){return chunkEPRXZTIE_js.p}});
@@ -0,0 +1 @@
1
+ export{xa as DEFAULT_AI_ACTIONS,x as DocumentAgent,za as VERSION,i as attemptSelectiveSave,oa as blendColors,E as buildExtendedSelectionContext,h as buildPatchedDocumentXml,D as buildSelectionContext,B as buildSelectionContextFromContext,pa as colorsEqual,ua as comparePositions,M as countCharacters,L as countWords,y as createAgent,z as createAgentFromDocument,ra as createCollapsedRange,ya as createCommand,ba as createDocumentWithText,f as createDocx,aa as createEmptyDocument,sa as createRange,la as createRgbColor,ka as createThemeColor,ma as darkenColor,j as detectVariables,k as detectVariablesDetailed,l as detectVariablesInBody,m as detectVariablesInParagraph,v as documentHasVariables,n as extractVariablesFromText,r as formatVariable,wa as getActionDescription,va as getActionLabel,A as getAgentContext,$ as getBlockIndexForParagraph,O as getBodyCharacterCount,K as getBodyText,N as getBodyWordCount,ia as getContrastingColor,C as getDocumentSummary,R as getFormattingAtPosition,T as getHyperlinkAtPosition,I as getHyperlinkText,_ as getParagraphAtIndex,G as getParagraphText,Z as getParagraphs,H as getRunText,F as getSelectionFormattingSummary,J as getTableText,Q as getTextAfter,P as getTextBefore,X as hasHyperlinks,W as hasImages,Y as hasTables,o as hasTemplateVariables,ga as isBlack,U as isHeadingStyle,S as isPositionInHyperlink,ta as isPositionInRange,p as isValidVariableName,ha as isWhite,qa as isZodSchema,na as lightenColor,ca as mapHexToHighlightName,ja as parseColorString,w as parseDocx,V as parseHeadingLevel,s as parseVariable,u as removeVariables,d as repackDocx,t as replaceVariables,da as resolveColor,ea as resolveHighlightColor,fa as resolveShadingColor,q as sanitizeVariableName,b as serializeDocumentBody,c as serializeDocx,a as serializeSectionProperties,e as updateMultipleFiles,g as validatePatchSafety}from'./chunk-QPFWFH5W.mjs';export{j as createTemplateProcessor,g as getMissingVariables,e as getTemplateTags,h as previewTemplate,a as processTemplate,i as processTemplateAdvanced,c as processTemplateAsBlob,b as processTemplateDetailed,f as validateTemplate}from'./chunk-UILTIEBD.mjs';export{a as PluginRegistry,d as createPluginRegistrar,g as emuToPixels,i as emuToTwips,o as executeCommand,p as executeCommands,n as formatPx,l as halfPointsToPixels,h as pixelsToEmu,f as pixelsToTwips,b as pluginRegistry,m as pointsToHalfPoints,k as pointsToPixels,c as registerPlugins,j as twipsToEmu,e as twipsToPixels}from'./chunk-XDZHYYU6.mjs';
@@ -0,0 +1 @@
1
+ 'use strict';var chunkYNUYVVTY_js=require('./chunk-YNUYVVTY.js'),chunk4QRVKNI4_js=require('./chunk-4QRVKNI4.js'),chunkEPRXZTIE_js=require('./chunk-EPRXZTIE.js');Object.defineProperty(exports,"DEFAULT_AI_ACTIONS",{enumerable:true,get:function(){return chunkYNUYVVTY_js.xa}});Object.defineProperty(exports,"DocumentAgent",{enumerable:true,get:function(){return chunkYNUYVVTY_js.x}});Object.defineProperty(exports,"VERSION",{enumerable:true,get:function(){return chunkYNUYVVTY_js.za}});Object.defineProperty(exports,"attemptSelectiveSave",{enumerable:true,get:function(){return chunkYNUYVVTY_js.i}});Object.defineProperty(exports,"blendColors",{enumerable:true,get:function(){return chunkYNUYVVTY_js.oa}});Object.defineProperty(exports,"buildExtendedSelectionContext",{enumerable:true,get:function(){return chunkYNUYVVTY_js.E}});Object.defineProperty(exports,"buildPatchedDocumentXml",{enumerable:true,get:function(){return chunkYNUYVVTY_js.h}});Object.defineProperty(exports,"buildSelectionContext",{enumerable:true,get:function(){return chunkYNUYVVTY_js.D}});Object.defineProperty(exports,"buildSelectionContextFromContext",{enumerable:true,get:function(){return chunkYNUYVVTY_js.B}});Object.defineProperty(exports,"colorsEqual",{enumerable:true,get:function(){return chunkYNUYVVTY_js.pa}});Object.defineProperty(exports,"comparePositions",{enumerable:true,get:function(){return chunkYNUYVVTY_js.ua}});Object.defineProperty(exports,"countCharacters",{enumerable:true,get:function(){return chunkYNUYVVTY_js.M}});Object.defineProperty(exports,"countWords",{enumerable:true,get:function(){return chunkYNUYVVTY_js.L}});Object.defineProperty(exports,"createAgent",{enumerable:true,get:function(){return chunkYNUYVVTY_js.y}});Object.defineProperty(exports,"createAgentFromDocument",{enumerable:true,get:function(){return chunkYNUYVVTY_js.z}});Object.defineProperty(exports,"createCollapsedRange",{enumerable:true,get:function(){return chunkYNUYVVTY_js.ra}});Object.defineProperty(exports,"createCommand",{enumerable:true,get:function(){return chunkYNUYVVTY_js.ya}});Object.defineProperty(exports,"createDocumentWithText",{enumerable:true,get:function(){return chunkYNUYVVTY_js.ba}});Object.defineProperty(exports,"createDocx",{enumerable:true,get:function(){return chunkYNUYVVTY_js.f}});Object.defineProperty(exports,"createEmptyDocument",{enumerable:true,get:function(){return chunkYNUYVVTY_js.aa}});Object.defineProperty(exports,"createRange",{enumerable:true,get:function(){return chunkYNUYVVTY_js.sa}});Object.defineProperty(exports,"createRgbColor",{enumerable:true,get:function(){return chunkYNUYVVTY_js.la}});Object.defineProperty(exports,"createThemeColor",{enumerable:true,get:function(){return chunkYNUYVVTY_js.ka}});Object.defineProperty(exports,"darkenColor",{enumerable:true,get:function(){return chunkYNUYVVTY_js.ma}});Object.defineProperty(exports,"detectVariables",{enumerable:true,get:function(){return chunkYNUYVVTY_js.j}});Object.defineProperty(exports,"detectVariablesDetailed",{enumerable:true,get:function(){return chunkYNUYVVTY_js.k}});Object.defineProperty(exports,"detectVariablesInBody",{enumerable:true,get:function(){return chunkYNUYVVTY_js.l}});Object.defineProperty(exports,"detectVariablesInParagraph",{enumerable:true,get:function(){return chunkYNUYVVTY_js.m}});Object.defineProperty(exports,"documentHasVariables",{enumerable:true,get:function(){return chunkYNUYVVTY_js.v}});Object.defineProperty(exports,"extractVariablesFromText",{enumerable:true,get:function(){return chunkYNUYVVTY_js.n}});Object.defineProperty(exports,"formatVariable",{enumerable:true,get:function(){return chunkYNUYVVTY_js.r}});Object.defineProperty(exports,"getActionDescription",{enumerable:true,get:function(){return chunkYNUYVVTY_js.wa}});Object.defineProperty(exports,"getActionLabel",{enumerable:true,get:function(){return chunkYNUYVVTY_js.va}});Object.defineProperty(exports,"getAgentContext",{enumerable:true,get:function(){return chunkYNUYVVTY_js.A}});Object.defineProperty(exports,"getBlockIndexForParagraph",{enumerable:true,get:function(){return chunkYNUYVVTY_js.$}});Object.defineProperty(exports,"getBodyCharacterCount",{enumerable:true,get:function(){return chunkYNUYVVTY_js.O}});Object.defineProperty(exports,"getBodyText",{enumerable:true,get:function(){return chunkYNUYVVTY_js.K}});Object.defineProperty(exports,"getBodyWordCount",{enumerable:true,get:function(){return chunkYNUYVVTY_js.N}});Object.defineProperty(exports,"getContrastingColor",{enumerable:true,get:function(){return chunkYNUYVVTY_js.ia}});Object.defineProperty(exports,"getDocumentSummary",{enumerable:true,get:function(){return chunkYNUYVVTY_js.C}});Object.defineProperty(exports,"getFormattingAtPosition",{enumerable:true,get:function(){return chunkYNUYVVTY_js.R}});Object.defineProperty(exports,"getHyperlinkAtPosition",{enumerable:true,get:function(){return chunkYNUYVVTY_js.T}});Object.defineProperty(exports,"getHyperlinkText",{enumerable:true,get:function(){return chunkYNUYVVTY_js.I}});Object.defineProperty(exports,"getParagraphAtIndex",{enumerable:true,get:function(){return chunkYNUYVVTY_js._}});Object.defineProperty(exports,"getParagraphText",{enumerable:true,get:function(){return chunkYNUYVVTY_js.G}});Object.defineProperty(exports,"getParagraphs",{enumerable:true,get:function(){return chunkYNUYVVTY_js.Z}});Object.defineProperty(exports,"getRunText",{enumerable:true,get:function(){return chunkYNUYVVTY_js.H}});Object.defineProperty(exports,"getSelectionFormattingSummary",{enumerable:true,get:function(){return chunkYNUYVVTY_js.F}});Object.defineProperty(exports,"getTableText",{enumerable:true,get:function(){return chunkYNUYVVTY_js.J}});Object.defineProperty(exports,"getTextAfter",{enumerable:true,get:function(){return chunkYNUYVVTY_js.Q}});Object.defineProperty(exports,"getTextBefore",{enumerable:true,get:function(){return chunkYNUYVVTY_js.P}});Object.defineProperty(exports,"hasHyperlinks",{enumerable:true,get:function(){return chunkYNUYVVTY_js.X}});Object.defineProperty(exports,"hasImages",{enumerable:true,get:function(){return chunkYNUYVVTY_js.W}});Object.defineProperty(exports,"hasTables",{enumerable:true,get:function(){return chunkYNUYVVTY_js.Y}});Object.defineProperty(exports,"hasTemplateVariables",{enumerable:true,get:function(){return chunkYNUYVVTY_js.o}});Object.defineProperty(exports,"isBlack",{enumerable:true,get:function(){return chunkYNUYVVTY_js.ga}});Object.defineProperty(exports,"isHeadingStyle",{enumerable:true,get:function(){return chunkYNUYVVTY_js.U}});Object.defineProperty(exports,"isPositionInHyperlink",{enumerable:true,get:function(){return chunkYNUYVVTY_js.S}});Object.defineProperty(exports,"isPositionInRange",{enumerable:true,get:function(){return chunkYNUYVVTY_js.ta}});Object.defineProperty(exports,"isValidVariableName",{enumerable:true,get:function(){return chunkYNUYVVTY_js.p}});Object.defineProperty(exports,"isWhite",{enumerable:true,get:function(){return chunkYNUYVVTY_js.ha}});Object.defineProperty(exports,"isZodSchema",{enumerable:true,get:function(){return chunkYNUYVVTY_js.qa}});Object.defineProperty(exports,"lightenColor",{enumerable:true,get:function(){return chunkYNUYVVTY_js.na}});Object.defineProperty(exports,"mapHexToHighlightName",{enumerable:true,get:function(){return chunkYNUYVVTY_js.ca}});Object.defineProperty(exports,"parseColorString",{enumerable:true,get:function(){return chunkYNUYVVTY_js.ja}});Object.defineProperty(exports,"parseDocx",{enumerable:true,get:function(){return chunkYNUYVVTY_js.w}});Object.defineProperty(exports,"parseHeadingLevel",{enumerable:true,get:function(){return chunkYNUYVVTY_js.V}});Object.defineProperty(exports,"parseVariable",{enumerable:true,get:function(){return chunkYNUYVVTY_js.s}});Object.defineProperty(exports,"removeVariables",{enumerable:true,get:function(){return chunkYNUYVVTY_js.u}});Object.defineProperty(exports,"repackDocx",{enumerable:true,get:function(){return chunkYNUYVVTY_js.d}});Object.defineProperty(exports,"replaceVariables",{enumerable:true,get:function(){return chunkYNUYVVTY_js.t}});Object.defineProperty(exports,"resolveColor",{enumerable:true,get:function(){return chunkYNUYVVTY_js.da}});Object.defineProperty(exports,"resolveHighlightColor",{enumerable:true,get:function(){return chunkYNUYVVTY_js.ea}});Object.defineProperty(exports,"resolveShadingColor",{enumerable:true,get:function(){return chunkYNUYVVTY_js.fa}});Object.defineProperty(exports,"sanitizeVariableName",{enumerable:true,get:function(){return chunkYNUYVVTY_js.q}});Object.defineProperty(exports,"serializeDocumentBody",{enumerable:true,get:function(){return chunkYNUYVVTY_js.b}});Object.defineProperty(exports,"serializeDocx",{enumerable:true,get:function(){return chunkYNUYVVTY_js.c}});Object.defineProperty(exports,"serializeSectionProperties",{enumerable:true,get:function(){return chunkYNUYVVTY_js.a}});Object.defineProperty(exports,"updateMultipleFiles",{enumerable:true,get:function(){return chunkYNUYVVTY_js.e}});Object.defineProperty(exports,"validatePatchSafety",{enumerable:true,get:function(){return chunkYNUYVVTY_js.g}});Object.defineProperty(exports,"createTemplateProcessor",{enumerable:true,get:function(){return chunk4QRVKNI4_js.j}});Object.defineProperty(exports,"getMissingVariables",{enumerable:true,get:function(){return chunk4QRVKNI4_js.g}});Object.defineProperty(exports,"getTemplateTags",{enumerable:true,get:function(){return chunk4QRVKNI4_js.e}});Object.defineProperty(exports,"previewTemplate",{enumerable:true,get:function(){return chunk4QRVKNI4_js.h}});Object.defineProperty(exports,"processTemplate",{enumerable:true,get:function(){return chunk4QRVKNI4_js.a}});Object.defineProperty(exports,"processTemplateAdvanced",{enumerable:true,get:function(){return chunk4QRVKNI4_js.i}});Object.defineProperty(exports,"processTemplateAsBlob",{enumerable:true,get:function(){return chunk4QRVKNI4_js.c}});Object.defineProperty(exports,"processTemplateDetailed",{enumerable:true,get:function(){return chunk4QRVKNI4_js.b}});Object.defineProperty(exports,"validateTemplate",{enumerable:true,get:function(){return chunk4QRVKNI4_js.f}});Object.defineProperty(exports,"PluginRegistry",{enumerable:true,get:function(){return chunkEPRXZTIE_js.a}});Object.defineProperty(exports,"createPluginRegistrar",{enumerable:true,get:function(){return chunkEPRXZTIE_js.d}});Object.defineProperty(exports,"emuToPixels",{enumerable:true,get:function(){return chunkEPRXZTIE_js.g}});Object.defineProperty(exports,"emuToTwips",{enumerable:true,get:function(){return chunkEPRXZTIE_js.i}});Object.defineProperty(exports,"executeCommand",{enumerable:true,get:function(){return chunkEPRXZTIE_js.o}});Object.defineProperty(exports,"executeCommands",{enumerable:true,get:function(){return chunkEPRXZTIE_js.p}});Object.defineProperty(exports,"formatPx",{enumerable:true,get:function(){return chunkEPRXZTIE_js.n}});Object.defineProperty(exports,"halfPointsToPixels",{enumerable:true,get:function(){return chunkEPRXZTIE_js.l}});Object.defineProperty(exports,"pixelsToEmu",{enumerable:true,get:function(){return chunkEPRXZTIE_js.h}});Object.defineProperty(exports,"pixelsToTwips",{enumerable:true,get:function(){return chunkEPRXZTIE_js.f}});Object.defineProperty(exports,"pluginRegistry",{enumerable:true,get:function(){return chunkEPRXZTIE_js.b}});Object.defineProperty(exports,"pointsToHalfPoints",{enumerable:true,get:function(){return chunkEPRXZTIE_js.m}});Object.defineProperty(exports,"pointsToPixels",{enumerable:true,get:function(){return chunkEPRXZTIE_js.k}});Object.defineProperty(exports,"registerPlugins",{enumerable:true,get:function(){return chunkEPRXZTIE_js.c}});Object.defineProperty(exports,"twipsToEmu",{enumerable:true,get:function(){return chunkEPRXZTIE_js.j}});Object.defineProperty(exports,"twipsToPixels",{enumerable:true,get:function(){return chunkEPRXZTIE_js.e}});
package/dist/index.d.mts CHANGED
@@ -28,8 +28,8 @@
28
28
  * @packageDocumentation
29
29
  * @public
30
30
  */
31
- import { G as GetContentOptions, C as ContentBlock, a as CommentFilter, R as ReviewComment, b as ChangeFilter, c as ReviewChange, F as FoundMatch, S as SelectionInfo, A as AddCommentByParaIdOptions, d as ReplyOptions, P as ProposeChangeOptions, e as ApplyFormattingOptions, f as SetParagraphStyleOptions, g as PageContent, h as ContentChangeEvent, i as SelectionChangeEvent } from './server-B7RHNVSu.mjs';
32
- export { j as AgentToolDefinition, k as AgentToolResult, B as BatchError, l as BatchResult, m as BatchReviewOptions, D as DocxReviewer, n as agentTools, o as createReviewerBridge, p as executeToolCall, q as getToolSchemas } from './server-B7RHNVSu.mjs';
31
+ import { G as GetContentOptions, C as ContentBlock, a as CommentFilter, R as ReviewComment, b as ChangeFilter, c as ReviewChange, F as FoundMatch, S as SelectionInfo, A as AddCommentByParaIdOptions, d as ReplyOptions, P as ProposeChangeOptions, e as ApplyFormattingOptions, f as SetParagraphStyleOptions, g as PageContent, h as ContentChangeEvent, i as SelectionChangeEvent } from './server-BELKcdSd.mjs';
32
+ export { j as AgentToolDefinition, k as AgentToolResult, B as BatchError, l as BatchResult, m as BatchReviewOptions, D as DocxReviewer, n as agentTools, o as createReviewerBridge, p as executeToolCall, q as getToolSchemas } from './server-BELKcdSd.mjs';
33
33
 
34
34
  /**
35
35
  * Error classes for @eigenpal/docx-editor-agents
package/dist/index.d.ts CHANGED
@@ -28,8 +28,8 @@
28
28
  * @packageDocumentation
29
29
  * @public
30
30
  */
31
- import { G as GetContentOptions, C as ContentBlock, a as CommentFilter, R as ReviewComment, b as ChangeFilter, c as ReviewChange, F as FoundMatch, S as SelectionInfo, A as AddCommentByParaIdOptions, d as ReplyOptions, P as ProposeChangeOptions, e as ApplyFormattingOptions, f as SetParagraphStyleOptions, g as PageContent, h as ContentChangeEvent, i as SelectionChangeEvent } from './server-B7RHNVSu.js';
32
- export { j as AgentToolDefinition, k as AgentToolResult, B as BatchError, l as BatchResult, m as BatchReviewOptions, D as DocxReviewer, n as agentTools, o as createReviewerBridge, p as executeToolCall, q as getToolSchemas } from './server-B7RHNVSu.js';
31
+ import { G as GetContentOptions, C as ContentBlock, a as CommentFilter, R as ReviewComment, b as ChangeFilter, c as ReviewChange, F as FoundMatch, S as SelectionInfo, A as AddCommentByParaIdOptions, d as ReplyOptions, P as ProposeChangeOptions, e as ApplyFormattingOptions, f as SetParagraphStyleOptions, g as PageContent, h as ContentChangeEvent, i as SelectionChangeEvent } from './server-BELKcdSd.js';
32
+ export { j as AgentToolDefinition, k as AgentToolResult, B as BatchError, l as BatchResult, m as BatchReviewOptions, D as DocxReviewer, n as agentTools, o as createReviewerBridge, p as executeToolCall, q as getToolSchemas } from './server-BELKcdSd.js';
33
33
 
34
34
  /**
35
35
  * Error classes for @eigenpal/docx-editor-agents
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- 'use strict';var chunkRP4LYHUB_js=require('./chunk-RP4LYHUB.js'),chunk6Z6UJ4RC_js=require('./chunk-6Z6UJ4RC.js'),chunkRI5S75JY_js=require('./chunk-RI5S75JY.js');Object.defineProperty(exports,"DocxReviewer",{enumerable:true,get:function(){return chunkRP4LYHUB_js.a}});Object.defineProperty(exports,"ChangeNotFoundError",{enumerable:true,get:function(){return chunk6Z6UJ4RC_js.g}});Object.defineProperty(exports,"CommentNotFoundError",{enumerable:true,get:function(){return chunk6Z6UJ4RC_js.h}});Object.defineProperty(exports,"TextNotFoundError",{enumerable:true,get:function(){return chunk6Z6UJ4RC_js.f}});Object.defineProperty(exports,"createReviewerBridge",{enumerable:true,get:function(){return chunk6Z6UJ4RC_js.m}});Object.defineProperty(exports,"agentTools",{enumerable:true,get:function(){return chunkRI5S75JY_js.a}});Object.defineProperty(exports,"executeToolCall",{enumerable:true,get:function(){return chunkRI5S75JY_js.b}});Object.defineProperty(exports,"getToolSchemas",{enumerable:true,get:function(){return chunkRI5S75JY_js.d}});
1
+ 'use strict';var chunkVGEZQUGC_js=require('./chunk-VGEZQUGC.js'),chunkFUL3O7MO_js=require('./chunk-FUL3O7MO.js'),chunkRI5S75JY_js=require('./chunk-RI5S75JY.js');Object.defineProperty(exports,"DocxReviewer",{enumerable:true,get:function(){return chunkVGEZQUGC_js.a}});Object.defineProperty(exports,"ChangeNotFoundError",{enumerable:true,get:function(){return chunkFUL3O7MO_js.g}});Object.defineProperty(exports,"CommentNotFoundError",{enumerable:true,get:function(){return chunkFUL3O7MO_js.h}});Object.defineProperty(exports,"TextNotFoundError",{enumerable:true,get:function(){return chunkFUL3O7MO_js.f}});Object.defineProperty(exports,"createReviewerBridge",{enumerable:true,get:function(){return chunkFUL3O7MO_js.m}});Object.defineProperty(exports,"agentTools",{enumerable:true,get:function(){return chunkRI5S75JY_js.a}});Object.defineProperty(exports,"executeToolCall",{enumerable:true,get:function(){return chunkRI5S75JY_js.b}});Object.defineProperty(exports,"getToolSchemas",{enumerable:true,get:function(){return chunkRI5S75JY_js.d}});
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- export{a as DocxReviewer}from'./chunk-MQIZY6IO.mjs';export{g as ChangeNotFoundError,h as CommentNotFoundError,f as TextNotFoundError,m as createReviewerBridge}from'./chunk-EKCQF23W.mjs';export{a as agentTools,b as executeToolCall,d as getToolSchemas}from'./chunk-24MVJKCP.mjs';
1
+ export{a as DocxReviewer}from'./chunk-UIE7JPED.mjs';export{g as ChangeNotFoundError,h as CommentNotFoundError,f as TextNotFoundError,m as createReviewerBridge}from'./chunk-F22XEI77.mjs';export{a as agentTools,b as executeToolCall,d as getToolSchemas}from'./chunk-24MVJKCP.mjs';
package/dist/mcp.d.mts CHANGED
@@ -17,7 +17,7 @@
17
17
  * @packageDocumentation
18
18
  * @public
19
19
  */
20
- import { E as EditorBridge } from './server-B7RHNVSu.mjs';
20
+ import { E as EditorBridge } from './server-BELKcdSd.mjs';
21
21
 
22
22
  /**
23
23
  * MCP wire protocol (subset) — JSON-RPC 2.0 framing + the message types we
package/dist/mcp.d.ts CHANGED
@@ -17,7 +17,7 @@
17
17
  * @packageDocumentation
18
18
  * @public
19
19
  */
20
- import { E as EditorBridge } from './server-B7RHNVSu.js';
20
+ import { E as EditorBridge } from './server-BELKcdSd.js';
21
21
 
22
22
  /**
23
23
  * MCP wire protocol (subset) — JSON-RPC 2.0 framing + the message types we
package/dist/react.d.mts CHANGED
@@ -18,8 +18,8 @@
18
18
  * @packageDocumentation
19
19
  * @public
20
20
  */
21
- import { r as EditorRefLike, k as AgentToolResult, q as getToolSchemas, j as AgentToolDefinition, s as AgentContextSnapshot } from './server-B7RHNVSu.mjs';
22
- export { t as getToolDisplayName } from './server-B7RHNVSu.mjs';
21
+ import { r as EditorRefLike, k as AgentToolResult, q as getToolSchemas, j as AgentToolDefinition, s as AgentContextSnapshot } from './server-BELKcdSd.mjs';
22
+ export { t as getToolDisplayName } from './server-BELKcdSd.mjs';
23
23
  import * as react_jsx_runtime from 'react/jsx-runtime';
24
24
  import { ReactNode, CSSProperties } from 'react';
25
25
  import { A as AgentMessage, a as AgentToolCall } from './agent-types-C8RvQB7n.mjs';
package/dist/react.d.ts CHANGED
@@ -18,8 +18,8 @@
18
18
  * @packageDocumentation
19
19
  * @public
20
20
  */
21
- import { r as EditorRefLike, k as AgentToolResult, q as getToolSchemas, j as AgentToolDefinition, s as AgentContextSnapshot } from './server-B7RHNVSu.js';
22
- export { t as getToolDisplayName } from './server-B7RHNVSu.js';
21
+ import { r as EditorRefLike, k as AgentToolResult, q as getToolSchemas, j as AgentToolDefinition, s as AgentContextSnapshot } from './server-BELKcdSd.js';
22
+ export { t as getToolDisplayName } from './server-BELKcdSd.js';
23
23
  import * as react_jsx_runtime from 'react/jsx-runtime';
24
24
  import { ReactNode, CSSProperties } from 'react';
25
25
  import { A as AgentMessage, a as AgentToolCall } from './agent-types-C8RvQB7n.js';
package/dist/react.js CHANGED
@@ -1,4 +1,4 @@
1
- 'use strict';var chunkW6AWGFM4_js=require('./chunk-W6AWGFM4.js'),chunkRI5S75JY_js=require('./chunk-RI5S75JY.js'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var te=chunkRI5S75JY_js.d();function ne(e){let{editorRef:t,author:l="AI"}=e,c=react.useMemo(()=>({get:()=>t.current?chunkW6AWGFM4_js.a(t.current,l):null}),[t,l]);return {executeToolCall:react.useCallback((d,p)=>{let r=c.get();return r?chunkRI5S75JY_js.b(d,p,r):{success:false,error:"Editor not ready"}},[c]),toolSchemas:te}}function re(e){let{editorRef:t,author:l="AI",tools:c,include:u,exclude:d}=e,p=!!c&&Object.keys(c).length>0,r=react.useCallback(i=>!(u&&!u.includes(i)||d&&d.includes(i)),[u,d]),f=react.useMemo(()=>{let i=u||d?chunkRI5S75JY_js.a.filter(n=>r(n.name)):chunkRI5S75JY_js.a;if(!p)return i.map(n=>({type:"function",function:{name:n.name,description:n.description,parameters:n.inputSchema}}));let o=new Map(i.map(n=>[n.name,n]));for(let[n,C]of Object.entries(c))o.set(n,C);return Array.from(o.values()).map(n=>({type:"function",function:{name:n.name,description:n.description,parameters:n.inputSchema}}))},[c,p,u,d,r]),g=react.useCallback((i,o)=>{let n=t.current;if(!n)return {success:false,error:"Editor not ready."};let C=chunkW6AWGFM4_js.a(n,l),k=c?.[i];if(k)try{return k.handler(o,C)}catch(T){return {success:false,error:T instanceof Error?T.message:String(T)}}return r(i)?chunkRI5S75JY_js.b(i,o,C):{success:false,error:`Tool '${i}' is not enabled.`}},[t,l,c,r]),x=react.useCallback(()=>{let i=t.current;if(!i)return {selection:null,currentPage:0,totalPages:0};let o=chunkW6AWGFM4_js.a(i,l);return {selection:o.getSelection(),currentPage:o.getCurrentPage(),totalPages:o.getTotalPages()}},[t,l]);return {tools:f,executeToolCall:g,getContext:x}}var y={agentPanel:{defaultTitle:"Assistant",close:"Close panel",resizeHandle:"Resize agent panel",thinking:"Assistant is thinking",composerPlaceholder:"Ask the assistant\u2026",send:"Send",timeline:{working:"Working\u2026 {count, plural, one {# step} other {# steps}}",summary:"{count, plural, one {# step} other {# steps}}",earlier:"+ {count, plural, one {# earlier step} other {# earlier steps}}"}}};var _="eigenpal:docx-editor:agentPanelWidth";function ae({size:e=22}){return jsxRuntime.jsx("svg",{viewBox:"0 -960 960 960",width:e,height:e,fill:"currentColor","aria-hidden":"true",children:jsxRuntime.jsx("path",{d:"m760-600-50-110-110-50 110-50 50-110 50 110 110 50-110 50-50 110Zm0 560-50-110-110-50 110-50 50-110 50 110 110 50-110 50-50 110ZM360-160 260-380 40-480l220-100 100-220 100 220 220 100-220 100-100 220Zm0-194 40-86 86-40-86-40-40-86-40 86-86 40 86 40 40 86Zm0-126Z"})})}function le({size:e=18}){return jsxRuntime.jsx("svg",{viewBox:"0 -960 960 960",width:e,height:e,fill:"currentColor","aria-hidden":"true",children:jsxRuntime.jsx("path",{d:"m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z"})})}var ce=360,ue=280,de=600;function pe({title:e=y.agentPanel.defaultTitle,icon:t,closeLabel:l=y.agentPanel.close,resizeHandleLabel:c=y.agentPanel.resizeHandle,width:u,defaultWidth:d=ce,minWidth:p=ue,maxWidth:r=de,onWidthChange:f,onClose:g,children:x,className:i,closed:o=false}){let n=u!==void 0,[C,k]=react.useState(false),T=react.useRef(o);react.useEffect(()=>{if(T.current!==o){T.current=o,k(true);let m=window.setTimeout(()=>k(false),260);return ()=>window.clearTimeout(m)}},[o]);let[L,h]=react.useState(()=>{if(n)return u;if(typeof window>"u")return d;try{let m=window.localStorage.getItem(_);if(m){let S=Number(m);if(Number.isFinite(S)&&S>=p&&S<=r)return S}}catch{}return d}),E=n?u:L,v=react.useRef(null),B=react.useRef({minWidth:p,maxWidth:r,isControlled:n,onWidthChange:f});B.current={minWidth:p,maxWidth:r,isControlled:n,onWidthChange:f};let w=react.useRef(null);if(!w.current){let m=P=>{let D=v.current;if(!D)return;let I=B.current,q=D.startX-P.clientX,N=Math.min(I.maxWidth,Math.max(I.minWidth,D.startWidth+q));D.lastWidth=N,I.isControlled||h(N),I.onWidthChange?.(N);},S=()=>{let P=v.current;if(P&&(v.current=null,document.removeEventListener("pointermove",m),document.removeEventListener("pointerup",S),!B.current.isControlled))try{window.localStorage.setItem(_,String(P.lastWidth));}catch{}};w.current={move:m,up:S};}let Y=react.useCallback(m=>{m.preventDefault();let S=n?u:L;v.current={startX:m.clientX,startWidth:S,lastWidth:S},document.addEventListener("pointermove",w.current.move),document.addEventListener("pointerup",w.current.up);},[]);return react.useEffect(()=>()=>{let m=w.current;m&&(document.removeEventListener("pointermove",m.move),document.removeEventListener("pointerup",m.up));},[]),jsxRuntime.jsxs("div",{className:`ep-agent-panel${i?` ${i}`:""}`,style:{width:o?0:E,flex:o?"0 0 0px":`0 0 ${E}px`,height:"calc(100% - 16px)",margin:o?"8px 0 8px 0":"8px 8px 8px 12px",display:"flex",flexDirection:"column",background:"#ffffff",border:o?"1px solid transparent":"1px solid #e3e3e3",borderRadius:16,boxShadow:o?"none":"0 1px 2px rgba(60,64,67,0.05), 0 4px 12px rgba(60,64,67,0.08)",opacity:o?0:1,pointerEvents:o?"none":"auto",position:"relative",boxSizing:"border-box",minWidth:o?0:p,overflow:"hidden",fontFamily:"'Google Sans', 'Google Sans Text', system-ui, -apple-system, sans-serif",transition:C?"flex-basis 220ms cubic-bezier(0.4, 0, 0.2, 1), width 220ms cubic-bezier(0.4, 0, 0.2, 1), margin 220ms cubic-bezier(0.4, 0, 0.2, 1), opacity 180ms ease, box-shadow 220ms ease, border-color 220ms ease":"opacity 180ms ease, box-shadow 220ms ease, border-color 220ms ease"},"aria-hidden":o,"data-testid":"agent-panel","data-state":o?"closed":"open",role:"complementary","aria-label":e,children:[jsxRuntime.jsx("div",{role:"separator","aria-orientation":"vertical","aria-label":c,onPointerDown:Y,style:{position:"absolute",left:-3,top:0,bottom:0,width:6,cursor:"col-resize",touchAction:"none",zIndex:1},"data-testid":"agent-panel-resize-handle"}),jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"14px 16px 10px",flex:"0 0 auto",background:"#ffffff"},children:[jsxRuntime.jsx("span",{style:{display:"inline-flex",alignItems:"center",color:"#0b57d0"},children:t??jsxRuntime.jsx(ae,{size:22})}),jsxRuntime.jsx("span",{style:{flex:1,fontSize:15,fontWeight:500,color:"#1f1f1f",letterSpacing:.1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e}),g&&jsxRuntime.jsx("button",{type:"button",onClick:g,"aria-label":l,title:l,"data-testid":"agent-panel-close",style:{border:"none",background:"transparent",padding:6,cursor:"pointer",display:"inline-flex",alignItems:"center",justifyContent:"center",color:"#444746",borderRadius:999,transition:"background 0.15s"},onMouseEnter:m=>{m.currentTarget.style.background="#f1f3f4";},onMouseLeave:m=>{m.currentTarget.style.background="transparent";},children:jsxRuntime.jsx(le,{size:18})})]}),jsxRuntime.jsx("div",{style:{flex:1,minHeight:0,overflow:"hidden",display:"flex",flexDirection:"column"},children:x})]})}function ge(e){let t={},l=/(=\d+|\w+)\s*\{([^}]*)\}/g,c;for(;(c=l.exec(e))!==null;)t[c[1]]=c[2];return t}function F(e,t,l="en"){return t?e.replace(/\{(\w+),\s*plural,\s*((?:[^{}]|\{[^{}]*\})*)\}/g,(u,d,p)=>{let r=Number(t[d]);if(isNaN(r))return u;let f=ge(p),g=f[`=${r}`];if(g!==void 0)return g.replace(/#/g,String(r));let x;try{x=new Intl.PluralRules(l).select(r);}catch{x=r===1?"one":"other";}return (f[x]??f.other??"").replace(/#/g,String(r))}).replace(/\{(\w+)\}/g,(u,d)=>{let p=t[d];return p!==void 0?String(p):`{${d}}`}):e}function V(e){let t=e.replace(/_/g," ");return t.charAt(0).toUpperCase()+t.slice(1)}var xe=y.agentPanel.thinking,he=y.agentPanel.composerPlaceholder,be=y.agentPanel.send,ye=e=>F(y.agentPanel.timeline.working,{count:e}),Ae=e=>F(y.agentPanel.timeline.summary,{count:e}),Se=e=>F(y.agentPanel.timeline.earlier,{count:e}),j="ep-agent-chat-keyframes",Ce=`
1
+ 'use strict';var chunkNKRT67UB_js=require('./chunk-NKRT67UB.js'),chunkRI5S75JY_js=require('./chunk-RI5S75JY.js'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var te=chunkRI5S75JY_js.d();function ne(e){let{editorRef:t,author:l="AI"}=e,c=react.useMemo(()=>({get:()=>t.current?chunkNKRT67UB_js.a(t.current,l):null}),[t,l]);return {executeToolCall:react.useCallback((d,p)=>{let r=c.get();return r?chunkRI5S75JY_js.b(d,p,r):{success:false,error:"Editor not ready"}},[c]),toolSchemas:te}}function re(e){let{editorRef:t,author:l="AI",tools:c,include:u,exclude:d}=e,p=!!c&&Object.keys(c).length>0,r=react.useCallback(i=>!(u&&!u.includes(i)||d&&d.includes(i)),[u,d]),f=react.useMemo(()=>{let i=u||d?chunkRI5S75JY_js.a.filter(n=>r(n.name)):chunkRI5S75JY_js.a;if(!p)return i.map(n=>({type:"function",function:{name:n.name,description:n.description,parameters:n.inputSchema}}));let o=new Map(i.map(n=>[n.name,n]));for(let[n,C]of Object.entries(c))o.set(n,C);return Array.from(o.values()).map(n=>({type:"function",function:{name:n.name,description:n.description,parameters:n.inputSchema}}))},[c,p,u,d,r]),g=react.useCallback((i,o)=>{let n=t.current;if(!n)return {success:false,error:"Editor not ready."};let C=chunkNKRT67UB_js.a(n,l),k=c?.[i];if(k)try{return k.handler(o,C)}catch(T){return {success:false,error:T instanceof Error?T.message:String(T)}}return r(i)?chunkRI5S75JY_js.b(i,o,C):{success:false,error:`Tool '${i}' is not enabled.`}},[t,l,c,r]),x=react.useCallback(()=>{let i=t.current;if(!i)return {selection:null,currentPage:0,totalPages:0};let o=chunkNKRT67UB_js.a(i,l);return {selection:o.getSelection(),currentPage:o.getCurrentPage(),totalPages:o.getTotalPages()}},[t,l]);return {tools:f,executeToolCall:g,getContext:x}}var y={agentPanel:{defaultTitle:"Assistant",close:"Close panel",resizeHandle:"Resize agent panel",thinking:"Assistant is thinking",composerPlaceholder:"Ask the assistant\u2026",send:"Send",timeline:{working:"Working\u2026 {count, plural, one {# step} other {# steps}}",summary:"{count, plural, one {# step} other {# steps}}",earlier:"+ {count, plural, one {# earlier step} other {# earlier steps}}"}}};var _="eigenpal:docx-editor:agentPanelWidth";function ae({size:e=22}){return jsxRuntime.jsx("svg",{viewBox:"0 -960 960 960",width:e,height:e,fill:"currentColor","aria-hidden":"true",children:jsxRuntime.jsx("path",{d:"m760-600-50-110-110-50 110-50 50-110 50 110 110 50-110 50-50 110Zm0 560-50-110-110-50 110-50 50-110 50 110 110 50-110 50-50 110ZM360-160 260-380 40-480l220-100 100-220 100 220 220 100-220 100-100 220Zm0-194 40-86 86-40-86-40-40-86-40 86-86 40 86 40 40 86Zm0-126Z"})})}function le({size:e=18}){return jsxRuntime.jsx("svg",{viewBox:"0 -960 960 960",width:e,height:e,fill:"currentColor","aria-hidden":"true",children:jsxRuntime.jsx("path",{d:"m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z"})})}var ce=360,ue=280,de=600;function pe({title:e=y.agentPanel.defaultTitle,icon:t,closeLabel:l=y.agentPanel.close,resizeHandleLabel:c=y.agentPanel.resizeHandle,width:u,defaultWidth:d=ce,minWidth:p=ue,maxWidth:r=de,onWidthChange:f,onClose:g,children:x,className:i,closed:o=false}){let n=u!==void 0,[C,k]=react.useState(false),T=react.useRef(o);react.useEffect(()=>{if(T.current!==o){T.current=o,k(true);let m=window.setTimeout(()=>k(false),260);return ()=>window.clearTimeout(m)}},[o]);let[L,h]=react.useState(()=>{if(n)return u;if(typeof window>"u")return d;try{let m=window.localStorage.getItem(_);if(m){let S=Number(m);if(Number.isFinite(S)&&S>=p&&S<=r)return S}}catch{}return d}),E=n?u:L,v=react.useRef(null),B=react.useRef({minWidth:p,maxWidth:r,isControlled:n,onWidthChange:f});B.current={minWidth:p,maxWidth:r,isControlled:n,onWidthChange:f};let w=react.useRef(null);if(!w.current){let m=P=>{let D=v.current;if(!D)return;let I=B.current,q=D.startX-P.clientX,N=Math.min(I.maxWidth,Math.max(I.minWidth,D.startWidth+q));D.lastWidth=N,I.isControlled||h(N),I.onWidthChange?.(N);},S=()=>{let P=v.current;if(P&&(v.current=null,document.removeEventListener("pointermove",m),document.removeEventListener("pointerup",S),!B.current.isControlled))try{window.localStorage.setItem(_,String(P.lastWidth));}catch{}};w.current={move:m,up:S};}let Y=react.useCallback(m=>{m.preventDefault();let S=n?u:L;v.current={startX:m.clientX,startWidth:S,lastWidth:S},document.addEventListener("pointermove",w.current.move),document.addEventListener("pointerup",w.current.up);},[]);return react.useEffect(()=>()=>{let m=w.current;m&&(document.removeEventListener("pointermove",m.move),document.removeEventListener("pointerup",m.up));},[]),jsxRuntime.jsxs("div",{className:`ep-agent-panel${i?` ${i}`:""}`,style:{width:o?0:E,flex:o?"0 0 0px":`0 0 ${E}px`,height:"calc(100% - 16px)",margin:o?"8px 0 8px 0":"8px 8px 8px 12px",display:"flex",flexDirection:"column",background:"#ffffff",border:o?"1px solid transparent":"1px solid #e3e3e3",borderRadius:16,boxShadow:o?"none":"0 1px 2px rgba(60,64,67,0.05), 0 4px 12px rgba(60,64,67,0.08)",opacity:o?0:1,pointerEvents:o?"none":"auto",position:"relative",boxSizing:"border-box",minWidth:o?0:p,overflow:"hidden",fontFamily:"'Google Sans', 'Google Sans Text', system-ui, -apple-system, sans-serif",transition:C?"flex-basis 220ms cubic-bezier(0.4, 0, 0.2, 1), width 220ms cubic-bezier(0.4, 0, 0.2, 1), margin 220ms cubic-bezier(0.4, 0, 0.2, 1), opacity 180ms ease, box-shadow 220ms ease, border-color 220ms ease":"opacity 180ms ease, box-shadow 220ms ease, border-color 220ms ease"},"aria-hidden":o,"data-testid":"agent-panel","data-state":o?"closed":"open",role:"complementary","aria-label":e,children:[jsxRuntime.jsx("div",{role:"separator","aria-orientation":"vertical","aria-label":c,onPointerDown:Y,style:{position:"absolute",left:-3,top:0,bottom:0,width:6,cursor:"col-resize",touchAction:"none",zIndex:1},"data-testid":"agent-panel-resize-handle"}),jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"14px 16px 10px",flex:"0 0 auto",background:"#ffffff"},children:[jsxRuntime.jsx("span",{style:{display:"inline-flex",alignItems:"center",color:"#0b57d0"},children:t??jsxRuntime.jsx(ae,{size:22})}),jsxRuntime.jsx("span",{style:{flex:1,fontSize:15,fontWeight:500,color:"#1f1f1f",letterSpacing:.1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e}),g&&jsxRuntime.jsx("button",{type:"button",onClick:g,"aria-label":l,title:l,"data-testid":"agent-panel-close",style:{border:"none",background:"transparent",padding:6,cursor:"pointer",display:"inline-flex",alignItems:"center",justifyContent:"center",color:"#444746",borderRadius:999,transition:"background 0.15s"},onMouseEnter:m=>{m.currentTarget.style.background="#f1f3f4";},onMouseLeave:m=>{m.currentTarget.style.background="transparent";},children:jsxRuntime.jsx(le,{size:18})})]}),jsxRuntime.jsx("div",{style:{flex:1,minHeight:0,overflow:"hidden",display:"flex",flexDirection:"column"},children:x})]})}function ge(e){let t={},l=/(=\d+|\w+)\s*\{([^}]*)\}/g,c;for(;(c=l.exec(e))!==null;)t[c[1]]=c[2];return t}function F(e,t,l="en"){return t?e.replace(/\{(\w+),\s*plural,\s*((?:[^{}]|\{[^{}]*\})*)\}/g,(u,d,p)=>{let r=Number(t[d]);if(isNaN(r))return u;let f=ge(p),g=f[`=${r}`];if(g!==void 0)return g.replace(/#/g,String(r));let x;try{x=new Intl.PluralRules(l).select(r);}catch{x=r===1?"one":"other";}return (f[x]??f.other??"").replace(/#/g,String(r))}).replace(/\{(\w+)\}/g,(u,d)=>{let p=t[d];return p!==void 0?String(p):`{${d}}`}):e}function V(e){let t=e.replace(/_/g," ");return t.charAt(0).toUpperCase()+t.slice(1)}var xe=y.agentPanel.thinking,he=y.agentPanel.composerPlaceholder,be=y.agentPanel.send,ye=e=>F(y.agentPanel.timeline.working,{count:e}),Ae=e=>F(y.agentPanel.timeline.summary,{count:e}),Se=e=>F(y.agentPanel.timeline.earlier,{count:e}),j="ep-agent-chat-keyframes",Ce=`
2
2
  @keyframes epAgentDot {
3
3
  0%, 80%, 100% { transform: scale(0.6); opacity: 0.4; }
4
4
  40% { transform: scale(1); opacity: 1; }
package/dist/react.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import {a}from'./chunk-J2BSSNNF.mjs';import {d,b,a as a$1}from'./chunk-24MVJKCP.mjs';export{c as getToolDisplayName}from'./chunk-24MVJKCP.mjs';import {useMemo,useCallback,useState,useRef,useEffect}from'react';import {jsxs,jsx}from'react/jsx-runtime';var te=d();function ne(e){let{editorRef:t,author:l="AI"}=e,c=useMemo(()=>({get:()=>t.current?a(t.current,l):null}),[t,l]);return {executeToolCall:useCallback((d,p)=>{let r=c.get();return r?b(d,p,r):{success:false,error:"Editor not ready"}},[c]),toolSchemas:te}}function re(e){let{editorRef:t,author:l="AI",tools:c,include:u,exclude:d}=e,p=!!c&&Object.keys(c).length>0,r=useCallback(i=>!(u&&!u.includes(i)||d&&d.includes(i)),[u,d]),f=useMemo(()=>{let i=u||d?a$1.filter(n=>r(n.name)):a$1;if(!p)return i.map(n=>({type:"function",function:{name:n.name,description:n.description,parameters:n.inputSchema}}));let o=new Map(i.map(n=>[n.name,n]));for(let[n,C]of Object.entries(c))o.set(n,C);return Array.from(o.values()).map(n=>({type:"function",function:{name:n.name,description:n.description,parameters:n.inputSchema}}))},[c,p,u,d,r]),g=useCallback((i,o)=>{let n=t.current;if(!n)return {success:false,error:"Editor not ready."};let C=a(n,l),k=c?.[i];if(k)try{return k.handler(o,C)}catch(T){return {success:false,error:T instanceof Error?T.message:String(T)}}return r(i)?b(i,o,C):{success:false,error:`Tool '${i}' is not enabled.`}},[t,l,c,r]),x=useCallback(()=>{let i=t.current;if(!i)return {selection:null,currentPage:0,totalPages:0};let o=a(i,l);return {selection:o.getSelection(),currentPage:o.getCurrentPage(),totalPages:o.getTotalPages()}},[t,l]);return {tools:f,executeToolCall:g,getContext:x}}var y={agentPanel:{defaultTitle:"Assistant",close:"Close panel",resizeHandle:"Resize agent panel",thinking:"Assistant is thinking",composerPlaceholder:"Ask the assistant\u2026",send:"Send",timeline:{working:"Working\u2026 {count, plural, one {# step} other {# steps}}",summary:"{count, plural, one {# step} other {# steps}}",earlier:"+ {count, plural, one {# earlier step} other {# earlier steps}}"}}};var _="eigenpal:docx-editor:agentPanelWidth";function ae({size:e=22}){return jsx("svg",{viewBox:"0 -960 960 960",width:e,height:e,fill:"currentColor","aria-hidden":"true",children:jsx("path",{d:"m760-600-50-110-110-50 110-50 50-110 50 110 110 50-110 50-50 110Zm0 560-50-110-110-50 110-50 50-110 50 110 110 50-110 50-50 110ZM360-160 260-380 40-480l220-100 100-220 100 220 220 100-220 100-100 220Zm0-194 40-86 86-40-86-40-40-86-40 86-86 40 86 40 40 86Zm0-126Z"})})}function le({size:e=18}){return jsx("svg",{viewBox:"0 -960 960 960",width:e,height:e,fill:"currentColor","aria-hidden":"true",children:jsx("path",{d:"m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z"})})}var ce=360,ue=280,de=600;function pe({title:e=y.agentPanel.defaultTitle,icon:t,closeLabel:l=y.agentPanel.close,resizeHandleLabel:c=y.agentPanel.resizeHandle,width:u,defaultWidth:d=ce,minWidth:p=ue,maxWidth:r=de,onWidthChange:f,onClose:g,children:x,className:i,closed:o=false}){let n=u!==void 0,[C,k]=useState(false),T=useRef(o);useEffect(()=>{if(T.current!==o){T.current=o,k(true);let m=window.setTimeout(()=>k(false),260);return ()=>window.clearTimeout(m)}},[o]);let[L,h]=useState(()=>{if(n)return u;if(typeof window>"u")return d;try{let m=window.localStorage.getItem(_);if(m){let S=Number(m);if(Number.isFinite(S)&&S>=p&&S<=r)return S}}catch{}return d}),E=n?u:L,v=useRef(null),B=useRef({minWidth:p,maxWidth:r,isControlled:n,onWidthChange:f});B.current={minWidth:p,maxWidth:r,isControlled:n,onWidthChange:f};let w=useRef(null);if(!w.current){let m=P=>{let D=v.current;if(!D)return;let I=B.current,q=D.startX-P.clientX,N=Math.min(I.maxWidth,Math.max(I.minWidth,D.startWidth+q));D.lastWidth=N,I.isControlled||h(N),I.onWidthChange?.(N);},S=()=>{let P=v.current;if(P&&(v.current=null,document.removeEventListener("pointermove",m),document.removeEventListener("pointerup",S),!B.current.isControlled))try{window.localStorage.setItem(_,String(P.lastWidth));}catch{}};w.current={move:m,up:S};}let Y=useCallback(m=>{m.preventDefault();let S=n?u:L;v.current={startX:m.clientX,startWidth:S,lastWidth:S},document.addEventListener("pointermove",w.current.move),document.addEventListener("pointerup",w.current.up);},[]);return useEffect(()=>()=>{let m=w.current;m&&(document.removeEventListener("pointermove",m.move),document.removeEventListener("pointerup",m.up));},[]),jsxs("div",{className:`ep-agent-panel${i?` ${i}`:""}`,style:{width:o?0:E,flex:o?"0 0 0px":`0 0 ${E}px`,height:"calc(100% - 16px)",margin:o?"8px 0 8px 0":"8px 8px 8px 12px",display:"flex",flexDirection:"column",background:"#ffffff",border:o?"1px solid transparent":"1px solid #e3e3e3",borderRadius:16,boxShadow:o?"none":"0 1px 2px rgba(60,64,67,0.05), 0 4px 12px rgba(60,64,67,0.08)",opacity:o?0:1,pointerEvents:o?"none":"auto",position:"relative",boxSizing:"border-box",minWidth:o?0:p,overflow:"hidden",fontFamily:"'Google Sans', 'Google Sans Text', system-ui, -apple-system, sans-serif",transition:C?"flex-basis 220ms cubic-bezier(0.4, 0, 0.2, 1), width 220ms cubic-bezier(0.4, 0, 0.2, 1), margin 220ms cubic-bezier(0.4, 0, 0.2, 1), opacity 180ms ease, box-shadow 220ms ease, border-color 220ms ease":"opacity 180ms ease, box-shadow 220ms ease, border-color 220ms ease"},"aria-hidden":o,"data-testid":"agent-panel","data-state":o?"closed":"open",role:"complementary","aria-label":e,children:[jsx("div",{role:"separator","aria-orientation":"vertical","aria-label":c,onPointerDown:Y,style:{position:"absolute",left:-3,top:0,bottom:0,width:6,cursor:"col-resize",touchAction:"none",zIndex:1},"data-testid":"agent-panel-resize-handle"}),jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"14px 16px 10px",flex:"0 0 auto",background:"#ffffff"},children:[jsx("span",{style:{display:"inline-flex",alignItems:"center",color:"#0b57d0"},children:t??jsx(ae,{size:22})}),jsx("span",{style:{flex:1,fontSize:15,fontWeight:500,color:"#1f1f1f",letterSpacing:.1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e}),g&&jsx("button",{type:"button",onClick:g,"aria-label":l,title:l,"data-testid":"agent-panel-close",style:{border:"none",background:"transparent",padding:6,cursor:"pointer",display:"inline-flex",alignItems:"center",justifyContent:"center",color:"#444746",borderRadius:999,transition:"background 0.15s"},onMouseEnter:m=>{m.currentTarget.style.background="#f1f3f4";},onMouseLeave:m=>{m.currentTarget.style.background="transparent";},children:jsx(le,{size:18})})]}),jsx("div",{style:{flex:1,minHeight:0,overflow:"hidden",display:"flex",flexDirection:"column"},children:x})]})}function ge(e){let t={},l=/(=\d+|\w+)\s*\{([^}]*)\}/g,c;for(;(c=l.exec(e))!==null;)t[c[1]]=c[2];return t}function F(e,t,l="en"){return t?e.replace(/\{(\w+),\s*plural,\s*((?:[^{}]|\{[^{}]*\})*)\}/g,(u,d,p)=>{let r=Number(t[d]);if(isNaN(r))return u;let f=ge(p),g=f[`=${r}`];if(g!==void 0)return g.replace(/#/g,String(r));let x;try{x=new Intl.PluralRules(l).select(r);}catch{x=r===1?"one":"other";}return (f[x]??f.other??"").replace(/#/g,String(r))}).replace(/\{(\w+)\}/g,(u,d)=>{let p=t[d];return p!==void 0?String(p):`{${d}}`}):e}function V(e){let t=e.replace(/_/g," ");return t.charAt(0).toUpperCase()+t.slice(1)}var xe=y.agentPanel.thinking,he=y.agentPanel.composerPlaceholder,be=y.agentPanel.send,ye=e=>F(y.agentPanel.timeline.working,{count:e}),Ae=e=>F(y.agentPanel.timeline.summary,{count:e}),Se=e=>F(y.agentPanel.timeline.earlier,{count:e}),j="ep-agent-chat-keyframes",Ce=`
1
+ import {a}from'./chunk-XQG2G2LT.mjs';import {d,b,a as a$1}from'./chunk-24MVJKCP.mjs';export{c as getToolDisplayName}from'./chunk-24MVJKCP.mjs';import {useMemo,useCallback,useState,useRef,useEffect}from'react';import {jsxs,jsx}from'react/jsx-runtime';var te=d();function ne(e){let{editorRef:t,author:l="AI"}=e,c=useMemo(()=>({get:()=>t.current?a(t.current,l):null}),[t,l]);return {executeToolCall:useCallback((d,p)=>{let r=c.get();return r?b(d,p,r):{success:false,error:"Editor not ready"}},[c]),toolSchemas:te}}function re(e){let{editorRef:t,author:l="AI",tools:c,include:u,exclude:d}=e,p=!!c&&Object.keys(c).length>0,r=useCallback(i=>!(u&&!u.includes(i)||d&&d.includes(i)),[u,d]),f=useMemo(()=>{let i=u||d?a$1.filter(n=>r(n.name)):a$1;if(!p)return i.map(n=>({type:"function",function:{name:n.name,description:n.description,parameters:n.inputSchema}}));let o=new Map(i.map(n=>[n.name,n]));for(let[n,C]of Object.entries(c))o.set(n,C);return Array.from(o.values()).map(n=>({type:"function",function:{name:n.name,description:n.description,parameters:n.inputSchema}}))},[c,p,u,d,r]),g=useCallback((i,o)=>{let n=t.current;if(!n)return {success:false,error:"Editor not ready."};let C=a(n,l),k=c?.[i];if(k)try{return k.handler(o,C)}catch(T){return {success:false,error:T instanceof Error?T.message:String(T)}}return r(i)?b(i,o,C):{success:false,error:`Tool '${i}' is not enabled.`}},[t,l,c,r]),x=useCallback(()=>{let i=t.current;if(!i)return {selection:null,currentPage:0,totalPages:0};let o=a(i,l);return {selection:o.getSelection(),currentPage:o.getCurrentPage(),totalPages:o.getTotalPages()}},[t,l]);return {tools:f,executeToolCall:g,getContext:x}}var y={agentPanel:{defaultTitle:"Assistant",close:"Close panel",resizeHandle:"Resize agent panel",thinking:"Assistant is thinking",composerPlaceholder:"Ask the assistant\u2026",send:"Send",timeline:{working:"Working\u2026 {count, plural, one {# step} other {# steps}}",summary:"{count, plural, one {# step} other {# steps}}",earlier:"+ {count, plural, one {# earlier step} other {# earlier steps}}"}}};var _="eigenpal:docx-editor:agentPanelWidth";function ae({size:e=22}){return jsx("svg",{viewBox:"0 -960 960 960",width:e,height:e,fill:"currentColor","aria-hidden":"true",children:jsx("path",{d:"m760-600-50-110-110-50 110-50 50-110 50 110 110 50-110 50-50 110Zm0 560-50-110-110-50 110-50 50-110 50 110 110 50-110 50-50 110ZM360-160 260-380 40-480l220-100 100-220 100 220 220 100-220 100-100 220Zm0-194 40-86 86-40-86-40-40-86-40 86-86 40 86 40 40 86Zm0-126Z"})})}function le({size:e=18}){return jsx("svg",{viewBox:"0 -960 960 960",width:e,height:e,fill:"currentColor","aria-hidden":"true",children:jsx("path",{d:"m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z"})})}var ce=360,ue=280,de=600;function pe({title:e=y.agentPanel.defaultTitle,icon:t,closeLabel:l=y.agentPanel.close,resizeHandleLabel:c=y.agentPanel.resizeHandle,width:u,defaultWidth:d=ce,minWidth:p=ue,maxWidth:r=de,onWidthChange:f,onClose:g,children:x,className:i,closed:o=false}){let n=u!==void 0,[C,k]=useState(false),T=useRef(o);useEffect(()=>{if(T.current!==o){T.current=o,k(true);let m=window.setTimeout(()=>k(false),260);return ()=>window.clearTimeout(m)}},[o]);let[L,h]=useState(()=>{if(n)return u;if(typeof window>"u")return d;try{let m=window.localStorage.getItem(_);if(m){let S=Number(m);if(Number.isFinite(S)&&S>=p&&S<=r)return S}}catch{}return d}),E=n?u:L,v=useRef(null),B=useRef({minWidth:p,maxWidth:r,isControlled:n,onWidthChange:f});B.current={minWidth:p,maxWidth:r,isControlled:n,onWidthChange:f};let w=useRef(null);if(!w.current){let m=P=>{let D=v.current;if(!D)return;let I=B.current,q=D.startX-P.clientX,N=Math.min(I.maxWidth,Math.max(I.minWidth,D.startWidth+q));D.lastWidth=N,I.isControlled||h(N),I.onWidthChange?.(N);},S=()=>{let P=v.current;if(P&&(v.current=null,document.removeEventListener("pointermove",m),document.removeEventListener("pointerup",S),!B.current.isControlled))try{window.localStorage.setItem(_,String(P.lastWidth));}catch{}};w.current={move:m,up:S};}let Y=useCallback(m=>{m.preventDefault();let S=n?u:L;v.current={startX:m.clientX,startWidth:S,lastWidth:S},document.addEventListener("pointermove",w.current.move),document.addEventListener("pointerup",w.current.up);},[]);return useEffect(()=>()=>{let m=w.current;m&&(document.removeEventListener("pointermove",m.move),document.removeEventListener("pointerup",m.up));},[]),jsxs("div",{className:`ep-agent-panel${i?` ${i}`:""}`,style:{width:o?0:E,flex:o?"0 0 0px":`0 0 ${E}px`,height:"calc(100% - 16px)",margin:o?"8px 0 8px 0":"8px 8px 8px 12px",display:"flex",flexDirection:"column",background:"#ffffff",border:o?"1px solid transparent":"1px solid #e3e3e3",borderRadius:16,boxShadow:o?"none":"0 1px 2px rgba(60,64,67,0.05), 0 4px 12px rgba(60,64,67,0.08)",opacity:o?0:1,pointerEvents:o?"none":"auto",position:"relative",boxSizing:"border-box",minWidth:o?0:p,overflow:"hidden",fontFamily:"'Google Sans', 'Google Sans Text', system-ui, -apple-system, sans-serif",transition:C?"flex-basis 220ms cubic-bezier(0.4, 0, 0.2, 1), width 220ms cubic-bezier(0.4, 0, 0.2, 1), margin 220ms cubic-bezier(0.4, 0, 0.2, 1), opacity 180ms ease, box-shadow 220ms ease, border-color 220ms ease":"opacity 180ms ease, box-shadow 220ms ease, border-color 220ms ease"},"aria-hidden":o,"data-testid":"agent-panel","data-state":o?"closed":"open",role:"complementary","aria-label":e,children:[jsx("div",{role:"separator","aria-orientation":"vertical","aria-label":c,onPointerDown:Y,style:{position:"absolute",left:-3,top:0,bottom:0,width:6,cursor:"col-resize",touchAction:"none",zIndex:1},"data-testid":"agent-panel-resize-handle"}),jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"14px 16px 10px",flex:"0 0 auto",background:"#ffffff"},children:[jsx("span",{style:{display:"inline-flex",alignItems:"center",color:"#0b57d0"},children:t??jsx(ae,{size:22})}),jsx("span",{style:{flex:1,fontSize:15,fontWeight:500,color:"#1f1f1f",letterSpacing:.1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e}),g&&jsx("button",{type:"button",onClick:g,"aria-label":l,title:l,"data-testid":"agent-panel-close",style:{border:"none",background:"transparent",padding:6,cursor:"pointer",display:"inline-flex",alignItems:"center",justifyContent:"center",color:"#444746",borderRadius:999,transition:"background 0.15s"},onMouseEnter:m=>{m.currentTarget.style.background="#f1f3f4";},onMouseLeave:m=>{m.currentTarget.style.background="transparent";},children:jsx(le,{size:18})})]}),jsx("div",{style:{flex:1,minHeight:0,overflow:"hidden",display:"flex",flexDirection:"column"},children:x})]})}function ge(e){let t={},l=/(=\d+|\w+)\s*\{([^}]*)\}/g,c;for(;(c=l.exec(e))!==null;)t[c[1]]=c[2];return t}function F(e,t,l="en"){return t?e.replace(/\{(\w+),\s*plural,\s*((?:[^{}]|\{[^{}]*\})*)\}/g,(u,d,p)=>{let r=Number(t[d]);if(isNaN(r))return u;let f=ge(p),g=f[`=${r}`];if(g!==void 0)return g.replace(/#/g,String(r));let x;try{x=new Intl.PluralRules(l).select(r);}catch{x=r===1?"one":"other";}return (f[x]??f.other??"").replace(/#/g,String(r))}).replace(/\{(\w+)\}/g,(u,d)=>{let p=t[d];return p!==void 0?String(p):`{${d}}`}):e}function V(e){let t=e.replace(/_/g," ");return t.charAt(0).toUpperCase()+t.slice(1)}var xe=y.agentPanel.thinking,he=y.agentPanel.composerPlaceholder,be=y.agentPanel.send,ye=e=>F(y.agentPanel.timeline.working,{count:e}),Ae=e=>F(y.agentPanel.timeline.summary,{count:e}),Se=e=>F(y.agentPanel.timeline.earlier,{count:e}),j="ep-agent-chat-keyframes",Ce=`
2
2
  @keyframes epAgentDot {
3
3
  0%, 80%, 100% { transform: scale(0.6); opacity: 0.4; }
4
4
  40% { transform: scale(1); opacity: 1; }
@@ -585,6 +585,12 @@ interface ListRendering {
585
585
  markerFontFamily?: string;
586
586
  /** Marker font size from numbering level rPr, in points */
587
587
  markerFontSize?: number;
588
+ /**
589
+ * Suffix character placed after the marker before body text (§17.9.25).
590
+ * Default is `tab`; `space` inserts a single space; `nothing` no gap.
591
+ * Drives marker-slot sizing in `getListMarkerInlineWidth`.
592
+ */
593
+ markerSuffix?: LevelSuffix;
588
594
  /**
589
595
  * NumberFormat for each level from 0..ilvl (inclusive).
590
596
  * Used to resolve multi-level templates like "%1.%2." where each %N
@@ -895,6 +901,16 @@ interface TableStructuralChangeInfo {
895
901
  type: 'tableRowInsertion' | 'tableRowDeletion' | 'tableCellInsertion' | 'tableCellDeletion' | 'tableCellMerge';
896
902
  /** Tracked change metadata */
897
903
  info: TrackedChangeInfo;
904
+ /**
905
+ * `<w:cellMerge w:vMerge="…">` value, only meaningful for `tableCellMerge`.
906
+ * Schema `ST_AnnotationVMerge`: `"rest"` = anchor (start of merged span),
907
+ * `"cont"` = continuation (merged into predecessor). Word's default for a
908
+ * tracked merge is `"cont"` (most edits track "this cell got merged INTO
909
+ * the one above"); we preserve the on-disk value when present.
910
+ */
911
+ vMerge?: 'rest' | 'cont';
912
+ /** `<w:cellMerge w:vMergeOrig="…">` — the pre-merge vMerge state. */
913
+ vMergeOrig?: 'rest' | 'cont';
898
914
  }
899
915
 
900
916
  /**
@@ -1362,6 +1378,20 @@ interface Paragraph {
1362
1378
  formatting?: ParagraphFormatting;
1363
1379
  /** Paragraph-level tracked property changes (w:pPrChange) */
1364
1380
  propertyChanges?: ParagraphPropertyChange[];
1381
+ /**
1382
+ * Paragraph-mark insertion tracking (`<w:pPr><w:rPr><w:ins/>`). Set when
1383
+ * this paragraph's terminating pilcrow was added as a tracked change —
1384
+ * e.g., the user pressed Enter mid-paragraph in suggesting mode. Reject
1385
+ * joins this paragraph with the following one.
1386
+ */
1387
+ pPrIns?: TrackedChangeInfo;
1388
+ /**
1389
+ * Paragraph-mark deletion tracking (`<w:pPr><w:rPr><w:del/>`). Set when
1390
+ * this paragraph's terminating pilcrow was deleted as a tracked change —
1391
+ * e.g., the user pressed Backspace at the start of the next paragraph in
1392
+ * suggesting mode. Accept joins this paragraph with the following one.
1393
+ */
1394
+ pPrDel?: TrackedChangeInfo;
1365
1395
  /** Paragraph content */
1366
1396
  content: ParagraphContent[];
1367
1397
  /** Computed list rendering (if this is a list item) */
@@ -1984,6 +2014,23 @@ interface MediaFile {
1984
2014
  dataUrl?: string;
1985
2015
  }
1986
2016
 
2017
+ /**
2018
+ * settings.xml parser
2019
+ *
2020
+ * Extracts document-wide settings the layout pipeline needs at render time.
2021
+ * We only read what's currently consumed; most of settings.xml (compatibility
2022
+ * flags, view state, autoformat) is irrelevant to layout.
2023
+ */
2024
+ /** Document-wide settings parsed from `word/settings.xml`. */
2025
+ interface DocumentSettings {
2026
+ /**
2027
+ * `w:defaultTabStop` (§17.6.13) — interval in twips between default tab
2028
+ * stops applied when a paragraph has no custom `w:tabs`. Word's default
2029
+ * if unspecified is 720 twips (0.5 inch).
2030
+ */
2031
+ defaultTabStop: number;
2032
+ }
2033
+
1987
2034
  /**
1988
2035
  * Comprehensive TypeScript types for full DOCX document representation
1989
2036
  *
@@ -2012,6 +2059,8 @@ interface DocxPackage {
2012
2059
  theme?: Theme;
2013
2060
  /** Numbering definitions */
2014
2061
  numbering?: NumberingDefinitions;
2062
+ /** Document-wide settings from `word/settings.xml` */
2063
+ settings?: DocumentSettings;
2015
2064
  /** Font table */
2016
2065
  fontTable?: FontTable;
2017
2066
  /** Footnotes */
@@ -585,6 +585,12 @@ interface ListRendering {
585
585
  markerFontFamily?: string;
586
586
  /** Marker font size from numbering level rPr, in points */
587
587
  markerFontSize?: number;
588
+ /**
589
+ * Suffix character placed after the marker before body text (§17.9.25).
590
+ * Default is `tab`; `space` inserts a single space; `nothing` no gap.
591
+ * Drives marker-slot sizing in `getListMarkerInlineWidth`.
592
+ */
593
+ markerSuffix?: LevelSuffix;
588
594
  /**
589
595
  * NumberFormat for each level from 0..ilvl (inclusive).
590
596
  * Used to resolve multi-level templates like "%1.%2." where each %N
@@ -895,6 +901,16 @@ interface TableStructuralChangeInfo {
895
901
  type: 'tableRowInsertion' | 'tableRowDeletion' | 'tableCellInsertion' | 'tableCellDeletion' | 'tableCellMerge';
896
902
  /** Tracked change metadata */
897
903
  info: TrackedChangeInfo;
904
+ /**
905
+ * `<w:cellMerge w:vMerge="…">` value, only meaningful for `tableCellMerge`.
906
+ * Schema `ST_AnnotationVMerge`: `"rest"` = anchor (start of merged span),
907
+ * `"cont"` = continuation (merged into predecessor). Word's default for a
908
+ * tracked merge is `"cont"` (most edits track "this cell got merged INTO
909
+ * the one above"); we preserve the on-disk value when present.
910
+ */
911
+ vMerge?: 'rest' | 'cont';
912
+ /** `<w:cellMerge w:vMergeOrig="…">` — the pre-merge vMerge state. */
913
+ vMergeOrig?: 'rest' | 'cont';
898
914
  }
899
915
 
900
916
  /**
@@ -1362,6 +1378,20 @@ interface Paragraph {
1362
1378
  formatting?: ParagraphFormatting;
1363
1379
  /** Paragraph-level tracked property changes (w:pPrChange) */
1364
1380
  propertyChanges?: ParagraphPropertyChange[];
1381
+ /**
1382
+ * Paragraph-mark insertion tracking (`<w:pPr><w:rPr><w:ins/>`). Set when
1383
+ * this paragraph's terminating pilcrow was added as a tracked change —
1384
+ * e.g., the user pressed Enter mid-paragraph in suggesting mode. Reject
1385
+ * joins this paragraph with the following one.
1386
+ */
1387
+ pPrIns?: TrackedChangeInfo;
1388
+ /**
1389
+ * Paragraph-mark deletion tracking (`<w:pPr><w:rPr><w:del/>`). Set when
1390
+ * this paragraph's terminating pilcrow was deleted as a tracked change —
1391
+ * e.g., the user pressed Backspace at the start of the next paragraph in
1392
+ * suggesting mode. Accept joins this paragraph with the following one.
1393
+ */
1394
+ pPrDel?: TrackedChangeInfo;
1365
1395
  /** Paragraph content */
1366
1396
  content: ParagraphContent[];
1367
1397
  /** Computed list rendering (if this is a list item) */
@@ -1984,6 +2014,23 @@ interface MediaFile {
1984
2014
  dataUrl?: string;
1985
2015
  }
1986
2016
 
2017
+ /**
2018
+ * settings.xml parser
2019
+ *
2020
+ * Extracts document-wide settings the layout pipeline needs at render time.
2021
+ * We only read what's currently consumed; most of settings.xml (compatibility
2022
+ * flags, view state, autoformat) is irrelevant to layout.
2023
+ */
2024
+ /** Document-wide settings parsed from `word/settings.xml`. */
2025
+ interface DocumentSettings {
2026
+ /**
2027
+ * `w:defaultTabStop` (§17.6.13) — interval in twips between default tab
2028
+ * stops applied when a paragraph has no custom `w:tabs`. Word's default
2029
+ * if unspecified is 720 twips (0.5 inch).
2030
+ */
2031
+ defaultTabStop: number;
2032
+ }
2033
+
1987
2034
  /**
1988
2035
  * Comprehensive TypeScript types for full DOCX document representation
1989
2036
  *
@@ -2012,6 +2059,8 @@ interface DocxPackage {
2012
2059
  theme?: Theme;
2013
2060
  /** Numbering definitions */
2014
2061
  numbering?: NumberingDefinitions;
2062
+ /** Document-wide settings from `word/settings.xml` */
2063
+ settings?: DocumentSettings;
2015
2064
  /** Font table */
2016
2065
  fontTable?: FontTable;
2017
2066
  /** Footnotes */
package/dist/server.d.mts CHANGED
@@ -31,4 +31,4 @@
31
31
  * @packageDocumentation
32
32
  * @public
33
33
  */
34
- export { s as AgentContextSnapshot, j as AgentToolDefinition, k as AgentToolResult, D as DocxReviewer, E as EditorBridge, S as SelectionInfo, o as createReviewerBridge, n as docxAgentTools, p as executeToolCall, t as getToolDisplayName, q as getToolSchemas } from './server-B7RHNVSu.mjs';
34
+ export { s as AgentContextSnapshot, j as AgentToolDefinition, k as AgentToolResult, D as DocxReviewer, E as EditorBridge, S as SelectionInfo, o as createReviewerBridge, n as docxAgentTools, p as executeToolCall, t as getToolDisplayName, q as getToolSchemas } from './server-BELKcdSd.mjs';
package/dist/server.d.ts CHANGED
@@ -31,4 +31,4 @@
31
31
  * @packageDocumentation
32
32
  * @public
33
33
  */
34
- export { s as AgentContextSnapshot, j as AgentToolDefinition, k as AgentToolResult, D as DocxReviewer, E as EditorBridge, S as SelectionInfo, o as createReviewerBridge, n as docxAgentTools, p as executeToolCall, t as getToolDisplayName, q as getToolSchemas } from './server-B7RHNVSu.js';
34
+ export { s as AgentContextSnapshot, j as AgentToolDefinition, k as AgentToolResult, D as DocxReviewer, E as EditorBridge, S as SelectionInfo, o as createReviewerBridge, n as docxAgentTools, p as executeToolCall, t as getToolDisplayName, q as getToolSchemas } from './server-BELKcdSd.js';
package/dist/server.js CHANGED
@@ -1 +1 @@
1
- 'use strict';var chunkRP4LYHUB_js=require('./chunk-RP4LYHUB.js'),chunk6Z6UJ4RC_js=require('./chunk-6Z6UJ4RC.js'),chunkRI5S75JY_js=require('./chunk-RI5S75JY.js');Object.defineProperty(exports,"DocxReviewer",{enumerable:true,get:function(){return chunkRP4LYHUB_js.a}});Object.defineProperty(exports,"createReviewerBridge",{enumerable:true,get:function(){return chunk6Z6UJ4RC_js.m}});Object.defineProperty(exports,"docxAgentTools",{enumerable:true,get:function(){return chunkRI5S75JY_js.a}});Object.defineProperty(exports,"executeToolCall",{enumerable:true,get:function(){return chunkRI5S75JY_js.b}});Object.defineProperty(exports,"getToolDisplayName",{enumerable:true,get:function(){return chunkRI5S75JY_js.c}});Object.defineProperty(exports,"getToolSchemas",{enumerable:true,get:function(){return chunkRI5S75JY_js.d}});
1
+ 'use strict';var chunkVGEZQUGC_js=require('./chunk-VGEZQUGC.js'),chunkFUL3O7MO_js=require('./chunk-FUL3O7MO.js'),chunkRI5S75JY_js=require('./chunk-RI5S75JY.js');Object.defineProperty(exports,"DocxReviewer",{enumerable:true,get:function(){return chunkVGEZQUGC_js.a}});Object.defineProperty(exports,"createReviewerBridge",{enumerable:true,get:function(){return chunkFUL3O7MO_js.m}});Object.defineProperty(exports,"docxAgentTools",{enumerable:true,get:function(){return chunkRI5S75JY_js.a}});Object.defineProperty(exports,"executeToolCall",{enumerable:true,get:function(){return chunkRI5S75JY_js.b}});Object.defineProperty(exports,"getToolDisplayName",{enumerable:true,get:function(){return chunkRI5S75JY_js.c}});Object.defineProperty(exports,"getToolSchemas",{enumerable:true,get:function(){return chunkRI5S75JY_js.d}});
package/dist/server.mjs CHANGED
@@ -1 +1 @@
1
- export{a as DocxReviewer}from'./chunk-MQIZY6IO.mjs';export{m as createReviewerBridge}from'./chunk-EKCQF23W.mjs';export{a as docxAgentTools,b as executeToolCall,c as getToolDisplayName,d as getToolSchemas}from'./chunk-24MVJKCP.mjs';
1
+ export{a as DocxReviewer}from'./chunk-UIE7JPED.mjs';export{m as createReviewerBridge}from'./chunk-F22XEI77.mjs';export{a as docxAgentTools,b as executeToolCall,c as getToolDisplayName,d as getToolSchemas}from'./chunk-24MVJKCP.mjs';
package/dist/vue.js CHANGED
@@ -1,4 +1,4 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`vue`),t=require(`@eigenpal/docx-editor-core/headless`);var n={_lang:`en`,agentPanel:{defaultTitle:`Assistant`,close:`Close panel`,resizeHandle:`Resize agent panel`,thinking:`Assistant is thinking`,composerPlaceholder:`Ask the assistant…`,send:`Send`,timeline:{working:`Working… {count, plural, one {# step} other {# steps}}`,summary:`{count, plural, one {# step} other {# steps}}`,earlier:`+ {count, plural, one {# earlier step} other {# earlier steps}}`}},aiActions:{header:`AI Actions`,askAi:`Ask AI`,rewrite:`Rewrite`,expand:`Expand`,summarize:`Summarize`,translate:`Translate`,explain:`Explain`,fixGrammar:`Fix grammar`,makeFormal:`Make formal`,makeCasual:`Make casual`,custom:`Custom`,customPlaceholder:`Custom prompt…`},aiPreview:{defaultTitle:`AI Response`,labels:{rewrite:`Rewrite`,expand:`Expand`,summarize:`Summary`,translate:`Translation`,explain:`Explanation`,fixGrammar:`Grammar Fix`,makeFormal:`Formal Version`,makeCasual:`Casual Version`,custom:`AI Response`,askAi:`AI Response`},loading:`Processing…`,original:`Original:`,suggested:`Suggested:`,edit:`Edit`,discard:`Discard`,accept:`Accept`,retry:`Retry`,close:`Close`}},r=[`aria-hidden`,`aria-label`,`data-state`],i=[`aria-label`,`aria-valuenow`,`aria-valuemin`,`aria-valuemax`,`aria-valuetext`],a=[`aria-label`,`title`],o=`eigenpal:docx-editor:agentPanelWidth`,s=(0,e.defineComponent)({__name:`AgentPanel`,props:{title:{default:()=>n.agentPanel.defaultTitle},closeLabel:{default:()=>n.agentPanel.close},resizeHandleLabel:{default:()=>n.agentPanel.resizeHandle},width:{default:void 0},defaultWidth:{default:360},minWidth:{default:280},maxWidth:{default:600},closed:{type:Boolean,default:!1},closable:{type:Boolean,default:!0},className:{default:``}},emits:[`close`,`update:width`],setup(t,{emit:n}){let s=t,c=n,l=(0,e.computed)(()=>s.width!==void 0);function u(){if(typeof window>`u`)return s.defaultWidth;try{let e=window.localStorage.getItem(o);if(e){let t=Number(e);if(Number.isFinite(t)&&t>=s.minWidth&&t<=s.maxWidth)return t}}catch{}return s.defaultWidth}let d=(0,e.ref)(l.value?s.width:u()),f=(0,e.computed)(()=>l.value?s.width:d.value),p=(0,e.ref)(!1),m=null;(0,e.watch)(()=>s.closed,()=>{m!==null&&window.clearTimeout(m),p.value=!0,m=window.setTimeout(()=>{p.value=!1,m=null},260)},{flush:`post`});let h=null;function g(e){if(!h)return;let t=h.startX-e.clientX,n=Math.min(s.maxWidth,Math.max(s.minWidth,h.startWidth+t));h.lastWidth=n,l.value||(d.value=n),c(`update:width`,n)}function _(){if(!h)return;let e=h.lastWidth;if(h=null,document.removeEventListener(`pointermove`,g),document.removeEventListener(`pointerup`,_),!l.value)try{window.localStorage.setItem(o,String(e))}catch{}}function v(e){e.preventDefault(),h={startX:e.clientX,startWidth:f.value,lastWidth:f.value},document.addEventListener(`pointermove`,g),document.addEventListener(`pointerup`,_)}function y(e){s.closable&&(e.stopPropagation(),c(`close`))}function b(e){let t=0,n=null,r=e.shiftKey?64:16;switch(e.key){case`ArrowLeft`:t=r;break;case`ArrowRight`:t=-r;break;case`Home`:n=s.maxWidth;break;case`End`:n=s.minWidth;break;default:return}e.preventDefault();let i=n===null?Math.min(s.maxWidth,Math.max(s.minWidth,f.value+t)):n;if(l.value||(d.value=i),c(`update:width`,i),!l.value)try{window.localStorage.setItem(o,String(i))}catch{}}(0,e.onBeforeUnmount)(()=>{document.removeEventListener(`pointermove`,g),document.removeEventListener(`pointerup`,_),m!==null&&window.clearTimeout(m)});let x=(0,e.computed)(()=>({width:s.closed?`0px`:`${f.value}px`,flex:s.closed?`0 0 0px`:`0 0 ${f.value}px`,height:`calc(100% - 16px)`,margin:s.closed?`8px 0 8px 0`:`8px 8px 8px 12px`,display:`flex`,flexDirection:`column`,background:`#ffffff`,border:s.closed?`1px solid transparent`:`1px solid #e3e3e3`,borderRadius:`16px`,boxShadow:s.closed?`none`:`0 1px 2px rgba(60,64,67,0.05), 0 4px 12px rgba(60,64,67,0.08)`,opacity:+!s.closed,pointerEvents:s.closed?`none`:`auto`,position:`relative`,boxSizing:`border-box`,minWidth:s.closed?0:`${s.minWidth}px`,overflow:`hidden`,fontFamily:`'Google Sans', 'Google Sans Text', system-ui, -apple-system, sans-serif`,transition:p.value?`flex-basis 220ms cubic-bezier(0.4, 0, 0.2, 1), width 220ms cubic-bezier(0.4, 0, 0.2, 1), margin 220ms cubic-bezier(0.4, 0, 0.2, 1), opacity 180ms ease, box-shadow 220ms ease, border-color 220ms ease`:`opacity 180ms ease, box-shadow 220ms ease, border-color 220ms ease`})),S={position:`absolute`,left:`-3px`,top:0,bottom:0,width:`6px`,cursor:`col-resize`,touchAction:`none`,zIndex:1},C={display:`flex`,alignItems:`center`,gap:`10px`,padding:`14px 16px 10px`,flex:`0 0 auto`,background:`#ffffff`},w={display:`inline-flex`,alignItems:`center`,color:`#0b57d0`},T={flex:1,fontSize:`15px`,fontWeight:500,color:`#1f1f1f`,letterSpacing:`0.1px`,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},E={border:`none`,background:`transparent`,padding:`6px`,cursor:`pointer`,display:`inline-flex`,alignItems:`center`,justifyContent:`center`,color:`#444746`,borderRadius:`999px`,transition:`background 0.15s`},D={flex:1,minHeight:0,overflow:`hidden`,display:`flex`,flexDirection:`column`};function O(e,t){let n=t.currentTarget;n&&(n.style.background=e?`#f1f3f4`:`transparent`)}return(n,o)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:(0,e.normalizeClass)([`ep-agent-panel`,t.className]),style:(0,e.normalizeStyle)(x.value),"aria-hidden":t.closed,"aria-label":t.title,role:`complementary`,"data-testid":`agent-panel`,"data-state":t.closed?`closed`:`open`,onKeydown:(0,e.withKeys)(y,[`esc`])},[(0,e.createElementVNode)(`div`,{role:`separator`,"aria-orientation":`vertical`,"aria-label":t.resizeHandleLabel,"aria-valuenow":f.value,"aria-valuemin":t.minWidth,"aria-valuemax":t.maxWidth,"aria-valuetext":`${f.value} pixels wide`,tabindex:`0`,style:S,"data-testid":`agent-panel-resize-handle`,onPointerdown:v,onKeydown:b},null,40,i),(0,e.createElementVNode)(`div`,{style:C},[(0,e.createElementVNode)(`span`,{style:w},[(0,e.renderSlot)(n.$slots,`icon`,{},()=>[o[3]||=(0,e.createElementVNode)(`svg`,{viewBox:`0 -960 960 960`,width:`22`,height:`22`,fill:`currentColor`,"aria-hidden":`true`},[(0,e.createElementVNode)(`path`,{d:`m760-600-50-110-110-50 110-50 50-110 50 110 110 50-110 50-50 110Zm0 560-50-110-110-50 110-50 50-110 50 110 110 50-110 50-50 110ZM360-160 260-380 40-480l220-100 100-220 100 220 220 100-220 100-100 220Zm0-194 40-86 86-40-86-40-40-86-40 86-86 40 86 40 40 86Zm0-126Z`})],-1)])]),(0,e.createElementVNode)(`span`,{style:T},(0,e.toDisplayString)(t.title),1),t.closable?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:0,type:`button`,"aria-label":t.closeLabel,title:t.closeLabel,"data-testid":`agent-panel-close`,style:E,onClick:o[0]||=e=>c(`close`),onMouseenter:o[1]||=e=>O(!0,e),onMouseleave:o[2]||=e=>O(!1,e)},[...o[4]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 -960 960 960`,width:`18`,height:`18`,fill:`currentColor`,"aria-hidden":`true`},[(0,e.createElementVNode)(`path`,{d:`m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z`})],-1)]],40,a)):(0,e.createCommentVNode)(``,!0)]),(0,e.createElementVNode)(`div`,{style:D},[(0,e.renderSlot)(n.$slots,`default`)])],46,r))}});function c(e){let t={},n=/(=\d+|\w+)\s*\{([^}]*)\}/g,r;for(;(r=n.exec(e))!==null;)t[r[1]]=r[2];return t}function l(e,t,n=`en`){return t?e.replace(/\{(\w+),\s*plural,\s*((?:[^{}]|\{[^{}]*\})*)\}/g,(e,r,i)=>{let a=Number(t[r]);if(isNaN(a))return e;let o=c(i),s=o[`=${a}`];if(s!==void 0)return s.replace(/#/g,String(a));let l;try{l=new Intl.PluralRules(n).select(a)}catch{l=a===1?`one`:`other`}return(o[l]??o.other??``).replace(/#/g,String(a))}).replace(/\{(\w+)\}/g,(e,n)=>{let r=t[n];return r===void 0?`{${n}}`:String(r)}):e}function u(e){let t=e.replace(/_/g,` `);return t.charAt(0).toUpperCase()+t.slice(1)}var d=[`aria-expanded`],f={key:1,style:{marginRight:`6px`,display:`inline-flex`},"aria-hidden":`true`},p=(0,e.defineComponent)({__name:`AgentTimeline`,props:{toolCalls:{},streaming:{type:Boolean,default:!1},maxVisibleCalls:{default:3},humanizeName:{type:Function,default:void 0},workingLabel:{type:Function,default:void 0},summaryLabel:{type:Function,default:void 0},earlierLabel:{type:Function,default:void 0}},setup(t){let r=t,i=(0,e.ref)(null),a=(0,e.computed)(()=>i.value===null?!!r.streaming:i.value),o=e=>(r.humanizeName??u)(e),s=e=>(r.earlierLabel??(e=>l(n.agentPanel.timeline.earlier,{count:e})))(e),c=(0,e.computed)(()=>{let e=r.toolCalls.length;return r.streaming?(r.workingLabel??(e=>l(n.agentPanel.timeline.working,{count:e})))(e):(r.summaryLabel??(e=>l(n.agentPanel.timeline.summary,{count:e})))(e)}),p=(0,e.computed)(()=>r.toolCalls.slice(-r.maxVisibleCalls)),m=(0,e.computed)(()=>Math.max(0,r.toolCalls.length-p.value.length)),h=(0,e.computed)(()=>({fontSize:`12px`,color:`#5f6368`,transition:`transform 0.15s ease`,marginLeft:`8px`,display:`inline-block`,transform:a.value?`rotate(180deg)`:`rotate(0deg)`}));function g(e=!1){return{marginRight:e?0:`6px`,display:`inline-flex`,animation:`epAgentSpin 0.8s linear infinite`,flexShrink:0}}let _={timelineWrap:{alignSelf:`flex-start`,maxWidth:`92%`,background:`#fff`,border:`1px solid #e1e3e6`,borderRadius:`12px`,overflow:`hidden`,fontFamily:`'Google Sans Text', system-ui, sans-serif`},timelineHeader:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,width:`100%`,padding:`8px 12px`,background:`transparent`,border:`none`,cursor:`pointer`,fontSize:`12.5px`,color:`#1f1f1f`,fontFamily:`inherit`},timelineSummary:{display:`inline-flex`,alignItems:`center`,fontWeight:500},timelineList:{listStyle:`none`,margin:0,padding:`4px 12px 10px 12px`,display:`flex`,flexDirection:`column`,gap:`6px`,borderTop:`1px solid #ececf0`},timelineItem:{display:`flex`,alignItems:`center`,gap:`8px`,fontSize:`12px`,color:`#444746`},timelineDot:{width:`6px`,height:`6px`,borderRadius:`50%`,flexShrink:0},timelineCall:{display:`inline-flex`,flexDirection:`column`,minWidth:0},timelineCallName:{color:`#1f1f1f`},timelineError:{color:`#d93025`,fontSize:`11px`},timelineMore:{fontSize:`11px`,color:`#5f6368`,fontStyle:`italic`,paddingLeft:`14px`}};return(n,r)=>t.toolCalls.length>0?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,style:(0,e.normalizeStyle)(_.timelineWrap),"data-testid":`agent-timeline`},[(0,e.createElementVNode)(`button`,{type:`button`,"aria-expanded":a.value,style:(0,e.normalizeStyle)(_.timelineHeader),"data-testid":`agent-timeline-toggle`,onClick:r[0]||=e=>i.value=!a.value},[(0,e.createElementVNode)(`span`,{style:(0,e.normalizeStyle)(_.timelineSummary)},[t.streaming?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,{key:0,style:(0,e.normalizeStyle)(g()),"aria-hidden":`true`},[...r[1]||=[(0,e.createElementVNode)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`},[(0,e.createElementVNode)(`circle`,{cx:`12`,cy:`12`,r:`9`,stroke:`#dadce0`,"stroke-width":`3`,fill:`none`}),(0,e.createElementVNode)(`path`,{d:`M21 12a9 9 0 0 0-9-9`,stroke:`#0b57d0`,"stroke-width":`3`,"stroke-linecap":`round`})],-1)]],4)):((0,e.openBlock)(),(0,e.createElementBlock)(`span`,f,[...r[2]||=[(0,e.createElementVNode)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`},[(0,e.createElementVNode)(`path`,{d:`M5 13l4 4L19 7`,stroke:`#1e8e3e`,"stroke-width":`2.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`})],-1)]])),(0,e.createTextVNode)(` `+(0,e.toDisplayString)(c.value),1)],4),(0,e.createElementVNode)(`span`,{style:(0,e.normalizeStyle)(h.value),"aria-hidden":`true`},`▾`,4)],12,d),a.value?((0,e.openBlock)(),(0,e.createElementBlock)(`ol`,{key:0,style:(0,e.normalizeStyle)(_.timelineList)},[m.value>0?((0,e.openBlock)(),(0,e.createElementBlock)(`li`,{key:0,style:(0,e.normalizeStyle)(_.timelineMore),"data-testid":`agent-timeline-earlier`},(0,e.toDisplayString)(s(m.value)),5)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(p.value,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`li`,{key:t.id,style:(0,e.normalizeStyle)(_.timelineItem)},[t.status===`running`?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,{key:0,style:(0,e.normalizeStyle)(g(!0)),"aria-hidden":`true`},[...r[3]||=[(0,e.createElementVNode)(`svg`,{width:`10`,height:`10`,viewBox:`0 0 24 24`,fill:`none`},[(0,e.createElementVNode)(`circle`,{cx:`12`,cy:`12`,r:`9`,stroke:`#dadce0`,"stroke-width":`3`,fill:`none`}),(0,e.createElementVNode)(`path`,{d:`M21 12a9 9 0 0 0-9-9`,stroke:`#0b57d0`,"stroke-width":`3`,"stroke-linecap":`round`})],-1)]],4)):((0,e.openBlock)(),(0,e.createElementBlock)(`span`,{key:1,style:(0,e.normalizeStyle)({..._.timelineDot,background:t.status===`error`?`#d93025`:`#1e8e3e`}),"aria-hidden":`true`},null,4)),(0,e.createElementVNode)(`span`,{style:(0,e.normalizeStyle)(_.timelineCall)},[(0,e.createElementVNode)(`span`,{style:(0,e.normalizeStyle)(_.timelineCallName)},(0,e.toDisplayString)(o(t.name)),5),t.error?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,{key:0,style:(0,e.normalizeStyle)(_.timelineError)},(0,e.toDisplayString)(t.error),5)):(0,e.createCommentVNode)(``,!0)],4)],4))),128))],4)):(0,e.createCommentVNode)(``,!0)],4)):(0,e.createCommentVNode)(``,!0)}}),m=[`data-role`],h=[`aria-label`],g=`ep-agent-chat-keyframes`,_=(0,e.defineComponent)({__name:`AgentChatLog`,props:{messages:{},loading:{type:Boolean,default:!1},error:{default:null},thinkingLabel:{default:()=>n.agentPanel.thinking},workingLabel:{type:Function,default:void 0},summaryLabel:{type:Function,default:void 0},earlierLabel:{type:Function,default:void 0},autoScroll:{type:Boolean,default:!0},humanizeToolName:{type:Function,default:void 0},maxVisibleCalls:{default:3},className:{default:``}},setup(t){let n=t,r=(0,e.ref)(null),i=(0,e.ref)(null),a=(0,e.computed)(()=>n.messages.length===0&&!n.loading&&!n.error);function o(){if(!n.autoScroll)return;let e=n.messages[n.messages.length-1]?.status===`streaming`;i.value?.scrollIntoView({behavior:e||n.loading?`auto`:`smooth`,block:`end`})}(0,e.onMounted)(()=>{(0,e.nextTick)(o),s()}),(0,e.watch)([()=>n.messages.length,()=>n.messages[n.messages.length-1]?.toolCalls?.length??0,()=>n.loading,()=>n.messages[n.messages.length-1]?.status===`streaming`],o,{flush:`post`});function s(){if(typeof document>`u`||document.getElementById(g))return;let e=document.createElement(`style`);e.id=g,e.textContent=`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`vue`),t=require(`@eigenpal/docx-editor-core/headless`);var n={_lang:`en`,agentPanel:{defaultTitle:`Assistant`,close:`Close panel`,resizeHandle:`Resize agent panel`,thinking:`Assistant is thinking`,composerPlaceholder:`Ask the assistant…`,send:`Send`,timeline:{working:`Working… {count, plural, one {# step} other {# steps}}`,summary:`{count, plural, one {# step} other {# steps}}`,earlier:`+ {count, plural, one {# earlier step} other {# earlier steps}}`}},aiActions:{header:`AI Actions`,askAi:`Ask AI`,rewrite:`Rewrite`,expand:`Expand`,summarize:`Summarize`,translate:`Translate`,explain:`Explain`,fixGrammar:`Fix grammar`,makeFormal:`Make formal`,makeCasual:`Make casual`,custom:`Custom`,customPlaceholder:`Custom prompt…`},aiPreview:{defaultTitle:`AI Response`,labels:{rewrite:`Rewrite`,expand:`Expand`,summarize:`Summary`,translate:`Translation`,explain:`Explanation`,fixGrammar:`Grammar Fix`,makeFormal:`Formal Version`,makeCasual:`Casual Version`,custom:`AI Response`,askAi:`AI Response`},loading:`Processing…`,original:`Original:`,suggested:`Suggested:`,edit:`Edit`,discard:`Discard`,accept:`Accept`,retry:`Retry`,close:`Close`}},r=[`aria-hidden`,`aria-label`,`data-state`],i=[`aria-label`,`aria-valuenow`,`aria-valuemin`,`aria-valuemax`,`aria-valuetext`],a=[`aria-label`,`title`],o=`eigenpal:docx-editor:agentPanelWidth`,s=(0,e.defineComponent)({__name:`AgentPanel`,props:{title:{default:()=>n.agentPanel.defaultTitle},closeLabel:{default:()=>n.agentPanel.close},resizeHandleLabel:{default:()=>n.agentPanel.resizeHandle},width:{default:void 0},defaultWidth:{default:360},minWidth:{default:280},maxWidth:{default:600},closed:{type:Boolean,default:!1},closable:{type:Boolean,default:!0},className:{default:``}},emits:[`close`,`update:width`],setup(t,{emit:n}){let s=t,c=n,l=(0,e.computed)(()=>s.width!==void 0);function u(){if(typeof window>`u`)return s.defaultWidth;try{let e=window.localStorage.getItem(o);if(e){let t=Number(e);if(Number.isFinite(t)&&t>=s.minWidth&&t<=s.maxWidth)return t}}catch{}return s.defaultWidth}let d=(0,e.ref)(l.value?s.width:u()),f=(0,e.computed)(()=>l.value?s.width:d.value),p=(0,e.ref)(!1),m=null;(0,e.watch)(()=>s.closed,()=>{m!==null&&window.clearTimeout(m),p.value=!0,m=window.setTimeout(()=>{p.value=!1,m=null},260)},{flush:`post`});let h=null;function g(e){if(!h)return;let t=h.startX-e.clientX,n=Math.min(s.maxWidth,Math.max(s.minWidth,h.startWidth+t));h.lastWidth=n,l.value||(d.value=n),c(`update:width`,n)}function _(){if(!h)return;let e=h.lastWidth;if(h=null,document.removeEventListener(`pointermove`,g),document.removeEventListener(`pointerup`,_),!l.value)try{window.localStorage.setItem(o,String(e))}catch{}}function v(e){e.preventDefault(),h={startX:e.clientX,startWidth:f.value,lastWidth:f.value},document.addEventListener(`pointermove`,g),document.addEventListener(`pointerup`,_)}function y(e){s.closable&&(e.stopPropagation(),c(`close`))}function b(e){let t=0,n=null,r=e.shiftKey?64:16;switch(e.key){case`ArrowLeft`:t=r;break;case`ArrowRight`:t=-r;break;case`Home`:n=s.maxWidth;break;case`End`:n=s.minWidth;break;default:return}e.preventDefault();let i=n===null?Math.min(s.maxWidth,Math.max(s.minWidth,f.value+t)):n;if(l.value||(d.value=i),c(`update:width`,i),!l.value)try{window.localStorage.setItem(o,String(i))}catch{}}(0,e.onBeforeUnmount)(()=>{document.removeEventListener(`pointermove`,g),document.removeEventListener(`pointerup`,_),m!==null&&window.clearTimeout(m)});let x=(0,e.computed)(()=>({width:s.closed?`0px`:`${f.value}px`,flex:s.closed?`0 0 0px`:`0 0 ${f.value}px`,height:`calc(100% - 16px)`,margin:s.closed?`8px 0 8px 0`:`8px 8px 8px 12px`,display:`flex`,flexDirection:`column`,background:`#ffffff`,border:s.closed?`1px solid transparent`:`1px solid #e3e3e3`,borderRadius:`16px`,boxShadow:s.closed?`none`:`0 1px 2px rgba(60,64,67,0.05), 0 4px 12px rgba(60,64,67,0.08)`,opacity:+!s.closed,pointerEvents:s.closed?`none`:`auto`,position:`relative`,boxSizing:`border-box`,minWidth:s.closed?0:`${s.minWidth}px`,overflow:`hidden`,fontFamily:`'Google Sans', 'Google Sans Text', system-ui, -apple-system, sans-serif`,transition:p.value?`flex-basis 220ms cubic-bezier(0.4, 0, 0.2, 1), width 220ms cubic-bezier(0.4, 0, 0.2, 1), margin 220ms cubic-bezier(0.4, 0, 0.2, 1), opacity 180ms ease, box-shadow 220ms ease, border-color 220ms ease`:`opacity 180ms ease, box-shadow 220ms ease, border-color 220ms ease`})),S={position:`absolute`,left:`-3px`,top:0,bottom:0,width:`6px`,cursor:`col-resize`,touchAction:`none`,zIndex:1},C={display:`flex`,alignItems:`center`,gap:`10px`,padding:`14px 16px 10px`,flex:`0 0 auto`,background:`#ffffff`},w={display:`inline-flex`,alignItems:`center`,color:`#0b57d0`},T={flex:1,fontSize:`15px`,fontWeight:500,color:`#1f1f1f`,letterSpacing:`0.1px`,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},E={border:`none`,background:`transparent`,padding:`6px`,cursor:`pointer`,display:`inline-flex`,alignItems:`center`,justifyContent:`center`,color:`#444746`,borderRadius:`999px`,transition:`background 0.15s`},D={flex:1,minHeight:0,overflow:`hidden`,display:`flex`,flexDirection:`column`};function O(e,t){let n=t.currentTarget;n&&(n.style.background=e?`#f1f3f4`:`transparent`)}return(n,o)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:(0,e.normalizeClass)([`ep-agent-panel`,t.className]),style:(0,e.normalizeStyle)(x.value),"aria-hidden":t.closed,"aria-label":t.title,role:`complementary`,"data-testid":`agent-panel`,"data-state":t.closed?`closed`:`open`,onKeydown:(0,e.withKeys)(y,[`esc`])},[(0,e.createElementVNode)(`div`,{role:`separator`,"aria-orientation":`vertical`,"aria-label":t.resizeHandleLabel,"aria-valuenow":f.value,"aria-valuemin":t.minWidth,"aria-valuemax":t.maxWidth,"aria-valuetext":`${f.value} pixels wide`,tabindex:`0`,style:S,"data-testid":`agent-panel-resize-handle`,onPointerdown:v,onKeydown:b},null,40,i),(0,e.createElementVNode)(`div`,{style:C},[(0,e.createElementVNode)(`span`,{style:w},[(0,e.renderSlot)(n.$slots,`icon`,{},()=>[o[3]||=(0,e.createElementVNode)(`svg`,{viewBox:`0 -960 960 960`,width:`22`,height:`22`,fill:`currentColor`,"aria-hidden":`true`},[(0,e.createElementVNode)(`path`,{d:`m760-600-50-110-110-50 110-50 50-110 50 110 110 50-110 50-50 110Zm0 560-50-110-110-50 110-50 50-110 50 110 110 50-110 50-50 110ZM360-160 260-380 40-480l220-100 100-220 100 220 220 100-220 100-100 220Zm0-194 40-86 86-40-86-40-40-86-40 86-86 40 86 40 40 86Zm0-126Z`})],-1)])]),(0,e.createElementVNode)(`span`,{style:T},(0,e.toDisplayString)(t.title),1),t.closable?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:0,type:`button`,"aria-label":t.closeLabel,title:t.closeLabel,"data-testid":`agent-panel-close`,style:E,onClick:o[0]||=e=>c(`close`),onMouseenter:o[1]||=e=>O(!0,e),onMouseleave:o[2]||=e=>O(!1,e)},[...o[4]||=[(0,e.createElementVNode)(`svg`,{viewBox:`0 -960 960 960`,width:`18`,height:`18`,fill:`currentColor`,"aria-hidden":`true`},[(0,e.createElementVNode)(`path`,{d:`m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z`})],-1)]],40,a)):(0,e.createCommentVNode)(``,!0)]),(0,e.createElementVNode)(`div`,{style:D},[(0,e.renderSlot)(n.$slots,`default`)])],46,r))}});function c(e){let t={},n=/(=\d+|\w+)\s*\{([^}]*)\}/g,r;for(;(r=n.exec(e))!==null;)t[r[1]]=r[2];return t}function l(e,t,n=`en`){return t?e.replace(/\{(\w+),\s*plural,\s*((?:[^{}]|\{[^{}]*\})*)\}/g,(e,r,i)=>{let a=Number(t[r]);if(isNaN(a))return e;let o=c(i),s=o[`=${a}`];if(s!==void 0)return s.replace(/#/g,String(a));let l;try{l=new Intl.PluralRules(n).select(a)}catch{l=a===1?`one`:`other`}return(o[l]??o.other??``).replace(/#/g,String(a))}).replace(/\{(\w+)\}/g,(e,n)=>{let r=t[n];return r===void 0?`{${n}}`:String(r)}):e}function u(e){let t=e.replace(/_/g,` `);return t.charAt(0).toUpperCase()+t.slice(1)}var d=[`aria-expanded`],f={key:1,style:{marginRight:`6px`,display:`inline-flex`},"aria-hidden":`true`},p=(0,e.defineComponent)({__name:`AgentTimeline`,props:{toolCalls:{},streaming:{type:Boolean,default:!1},maxVisibleCalls:{default:3},humanizeName:{type:Function,default:void 0},workingLabel:{type:Function,default:void 0},summaryLabel:{type:Function,default:void 0},earlierLabel:{type:Function,default:void 0}},setup(t){let r=t,i=(0,e.ref)(null),a=(0,e.computed)(()=>i.value===null?!!r.streaming:i.value),o=e=>(r.humanizeName??u)(e),s=e=>(r.earlierLabel??(e=>l(n.agentPanel.timeline.earlier,{count:e})))(e),c=(0,e.computed)(()=>{let e=r.toolCalls.length;return r.streaming?(r.workingLabel??(e=>l(n.agentPanel.timeline.working,{count:e})))(e):(r.summaryLabel??(e=>l(n.agentPanel.timeline.summary,{count:e})))(e)}),p=(0,e.computed)(()=>r.toolCalls.slice(-r.maxVisibleCalls)),m=(0,e.computed)(()=>Math.max(0,r.toolCalls.length-p.value.length)),h=(0,e.computed)(()=>({fontSize:`12px`,color:`#5f6368`,transition:`transform 0.15s ease`,marginLeft:`8px`,display:`inline-block`,transform:a.value?`rotate(180deg)`:`rotate(0deg)`}));function g(e=!1){return{marginRight:e?0:`6px`,display:`inline-flex`,animation:`epAgentSpin 0.8s linear infinite`,flexShrink:0}}let _={timelineWrap:{alignSelf:`flex-start`,maxWidth:`92%`,background:`#fff`,border:`1px solid #e1e3e6`,borderRadius:`12px`,overflow:`hidden`,fontFamily:`'Google Sans Text', system-ui, sans-serif`},timelineHeader:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,width:`100%`,padding:`8px 12px`,background:`transparent`,border:`none`,cursor:`pointer`,fontSize:`12.5px`,color:`#1f1f1f`,fontFamily:`inherit`},timelineSummary:{display:`inline-flex`,alignItems:`center`,fontWeight:500},timelineList:{listStyle:`none`,margin:0,padding:`4px 12px 10px 12px`,display:`flex`,flexDirection:`column`,gap:`6px`,borderTop:`1px solid #ececf0`},timelineItem:{display:`flex`,alignItems:`center`,gap:`8px`,fontSize:`12px`,color:`#444746`},timelineDot:{width:`6px`,height:`6px`,borderRadius:`50%`,flexShrink:0},timelineCall:{display:`inline-flex`,flexDirection:`column`,minWidth:0},timelineCallName:{color:`#1f1f1f`},timelineError:{color:`#d93025`,fontSize:`11px`},timelineMore:{fontSize:`11px`,color:`#5f6368`,fontStyle:`italic`,paddingLeft:`14px`}};return(n,r)=>t.toolCalls.length>0?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,style:(0,e.normalizeStyle)(_.timelineWrap),"data-testid":`agent-timeline`},[(0,e.createElementVNode)(`button`,{type:`button`,"aria-expanded":a.value,style:(0,e.normalizeStyle)(_.timelineHeader),"data-testid":`agent-timeline-toggle`,onClick:r[0]||=e=>i.value=!a.value},[(0,e.createElementVNode)(`span`,{style:(0,e.normalizeStyle)(_.timelineSummary)},[t.streaming?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,{key:0,style:(0,e.normalizeStyle)(g()),"aria-hidden":`true`},[...r[1]||=[(0,e.createElementVNode)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`},[(0,e.createElementVNode)(`circle`,{cx:`12`,cy:`12`,r:`9`,stroke:`#dadce0`,"stroke-width":`3`,fill:`none`}),(0,e.createElementVNode)(`path`,{d:`M21 12a9 9 0 0 0-9-9`,stroke:`#0b57d0`,"stroke-width":`3`,"stroke-linecap":`round`})],-1)]],4)):((0,e.openBlock)(),(0,e.createElementBlock)(`span`,f,[...r[2]||=[(0,e.createElementVNode)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`},[(0,e.createElementVNode)(`path`,{d:`M5 13l4 4L19 7`,stroke:`#1e8e3e`,"stroke-width":`2.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`})],-1)]])),(0,e.createTextVNode)(` `+(0,e.toDisplayString)(c.value),1)],4),(0,e.createElementVNode)(`span`,{style:(0,e.normalizeStyle)(h.value),"aria-hidden":`true`},`▾`,4)],12,d),a.value?((0,e.openBlock)(),(0,e.createElementBlock)(`ol`,{key:0,style:(0,e.normalizeStyle)(_.timelineList)},[m.value>0?((0,e.openBlock)(),(0,e.createElementBlock)(`li`,{key:0,style:(0,e.normalizeStyle)(_.timelineMore),"data-testid":`agent-timeline-earlier`},(0,e.toDisplayString)(s(m.value)),5)):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(p.value,t=>((0,e.openBlock)(),(0,e.createElementBlock)(`li`,{key:t.id,style:(0,e.normalizeStyle)(_.timelineItem)},[t.status===`running`?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,{key:0,style:(0,e.normalizeStyle)(g(!0)),"aria-hidden":`true`},[...r[3]||=[(0,e.createElementVNode)(`svg`,{width:`10`,height:`10`,viewBox:`0 0 24 24`,fill:`none`},[(0,e.createElementVNode)(`circle`,{cx:`12`,cy:`12`,r:`9`,stroke:`#dadce0`,"stroke-width":`3`,fill:`none`}),(0,e.createElementVNode)(`path`,{d:`M21 12a9 9 0 0 0-9-9`,stroke:`#0b57d0`,"stroke-width":`3`,"stroke-linecap":`round`})],-1)]],4)):((0,e.openBlock)(),(0,e.createElementBlock)(`span`,{key:1,style:(0,e.normalizeStyle)({..._.timelineDot,background:t.status===`error`?`#d93025`:`#1e8e3e`}),"aria-hidden":`true`},null,4)),(0,e.createElementVNode)(`span`,{style:(0,e.normalizeStyle)(_.timelineCall)},[(0,e.createElementVNode)(`span`,{style:(0,e.normalizeStyle)(_.timelineCallName)},(0,e.toDisplayString)(o(t.name)),5),t.error?((0,e.openBlock)(),(0,e.createElementBlock)(`span`,{key:0,style:(0,e.normalizeStyle)(_.timelineError)},(0,e.toDisplayString)(t.error),5)):(0,e.createCommentVNode)(``,!0)],4)],4))),128))],4)):(0,e.createCommentVNode)(``,!0)],4)):(0,e.createCommentVNode)(``,!0)}}),m=[`data-role`],h=[`aria-label`],g=`ep-agent-chat-keyframes`,_=(0,e.defineComponent)({__name:`AgentChatLog`,props:{messages:{},loading:{type:Boolean,default:!1},error:{default:null},thinkingLabel:{default:()=>n.agentPanel.thinking},workingLabel:{type:Function,default:void 0},summaryLabel:{type:Function,default:void 0},earlierLabel:{type:Function,default:void 0},autoScroll:{type:Boolean,default:!0},humanizeToolName:{type:Function,default:void 0},maxVisibleCalls:{default:3},className:{default:``}},setup(t){let n=t,r=(0,e.ref)(null),i=(0,e.computed)(()=>n.messages.length===0&&!n.loading&&!n.error);function a(){if(!n.autoScroll)return;let e=n.messages[n.messages.length-1]?.status===`streaming`;r.value?.scrollIntoView({behavior:e||n.loading?`auto`:`smooth`,block:`end`})}(0,e.onMounted)(()=>{(0,e.nextTick)(a),o()}),(0,e.watch)([()=>n.messages.length,()=>n.messages[n.messages.length-1]?.toolCalls?.length??0,()=>n.loading,()=>n.messages[n.messages.length-1]?.status===`streaming`],a,{flush:`post`});function o(){if(typeof document>`u`||document.getElementById(g))return;let e=document.createElement(`style`);e.id=g,e.textContent=`
2
2
  @keyframes epAgentDot {
3
3
  0%, 80%, 100% { transform: scale(0.6); opacity: 0.4; }
4
4
  40% { transform: scale(1); opacity: 1; }
@@ -6,7 +6,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require
6
6
  @keyframes epAgentSpin {
7
7
  to { transform: rotate(360deg); }
8
8
  }
9
- `,document.head.appendChild(e)}let c={flex:1,overflow:`auto`,padding:`16px 14px 8px`,display:`flex`,flexDirection:`column`,gap:`10px`},l={messageGroup:{display:`flex`,flexDirection:`column`,gap:`6px`,width:`100%`},userBubble:{background:`#0b57d0`,color:`#fff`,padding:`10px 14px`,borderRadius:`20px 20px 4px 20px`,fontSize:`13.5px`,lineHeight:1.5,alignSelf:`flex-end`,maxWidth:`88%`,whiteSpace:`pre-wrap`,wordBreak:`break-word`,fontFamily:`'Google Sans', 'Google Sans Text', system-ui, -apple-system, sans-serif`},assistantBubble:{background:`#f0f4f9`,color:`#1f1f1f`,padding:`12px 16px`,borderRadius:`20px 20px 20px 4px`,fontSize:`13.5px`,lineHeight:1.55,alignSelf:`flex-start`,maxWidth:`92%`,whiteSpace:`pre-wrap`,wordBreak:`break-word`,fontFamily:`'Google Sans', 'Google Sans Text', system-ui, -apple-system, sans-serif`},thinkingBubble:{background:`#f0f4f9`,padding:`12px 16px`,borderRadius:`20px 20px 20px 4px`,alignSelf:`flex-start`,display:`flex`,gap:`4px`,alignItems:`center`},dot:{width:`6px`,height:`6px`,borderRadius:`50%`,background:`#5f6368`,display:`inline-block`,animation:`epAgentDot 1.4s infinite ease-in-out`},errorBubble:{background:`#fce8e6`,color:`#b3261e`,padding:`10px 14px`,borderRadius:`16px`,fontSize:`12.5px`,alignSelf:`flex-start`,maxWidth:`92%`,whiteSpace:`pre-wrap`,fontFamily:`'Google Sans Text', system-ui, sans-serif`}};return(n,o)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:(0,e.normalizeClass)([`ep-agent-chat-log`,t.className]),style:c,ref_key:`rootEl`,ref:r,role:`log`,"aria-live":`polite`,"aria-atomic":`false`},[a.value?(0,e.renderSlot)(n.$slots,`empty`,{key:0}):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.messages,n=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:n.id,style:(0,e.normalizeStyle)(l.messageGroup),"data-role":n.role},[n.role===`assistant`&&n.toolCalls&&n.toolCalls.length>0?((0,e.openBlock)(),(0,e.createBlock)(p,{key:0,"tool-calls":n.toolCalls,streaming:n.status===`streaming`,"humanize-name":t.humanizeToolName,"max-visible-calls":t.maxVisibleCalls,"working-label":t.workingLabel,"summary-label":t.summaryLabel,"earlier-label":t.earlierLabel},null,8,[`tool-calls`,`streaming`,`humanize-name`,`max-visible-calls`,`working-label`,`summary-label`,`earlier-label`])):(0,e.createCommentVNode)(``,!0),n.text.length>0?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:1,style:(0,e.normalizeStyle)(n.role===`user`?l.userBubble:l.assistantBubble)},(0,e.toDisplayString)(n.text),5)):(0,e.createCommentVNode)(``,!0)],12,m))),128)),t.loading?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:1,style:(0,e.normalizeStyle)(l.thinkingBubble),"aria-label":t.thinkingLabel},[(0,e.createElementVNode)(`span`,{style:(0,e.normalizeStyle)({...l.dot,animationDelay:`0s`})},null,4),(0,e.createElementVNode)(`span`,{style:(0,e.normalizeStyle)({...l.dot,animationDelay:`0.15s`})},null,4),(0,e.createElementVNode)(`span`,{style:(0,e.normalizeStyle)({...l.dot,animationDelay:`0.3s`})},null,4)],12,h)):(0,e.createCommentVNode)(``,!0),t.error?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:2,style:(0,e.normalizeStyle)(l.errorBubble),role:`alert`},(0,e.toDisplayString)(t.error),5)):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,{ref_key:`endEl`,ref:i},null,512)],2))}}),v=[`value`,`placeholder`,`disabled`],y=[`aria-label`,`disabled`],b=(0,e.defineComponent)({__name:`AgentComposer`,props:{modelValue:{},disabled:{type:Boolean,default:!1},placeholder:{default:()=>n.agentPanel.composerPlaceholder},sendLabel:{default:()=>n.agentPanel.send},className:{default:``}},emits:[`update:modelValue`,`submit`],setup(t,{emit:n}){let r=t,i=n,a=(0,e.computed)(()=>r.modelValue.trim().length>0&&!r.disabled);function o(){a.value&&i(`submit`)}let s=(0,e.computed)(()=>({width:`36px`,height:`36px`,borderRadius:`50%`,border:`none`,background:`#0b57d0`,color:`#fff`,flexShrink:0,display:`inline-flex`,alignItems:`center`,justifyContent:`center`,transition:`background 0.15s, opacity 0.15s, transform 0.15s`,opacity:a.value?1:.35,cursor:a.value?`pointer`:`not-allowed`})),c={composerWrap:{padding:`8px 12px 14px`,background:`#fff`,flex:`0 0 auto`},composerShell:{display:`flex`,alignItems:`center`,gap:`4px`,padding:`6px 6px 6px 18px`,background:`#fff`,border:`1px solid #c4c7c5`,borderRadius:`28px`,boxShadow:`0 1px 2px rgba(60,64,67,0.04)`,transition:`border-color 0.15s, box-shadow 0.15s`,fontFamily:`'Google Sans Text', system-ui, sans-serif`},composerInput:{flex:1,padding:`8px 0`,fontSize:`14px`,border:`none`,outline:`none`,background:`transparent`,fontFamily:`inherit`,color:`#1f1f1f`},footnote:{fontSize:`11px`,color:`#5f6368`,textAlign:`center`,marginTop:`10px`,fontFamily:`'Google Sans Text', system-ui, sans-serif`}};return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`form`,{class:(0,e.normalizeClass)([`ep-agent-composer`,t.className]),style:(0,e.normalizeStyle)(c.composerWrap),onSubmit:(0,e.withModifiers)(o,[`prevent`])},[(0,e.createElementVNode)(`div`,{style:(0,e.normalizeStyle)(c.composerShell)},[(0,e.createElementVNode)(`input`,{style:(0,e.normalizeStyle)(c.composerInput),value:t.modelValue,placeholder:t.placeholder,disabled:t.disabled,onInput:r[0]||=e=>i(`update:modelValue`,e.target.value)},null,44,v),(0,e.createElementVNode)(`button`,{type:`submit`,"aria-label":t.sendLabel,disabled:!a.value,style:(0,e.normalizeStyle)(s.value)},[...r[1]||=[(0,e.createElementVNode)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,"aria-hidden":`true`},[(0,e.createElementVNode)(`path`,{d:`M12 19V5M5 12l7-7 7 7`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`})],-1)]],12,y)],4),n.$slots.footnote?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,style:(0,e.normalizeStyle)(c.footnote)},[(0,e.renderSlot)(n.$slots,`footnote`)],4)):(0,e.createCommentVNode)(``,!0)],38))}}),x=[`disabled`],S=(0,e.defineComponent)({__name:`AgentSuggestionChip`,props:{label:{},disabled:{type:Boolean}},emits:[`click`],setup(t,{emit:n}){let r=n,i={textAlign:`left`,background:`#fff`,border:`1px solid #dadce0`,borderRadius:`18px`,padding:`10px 14px`,fontSize:`13px`,color:`#1f1f1f`,cursor:`pointer`,fontFamily:`'Google Sans Text', system-ui, sans-serif`,lineHeight:1.4,transition:`background 0.15s, border-color 0.15s, box-shadow 0.15s`,width:`100%`};return(n,a)=>((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{type:`button`,style:i,disabled:t.disabled,onClick:a[0]||=e=>r(`click`)},(0,e.toDisplayString)(t.label),9,x))}}),C=[`aria-label`],w={class:`ai-ctx-menu__header`,"aria-hidden":`true`},T=[`onMousedown`],E=[`innerHTML`],D={class:`ai-ctx-menu__label`},O={key:0,class:`ai-ctx-menu__custom`},k=[`placeholder`],A=(0,e.defineComponent)({__name:`AIContextMenu`,props:{isOpen:{type:Boolean},position:{},selectedText:{},showCustomPrompt:{type:Boolean,default:!0},labels:{default:()=>({})}},emits:[`close`,`action`],setup(t,{emit:r}){let i=t,a=r,o=(0,e.ref)(``),s=(0,e.ref)([]);(0,e.watch)(()=>i.isOpen,t=>{t&&(0,e.nextTick)(()=>s.value[0]?.focus())},{immediate:!0});let c=[{id:`rewrite`,icon:`&#x270D;`},{id:`expand`,icon:`&#x2194;`},{id:`summarize`,icon:`&#x1F4DD;`},{id:`fixGrammar`,icon:`&#x2714;`},{id:`makeFormal`,icon:`&#x1F454;`},{id:`makeCasual`,icon:`&#x1F60A;`},{id:`translate`,icon:`&#x1F310;`},{id:`explain`,icon:`&#x1F4A1;`}],l=(0,e.computed)(()=>i.labels?.header??n.aiActions.header),u=(0,e.computed)(()=>i.labels?.customPlaceholder??n.aiActions.customPlaceholder);function d(e){return i.labels?.[e]||(n.aiActions[e]??e)}let f=(0,e.computed)(()=>{let e=i.position.x,t=i.position.y;return typeof window<`u`&&(e+220+10>window.innerWidth&&(e=window.innerWidth-220-10),t+360+10>window.innerHeight&&(t=window.innerHeight-360-10)),{position:`fixed`,left:`${e}px`,top:`${t}px`,zIndex:500}});function p(e){a(`action`,e,e===`custom`?o.value:void 0),o.value=``,a(`close`)}return(n,r)=>((0,e.openBlock)(),(0,e.createBlock)(e.Teleport,{to:`body`},[t.isOpen?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`ai-ctx-backdrop`,onMousedown:r[0]||=e=>a(`close`),onContextmenu:r[1]||=(0,e.withModifiers)(e=>a(`close`),[`prevent`])},null,32)):(0,e.createCommentVNode)(``,!0),t.isOpen?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:1,class:`ai-ctx-menu`,"aria-label":l.value,style:(0,e.normalizeStyle)(f.value),tabindex:`-1`,onContextmenu:r[4]||=(0,e.withModifiers)(()=>{},[`prevent`]),onKeydown:r[5]||=(0,e.withKeys)((0,e.withModifiers)(e=>a(`close`),[`stop`]),[`esc`])},[(0,e.createElementVNode)(`div`,w,(0,e.toDisplayString)(l.value),1),((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(c,t=>(0,e.createElementVNode)(`button`,{key:t.id,ref_for:!0,ref_key:`itemRefs`,ref:s,class:`ai-ctx-menu__item`,onMousedown:(0,e.withModifiers)(e=>p(t.id),[`prevent`])},[(0,e.createElementVNode)(`span`,{class:`ai-ctx-menu__icon`,innerHTML:t.icon},null,8,E),(0,e.createElementVNode)(`span`,D,(0,e.toDisplayString)(d(t.id)),1)],40,T)),64)),r[6]||=(0,e.createElementVNode)(`div`,{class:`ai-ctx-menu__divider`},null,-1),t.showCustomPrompt?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,O,[(0,e.withDirectives)((0,e.createElementVNode)(`input`,{"onUpdate:modelValue":r[2]||=e=>o.value=e,class:`ai-ctx-menu__input`,placeholder:u.value,onKeydown:r[3]||=(0,e.withKeys)((0,e.withModifiers)(e=>p(`custom`),[`prevent`]),[`enter`])},null,40,k),[[e.vModelText,o.value]])])):(0,e.createCommentVNode)(``,!0)],44,C)):(0,e.createCommentVNode)(``,!0)]))}}),j=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},M=j(A,[[`__scopeId`,`data-v-c30da7a7`]]),ee=[`aria-label`],te={class:`ai-preview__header`},ne={class:`ai-preview__title`},re=[`aria-label`],ie={key:0,class:`ai-preview__loading`},ae={key:1,class:`ai-preview__error`},oe={key:2,class:`ai-preview__content`},se={key:0,class:`ai-preview__diff`},ce={class:`ai-preview__diff-label`},le={class:`ai-preview__diff-text ai-preview__diff-text--old`},ue={class:`ai-preview__diff-label`},de={class:`ai-preview__diff-text ai-preview__diff-text--new`},N={key:1,class:`ai-preview__result`},P={key:3,class:`ai-preview__footer`},F=j((0,e.defineComponent)({__name:`AIResponsePreview`,props:{isVisible:{type:Boolean},originalText:{},responseText:{},action:{},isLoading:{type:Boolean},error:{default:void 0},allowEdit:{type:Boolean,default:!0},showDiff:{type:Boolean,default:!0},showRetry:{type:Boolean,default:!0},labels:{default:()=>({})}},emits:[`accept`,`reject`,`retry`],setup(t,{emit:r}){let i=t,a=r,o=(0,e.ref)(!1),s=(0,e.ref)(``),c=(0,e.computed)(()=>({loading:i.labels?.loading??n.aiPreview.loading,original:i.labels?.original??n.aiPreview.original,suggested:i.labels?.suggested??n.aiPreview.suggested,edit:i.labels?.edit??n.aiPreview.edit,discard:i.labels?.discard??n.aiPreview.discard,accept:i.labels?.accept??n.aiPreview.accept,retry:i.labels?.retry??n.aiPreview.retry,close:i.labels?.close??n.aiPreview.close})),l=(0,e.computed)(()=>i.labels?.actionTitles?.[i.action]||(n.aiPreview.labels[i.action]??n.aiPreview.defaultTitle));(0,e.watch)(()=>i.responseText,e=>{s.value=e,o.value=!1});function u(){a(`accept`,o.value?s.value:i.responseText)}return(n,r)=>t.isVisible?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`ai-preview`,role:`region`,"aria-label":l.value,tabindex:`-1`,onKeydown:r[5]||=(0,e.withKeys)((0,e.withModifiers)(e=>a(`reject`),[`stop`]),[`esc`])},[(0,e.createElementVNode)(`div`,te,[(0,e.createElementVNode)(`span`,ne,(0,e.toDisplayString)(l.value),1),(0,e.createElementVNode)(`button`,{class:`ai-preview__close`,"aria-label":c.value.close,onClick:r[0]||=e=>a(`reject`)},` ✕ `,8,re)]),t.isLoading?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ie,[r[6]||=(0,e.createElementVNode)(`span`,{class:`ai-preview__spinner`},null,-1),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(c.value.loading),1)])):t.error?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ae,[(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(t.error),1),t.showRetry?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:0,class:`ai-preview__retry`,onMousedown:r[1]||=(0,e.withModifiers)(e=>a(`retry`),[`prevent`])},(0,e.toDisplayString)(c.value.retry),33)):(0,e.createCommentVNode)(``,!0)])):((0,e.openBlock)(),(0,e.createElementBlock)(`div`,oe,[t.showDiff?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,se,[(0,e.createElementVNode)(`div`,ce,(0,e.toDisplayString)(c.value.original),1),(0,e.createElementVNode)(`div`,le,(0,e.toDisplayString)(t.originalText),1),(0,e.createElementVNode)(`div`,ue,(0,e.toDisplayString)(c.value.suggested),1),(0,e.createElementVNode)(`div`,de,(0,e.toDisplayString)(t.responseText),1)])):((0,e.openBlock)(),(0,e.createElementBlock)(`div`,N,(0,e.toDisplayString)(t.responseText),1)),t.allowEdit&&o.value?(0,e.withDirectives)(((0,e.openBlock)(),(0,e.createElementBlock)(`textarea`,{key:2,"onUpdate:modelValue":r[2]||=e=>s.value=e,class:`ai-preview__textarea`,rows:`4`},null,512)),[[e.vModelText,s.value]]):(0,e.createCommentVNode)(``,!0)])),!t.isLoading&&!t.error?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,P,[t.allowEdit&&!o.value?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:0,class:`ai-preview__btn`,onMousedown:r[3]||=(0,e.withModifiers)(e=>o.value=!0,[`prevent`])},(0,e.toDisplayString)(c.value.edit),33)):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`button`,{class:`ai-preview__btn`,onMousedown:r[4]||=(0,e.withModifiers)(e=>a(`reject`),[`prevent`])},(0,e.toDisplayString)(c.value.discard),33),(0,e.createElementVNode)(`button`,{class:`ai-preview__btn ai-preview__btn--primary`,onMousedown:(0,e.withModifiers)(u,[`prevent`])},(0,e.toDisplayString)(c.value.accept),33)])):(0,e.createCommentVNode)(``,!0)],40,ee)):(0,e.createCommentVNode)(``,!0)}}),[[`__scopeId`,`data-v-1226b741`]]),I=[`single`,`words`,`double`,`thick`,`dotted`,`dottedHeavy`,`dash`,`dashedHeavy`,`dashLong`,`dashLongHeavy`,`dotDash`,`dashDotHeavy`,`dotDotDash`,`dashDotDotHeavy`,`wave`,`wavyHeavy`,`wavyDouble`,`none`],L=[`black`,`blue`,`cyan`,`darkBlue`,`darkCyan`,`darkGray`,`darkGreen`,`darkMagenta`,`darkRed`,`darkYellow`,`green`,`lightGray`,`magenta`,`red`,`white`,`yellow`,`none`],R=[{name:`read_document`,displayName:`Reading document`,description:'Read the document content. Returns lines tagged with a stable paragraph id, e.g. "[2A1F3B] First paragraph". Use the bracketed id as `paraId` when commenting or suggesting changes — it survives edits, unlike ordinal indices. Returns the vanilla document (the doc as it exists right now, before any tracked suggestions are accepted): pending insertions are HIDDEN, pending deletions are shown as plain text (still part of the document until accepted), and comment markers are stripped. Use read_changes / read_comments to inspect what is pending.',inputSchema:{type:`object`,properties:{fromIndex:{type:`number`,description:`Start ordinal index (inclusive). Optional.`},toIndex:{type:`number`,description:`End ordinal index (inclusive). Optional.`}}},handler:(e,t)=>({success:!0,data:t.getContentAsText({fromIndex:e.fromIndex,toIndex:e.toIndex,includeTrackedChanges:!1,includeCommentAnchors:!1})})},{name:`read_selection`,displayName:`Reading selection`,description:`Read the user's current cursor or selection. Returns the selected text, the paragraph it lives in, and that paragraph's \`paraId\`. Use this when the user asks "fix this" or "review what I have selected".`,inputSchema:{type:`object`,properties:{}},handler:(e,t)=>{let n=t.getSelection();return n?{success:!0,data:n}:{success:!1,error:`No selection (editor not focused).`}}},{name:`read_page`,displayName:`Reading page`,description:`Read the contents of one rendered page (1-indexed). Returns paragraphs on the page, each tagged with its stable paraId. Use this when the user asks "summarize page 3" or "comment on what's on this page".`,inputSchema:{type:`object`,properties:{pageNumber:{type:`number`,description:`1-indexed page number.`}},required:[`pageNumber`]},handler:(e,t)=>{let n=t.getPage(e.pageNumber);if(!n){let n=t.getTotalPages();return n===0?{success:!1,error:`No pages rendered (headless mode or empty document).`}:{success:!1,error:`Page ${e.pageNumber} does not exist (document has ${n} page${n===1?``:`s`}).`}}return{success:!0,data:n.text||`(empty page)`}}},{name:`read_pages`,displayName:`Reading pages`,description:`Read a contiguous range of rendered pages (1-indexed, inclusive). Returns paragraphs across the range, each tagged with paraId. Cheaper than calling read_page repeatedly — single round-trip.`,inputSchema:{type:`object`,properties:{from:{type:`number`,description:`1-indexed start page (inclusive).`},to:{type:`number`,description:`1-indexed end page (inclusive).`}},required:[`from`,`to`]},handler:(e,t)=>{let n=t.getPages({from:e.from,to:e.to});if(n.length===0){let n=t.getTotalPages();return n===0?{success:!1,error:`No pages rendered (headless mode or empty document).`}:{success:!1,error:`No pages in range ${e.from}–${e.to} (document has ${n} page${n===1?``:`s`}).`}}return{success:!0,data:n.map(e=>`--- Page ${e.pageNumber} ---\n${e.text||`(empty page)`}`).join(`
9
+ `,document.head.appendChild(e)}let s={flex:1,overflow:`auto`,padding:`16px 14px 8px`,display:`flex`,flexDirection:`column`,gap:`10px`},c={messageGroup:{display:`flex`,flexDirection:`column`,gap:`6px`,width:`100%`},userBubble:{background:`#0b57d0`,color:`#fff`,padding:`10px 14px`,borderRadius:`20px 20px 4px 20px`,fontSize:`13.5px`,lineHeight:1.5,alignSelf:`flex-end`,maxWidth:`88%`,whiteSpace:`pre-wrap`,wordBreak:`break-word`,fontFamily:`'Google Sans', 'Google Sans Text', system-ui, -apple-system, sans-serif`},assistantBubble:{background:`#f0f4f9`,color:`#1f1f1f`,padding:`12px 16px`,borderRadius:`20px 20px 20px 4px`,fontSize:`13.5px`,lineHeight:1.55,alignSelf:`flex-start`,maxWidth:`92%`,whiteSpace:`pre-wrap`,wordBreak:`break-word`,fontFamily:`'Google Sans', 'Google Sans Text', system-ui, -apple-system, sans-serif`},thinkingBubble:{background:`#f0f4f9`,padding:`12px 16px`,borderRadius:`20px 20px 20px 4px`,alignSelf:`flex-start`,display:`flex`,gap:`4px`,alignItems:`center`},dot:{width:`6px`,height:`6px`,borderRadius:`50%`,background:`#5f6368`,display:`inline-block`,animation:`epAgentDot 1.4s infinite ease-in-out`},errorBubble:{background:`#fce8e6`,color:`#b3261e`,padding:`10px 14px`,borderRadius:`16px`,fontSize:`12.5px`,alignSelf:`flex-start`,maxWidth:`92%`,whiteSpace:`pre-wrap`,fontFamily:`'Google Sans Text', system-ui, sans-serif`}};return(n,a)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:(0,e.normalizeClass)([`ep-agent-chat-log`,t.className]),style:s,role:`log`,"aria-live":`polite`,"aria-atomic":`false`},[i.value?(0,e.renderSlot)(n.$slots,`empty`,{key:0}):(0,e.createCommentVNode)(``,!0),((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(t.messages,n=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:n.id,style:(0,e.normalizeStyle)(c.messageGroup),"data-role":n.role},[n.role===`assistant`&&n.toolCalls&&n.toolCalls.length>0?((0,e.openBlock)(),(0,e.createBlock)(p,{key:0,"tool-calls":n.toolCalls,streaming:n.status===`streaming`,"humanize-name":t.humanizeToolName,"max-visible-calls":t.maxVisibleCalls,"working-label":t.workingLabel,"summary-label":t.summaryLabel,"earlier-label":t.earlierLabel},null,8,[`tool-calls`,`streaming`,`humanize-name`,`max-visible-calls`,`working-label`,`summary-label`,`earlier-label`])):(0,e.createCommentVNode)(``,!0),n.text.length>0?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:1,style:(0,e.normalizeStyle)(n.role===`user`?c.userBubble:c.assistantBubble)},(0,e.toDisplayString)(n.text),5)):(0,e.createCommentVNode)(``,!0)],12,m))),128)),t.loading?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:1,style:(0,e.normalizeStyle)(c.thinkingBubble),"aria-label":t.thinkingLabel},[(0,e.createElementVNode)(`span`,{style:(0,e.normalizeStyle)({...c.dot,animationDelay:`0s`})},null,4),(0,e.createElementVNode)(`span`,{style:(0,e.normalizeStyle)({...c.dot,animationDelay:`0.15s`})},null,4),(0,e.createElementVNode)(`span`,{style:(0,e.normalizeStyle)({...c.dot,animationDelay:`0.3s`})},null,4)],12,h)):(0,e.createCommentVNode)(``,!0),t.error?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:2,style:(0,e.normalizeStyle)(c.errorBubble),role:`alert`},(0,e.toDisplayString)(t.error),5)):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,{ref_key:`endEl`,ref:r},null,512)],2))}}),v=[`value`,`placeholder`,`disabled`],y=[`aria-label`,`disabled`],b=(0,e.defineComponent)({__name:`AgentComposer`,props:{modelValue:{},disabled:{type:Boolean,default:!1},placeholder:{default:()=>n.agentPanel.composerPlaceholder},sendLabel:{default:()=>n.agentPanel.send},className:{default:``}},emits:[`update:modelValue`,`submit`],setup(t,{emit:n}){let r=t,i=n,a=(0,e.computed)(()=>r.modelValue.trim().length>0&&!r.disabled);function o(){a.value&&i(`submit`)}let s=(0,e.computed)(()=>({width:`36px`,height:`36px`,borderRadius:`50%`,border:`none`,background:`#0b57d0`,color:`#fff`,flexShrink:0,display:`inline-flex`,alignItems:`center`,justifyContent:`center`,transition:`background 0.15s, opacity 0.15s, transform 0.15s`,opacity:a.value?1:.35,cursor:a.value?`pointer`:`not-allowed`})),c={composerWrap:{padding:`8px 12px 14px`,background:`#fff`,flex:`0 0 auto`},composerShell:{display:`flex`,alignItems:`center`,gap:`4px`,padding:`6px 6px 6px 18px`,background:`#fff`,border:`1px solid #c4c7c5`,borderRadius:`28px`,boxShadow:`0 1px 2px rgba(60,64,67,0.04)`,transition:`border-color 0.15s, box-shadow 0.15s`,fontFamily:`'Google Sans Text', system-ui, sans-serif`},composerInput:{flex:1,padding:`8px 0`,fontSize:`14px`,border:`none`,outline:`none`,background:`transparent`,fontFamily:`inherit`,color:`#1f1f1f`},footnote:{fontSize:`11px`,color:`#5f6368`,textAlign:`center`,marginTop:`10px`,fontFamily:`'Google Sans Text', system-ui, sans-serif`}};return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`form`,{class:(0,e.normalizeClass)([`ep-agent-composer`,t.className]),style:(0,e.normalizeStyle)(c.composerWrap),onSubmit:(0,e.withModifiers)(o,[`prevent`])},[(0,e.createElementVNode)(`div`,{style:(0,e.normalizeStyle)(c.composerShell)},[(0,e.createElementVNode)(`input`,{style:(0,e.normalizeStyle)(c.composerInput),value:t.modelValue,placeholder:t.placeholder,disabled:t.disabled,onInput:r[0]||=e=>i(`update:modelValue`,e.target.value)},null,44,v),(0,e.createElementVNode)(`button`,{type:`submit`,"aria-label":t.sendLabel,disabled:!a.value,style:(0,e.normalizeStyle)(s.value)},[...r[1]||=[(0,e.createElementVNode)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,"aria-hidden":`true`},[(0,e.createElementVNode)(`path`,{d:`M12 19V5M5 12l7-7 7 7`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`})],-1)]],12,y)],4),n.$slots.footnote?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,style:(0,e.normalizeStyle)(c.footnote)},[(0,e.renderSlot)(n.$slots,`footnote`)],4)):(0,e.createCommentVNode)(``,!0)],38))}}),x=[`disabled`],S=(0,e.defineComponent)({__name:`AgentSuggestionChip`,props:{label:{},disabled:{type:Boolean}},emits:[`click`],setup(t,{emit:n}){let r=n,i={textAlign:`left`,background:`#fff`,border:`1px solid #dadce0`,borderRadius:`18px`,padding:`10px 14px`,fontSize:`13px`,color:`#1f1f1f`,cursor:`pointer`,fontFamily:`'Google Sans Text', system-ui, sans-serif`,lineHeight:1.4,transition:`background 0.15s, border-color 0.15s, box-shadow 0.15s`,width:`100%`};return(n,a)=>((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{type:`button`,style:i,disabled:t.disabled,onClick:a[0]||=e=>r(`click`)},(0,e.toDisplayString)(t.label),9,x))}}),C=[`aria-label`],w={class:`ai-ctx-menu__header`,"aria-hidden":`true`},T=[`onMousedown`],E=[`innerHTML`],D={class:`ai-ctx-menu__label`},O={key:0,class:`ai-ctx-menu__custom`},k=[`placeholder`],A=(0,e.defineComponent)({__name:`AIContextMenu`,props:{isOpen:{type:Boolean},position:{},selectedText:{},showCustomPrompt:{type:Boolean,default:!0},labels:{default:()=>({})}},emits:[`close`,`action`],setup(t,{emit:r}){let i=t,a=r,o=(0,e.ref)(``),s=(0,e.ref)([]);(0,e.watch)(()=>i.isOpen,t=>{t&&(0,e.nextTick)(()=>s.value[0]?.focus())},{immediate:!0});let c=[{id:`rewrite`,icon:`&#x270D;`},{id:`expand`,icon:`&#x2194;`},{id:`summarize`,icon:`&#x1F4DD;`},{id:`fixGrammar`,icon:`&#x2714;`},{id:`makeFormal`,icon:`&#x1F454;`},{id:`makeCasual`,icon:`&#x1F60A;`},{id:`translate`,icon:`&#x1F310;`},{id:`explain`,icon:`&#x1F4A1;`}],l=(0,e.computed)(()=>i.labels?.header??n.aiActions.header),u=(0,e.computed)(()=>i.labels?.customPlaceholder??n.aiActions.customPlaceholder);function d(e){return i.labels?.[e]||(n.aiActions[e]??e)}let f=(0,e.computed)(()=>{let e=i.position.x,t=i.position.y;return typeof window<`u`&&(e+220+10>window.innerWidth&&(e=window.innerWidth-220-10),t+360+10>window.innerHeight&&(t=window.innerHeight-360-10)),{position:`fixed`,left:`${e}px`,top:`${t}px`,zIndex:500}});function p(e){a(`action`,e,e===`custom`?o.value:void 0),o.value=``,a(`close`)}return(n,r)=>((0,e.openBlock)(),(0,e.createBlock)(e.Teleport,{to:`body`},[t.isOpen?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`ai-ctx-backdrop`,onMousedown:r[0]||=e=>a(`close`),onContextmenu:r[1]||=(0,e.withModifiers)(e=>a(`close`),[`prevent`])},null,32)):(0,e.createCommentVNode)(``,!0),t.isOpen?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:1,class:`ai-ctx-menu`,"aria-label":l.value,style:(0,e.normalizeStyle)(f.value),tabindex:`-1`,onContextmenu:r[4]||=(0,e.withModifiers)(()=>{},[`prevent`]),onKeydown:r[5]||=(0,e.withKeys)((0,e.withModifiers)(e=>a(`close`),[`stop`]),[`esc`])},[(0,e.createElementVNode)(`div`,w,(0,e.toDisplayString)(l.value),1),((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(c,t=>(0,e.createElementVNode)(`button`,{key:t.id,ref_for:!0,ref_key:`itemRefs`,ref:s,class:`ai-ctx-menu__item`,onMousedown:(0,e.withModifiers)(e=>p(t.id),[`prevent`])},[(0,e.createElementVNode)(`span`,{class:`ai-ctx-menu__icon`,innerHTML:t.icon},null,8,E),(0,e.createElementVNode)(`span`,D,(0,e.toDisplayString)(d(t.id)),1)],40,T)),64)),r[6]||=(0,e.createElementVNode)(`div`,{class:`ai-ctx-menu__divider`},null,-1),t.showCustomPrompt?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,O,[(0,e.withDirectives)((0,e.createElementVNode)(`input`,{"onUpdate:modelValue":r[2]||=e=>o.value=e,class:`ai-ctx-menu__input`,placeholder:u.value,onKeydown:r[3]||=(0,e.withKeys)((0,e.withModifiers)(e=>p(`custom`),[`prevent`]),[`enter`])},null,40,k),[[e.vModelText,o.value]])])):(0,e.createCommentVNode)(``,!0)],44,C)):(0,e.createCommentVNode)(``,!0)]))}}),j=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},M=j(A,[[`__scopeId`,`data-v-c30da7a7`]]),ee=[`aria-label`],te={class:`ai-preview__header`},ne={class:`ai-preview__title`},re=[`aria-label`],ie={key:0,class:`ai-preview__loading`},ae={key:1,class:`ai-preview__error`},oe={key:2,class:`ai-preview__content`},se={key:0,class:`ai-preview__diff`},ce={class:`ai-preview__diff-label`},le={class:`ai-preview__diff-text ai-preview__diff-text--old`},ue={class:`ai-preview__diff-label`},de={class:`ai-preview__diff-text ai-preview__diff-text--new`},N={key:1,class:`ai-preview__result`},P={key:3,class:`ai-preview__footer`},F=j((0,e.defineComponent)({__name:`AIResponsePreview`,props:{isVisible:{type:Boolean},originalText:{},responseText:{},action:{},isLoading:{type:Boolean},error:{default:void 0},allowEdit:{type:Boolean,default:!0},showDiff:{type:Boolean,default:!0},showRetry:{type:Boolean,default:!0},labels:{default:()=>({})}},emits:[`accept`,`reject`,`retry`],setup(t,{emit:r}){let i=t,a=r,o=(0,e.ref)(!1),s=(0,e.ref)(``),c=(0,e.computed)(()=>({loading:i.labels?.loading??n.aiPreview.loading,original:i.labels?.original??n.aiPreview.original,suggested:i.labels?.suggested??n.aiPreview.suggested,edit:i.labels?.edit??n.aiPreview.edit,discard:i.labels?.discard??n.aiPreview.discard,accept:i.labels?.accept??n.aiPreview.accept,retry:i.labels?.retry??n.aiPreview.retry,close:i.labels?.close??n.aiPreview.close})),l=(0,e.computed)(()=>i.labels?.actionTitles?.[i.action]||(n.aiPreview.labels[i.action]??n.aiPreview.defaultTitle));(0,e.watch)(()=>i.responseText,e=>{s.value=e,o.value=!1});function u(){a(`accept`,o.value?s.value:i.responseText)}return(n,r)=>t.isVisible?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`ai-preview`,role:`region`,"aria-label":l.value,tabindex:`-1`,onKeydown:r[5]||=(0,e.withKeys)((0,e.withModifiers)(e=>a(`reject`),[`stop`]),[`esc`])},[(0,e.createElementVNode)(`div`,te,[(0,e.createElementVNode)(`span`,ne,(0,e.toDisplayString)(l.value),1),(0,e.createElementVNode)(`button`,{class:`ai-preview__close`,"aria-label":c.value.close,onClick:r[0]||=e=>a(`reject`)},` ✕ `,8,re)]),t.isLoading?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ie,[r[6]||=(0,e.createElementVNode)(`span`,{class:`ai-preview__spinner`},null,-1),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(c.value.loading),1)])):t.error?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ae,[(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)(t.error),1),t.showRetry?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:0,class:`ai-preview__retry`,onMousedown:r[1]||=(0,e.withModifiers)(e=>a(`retry`),[`prevent`])},(0,e.toDisplayString)(c.value.retry),33)):(0,e.createCommentVNode)(``,!0)])):((0,e.openBlock)(),(0,e.createElementBlock)(`div`,oe,[t.showDiff?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,se,[(0,e.createElementVNode)(`div`,ce,(0,e.toDisplayString)(c.value.original),1),(0,e.createElementVNode)(`div`,le,(0,e.toDisplayString)(t.originalText),1),(0,e.createElementVNode)(`div`,ue,(0,e.toDisplayString)(c.value.suggested),1),(0,e.createElementVNode)(`div`,de,(0,e.toDisplayString)(t.responseText),1)])):((0,e.openBlock)(),(0,e.createElementBlock)(`div`,N,(0,e.toDisplayString)(t.responseText),1)),t.allowEdit&&o.value?(0,e.withDirectives)(((0,e.openBlock)(),(0,e.createElementBlock)(`textarea`,{key:2,"onUpdate:modelValue":r[2]||=e=>s.value=e,class:`ai-preview__textarea`,rows:`4`},null,512)),[[e.vModelText,s.value]]):(0,e.createCommentVNode)(``,!0)])),!t.isLoading&&!t.error?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,P,[t.allowEdit&&!o.value?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:0,class:`ai-preview__btn`,onMousedown:r[3]||=(0,e.withModifiers)(e=>o.value=!0,[`prevent`])},(0,e.toDisplayString)(c.value.edit),33)):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`button`,{class:`ai-preview__btn`,onMousedown:r[4]||=(0,e.withModifiers)(e=>a(`reject`),[`prevent`])},(0,e.toDisplayString)(c.value.discard),33),(0,e.createElementVNode)(`button`,{class:`ai-preview__btn ai-preview__btn--primary`,onMousedown:(0,e.withModifiers)(u,[`prevent`])},(0,e.toDisplayString)(c.value.accept),33)])):(0,e.createCommentVNode)(``,!0)],40,ee)):(0,e.createCommentVNode)(``,!0)}}),[[`__scopeId`,`data-v-1226b741`]]),I=[`single`,`words`,`double`,`thick`,`dotted`,`dottedHeavy`,`dash`,`dashedHeavy`,`dashLong`,`dashLongHeavy`,`dotDash`,`dashDotHeavy`,`dotDotDash`,`dashDotDotHeavy`,`wave`,`wavyHeavy`,`wavyDouble`,`none`],L=[`black`,`blue`,`cyan`,`darkBlue`,`darkCyan`,`darkGray`,`darkGreen`,`darkMagenta`,`darkRed`,`darkYellow`,`green`,`lightGray`,`magenta`,`red`,`white`,`yellow`,`none`],R=[{name:`read_document`,displayName:`Reading document`,description:'Read the document content. Returns lines tagged with a stable paragraph id, e.g. "[2A1F3B] First paragraph". Use the bracketed id as `paraId` when commenting or suggesting changes — it survives edits, unlike ordinal indices. Returns the vanilla document (the doc as it exists right now, before any tracked suggestions are accepted): pending insertions are HIDDEN, pending deletions are shown as plain text (still part of the document until accepted), and comment markers are stripped. Use read_changes / read_comments to inspect what is pending.',inputSchema:{type:`object`,properties:{fromIndex:{type:`number`,description:`Start ordinal index (inclusive). Optional.`},toIndex:{type:`number`,description:`End ordinal index (inclusive). Optional.`}}},handler:(e,t)=>({success:!0,data:t.getContentAsText({fromIndex:e.fromIndex,toIndex:e.toIndex,includeTrackedChanges:!1,includeCommentAnchors:!1})})},{name:`read_selection`,displayName:`Reading selection`,description:`Read the user's current cursor or selection. Returns the selected text, the paragraph it lives in, and that paragraph's \`paraId\`. Use this when the user asks "fix this" or "review what I have selected".`,inputSchema:{type:`object`,properties:{}},handler:(e,t)=>{let n=t.getSelection();return n?{success:!0,data:n}:{success:!1,error:`No selection (editor not focused).`}}},{name:`read_page`,displayName:`Reading page`,description:`Read the contents of one rendered page (1-indexed). Returns paragraphs on the page, each tagged with its stable paraId. Use this when the user asks "summarize page 3" or "comment on what's on this page".`,inputSchema:{type:`object`,properties:{pageNumber:{type:`number`,description:`1-indexed page number.`}},required:[`pageNumber`]},handler:(e,t)=>{let n=t.getPage(e.pageNumber);if(!n){let n=t.getTotalPages();return n===0?{success:!1,error:`No pages rendered (headless mode or empty document).`}:{success:!1,error:`Page ${e.pageNumber} does not exist (document has ${n} page${n===1?``:`s`}).`}}return{success:!0,data:n.text||`(empty page)`}}},{name:`read_pages`,displayName:`Reading pages`,description:`Read a contiguous range of rendered pages (1-indexed, inclusive). Returns paragraphs across the range, each tagged with paraId. Cheaper than calling read_page repeatedly — single round-trip.`,inputSchema:{type:`object`,properties:{from:{type:`number`,description:`1-indexed start page (inclusive).`},to:{type:`number`,description:`1-indexed end page (inclusive).`}},required:[`from`,`to`]},handler:(e,t)=>{let n=t.getPages({from:e.from,to:e.to});if(n.length===0){let n=t.getTotalPages();return n===0?{success:!1,error:`No pages rendered (headless mode or empty document).`}:{success:!1,error:`No pages in range ${e.from}–${e.to} (document has ${n} page${n===1?``:`s`}).`}}return{success:!0,data:n.map(e=>`--- Page ${e.pageNumber} ---\n${e.text||`(empty page)`}`).join(`
10
10
 
11
11
  `)}}},{name:`find_text`,displayName:`Finding text`,description:"Locate paragraphs containing `query`. Returns up to `limit` handles, each with `paraId`, the matched substring, and surrounding context. Pass any returned `paraId` (and the `match` as `search`) to add_comment / suggest_change.",inputSchema:{type:`object`,properties:{query:{type:`string`,description:`Text to find (substring match).`},caseSensitive:{type:`boolean`,description:`Default: false.`},limit:{type:`number`,description:`Max paragraphs to return. Default: 20.`}},required:[`query`]},handler:(e,t)=>{let n=t.findText(e.query,{caseSensitive:e.caseSensitive,limit:e.limit});return n.length===0?{success:!0,data:`No matches.`}:{success:!0,data:n}}},{name:`read_comments`,displayName:`Reading comments`,description:`List all comments in the document with their paragraph anchors.`,inputSchema:{type:`object`,properties:{}},handler:(e,t)=>{let n=t.getComments();return n.length===0?{success:!0,data:`No comments.`}:{success:!0,data:n.map(e=>`[Comment #${e.id}] ${e.author}: "${e.text}"`+(e.anchoredText?` (anchored to: "${e.anchoredText}")`:``)+(e.replies.length>0?`
12
12
  `+e.replies.map(e=>` Reply by ${e.author}: "${e.text}"`).join(`