@4399ywkf/editor-mcp 0.3.0 → 0.3.2
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/README.md
CHANGED
|
@@ -157,7 +157,7 @@ npx ywkf-editor-hub --port 4399 --token $(openssl rand -hex 16)
|
|
|
157
157
|
|
|
158
158
|
| 工具 | 用途 |
|
|
159
159
|
|---|---|
|
|
160
|
-
| `sheet_read` | 工作簿概览 + 一张表的 CSV
|
|
160
|
+
| `sheet_read` | 工作簿概览 + 一张表的 CSV 视图与公式清单。写之前必须先调它。日期是序列号,1904 日期系统的工作簿会多返回 `dateSystem` |
|
|
161
161
|
| `sheet_find` | 全簿检索(值和公式都搜),返回可直接回填的 `sheet` + A1 `ref` |
|
|
162
162
|
| `sheet_set_values` | 从某格起写一块二维值,`"=…"` 是公式、`null` 清空 |
|
|
163
163
|
| `sheet_edit_rows_cols` | 插入 / 删除整行整列(0-based) |
|
|
@@ -205,7 +205,7 @@ var SHEET_ADDRESSING_NOTE = "定位一律用 A1 引用(如 B2、A1:D20),
|
|
|
205
205
|
var SHEET_TOOLS = [
|
|
206
206
|
{
|
|
207
207
|
name: "sheet_read",
|
|
208
|
-
description:
|
|
208
|
+
description: '读取工作簿概览(每张表的名字和已用范围)+ 指定表的单元格内容(CSV 文本)与公式清单。要写之前必须先调它。区域超过 300×100 会截断并提示,用 range 分段读。日期格读出来是 Excel 序列号;返回里带 dateSystem: "date1904" 时序列号从 1904-01-01 起算。' + SHEET_ADDRESSING_NOTE,
|
|
209
209
|
inputSchema: {
|
|
210
210
|
type: "object",
|
|
211
211
|
properties: {
|
|
@@ -304,5 +304,5 @@ function getSheetTool(name) {
|
|
|
304
304
|
var ALL_TOOLS = [...DOC_TOOLS, ...SHEET_TOOLS];
|
|
305
305
|
|
|
306
306
|
export { ALL_TOOLS, DOC_TOOLS, DOC_TOOL_NAMES, SHEET_TOOLS, SHEET_TOOL_NAMES, getDocTool, getSheetTool };
|
|
307
|
-
//# sourceMappingURL=chunk-
|
|
308
|
-
//# sourceMappingURL=chunk-
|
|
307
|
+
//# sourceMappingURL=chunk-BWSZVC53.js.map
|
|
308
|
+
//# sourceMappingURL=chunk-BWSZVC53.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/tools.ts"],"names":[],"mappings":"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","file":"chunk-THBSF3IO.js","sourcesContent":["/**\n * 工具面:doc 10 个 + sheet 6 个工具的 name / description / JSON Schema。\n *\n * **这里没有任何传输**。是 MCP、是 HTTP、还是像 jizhi_ai 那样 agent loop 直接调\n * executor,都由上层决定 —— 想自己接的只 import 这个模块就够了:\n *\n * ```ts\n * import { DOC_TOOLS, SHEET_TOOLS, ALL_TOOLS } from \"@4399ywkf/editor-mcp/tools\"\n * ```\n *\n * 为什么这么少:参照系是 BlockNote AI 的 3 个工具,和把 tiptap 每个 command\n * 都包成工具的 `tiptap-apcore`(79 个,GitHub 1 star)。工具面大了模型反而选不准。\n * `doc_stats` 那类对账工具刻意不在这里 —— 它是给人调试用的,`DocRuntime.call`\n * 支持,但不该占模型的注意力。\n *\n * 8 个读写工具 + 2 个导入导出。后两个之所以够格占位置:没有它们,模型能把文档\n * 改好却交付不出去 —— 「改完了,然后呢」是个死胡同。\n */\nimport { FORMATTABLE, MARK_TAG, NODE_TAG, READONLY_TAGS } from \"@4399ywkf/editor/doc-runtime\"\n\nexport interface DocToolSchema {\n type: \"object\"\n properties: Record<string, unknown>\n required?: string[]\n additionalProperties?: boolean\n}\n\nexport interface DocTool {\n name: string\n description: string\n inputSchema: DocToolSchema\n}\n\n/**\n * 定位纪律。写进 description 而不是 README —— 和实现同生共死,不会漂。\n *\n * 后半句是必需的:模型带着 Google Docs / 腾讯文档那套 API 的条件反射\n * (改一处就失效一次索引),不明说它会自作聪明地倒序处理、反复重读。\n */\nconst ADDRESSING_NOTE =\n \"定位一律用 node id(读工具返回的 id 属性),逐字复制。\" +\n \"注意:与 Google Docs / 腾讯文档那类 API 不同,本工具面的定位在执行的那一瞬间才解析,\" +\n \"所以你不需要从文档尾部往前处理,也不需要每改一处就重新读一遍。\"\n\n/**\n * 可用标签清单从 doc-runtime 的标签表**生成**,不是手抄的。\n * 编辑器加一个节点类型,这段 description 自动跟着变。\n */\nconst BLOCK_TAGS = [...new Set(Object.values(NODE_TAG))]\n .filter((t) => !READONLY_TAGS.has(t))\n .sort()\n .join(\" \")\nconst INLINE_TAGS = Object.values(MARK_TAG).join(\" \")\n\nexport const DOC_TOOLS: readonly DocTool[] = [\n {\n name: \"doc_read\",\n description:\n \"读取整篇文档,返回 LiteXML(每个块带稳定 id)。要编辑之前必须先调它拿 id。\" +\n ADDRESSING_NOTE,\n inputSchema: {\n type: \"object\",\n properties: {\n format: {\n type: \"string\",\n enum: [\"xml\", \"json\", \"both\"],\n description:\n \"默认 xml。json 是 ProseMirror 原生结构(无损但费 token,约 1.5-2.8 倍),\" +\n \"只在你怀疑 LiteXML 丢了信息时才用。\",\n },\n },\n additionalProperties: false,\n },\n },\n {\n name: \"doc_schema\",\n description:\n \"返回本编辑器支持的全部节点类型 / 标记类型 / LiteXML 标签映射 / 哪些类型带稳定 id。\" +\n \"不确定某个结构能不能写、该用什么标签时先查它。这份数据是从运行时 schema 反射出来的,\" +\n \"永远不会和实现漂移。\",\n inputSchema: { type: \"object\", properties: {}, additionalProperties: false },\n },\n {\n name: \"doc_find\",\n description:\n \"全文检索,返回可直接回填给写工具的地址:{nodeId, nodeType, contextBefore, match, contextAfter}。\",\n inputSchema: {\n type: \"object\",\n properties: {\n query: { type: \"string\", description: \"要查找的文本(字面量,不是正则)\" },\n limit: { type: \"number\", description: \"最多返回几条,默认 20\" },\n },\n required: [\"query\"],\n additionalProperties: false,\n },\n },\n {\n name: \"doc_get_selection\",\n description:\n \"读取用户此刻在编辑器里选中了什么。返回 selection:null 时表示本轮无选区,不得沿用历史选区。\",\n inputSchema: { type: \"object\", properties: {}, additionalProperties: false },\n },\n {\n name: \"doc_replace_text\",\n description:\n \"块内文本替换,最推荐的细粒度改法。只改命中的那一段,块内其余的格式、链接、\" +\n \"mention 都会保住。可用 nodeIds 限定只在某些块里替换。\" +\n ADDRESSING_NOTE,\n inputSchema: {\n type: \"object\",\n properties: {\n searchText: { type: \"string\" },\n newText: { type: \"string\" },\n nodeIds: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"限定生效范围;省略则全文\",\n },\n replaceAll: {\n type: \"boolean\",\n description: \"默认 false,只替换文档里第一处\",\n },\n },\n required: [\"searchText\", \"newText\"],\n additionalProperties: false,\n },\n },\n {\n name: \"doc_format_text\",\n description:\n \"给某个块里的一段文字加/去格式(加粗、斜体、下划线、删除线、行内代码、上下标)。\" +\n \"**要改格式请优先用它,不要用 doc_modify_nodes 整块重写** —— \" +\n \"整块重写要求你重述整块内容,你没看见的属性和内联节点会在重述中丢失。\\n\" +\n \"先用 doc_read / doc_find 拿到块的 id 和它的文本,再指定要施加格式的那段文字。\",\n inputSchema: {\n type: \"object\",\n properties: {\n nodeId: { type: \"string\", description: \"目标块的 id\" },\n searchText: { type: \"string\", description: \"块内要施加格式的那段文字(精确匹配)\" },\n marks: {\n type: \"array\",\n items: { type: \"string\", enum: [...FORMATTABLE] },\n description: \"要施加的标记,可多个\",\n },\n remove: { type: \"boolean\", description: \"true 则移除这些标记而不是施加,默认 false\" },\n occurrence: { type: \"number\", description: \"块内第几处匹配,从 1 开始,默认 1\" },\n },\n required: [\"nodeId\", \"searchText\", \"marks\"],\n additionalProperties: false,\n },\n },\n {\n name: \"doc_modify_nodes\",\n description:\n \"结构化编辑:一次提交多个 insert / remove / modify 操作。\" +\n \"批量写入优先用它,不要拆成很多次单点调用。\\n\" +\n `LiteXML 块标签:${BLOCK_TAGS} h1-h6;未知节点用 <node type=\"x\"/>。\\n` +\n `内联:${INLINE_TAGS} a[href] mark[color] color[v] br。\\n` +\n '例:<code lang=\"ts\">…</code>、<img src=\"…\"/>、<tasks><task checked=\"true\">…</task></tasks>。\\n' +\n \"modify 的 litexml 必须带上要改的那个块的 id 属性。\" +\n \"你没写进 XML 的属性会以原节点为底保留下来(不会被抹掉),所以不必重述你没看见的状态。\" +\n ADDRESSING_NOTE,\n inputSchema: {\n type: \"object\",\n properties: {\n operations: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n action: { type: \"string\", enum: [\"insert\", \"remove\", \"modify\"] },\n afterId: { type: \"string\", description: \"insert:插到这个块之后\" },\n beforeId: { type: \"string\", description: \"insert:插到这个块之前\" },\n id: { type: \"string\", description: \"remove:要删除的块 id\" },\n litexml: {\n type: \"string\",\n description: \"insert/modify 的内容。modify 时必须带 id 属性\",\n },\n },\n required: [\"action\"],\n },\n },\n },\n required: [\"operations\"],\n additionalProperties: false,\n },\n },\n {\n name: \"doc_table_edit\",\n description:\n \"表格的**结构性**改动(增删行列、合并拆分、切表头)和批量写值。\" +\n \"用 (tableId, row, col) 这种结构坐标定位,row/col 都是 0-based,表头是第 0 行。\\n\" +\n \"注意:单元格里的段落是有 id 的,所以「只改某个格子的文字」直接用 \" +\n \"doc_replace_text / doc_format_text 打那个段落的 id 通常更简单。\",\n inputSchema: {\n type: \"object\",\n properties: {\n tableId: { type: \"string\" },\n action: {\n type: \"string\",\n enum: [\n \"set_cells\",\n \"insert_row_after\",\n \"insert_row_before\",\n \"insert_col_after\",\n \"insert_col_before\",\n \"delete_row\",\n \"delete_col\",\n \"toggle_header_row\",\n \"merge_cells\",\n \"split_cell\",\n ],\n },\n row: {\n type: \"number\",\n description: \"0-based 行号(表头是第 0 行)。除 set_cells 外**必填**,作为锚点单元格\",\n },\n col: { type: \"number\", description: \"0-based 列号。除 set_cells 外**必填**\" },\n values: {\n type: \"array\",\n description: \"set_cells 用:[{row, col, text}]\",\n items: {\n type: \"object\",\n properties: {\n row: { type: \"number\" },\n col: { type: \"number\" },\n text: { type: \"string\" },\n },\n required: [\"row\", \"col\", \"text\"],\n },\n },\n },\n required: [\"tableId\", \"action\"],\n additionalProperties: false,\n },\n },\n\n /* ---------------------------- 导入 / 导出 ---------------------------- *\n * 这两个工具的返回值和参数里**不出现文件内容**。docx 是二进制,一份带图的\n * 动辄几 MB,base64 进上下文会直接把窗口撑爆。所以约定:模型只说路径,\n * 字节在 hub ↔ 浏览器之间走,不经过模型。\n * ------------------------------------------------------------------ */\n {\n name: \"doc_export_docx\",\n description:\n \"把当前文档导出成 .docx 落到磁盘,返回文件路径与导出统计。\" +\n \"文件写在 hub 的输出目录下(启动时 --out-dir 指定,默认 hub 的工作目录),\" +\n \"只接受文件名、不接受路径 —— 想放别处请让用户改 hub 的 --out-dir。\\n\" +\n \"会一并写回导入时保留的页眉页脚与页面设置(前提是这篇文档是本次会话里用 \" +\n \"doc_import_docx 或界面导入进来的)。返回的 warnings 是**导出时丢了什么**,\" +\n \"非空就如实转述给用户,别当成功报。\",\n inputSchema: {\n type: \"object\",\n properties: {\n filename: {\n type: \"string\",\n description: \"文件名,如 `报告.docx`。省略则用 document.docx。不要带目录\",\n },\n },\n additionalProperties: false,\n },\n },\n {\n name: \"doc_import_docx\",\n description:\n \"读一份 .docx 灌进编辑器,**整篇替换**当前内容(不是追加,也不可撤销 —— \" +\n \"文档里已有内容时先跟用户确认)。path 相对 hub 的输出目录解析。\\n\" +\n \"返回 recovered(各类样式各救回多少项)和 warnings。导入完要接着编辑的话,\" +\n \"先调 doc_read 拿新的 id —— 旧 id 全部失效。\",\n inputSchema: {\n type: \"object\",\n properties: {\n path: {\n type: \"string\",\n description: \"docx 文件名或相对 hub 输出目录的路径\",\n },\n },\n required: [\"path\"],\n additionalProperties: false,\n },\n },\n]\n\nexport const DOC_TOOL_NAMES: readonly string[] = DOC_TOOLS.map((t) => t.name)\n\n/** 单个工具的定义,找不到返回 undefined。 */\nexport function getDocTool(name: string): DocTool | undefined {\n return DOC_TOOLS.find((t) => t.name === name)\n}\n\n/* ================================ sheet ================================ */\n\n/**\n * 表格工具面。执行体是 `@4399ywkf/editor/sheet-runtime` 的 `SheetRuntime`,\n * 和 doc 工具面同一套纪律:面刻意小(6 个)、导出不给模型看字节、\n * 丢失/降级如实进 warnings。\n *\n * 定位用 A1 引用而不是 node id —— 表格的坐标系本来就是稳定的,\n * 不需要 doc 那套「读了才有 id」的仪式;但**写之前先 sheet_read 看清现状**\n * 这条纪律不变:盲写会覆盖你没看见的数据。\n */\nconst SHEET_ADDRESSING_NOTE =\n \"定位一律用 A1 引用(如 B2、A1:D20),行列都从 A/1 开始数。\" +\n \"写之前先用 sheet_read 看清目标区域现状 —— 盲写会覆盖你没看见的数据。\"\n\nexport const SHEET_TOOLS: readonly DocTool[] = [\n {\n name: \"sheet_read\",\n description:\n \"读取工作簿概览(每张表的名字和已用范围)+ 指定表的单元格内容(CSV 文本)与公式清单。\" +\n \"要写之前必须先调它。区域超过 300×100 会截断并提示,用 range 分段读。\" +\n SHEET_ADDRESSING_NOTE,\n inputSchema: {\n type: \"object\",\n properties: {\n sheet: { type: \"string\", description: \"工作表 id 或表名,省略用活动表\" },\n range: { type: \"string\", description: 'A1 区域(如 \"B2:F40\"),省略读整个已用范围' },\n includeFormulas: { type: \"boolean\", description: \"是否附带公式清单,默认 true\" },\n },\n additionalProperties: false,\n },\n },\n {\n name: \"sheet_find\",\n description:\n \"全簿检索(单元格的值和公式都搜,大小写不敏感),返回 {sheet, ref, value, formula?},\" +\n \"ref 可直接回填给写工具。\",\n inputSchema: {\n type: \"object\",\n properties: {\n query: { type: \"string\", description: \"要查找的文本(字面量,不是正则)\" },\n limit: { type: \"number\", description: \"最多返回几条,默认 20\" },\n },\n required: [\"query\"],\n additionalProperties: false,\n },\n },\n {\n name: \"sheet_set_values\",\n description:\n \"从 start 起写入一块二维值,批量写入首选(不要拆成很多次单格调用)。\" +\n '以 \"=\" 开头的字符串按公式写入(如 \"=SUM(A1:A9)\"),null 清空该格,' +\n \"各行必须等长 —— 整块区域会被覆盖,不想动的格子请缩小区域分多次写。\" +\n SHEET_ADDRESSING_NOTE,\n inputSchema: {\n type: \"object\",\n properties: {\n sheet: { type: \"string\", description: \"工作表 id 或表名,省略用活动表\" },\n start: { type: \"string\", description: '写入区域左上角,单格 A1 形式(如 \"B2\")' },\n values: {\n type: \"array\",\n description: \"二维数组,外层是行。元素:字符串/数字/布尔/null\",\n items: {\n type: \"array\",\n items: { type: [\"string\", \"number\", \"boolean\", \"null\"] },\n },\n },\n },\n required: [\"start\", \"values\"],\n additionalProperties: false,\n },\n },\n {\n name: \"sheet_edit_rows_cols\",\n description:\n \"插入 / 删除整行整列。index 是 0-based:insert 在该位置**之前**插入,\" +\n \"delete 从该位置开始删 count 个。删除不可撤销地移除数据 —— 删之前先 sheet_read 确认内容。\",\n inputSchema: {\n type: \"object\",\n properties: {\n sheet: { type: \"string\", description: \"工作表 id 或表名,省略用活动表\" },\n action: {\n type: \"string\",\n enum: [\"insert_rows\", \"delete_rows\", \"insert_cols\", \"delete_cols\"],\n },\n index: { type: \"number\", description: \"0-based 行号/列号\" },\n count: { type: \"number\", description: \"行数/列数,默认 1\" },\n },\n required: [\"action\", \"index\"],\n additionalProperties: false,\n },\n },\n {\n name: \"sheet_manage_sheets\",\n description:\n \"工作表管理:add(新建)/ rename(重命名)/ delete(删除,**整表数据一并消失**,\" +\n \"必须显式指定 sheet,删之前先跟用户确认)/ activate(切活动表)。返回最新的表清单。\",\n inputSchema: {\n type: \"object\",\n properties: {\n action: { type: \"string\", enum: [\"add\", \"rename\", \"delete\", \"activate\"] },\n sheet: { type: \"string\", description: \"rename/delete/activate 的目标(id 或表名)\" },\n name: { type: \"string\", description: \"add 的表名 / rename 的新名\" },\n },\n required: [\"action\"],\n additionalProperties: false,\n },\n },\n {\n name: \"sheet_export_xlsx\",\n description:\n \"把当前工作簿导出成 .xlsx 落到磁盘,返回文件路径与导出统计。\" +\n \"文件写在 hub 的输出目录下,只接受文件名、不接受路径。\" +\n \"返回的 warnings 是**导出时丢了什么**(图片、条件格式等插件数据),\" +\n \"非空就如实转述给用户,别当成功报。\",\n inputSchema: {\n type: \"object\",\n properties: {\n filename: {\n type: \"string\",\n description: \"文件名,如 `报表.xlsx`。省略则用 工作簿.xlsx。不要带目录\",\n },\n },\n additionalProperties: false,\n },\n },\n]\n\nexport const SHEET_TOOL_NAMES: readonly string[] = SHEET_TOOLS.map((t) => t.name)\n\n/** 单个 sheet 工具的定义,找不到返回 undefined。 */\nexport function getSheetTool(name: string): DocTool | undefined {\n return SHEET_TOOLS.find((t) => t.name === name)\n}\n\n/** 全量工具面:宿主同时挂了 DocRuntime 和 SheetRuntime 时用它注册。 */\nexport const ALL_TOOLS: readonly DocTool[] = [...DOC_TOOLS, ...SHEET_TOOLS]\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/tools.ts"],"names":[],"mappings":";;;AAuCA,IAAM,eAAA,GACJ,sHAAA;AAQF,IAAM,UAAA,GAAa,CAAC,GAAG,IAAI,IAAI,MAAA,CAAO,MAAA,CAAO,QAAQ,CAAC,CAAC,CAAA,CACpD,OAAO,CAAC,CAAA,KAAM,CAAC,aAAA,CAAc,GAAA,CAAI,CAAC,CAAC,CAAA,CACnC,IAAA,EAAK,CACL,IAAA,CAAK,GAAG,CAAA;AACX,IAAM,cAAc,MAAA,CAAO,MAAA,CAAO,QAAQ,CAAA,CAAE,KAAK,GAAG,CAAA;AAE7C,IAAM,SAAA,GAAgC;AAAA,EAC3C;AAAA,IACE,IAAA,EAAM,UAAA;AAAA,IACN,aACE,8CAAA,GACA,eAAA;AAAA,IACF,WAAA,EAAa;AAAA,MACX,IAAA,EAAM,QAAA;AAAA,MACN,UAAA,EAAY;AAAA,QACV,MAAA,EAAQ;AAAA,UACN,IAAA,EAAM,QAAA;AAAA,UACN,IAAA,EAAM,CAAC,KAAA,EAAO,MAAA,EAAQ,MAAM,CAAA;AAAA,UAC5B,WAAA,EACE;AAAA;AAEJ,OACF;AAAA,MACA,oBAAA,EAAsB;AAAA;AACxB,GACF;AAAA,EACA;AAAA,IACE,IAAA,EAAM,YAAA;AAAA,IACN,WAAA,EACE,6GAAA;AAAA,IAGF,WAAA,EAAa,EAAE,IAAA,EAAM,QAAA,EAAU,YAAY,EAAC,EAAG,sBAAsB,KAAA;AAAM,GAC7E;AAAA,EACA;AAAA,IACE,IAAA,EAAM,UAAA;AAAA,IACN,WAAA,EACE,6EAAA;AAAA,IACF,WAAA,EAAa;AAAA,MACX,IAAA,EAAM,QAAA;AAAA,MACN,UAAA,EAAY;AAAA,QACV,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,kBAAA,EAAmB;AAAA,QACzD,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,cAAA;AAAe,OACvD;AAAA,MACA,QAAA,EAAU,CAAC,OAAO,CAAA;AAAA,MAClB,oBAAA,EAAsB;AAAA;AACxB,GACF;AAAA,EACA;AAAA,IACE,IAAA,EAAM,mBAAA;AAAA,IACN,WAAA,EACE,uDAAA;AAAA,IACF,WAAA,EAAa,EAAE,IAAA,EAAM,QAAA,EAAU,YAAY,EAAC,EAAG,sBAAsB,KAAA;AAAM,GAC7E;AAAA,EACA;AAAA,IACE,IAAA,EAAM,kBAAA;AAAA,IACN,aACE,0EAAA,GAEA,eAAA;AAAA,IACF,WAAA,EAAa;AAAA,MACX,IAAA,EAAM,QAAA;AAAA,MACN,UAAA,EAAY;AAAA,QACV,UAAA,EAAY,EAAE,IAAA,EAAM,QAAA,EAAS;AAAA,QAC7B,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAS;AAAA,QAC1B,OAAA,EAAS;AAAA,UACP,IAAA,EAAM,OAAA;AAAA,UACN,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAS;AAAA,UACxB,WAAA,EAAa;AAAA,SACf;AAAA,QACA,UAAA,EAAY;AAAA,UACV,IAAA,EAAM,SAAA;AAAA,UACN,WAAA,EAAa;AAAA;AACf,OACF;AAAA,MACA,QAAA,EAAU,CAAC,YAAA,EAAc,SAAS,CAAA;AAAA,MAClC,oBAAA,EAAsB;AAAA;AACxB,GACF;AAAA,EACA;AAAA,IACE,IAAA,EAAM,iBAAA;AAAA,IACN,WAAA,EACE,4KAAA;AAAA,IAIF,WAAA,EAAa;AAAA,MACX,IAAA,EAAM,QAAA;AAAA,MACN,UAAA,EAAY;AAAA,QACV,MAAA,EAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,SAAA,EAAU;AAAA,QACjD,UAAA,EAAY,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,oBAAA,EAAqB;AAAA,QAChE,KAAA,EAAO;AAAA,UACL,IAAA,EAAM,OAAA;AAAA,UACN,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAU,MAAM,CAAC,GAAG,WAAW,CAAA,EAAE;AAAA,UAChD,WAAA,EAAa;AAAA,SACf;AAAA,QACA,MAAA,EAAQ,EAAE,IAAA,EAAM,SAAA,EAAW,aAAa,4BAAA,EAA6B;AAAA,QACrE,UAAA,EAAY,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,qBAAA;AAAsB,OACnE;AAAA,MACA,QAAA,EAAU,CAAC,QAAA,EAAU,YAAA,EAAc,OAAO,CAAA;AAAA,MAC1C,oBAAA,EAAsB;AAAA;AACxB,GACF;AAAA,EACA;AAAA,IACE,IAAA,EAAM,kBAAA;AAAA,IACN,WAAA,EACE,CAAA;AAAA,YAAA,EAEe,UAAU,CAAA;AAAA,GAAA,EACnB,WAAW,CAAA;AAAA;AAAA,gFAAA,CAAA,GAIjB,eAAA;AAAA,IACF,WAAA,EAAa;AAAA,MACX,IAAA,EAAM,QAAA;AAAA,MACN,UAAA,EAAY;AAAA,QACV,UAAA,EAAY;AAAA,UACV,IAAA,EAAM,OAAA;AAAA,UACN,KAAA,EAAO;AAAA,YACL,IAAA,EAAM,QAAA;AAAA,YACN,UAAA,EAAY;AAAA,cACV,MAAA,EAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,MAAM,CAAC,QAAA,EAAU,QAAA,EAAU,QAAQ,CAAA,EAAE;AAAA,cAC/D,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,gBAAA,EAAiB;AAAA,cACzD,QAAA,EAAU,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,gBAAA,EAAiB;AAAA,cAC1D,EAAA,EAAI,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,iBAAA,EAAkB;AAAA,cACrD,OAAA,EAAS;AAAA,gBACP,IAAA,EAAM,QAAA;AAAA,gBACN,WAAA,EAAa;AAAA;AACf,aACF;AAAA,YACA,QAAA,EAAU,CAAC,QAAQ;AAAA;AACrB;AACF,OACF;AAAA,MACA,QAAA,EAAU,CAAC,YAAY,CAAA;AAAA,MACvB,oBAAA,EAAsB;AAAA;AACxB,GACF;AAAA,EACA;AAAA,IACE,IAAA,EAAM,gBAAA;AAAA,IACN,WAAA,EACE,sLAAA;AAAA,IAIF,WAAA,EAAa;AAAA,MACX,IAAA,EAAM,QAAA;AAAA,MACN,UAAA,EAAY;AAAA,QACV,OAAA,EAAS,EAAE,IAAA,EAAM,QAAA,EAAS;AAAA,QAC1B,MAAA,EAAQ;AAAA,UACN,IAAA,EAAM,QAAA;AAAA,UACN,IAAA,EAAM;AAAA,YACJ,WAAA;AAAA,YACA,kBAAA;AAAA,YACA,mBAAA;AAAA,YACA,kBAAA;AAAA,YACA,mBAAA;AAAA,YACA,YAAA;AAAA,YACA,YAAA;AAAA,YACA,mBAAA;AAAA,YACA,aAAA;AAAA,YACA;AAAA;AACF,SACF;AAAA,QACA,GAAA,EAAK;AAAA,UACH,IAAA,EAAM,QAAA;AAAA,UACN,WAAA,EAAa;AAAA,SACf;AAAA,QACA,GAAA,EAAK,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,gCAAA,EAAiC;AAAA,QACrE,MAAA,EAAQ;AAAA,UACN,IAAA,EAAM,OAAA;AAAA,UACN,WAAA,EAAa,gCAAA;AAAA,UACb,KAAA,EAAO;AAAA,YACL,IAAA,EAAM,QAAA;AAAA,YACN,UAAA,EAAY;AAAA,cACV,GAAA,EAAK,EAAE,IAAA,EAAM,QAAA,EAAS;AAAA,cACtB,GAAA,EAAK,EAAE,IAAA,EAAM,QAAA,EAAS;AAAA,cACtB,IAAA,EAAM,EAAE,IAAA,EAAM,QAAA;AAAS,aACzB;AAAA,YACA,QAAA,EAAU,CAAC,KAAA,EAAO,KAAA,EAAO,MAAM;AAAA;AACjC;AACF,OACF;AAAA,MACA,QAAA,EAAU,CAAC,SAAA,EAAW,QAAQ,CAAA;AAAA,MAC9B,oBAAA,EAAsB;AAAA;AACxB,GACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA;AAAA,IACE,IAAA,EAAM,iBAAA;AAAA,IACN,WAAA,EACE,sOAAA;AAAA,IAMF,WAAA,EAAa;AAAA,MACX,IAAA,EAAM,QAAA;AAAA,MACN,UAAA,EAAY;AAAA,QACV,QAAA,EAAU;AAAA,UACR,IAAA,EAAM,QAAA;AAAA,UACN,WAAA,EAAa;AAAA;AACf,OACF;AAAA,MACA,oBAAA,EAAsB;AAAA;AACxB,GACF;AAAA,EACA;AAAA,IACE,IAAA,EAAM,iBAAA;AAAA,IACN,WAAA,EACE,iKAAA;AAAA,IAIF,WAAA,EAAa;AAAA,MACX,IAAA,EAAM,QAAA;AAAA,MACN,UAAA,EAAY;AAAA,QACV,IAAA,EAAM;AAAA,UACJ,IAAA,EAAM,QAAA;AAAA,UACN,WAAA,EAAa;AAAA;AACf,OACF;AAAA,MACA,QAAA,EAAU,CAAC,MAAM,CAAA;AAAA,MACjB,oBAAA,EAAsB;AAAA;AACxB;AAEJ;AAEO,IAAM,iBAAoC,SAAA,CAAU,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,IAAI;AAGrE,SAAS,WAAW,IAAA,EAAmC;AAC5D,EAAA,OAAO,UAAU,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,IAAI,CAAA;AAC9C;AAaA,IAAM,qBAAA,GACJ,kFAAA;AAGK,IAAM,WAAA,GAAkC;AAAA,EAC7C;AAAA,IACE,IAAA,EAAM,YAAA;AAAA,IACN,aACE,2JAAA,GAGA,qBAAA;AAAA,IACF,WAAA,EAAa;AAAA,MACX,IAAA,EAAM,QAAA;AAAA,MACN,UAAA,EAAY;AAAA,QACV,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,mBAAA,EAAoB;AAAA,QAC1D,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,6BAAA,EAA8B;AAAA,QACpE,eAAA,EAAiB,EAAE,IAAA,EAAM,SAAA,EAAW,aAAa,kBAAA;AAAmB,OACtE;AAAA,MACA,oBAAA,EAAsB;AAAA;AACxB,GACF;AAAA,EACA;AAAA,IACE,IAAA,EAAM,YAAA;AAAA,IACN,WAAA,EACE,yEAAA;AAAA,IAEF,WAAA,EAAa;AAAA,MACX,IAAA,EAAM,QAAA;AAAA,MACN,UAAA,EAAY;AAAA,QACV,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,kBAAA,EAAmB;AAAA,QACzD,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,cAAA;AAAe,OACvD;AAAA,MACA,QAAA,EAAU,CAAC,OAAO,CAAA;AAAA,MAClB,oBAAA,EAAsB;AAAA;AACxB,GACF;AAAA,EACA;AAAA,IACE,IAAA,EAAM,kBAAA;AAAA,IACN,aACE,uHAAA,GAGA,qBAAA;AAAA,IACF,WAAA,EAAa;AAAA,MACX,IAAA,EAAM,QAAA;AAAA,MACN,UAAA,EAAY;AAAA,QACV,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,mBAAA,EAAoB;AAAA,QAC1D,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,0BAAA,EAA2B;AAAA,QACjE,MAAA,EAAQ;AAAA,UACN,IAAA,EAAM,OAAA;AAAA,UACN,WAAA,EAAa,6BAAA;AAAA,UACb,KAAA,EAAO;AAAA,YACL,IAAA,EAAM,OAAA;AAAA,YACN,KAAA,EAAO,EAAE,IAAA,EAAM,CAAC,UAAU,QAAA,EAAU,SAAA,EAAW,MAAM,CAAA;AAAE;AACzD;AACF,OACF;AAAA,MACA,QAAA,EAAU,CAAC,OAAA,EAAS,QAAQ,CAAA;AAAA,MAC5B,oBAAA,EAAsB;AAAA;AACxB,GACF;AAAA,EACA;AAAA,IACE,IAAA,EAAM,sBAAA;AAAA,IACN,WAAA,EACE,6GAAA;AAAA,IAEF,WAAA,EAAa;AAAA,MACX,IAAA,EAAM,QAAA;AAAA,MACN,UAAA,EAAY;AAAA,QACV,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,mBAAA,EAAoB;AAAA,QAC1D,MAAA,EAAQ;AAAA,UACN,IAAA,EAAM,QAAA;AAAA,UACN,IAAA,EAAM,CAAC,aAAA,EAAe,aAAA,EAAe,eAAe,aAAa;AAAA,SACnE;AAAA,QACA,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,eAAA,EAAgB;AAAA,QACtD,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,YAAA;AAAa,OACrD;AAAA,MACA,QAAA,EAAU,CAAC,QAAA,EAAU,OAAO,CAAA;AAAA,MAC5B,oBAAA,EAAsB;AAAA;AACxB,GACF;AAAA,EACA;AAAA,IACE,IAAA,EAAM,qBAAA;AAAA,IACN,WAAA,EACE,sGAAA;AAAA,IAEF,WAAA,EAAa;AAAA,MACX,IAAA,EAAM,QAAA;AAAA,MACN,UAAA,EAAY;AAAA,QACV,MAAA,EAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,CAAC,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,UAAU,CAAA,EAAE;AAAA,QACxE,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,oCAAA,EAAqC;AAAA,QAC3E,IAAA,EAAM,EAAE,IAAA,EAAM,QAAA,EAAU,aAAa,sBAAA;AAAuB,OAC9D;AAAA,MACA,QAAA,EAAU,CAAC,QAAQ,CAAA;AAAA,MACnB,oBAAA,EAAsB;AAAA;AACxB,GACF;AAAA,EACA;AAAA,IACE,IAAA,EAAM,mBAAA;AAAA,IACN,WAAA,EACE,yHAAA;AAAA,IAIF,WAAA,EAAa;AAAA,MACX,IAAA,EAAM,QAAA;AAAA,MACN,UAAA,EAAY;AAAA,QACV,QAAA,EAAU;AAAA,UACR,IAAA,EAAM,QAAA;AAAA,UACN,WAAA,EAAa;AAAA;AACf,OACF;AAAA,MACA,oBAAA,EAAsB;AAAA;AACxB;AAEJ;AAEO,IAAM,mBAAsC,WAAA,CAAY,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,IAAI;AAGzE,SAAS,aAAa,IAAA,EAAmC;AAC9D,EAAA,OAAO,YAAY,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,IAAI,CAAA;AAChD;AAGO,IAAM,SAAA,GAAgC,CAAC,GAAG,SAAA,EAAW,GAAG,WAAW","file":"chunk-BWSZVC53.js","sourcesContent":["/**\n * 工具面:doc 10 个 + sheet 6 个工具的 name / description / JSON Schema。\n *\n * **这里没有任何传输**。是 MCP、是 HTTP、还是像 jizhi_ai 那样 agent loop 直接调\n * executor,都由上层决定 —— 想自己接的只 import 这个模块就够了:\n *\n * ```ts\n * import { DOC_TOOLS, SHEET_TOOLS, ALL_TOOLS } from \"@4399ywkf/editor-mcp/tools\"\n * ```\n *\n * 为什么这么少:参照系是 BlockNote AI 的 3 个工具,和把 tiptap 每个 command\n * 都包成工具的 `tiptap-apcore`(79 个,GitHub 1 star)。工具面大了模型反而选不准。\n * `doc_stats` 那类对账工具刻意不在这里 —— 它是给人调试用的,`DocRuntime.call`\n * 支持,但不该占模型的注意力。\n *\n * 8 个读写工具 + 2 个导入导出。后两个之所以够格占位置:没有它们,模型能把文档\n * 改好却交付不出去 —— 「改完了,然后呢」是个死胡同。\n */\nimport { FORMATTABLE, MARK_TAG, NODE_TAG, READONLY_TAGS } from \"@4399ywkf/editor/doc-runtime\"\n\nexport interface DocToolSchema {\n type: \"object\"\n properties: Record<string, unknown>\n required?: string[]\n additionalProperties?: boolean\n}\n\nexport interface DocTool {\n name: string\n description: string\n inputSchema: DocToolSchema\n}\n\n/**\n * 定位纪律。写进 description 而不是 README —— 和实现同生共死,不会漂。\n *\n * 后半句是必需的:模型带着 Google Docs / 腾讯文档那套 API 的条件反射\n * (改一处就失效一次索引),不明说它会自作聪明地倒序处理、反复重读。\n */\nconst ADDRESSING_NOTE =\n \"定位一律用 node id(读工具返回的 id 属性),逐字复制。\" +\n \"注意:与 Google Docs / 腾讯文档那类 API 不同,本工具面的定位在执行的那一瞬间才解析,\" +\n \"所以你不需要从文档尾部往前处理,也不需要每改一处就重新读一遍。\"\n\n/**\n * 可用标签清单从 doc-runtime 的标签表**生成**,不是手抄的。\n * 编辑器加一个节点类型,这段 description 自动跟着变。\n */\nconst BLOCK_TAGS = [...new Set(Object.values(NODE_TAG))]\n .filter((t) => !READONLY_TAGS.has(t))\n .sort()\n .join(\" \")\nconst INLINE_TAGS = Object.values(MARK_TAG).join(\" \")\n\nexport const DOC_TOOLS: readonly DocTool[] = [\n {\n name: \"doc_read\",\n description:\n \"读取整篇文档,返回 LiteXML(每个块带稳定 id)。要编辑之前必须先调它拿 id。\" +\n ADDRESSING_NOTE,\n inputSchema: {\n type: \"object\",\n properties: {\n format: {\n type: \"string\",\n enum: [\"xml\", \"json\", \"both\"],\n description:\n \"默认 xml。json 是 ProseMirror 原生结构(无损但费 token,约 1.5-2.8 倍),\" +\n \"只在你怀疑 LiteXML 丢了信息时才用。\",\n },\n },\n additionalProperties: false,\n },\n },\n {\n name: \"doc_schema\",\n description:\n \"返回本编辑器支持的全部节点类型 / 标记类型 / LiteXML 标签映射 / 哪些类型带稳定 id。\" +\n \"不确定某个结构能不能写、该用什么标签时先查它。这份数据是从运行时 schema 反射出来的,\" +\n \"永远不会和实现漂移。\",\n inputSchema: { type: \"object\", properties: {}, additionalProperties: false },\n },\n {\n name: \"doc_find\",\n description:\n \"全文检索,返回可直接回填给写工具的地址:{nodeId, nodeType, contextBefore, match, contextAfter}。\",\n inputSchema: {\n type: \"object\",\n properties: {\n query: { type: \"string\", description: \"要查找的文本(字面量,不是正则)\" },\n limit: { type: \"number\", description: \"最多返回几条,默认 20\" },\n },\n required: [\"query\"],\n additionalProperties: false,\n },\n },\n {\n name: \"doc_get_selection\",\n description:\n \"读取用户此刻在编辑器里选中了什么。返回 selection:null 时表示本轮无选区,不得沿用历史选区。\",\n inputSchema: { type: \"object\", properties: {}, additionalProperties: false },\n },\n {\n name: \"doc_replace_text\",\n description:\n \"块内文本替换,最推荐的细粒度改法。只改命中的那一段,块内其余的格式、链接、\" +\n \"mention 都会保住。可用 nodeIds 限定只在某些块里替换。\" +\n ADDRESSING_NOTE,\n inputSchema: {\n type: \"object\",\n properties: {\n searchText: { type: \"string\" },\n newText: { type: \"string\" },\n nodeIds: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"限定生效范围;省略则全文\",\n },\n replaceAll: {\n type: \"boolean\",\n description: \"默认 false,只替换文档里第一处\",\n },\n },\n required: [\"searchText\", \"newText\"],\n additionalProperties: false,\n },\n },\n {\n name: \"doc_format_text\",\n description:\n \"给某个块里的一段文字加/去格式(加粗、斜体、下划线、删除线、行内代码、上下标)。\" +\n \"**要改格式请优先用它,不要用 doc_modify_nodes 整块重写** —— \" +\n \"整块重写要求你重述整块内容,你没看见的属性和内联节点会在重述中丢失。\\n\" +\n \"先用 doc_read / doc_find 拿到块的 id 和它的文本,再指定要施加格式的那段文字。\",\n inputSchema: {\n type: \"object\",\n properties: {\n nodeId: { type: \"string\", description: \"目标块的 id\" },\n searchText: { type: \"string\", description: \"块内要施加格式的那段文字(精确匹配)\" },\n marks: {\n type: \"array\",\n items: { type: \"string\", enum: [...FORMATTABLE] },\n description: \"要施加的标记,可多个\",\n },\n remove: { type: \"boolean\", description: \"true 则移除这些标记而不是施加,默认 false\" },\n occurrence: { type: \"number\", description: \"块内第几处匹配,从 1 开始,默认 1\" },\n },\n required: [\"nodeId\", \"searchText\", \"marks\"],\n additionalProperties: false,\n },\n },\n {\n name: \"doc_modify_nodes\",\n description:\n \"结构化编辑:一次提交多个 insert / remove / modify 操作。\" +\n \"批量写入优先用它,不要拆成很多次单点调用。\\n\" +\n `LiteXML 块标签:${BLOCK_TAGS} h1-h6;未知节点用 <node type=\"x\"/>。\\n` +\n `内联:${INLINE_TAGS} a[href] mark[color] color[v] br。\\n` +\n '例:<code lang=\"ts\">…</code>、<img src=\"…\"/>、<tasks><task checked=\"true\">…</task></tasks>。\\n' +\n \"modify 的 litexml 必须带上要改的那个块的 id 属性。\" +\n \"你没写进 XML 的属性会以原节点为底保留下来(不会被抹掉),所以不必重述你没看见的状态。\" +\n ADDRESSING_NOTE,\n inputSchema: {\n type: \"object\",\n properties: {\n operations: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n action: { type: \"string\", enum: [\"insert\", \"remove\", \"modify\"] },\n afterId: { type: \"string\", description: \"insert:插到这个块之后\" },\n beforeId: { type: \"string\", description: \"insert:插到这个块之前\" },\n id: { type: \"string\", description: \"remove:要删除的块 id\" },\n litexml: {\n type: \"string\",\n description: \"insert/modify 的内容。modify 时必须带 id 属性\",\n },\n },\n required: [\"action\"],\n },\n },\n },\n required: [\"operations\"],\n additionalProperties: false,\n },\n },\n {\n name: \"doc_table_edit\",\n description:\n \"表格的**结构性**改动(增删行列、合并拆分、切表头)和批量写值。\" +\n \"用 (tableId, row, col) 这种结构坐标定位,row/col 都是 0-based,表头是第 0 行。\\n\" +\n \"注意:单元格里的段落是有 id 的,所以「只改某个格子的文字」直接用 \" +\n \"doc_replace_text / doc_format_text 打那个段落的 id 通常更简单。\",\n inputSchema: {\n type: \"object\",\n properties: {\n tableId: { type: \"string\" },\n action: {\n type: \"string\",\n enum: [\n \"set_cells\",\n \"insert_row_after\",\n \"insert_row_before\",\n \"insert_col_after\",\n \"insert_col_before\",\n \"delete_row\",\n \"delete_col\",\n \"toggle_header_row\",\n \"merge_cells\",\n \"split_cell\",\n ],\n },\n row: {\n type: \"number\",\n description: \"0-based 行号(表头是第 0 行)。除 set_cells 外**必填**,作为锚点单元格\",\n },\n col: { type: \"number\", description: \"0-based 列号。除 set_cells 外**必填**\" },\n values: {\n type: \"array\",\n description: \"set_cells 用:[{row, col, text}]\",\n items: {\n type: \"object\",\n properties: {\n row: { type: \"number\" },\n col: { type: \"number\" },\n text: { type: \"string\" },\n },\n required: [\"row\", \"col\", \"text\"],\n },\n },\n },\n required: [\"tableId\", \"action\"],\n additionalProperties: false,\n },\n },\n\n /* ---------------------------- 导入 / 导出 ---------------------------- *\n * 这两个工具的返回值和参数里**不出现文件内容**。docx 是二进制,一份带图的\n * 动辄几 MB,base64 进上下文会直接把窗口撑爆。所以约定:模型只说路径,\n * 字节在 hub ↔ 浏览器之间走,不经过模型。\n * ------------------------------------------------------------------ */\n {\n name: \"doc_export_docx\",\n description:\n \"把当前文档导出成 .docx 落到磁盘,返回文件路径与导出统计。\" +\n \"文件写在 hub 的输出目录下(启动时 --out-dir 指定,默认 hub 的工作目录),\" +\n \"只接受文件名、不接受路径 —— 想放别处请让用户改 hub 的 --out-dir。\\n\" +\n \"会一并写回导入时保留的页眉页脚与页面设置(前提是这篇文档是本次会话里用 \" +\n \"doc_import_docx 或界面导入进来的)。返回的 warnings 是**导出时丢了什么**,\" +\n \"非空就如实转述给用户,别当成功报。\",\n inputSchema: {\n type: \"object\",\n properties: {\n filename: {\n type: \"string\",\n description: \"文件名,如 `报告.docx`。省略则用 document.docx。不要带目录\",\n },\n },\n additionalProperties: false,\n },\n },\n {\n name: \"doc_import_docx\",\n description:\n \"读一份 .docx 灌进编辑器,**整篇替换**当前内容(不是追加,也不可撤销 —— \" +\n \"文档里已有内容时先跟用户确认)。path 相对 hub 的输出目录解析。\\n\" +\n \"返回 recovered(各类样式各救回多少项)和 warnings。导入完要接着编辑的话,\" +\n \"先调 doc_read 拿新的 id —— 旧 id 全部失效。\",\n inputSchema: {\n type: \"object\",\n properties: {\n path: {\n type: \"string\",\n description: \"docx 文件名或相对 hub 输出目录的路径\",\n },\n },\n required: [\"path\"],\n additionalProperties: false,\n },\n },\n]\n\nexport const DOC_TOOL_NAMES: readonly string[] = DOC_TOOLS.map((t) => t.name)\n\n/** 单个工具的定义,找不到返回 undefined。 */\nexport function getDocTool(name: string): DocTool | undefined {\n return DOC_TOOLS.find((t) => t.name === name)\n}\n\n/* ================================ sheet ================================ */\n\n/**\n * 表格工具面。执行体是 `@4399ywkf/editor/sheet-runtime` 的 `SheetRuntime`,\n * 和 doc 工具面同一套纪律:面刻意小(6 个)、导出不给模型看字节、\n * 丢失/降级如实进 warnings。\n *\n * 定位用 A1 引用而不是 node id —— 表格的坐标系本来就是稳定的,\n * 不需要 doc 那套「读了才有 id」的仪式;但**写之前先 sheet_read 看清现状**\n * 这条纪律不变:盲写会覆盖你没看见的数据。\n */\nconst SHEET_ADDRESSING_NOTE =\n \"定位一律用 A1 引用(如 B2、A1:D20),行列都从 A/1 开始数。\" +\n \"写之前先用 sheet_read 看清目标区域现状 —— 盲写会覆盖你没看见的数据。\"\n\nexport const SHEET_TOOLS: readonly DocTool[] = [\n {\n name: \"sheet_read\",\n description:\n \"读取工作簿概览(每张表的名字和已用范围)+ 指定表的单元格内容(CSV 文本)与公式清单。\" +\n \"要写之前必须先调它。区域超过 300×100 会截断并提示,用 range 分段读。\" +\n '日期格读出来是 Excel 序列号;返回里带 dateSystem: \"date1904\" 时序列号从 1904-01-01 起算。' +\n SHEET_ADDRESSING_NOTE,\n inputSchema: {\n type: \"object\",\n properties: {\n sheet: { type: \"string\", description: \"工作表 id 或表名,省略用活动表\" },\n range: { type: \"string\", description: 'A1 区域(如 \"B2:F40\"),省略读整个已用范围' },\n includeFormulas: { type: \"boolean\", description: \"是否附带公式清单,默认 true\" },\n },\n additionalProperties: false,\n },\n },\n {\n name: \"sheet_find\",\n description:\n \"全簿检索(单元格的值和公式都搜,大小写不敏感),返回 {sheet, ref, value, formula?},\" +\n \"ref 可直接回填给写工具。\",\n inputSchema: {\n type: \"object\",\n properties: {\n query: { type: \"string\", description: \"要查找的文本(字面量,不是正则)\" },\n limit: { type: \"number\", description: \"最多返回几条,默认 20\" },\n },\n required: [\"query\"],\n additionalProperties: false,\n },\n },\n {\n name: \"sheet_set_values\",\n description:\n \"从 start 起写入一块二维值,批量写入首选(不要拆成很多次单格调用)。\" +\n '以 \"=\" 开头的字符串按公式写入(如 \"=SUM(A1:A9)\"),null 清空该格,' +\n \"各行必须等长 —— 整块区域会被覆盖,不想动的格子请缩小区域分多次写。\" +\n SHEET_ADDRESSING_NOTE,\n inputSchema: {\n type: \"object\",\n properties: {\n sheet: { type: \"string\", description: \"工作表 id 或表名,省略用活动表\" },\n start: { type: \"string\", description: '写入区域左上角,单格 A1 形式(如 \"B2\")' },\n values: {\n type: \"array\",\n description: \"二维数组,外层是行。元素:字符串/数字/布尔/null\",\n items: {\n type: \"array\",\n items: { type: [\"string\", \"number\", \"boolean\", \"null\"] },\n },\n },\n },\n required: [\"start\", \"values\"],\n additionalProperties: false,\n },\n },\n {\n name: \"sheet_edit_rows_cols\",\n description:\n \"插入 / 删除整行整列。index 是 0-based:insert 在该位置**之前**插入,\" +\n \"delete 从该位置开始删 count 个。删除不可撤销地移除数据 —— 删之前先 sheet_read 确认内容。\",\n inputSchema: {\n type: \"object\",\n properties: {\n sheet: { type: \"string\", description: \"工作表 id 或表名,省略用活动表\" },\n action: {\n type: \"string\",\n enum: [\"insert_rows\", \"delete_rows\", \"insert_cols\", \"delete_cols\"],\n },\n index: { type: \"number\", description: \"0-based 行号/列号\" },\n count: { type: \"number\", description: \"行数/列数,默认 1\" },\n },\n required: [\"action\", \"index\"],\n additionalProperties: false,\n },\n },\n {\n name: \"sheet_manage_sheets\",\n description:\n \"工作表管理:add(新建)/ rename(重命名)/ delete(删除,**整表数据一并消失**,\" +\n \"必须显式指定 sheet,删之前先跟用户确认)/ activate(切活动表)。返回最新的表清单。\",\n inputSchema: {\n type: \"object\",\n properties: {\n action: { type: \"string\", enum: [\"add\", \"rename\", \"delete\", \"activate\"] },\n sheet: { type: \"string\", description: \"rename/delete/activate 的目标(id 或表名)\" },\n name: { type: \"string\", description: \"add 的表名 / rename 的新名\" },\n },\n required: [\"action\"],\n additionalProperties: false,\n },\n },\n {\n name: \"sheet_export_xlsx\",\n description:\n \"把当前工作簿导出成 .xlsx 落到磁盘,返回文件路径与导出统计。\" +\n \"文件写在 hub 的输出目录下,只接受文件名、不接受路径。\" +\n \"返回的 warnings 是**导出时丢了什么**(图片、条件格式等插件数据),\" +\n \"非空就如实转述给用户,别当成功报。\",\n inputSchema: {\n type: \"object\",\n properties: {\n filename: {\n type: \"string\",\n description: \"文件名,如 `报表.xlsx`。省略则用 工作簿.xlsx。不要带目录\",\n },\n },\n additionalProperties: false,\n },\n },\n]\n\nexport const SHEET_TOOL_NAMES: readonly string[] = SHEET_TOOLS.map((t) => t.name)\n\n/** 单个 sheet 工具的定义,找不到返回 undefined。 */\nexport function getSheetTool(name: string): DocTool | undefined {\n return SHEET_TOOLS.find((t) => t.name === name)\n}\n\n/** 全量工具面:宿主同时挂了 DocRuntime 和 SheetRuntime 时用它注册。 */\nexport const ALL_TOOLS: readonly DocTool[] = [...DOC_TOOLS, ...SHEET_TOOLS]\n"]}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { ALL_TOOLS, DOC_TOOLS, DOC_TOOL_NAMES, SHEET_TOOLS, SHEET_TOOL_NAMES, getDocTool, getSheetTool } from './chunk-
|
|
1
|
+
export { ALL_TOOLS, DOC_TOOLS, DOC_TOOL_NAMES, SHEET_TOOLS, SHEET_TOOL_NAMES, getDocTool, getSheetTool } from './chunk-BWSZVC53.js';
|
|
2
2
|
export { attachBridge, composeRuntimes } from './chunk-AHF24VXT.js';
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/dist/tools.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { ALL_TOOLS, DOC_TOOLS, DOC_TOOL_NAMES, SHEET_TOOLS, SHEET_TOOL_NAMES, getDocTool, getSheetTool } from './chunk-
|
|
1
|
+
export { ALL_TOOLS, DOC_TOOLS, DOC_TOOL_NAMES, SHEET_TOOLS, SHEET_TOOL_NAMES, getDocTool, getSheetTool } from './chunk-BWSZVC53.js';
|
|
2
2
|
//# sourceMappingURL=tools.js.map
|
|
3
3
|
//# sourceMappingURL=tools.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@4399ywkf/editor-mcp",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "把 @4399ywkf/editor 的结构化编辑面接出去:工具定义(transport 无关)+ 浏览器桥 + hub + stdio MCP server",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
33
33
|
"ws": "^8.21.3",
|
|
34
|
-
"@4399ywkf/editor": "^0.
|
|
34
|
+
"@4399ywkf/editor": "^0.9.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@types/node": "^22.10.0",
|