@superdoc/mcp 1.4.0-next.5 → 1.4.0-next.6
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/dist/index.js +109 -10
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -31330,7 +31330,7 @@ var init_host = __esm(() => {
|
|
|
31330
31330
|
});
|
|
31331
31331
|
|
|
31332
31332
|
// ../../packages/sdk/langs/node/src/runtime/sdk-version.generated.ts
|
|
31333
|
-
var SDK_VERSION = "2.17.0-next.
|
|
31333
|
+
var SDK_VERSION = "2.17.0-next.6";
|
|
31334
31334
|
|
|
31335
31335
|
// ../../packages/sdk/langs/node/src/runtime/embedded-platform.ts
|
|
31336
31336
|
import { chmodSync, existsSync } from "node:fs";
|
|
@@ -125090,6 +125090,34 @@ function isSdtContentEditable(sdtXml) {
|
|
|
125090
125090
|
return true;
|
|
125091
125091
|
}
|
|
125092
125092
|
|
|
125093
|
+
// ../../../v2/editor-core/dist/document/internal/symbol-character.js
|
|
125094
|
+
function resolveSymbolCharacter(font, code) {
|
|
125095
|
+
if (!font || !code || !/^[0-9a-fA-F]{4}$/.test(code))
|
|
125096
|
+
return null;
|
|
125097
|
+
const value = Number.parseInt(code, 16);
|
|
125098
|
+
const normalizedFont = font.trim().toLowerCase();
|
|
125099
|
+
const legacyMap = SYMBOL_CHARACTER_MAP[normalizedFont];
|
|
125100
|
+
if (legacyMap) {
|
|
125101
|
+
if ((value & 65280) !== 61440 && (value & 65280) !== 0)
|
|
125102
|
+
return null;
|
|
125103
|
+
return legacyMap[value & 255] ?? null;
|
|
125104
|
+
}
|
|
125105
|
+
if (normalizedFont === "webdings" || /^wingdings\s+\d+$/.test(normalizedFont))
|
|
125106
|
+
return null;
|
|
125107
|
+
if (value < 32 || value >= 55296 && value <= 57343 || value >= 57344 && value <= 63743) {
|
|
125108
|
+
return null;
|
|
125109
|
+
}
|
|
125110
|
+
return String.fromCharCode(value);
|
|
125111
|
+
}
|
|
125112
|
+
var SYMBOL_CHARACTER_MAP;
|
|
125113
|
+
var init_symbol_character = __esm(() => {
|
|
125114
|
+
SYMBOL_CHARACTER_MAP = {
|
|
125115
|
+
symbol: { 183: "•" },
|
|
125116
|
+
wingdings: { 168: "\uD83D\uDF8E", 111: "\uD83D\uDF8F", 224: "\uD83E\uDC6A" },
|
|
125117
|
+
"wingdings 2": { 82: "☑", 80: "\uD83D\uDDF8" }
|
|
125118
|
+
};
|
|
125119
|
+
});
|
|
125120
|
+
|
|
125093
125121
|
// ../../../v2/editor-core/dist/document/internal/paragraph-inline-model.js
|
|
125094
125122
|
function getParagraphInlineModelAllocationDiagnostics() {
|
|
125095
125123
|
return {
|
|
@@ -125273,6 +125301,16 @@ function parseRun(source, run, ctx) {
|
|
|
125273
125301
|
case "noBreakHyphen":
|
|
125274
125302
|
leaves.push(buildControlPiece(child, ctx, runProperties, runByteStart, runByteEnd, runCharStart, runCharEnd, runOpenTag, runCloseTag));
|
|
125275
125303
|
break;
|
|
125304
|
+
case "sym": {
|
|
125305
|
+
if (ctx.instruction)
|
|
125306
|
+
break;
|
|
125307
|
+
const bindings = extendNamespaceBindings(ctx.namespaceBindings, child.openTag);
|
|
125308
|
+
const font = readAttrByNamespace(child.openTag, bindings, NS_W, "font");
|
|
125309
|
+
const code = readAttrByNamespace(child.openTag, bindings, NS_W, "char");
|
|
125310
|
+
const glyph = resolveSymbolCharacter(font ?? undefined, code ?? undefined);
|
|
125311
|
+
leaves.push(glyph ? buildControlPiece(child, ctx, runProperties, runByteStart, runByteEnd, runCharStart, runCharEnd, runOpenTag, runCloseTag, glyph) : buildUnknownLeaf(child, ctx, "unsupported-symbol"));
|
|
125312
|
+
break;
|
|
125313
|
+
}
|
|
125276
125314
|
case "fldChar":
|
|
125277
125315
|
leaves.push(buildFieldCharMarker(child, ctx, atomicRunSpan, run.openTag));
|
|
125278
125316
|
break;
|
|
@@ -125391,14 +125429,18 @@ function buildTextPiece(source, node2, ctx, runProperties, runByteStart, runByte
|
|
|
125391
125429
|
rawXml: node2.xml
|
|
125392
125430
|
};
|
|
125393
125431
|
}
|
|
125394
|
-
function buildControlPiece(node2, ctx, runProperties, runByteStart, runByteEnd, runCharStart, runCharEnd, runOpenTag, runCloseTag) {
|
|
125432
|
+
function buildControlPiece(node2, ctx, runProperties, runByteStart, runByteEnd, runCharStart, runCharEnd, runOpenTag, runCloseTag, symbolText) {
|
|
125395
125433
|
return {
|
|
125396
125434
|
kind: "control",
|
|
125397
|
-
control: node2.local,
|
|
125435
|
+
control: node2.local === "sym" ? "symbol" : node2.local,
|
|
125436
|
+
...symbolText ? { symbolText } : {},
|
|
125398
125437
|
deleted: ctx.deleted,
|
|
125399
125438
|
charBoundaries: [
|
|
125400
125439
|
{ char: 0, byte: node2.byteStart },
|
|
125401
|
-
{
|
|
125440
|
+
...Array.from({ length: symbolText?.length ?? 1 }, (_, index) => ({
|
|
125441
|
+
char: index + 1,
|
|
125442
|
+
byte: node2.byteEnd
|
|
125443
|
+
}))
|
|
125402
125444
|
],
|
|
125403
125445
|
runByteStart,
|
|
125404
125446
|
runByteEnd,
|
|
@@ -125871,7 +125913,7 @@ function visibleWidth(piece) {
|
|
|
125871
125913
|
if (piece.kind === "text")
|
|
125872
125914
|
return piece.textRole === "visible" ? piece.decodedText.length : 0;
|
|
125873
125915
|
if (piece.kind === "control")
|
|
125874
|
-
return piece.deleted ? 0 : 1;
|
|
125916
|
+
return piece.deleted ? 0 : piece.symbolText?.length ?? 1;
|
|
125875
125917
|
if (piece.kind === "noteReference")
|
|
125876
125918
|
return piece.deleted ? 0 : 1;
|
|
125877
125919
|
return 0;
|
|
@@ -125880,7 +125922,7 @@ function trackedWidth(piece) {
|
|
|
125880
125922
|
if (piece.kind === "text")
|
|
125881
125923
|
return piece.textRole === "instruction" ? 0 : piece.decodedText.length;
|
|
125882
125924
|
if (piece.kind === "control")
|
|
125883
|
-
return 1;
|
|
125925
|
+
return piece.symbolText?.length ?? 1;
|
|
125884
125926
|
if (piece.kind === "noteReference")
|
|
125885
125927
|
return 1;
|
|
125886
125928
|
return 0;
|
|
@@ -125903,7 +125945,7 @@ function projectText(pieces, space) {
|
|
|
125903
125945
|
}
|
|
125904
125946
|
if (piece.kind === "control") {
|
|
125905
125947
|
if (space === "tracked" || !piece.deleted)
|
|
125906
|
-
out += controlChar(piece.control);
|
|
125948
|
+
out += piece.symbolText ?? controlChar(piece.control);
|
|
125907
125949
|
continue;
|
|
125908
125950
|
}
|
|
125909
125951
|
if (piece.kind === "noteReference") {
|
|
@@ -126101,6 +126143,7 @@ var editGradeInlineModelBuildCount = 0, denseUtf8CharIndexBuildCount = 0;
|
|
|
126101
126143
|
var init_paragraph_inline_model = __esm(() => {
|
|
126102
126144
|
init_xml_sax();
|
|
126103
126145
|
init_xml_text();
|
|
126146
|
+
init_symbol_character();
|
|
126104
126147
|
});
|
|
126105
126148
|
|
|
126106
126149
|
// ../../../v2/editor-core/dist/document/internal/paragraph-text-projection.js
|
|
@@ -126310,6 +126353,34 @@ function projectRun2(xml, runStart, run, deleted, instruction, namespaceScopes,
|
|
|
126310
126353
|
case "noBreakHyphen":
|
|
126311
126354
|
appendControl(collector, "‑", deleted);
|
|
126312
126355
|
break;
|
|
126356
|
+
case "sym": {
|
|
126357
|
+
if (instruction)
|
|
126358
|
+
break;
|
|
126359
|
+
const bindings = new Map;
|
|
126360
|
+
for (let index = 0;index < namespaceScopes.length; index += 2) {
|
|
126361
|
+
for (const attribute of scanRawXmlAttributes(xml.slice(namespaceScopes[index], namespaceScopes[index + 1]))) {
|
|
126362
|
+
if (attribute.name === "xmlns")
|
|
126363
|
+
bindings.set("", attribute.value);
|
|
126364
|
+
else if (attribute.name.startsWith("xmlns:"))
|
|
126365
|
+
bindings.set(attribute.name.slice(6), attribute.value);
|
|
126366
|
+
}
|
|
126367
|
+
}
|
|
126368
|
+
if (!bindings.has(collector.inferredWordPrefix))
|
|
126369
|
+
bindings.set(collector.inferredWordPrefix, NS_W);
|
|
126370
|
+
const tag = xml.slice(childStart, child.openEnd);
|
|
126371
|
+
for (const attribute of scanRawXmlAttributes(tag)) {
|
|
126372
|
+
if (attribute.name === "xmlns")
|
|
126373
|
+
bindings.set("", attribute.value);
|
|
126374
|
+
else if (attribute.name.startsWith("xmlns:"))
|
|
126375
|
+
bindings.set(attribute.name.slice(6), attribute.value);
|
|
126376
|
+
}
|
|
126377
|
+
const font = readXmlAttributeValueByNamespace(tag, bindings, NS_W, "font");
|
|
126378
|
+
const code = readXmlAttributeValueByNamespace(tag, bindings, NS_W, "char");
|
|
126379
|
+
const glyph = resolveSymbolCharacter(font == null ? undefined : decodeXmlText(font), code == null ? undefined : decodeXmlText(code));
|
|
126380
|
+
if (glyph)
|
|
126381
|
+
appendSymbol(collector, glyph, deleted);
|
|
126382
|
+
break;
|
|
126383
|
+
}
|
|
126313
126384
|
case "footnoteReference":
|
|
126314
126385
|
case "endnoteReference":
|
|
126315
126386
|
appendNoteReference(collector, deleted);
|
|
@@ -126350,6 +126421,16 @@ function appendText(collector, rawText, role) {
|
|
|
126350
126421
|
collector.telemetry.decodedTextCodeUnits += decodedLength;
|
|
126351
126422
|
}
|
|
126352
126423
|
}
|
|
126424
|
+
function appendSymbol(collector, value, deleted) {
|
|
126425
|
+
if (!deleted) {
|
|
126426
|
+
collector.visibleLength += value.length;
|
|
126427
|
+
collector.visibleChunks?.push(value);
|
|
126428
|
+
}
|
|
126429
|
+
collector.trackedLength += value.length;
|
|
126430
|
+
collector.trackedChunks?.push(value);
|
|
126431
|
+
if (collector.telemetry)
|
|
126432
|
+
collector.telemetry.controlCount += 1;
|
|
126433
|
+
}
|
|
126353
126434
|
function appendControl(collector, value, deleted) {
|
|
126354
126435
|
if (!deleted) {
|
|
126355
126436
|
collector.visibleLength += 1;
|
|
@@ -126615,6 +126696,7 @@ var init_paragraph_text_projection = __esm(() => {
|
|
|
126615
126696
|
init_xml_sax();
|
|
126616
126697
|
init_paragraph_inline_model();
|
|
126617
126698
|
init_xml_text();
|
|
126699
|
+
init_symbol_character();
|
|
126618
126700
|
DECODED_ENTITY_PATTERN = /&(lt|gt|amp|quot|apos|#\d+|#x[0-9a-fA-F]+);/g;
|
|
126619
126701
|
});
|
|
126620
126702
|
|
|
@@ -183123,7 +183205,11 @@ function buildParagraphOffsetMap(bytes, byteStart, byteEnd, options) {
|
|
|
183123
183205
|
continue;
|
|
183124
183206
|
}
|
|
183125
183207
|
addBoundary(chars, byteStart + leaf.byteStart);
|
|
183126
|
-
|
|
183208
|
+
const width = leaf.kind === "control" ? leaf.symbolText?.length ?? 1 : 1;
|
|
183209
|
+
for (let index = 1;index < width; index += 1) {
|
|
183210
|
+
addBoundary(chars + index, byteStart + leaf.byteEnd);
|
|
183211
|
+
}
|
|
183212
|
+
chars += width;
|
|
183127
183213
|
addBoundary(chars, byteStart + leaf.byteEnd);
|
|
183128
183214
|
}
|
|
183129
183215
|
addBoundary(chars, byteEnd);
|
|
@@ -347053,6 +347139,19 @@ function collectTokens(pieces, input, containers, trackedWrappers, out) {
|
|
|
347053
347139
|
continue;
|
|
347054
347140
|
}
|
|
347055
347141
|
if (piece.kind === "control") {
|
|
347142
|
+
if (piece.control === "symbol") {
|
|
347143
|
+
out.push({
|
|
347144
|
+
kind: "text",
|
|
347145
|
+
text: piece.symbolText,
|
|
347146
|
+
source: sourceSpan(piece.trackedStart, piece.trackedEnd, input),
|
|
347147
|
+
byteStart: input.paragraphByteStart + piece.runByteStart,
|
|
347148
|
+
byteEnd: input.paragraphByteStart + piece.runByteEnd,
|
|
347149
|
+
runProperties: piece.runProperties,
|
|
347150
|
+
containers,
|
|
347151
|
+
trackedWrappers
|
|
347152
|
+
});
|
|
347153
|
+
continue;
|
|
347154
|
+
}
|
|
347056
347155
|
out.push({
|
|
347057
347156
|
kind: piece.control === "tab" ? "tab" : "lineBreak",
|
|
347058
347157
|
...piece.control === "tab" ? {} : { breakType: readBreakType(piece.rawXml) },
|
|
@@ -389068,11 +389167,11 @@ function walkPieces(pieces, from, to, out, notes, styleContext, review) {
|
|
|
389068
389167
|
break;
|
|
389069
389168
|
}
|
|
389070
389169
|
case "control": {
|
|
389071
|
-
if (piece.control === "tab") {
|
|
389170
|
+
if (piece.control === "tab" || piece.control === "symbol") {
|
|
389072
389171
|
const marks = resolveRunMarks(piece.runProperties, styleContext);
|
|
389073
389172
|
out.push({
|
|
389074
389173
|
kind: "run",
|
|
389075
|
-
run: serializePasteRun("\t", marks, piece, piece.visibleStart, piece.visibleEnd, review)
|
|
389174
|
+
run: serializePasteRun(piece.symbolText ?? "\t", marks, piece, piece.visibleStart, piece.visibleEnd, review)
|
|
389076
389175
|
});
|
|
389077
389176
|
} else {
|
|
389078
389177
|
out.push({ kind: "break" });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@superdoc/mcp",
|
|
3
|
-
"version": "1.4.0-next.
|
|
3
|
+
"version": "1.4.0-next.6",
|
|
4
4
|
"description": "Model Context Protocol server for SuperDoc, giving an AI agent tools to read and edit .docx files.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "AGPL-3.0",
|
|
@@ -24,13 +24,13 @@
|
|
|
24
24
|
],
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
27
|
-
"@superdoc/sdk": "2.17.0-next.
|
|
27
|
+
"@superdoc/sdk": "2.17.0-next.6",
|
|
28
28
|
"debug": "^4.4.3",
|
|
29
29
|
"zod": "^4.3.6"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"superdoc": "2.20.0-next.
|
|
33
|
-
"@superdoc/docx-engine": "0.19.0-next.
|
|
32
|
+
"superdoc": "2.20.0-next.8",
|
|
33
|
+
"@superdoc/docx-engine": "0.19.0-next.9",
|
|
34
34
|
"@superdoc/document-api": "0.1.0-alpha.0",
|
|
35
35
|
"@types/bun": "^1.3.8",
|
|
36
36
|
"@types/node": "22.19.2",
|