@tiwater/office-mcp 0.20.1 → 0.20.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/office/index.mjs
CHANGED
|
@@ -194,6 +194,8 @@ const docxNestedObjectIdentity = docxObjectIdentity.pick({
|
|
|
194
194
|
}).extend({
|
|
195
195
|
gridSpan: z.number().int().positive().optional(),
|
|
196
196
|
verticalMerge: z.string().optional(),
|
|
197
|
+
verticalMergeOwner: docxAddress.optional(),
|
|
198
|
+
logicalText: z.string().optional(),
|
|
197
199
|
}).strict();
|
|
198
200
|
const docxObservationNode = z.lazy(() => z.object({
|
|
199
201
|
object: docxNestedObjectIdentity,
|
|
@@ -329,7 +331,7 @@ const tools = [
|
|
|
329
331
|
},
|
|
330
332
|
{
|
|
331
333
|
name: 'docx_read_object',
|
|
332
|
-
description: 'Read selected rows, cells, or paragraphs from one native DOCX and retain the complete result at output. The response returns compact requested descendants when bounded; if receipt.narrowingRequired is true, request fewer observed addresses or descendants. Use docx_read_table for a table.',
|
|
334
|
+
description: 'Read selected rows, cells, or paragraphs from one native DOCX and retain the complete result at output. A selected cell exposes its vertical-merge owner and logical text, so a continue cell keeps its physical identity while resolving the restart cell value. The response returns compact requested descendants when bounded; if receipt.narrowingRequired is true, request fewer observed addresses or descendants. Use docx_read_table for a table.',
|
|
333
335
|
inputSchema: inputContract('docx_read_object'),
|
|
334
336
|
outputSchema: docxReadObjectOutput,
|
|
335
337
|
annotations: { readOnlyHint: true, idempotentHint: true },
|
|
@@ -337,7 +339,7 @@ const tools = [
|
|
|
337
339
|
},
|
|
338
340
|
{
|
|
339
341
|
name: 'docx_read_table',
|
|
340
|
-
description: 'Read exactly one table selected from docx_table_index by native OpenXML address. Each call retains full paragraph and text-node detail for exactly the returned row page at output; it never builds another whole-table data object. The machine response is the compact form of that page: each row and cell keeps its reusable native address, grid position and span, vertical-merge owner, physical text, and logical text. In a vertical merge, restart begins one logical cell and a continue cell is not an independent row value: logicalText resolves the restart cell value while text remains the physical cell value.
|
|
342
|
+
description: 'Read exactly one table selected from docx_table_index by native OpenXML address. Each call retains full paragraph and text-node detail for exactly the returned row page at output; it never builds another whole-table data object. The machine response is the compact form of that page: each row and cell keeps its reusable native address, grid position and span, vertical-merge owner, physical text, and logical text. In a vertical merge, restart begins one logical cell and a continue cell is not an independent row value: logicalText resolves the restart cell value while text remains the physical cell value. A table observation is complete only when receipt.remaining is 0; process each page once in ascending receipt.nextOffset order. Use docx_read_object only when one selected object needs a narrower descendant view. The provider reports physical structure only; the Agent decides the template and business meaning.',
|
|
341
343
|
inputSchema: inputContract('docx_read_table'),
|
|
342
344
|
outputSchema: docxTableReadOutput,
|
|
343
345
|
annotations: { readOnlyHint: true, idempotentHint: true },
|
|
@@ -345,7 +347,7 @@ const tools = [
|
|
|
345
347
|
},
|
|
346
348
|
{
|
|
347
349
|
name: 'docx_copy_content',
|
|
348
|
-
description: 'Replace content in existing plain-text target paragraphs or cells while retaining target container formatting
|
|
350
|
+
description: 'Replace content in existing plain-text target paragraphs or cells while retaining target container formatting. A whole-object selection copies only that object\'s inline content; a range copies an exact substring from a run or text address. Source table, row, cell, span, and merge structure are not copied.',
|
|
349
351
|
inputSchema: inputContract('docx_copy_content'),
|
|
350
352
|
outputSchema: fixedEditOutput('docx_copy_content'),
|
|
351
353
|
handler: args => fixedEdit('docx_copy_content', args),
|
|
@@ -627,6 +629,8 @@ function compactDocxObservation(observation) {
|
|
|
627
629
|
textPreview: children.length === 0 ? identity.textPreview : null,
|
|
628
630
|
...(identity.gridSpan === null ? {} : { gridSpan: identity.gridSpan }),
|
|
629
631
|
...(identity.verticalMerge === null ? {} : { verticalMerge: identity.verticalMerge }),
|
|
632
|
+
...(node.object.verticalMergeOwner === null ? {} : { verticalMergeOwner: node.object.verticalMergeOwner }),
|
|
633
|
+
...(node.object.logicalText === null ? {} : { logicalText: node.object.logicalText }),
|
|
630
634
|
};
|
|
631
635
|
return {
|
|
632
636
|
object,
|