dsh-plugin-dev-kb 1.8.0 → 1.8.1

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 (229) hide show
  1. package/CHANGELOG.md +186 -178
  2. package/README.en.md +172 -172
  3. package/README.md +183 -183
  4. package/kb/INDEX.md +236 -234
  5. package/kb/README.md +88 -88
  6. package/kb/extra/AGENTS.md +77 -77
  7. package/kb/extra/deepseek-llm-api-wire-extensions.md +162 -162
  8. package/kb/extra/deepseek-llm-api-wire-extensions.zh.md +162 -162
  9. package/kb/extra/defensive-patterns/package-surface.md +233 -232
  10. package/kb/extra/defensive-patterns/package-surface.zh.md +233 -232
  11. package/kb/extra/defensive-patterns/remote-and-api.md +117 -117
  12. package/kb/extra/defensive-patterns/remote-and-api.zh.md +117 -117
  13. package/kb/extra/development.md +221 -221
  14. package/kb/extra/development.zh.md +228 -228
  15. package/kb/extra/event-producer-consumer.md +133 -123
  16. package/kb/extra/event-producer-consumer.zh.md +135 -125
  17. package/kb/extra/module-graph.md +1961 -1888
  18. package/kb/extra/module-graph.zh.md +1963 -1890
  19. package/kb/extra/persistence-changes/2026-11-05-timeline-priority-notice.md +60 -0
  20. package/kb/extra/persistence-changes/2026-11-05-timeline-priority-notice.zh.md +60 -0
  21. package/kb/extra/persistence-changes/README.md +92 -92
  22. package/kb/extra/persistence-changes/README.zh.md +92 -92
  23. package/kb/extra/persistence-changes/historical-formats/README.md +75 -75
  24. package/kb/extra/persistence-changes/historical-formats/README.zh.md +75 -75
  25. package/kb/extra/persistence-changes/releases/README.md +103 -103
  26. package/kb/extra/persistence-changes/releases/README.zh.md +103 -103
  27. package/kb/extra/rescope.md +55 -55
  28. package/kb/extra/rescope.zh.md +55 -55
  29. package/kb/extra/subsystems/boot.md +631 -621
  30. package/kb/extra/subsystems/boot.zh.md +631 -621
  31. package/kb/extra/subsystems/computer-use.md +179 -137
  32. package/kb/extra/subsystems/computer-use.zh.md +179 -137
  33. package/kb/extra/subsystems/extensions.md +387 -384
  34. package/kb/extra/subsystems/extensions.zh.md +387 -384
  35. package/kb/extra/subsystems/feedback.md +418 -400
  36. package/kb/extra/subsystems/feedback.zh.md +418 -400
  37. package/kb/extra/subsystems/forge.md +2169 -1226
  38. package/kb/extra/subsystems/forge.zh.md +2171 -1226
  39. package/kb/extra/subsystems/liveshare.md +167 -158
  40. package/kb/extra/subsystems/liveshare.zh.md +167 -158
  41. package/kb/extra/subsystems/mcp.md +237 -234
  42. package/kb/extra/subsystems/mcp.zh.md +237 -234
  43. package/kb/extra/subsystems/office-kit.md +122 -0
  44. package/kb/extra/subsystems/office-kit.zh.md +122 -0
  45. package/kb/extra/subsystems/working-directory.md +95 -64
  46. package/kb/extra/subsystems/working-directory.zh.md +95 -64
  47. package/kb/extra/subsystems/worktrees.md +187 -127
  48. package/kb/extra/subsystems/worktrees.zh.md +187 -127
  49. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/python-ptc-sandbox/guide.md +21 -21
  50. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/python-ptc-sandbox/guide.zh.md +21 -21
  51. package/kb/extra/upgrade-guide/v0.2.1-rc.4/sandbox-unsupported-policy-error/guide.md +18 -0
  52. package/kb/extra/upgrade-guide/v0.2.1-rc.4/sandbox-unsupported-policy-error/guide.zh.md +18 -0
  53. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/llm-error-builtin-codes/guide.md +18 -0
  54. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/llm-error-builtin-codes/guide.zh.md +18 -0
  55. package/kb/extra/upgrade-guide/v0.2.2-alpha.3/office-kit-package/guide.md +34 -0
  56. package/kb/extra/upgrade-guide/v0.2.2-alpha.3/office-kit-package/guide.zh.md +34 -0
  57. package/kb/extra/upgrade-guide/v0.2.2-alpha.3/office-operation-tools/guide.md +49 -0
  58. package/kb/extra/upgrade-guide/v0.2.2-alpha.3/office-operation-tools/guide.zh.md +49 -0
  59. package/kb/extra/upgrade-guide/v0.2.2-alpha.3/office-skill-resources/guide.md +36 -0
  60. package/kb/extra/upgrade-guide/v0.2.2-alpha.3/office-skill-resources/guide.zh.md +36 -0
  61. package/kb/extra/upgrade-guide/v0.2.2-rc.1/account-notification-fields/guide.md +26 -0
  62. package/kb/extra/upgrade-guide/v0.2.2-rc.1/account-notification-fields/guide.zh.md +26 -0
  63. package/kb/extra/upgrade-guide/v0.2.2-rc.1/account-remote-provider/guide.md +22 -0
  64. package/kb/extra/upgrade-guide/v0.2.2-rc.1/account-remote-provider/guide.zh.md +22 -0
  65. package/kb/extra/upgrade-guide/v0.2.2-rc.1/archive-worktrees/guide.md +21 -0
  66. package/kb/extra/upgrade-guide/v0.2.2-rc.1/archive-worktrees/guide.zh.md +21 -0
  67. package/kb/extra/upgrade-guide/v0.2.2-rc.1/attachment-error-codes/guide.md +23 -0
  68. package/kb/extra/upgrade-guide/v0.2.2-rc.1/attachment-error-codes/guide.zh.md +23 -0
  69. package/kb/extra/upgrade-guide/v0.2.2-rc.1/cua-ax-read-limits/guide.md +20 -0
  70. package/kb/extra/upgrade-guide/v0.2.2-rc.1/cua-ax-read-limits/guide.zh.md +20 -0
  71. package/kb/extra/upgrade-guide/v0.2.2-rc.1/cua-hover-ax-only/guide.md +18 -0
  72. package/kb/extra/upgrade-guide/v0.2.2-rc.1/cua-hover-ax-only/guide.zh.md +18 -0
  73. package/kb/extra/upgrade-guide/v0.2.2-rc.1/cua-native-platform/guide.md +23 -0
  74. package/kb/extra/upgrade-guide/v0.2.2-rc.1/cua-native-platform/guide.zh.md +23 -0
  75. package/kb/extra/upgrade-guide/v0.2.2-rc.1/dsh-doc-skill/guide.md +35 -0
  76. package/kb/extra/upgrade-guide/v0.2.2-rc.1/dsh-doc-skill/guide.zh.md +35 -0
  77. package/kb/extra/upgrade-guide/v0.2.2-rc.1/forge-change-request-overview/guide.md +26 -0
  78. package/kb/extra/upgrade-guide/v0.2.2-rc.1/forge-change-request-overview/guide.zh.md +26 -0
  79. package/kb/extra/upgrade-guide/v0.2.2-rc.1/forge-pinned-diff/guide.md +26 -0
  80. package/kb/extra/upgrade-guide/v0.2.2-rc.1/forge-pinned-diff/guide.zh.md +26 -0
  81. package/kb/extra/upgrade-guide/v0.2.2-rc.1/forge-review-reads/guide.md +19 -0
  82. package/kb/extra/upgrade-guide/v0.2.2-rc.1/forge-review-reads/guide.zh.md +19 -0
  83. package/kb/extra/upgrade-guide/v0.2.2-rc.1/package-export-cleanup/guide.md +26 -0
  84. package/kb/extra/upgrade-guide/v0.2.2-rc.1/package-export-cleanup/guide.zh.md +26 -0
  85. package/kb/extra/upgrade-guide/v0.2.2-rc.1/plugin-update-method/guide.md +22 -0
  86. package/kb/extra/upgrade-guide/v0.2.2-rc.1/plugin-update-method/guide.zh.md +22 -0
  87. package/kb/extra/upgrade-guide/v0.2.2-rc.1/ptc-bootstrap-protocol/guide.md +25 -0
  88. package/kb/extra/upgrade-guide/v0.2.2-rc.1/ptc-bootstrap-protocol/guide.zh.md +25 -0
  89. package/kb/extra/upgrade-guide/v0.2.2-rc.1/ptc-inspect-output/guide.md +48 -0
  90. package/kb/extra/upgrade-guide/v0.2.2-rc.1/ptc-inspect-output/guide.zh.md +48 -0
  91. package/kb/extra/upgrade-guide/v0.2.2-rc.1/ptc-scoped-repl-default/guide.md +45 -0
  92. package/kb/extra/upgrade-guide/v0.2.2-rc.1/ptc-scoped-repl-default/guide.zh.md +45 -0
  93. package/kb/extra/upgrade-guide/v0.2.2-rc.1/runtime-context-reminders/guide.md +19 -0
  94. package/kb/extra/upgrade-guide/v0.2.2-rc.1/runtime-context-reminders/guide.zh.md +19 -0
  95. package/kb/extra/upgrade-guide/v0.2.2-rc.1/session-append-overloads/guide.md +17 -0
  96. package/kb/extra/upgrade-guide/v0.2.2-rc.1/session-append-overloads/guide.zh.md +17 -0
  97. package/kb/extra/upgrade-guide/v0.2.2-rc.1/subagent-interrupt-default/guide.md +27 -0
  98. package/kb/extra/upgrade-guide/v0.2.2-rc.1/subagent-interrupt-default/guide.zh.md +27 -0
  99. package/kb/extra/upgrade-guide/v0.2.2-rc.1/terminal-backend-cleanup-error/guide.md +20 -0
  100. package/kb/extra/upgrade-guide/v0.2.2-rc.1/terminal-backend-cleanup-error/guide.zh.md +20 -0
  101. package/kb/extra/upgrade-guide/v0.2.2-rc.1/terminal-bundle-sidebar-backend/guide.md +19 -0
  102. package/kb/extra/upgrade-guide/v0.2.2-rc.1/terminal-bundle-sidebar-backend/guide.zh.md +19 -0
  103. package/kb/extra/upgrade-guide/v0.2.2-rc.1/web-fetch-transport-error-codes/guide.md +18 -0
  104. package/kb/extra/upgrade-guide/v0.2.2-rc.1/web-fetch-transport-error-codes/guide.zh.md +18 -0
  105. package/kb/extra/upgrade-guide/v0.2.2-rc.1/web-search-billing/guide.md +41 -0
  106. package/kb/extra/upgrade-guide/v0.2.2-rc.1/web-search-billing/guide.zh.md +41 -0
  107. package/kb/extra/upgrade-guide/v0.2.2-rc.1/window-drag-regions/guide.md +21 -0
  108. package/kb/extra/upgrade-guide/v0.2.2-rc.1/window-drag-regions/guide.zh.md +21 -0
  109. package/kb/extra/upgrade-guide/v0.2.2-rc.2/client-module-metadata/guide.md +29 -0
  110. package/kb/extra/upgrade-guide/v0.2.2-rc.2/client-module-metadata/guide.zh.md +29 -0
  111. package/kb/extra/upgrade-guide/v0.2.2-rc.2/connection-page-peer/guide.md +25 -0
  112. package/kb/extra/upgrade-guide/v0.2.2-rc.2/connection-page-peer/guide.zh.md +25 -0
  113. package/kb/extra/upgrade-guide/v0.2.2-rc.2/cordis-root-and-intercept-metadata/guide.md +31 -0
  114. package/kb/extra/upgrade-guide/v0.2.2-rc.2/cordis-root-and-intercept-metadata/guide.zh.md +31 -0
  115. package/kb/extra/upgrade-guide/v0.2.2-rc.2/cua-agents-without-preset/guide.md +24 -0
  116. package/kb/extra/upgrade-guide/v0.2.2-rc.2/cua-agents-without-preset/guide.zh.md +24 -0
  117. package/kb/extra/upgrade-guide/v0.2.2-rc.2/cua-macos-provider/guide.md +24 -0
  118. package/kb/extra/upgrade-guide/v0.2.2-rc.2/cua-macos-provider/guide.zh.md +24 -0
  119. package/kb/extra/upgrade-guide/v0.2.2-rc.2/cua-partial-observations/guide.md +19 -0
  120. package/kb/extra/upgrade-guide/v0.2.2-rc.2/cua-partial-observations/guide.zh.md +19 -0
  121. package/kb/extra/upgrade-guide/v0.2.2-rc.2/deepseek-files-timeout/guide.md +15 -0
  122. package/kb/extra/upgrade-guide/v0.2.2-rc.2/deepseek-files-timeout/guide.zh.md +15 -0
  123. package/kb/extra/upgrade-guide/v0.2.2-rc.2/experimental-tool-error-codes/guide.md +28 -0
  124. package/kb/extra/upgrade-guide/v0.2.2-rc.2/experimental-tool-error-codes/guide.zh.md +28 -0
  125. package/kb/extra/upgrade-guide/v0.2.2-rc.2/package-export-cleanup/guide.md +36 -0
  126. package/kb/extra/upgrade-guide/v0.2.2-rc.2/package-export-cleanup/guide.zh.md +36 -0
  127. package/kb/extra/upgrade-guide/v0.2.2-rc.2/python-ptc-removal/guide.md +22 -0
  128. package/kb/extra/upgrade-guide/v0.2.2-rc.2/python-ptc-removal/guide.zh.md +22 -0
  129. package/kb/extra/upgrade-guide/v0.2.2-rc.2/session-status-package/guide.md +31 -0
  130. package/kb/extra/upgrade-guide/v0.2.2-rc.2/session-status-package/guide.zh.md +31 -0
  131. package/kb/extra/upgrade-guide/v0.2.2-rc.2/shared-search-filter/guide.md +18 -0
  132. package/kb/extra/upgrade-guide/v0.2.2-rc.2/shared-search-filter/guide.zh.md +18 -0
  133. package/kb/extra/upgrade-guide/v0.2.2-rc.2/shell-fs-tool-error-codes/guide.md +30 -0
  134. package/kb/extra/upgrade-guide/v0.2.2-rc.2/shell-fs-tool-error-codes/guide.zh.md +30 -0
  135. package/kb/extra/web-styling.md +57 -57
  136. package/kb/extra/web-styling.zh.md +57 -57
  137. package/kb/meta/search-index.json +4508 -3980
  138. package/kb/meta/source.json +18 -18
  139. package/kb/site/develop/practice/llm-adapter.md +192 -192
  140. package/kb/site/en/develop/practice/llm-adapter.md +192 -192
  141. package/kb/site/en/guide/desktop-uninstall-cleanup.md +63 -0
  142. package/kb/site/en/guide/plugin-market.md +153 -151
  143. package/kb/site/en/guide/providers.md +234 -234
  144. package/kb/site/en/guide/quickstart.md +35 -34
  145. package/kb/site/en/reference/capability-seams.md +789 -767
  146. package/kb/site/en/reference/config-catalog.md +5432 -5128
  147. package/kb/site/en/reference/cookbook/adding-a-package.md +175 -175
  148. package/kb/site/en/reference/cookbook/adding-a-tool.md +105 -104
  149. package/kb/site/en/reference/cookbook/extension-cookbook.md +178 -135
  150. package/kb/site/en/reference/cordis-api/context.md +373 -369
  151. package/kb/site/en/reference/cordis-api/fiber.md +457 -433
  152. package/kb/site/en/reference/cordis-api/inherited.md +44 -44
  153. package/kb/site/en/reference/cordis-api/service.md +118 -107
  154. package/kb/site/en/reference/experimental-persistence-catalog.md +36 -23
  155. package/kb/site/en/reference/index.md +174 -174
  156. package/kb/site/en/reference/persistence-catalog.md +9453 -9432
  157. package/kb/site/en/reference/subsystems/compaction.md +288 -288
  158. package/kb/site/en/reference/subsystems/core.md +1172 -1171
  159. package/kb/site/en/reference/subsystems/credentials.md +526 -497
  160. package/kb/site/en/reference/subsystems/filesystem.md +708 -708
  161. package/kb/site/en/reference/subsystems/index.md +82 -82
  162. package/kb/site/en/reference/subsystems/llm-streaming.md +1290 -1288
  163. package/kb/site/en/reference/subsystems/lsp.md +230 -206
  164. package/kb/site/en/reference/subsystems/persistence.md +451 -432
  165. package/kb/site/en/reference/subsystems/plan.md +91 -91
  166. package/kb/site/en/reference/subsystems/ptc-runtime.md +295 -261
  167. package/kb/site/en/reference/subsystems/sandbox.md +250 -232
  168. package/kb/site/en/reference/subsystems/session-query.md +525 -515
  169. package/kb/site/en/reference/subsystems/session-reference.md +231 -229
  170. package/kb/site/en/reference/subsystems/session.md +1478 -1431
  171. package/kb/site/en/reference/subsystems/sidebar-right.md +165 -165
  172. package/kb/site/en/reference/subsystems/skills.md +356 -356
  173. package/kb/site/en/reference/subsystems/slots.md +235 -231
  174. package/kb/site/en/reference/subsystems/terminal.md +188 -188
  175. package/kb/site/en/reference/subsystems/tools.md +902 -891
  176. package/kb/site/en/reference/subsystems/user-questions.md +330 -327
  177. package/kb/site/en/reference/subsystems/web-client.md +161 -104
  178. package/kb/site/en/reference/subsystems/web-server.md +434 -351
  179. package/kb/site/en/reference/subsystems/web.md +268 -268
  180. package/kb/site/en/reference/subsystems/workflow.md +287 -282
  181. package/kb/site/en/reference/subsystems/workspace.md +743 -651
  182. package/kb/site/en/reference/tool-catalog.md +2867 -2704
  183. package/kb/site/guide/desktop-uninstall-cleanup.md +63 -0
  184. package/kb/site/guide/plugin-market.md +153 -151
  185. package/kb/site/guide/providers.md +234 -234
  186. package/kb/site/guide/quickstart.md +35 -34
  187. package/kb/site/reference/capability-seams.md +789 -767
  188. package/kb/site/reference/config-catalog.md +5432 -5128
  189. package/kb/site/reference/cookbook/adding-a-package.md +175 -175
  190. package/kb/site/reference/cookbook/adding-a-tool.md +107 -106
  191. package/kb/site/reference/cookbook/extension-cookbook.md +182 -139
  192. package/kb/site/reference/cordis-api/context.md +373 -369
  193. package/kb/site/reference/cordis-api/fiber.md +459 -435
  194. package/kb/site/reference/cordis-api/inherited.md +44 -44
  195. package/kb/site/reference/cordis-api/service.md +118 -107
  196. package/kb/site/reference/experimental-persistence-catalog.md +36 -23
  197. package/kb/site/reference/index.md +178 -178
  198. package/kb/site/reference/persistence-catalog.md +9453 -9432
  199. package/kb/site/reference/subsystems/compaction.md +288 -288
  200. package/kb/site/reference/subsystems/core.md +1184 -1183
  201. package/kb/site/reference/subsystems/credentials.md +526 -497
  202. package/kb/site/reference/subsystems/filesystem.md +708 -708
  203. package/kb/site/reference/subsystems/index.md +82 -82
  204. package/kb/site/reference/subsystems/llm-streaming.md +1296 -1294
  205. package/kb/site/reference/subsystems/lsp.md +230 -206
  206. package/kb/site/reference/subsystems/persistence.md +451 -432
  207. package/kb/site/reference/subsystems/plan.md +91 -91
  208. package/kb/site/reference/subsystems/ptc-runtime.md +295 -261
  209. package/kb/site/reference/subsystems/sandbox.md +250 -232
  210. package/kb/site/reference/subsystems/session-query.md +525 -515
  211. package/kb/site/reference/subsystems/session-reference.md +231 -229
  212. package/kb/site/reference/subsystems/session.md +1482 -1435
  213. package/kb/site/reference/subsystems/sidebar-right.md +165 -165
  214. package/kb/site/reference/subsystems/skills.md +356 -356
  215. package/kb/site/reference/subsystems/slots.md +239 -235
  216. package/kb/site/reference/subsystems/terminal.md +188 -188
  217. package/kb/site/reference/subsystems/tools.md +902 -891
  218. package/kb/site/reference/subsystems/user-questions.md +330 -327
  219. package/kb/site/reference/subsystems/web-client.md +161 -104
  220. package/kb/site/reference/subsystems/web-server.md +434 -351
  221. package/kb/site/reference/subsystems/web.md +268 -268
  222. package/kb/site/reference/subsystems/workflow.md +287 -282
  223. package/kb/site/reference/subsystems/workspace.md +743 -651
  224. package/kb/site/reference/tool-catalog.md +2872 -2709
  225. package/lib/index.js +359 -359
  226. package/package.json +68 -68
  227. package/skills/dsh-plugin-dev-kb.md +71 -70
  228. package/kb/extra/subsystems/office-to-pdf.md +0 -87
  229. package/kb/extra/subsystems/office-to-pdf.zh.md +0 -87
@@ -1,234 +1,237 @@
1
- # MCP
2
-
3
- [English](mcp.md) | 中文
4
-
5
- ## 摘要
6
-
7
- 模型上下文协议(Model Context Protocol,MCP)让模型使用外部服务器提供的工具。每个已配置服务器都会提供普通 Harness 工具,支持取消、权限检查、结果记录和受支持的图像输出。调用方作用域中配置了服务器时,共享工具负责发现和读取资源,服务器指令则加入已记录的系统提示词。官方 SDK 协商现代或受支持的旧版协议。本参考页介绍 MCP 包组的职责、作用域和组合选择;服务器配置由[客户端 README](../../packages/mcp/mcp-client/README.zh.md) 维护。
8
-
9
- ## 目录
10
-
11
- - [配置](#configuration)
12
- - [职责与作用域](#responsibilities-and-scope)
13
- - [协议与结果](#protocol-and-results)
14
- - [资源与指令](#resources-and-instructions)
15
- - [资源提供方类型](#resource-provider-types)
16
- - [限制](#limits)
17
- - [延伸阅读](#further-reading)
18
-
19
- -----
20
-
21
- <a id="configuration"></a>
22
- ## 配置
23
-
24
- MCP 服务器需要主动配置。在目标 Cordis 作用域中,为每台服务器配置一个 `@deepseek-ai/dsh-mcp-client` 条目。每个随附 profile 都提供[工具注册表](tools.zh.md),并统一挂载共享资源服务一次;用户只需配置客户端条目。调用方没有可见的已配置服务器时,在 native 或 PTC 模式下都不会获得 MCP 提示词文本或工具。
25
-
26
- Web 与 Desktop profile 还统一挂载一次 [MCP 服务器管理器](../../packages/mcp/mcp-manager/README.zh.md)。它运行通过 Settings 配置的服务器,以及已安装插件在自身生命周期内注册的服务器,并向 Remote 客户端提供它们的状态、重启与探测操作。
27
-
28
- | 选择 | 配置维护位置 |
29
- |---|---|
30
- | 服务器身份、本地进程或 HTTP 端点、凭据和进程环境 | [客户端配置](../../packages/mcp/mcp-client/README.zh.md#use-this-package) |
31
- | 工具与资源请求超时、启动失败策略和重连 | [客户端配置](../../packages/mcp/mcp-client/README.zh.md#use-this-package) |
32
- | 资源发现与读取 | 随附 profile 已包含 [MCP 资源服务](../../packages/mcp/mcp-resources/README.zh.md#use-this-package);该服务没有配置字段 |
33
- | 服务器指令大小限制 | 客户端 `maxInstructionBytes`;组合提供[系统提示词装配](system-prompt.zh.md) |
34
- | 权限决策和受支持的图像输出 | [工具执行](tools.zh.md)和[附件](attachment.zh.md) |
35
-
36
- 协议协商遵循 SDK 支持的修订版;产品没有强制指定协议修订版的设置。[配置目录](../config-catalog.zh.md#deepseek-aidsh-mcp-client) 列出客户端接受的字段和默认值。
37
-
38
- -----
39
-
40
- <a id="responsibilities-and-scope"></a>
41
- ## 职责与作用域
42
-
43
- 客户端是每服务器一个的连接插件,也是 Harness 工具注册表的消费者。它不发布共享的 `ctx.mcp` 服务;管理器为其挂载的宿主全局服务器发布 `ctx.mcpManager`。外部服务器实现 MCP 操作;SDK 拥有协议交换;客户端将发现的工具适配到 Harness 执行过程。
44
-
45
- `mcp-resources` 拥有共享资源工具,并在调用方作用域中选择提供方。每个 MCP 客户端通过自己的连接提供资源操作。作用域中的首个提供方启用本地共享工具,移除最后一个提供方时移除这些工具;继承的提供方仍然可见。服务独立于任何单一客户端拥有这些工具注册。只要可见的客户端条目保持激活,连接失败就不会移除共享资源工具。
46
-
47
- 配置的 `serverName` 在注册作用域内标识服务器。同一作用域中的两个条目不能占用相同名称;不同 Agent 作用域可以复用该名称。公开工具名包含配置的服务器名称,因此不同服务器的同名工具仍可区分。注册副作用拥有名称和已发现工具;插件释放时关闭连接并移除其贡献。
48
-
49
- [原生 Cua Driver 提供方](../../packages/experimental/computer-use-cua-driver-native/README.zh.md) 复用客户端导出的结果适配器,无需打开 MCP 连接。桌面提供方选择属于[计算机使用子系统](computer-use.zh.md)。
50
-
51
- -----
52
-
53
- <a id="protocol-and-results"></a>
54
- ## 协议与结果
55
-
56
- stdio 和 Streamable HTTP 都使用官方 SDK 的协商、发现、协议校验和取消机制。工具列表变化通过旧版通知或现代订阅触发发现。刷新失败时保留上一代工具;连接恢复遵循[客户端生命周期](../../packages/mcp/mcp-client/README.zh.md#use-this-package)。
57
-
58
- 结果适配器为程序化调用方保留规范 MCP JSON,并准备普通工具内容。受支持的图像使用附件系统;不受支持的富内容产生明确的文本诊断。工具注册表仍决定策略失败和结果替换。[工具契约](tools.zh.md) 维护记录和最终呈现规则;[客户端结果参考](../../packages/mcp/mcp-client/README.zh.md#use-this-package) 维护 MCP 特有的投影细节。
59
-
60
- -----
61
-
62
- <a id="resources-and-instructions"></a>
63
- ## 资源与指令
64
-
65
- 资源调用必须显式指定配置的服务器名称。系统提示词组装服务可用时,资源服务从派发所用的同一注册表列出调用方可见的名称,包括没有工具或指令的服务器。共享注册表在分发前,于调用 Agent 的作用域中解析该名称;不可用的服务器会在发出网络请求前失败。发现和读取均按需执行,也支持只提供资源而不提供工具的服务器。[资源包](../../packages/mcp/mcp-resources/README.zh.md) 维护分页和内容渲染规则;其生成的工具 schema 位于[工具目录](../tool-catalog.zh.md#deepseek-aidsh-mcp-resources)。
66
-
67
- 资源提供方仍由连接拥有。作用域释放时移除注册;MCP 客户端控制取消和恢复。规范结果为程序化调用方保留完整 JSON,文本投影则以描述替换二进制 blob。返回的文本进入普通工具历史;服务器连接本身不会触发内容读取。
68
-
69
- 组合包含系统提示词装配时,客户端将非空白的服务器指令发布为带服务器归属的作用域章节。指令保持字面文本,并在发布前通过配置的大小限制。替换连接仅在发现成功后发布指令;缺少指令时不添加章节。[系统提示词子系统](system-prompt.zh.md) 维护装配与记录规则。
70
-
71
- -----
72
-
73
- <a id="resource-provider-types"></a>
74
- ## 资源提供方类型
75
-
76
- 连接提供方接收一个操作与原始工具执行对象,其中包含调用方和取消信号。
77
-
78
- ```ts type-equiv
79
- /** One supported resource operation, with server-owned cursors and URIs. */
80
- type McpResourceRequest =
81
- | { method: 'resources/list' | 'resources/templates/list'; cursor?: string }
82
- | { method: 'resources/read'; uri: string }
83
- ```
84
-
85
- ```ts type-equiv
86
- /** One configured server's resource access, owned by its MCP connection plugin. */
87
- interface McpResourceProvider {
88
- /**
89
- * Run an operation against one live connection generation.
90
- * @param request - MCP resource method and parameters.
91
- * @param exec - caller identity and cancellation for this invocation.
92
- * @returns the protocol result as lossless JSON.
93
- */
94
- request(request: McpResourceRequest, exec: ToolExecution): Promise<JsonValue>
95
- }
96
- ```
97
-
98
- -----
99
-
100
- <a id="limits"></a>
101
- ## 限制
102
-
103
- 不支持 MCP 提示词模板、人工输入征询、基于任务的执行和资源订阅。资源工具需要调用方可见的已配置服务器;二进制资源保留为程序化数据,模型接收其文本描述。没有工具能力的服务器以空工具集连接。连接和发现超时遵循 SDK;客户端没有对应的独立设置。
104
-
105
- -----
106
-
107
- <a id="further-reading"></a>
108
- ## 延伸阅读
109
-
110
- - [MCP 包组](../../packages/mcp/README.zh.md) — 包入口。
111
- - [MCP 资源](../../packages/mcp/mcp-resources/README.zh.md) — 共享工具与资源提供方语义。
112
- - [MCP 管理器](../../packages/mcp/mcp-manager/README.zh.md) — 通过 Settings 配置与插件注册的服务器、状态及 Remote 操作。
113
- - [资源可见性参考](../../packages/mcp/mcp-resources/README.zh.md) — profile 统一挂载及由已配置服务器决定的可见性。
114
- - [第三方记忆服务器](../user/guide/mcp-memory.zh.md) — 产品配置指南。
115
- - [协议协商参考](../../packages/mcp/mcp-client/README.zh.md) — SDK 职责与兼容性决策。
116
-
117
- <!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
118
-
119
- <a id="cordis-surface"></a>
120
-
121
- ## Cordis API
122
-
123
- Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) — the language sides differ only in locale-specific paired document paths. Signature blocks use a `ts cordis-catalog` fence and keep the original source JSDoc; dispatch modes are defined in the [primer](../cordis-primer.zh.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
124
-
125
- <a id="ctxmcpmanager--mcpservermanager"></a>
126
-
127
- ### `ctx.mcpManager` — `McpServerManager`
128
-
129
- The manager service. Reconciliation and `restart` serialize instance replacement. Probes run independently and are cancelled before replacement or disposal waits for their cleanup.
130
-
131
- ```ts cordis-catalog
132
- /**
133
- * Read configured and registered servers and retained runtime records without mounting or probing.
134
- * @returns configured entries in document order, then registered entries, then retained records for removed entries.
135
- */
136
- list(): McpManagedServerView[]
137
-
138
- /**
139
- * Contribute one server for the calling plugin's lifetime. A registered
140
- * entry is enabled while registered; its removal awaits the instance's
141
- * unmount, so plugin disposal withdraws the server's tools before settling.
142
- * @param name - server key and tool namespace, unique across configured and registered servers.
143
- * @param entry - transport, endpoint, and budgets, validated like a configured entry.
144
- * @returns an idempotent disposer that removes the registration.
145
- * @throws when the name is taken, the entry is invalid, or the manager is disposed.
146
- */
147
- register(name: string, entry: McpServerRegistration): () => void
148
-
149
- /**
150
- * Stream server views for a management surface: the current list on
151
- * subscription, then the complete list again after each status or entry change.
152
- * @param signal - subscription lifetime; aborting ends only this stream.
153
- * @returns coalesced server lists until the subscriber or the manager stops.
154
- */
155
- @Remote({ mode: 'stream' }) async* watch(signal: AbortSignal): AsyncIterable<McpManagedServerView[]>
156
-
157
- /**
158
- * Rebuild one server from its current entry: dispose the live instance (if
159
- * any) and mount a fresh one with a fresh reconnect budget. Incomplete
160
- * cleanup blocks replacement until the Host restarts.
161
- * @param name - the configured or registered server key.
162
- * @throws when the manager is disposed, no such entry exists, or cleanup is incomplete.
163
- */
164
- @Remote async restart(name: string): Promise<void>
165
-
166
- /**
167
- * Probe one server for a management surface; see {@link McpServerManager.probe}.
168
- * @param name - the configured or registered server key.
169
- * @param signal - caller cancellation.
170
- * @returns the stage-classified probe outcome and independent cleanup result.
171
- */
172
- @Remote('probe') probeFromClient(name: string, signal: AbortSignal): Promise<McpProbeResult>
173
-
174
- /**
175
- * Probe one configured server without touching its live instance: resolve
176
- * the entry's templates, connect, list tools, close. A disabled entry can be
177
- * probed — that is how a management surface tests it before enabling.
178
- * Configuration changes and manager disposal cancel the probe.
179
- * @param name - the configured or registered server key.
180
- * @param options - probe budget, listing caps, and abort signal.
181
- * @returns the stage-classified probe outcome and independent cleanup result.
182
- * @throws when the manager is disposed, the entry is absent or changing, cleanup is
183
- * incomplete, options are invalid, or a required credentials provider is missing.
184
- */
185
- async probe(name: string, options?: McpProbeOptions): Promise<McpProbeResult>
186
- ```
187
-
188
- Source: [`packages/mcp/mcp-manager/src/index.ts`](../../packages/mcp/mcp-manager/src/index.ts)
189
-
190
- <a id="ctxmcpresources--mcpresourceruntime"></a>
191
-
192
- ### `ctx.mcpResources` — `McpResourceRuntime`
193
-
194
- Scoped resource access plus three tools shared by configured MCP servers.
195
-
196
- ```ts cordis-catalog
197
- /**
198
- * Register one server and expose resource tools while that scope has providers.
199
- * @param server - configured server name, unique in this scope.
200
- * @param provider - connection-owned resource operations.
201
- * @returns the effect disposer for this exact registration.
202
- */
203
- register(server: string, provider: McpResourceProvider): () => void
204
- ```
205
-
206
- Source: [`packages/mcp/mcp-resources/src/index.ts`](../../packages/mcp/mcp-resources/src/index.ts)
207
-
208
- <a id="mcp-manager-events"></a>
209
-
210
- ### `mcp-manager/*` events
211
-
212
- <a id="mcp-managerstatus--parallel"></a>
213
-
214
- #### `mcp-manager/status` — parallel
215
-
216
- One managed server's status transitioned. Emitted for every published change while the manager is live and either the entry is configured or registered, or a runtime record remains. Removed entries may emit cleanup failures; `watch` and `list()` report removals. Lifecycle operations do not wait for listeners. Synchronous throws and returned promise rejections are logged without skipping other listeners.
217
-
218
- ```ts cordis-catalog
219
- /**
220
- * One managed server's status transitioned. Emitted for every published
221
- * change while the manager is live and either the entry is configured or
222
- * registered, or a runtime record remains. Removed entries may emit cleanup
223
- * failures; `watch` and `list()` report removals.
224
- * Lifecycle operations do not wait for listeners. Synchronous throws and
225
- * returned promise rejections are logged without skipping other listeners.
226
- * @param name - the configured `servers` key or registered name.
227
- * @param status - the status now current for that server.
228
- * @mode parallel
229
- */
230
- 'mcp-manager/status'(name: string, status: McpManagedServerStatus): void | Promise<void>
231
- ```
232
-
233
- Source: [`packages/mcp/mcp-manager/src/types.ts`](../../packages/mcp/mcp-manager/src/types.ts)
234
- <!-- END GENERATED cordis-surface -->
1
+ # MCP
2
+
3
+ [English](mcp.md) | 中文
4
+
5
+ ## 摘要
6
+
7
+ 模型上下文协议(Model Context Protocol,MCP)让模型使用外部服务器提供的工具。每个已配置服务器都会提供普通 Harness 工具,支持取消、权限检查、结果记录和受支持的图像输出。调用方作用域中配置了服务器时,共享工具负责发现和读取资源,服务器指令则加入已记录的系统提示词。官方 SDK 协商现代或受支持的旧版协议。本参考页介绍 MCP 包组的职责、作用域和组合选择;服务器配置由[客户端 README](../../packages/mcp/mcp-client/README.zh.md) 维护。
8
+
9
+ ## 目录
10
+
11
+ - [配置](#configuration)
12
+ - [职责与作用域](#responsibilities-and-scope)
13
+ - [协议与结果](#protocol-and-results)
14
+ - [资源与指令](#resources-and-instructions)
15
+ - [资源提供方类型](#resource-provider-types)
16
+ - [限制](#limits)
17
+ - [延伸阅读](#further-reading)
18
+
19
+ -----
20
+
21
+ <a id="configuration"></a>
22
+ ## 配置
23
+
24
+ MCP 服务器需要主动配置。在目标 Cordis 作用域中,为每台服务器配置一个 `@deepseek-ai/dsh-mcp-client` 条目。每个随附 profile 都提供[工具注册表](tools.zh.md),并统一挂载共享资源服务一次;用户只需配置客户端条目。调用方没有可见的已配置服务器时,在 native 或 PTC 模式下都不会获得 MCP 提示词文本或工具。
25
+
26
+ Web 与 Desktop profile 还统一挂载一次 [MCP 服务器管理器](../../packages/mcp/mcp-manager/README.zh.md)。它运行通过 Settings 配置的服务器,以及已安装插件在自身生命周期内注册的服务器,并向 Remote 客户端提供它们的状态、重启与探测操作。
27
+
28
+ | 选择 | 配置维护位置 |
29
+ |---|---|
30
+ | 服务器身份、本地进程或 HTTP 端点、凭据和进程环境 | [客户端配置](../../packages/mcp/mcp-client/README.zh.md#use-this-package) |
31
+ | 工具与资源请求超时、启动失败策略和重连 | [客户端配置](../../packages/mcp/mcp-client/README.zh.md#use-this-package) |
32
+ | 资源发现与读取 | 随附 profile 已包含 [MCP 资源服务](../../packages/mcp/mcp-resources/README.zh.md#use-this-package);该服务没有配置字段 |
33
+ | 服务器指令大小限制 | 客户端 `maxInstructionBytes`;组合提供[系统提示词装配](system-prompt.zh.md) |
34
+ | 权限决策和受支持的图像输出 | [工具执行](tools.zh.md)和[附件](attachment.zh.md) |
35
+
36
+ 协议协商遵循 SDK 支持的修订版;产品没有强制指定协议修订版的设置。[配置目录](../config-catalog.zh.md#deepseek-aidsh-mcp-client) 列出客户端接受的字段和默认值。
37
+
38
+ -----
39
+
40
+ <a id="responsibilities-and-scope"></a>
41
+ ## 职责与作用域
42
+
43
+ 客户端是每服务器一个的连接插件,也是 Harness 工具注册表的消费者。它不发布共享的 `ctx.mcp` 服务;管理器为其挂载的宿主全局服务器发布 `ctx.mcpManager`。外部服务器实现 MCP 操作;SDK 拥有协议交换;客户端将发现的工具适配到 Harness 执行过程。
44
+
45
+ `mcp-resources` 拥有共享资源工具,并在调用方作用域中选择提供方。每个 MCP 客户端通过自己的连接提供资源操作。作用域中的首个提供方启用本地共享工具,移除最后一个提供方时移除这些工具;继承的提供方仍然可见。服务独立于任何单一客户端拥有这些工具注册。只要可见的客户端条目保持激活,连接失败就不会移除共享资源工具。
46
+
47
+ 配置的 `serverName` 在注册作用域内标识服务器。同一作用域中的两个条目不能占用相同名称;不同 Agent 作用域可以复用该名称。公开工具名包含配置的服务器名称,因此不同服务器的同名工具仍可区分。注册副作用拥有名称和已发现工具;插件释放时关闭连接并移除其贡献。
48
+
49
+ [原生 Cua Driver 提供方](../../packages/experimental/computer-use-cua-driver-native/README.zh.md) 复用客户端导出的结果适配器,无需打开 MCP 连接。桌面提供方选择属于[计算机使用子系统](computer-use.zh.md)。
50
+
51
+ -----
52
+
53
+ <a id="protocol-and-results"></a>
54
+ ## 协议与结果
55
+
56
+ stdio 和 Streamable HTTP 都使用官方 SDK 的协商、发现、协议校验和取消机制。工具列表变化通过旧版通知或现代订阅触发发现。刷新失败时保留上一代工具;连接恢复遵循[客户端生命周期](../../packages/mcp/mcp-client/README.zh.md#use-this-package)。
57
+
58
+ 结果适配器为程序化调用方保留规范 MCP JSON,并准备普通工具内容。受支持的图像使用附件系统;不受支持的富内容产生明确的文本诊断。服务器 `isError` 结果与请求失败抛出 `McpToolError`,其 code 告诉调用方请求结果是否已知,例如 `MCP_TOOL_ERROR`、`MCP_CONNECTION_CLOSED` 或 `MCP_TIMEOUT`;客户端 README 列出全部 code。工具注册表仍决定策略失败和结果替换。[工具契约](tools.zh.md) 维护记录和最终呈现规则;[客户端结果参考](../../packages/mcp/mcp-client/README.zh.md#use-this-package) 维护 MCP 特有的投影细节。
59
+
60
+ -----
61
+
62
+ <a id="resources-and-instructions"></a>
63
+ ## 资源与指令
64
+
65
+ 资源调用必须显式指定配置的服务器名称。系统提示词组装服务可用时,资源服务从派发所用的同一注册表列出调用方可见的名称,包括没有工具或指令的服务器。共享注册表在分发前,于调用 Agent 的作用域中解析该名称;不可用的服务器会在发出网络请求前失败。发现和读取均按需执行,也支持只提供资源而不提供工具的服务器。[资源包](../../packages/mcp/mcp-resources/README.zh.md) 维护分页和内容渲染规则;其生成的工具 schema 位于[工具目录](../tool-catalog.zh.md#deepseek-aidsh-mcp-resources)。
66
+
67
+ 资源提供方仍由连接拥有。作用域释放时移除注册;MCP 客户端控制取消和恢复。规范结果为程序化调用方保留完整 JSON,文本投影则以描述替换二进制 blob。返回的文本进入普通工具历史;服务器连接本身不会触发内容读取。
68
+
69
+ 组合包含系统提示词装配时,客户端将非空白的服务器指令发布为带服务器归属的作用域章节。指令保持字面文本,并在发布前通过配置的大小限制。替换连接仅在发现成功后发布指令;缺少指令时不添加章节。[系统提示词子系统](system-prompt.zh.md) 维护装配与记录规则。
70
+
71
+ -----
72
+
73
+ <a id="resource-provider-types"></a>
74
+ ## 资源提供方类型
75
+
76
+ 连接提供方接收一个操作与原始工具执行对象,其中包含调用方和取消信号。
77
+
78
+ ```ts type-equiv
79
+ /** One supported resource operation, with server-owned cursors and URIs. */
80
+ type McpResourceRequest =
81
+ | { method: 'resources/list' | 'resources/templates/list'; cursor?: string }
82
+ | { method: 'resources/read'; uri: string }
83
+ ```
84
+
85
+ ```ts type-equiv
86
+ /** One configured server's resource access, owned by its MCP connection plugin. */
87
+ interface McpResourceProvider {
88
+ /**
89
+ * Run an operation against one live connection generation. The resource tools
90
+ * dispatch in parallel, so one provider may receive several concurrent requests;
91
+ * each must settle independently.
92
+ * @param request - MCP resource method and parameters.
93
+ * @param exec - caller identity and cancellation for this invocation.
94
+ * @returns the protocol result as lossless JSON.
95
+ */
96
+ request(request: McpResourceRequest, exec: ToolExecution): Promise<JsonValue>
97
+ }
98
+ ```
99
+
100
+ -----
101
+
102
+ <a id="limits"></a>
103
+ ## 限制
104
+
105
+ 不支持 MCP 提示词模板、人工输入征询、基于任务的执行和资源订阅。资源工具需要调用方可见的已配置服务器;二进制资源保留为程序化数据,模型接收其文本描述。没有工具能力的服务器以空工具集连接。连接和发现超时遵循 SDK;客户端没有对应的独立设置。
106
+
107
+ -----
108
+
109
+ <a id="further-reading"></a>
110
+ ## 延伸阅读
111
+
112
+ - [MCP 包组](../../packages/mcp/README.zh.md) — 包入口。
113
+ - [MCP 资源](../../packages/mcp/mcp-resources/README.zh.md) — 共享工具与资源提供方语义。
114
+ - [MCP 管理器](../../packages/mcp/mcp-manager/README.zh.md) — 通过 Settings 配置与插件注册的服务器、状态及 Remote 操作。
115
+ - [资源可见性参考](../../packages/mcp/mcp-resources/README.zh.md) — profile 统一挂载及由已配置服务器决定的可见性。
116
+ - [第三方记忆服务器](../user/guide/mcp-memory.zh.md) — 产品配置指南。
117
+ - [协议协商参考](../../packages/mcp/mcp-client/README.zh.md) — SDK 职责与兼容性决策。
118
+ - [Computer Use MCP 服务器](../../packages/experimental/cua-mcp/README.zh.md) — DSH 作为 MCP stdio 服务器向其他 harness 提供 Computer Use 程序。
119
+
120
+ <!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
121
+
122
+ <a id="cordis-surface"></a>
123
+
124
+ ## Cordis API
125
+
126
+ Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) — the language sides differ only in locale-specific paired document paths. Signature blocks use a `ts cordis-catalog` fence and keep the original source JSDoc; dispatch modes are defined in the [primer](../cordis-primer.zh.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
127
+
128
+ <a id="ctxmcpmanager--mcpservermanager"></a>
129
+
130
+ ### `ctx.mcpManager` — `McpServerManager`
131
+
132
+ The manager service. Reconciliation and `restart` serialize instance replacement. Probes run independently and are cancelled before replacement or disposal waits for their cleanup.
133
+
134
+ ```ts cordis-catalog
135
+ /**
136
+ * Read configured and registered servers and retained runtime records without mounting or probing.
137
+ * @returns configured entries in document order, then registered entries, then retained records for removed entries.
138
+ */
139
+ list(): McpManagedServerView[]
140
+
141
+ /**
142
+ * Contribute one server for the calling plugin's lifetime. A registered
143
+ * entry is enabled while registered; its removal awaits the instance's
144
+ * unmount, so plugin disposal withdraws the server's tools before settling.
145
+ * @param name - server key and tool namespace, unique across configured and registered servers.
146
+ * @param entry - transport, endpoint, and budgets, validated like a configured entry.
147
+ * @returns an idempotent disposer that removes the registration.
148
+ * @throws when the name is taken, the entry is invalid, or the manager is disposed.
149
+ */
150
+ register(name: string, entry: McpServerRegistration): () => void
151
+
152
+ /**
153
+ * Stream server views for a management surface: the current list on
154
+ * subscription, then the complete list again after each status or entry change.
155
+ * @param signal - subscription lifetime; aborting ends only this stream.
156
+ * @returns coalesced server lists until the subscriber or the manager stops.
157
+ */
158
+ @Remote({ mode: 'stream' }) async* watch(signal: AbortSignal): AsyncIterable<McpManagedServerView[]>
159
+
160
+ /**
161
+ * Rebuild one server from its current entry: dispose the live instance (if
162
+ * any) and mount a fresh one with a fresh reconnect budget. Incomplete
163
+ * cleanup blocks replacement until the Host restarts.
164
+ * @param name - the configured or registered server key.
165
+ * @throws when the manager is disposed, no such entry exists, or cleanup is incomplete.
166
+ */
167
+ @Remote async restart(name: string): Promise<void>
168
+
169
+ /**
170
+ * Probe one server for a management surface; see {@link McpServerManager.probe}.
171
+ * @param name - the configured or registered server key.
172
+ * @param signal - caller cancellation.
173
+ * @returns the stage-classified probe outcome and independent cleanup result.
174
+ */
175
+ @Remote('probe') probeFromClient(name: string, signal: AbortSignal): Promise<McpProbeResult>
176
+
177
+ /**
178
+ * Probe one configured server without touching its live instance: resolve
179
+ * the entry's templates, connect, list tools, close. A disabled entry can be
180
+ * probed — that is how a management surface tests it before enabling.
181
+ * Configuration changes and manager disposal cancel the probe.
182
+ * @param name - the configured or registered server key.
183
+ * @param options - probe budget, listing caps, and abort signal.
184
+ * @returns the stage-classified probe outcome and independent cleanup result.
185
+ * @throws when the manager is disposed, the entry is absent or changing, cleanup is
186
+ * incomplete, options are invalid, or a required credentials provider is missing.
187
+ */
188
+ async probe(name: string, options?: McpProbeOptions): Promise<McpProbeResult>
189
+ ```
190
+
191
+ Source: [`packages/mcp/mcp-manager/src/index.ts`](../../packages/mcp/mcp-manager/src/index.ts)
192
+
193
+ <a id="ctxmcpresources--mcpresourceruntime"></a>
194
+
195
+ ### `ctx.mcpResources` — `McpResourceRuntime`
196
+
197
+ Scoped resource access plus three tools shared by configured MCP servers.
198
+
199
+ ```ts cordis-catalog
200
+ /**
201
+ * Register one server and expose resource tools while that scope has providers.
202
+ * @param server - configured server name, unique in this scope.
203
+ * @param provider - connection-owned resource operations.
204
+ * @returns the effect disposer for this exact registration.
205
+ */
206
+ register(server: string, provider: McpResourceProvider): () => void
207
+ ```
208
+
209
+ Source: [`packages/mcp/mcp-resources/src/index.ts`](../../packages/mcp/mcp-resources/src/index.ts)
210
+
211
+ <a id="mcp-manager-events"></a>
212
+
213
+ ### `mcp-manager/*` events
214
+
215
+ <a id="mcp-managerstatus--parallel"></a>
216
+
217
+ #### `mcp-manager/status` — parallel
218
+
219
+ One managed server's status transitioned. Emitted for every published change while the manager is live and either the entry is configured or registered, or a runtime record remains. Removed entries may emit cleanup failures; `watch` and `list()` report removals. Lifecycle operations do not wait for listeners. Synchronous throws and returned promise rejections are logged without skipping other listeners.
220
+
221
+ ```ts cordis-catalog
222
+ /**
223
+ * One managed server's status transitioned. Emitted for every published
224
+ * change while the manager is live and either the entry is configured or
225
+ * registered, or a runtime record remains. Removed entries may emit cleanup
226
+ * failures; `watch` and `list()` report removals.
227
+ * Lifecycle operations do not wait for listeners. Synchronous throws and
228
+ * returned promise rejections are logged without skipping other listeners.
229
+ * @param name - the configured `servers` key or registered name.
230
+ * @param status - the status now current for that server.
231
+ * @mode parallel
232
+ */
233
+ 'mcp-manager/status'(name: string, status: McpManagedServerStatus): void | Promise<void>
234
+ ```
235
+
236
+ Source: [`packages/mcp/mcp-manager/src/types.ts`](../../packages/mcp/mcp-manager/src/types.ts)
237
+ <!-- END GENERATED cordis-surface -->
@@ -0,0 +1,122 @@
1
+ # Office Kit
2
+
3
+ English | [中文](office-kit.zh.md)
4
+
5
+ The [document package family](../../packages/document/README.md) renders, converts, and recalculates Office files on the Node Host. Consumers authorize source reads and own presentation; the shared provider owns the engine, bounded admission, transient output reuse, and the private output store. The [`office_render`, `office_convert`, and `office_recalculate` tools](../../packages/document/tool-office/README.md) are the model-facing consumers; the provider itself creates no Session event.
6
+
7
+ ## Ownership
8
+
9
+ | Owner | Responsibility |
10
+ |---|---|
11
+ | [office-kit](../../packages/document/office-kit/README.md) | `ctx.officeKit`: shared LibreOffice rendering, conversion, and recalculation, bounded admission, output caching, and the per-Session output store; resolution of the provider's own Kit entry, engine manifests from that installation, and native paths mapped to ASAR unpacked directories |
12
+ | [tool-office](../../packages/document/tool-office/README.md) | The on-demand `office_render`, `office_convert`, and `office_recalculate` tools: rendered images in tool results and converted or recalculated files returned for a shell copy |
13
+ | [Web bundle](../../packages/bundle/web-app/README.md) and [SDK bundle](../../packages/bundle/sdk-app/README.md) | One configurable provider and `tool-office` shared by Host consumers |
14
+ | [Office preview Client](../../packages/client/ui-sidebar-documentpreview/README.md#office-preview) | Office extension selection, PDF reuse, and missing-font notices |
15
+
16
+ ## Requests and results
17
+
18
+ [`OfficeKitRequest`](../../packages/document/office-kit/src/types.ts) contains an already-authorized source key/version, optional stat size, a deferred `read(signal, maxBytes)` callback, foreground/background priority, and a `OfficeExtension`: `doc`, `docx`, `xls`, `xlsx`, `ppt`, or `pptx`. `OfficeKit.convert(request, signal?)` returns one complete PDF result. `renderImages()` returns bounded PNG images of selected pages, slides, or worksheet areas; `convertTo()` and `recalculate()` save the output under the provider's `outputDirectory` for the request's owner and return its Host path. Their request types accept OpenDocument inputs, and image rendering accepts PDF. All methods share admission and caching. Cancellation follows the caller and provider lifetimes; validation, output, and engine failures reject with a classified `OfficeKitError`.
19
+
20
+ `OfficeKitPriority` is `foreground` for requested preview/QA and `background` for speculation. `OfficeSourceKey` brands the caller-owned authorized source locator. `OfficeKitGeneration` brands a provider lifetime, and `OfficeKitKey` brands its content identity; neither opaque value is parsed by consumers.
21
+
22
+ | Result field | Meaning |
23
+ |---|---|
24
+ | `pdf` | Caller-owned `Uint8Array` containing the complete PDF |
25
+ | `missingFonts` | Requested document font families unavailable to this conversion |
26
+ | `cacheKey` | Opaque converter generation plus extension/source-content identity |
27
+ | `generation` | Provider lifetime; replacement invalidates cached PDF reuse |
28
+
29
+ The provider admits the deferred read before allocating source bytes, shares conversions by content identity, and removes its private scratch directory before returning. Returned PDF bytes remain valid after provider disposal. Source and PDF bytes do not enter Session storage. Consumers can use [Workspace Files](../../packages/api/workspace-files/README.md) for authorized bounded reads.
30
+
31
+ ## Preview reads
32
+
33
+ `RenderedDocumentBytes` carries workspace file metadata, native PDF `data`, `missingFonts`, and `generation`; the original source identity accompanies the converted PDF.
34
+
35
+ The `officeKit.render` Remote method checks source authorization and versions through the Session's [Workspace Files](../../packages/api/workspace-files/README.md) service. After conversion admission, `fs.readBytes` supplies raw input within the reserved byte capacity; Office input limits govern this read. The binary Remote projects the PDF into a multipart attachment and restores an `ArrayBuffer`-backed `Uint8Array` on the Client. Source access failures pass through; size and engine failures expose a classified reason without diagnostics. Conversion does not activate an Agent or append events.
36
+
37
+ The `api/remotes` assembly mounts the conversion service's generated Remote descriptor. The shared Document Preview package registers Office formats with complete-byte loading and its existing PDF.js Worker. Each preview read rechecks renderer generation, source authorization, and version before sharing an in-flight conversion or cached PDF. Connection resets and plugin disposal cancel requests and clear cached bytes. Missing services show localized configuration guidance.
38
+
39
+ ## Engine selection and limits
40
+
41
+ The external [`@deepseek-ai/libreoffice-kit`](https://github.com/deepseek-ai/dsh-libreoffice-kit) Node API selects its precompiled engines. The kit has an independent version and release workflow, defined by the [release ownership decision](../../.agents/notes/implemented/architecture/2026-09-14-independent-libreoffice-kit.md). Application builds install the published npm packages. Application packaging requires the target’s declared native engine, or Node WASM when the kit declares no native engine for that target. The [platform engine reference](../../packages/document/office-kit/README.md) defines installation and packaging. Invalid metadata, missing required assets, and conversion errors reject without switching engines. When the provider's Kit is absent or fails to import, the provider still registers and rejects conversions as `unavailable`. Conversion uses disk input and output paths on the Host, with no browser conversion engine or font RPC.
42
+
43
+ The [Host provider configuration](../../packages/document/office-kit/README.md#use-this-package) owns concurrency, deadlines, input/output limits, archive limits, image resolution, and font access. Native/WASM implementation and asset distribution belong to the kit workspace. System LibreOffice discovery, runtime engine downloads, persistent output caching, workspace writes, and model-facing presentation are outside this provider.
44
+
45
+ <!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
46
+
47
+ <a id="cordis-surface"></a>
48
+
49
+ ## Cordis API
50
+
51
+ Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) — the language sides differ only in locale-specific paired document paths. Signature blocks use a `ts cordis-catalog` fence and keep the original source JSDoc; dispatch modes are defined in the [primer](../cordis-primer.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
52
+
53
+ <a id="ctxofficekit--officekit"></a>
54
+
55
+ ### `ctx.officeKit` — `OfficeKit`
56
+
57
+ A provider lifetime owns all converters, queued calls, and temporary files.
58
+
59
+ ```ts cordis-catalog
60
+ /**
61
+ * Convert Office bytes to PDF without modifying the source or writing Session events.
62
+ * @param request - authorized metadata and deferred bounded source read.
63
+ * @param signal - caller cancellation; provider disposal also stops active work.
64
+ * @returns caller-owned PDF bytes after conversion and scratch cleanup settle; canceled readers reject independently.
65
+ * @throws {OfficeKitError} Invalid input, unusable output, or engine failure; cancellation rejects with its reason.
66
+ */
67
+ async convert(request: OfficeKitRequest, signal?: AbortSignal): Promise<OfficeKitResult>
68
+
69
+ /**
70
+ * Render selected pages, slides, or worksheet areas of one document as PNG images. Requests share the admission
71
+ * queue, concurrency, source-byte reservation, and cache with previews, and run at foreground priority.
72
+ * @param request - authorized metadata, deferred bounded source read, selection, and complete-result limits.
73
+ * @param signal - caller cancellation; provider disposal also stops active work.
74
+ * @returns caller-owned images in document order whose count, per-image size, and total bytes satisfy the limits.
75
+ * @throws {OfficeKitError} `invalid-request` for a selection the engine rejects, `output-too-large` when the
76
+ * selection exceeds a limit, and the other conversion codes; cancellation rejects with its reason.
77
+ */
78
+ async renderImages(request: OfficeImagesRequest, signal?: AbortSignal): Promise<OfficeImagesResult>
79
+
80
+ /**
81
+ * Convert one document to another format at foreground priority, sharing admission, concurrency, and cache with
82
+ * previews, and save the result in the provider's output store.
83
+ * @param request - authorized metadata, deferred bounded source read, target format, and output owner and name.
84
+ * @param signal - caller cancellation; provider disposal also stops active work.
85
+ * @returns the saved file's absolute Host path and size; the file is deleted after `outputRetentionMs`, when older
86
+ * outputs need `maxOutputStoreBytes`, when the Session whose id is `output.owner` is disposed, or when the provider is disposed.
87
+ * @throws {OfficeKitError} `invalid-request` for a format or sheet the engine rejects and the other conversion
88
+ * codes; cancellation rejects with its reason.
89
+ */
90
+ async convertTo(request: OfficeConversionRequest, signal?: AbortSignal): Promise<OfficeFileResult>
91
+
92
+ /**
93
+ * Recalculate every formula of one workbook at foreground priority and save formulas with refreshed cached results, sharing admission,
94
+ * concurrency, and cache with previews, and save the workbook in the provider's output store. This does not validate
95
+ * formulas or business data.
96
+ * @param request - authorized workbook metadata, deferred bounded source read, output format, and output owner and name.
97
+ * @param signal - caller cancellation; provider disposal also stops active work.
98
+ * @returns the saved workbook's absolute Host path and size, retained like {@link convertTo} outputs.
99
+ * @throws {OfficeKitError} Invalid input, unusable output, or engine failure; cancellation rejects with its reason.
100
+ */
101
+ async recalculate(request: OfficeRecalculationRequest, signal?: AbortSignal): Promise<OfficeFileResult>
102
+
103
+ /**
104
+ * Read and convert one Office file using the Session's ordinary filesystem authorization.
105
+ * @param workspaceFileScope - Session header lookup shared with workspaceFiles.
106
+ * @param path - absolute or workspace-relative Office path.
107
+ * @param priority - foreground preview or speculative background work.
108
+ * @param signal - Remote cancellation; disposal also cancels outstanding reads and conversions.
109
+ * @returns complete PDF bytes with original source identity and missing font families.
110
+ */
111
+ @Remote async render( workspaceFileScope: WorkspaceFileScope, path: string, priority: OfficeKitPriority, signal: AbortSignal, ): Promise<RenderedDocumentBytes>
112
+
113
+ /**
114
+ * Read the current rendering generation before reusing a Client PDF.
115
+ * @param signal - Remote caller cancellation.
116
+ * @returns provider lifetime, replaced with rendering, font, or engine configuration.
117
+ */
118
+ @Remote('generation') getGeneration(signal: AbortSignal): OfficeKitGeneration
119
+ ```
120
+
121
+ Source: [`packages/document/office-kit/src/index.ts`](../../packages/document/office-kit/src/index.ts)
122
+ <!-- END GENERATED cordis-surface -->