yuque-ai-mcp 2.7.6 → 2.7.8

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 (129) hide show
  1. package/README.md +10 -10
  2. package/README_CN.md +10 -10
  3. package/SKILL.md +3 -2
  4. package/dist/board/create-board.js +2 -2
  5. package/dist/board/create-board.js.map +1 -1
  6. package/dist/common/api-client.js +8 -1
  7. package/dist/common/api-client.js.map +1 -1
  8. package/dist/common/config.d.ts +1 -1
  9. package/dist/common/config.js +4 -2
  10. package/dist/common/config.js.map +1 -1
  11. package/dist/common/diff.d.ts +12 -0
  12. package/dist/common/diff.js +46 -0
  13. package/dist/common/diff.js.map +1 -0
  14. package/dist/common/export-common.d.ts +2 -2
  15. package/dist/common/export-common.js +4 -4
  16. package/dist/common/export-common.js.map +1 -1
  17. package/dist/common/format.d.ts +45 -0
  18. package/dist/common/format.js +22 -0
  19. package/dist/common/format.js.map +1 -1
  20. package/dist/common/html-cleaner.d.ts +18 -0
  21. package/dist/common/html-cleaner.js +95 -0
  22. package/dist/common/html-cleaner.js.map +1 -0
  23. package/dist/common/toc-cache.d.ts +8 -24
  24. package/dist/common/toc-cache.js +15 -75
  25. package/dist/common/toc-cache.js.map +1 -1
  26. package/dist/common/toc-ops.d.ts +108 -0
  27. package/dist/common/toc-ops.js +387 -0
  28. package/dist/common/toc-ops.js.map +1 -0
  29. package/dist/common/validate.d.ts +2 -0
  30. package/dist/common/validate.js +8 -0
  31. package/dist/common/validate.js.map +1 -1
  32. package/dist/doc/batch-get-docs.js +13 -10
  33. package/dist/doc/batch-get-docs.js.map +1 -1
  34. package/dist/doc/copy-doc.d.ts +3 -4
  35. package/dist/doc/copy-doc.js +26 -135
  36. package/dist/doc/copy-doc.js.map +1 -1
  37. package/dist/doc/create-doc.js +9 -30
  38. package/dist/doc/create-doc.js.map +1 -1
  39. package/dist/doc/delete-doc.js +2 -2
  40. package/dist/doc/delete-doc.js.map +1 -1
  41. package/dist/doc/diff-doc.js +5 -45
  42. package/dist/doc/diff-doc.js.map +1 -1
  43. package/dist/doc/embed-url.js +5 -0
  44. package/dist/doc/embed-url.js.map +1 -1
  45. package/dist/doc/export-doc.d.ts +5 -5
  46. package/dist/doc/export-doc.js +18 -53
  47. package/dist/doc/export-doc.js.map +1 -1
  48. package/dist/doc/export-resources.d.ts +15 -0
  49. package/dist/doc/export-resources.js +114 -0
  50. package/dist/doc/export-resources.js.map +1 -0
  51. package/dist/doc/get-doc.js +6 -2
  52. package/dist/doc/get-doc.js.map +1 -1
  53. package/dist/doc/import-file-utils.d.ts +19 -0
  54. package/dist/doc/import-file-utils.js +136 -1
  55. package/dist/doc/import-file-utils.js.map +1 -1
  56. package/dist/doc/import-file.d.ts +2 -6
  57. package/dist/doc/import-file.js +30 -166
  58. package/dist/doc/import-file.js.map +1 -1
  59. package/dist/doc/import-url.d.ts +3 -1
  60. package/dist/doc/import-url.js +21 -106
  61. package/dist/doc/import-url.js.map +1 -1
  62. package/dist/doc/index.d.ts +1 -0
  63. package/dist/doc/index.js +3 -1
  64. package/dist/doc/index.js.map +1 -1
  65. package/dist/doc/list-docs.js +5 -2
  66. package/dist/doc/list-docs.js.map +1 -1
  67. package/dist/doc/update-doc.js +2 -2
  68. package/dist/doc/update-doc.js.map +1 -1
  69. package/dist/doc/version-detail.js +4 -6
  70. package/dist/doc/version-detail.js.map +1 -1
  71. package/dist/doc/versions.js +4 -6
  72. package/dist/doc/versions.js.map +1 -1
  73. package/dist/group/delete-user.js +2 -2
  74. package/dist/group/delete-user.js.map +1 -1
  75. package/dist/group/list-users.js +7 -4
  76. package/dist/group/list-users.js.map +1 -1
  77. package/dist/group/update-user.js +3 -4
  78. package/dist/group/update-user.js.map +1 -1
  79. package/dist/note/create-note.js +3 -2
  80. package/dist/note/create-note.js.map +1 -1
  81. package/dist/note/get-note.js +6 -0
  82. package/dist/note/get-note.js.map +1 -1
  83. package/dist/note/list-notes.js +1 -2
  84. package/dist/note/list-notes.js.map +1 -1
  85. package/dist/note/update-note.js +6 -0
  86. package/dist/note/update-note.js.map +1 -1
  87. package/dist/recycle/destroy-recycle.js +5 -0
  88. package/dist/recycle/destroy-recycle.js.map +1 -1
  89. package/dist/recycle/restore-recycle.js +5 -0
  90. package/dist/recycle/restore-recycle.js.map +1 -1
  91. package/dist/repo/batch-get-repos.js +14 -6
  92. package/dist/repo/batch-get-repos.js.map +1 -1
  93. package/dist/repo/copy-repo.js +8 -14
  94. package/dist/repo/copy-repo.js.map +1 -1
  95. package/dist/repo/create-repo.js +2 -2
  96. package/dist/repo/create-repo.js.map +1 -1
  97. package/dist/repo/delete-repo.js +3 -2
  98. package/dist/repo/delete-repo.js.map +1 -1
  99. package/dist/repo/export-repo.js +1 -1
  100. package/dist/repo/export-repo.js.map +1 -1
  101. package/dist/repo/get-repo.js +3 -2
  102. package/dist/repo/get-repo.js.map +1 -1
  103. package/dist/repo/list-repos.js +3 -2
  104. package/dist/repo/list-repos.js.map +1 -1
  105. package/dist/repo/update-repo.js +3 -2
  106. package/dist/repo/update-repo.js.map +1 -1
  107. package/dist/rss/fetch-feed.js.map +1 -1
  108. package/dist/search/rag-search-utils.d.ts +12 -4
  109. package/dist/search/rag-search-utils.js +33 -25
  110. package/dist/search/rag-search-utils.js.map +1 -1
  111. package/dist/search/rag-search.d.ts +1 -1
  112. package/dist/search/rag-search.js +28 -12
  113. package/dist/search/rag-search.js.map +1 -1
  114. package/dist/search/search.js +5 -4
  115. package/dist/search/search.js.map +1 -1
  116. package/dist/toc/batch-update.d.ts +1 -1
  117. package/dist/toc/batch-update.js +2 -184
  118. package/dist/toc/batch-update.js.map +1 -1
  119. package/dist/toc/get-toc.js +3 -2
  120. package/dist/toc/get-toc.js.map +1 -1
  121. package/dist/upload/upload-attachment.js +5 -0
  122. package/dist/upload/upload-attachment.js.map +1 -1
  123. package/dist/user/get-groups.js +5 -5
  124. package/dist/user/get-groups.js.map +1 -1
  125. package/dist/user/get-user.js +5 -0
  126. package/dist/user/get-user.js.map +1 -1
  127. package/dist/user/hello.js +2 -2
  128. package/dist/user/hello.js.map +1 -1
  129. package/package.json +2 -2
package/README.md CHANGED
@@ -4,13 +4,13 @@
4
4
 
5
5
  <h1 align="center">yuque-ai-mcp</h1>
6
6
  <p align="center">
7
- <b>61 fine-grained MCP tools for the full Yuque OpenAPI</b>
7
+ <b>62 fine-grained MCP tools for the full Yuque OpenAPI</b>
8
8
  </p>
9
9
 
10
10
  <p align="center">
11
- <a href="https://github.com/yehuoshun/yuque-ai-mcp"><img src="https://img.shields.io/badge/version-2.7.4-blue" alt="version" /></a>
11
+ <a href="https://github.com/yehuoshun/yuque-ai-mcp"><img src="https://img.shields.io/badge/version-2.7.8-blue" alt="version" /></a>
12
12
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="license" /></a>
13
- <a href="https://github.com/yehuoshun/yuque-ai-skills"><img src="https://img.shields.io/badge/skills-61%20guides-orange" alt="skills" /></a>
13
+ <a href="https://github.com/yehuoshun/yuque-ai-skills"><img src="https://img.shields.io/badge/skills-62%20guides-orange" alt="skills" /></a>
14
14
  </p>
15
15
 
16
16
  <p align="center">
@@ -19,15 +19,15 @@
19
19
 
20
20
  ---
21
21
 
22
- A full-featured Yuque (语雀) MCP Server built on the [Model Context Protocol](https://modelcontextprotocol.io/). Provides 61 fine-grained tools across 15 domains — every Yuque OpenAPI endpoint as a dedicated tool.
22
+ A full-featured Yuque (语雀) MCP Server built on the [Model Context Protocol](https://modelcontextprotocol.io/). Provides 62 fine-grained tools across 15 domains — every Yuque OpenAPI endpoint as a dedicated tool.
23
23
 
24
24
  ## Why
25
25
 
26
- - **19 → 61 tools** — 3x more coverage than the official [yuque-mcp-server](https://github.com/yuque/yuque-mcp-server)
26
+ - **19 → 62 tools** — 3x more coverage than the official [yuque-mcp-server](https://github.com/yuque/yuque-mcp-server)
27
27
  - **Dual transport** — stdio + HTTP SSE, shared registry, zero downtime on reload
28
28
  - **Modular architecture** — 15 domains, barrel exports, single source of truth registry
29
29
  - **Full API coverage** — group, recycle, upload, statistics, versions, boards — all the missing pieces
30
- - **[Skill layer](https://github.com/yehuoshun/yuque-ai-skills)** — 61 usage guides for AI agents
30
+ - **[Skill layer](https://github.com/yehuoshun/yuque-ai-skills)** — 62 usage guides for AI agents
31
31
 
32
32
  ## Table of Contents
33
33
 
@@ -61,7 +61,7 @@ npm run dev:http # HTTP SSE mode (http://localhost:3099)
61
61
 
62
62
  | Domain | Tools | Highlights |
63
63
  |--------|-------|------------|
64
- | **doc** | 14 | CRUD, versions, diff, batch get, import URL/file, cross-book copy, export |
64
+ | **doc** | 15 | CRUD, versions, diff, batch get, import URL/file, cross-book copy, export, resource download |
65
65
  | **repo** | 8 | CRUD, batch get, cross-book copy, full export (TOC-structure + INDEX/GRAPH) |
66
66
  | **toc** | 3 | Get, update, batch update (createTitle/appendNode/removeNode/moveNode) |
67
67
  | **search** | 2 | General search + RAG-enhanced search |
@@ -76,7 +76,7 @@ npm run dev:http # HTTP SSE mode (http://localhost:3099)
76
76
  | **rss** | 3 | Source list, fetch + dedup + save, schedule analysis |
77
77
  | **crawler** | 4 | Fetch, CSS extract, dedup save, schedule analysis |
78
78
  | **kv** | 4 | Get, set, delete, list — incremental sharding, 250KB/doc limit |
79
- | **Total** | **61** | |
79
+ | **Total** | **62** | |
80
80
 
81
81
  See [SKILL.md](SKILL.md) or [yuque-ai-skills](https://github.com/yehuoshun/yuque-ai-skills) for full tool documentation.
82
82
 
@@ -84,13 +84,13 @@ See [SKILL.md](SKILL.md) or [yuque-ai-skills](https://github.com/yehuoshun/yuque
84
84
 
85
85
  | Feature | Official yuque-mcp-server | yuque-ai-mcp |
86
86
  |---------|--------------------------|--------------|
87
- | Tools | 19 | **61** |
87
+ | Tools | 19 | **62** |
88
88
  | Granularity | Coarse | **Fine-grained** (1 tool / endpoint) |
89
89
  | Group, Recycle, Upload, Statistics | ❌ | ✅ |
90
90
  | Versions, Diff, Cross-book Copy | ❌ | ✅ |
91
91
  | Transport | stdio only | **stdio + HTTP SSE** |
92
92
  | Config | Env var | **config.json** (token + cookie) |
93
- | Skill Layer | ❌ | ✅ 61 guides |
93
+ | Skill Layer | ❌ | ✅ 62 guides |
94
94
 
95
95
  ## Architecture
96
96
 
package/README_CN.md CHANGED
@@ -1,14 +1,14 @@
1
1
  <p align="center">
2
2
  <h1 align="center">yuque-ai-mcp</h1>
3
3
  <p align="center">
4
- <b>61 个细粒度 MCP 工具,覆盖语雀 OpenAPI 全部能力</b>
4
+ <b>62 个细粒度 MCP 工具,覆盖语雀 OpenAPI 全部能力</b>
5
5
  </p>
6
6
  </p>
7
7
 
8
8
  <p align="center">
9
- <a href="https://github.com/yehuoshun/yuque-ai-mcp"><img src="https://img.shields.io/badge/版本-2.7.4-blue" alt="version" /></a>
9
+ <a href="https://github.com/yehuoshun/yuque-ai-mcp"><img src="https://img.shields.io/badge/版本-2.7.8-blue" alt="version" /></a>
10
10
  <a href="LICENSE"><img src="https://img.shields.io/badge/许可-MIT-green" alt="license" /></a>
11
- <a href="https://github.com/yehuoshun/yuque-ai-skills"><img src="https://img.shields.io/badge/skills-61%20指导-orange" alt="skills" /></a>
11
+ <a href="https://github.com/yehuoshun/yuque-ai-skills"><img src="https://img.shields.io/badge/skills-62%20指导-orange" alt="skills" /></a>
12
12
  </p>
13
13
 
14
14
  <p align="center">
@@ -17,15 +17,15 @@
17
17
 
18
18
  ---
19
19
 
20
- 基于 [Model Context Protocol](https://modelcontextprotocol.io/) 的语雀全功能 MCP Server。61 个工具,15 个域——每个语雀 OpenAPI 端点一个专用工具。
20
+ 基于 [Model Context Protocol](https://modelcontextprotocol.io/) 的语雀全功能 MCP Server。62 个工具,15 个域——每个语雀 OpenAPI 端点一个专用工具。
21
21
 
22
22
  ## 为什么选这个
23
23
 
24
- - **19 → 61 工具** — 比官方 [yuque-mcp-server](https://github.com/yuque/yuque-mcp-server) 多 3 倍覆盖
24
+ - **19 → 62 工具** — 比官方 [yuque-mcp-server](https://github.com/yuque/yuque-mcp-server) 多 3 倍覆盖
25
25
  - **双传输模式** — stdio + HTTP SSE,共享注册中心,修改无需重启
26
26
  - **模块化架构** — 15 个域,barrel export,唯一注册中心
27
27
  - **完整 API 覆盖** — 团队、回收站、上传、统计、版本、画板——补全官方缺失
28
- - **[Skill 层](https://github.com/yehuoshun/yuque-ai-skills)** — 61 个 AI Agent 使用指导
28
+ - **[Skill 层](https://github.com/yehuoshun/yuque-ai-skills)** — 62 个 AI Agent 使用指导
29
29
 
30
30
  ## 目录
31
31
 
@@ -60,7 +60,7 @@ npm run dev:http # HTTP SSE 模式 (http://localhost:3099)
60
60
 
61
61
  | 域 | 工具数 | 亮点 |
62
62
  |--------|-------|------------|
63
- | **doc** | 14 | CRUD、版本管理、Diff、批量获取、URL/文件导入、跨库复制、导出 |
63
+ | **doc** | 15 | CRUD、版本管理、Diff、批量获取、URL/文件导入、跨库复制、导出、资源下载 |
64
64
  | **repo** | 8 | CRUD、批量获取、跨库复制、全量导出(TOC 结构 + INDEX/GRAPH) |
65
65
  | **toc** | 3 | 获取、更新、批量更新(createTitle/appendNode/removeNode/moveNode) |
66
66
  | **search** | 2 | 通用搜索 + RAG 增强搜索 |
@@ -75,7 +75,7 @@ npm run dev:http # HTTP SSE 模式 (http://localhost:3099)
75
75
  | **rss** | 3 | 数据源列表、抓取+去重+写入、定时策略分析 |
76
76
  | **crawler** | 4 | 抓取、CSS 提取、去重写入、定时策略分析 |
77
77
  | **kv** | 4 | 增删查列——增量分片,单文档 250KB 上限 |
78
- | **合计** | **61** | |
78
+ | **合计** | **62** | |
79
79
 
80
80
  完整工具文档见 [SKILL.md](SKILL.md) 或 [yuque-ai-skills](https://github.com/yehuoshun/yuque-ai-skills)。
81
81
 
@@ -83,13 +83,13 @@ npm run dev:http # HTTP SSE 模式 (http://localhost:3099)
83
83
 
84
84
  | 功能 | 官方 yuque-mcp-server | yuque-ai-mcp |
85
85
  |---------|--------------------------|--------------|
86
- | 工具数 | 19 | **61** |
86
+ | 工具数 | 19 | **62** |
87
87
  | 粒度 | 粗粒度 | **细粒度**(1 端点 = 1 工具) |
88
88
  | 团队、回收站、上传、统计 | ❌ | ✅ |
89
89
  | 版本、Diff、跨库复制 | ❌ | ✅ |
90
90
  | 传输模式 | 仅 stdio | **stdio + HTTP SSE** |
91
91
  | 配置 | 环境变量 | **config.json**(token + cookie) |
92
- | Skill 层 | ❌ | ✅ 61 指导 |
92
+ | Skill 层 | ❌ | ✅ 62 指导 |
93
93
 
94
94
  ## 架构
95
95
 
package/SKILL.md CHANGED
@@ -38,7 +38,7 @@
38
38
  | `yuque_update_group_user` | 变更团队成员角色 |
39
39
  | `yuque_delete_group_user` | 删除团队成员 |
40
40
 
41
- ### doc(14 工具)
41
+ ### doc(15 工具)
42
42
  | 工具 | 说明 |
43
43
  |------|------|
44
44
  | `yuque_list_docs` | 获取知识库文档列表 |
@@ -51,7 +51,8 @@
51
51
  | `yuque_get_doc_version_detail` | 获取文档历史版本详情 |
52
52
  | `yuque_diff_doc_versions` | 对比两个版本的行级差异 |
53
53
  | `yuque_copy_doc` | 单文档跨库复制 |
54
- | `yuque_export_doc` | 导出单篇文档为 Markdown(含图片下载) |
54
+ | `yuque_export_doc` | 导出单篇文档为 Markdown 文件(不含资源下载,需调 yuque_export_resources) |
55
+ | `yuque_export_resources` | 下载文档中的图片/附件到本地目录,返回 URL→本地路径映射 |
55
56
  | `yuque_import_url` | 从网页 URL 导入文档 |
56
57
  | `yuque_import_file` | 从本地文件导入文档(direct/upload_assets/embed_assets) |
57
58
  | `yuque_embed_url` | 生成文档嵌入阅读器 URL |
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { apiPost } from "../common/api-client.js";
7
7
  import { handleApiCall } from "../common/format.js";
8
- import { requiredString } from "../common/validate.js";
8
+ import { check, requiredString } from "../common/validate.js";
9
9
  export const boardCreate = {
10
10
  name: "yuque_create_board",
11
11
  description: "Create a board resource (mindmap/flowchart/architecture diagram) in a document. POST /yfm/boards. 详见 references/api/board_api.md",
@@ -22,7 +22,7 @@ export const boardCreate = {
22
22
  },
23
23
  async handler(args) {
24
24
  // @validate
25
- const __v = requiredString(args?.dsl, "dsl");
25
+ const __v = check(requiredString(args?.type, "type"), requiredString(args?.dsl, "dsl"));
26
26
  if (__v)
27
27
  return __v;
28
28
  const docId = args?.doc_id;
@@ -1 +1 @@
1
- {"version":3,"file":"create-board.js","sourceRoot":"","sources":["../../src/board/create-board.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,CAAC,MAAM,WAAW,GAAY;IAClC,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,kIAAkI;IAE/I,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;YACpF,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+CAA+C,EAAE;YACrF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gEAAgE,EAAE;YACvG,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2DAA2D,EAAE;YACjG,oBAAoB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sEAAsE,EAAE;SAC9H;QACD,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;KAC1B;IAED,KAAK,CAAC,OAAO,CAAC,IAAI;QAChB,YAAY;QACZ,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7C,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;QACpB,MAAM,KAAK,GAAG,IAAI,EAAE,MAA4B,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,EAAE,GAAyB,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,EAAE,IAAc,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,EAAE,GAAa,CAAC;QAChC,MAAM,WAAW,GAAG,IAAI,EAAE,oBAA0C,CAAC;QAErE,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;YACnB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,0CAA0C,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC1H,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAA4B,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAC/E,IAAI,KAAK;YAAE,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;QAClC,IAAI,GAAG;YAAE,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;QAC3B,IAAI,WAAW;YAAE,OAAO,CAAC,oBAAoB,GAAG,WAAW,CAAC;QAE5D,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,aAAa,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;QACnE,OAAO,aAAa,CAAC,IAAI,EAAE,SAAgB,CAAC,CAAC;IAC/C,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"create-board.js","sourceRoot":"","sources":["../../src/board/create-board.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,CAAC,MAAM,WAAW,GAAY;IAClC,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,kIAAkI;IAE/I,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;YACpF,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+CAA+C,EAAE;YACrF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gEAAgE,EAAE;YACvG,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2DAA2D,EAAE;YACjG,oBAAoB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sEAAsE,EAAE;SAC9H;QACD,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;KAC1B;IAED,KAAK,CAAC,OAAO,CAAC,IAAI;QAChB,YAAY;QACZ,MAAM,GAAG,GAAG,KAAK,CACf,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAClC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CACjC,CAAC;QACF,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;QACpB,MAAM,KAAK,GAAG,IAAI,EAAE,MAA4B,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,EAAE,GAAyB,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,EAAE,IAAc,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,EAAE,GAAa,CAAC;QAChC,MAAM,WAAW,GAAG,IAAI,EAAE,oBAA0C,CAAC;QAErE,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;YACnB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,0CAA0C,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC1H,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAA4B,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAC/E,IAAI,KAAK;YAAE,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;QAClC,IAAI,GAAG;YAAE,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;QAC3B,IAAI,WAAW;YAAE,OAAO,CAAC,oBAAoB,GAAG,WAAW,CAAC;QAE5D,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,aAAa,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;QACnE,OAAO,aAAa,CAAC,IAAI,EAAE,SAAgB,CAAC,CAAC;IAC/C,CAAC;CACF,CAAC"}
@@ -12,6 +12,8 @@ const cfg = loadConfig();
12
12
  const MAX_RETRIES = 3;
13
13
  /** 基延迟(ms) */
14
14
  const BASE_DELAY = 1000;
15
+ /** 单次请求超时(ms) */
16
+ const REQUEST_TIMEOUT = 30_000;
15
17
  /** 是否应该重试:网络异常、429、5xx */
16
18
  function shouldRetry(res) {
17
19
  if (!res)
@@ -24,8 +26,10 @@ function sleep(ms) {
24
26
  }
25
27
  /** 执行 fetch 并自动重试 */
26
28
  async function fetchWithRetry(url, options, context, attempt = 1) {
29
+ const controller = new AbortController();
30
+ const timer = setTimeout(() => controller.abort(), REQUEST_TIMEOUT);
27
31
  try {
28
- const res = await fetch(url, options);
32
+ const res = await fetch(url, { ...options, signal: controller.signal });
29
33
  if (shouldRetry(res) && attempt <= MAX_RETRIES) {
30
34
  const delay = BASE_DELAY * Math.pow(2, attempt - 1);
31
35
  // 重试日志仅在 DEBUG 环境变量设置时输出
@@ -46,6 +50,9 @@ async function fetchWithRetry(url, options, context, attempt = 1) {
46
50
  }
47
51
  throw err;
48
52
  }
53
+ finally {
54
+ clearTimeout(timer);
55
+ }
49
56
  }
50
57
  /** API 调用结果的类型 guard:检查是否是 MCP error */
51
58
  export function isErrorResult(result) {
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/common/api-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/common/api-client.ts"],"names":[],"mappings":"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"}
@@ -58,7 +58,7 @@ interface Config {
58
58
  export declare function loadConfig(): Config;
59
59
  /** 从 config 加载 RSS 源定义 */
60
60
  export declare function loadRssSources(): Record<string, RssSourceDef>;
61
- /** 持久化 config 到文件 */
61
+ /** 持久化 config 到文件(记住首次加载路径,避免写到不同文件) */
62
62
  export declare function saveConfig(): void;
63
63
  /** 解析 slug:`{book_id}/{doc_id}` → { bookId, docId } */
64
64
  export declare function parseSlug(slug: string): {
@@ -31,10 +31,12 @@ function findConfigPath() {
31
31
  return resolve(homedir(), ".yuque-mcp", "config.json");
32
32
  }
33
33
  let _config = null;
34
+ let _configPath = null;
34
35
  export function loadConfig() {
35
36
  if (_config)
36
37
  return _config;
37
38
  const configPath = findConfigPath();
39
+ _configPath = configPath;
38
40
  try {
39
41
  const raw = readFileSync(configPath, "utf-8");
40
42
  _config = JSON.parse(raw);
@@ -53,11 +55,11 @@ export function loadConfig() {
53
55
  export function loadRssSources() {
54
56
  return loadConfig().rss?.sources ?? {};
55
57
  }
56
- /** 持久化 config 到文件 */
58
+ /** 持久化 config 到文件(记住首次加载路径,避免写到不同文件) */
57
59
  export function saveConfig() {
58
60
  if (!_config)
59
61
  return;
60
- const configPath = findConfigPath();
62
+ const configPath = _configPath || findConfigPath();
61
63
  writeFileSync(configPath, JSON.stringify(_config, null, 2) + "\n", "utf-8");
62
64
  }
63
65
  /** 解析 slug:`{book_id}/{doc_id}` → { bookId, docId } */
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/common/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/common/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * common/diff — 纯函数 LCS diff 算法
3
+ *
4
+ * 不依赖外部库,零依赖。
5
+ * 被 diff-doc.ts 等工具共用。
6
+ */
7
+ export interface DiffLine {
8
+ type: "added" | "removed" | "unchanged";
9
+ line: string;
10
+ }
11
+ /** 对两段文本做逐行 LCS diff,返回 diff 行列表 */
12
+ export declare function diffLines(oldText: string, newText: string): DiffLine[];
@@ -0,0 +1,46 @@
1
+ /**
2
+ * common/diff — 纯函数 LCS diff 算法
3
+ *
4
+ * 不依赖外部库,零依赖。
5
+ * 被 diff-doc.ts 等工具共用。
6
+ */
7
+ /** 对两段文本做逐行 LCS diff,返回 diff 行列表 */
8
+ export function diffLines(oldText, newText) {
9
+ const oldLines = oldText.split("\n");
10
+ const newLines = newText.split("\n");
11
+ // LCS 表
12
+ const m = oldLines.length;
13
+ const n = newLines.length;
14
+ const dp = Array.from({ length: m + 1 }, () => new Array(n + 1).fill(0));
15
+ for (let i = 1; i <= m; i++) {
16
+ for (let j = 1; j <= n; j++) {
17
+ if (oldLines[i - 1] === newLines[j - 1]) {
18
+ dp[i][j] = dp[i - 1][j - 1] + 1;
19
+ }
20
+ else {
21
+ dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
22
+ }
23
+ }
24
+ }
25
+ // 回溯
26
+ const result = [];
27
+ let i = m, j = n;
28
+ const temp = [];
29
+ while (i > 0 || j > 0) {
30
+ if (i > 0 && j > 0 && oldLines[i - 1] === newLines[j - 1]) {
31
+ temp.push({ type: "unchanged", line: oldLines[i - 1] });
32
+ i--;
33
+ j--;
34
+ }
35
+ else if (j > 0 && (i === 0 || dp[i][j - 1] >= dp[i - 1][j])) {
36
+ temp.push({ type: "added", line: newLines[j - 1] });
37
+ j--;
38
+ }
39
+ else {
40
+ temp.push({ type: "removed", line: oldLines[i - 1] });
41
+ i--;
42
+ }
43
+ }
44
+ return temp.reverse();
45
+ }
46
+ //# sourceMappingURL=diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/common/diff.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,oCAAoC;AACpC,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,OAAe;IACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAErC,QAAQ;IACR,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC1B,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC1B,MAAM,EAAE,GAAe,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAErF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACxC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK;IACL,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACjB,MAAM,IAAI,GAAe,EAAE,CAAC;IAE5B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACxD,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACpD,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACtD,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;AACxB,CAAC"}
@@ -8,8 +8,8 @@ export interface ResourceRef {
8
8
  localPath: string;
9
9
  type: "image" | "attachment";
10
10
  }
11
- /** 从 body_html 中提取所有资源引用 */
12
- export declare function extractResources(bodyHtml: string, imagesDir: string, attachmentsDir: string): ResourceRef[];
11
+ /** 从 body_html 中提取所有资源引用。localPath 为相对于 outputDir 的路径(如 images/foo.png) */
12
+ export declare function extractResources(bodyHtml: string): ResourceRef[];
13
13
  export interface DownloadResult {
14
14
  url: string;
15
15
  localPath: string;
@@ -6,8 +6,8 @@
6
6
  import { writeFile } from "node:fs/promises";
7
7
  import { join } from "node:path";
8
8
  import { unescapeHtml } from "./text-utils.js";
9
- /** 从 body_html 中提取所有资源引用 */
10
- export function extractResources(bodyHtml, imagesDir, attachmentsDir) {
9
+ /** 从 body_html 中提取所有资源引用。localPath 为相对于 outputDir 的路径(如 images/foo.png) */
10
+ export function extractResources(bodyHtml) {
11
11
  const resources = [];
12
12
  const seen = new Set();
13
13
  // 提取 <img src="...">
@@ -19,7 +19,7 @@ export function extractResources(bodyHtml, imagesDir, attachmentsDir) {
19
19
  continue;
20
20
  seen.add(url);
21
21
  const name = urlToFilename(url);
22
- resources.push({ url, localPath: join(imagesDir, name), type: "image" });
22
+ resources.push({ url, localPath: join("images", name), type: "image" });
23
23
  }
24
24
  // 提取 Markdown 图片 ![](url)
25
25
  const mdImgRegex = /!\[.*?\]\(([^)]+)\)/g;
@@ -29,7 +29,7 @@ export function extractResources(bodyHtml, imagesDir, attachmentsDir) {
29
29
  continue;
30
30
  seen.add(url);
31
31
  const name = urlToFilename(url);
32
- resources.push({ url, localPath: join(imagesDir, name), type: "image" });
32
+ resources.push({ url, localPath: join("images", name), type: "image" });
33
33
  }
34
34
  return resources;
35
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"export-common.js","sourceRoot":"","sources":["../../src/common/export-common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"export-common.js","sourceRoot":"","sources":["../../src/common/export-common.ts"],"names":[],"mappings":"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"}
@@ -112,6 +112,51 @@ interface ApiResponse<T> {
112
112
  data?: T;
113
113
  meta?: unknown;
114
114
  }
115
+ export declare function formatHello(data: ApiResponse<{
116
+ message: string;
117
+ }> | {
118
+ message: string;
119
+ }): {
120
+ message: string;
121
+ };
122
+ interface YuqueSearchResultRaw {
123
+ id: number;
124
+ type?: string;
125
+ title: string;
126
+ summary?: string;
127
+ url?: string;
128
+ info?: string;
129
+ target?: {
130
+ id: number;
131
+ slug?: string;
132
+ title?: string;
133
+ book_id?: number;
134
+ word_count?: number;
135
+ updated_at?: string;
136
+ content_updated_at?: string;
137
+ book?: {
138
+ id?: number;
139
+ name?: string;
140
+ slug?: string;
141
+ namespace?: string;
142
+ };
143
+ };
144
+ }
145
+ export declare function formatSearchResult(data: YuqueSearchResultRaw): {
146
+ id: number;
147
+ title: string;
148
+ summary: string;
149
+ url: string;
150
+ info: string;
151
+ doc_id: number;
152
+ slug: string;
153
+ book_id: number | undefined;
154
+ book_name: string;
155
+ book_slug: string;
156
+ namespace: string;
157
+ word_count: number | undefined;
158
+ updated_at: string;
159
+ };
115
160
  export declare function formatUser(data: ApiResponse<YuqueUserRaw> | YuqueUserRaw): {
116
161
  id: number;
117
162
  login: string;
@@ -3,6 +3,28 @@
3
3
  *
4
4
  * 默认精简输出,传 raw=true 可获取全量原始 JSON
5
5
  */
6
+ // ── Hello ─────────────────────────────────────────────────────
7
+ export function formatHello(data) {
8
+ const d = data.data ?? data;
9
+ return { message: d.message };
10
+ }
11
+ export function formatSearchResult(data) {
12
+ return {
13
+ id: data.id,
14
+ title: data.title?.replace(/<em>|<\/em>/g, "") ?? "",
15
+ summary: data.summary?.replace(/<em>|<\/em>/g, "") ?? "",
16
+ url: data.url ?? "",
17
+ info: data.info ?? "",
18
+ doc_id: data.target?.id ?? data.id,
19
+ slug: data.target?.slug ?? "",
20
+ book_id: data.target?.book_id,
21
+ book_name: data.target?.book?.name ?? "",
22
+ book_slug: data.target?.book?.slug ?? "",
23
+ namespace: data.target?.book?.namespace ?? "",
24
+ word_count: data.target?.word_count,
25
+ updated_at: data.target?.content_updated_at ?? data.target?.updated_at ?? "",
26
+ };
27
+ }
6
28
  // ── User ──────────────────────────────────────────────────────
7
29
  export function formatUser(data) {
8
30
  const d = data.data ?? data;
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/common/format.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/common/format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * common/html-cleaner — HTML 内容提取与清洗
3
+ *
4
+ * 被 import-url.ts 等工具共用。
5
+ * 职责:从原始 HTML 中提取可读正文,转为 Markdown 或保留 HTML 格式。
6
+ */
7
+ /**
8
+ * 从原始 HTML 中提取并清洗正文内容。
9
+ *
10
+ * @param html 原始 HTML 字符串
11
+ * @param format 输出格式:markdown(转纯文本+链接)或 html(保留 HTML 结构)
12
+ * @returns 清洗后的内容字符串
13
+ */
14
+ export declare function extractAndCleanContent(html: string, format: "markdown" | "html"): string;
15
+ /**
16
+ * 按 format 追尾源链接:markdown 用 appendSourceLink,html 用 HTML 格式
17
+ */
18
+ export declare function appendSourceLinkByFormat(body: string, sourceUrl: string, sourceTitle: string, format: string): string;