@usejunior/docx-mcp 0.9.0 → 0.10.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 (143) hide show
  1. package/README.md +46 -1
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/cli/commands/edit.d.ts.map +1 -1
  4. package/dist/cli/commands/edit.js +2 -1
  5. package/dist/cli/commands/edit.js.map +1 -1
  6. package/dist/cli/commands/grep.d.ts.map +1 -1
  7. package/dist/cli/commands/grep.js +2 -1
  8. package/dist/cli/commands/grep.js.map +1 -1
  9. package/dist/cli/tool_runner.d.ts +6 -0
  10. package/dist/cli/tool_runner.d.ts.map +1 -1
  11. package/dist/cli/tool_runner.js +10 -1
  12. package/dist/cli/tool_runner.js.map +1 -1
  13. package/dist/odf_loader.d.ts +2 -0
  14. package/dist/odf_loader.d.ts.map +1 -0
  15. package/dist/odf_loader.js +19 -0
  16. package/dist/odf_loader.js.map +1 -0
  17. package/dist/server.d.ts +5 -2
  18. package/dist/server.d.ts.map +1 -1
  19. package/dist/server.js +110 -4
  20. package/dist/server.js.map +1 -1
  21. package/dist/session/manager.d.ts +44 -2
  22. package/dist/session/manager.d.ts.map +1 -1
  23. package/dist/session/manager.js +212 -2
  24. package/dist/session/manager.js.map +1 -1
  25. package/dist/tool_catalog.d.ts +40 -12
  26. package/dist/tool_catalog.d.ts.map +1 -1
  27. package/dist/tool_catalog.js +49 -17
  28. package/dist/tool_catalog.js.map +1 -1
  29. package/dist/tools/accept_changes.js +1 -1
  30. package/dist/tools/accept_changes.js.map +1 -1
  31. package/dist/tools/add_comment.d.ts.map +1 -1
  32. package/dist/tools/add_comment.js +4 -2
  33. package/dist/tools/add_comment.js.map +1 -1
  34. package/dist/tools/add_footnote.d.ts.map +1 -1
  35. package/dist/tools/add_footnote.js +3 -1
  36. package/dist/tools/add_footnote.js.map +1 -1
  37. package/dist/tools/apply_plan.d.ts.map +1 -1
  38. package/dist/tools/apply_plan.js +6 -4
  39. package/dist/tools/apply_plan.js.map +1 -1
  40. package/dist/tools/clear_formatting.d.ts +2 -1
  41. package/dist/tools/clear_formatting.d.ts.map +1 -1
  42. package/dist/tools/clear_formatting.js +62 -49
  43. package/dist/tools/clear_formatting.js.map +1 -1
  44. package/dist/tools/compare_documents.d.ts.map +1 -1
  45. package/dist/tools/compare_documents.js +11 -2
  46. package/dist/tools/compare_documents.js.map +1 -1
  47. package/dist/tools/delete_comment.d.ts.map +1 -1
  48. package/dist/tools/delete_comment.js +3 -1
  49. package/dist/tools/delete_comment.js.map +1 -1
  50. package/dist/tools/delete_footnote.d.ts.map +1 -1
  51. package/dist/tools/delete_footnote.js +3 -1
  52. package/dist/tools/delete_footnote.js.map +1 -1
  53. package/dist/tools/export.d.ts +20 -0
  54. package/dist/tools/export.d.ts.map +1 -0
  55. package/dist/tools/export.js +96 -0
  56. package/dist/tools/export.js.map +1 -0
  57. package/dist/tools/format_layout.d.ts.map +1 -1
  58. package/dist/tools/format_layout.js +5 -3
  59. package/dist/tools/format_layout.js.map +1 -1
  60. package/dist/tools/grep.d.ts.map +1 -1
  61. package/dist/tools/grep.js +4 -115
  62. package/dist/tools/grep.js.map +1 -1
  63. package/dist/tools/grep_core.d.ts +49 -0
  64. package/dist/tools/grep_core.d.ts.map +1 -0
  65. package/dist/tools/grep_core.js +126 -0
  66. package/dist/tools/grep_core.js.map +1 -0
  67. package/dist/tools/insert_paragraph.d.ts +2 -1
  68. package/dist/tools/insert_paragraph.d.ts.map +1 -1
  69. package/dist/tools/insert_paragraph.js +4 -2
  70. package/dist/tools/insert_paragraph.js.map +1 -1
  71. package/dist/tools/odf/add_comment.d.ts +21 -0
  72. package/dist/tools/odf/add_comment.d.ts.map +1 -0
  73. package/dist/tools/odf/add_comment.js +64 -0
  74. package/dist/tools/odf/add_comment.js.map +1 -0
  75. package/dist/tools/odf/close_file.d.ts +4 -0
  76. package/dist/tools/odf/close_file.d.ts.map +1 -0
  77. package/dist/tools/odf/close_file.js +16 -0
  78. package/dist/tools/odf/close_file.js.map +1 -0
  79. package/dist/tools/odf/compare_documents.d.ts +39 -0
  80. package/dist/tools/odf/compare_documents.d.ts.map +1 -0
  81. package/dist/tools/odf/compare_documents.js +156 -0
  82. package/dist/tools/odf/compare_documents.js.map +1 -0
  83. package/dist/tools/odf/get_comments.d.ts +11 -0
  84. package/dist/tools/odf/get_comments.d.ts.map +1 -0
  85. package/dist/tools/odf/get_comments.js +32 -0
  86. package/dist/tools/odf/get_comments.js.map +1 -0
  87. package/dist/tools/odf/get_file_status.d.ts +4 -0
  88. package/dist/tools/odf/get_file_status.d.ts.map +1 -0
  89. package/dist/tools/odf/get_file_status.js +28 -0
  90. package/dist/tools/odf/get_file_status.js.map +1 -0
  91. package/dist/tools/odf/grep.d.ts +19 -0
  92. package/dist/tools/odf/grep.d.ts.map +1 -0
  93. package/dist/tools/odf/grep.js +81 -0
  94. package/dist/tools/odf/grep.js.map +1 -0
  95. package/dist/tools/odf/insert_paragraph.d.ts +19 -0
  96. package/dist/tools/odf/insert_paragraph.d.ts.map +1 -0
  97. package/dist/tools/odf/insert_paragraph.js +50 -0
  98. package/dist/tools/odf/insert_paragraph.js.map +1 -0
  99. package/dist/tools/odf/read_file.d.ts +9 -0
  100. package/dist/tools/odf/read_file.d.ts.map +1 -0
  101. package/dist/tools/odf/read_file.js +124 -0
  102. package/dist/tools/odf/read_file.js.map +1 -0
  103. package/dist/tools/odf/replace_text.d.ts +9 -0
  104. package/dist/tools/odf/replace_text.d.ts.map +1 -0
  105. package/dist/tools/odf/replace_text.js +41 -0
  106. package/dist/tools/odf/replace_text.js.map +1 -0
  107. package/dist/tools/odf/save.d.ts +7 -0
  108. package/dist/tools/odf/save.d.ts.map +1 -0
  109. package/dist/tools/odf/save.js +48 -0
  110. package/dist/tools/odf/save.js.map +1 -0
  111. package/dist/tools/open_document.d.ts.map +1 -1
  112. package/dist/tools/open_document.js +39 -3
  113. package/dist/tools/open_document.js.map +1 -1
  114. package/dist/tools/path_policy.d.ts +9 -0
  115. package/dist/tools/path_policy.d.ts.map +1 -1
  116. package/dist/tools/path_policy.js +66 -5
  117. package/dist/tools/path_policy.js.map +1 -1
  118. package/dist/tools/provider_guard.d.ts +1 -0
  119. package/dist/tools/provider_guard.d.ts.map +1 -1
  120. package/dist/tools/provider_guard.js +10 -0
  121. package/dist/tools/provider_guard.js.map +1 -1
  122. package/dist/tools/read_file.d.ts +2 -0
  123. package/dist/tools/read_file.d.ts.map +1 -1
  124. package/dist/tools/read_file.js +370 -31
  125. package/dist/tools/read_file.js.map +1 -1
  126. package/dist/tools/replace_text.d.ts +2 -1
  127. package/dist/tools/replace_text.d.ts.map +1 -1
  128. package/dist/tools/replace_text.js +26 -5
  129. package/dist/tools/replace_text.js.map +1 -1
  130. package/dist/tools/save.d.ts.map +1 -1
  131. package/dist/tools/save.js +55 -8
  132. package/dist/tools/save.js.map +1 -1
  133. package/dist/tools/session_resolution.d.ts +25 -1
  134. package/dist/tools/session_resolution.d.ts.map +1 -1
  135. package/dist/tools/session_resolution.js +179 -2
  136. package/dist/tools/session_resolution.js.map +1 -1
  137. package/dist/tools/tag_parser.d.ts.map +1 -1
  138. package/dist/tools/tag_parser.js +69 -14
  139. package/dist/tools/tag_parser.js.map +1 -1
  140. package/dist/tools/update_footnote.d.ts.map +1 -1
  141. package/dist/tools/update_footnote.js +3 -1
  142. package/dist/tools/update_footnote.js.map +1 -1
  143. package/package.json +18 -13
@@ -1,28 +1,225 @@
1
1
  import { errorMessage } from "../error_utils.js";
2
2
  import { err, ok } from './types.js';
3
- import { OOXML, W, renderToon, formatToonDataLine, collectTableMarkerInfo, formatTableMarker } from '@usejunior/docx-core';
3
+ import { OOXML, W, INLINE_COMMENT_MARKER_RUNTIME, renderToon, renderToonWithCommentEndnotes, formatToonDataLine, formatToonCommentLines, formatToonCommentsEndnotesBlock, collectInlineCommentMarkers, collectTableMarkerInfo, formatTableMarker, computeContentFingerprint, getParagraphBookmarkId, getParagraphText, } from '@usejunior/docx-core';
4
4
  import { READ_SIMPLE_PREVIEW_CHARS, previewText } from './preview.js';
5
5
  import { mergeSessionResolutionMetadata, resolveSessionForTool } from './session_resolution.js';
6
6
  import { estimateTokens, DEFAULT_CONTENT_TOKEN_BUDGET, buildPaginationMeta } from './pagination.js';
7
7
  function getWAttr(el, localName) {
8
8
  return el.getAttributeNS(OOXML.W_NS, localName) ?? el.getAttribute(`w:${localName}`) ?? el.getAttribute(localName);
9
9
  }
10
+ var FieldState;
11
+ (function (FieldState) {
12
+ FieldState[FieldState["OUTSIDE_FIELD"] = 0] = "OUTSIDE_FIELD";
13
+ FieldState[FieldState["IN_FIELD_CODE"] = 1] = "IN_FIELD_CODE";
14
+ FieldState[FieldState["IN_FIELD_RESULT"] = 2] = "IN_FIELD_RESULT";
15
+ })(FieldState || (FieldState = {}));
10
16
  function collectFootnoteMarkerSuffix(paragraphEl, displayNumberById) {
17
+ // References inside field code (between fldChar begin and separate) are
18
+ // hidden text and must not surface a marker — the view-level injection
19
+ // skips them the same way, keeping clean_text and text in agreement on
20
+ // which footnotes exist. @see #382
11
21
  const markers = [];
12
- const refs = paragraphEl.getElementsByTagNameNS(OOXML.W_NS, W.footnoteReference);
13
- for (let i = 0; i < refs.length; i++) {
14
- const ref = refs.item(i);
15
- const rawId = getWAttr(ref, 'id');
16
- if (!rawId)
17
- continue;
18
- const numericId = Number.parseInt(rawId, 10);
19
- if (Number.isNaN(numericId))
20
- continue;
21
- const display = displayNumberById.get(numericId) ?? numericId;
22
- markers.push(`[^${display}]`);
22
+ let fieldState = FieldState.OUTSIDE_FIELD;
23
+ for (const runEl of Array.from(paragraphEl.getElementsByTagNameNS(OOXML.W_NS, W.r))) {
24
+ for (const child of Array.from(runEl.childNodes)) {
25
+ if (child.nodeType !== 1)
26
+ continue;
27
+ const el = child;
28
+ if (el.namespaceURI !== OOXML.W_NS)
29
+ continue;
30
+ if (el.localName === W.fldChar) {
31
+ const type = getWAttr(el, 'fldCharType') ?? '';
32
+ if (type === 'begin')
33
+ fieldState = FieldState.IN_FIELD_CODE;
34
+ else if (type === 'separate')
35
+ fieldState = FieldState.IN_FIELD_RESULT;
36
+ else if (type === 'end')
37
+ fieldState = FieldState.OUTSIDE_FIELD;
38
+ continue;
39
+ }
40
+ if (fieldState === FieldState.IN_FIELD_CODE)
41
+ continue;
42
+ if (el.localName !== W.footnoteReference)
43
+ continue;
44
+ const rawId = getWAttr(el, 'id');
45
+ if (!rawId)
46
+ continue;
47
+ const numericId = Number.parseInt(rawId, 10);
48
+ if (Number.isNaN(numericId))
49
+ continue;
50
+ const display = displayNumberById.get(numericId) ?? numericId;
51
+ markers.push(`[^${display}]`);
52
+ }
23
53
  }
24
54
  return markers.join('');
25
55
  }
56
+ function escapeCommentSuffixText(text) {
57
+ return text
58
+ .replaceAll('\r\n', '\\n')
59
+ .replaceAll('\r', '\\r')
60
+ .replaceAll('\n', '\\n')
61
+ .replaceAll('|', '\\|');
62
+ }
63
+ function getCommentAnchorParagraphId(comment) {
64
+ return comment.anchoredParagraphId ?? comment.endParagraphId ?? null;
65
+ }
66
+ function getParagraphRunVisibleLengths(paragraphEl) {
67
+ const runLengths = [];
68
+ const runElements = Array.from(paragraphEl.getElementsByTagNameNS(OOXML.W_NS, W.r));
69
+ let fieldState = FieldState.OUTSIDE_FIELD;
70
+ for (const runEl of runElements) {
71
+ let visibleLength = 0;
72
+ for (const child of Array.from(runEl.childNodes)) {
73
+ if (child.nodeType !== 1)
74
+ continue;
75
+ const el = child;
76
+ if (el.namespaceURI !== OOXML.W_NS)
77
+ continue;
78
+ if (el.localName === W.fldChar) {
79
+ const type = getWAttr(el, 'fldCharType') ?? '';
80
+ if (type === 'begin')
81
+ fieldState = FieldState.IN_FIELD_CODE;
82
+ else if (type === 'separate')
83
+ fieldState = FieldState.IN_FIELD_RESULT;
84
+ else if (type === 'end')
85
+ fieldState = FieldState.OUTSIDE_FIELD;
86
+ continue;
87
+ }
88
+ if (fieldState === FieldState.IN_FIELD_CODE)
89
+ continue;
90
+ if (el.localName === W.t) {
91
+ visibleLength += (el.textContent ?? '').length;
92
+ }
93
+ else if (el.localName === W.tab || el.localName === W.br) {
94
+ visibleLength += 1;
95
+ }
96
+ }
97
+ runLengths.push(visibleLength);
98
+ }
99
+ return runLengths;
100
+ }
101
+ function resolveCommentVisibleOffset(runVisibleLengths, runIndex, charOffset) {
102
+ if (runIndex == null || charOffset == null)
103
+ return undefined;
104
+ if (runIndex < 0 || runIndex >= runVisibleLengths.length)
105
+ return undefined;
106
+ const runVisibleLength = runVisibleLengths[runIndex];
107
+ if (runVisibleLength == null || charOffset < 0 || charOffset > runVisibleLength) {
108
+ return undefined;
109
+ }
110
+ let offset = charOffset;
111
+ for (let index = 0; index < runIndex; index++) {
112
+ offset += runVisibleLengths[index] ?? 0;
113
+ }
114
+ return offset;
115
+ }
116
+ function buildInlineCommentMarkerRuntime(comment, paragraphElementsById, paragraphRunLengthsById) {
117
+ if (!comment.anchoredParagraphId ||
118
+ !comment.endParagraphId ||
119
+ comment.startRunIndex == null ||
120
+ comment.startCharOffset == null ||
121
+ comment.endRunIndex == null ||
122
+ comment.endCharOffset == null) {
123
+ return undefined;
124
+ }
125
+ const getRunLengths = (paragraphId) => {
126
+ const cached = paragraphRunLengthsById.get(paragraphId);
127
+ if (cached)
128
+ return cached;
129
+ const paragraphEl = paragraphElementsById.get(paragraphId);
130
+ if (!paragraphEl)
131
+ return undefined;
132
+ const runLengths = getParagraphRunVisibleLengths(paragraphEl);
133
+ paragraphRunLengthsById.set(paragraphId, runLengths);
134
+ return runLengths;
135
+ };
136
+ const startRunLengths = getRunLengths(comment.anchoredParagraphId);
137
+ const endRunLengths = getRunLengths(comment.endParagraphId);
138
+ if (!startRunLengths || !endRunLengths)
139
+ return undefined;
140
+ const startVisibleOffset = resolveCommentVisibleOffset(startRunLengths, comment.startRunIndex, comment.startCharOffset);
141
+ const endVisibleOffset = resolveCommentVisibleOffset(endRunLengths, comment.endRunIndex, comment.endCharOffset);
142
+ if (startVisibleOffset == null || endVisibleOffset == null)
143
+ return undefined;
144
+ const endParagraphVisibleLength = endRunLengths.reduce((sum, length) => sum + length, 0);
145
+ return {
146
+ startVisibleOffset,
147
+ endVisibleOffset,
148
+ suppressInlineMarkers: comment.anchoredParagraphId === comment.endParagraphId &&
149
+ startVisibleOffset === 0 &&
150
+ endVisibleOffset === endParagraphVisibleLength,
151
+ };
152
+ }
153
+ function mapDocumentViewComment(comment, options) {
154
+ const mapped = {
155
+ id: comment.id,
156
+ author: comment.author,
157
+ date: comment.date || null,
158
+ initials: comment.initials,
159
+ text: comment.text,
160
+ replies: comment.replies.map((reply) => mapDocumentViewComment(reply, options)),
161
+ };
162
+ if (options?.includeRange && comment.anchoredParagraphId && comment.endParagraphId) {
163
+ mapped.range = {
164
+ startParagraphId: comment.anchoredParagraphId,
165
+ endParagraphId: comment.endParagraphId,
166
+ startRunIndex: comment.startRunIndex,
167
+ startCharOffset: comment.startCharOffset,
168
+ endRunIndex: comment.endRunIndex,
169
+ endCharOffset: comment.endCharOffset,
170
+ };
171
+ const runtime = options.paragraphElementsById && options.paragraphRunLengthsById
172
+ ? buildInlineCommentMarkerRuntime(comment, options.paragraphElementsById, options.paragraphRunLengthsById)
173
+ : undefined;
174
+ if (runtime) {
175
+ Object.defineProperty(mapped, INLINE_COMMENT_MARKER_RUNTIME, {
176
+ value: runtime,
177
+ enumerable: false,
178
+ });
179
+ }
180
+ }
181
+ return mapped;
182
+ }
183
+ function attachParagraphComments(nodes, comments, options) {
184
+ const commentsByParagraph = new Map();
185
+ const paragraphRunLengthsById = new Map();
186
+ for (const comment of comments) {
187
+ const paragraphId = getCommentAnchorParagraphId(comment);
188
+ if (!paragraphId)
189
+ continue;
190
+ const rootComments = commentsByParagraph.get(paragraphId) ?? [];
191
+ rootComments.push(mapDocumentViewComment(comment, {
192
+ includeRange: options?.includeInlineMarkers,
193
+ paragraphElementsById: options?.paragraphElementsById,
194
+ paragraphRunLengthsById,
195
+ }));
196
+ commentsByParagraph.set(paragraphId, rootComments);
197
+ }
198
+ return nodes.map((node) => {
199
+ const nodeComments = commentsByParagraph.get(node.id);
200
+ return nodeComments && nodeComments.length > 0
201
+ ? { ...node, comments: nodeComments }
202
+ : node;
203
+ });
204
+ }
205
+ function collectSimpleCommentSuffixes(comments, parentId) {
206
+ const suffixes = [];
207
+ for (const comment of comments) {
208
+ const text = escapeCommentSuffixText(comment.text);
209
+ suffixes.push(parentId == null
210
+ ? `[c${comment.id}: ${text}]`
211
+ : `[c${comment.id}->c${parentId}: ${text}]`);
212
+ suffixes.push(...collectSimpleCommentSuffixes(comment.replies, comment.id));
213
+ }
214
+ return suffixes;
215
+ }
216
+ function formatSimpleTextLine(node) {
217
+ const preview = previewText(node.clean_text, READ_SIMPLE_PREVIEW_CHARS);
218
+ const commentSuffixes = node.comments ? collectSimpleCommentSuffixes(node.comments) : [];
219
+ return commentSuffixes.length > 0
220
+ ? `${preview} ${commentSuffixes.join(' ')}`
221
+ : preview;
222
+ }
26
223
  export async function readFile(manager, params) {
27
224
  try {
28
225
  const resolved = await resolveSessionForTool(manager, params, { toolName: 'read_file' });
@@ -33,6 +230,13 @@ export async function readFile(manager, params) {
33
230
  if (format !== 'toon' && format !== 'json' && format !== 'simple') {
34
231
  return err('INVALID_FORMAT', `Invalid format: ${params.format}`, "Use 'toon' (default), 'json', or 'simple'.");
35
232
  }
233
+ const commentRendering = (params.comment_rendering ?? 'paragraph_notes').toLowerCase();
234
+ if (commentRendering !== 'none' &&
235
+ commentRendering !== 'paragraph_notes' &&
236
+ commentRendering !== 'endnotes' &&
237
+ commentRendering !== 'inline_markers') {
238
+ return err('INVALID_COMMENT_RENDERING', `Invalid comment_rendering: ${params.comment_rendering}`, "Use 'paragraph_notes' (default), 'inline_markers', 'endnotes', or 'none'.");
239
+ }
36
240
  const showFormatting = params.show_formatting ?? true;
37
241
  const { nodes } = session.doc.buildDocumentView({
38
242
  includeSemanticTags: showFormatting,
@@ -60,6 +264,25 @@ export async function readFile(manager, params) {
60
264
  const endIdx = hasExplicitLimit ? Math.min(totalParagraphs, startIdx + params.limit) : totalParagraphs;
61
265
  filtered = nodes.slice(startIdx, endIdx);
62
266
  }
267
+ // Build a single paragraph-element index up front. All downstream enrichment
268
+ // passes (footnote markers, comment inline markers, content_fingerprint) consult
269
+ // this map instead of calling getParagraphElementById() per node, which would be
270
+ // a linear scan and turn the read into O(N^2) on large documents.
271
+ const paragraphElementsById = (() => {
272
+ const map = new Map();
273
+ for (const p of session.doc.getParagraphs()) {
274
+ const id = getParagraphBookmarkId(p);
275
+ if (id)
276
+ map.set(id, p);
277
+ }
278
+ return map;
279
+ })();
280
+ // Footnote [^N] markers: the document view already injects them into
281
+ // tagged_text/text at the reference's visible offset (injectFootnoteMarkers
282
+ // in docx-core's document_view.ts). Only clean_text is enriched here — the
283
+ // view deliberately keeps it marker-free for core consumers (edit matching,
284
+ // signature-cluster detection), so the suffix is a read_file output concern.
285
+ // Appending to all three fields doubled every marker. @see #382
63
286
  let enriched = filtered;
64
287
  try {
65
288
  const footnotes = await session.doc.getFootnotes();
@@ -69,7 +292,7 @@ export async function readFile(manager, params) {
69
292
  displayById.set(note.id, note.displayNumber > 0 ? note.displayNumber : note.id);
70
293
  }
71
294
  enriched = filtered.map((node) => {
72
- const paragraphEl = session.doc.getParagraphElementById(node.id);
295
+ const paragraphEl = paragraphElementsById.get(node.id);
73
296
  if (!paragraphEl)
74
297
  return node;
75
298
  const markerSuffix = collectFootnoteMarkerSuffix(paragraphEl, displayById);
@@ -78,8 +301,6 @@ export async function readFile(manager, params) {
78
301
  return {
79
302
  ...node,
80
303
  clean_text: `${node.clean_text}${markerSuffix}`,
81
- tagged_text: `${node.tagged_text}${markerSuffix}`,
82
- text: `${node.text}${markerSuffix}`,
83
304
  };
84
305
  });
85
306
  }
@@ -87,27 +308,75 @@ export async function readFile(manager, params) {
87
308
  catch {
88
309
  enriched = filtered;
89
310
  }
311
+ // When comment loading fails after add_comment ran (e.g., a third-party docx ships a
312
+ // comments.xml lacking xmlns:w14 and our writer wrote w14:paraId into it — see #154),
313
+ // surface the cause via metadata. We still don't fail the read so the body content
314
+ // remains consumable, but the caller (and our smoke tests) can detect the silent drop.
315
+ let commentLoadError = null;
316
+ if (commentRendering !== 'none') {
317
+ try {
318
+ const comments = await session.doc.getComments();
319
+ // Inline-marker rendering also needs paragraph elements for comment anchor
320
+ // paragraphs that may not appear in `enriched` (e.g., when a comment range
321
+ // spans into a paragraph outside the visible window). The shared index covers
322
+ // those because we built it from the full document above.
323
+ enriched = attachParagraphComments(enriched, comments, {
324
+ includeInlineMarkers: commentRendering === 'inline_markers',
325
+ paragraphElementsById: commentRendering === 'inline_markers' ? paragraphElementsById : undefined,
326
+ });
327
+ }
328
+ catch (e) {
329
+ commentLoadError = errorMessage(e);
330
+ }
331
+ }
332
+ // Optional content_fingerprint for JSON output. Computed from raw visible text
333
+ // (the same surface used by the _bk_* fallback seed), NOT from node.clean_text
334
+ // which has list labels stripped and footnote markers appended above.
335
+ let jsonNodes = enriched;
336
+ if (params.include_fingerprint && format === 'json') {
337
+ jsonNodes = enriched.map((node) => {
338
+ const paragraphEl = paragraphElementsById.get(node.id);
339
+ if (!paragraphEl)
340
+ return node;
341
+ const fingerprint = computeContentFingerprint(getParagraphText(paragraphEl));
342
+ return { ...node, content_fingerprint: fingerprint };
343
+ });
344
+ }
90
345
  let content;
91
346
  let paragraphsReturned;
92
347
  if (!budgetActive) {
93
348
  // Explicit limit/offset/node_ids — render everything, no budget
94
349
  if (format === 'json') {
95
- content = JSON.stringify(enriched, null, 2);
350
+ content = JSON.stringify(jsonNodes, null, 2);
96
351
  }
97
352
  else if (format === 'simple') {
98
353
  content = renderSimpleWithTableMarkers(enriched);
99
354
  }
100
355
  else {
101
- content = renderToon(enriched);
356
+ content = commentRendering === 'endnotes'
357
+ ? renderToonWithCommentEndnotes(enriched)
358
+ : renderToon(enriched);
102
359
  }
103
360
  paragraphsReturned = enriched.length;
104
361
  }
105
362
  else {
106
363
  // One-pass token-budget accumulation
107
364
  const budget = DEFAULT_CONTENT_TOKEN_BUDGET;
108
- const result = renderWithBudget(enriched, format, budget);
365
+ const result = format === 'json'
366
+ ? renderJsonWithBudget(jsonNodes, budget)
367
+ : renderWithBudget(enriched, format, budget, commentRendering);
109
368
  content = result.content;
110
369
  paragraphsReturned = result.count;
370
+ const paginationMeta = buildPaginationMeta(totalParagraphs, paragraphsReturned, startIdx);
371
+ return ok(mergeSessionResolutionMetadata({
372
+ file_path: manager.normalizePath(session.originalPath),
373
+ content,
374
+ total_paragraphs: totalParagraphs,
375
+ paragraphs_returned: paragraphsReturned,
376
+ ...(result.warnings ? { warnings: result.warnings } : {}),
377
+ ...paginationMeta,
378
+ ...(commentLoadError != null ? { comment_load_error: commentLoadError } : {}),
379
+ }, metadata));
111
380
  }
112
381
  const paginationMeta = buildPaginationMeta(totalParagraphs, paragraphsReturned, startIdx);
113
382
  return ok(mergeSessionResolutionMetadata({
@@ -116,6 +385,7 @@ export async function readFile(manager, params) {
116
385
  total_paragraphs: totalParagraphs,
117
386
  paragraphs_returned: paragraphsReturned,
118
387
  ...paginationMeta,
388
+ ...(commentLoadError != null ? { comment_load_error: commentLoadError } : {}),
119
389
  }, metadata));
120
390
  }
121
391
  catch (e) {
@@ -123,20 +393,33 @@ export async function readFile(manager, params) {
123
393
  return err('READ_ERROR', msg, 'Check session status and try again.');
124
394
  }
125
395
  }
126
- function renderWithBudget(enriched, format, budget) {
396
+ const BUDGET_EXCEEDED_BY_FIRST_NODE_WARNING = 'budget_exceeded_by_first_node';
397
+ function firstNodeOverflowWarnings(firstNodeOverflow) {
398
+ return firstNodeOverflow ? [BUDGET_EXCEEDED_BY_FIRST_NODE_WARNING] : undefined;
399
+ }
400
+ function renderWithBudget(enriched, format, budget, commentRendering) {
127
401
  if (format === 'json') {
128
402
  return renderJsonWithBudget(enriched, budget);
129
403
  }
130
404
  if (format === 'simple') {
131
405
  return renderSimpleWithBudget(enriched, budget);
132
406
  }
133
- return renderToonWithBudget(enriched, budget);
407
+ return renderToonWithBudget(enriched, budget, commentRendering);
134
408
  }
135
- function renderToonWithBudget(enriched, budget) {
409
+ function renderToonWithBudget(enriched, budget, commentRendering) {
136
410
  const headerLine = '#SCHEMA id | list_label | header | style | text';
137
411
  let accumulated = headerLine;
138
412
  let count = 0;
139
413
  let currentTableIndex = null;
414
+ const includedNodes = [];
415
+ const useInlineMarkers = commentRendering === 'inline_markers';
416
+ const commentMarkers = useInlineMarkers ? collectInlineCommentMarkers(enriched) : undefined;
417
+ // Captured the moment node 0 is admitted, BEFORE post-loop closures
418
+ // (#END_TABLE, endnotes block) inflate `accumulated`. Computing this
419
+ // after the loop produces false positives when row 1 of a table fits but
420
+ // we break at row 2 — the closing #END_TABLE bumps the final size over
421
+ // budget, but node 1 itself was fine.
422
+ let firstNodeOverflow = false;
140
423
  // Pre-scan: collect table marker info for #TABLE lines
141
424
  const tableInfo = collectTableMarkerInfo(enriched);
142
425
  for (const node of enriched) {
@@ -160,8 +443,24 @@ function renderToonWithBudget(enriched, budget) {
160
443
  }
161
444
  currentTableIndex = nodeTableIndex;
162
445
  }
163
- const dataLine = formatToonDataLine(node);
164
- const candidate = accumulated + '\n' + dataLine;
446
+ const dataLine = useInlineMarkers
447
+ ? formatToonDataLine(node, { commentMarkers })
448
+ : formatToonDataLine(node);
449
+ const commentLines = commentRendering === 'paragraph_notes' || useInlineMarkers
450
+ ? formatToonCommentLines(node)
451
+ : [];
452
+ const nodeLines = [dataLine, ...commentLines].join('\n');
453
+ const candidateBase = accumulated + '\n' + nodeLines;
454
+ let candidate = candidateBase;
455
+ if (commentRendering === 'endnotes') {
456
+ if (nodeTableIndex !== null) {
457
+ candidate += '\n#END_TABLE';
458
+ }
459
+ const endnotesBlock = formatToonCommentsEndnotesBlock([...includedNodes, node]);
460
+ if (endnotesBlock.length > 0) {
461
+ candidate += '\n' + endnotesBlock.join('\n');
462
+ }
463
+ }
165
464
  if (count > 0 && estimateTokens(candidate) > budget) {
166
465
  // Close table before breaking
167
466
  if (currentTableIndex !== null) {
@@ -169,14 +468,32 @@ function renderToonWithBudget(enriched, budget) {
169
468
  }
170
469
  break;
171
470
  }
172
- accumulated = candidate;
471
+ accumulated = candidateBase;
472
+ if (count === 0 && estimateTokens(candidate) > budget) {
473
+ // Use `candidate` (not `accumulated`) so endnotes-mode counts the
474
+ // endnotes block that's already part of node 1's first-page payload.
475
+ // This is substantive content, unlike the post-loop `#END_TABLE`
476
+ // structural closure that we deliberately exclude.
477
+ firstNodeOverflow = true;
478
+ }
479
+ includedNodes.push(node);
173
480
  count++;
174
481
  }
175
482
  // Close any open table at end of loop
176
483
  if (currentTableIndex !== null) {
177
484
  accumulated += '\n#END_TABLE';
178
485
  }
179
- return { content: accumulated, count };
486
+ if (commentRendering === 'endnotes') {
487
+ const endnotesBlock = formatToonCommentsEndnotesBlock(includedNodes);
488
+ if (endnotesBlock.length > 0) {
489
+ accumulated += '\n' + endnotesBlock.join('\n');
490
+ }
491
+ }
492
+ return {
493
+ content: accumulated,
494
+ count,
495
+ warnings: firstNodeOverflowWarnings(firstNodeOverflow),
496
+ };
180
497
  }
181
498
  function renderSimpleWithTableMarkers(enriched) {
182
499
  const lines = ['#TOON id | text'];
@@ -195,8 +512,7 @@ function renderSimpleWithTableMarkers(enriched) {
195
512
  lines.push(formatTableMarker(info));
196
513
  currentTableIndex = nodeTableIndex;
197
514
  }
198
- const text = previewText(n.clean_text, READ_SIMPLE_PREVIEW_CHARS);
199
- lines.push(`${n.id} | ${text}`);
515
+ lines.push(`${n.id} | ${formatSimpleTextLine(n)}`);
200
516
  }
201
517
  if (currentTableIndex !== null) {
202
518
  lines.push('#END_TABLE');
@@ -208,6 +524,8 @@ function renderSimpleWithBudget(enriched, budget) {
208
524
  let accumulated = headerLine;
209
525
  let count = 0;
210
526
  let currentTableIndex = null;
527
+ // Captured at admission of node 0; see comment in renderToonWithBudget.
528
+ let firstNodeOverflow = false;
211
529
  const tableInfo = collectTableMarkerInfo(enriched);
212
530
  for (const n of enriched) {
213
531
  const tc = n.table_context;
@@ -227,8 +545,7 @@ function renderSimpleWithBudget(enriched, budget) {
227
545
  }
228
546
  currentTableIndex = nodeTableIndex;
229
547
  }
230
- const text = previewText(n.clean_text, READ_SIMPLE_PREVIEW_CHARS);
231
- const dataLine = `${n.id} | ${text}`;
548
+ const dataLine = `${n.id} | ${formatSimpleTextLine(n)}`;
232
549
  const candidate = accumulated + '\n' + dataLine;
233
550
  if (count > 0 && estimateTokens(candidate) > budget) {
234
551
  if (currentTableIndex !== null) {
@@ -237,17 +554,26 @@ function renderSimpleWithBudget(enriched, budget) {
237
554
  break;
238
555
  }
239
556
  accumulated = candidate;
557
+ if (count === 0 && estimateTokens(accumulated) > budget) {
558
+ firstNodeOverflow = true;
559
+ }
240
560
  count++;
241
561
  }
242
562
  if (currentTableIndex !== null) {
243
563
  accumulated += '\n#END_TABLE';
244
564
  }
245
- return { content: accumulated, count };
565
+ return {
566
+ content: accumulated,
567
+ count,
568
+ warnings: firstNodeOverflowWarnings(firstNodeOverflow),
569
+ };
246
570
  }
247
571
  function renderJsonWithBudget(enriched, budget) {
248
572
  const items = [];
249
573
  let totalChars = 2; // for "[\n" and "]"
250
574
  let count = 0;
575
+ // Captured at admission of node 0; see comment in renderToonWithBudget.
576
+ let firstNodeOverflow = false;
251
577
  for (const node of enriched) {
252
578
  const serialized = JSON.stringify(node, null, 2);
253
579
  const overhead = items.length > 0 ? 2 : 0; // ",\n" between items
@@ -256,9 +582,22 @@ function renderJsonWithBudget(enriched, budget) {
256
582
  break;
257
583
  items.push(serialized);
258
584
  totalChars = candidateChars;
585
+ if (count === 0) {
586
+ // Final render is `[\n${items.join(',\n')}\n]` — 4 chars of framing,
587
+ // not 2. The pagination break check uses the same approximation as
588
+ // the loop, but the warning needs to reflect the true final length.
589
+ const finalChars = candidateChars + 2; // closing `\n]`
590
+ if (Math.ceil(finalChars / 4) > budget) {
591
+ firstNodeOverflow = true;
592
+ }
593
+ }
259
594
  count++;
260
595
  }
261
596
  const content = '[\n' + items.join(',\n') + '\n]';
262
- return { content, count };
597
+ return {
598
+ content,
599
+ count,
600
+ warnings: firstNodeOverflowWarnings(firstNodeOverflow),
601
+ };
263
602
  }
264
603
  //# sourceMappingURL=read_file.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"read_file.js","sourceRoot":"","sources":["../../src/tools/read_file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read_file.js","sourceRoot":"","sources":["../../src/tools/read_file.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,EAAE,EAAqB,MAAM,YAAY,CAAC;AACxD,OAAO,EACL,KAAK,EACL,CAAC,EACD,6BAA6B,EAC7B,UAAU,EACV,6BAA6B,EAC7B,kBAAkB,EAClB,sBAAsB,EACtB,+BAA+B,EAC/B,2BAA2B,EAC3B,sBAAsB,EACtB,iBAAiB,EACjB,yBAAyB,EACzB,sBAAsB,EACtB,gBAAgB,GAIjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,8BAA8B,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEpG,SAAS,QAAQ,CAAC,EAAW,EAAE,SAAiB;IAC9C,OAAO,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,KAAK,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AACrH,CAAC;AAED,IAAK,UAIJ;AAJD,WAAK,UAAU;IACb,6DAAiB,CAAA;IACjB,6DAAiB,CAAA;IACjB,iEAAmB,CAAA;AACrB,CAAC,EAJI,UAAU,KAAV,UAAU,QAId;AAED,SAAS,2BAA2B,CAClC,WAAoB,EACpB,iBAAsC;IAEtC,wEAAwE;IACxE,uEAAuE;IACvE,uEAAuE;IACvE,mCAAmC;IACnC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC;IAE1C,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YACjD,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC;gBAAE,SAAS;YACnC,MAAM,EAAE,GAAG,KAAgB,CAAC;YAC5B,IAAI,EAAE,CAAC,YAAY,KAAK,KAAK,CAAC,IAAI;gBAAE,SAAS;YAE7C,IAAI,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC;gBAC/C,IAAI,IAAI,KAAK,OAAO;oBAAE,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC;qBACvD,IAAI,IAAI,KAAK,UAAU;oBAAE,UAAU,GAAG,UAAU,CAAC,eAAe,CAAC;qBACjE,IAAI,IAAI,KAAK,KAAK;oBAAE,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC;gBAC/D,SAAS;YACX,CAAC;YAED,IAAI,UAAU,KAAK,UAAU,CAAC,aAAa;gBAAE,SAAS;YACtD,IAAI,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,iBAAiB;gBAAE,SAAS;YAEnD,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC7C,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;gBAAE,SAAS;YACtC,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAY;IAC3C,OAAO,IAAI;SACR,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC;SACzB,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;SACvB,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC5B,CAAC;AAQD,SAAS,2BAA2B,CAAC,OAAgB;IACnD,OAAO,OAAO,CAAC,mBAAmB,IAAI,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC;AACvE,CAAC;AAED,SAAS,6BAA6B,CAAC,WAAoB;IACzD,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,IAAI,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC;IAE1C,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,IAAI,aAAa,GAAG,CAAC,CAAC;QAEtB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YACjD,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC;gBAAE,SAAS;YACnC,MAAM,EAAE,GAAG,KAAgB,CAAC;YAC5B,IAAI,EAAE,CAAC,YAAY,KAAK,KAAK,CAAC,IAAI;gBAAE,SAAS;YAE7C,IAAI,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC;gBAC/C,IAAI,IAAI,KAAK,OAAO;oBAAE,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC;qBACvD,IAAI,IAAI,KAAK,UAAU;oBAAE,UAAU,GAAG,UAAU,CAAC,eAAe,CAAC;qBACjE,IAAI,IAAI,KAAK,KAAK;oBAAE,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC;gBAC/D,SAAS;YACX,CAAC;YAED,IAAI,UAAU,KAAK,UAAU,CAAC,aAAa;gBAAE,SAAS;YAEtD,IAAI,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzB,aAAa,IAAI,CAAC,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACjD,CAAC;iBAAM,IAAI,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC3D,aAAa,IAAI,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,2BAA2B,CAClC,iBAAoC,EACpC,QAA4B,EAC5B,UAA8B;IAE9B,IAAI,QAAQ,IAAI,IAAI,IAAI,UAAU,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC;IAC7D,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,IAAI,iBAAiB,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAE3E,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,gBAAgB,IAAI,IAAI,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,gBAAgB,EAAE,CAAC;QAChF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,MAAM,GAAG,UAAU,CAAC;IACxB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9C,MAAM,IAAI,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,+BAA+B,CACtC,OAAgB,EAChB,qBAAmD,EACnD,uBAA8C;IAE9C,IACE,CAAC,OAAO,CAAC,mBAAmB;QAC5B,CAAC,OAAO,CAAC,cAAc;QACvB,OAAO,CAAC,aAAa,IAAI,IAAI;QAC7B,OAAO,CAAC,eAAe,IAAI,IAAI;QAC/B,OAAO,CAAC,WAAW,IAAI,IAAI;QAC3B,OAAO,CAAC,aAAa,IAAI,IAAI,EAC7B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,aAAa,GAAG,CAAC,WAAmB,EAAwB,EAAE;QAClE,MAAM,MAAM,GAAG,uBAAuB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACxD,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAC1B,MAAM,WAAW,GAAG,qBAAqB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3D,IAAI,CAAC,WAAW;YAAE,OAAO,SAAS,CAAC;QACnC,MAAM,UAAU,GAAG,6BAA6B,CAAC,WAAW,CAAC,CAAC;QAC9D,uBAAuB,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QACrD,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,aAAa,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACnE,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5D,IAAI,CAAC,eAAe,IAAI,CAAC,aAAa;QAAE,OAAO,SAAS,CAAC;IAEzD,MAAM,kBAAkB,GAAG,2BAA2B,CACpD,eAAe,EACf,OAAO,CAAC,aAAa,EACrB,OAAO,CAAC,eAAe,CACxB,CAAC;IACF,MAAM,gBAAgB,GAAG,2BAA2B,CAClD,aAAa,EACb,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,aAAa,CACtB,CAAC;IACF,IAAI,kBAAkB,IAAI,IAAI,IAAI,gBAAgB,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC;IAE7E,MAAM,yBAAyB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;IACzF,OAAO;QACL,kBAAkB;QAClB,gBAAgB;QAChB,qBAAqB,EACnB,OAAO,CAAC,mBAAmB,KAAK,OAAO,CAAC,cAAc;YACtD,kBAAkB,KAAK,CAAC;YACxB,gBAAgB,KAAK,yBAAyB;KACjD,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,OAAgB,EAChB,OAIC;IAED,MAAM,MAAM,GAAwB;QAClC,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;QAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KAChF,CAAC;IAEF,IAAI,OAAO,EAAE,YAAY,IAAI,OAAO,CAAC,mBAAmB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QACnF,MAAM,CAAC,KAAK,GAAG;YACb,gBAAgB,EAAE,OAAO,CAAC,mBAAmB;YAC7C,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC;QAEF,MAAM,OAAO,GAAG,OAAO,CAAC,qBAAqB,IAAI,OAAO,CAAC,uBAAuB;YAC9E,CAAC,CAAC,+BAA+B,CAC7B,OAAO,EACP,OAAO,CAAC,qBAAqB,EAC7B,OAAO,CAAC,uBAAuB,CAChC;YACH,CAAC,CAAC,SAAS,CAAC;QAEd,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,6BAA6B,EAAE;gBAC3D,KAAK,EAAE,OAAO;gBACd,UAAU,EAAE,KAAK;aAClB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAkC,EAClC,QAA4B,EAC5B,OAAkG;IAElG,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAiC,CAAC;IACrE,MAAM,uBAAuB,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC5D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,WAAW;YAAE,SAAS;QAC3B,MAAM,YAAY,GAAG,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAChE,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE;YAChD,YAAY,EAAE,OAAO,EAAE,oBAAoB;YAC3C,qBAAqB,EAAE,OAAO,EAAE,qBAAqB;YACrD,uBAAuB;SACxB,CAAC,CAAC,CAAC;QACJ,mBAAmB,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,YAAY,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtD,OAAO,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;YAC5C,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE;YACrC,CAAC,CAAC,IAAI,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,4BAA4B,CACnC,QAAwC,EACxC,QAAiB;IAEjB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,QAAQ,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI;YAC5B,CAAC,CAAC,KAAK,OAAO,CAAC,EAAE,KAAK,IAAI,GAAG;YAC7B,CAAC,CAAC,KAAK,OAAO,CAAC,EAAE,MAAM,QAAQ,KAAK,IAAI,GAAG,CAAC,CAAC;QAC/C,QAAQ,CAAC,IAAI,CAAC,GAAG,4BAA4B,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAsB;IAClD,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,yBAAyB,CAAC,CAAC;IACxE,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzF,OAAO,eAAe,CAAC,MAAM,GAAG,CAAC;QAC/B,CAAC,CAAC,GAAG,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC3C,CAAC,CAAC,OAAO,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,OAAuB,EACvB,MASC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,QAAQ,CAAC,QAAQ,CAAC;QAC3C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;QAEvC,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QACvD,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YAClE,OAAO,GAAG,CAAC,gBAAgB,EAAE,mBAAmB,MAAM,CAAC,MAAM,EAAE,EAAE,4CAA4C,CAAC,CAAC;QACjH,CAAC;QAED,MAAM,gBAAgB,GAAG,CAAC,MAAM,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,CAAC,WAAW,EAAE,CAAC;QACvF,IACE,gBAAgB,KAAK,MAAM;YAC3B,gBAAgB,KAAK,iBAAiB;YACtC,gBAAgB,KAAK,UAAU;YAC/B,gBAAgB,KAAK,gBAAgB,EACrC,CAAC;YACD,OAAO,GAAG,CACR,2BAA2B,EAC3B,8BAA8B,MAAM,CAAC,iBAAiB,EAAE,EACxD,2EAA2E,CAC5E,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC;QACtD,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;YAC9C,mBAAmB,EAAE,cAAc;YACnC,cAAc;SACf,CAAC,CAAC;QACH,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC;QAErC,yEAAyE;QACzE,MAAM,gBAAgB,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC;QAC1D,MAAM,iBAAiB,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC;QAC5D,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACzE,MAAM,YAAY,GAAG,CAAC,gBAAgB,IAAI,CAAC,iBAAiB,IAAI,CAAC,UAAU,CAAC;QAE5E,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAS,CAAC,CAAC;YACtC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,IAAI,iBAAiB,EAAE,CAAC;gBACtB,IAAI,MAAM,CAAC,MAAO,GAAG,CAAC;oBAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAO,GAAG,CAAC,CAAC,CAAC;gBACnE,IAAI,MAAM,CAAC,MAAO,GAAG,CAAC;oBAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC,MAAO,CAAC,CAAC;YACnF,CAAC;YACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,GAAG,MAAM,CAAC,KAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;YACxG,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC3C,CAAC;QAED,6EAA6E;QAC7E,iFAAiF;QACjF,iFAAiF;QACjF,kEAAkE;QAClE,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE;YAClC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAmB,CAAC;YACvC,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC;gBAC5C,MAAM,EAAE,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC;gBACrC,IAAI,EAAE;oBAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACzB,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,EAAE,CAAC;QAEL,qEAAqE;QACrE,4EAA4E;QAC5E,2EAA2E;QAC3E,4EAA4E;QAC5E,6EAA6E;QAC7E,gEAAgE;QAChE,IAAI,QAAQ,GAAG,QAAQ,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YACnD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;gBAC9C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;oBAC7B,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClF,CAAC;gBACD,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBAC/B,MAAM,WAAW,GAAG,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACvD,IAAI,CAAC,WAAW;wBAAE,OAAO,IAAI,CAAC;oBAC9B,MAAM,YAAY,GAAG,2BAA2B,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;oBAC3E,IAAI,CAAC,YAAY;wBAAE,OAAO,IAAI,CAAC;oBAC/B,OAAO;wBACL,GAAG,IAAI;wBACP,UAAU,EAAE,GAAG,IAAI,CAAC,UAAU,GAAG,YAAY,EAAE;qBAChD,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,GAAG,QAAQ,CAAC;QACtB,CAAC;QAED,qFAAqF;QACrF,sFAAsF;QACtF,mFAAmF;QACnF,uFAAuF;QACvF,IAAI,gBAAgB,GAAkB,IAAI,CAAC;QAC3C,IAAI,gBAAgB,KAAK,MAAM,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACjD,2EAA2E;gBAC3E,2EAA2E;gBAC3E,8EAA8E;gBAC9E,0DAA0D;gBAC1D,QAAQ,GAAG,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,EAAE;oBACrD,oBAAoB,EAAE,gBAAgB,KAAK,gBAAgB;oBAC3D,qBAAqB,EACnB,gBAAgB,KAAK,gBAAgB,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS;iBAC5E,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,CAAU,EAAE,CAAC;gBACpB,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAED,+EAA+E;QAC/E,+EAA+E;QAC/E,sEAAsE;QACtE,IAAI,SAAS,GAAuC,QAAQ,CAAC;QAC7D,IAAI,MAAM,CAAC,mBAAmB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACpD,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBAChC,MAAM,WAAW,GAAG,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACvD,IAAI,CAAC,WAAW;oBAAE,OAAO,IAAI,CAAC;gBAC9B,MAAM,WAAW,GAAG,yBAAyB,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC7E,OAAO,EAAE,GAAG,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,CAAC;YACvD,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,OAAe,CAAC;QACpB,IAAI,kBAA0B,CAAC;QAE/B,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,gEAAgE;YAChE,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC/C,CAAC;iBAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,OAAO,GAAG,4BAA4B,CAAC,QAAQ,CAAC,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,gBAAgB,KAAK,UAAU;oBACvC,CAAC,CAAC,6BAA6B,CAAC,QAAQ,CAAC;oBACzC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC3B,CAAC;YACD,kBAAkB,GAAG,QAAQ,CAAC,MAAM,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,qCAAqC;YACrC,MAAM,MAAM,GAAG,4BAA4B,CAAC;YAC5C,MAAM,MAAM,GACV,MAAM,KAAK,MAAM;gBACf,CAAC,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC;gBACzC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;YACnE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YACzB,kBAAkB,GAAG,MAAM,CAAC,KAAK,CAAC;YAElC,MAAM,cAAc,GAAG,mBAAmB,CAAC,eAAe,EAAE,kBAAkB,EAAE,QAAQ,CAAC,CAAC;YAE1F,OAAO,EAAE,CAAC,8BAA8B,CAAC;gBACvC,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC;gBACtD,OAAO;gBACP,gBAAgB,EAAE,eAAe;gBACjC,mBAAmB,EAAE,kBAAkB;gBACvC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzD,GAAG,cAAc;gBACjB,GAAG,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC9E,EAAE,QAAQ,CAAC,CAAC,CAAC;QAChB,CAAC;QAED,MAAM,cAAc,GAAG,mBAAmB,CAAC,eAAe,EAAE,kBAAkB,EAAE,QAAQ,CAAC,CAAC;QAE1F,OAAO,EAAE,CAAC,8BAA8B,CAAC;YACvC,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC;YACtD,OAAO;YACP,gBAAgB,EAAE,eAAe;YACjC,mBAAmB,EAAE,kBAAkB;YACvC,GAAG,cAAc;YACjB,GAAG,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9E,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChB,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAC5B,OAAO,GAAG,CAAC,YAAY,EAAE,GAAG,EAAE,qCAAqC,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAQD,MAAM,qCAAqC,GAAG,+BAA+B,CAAC;AAE9E,SAAS,yBAAyB,CAAC,iBAA0B;IAC3D,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACjF,CAAC;AAED,SAAS,gBAAgB,CACvB,QAAqC,EACrC,MAAc,EACd,MAAc,EACd,gBAAwB;IAExB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,OAAO,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,oBAAoB,CAC3B,QAAqC,EACrC,MAAc,EACd,gBAAwB;IAExB,MAAM,UAAU,GAAG,iDAAiD,CAAC;IACrE,IAAI,WAAW,GAAG,UAAU,CAAC;IAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,iBAAiB,GAAkB,IAAI,CAAC;IAC5C,MAAM,aAAa,GAAuB,EAAE,CAAC;IAC7C,MAAM,gBAAgB,GAAG,gBAAgB,KAAK,gBAAgB,CAAC;IAC/D,MAAM,cAAc,GAAG,gBAAgB,CAAC,CAAC,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5F,oEAAoE;IACpE,qEAAqE;IACrE,yEAAyE;IACzE,uEAAuE;IACvE,sCAAsC;IACtC,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAE9B,uDAAuD;IACvD,MAAM,SAAS,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAEnD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;QAC9B,MAAM,cAAc,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;QAElD,mEAAmE;QACnE,IAAI,iBAAiB,KAAK,IAAI,IAAI,cAAc,KAAK,iBAAiB,EAAE,CAAC;YACvE,WAAW,IAAI,cAAc,CAAC;YAC9B,iBAAiB,GAAG,IAAI,CAAC;QAC3B,CAAC;QAED,iCAAiC;QACjC,IAAI,cAAc,KAAK,IAAI,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;YAC1D,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC3C,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBACvC,MAAM,mBAAmB,GAAG,WAAW,GAAG,IAAI,GAAG,MAAM,CAAC;gBACxD,IAAI,KAAK,GAAG,CAAC,IAAI,cAAc,CAAC,mBAAmB,CAAC,GAAG,MAAM,EAAE,CAAC;oBAC9D,MAAM;gBACR,CAAC;gBACD,WAAW,GAAG,mBAAmB,CAAC;YACpC,CAAC;YACD,iBAAiB,GAAG,cAAc,CAAC;QACrC,CAAC;QAED,MAAM,QAAQ,GAAG,gBAAgB;YAC/B,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,CAAC;YAC9C,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,YAAY,GAChB,gBAAgB,KAAK,iBAAiB,IAAI,gBAAgB;YACxD,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC;YAC9B,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,aAAa,GAAG,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;QACrD,IAAI,SAAS,GAAG,aAAa,CAAC;QAC9B,IAAI,gBAAgB,KAAK,UAAU,EAAE,CAAC;YACpC,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;gBAC5B,SAAS,IAAI,cAAc,CAAC;YAC9B,CAAC;YACD,MAAM,aAAa,GAAG,+BAA+B,CAAC,CAAC,GAAG,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;YAChF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,SAAS,IAAI,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QACD,IAAI,KAAK,GAAG,CAAC,IAAI,cAAc,CAAC,SAAS,CAAC,GAAG,MAAM,EAAE,CAAC;YACpD,8BAA8B;YAC9B,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;gBAC/B,WAAW,IAAI,cAAc,CAAC;YAChC,CAAC;YACD,MAAM;QACR,CAAC;QACD,WAAW,GAAG,aAAa,CAAC;QAC5B,IAAI,KAAK,KAAK,CAAC,IAAI,cAAc,CAAC,SAAS,CAAC,GAAG,MAAM,EAAE,CAAC;YACtD,kEAAkE;YAClE,qEAAqE;YACrE,iEAAiE;YACjE,mDAAmD;YACnD,iBAAiB,GAAG,IAAI,CAAC;QAC3B,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC;IACV,CAAC;IAED,sCAAsC;IACtC,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;QAC/B,WAAW,IAAI,cAAc,CAAC;IAChC,CAAC;IAED,IAAI,gBAAgB,KAAK,UAAU,EAAE,CAAC;QACpC,MAAM,aAAa,GAAG,+BAA+B,CAAC,aAAa,CAAC,CAAC;QACrE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,WAAW,IAAI,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,WAAW;QACpB,KAAK;QACL,QAAQ,EAAE,yBAAyB,CAAC,iBAAiB,CAAC;KACvD,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CACnC,QAAqC;IAErC,MAAM,KAAK,GAAa,CAAC,iBAAiB,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,iBAAiB,GAAkB,IAAI,CAAC;IAE5C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,CAAC,CAAC,aAAa,CAAC;QAC3B,MAAM,cAAc,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;QAElD,IAAI,iBAAiB,KAAK,IAAI,IAAI,cAAc,KAAK,iBAAiB,EAAE,CAAC;YACvE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACzB,iBAAiB,GAAG,IAAI,CAAC;QAC3B,CAAC;QACD,IAAI,cAAc,KAAK,IAAI,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;YAC1D,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC3C,IAAI,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9C,iBAAiB,GAAG,cAAc,CAAC;QACrC,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,sBAAsB,CAC7B,QAAqC,EACrC,MAAc;IAEd,MAAM,UAAU,GAAG,iBAAiB,CAAC;IACrC,IAAI,WAAW,GAAG,UAAU,CAAC;IAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,iBAAiB,GAAkB,IAAI,CAAC;IAC5C,wEAAwE;IACxE,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAE9B,MAAM,SAAS,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAEnD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,CAAC,CAAC,aAAa,CAAC;QAC3B,MAAM,cAAc,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;QAElD,IAAI,iBAAiB,KAAK,IAAI,IAAI,cAAc,KAAK,iBAAiB,EAAE,CAAC;YACvE,WAAW,IAAI,cAAc,CAAC;YAC9B,iBAAiB,GAAG,IAAI,CAAC;QAC3B,CAAC;QACD,IAAI,cAAc,KAAK,IAAI,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;YAC1D,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC3C,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBACvC,MAAM,mBAAmB,GAAG,WAAW,GAAG,IAAI,GAAG,MAAM,CAAC;gBACxD,IAAI,KAAK,GAAG,CAAC,IAAI,cAAc,CAAC,mBAAmB,CAAC,GAAG,MAAM;oBAAE,MAAM;gBACrE,WAAW,GAAG,mBAAmB,CAAC;YACpC,CAAC;YACD,iBAAiB,GAAG,cAAc,CAAC;QACrC,CAAC;QAED,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,EAAE,MAAM,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,SAAS,GAAG,WAAW,GAAG,IAAI,GAAG,QAAQ,CAAC;QAChD,IAAI,KAAK,GAAG,CAAC,IAAI,cAAc,CAAC,SAAS,CAAC,GAAG,MAAM,EAAE,CAAC;YACpD,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;gBAC/B,WAAW,IAAI,cAAc,CAAC;YAChC,CAAC;YACD,MAAM;QACR,CAAC;QACD,WAAW,GAAG,SAAS,CAAC;QACxB,IAAI,KAAK,KAAK,CAAC,IAAI,cAAc,CAAC,WAAW,CAAC,GAAG,MAAM,EAAE,CAAC;YACxD,iBAAiB,GAAG,IAAI,CAAC;QAC3B,CAAC;QACD,KAAK,EAAE,CAAC;IACV,CAAC;IAED,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;QAC/B,WAAW,IAAI,cAAc,CAAC;IAChC,CAAC;IAED,OAAO;QACL,OAAO,EAAE,WAAW;QACpB,KAAK;QACL,QAAQ,EAAE,yBAAyB,CAAC,iBAAiB,CAAC;KACvD,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,QAA4C,EAC5C,MAAc;IAEd,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,oBAAoB;IACxC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,wEAAwE;IACxE,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAE9B,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB;QACjE,MAAM,cAAc,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC;QACjE,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,GAAG,MAAM;YAAE,MAAM;QAC/D,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvB,UAAU,GAAG,cAAc,CAAC;QAC5B,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,qEAAqE;YACrE,mEAAmE;YACnE,oEAAoE;YACpE,MAAM,UAAU,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC,gBAAgB;YACvD,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC;gBACvC,iBAAiB,GAAG,IAAI,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,KAAK,EAAE,CAAC;IACV,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IAClD,OAAO;QACL,OAAO;QACP,KAAK;QACL,QAAQ,EAAE,yBAAyB,CAAC,iBAAiB,CAAC;KACvD,CAAC;AACJ,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { SessionManager } from '../session/manager.js';
2
2
  import { type ToolResponse } from './types.js';
3
+ import { type RevisionContext } from '@usejunior/docx-core';
3
4
  export declare function stripSearchTags(text: string): string;
4
5
  /**
5
6
  * Count shared leading characters between two strings.
@@ -26,5 +27,5 @@ export declare function replaceText(manager: SessionManager, params: {
26
27
  font_size?: number;
27
28
  font_name?: string;
28
29
  color?: string;
29
- }): Promise<ToolResponse>;
30
+ }, ctx?: RevisionContext): Promise<ToolResponse>;
30
31
  //# sourceMappingURL=replace_text.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"replace_text.d.ts","sourceRoot":"","sources":["../../src/tools/replace_text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAoB,MAAM,uBAAuB,CAAC;AAEzE,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAsExD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AA2CD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAK/D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAKlF;AAOD,wBAAsB,WAAW,CAC/B,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE;IACN,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACA,OAAO,CAAC,YAAY,CAAC,CA0HvB"}
1
+ {"version":3,"file":"replace_text.d.ts","sourceRoot":"","sources":["../../src/tools/replace_text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAkD,MAAM,uBAAuB,CAAC;AAEvG,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAGxD,OAAO,EAYL,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAwD9B,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AA2CD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAK/D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAKlF;AAaD,wBAAsB,WAAW,CAC/B,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE;IACN,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EACD,GAAG,CAAC,EAAE,eAAe,GACpB,OAAO,CAAC,YAAY,CAAC,CAuIvB"}