dsh-plugin-guide 0.1.0

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 (374) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE.md +26 -0
  3. package/README.es.md +139 -0
  4. package/README.hi.md +138 -0
  5. package/README.md +165 -0
  6. package/README.pt.md +139 -0
  7. package/README.zh-CN.md +164 -0
  8. package/SKILL.md +69 -0
  9. package/cordis.patch.yml +4 -0
  10. package/guide/links.md +92 -0
  11. package/guide/plugin-dev-guide.md +429 -0
  12. package/guide/quick-reference.es.md +176 -0
  13. package/guide/quick-reference.hi.md +176 -0
  14. package/guide/quick-reference.md +176 -0
  15. package/guide/quick-reference.pt.md +176 -0
  16. package/guide/quick-reference.zh-CN.md +175 -0
  17. package/index.js +58 -0
  18. package/package.json +83 -0
  19. package/references/community-ecosystem.md +201 -0
  20. package/references/community-repo-deep-dive.md +695 -0
  21. package/references/cordis-paper-and-community.md +326 -0
  22. package/references/harness-repo.md +654 -0
  23. package/references/official-docs/AGENTS.md +149 -0
  24. package/references/official-docs/BENCHMARK.md +3 -0
  25. package/references/official-docs/CLAUDE.md +1 -0
  26. package/references/official-docs/CONTRIBUTING.i18n.yaml +6 -0
  27. package/references/official-docs/CONTRIBUTING.md +23 -0
  28. package/references/official-docs/CONTRIBUTING.zh.md +23 -0
  29. package/references/official-docs/LICENSE +21 -0
  30. package/references/official-docs/README.i18n.yaml +6 -0
  31. package/references/official-docs/README.md +35 -0
  32. package/references/official-docs/README.zh.md +74 -0
  33. package/references/official-docs/SNAPSHOT.md +16 -0
  34. package/references/official-docs/THIRD_PARTY_NOTICES.md +192 -0
  35. package/references/official-docs/docs/AGENTS.md +75 -0
  36. package/references/official-docs/docs/agent-lifecycle.i18n.yaml +6 -0
  37. package/references/official-docs/docs/agent-lifecycle.md +82 -0
  38. package/references/official-docs/docs/agent-lifecycle.zh.md +84 -0
  39. package/references/official-docs/docs/api-gateway.i18n.yaml +6 -0
  40. package/references/official-docs/docs/api-gateway.md +164 -0
  41. package/references/official-docs/docs/api-gateway.zh.md +164 -0
  42. package/references/official-docs/docs/architecture.i18n.yaml +6 -0
  43. package/references/official-docs/docs/architecture.md +129 -0
  44. package/references/official-docs/docs/architecture.zh.md +133 -0
  45. package/references/official-docs/docs/capability-seams.i18n.yaml +6 -0
  46. package/references/official-docs/docs/capability-seams.md +471 -0
  47. package/references/official-docs/docs/capability-seams.zh.md +473 -0
  48. package/references/official-docs/docs/config-catalog.i18n.yaml +6 -0
  49. package/references/official-docs/docs/config-catalog.md +3151 -0
  50. package/references/official-docs/docs/config-catalog.zh.md +3152 -0
  51. package/references/official-docs/docs/cookbook/adding-a-conversation-node.i18n.yaml +6 -0
  52. package/references/official-docs/docs/cookbook/adding-a-conversation-node.md +233 -0
  53. package/references/official-docs/docs/cookbook/adding-a-conversation-node.zh.md +233 -0
  54. package/references/official-docs/docs/cookbook/adding-a-package.i18n.yaml +6 -0
  55. package/references/official-docs/docs/cookbook/adding-a-package.md +118 -0
  56. package/references/official-docs/docs/cookbook/adding-a-package.zh.md +118 -0
  57. package/references/official-docs/docs/cookbook/adding-a-tool.i18n.yaml +6 -0
  58. package/references/official-docs/docs/cookbook/adding-a-tool.md +94 -0
  59. package/references/official-docs/docs/cookbook/adding-a-tool.zh.md +96 -0
  60. package/references/official-docs/docs/cookbook/adding-a-vendored-package.i18n.yaml +6 -0
  61. package/references/official-docs/docs/cookbook/adding-a-vendored-package.md +59 -0
  62. package/references/official-docs/docs/cookbook/adding-a-vendored-package.zh.md +59 -0
  63. package/references/official-docs/docs/cookbook/adding-an-llm-adapter.i18n.yaml +6 -0
  64. package/references/official-docs/docs/cookbook/adding-an-llm-adapter.md +43 -0
  65. package/references/official-docs/docs/cookbook/adding-an-llm-adapter.zh.md +43 -0
  66. package/references/official-docs/docs/cookbook/extension-cookbook.i18n.yaml +6 -0
  67. package/references/official-docs/docs/cookbook/extension-cookbook.md +129 -0
  68. package/references/official-docs/docs/cookbook/extension-cookbook.zh.md +131 -0
  69. package/references/official-docs/docs/cookbook/maintaining-dsh-code-review.i18n.yaml +6 -0
  70. package/references/official-docs/docs/cookbook/maintaining-dsh-code-review.md +64 -0
  71. package/references/official-docs/docs/cookbook/maintaining-dsh-code-review.zh.md +64 -0
  72. package/references/official-docs/docs/cookbook/responding-to-pr-review-on-a-stack.i18n.yaml +6 -0
  73. package/references/official-docs/docs/cookbook/responding-to-pr-review-on-a-stack.md +32 -0
  74. package/references/official-docs/docs/cookbook/responding-to-pr-review-on-a-stack.zh.md +32 -0
  75. package/references/official-docs/docs/cordis-api/context.i18n.yaml +6 -0
  76. package/references/official-docs/docs/cordis-api/context.md +364 -0
  77. package/references/official-docs/docs/cordis-api/context.zh.md +366 -0
  78. package/references/official-docs/docs/cordis-api/events.i18n.yaml +6 -0
  79. package/references/official-docs/docs/cordis-api/events.md +207 -0
  80. package/references/official-docs/docs/cordis-api/events.zh.md +209 -0
  81. package/references/official-docs/docs/cordis-api/fiber.i18n.yaml +6 -0
  82. package/references/official-docs/docs/cordis-api/fiber.md +375 -0
  83. package/references/official-docs/docs/cordis-api/fiber.zh.md +377 -0
  84. package/references/official-docs/docs/cordis-api/inherited.md +39 -0
  85. package/references/official-docs/docs/cordis-api/registry.i18n.yaml +6 -0
  86. package/references/official-docs/docs/cordis-api/registry.md +152 -0
  87. package/references/official-docs/docs/cordis-api/registry.zh.md +154 -0
  88. package/references/official-docs/docs/cordis-api/service.i18n.yaml +6 -0
  89. package/references/official-docs/docs/cordis-api/service.md +102 -0
  90. package/references/official-docs/docs/cordis-api/service.zh.md +104 -0
  91. package/references/official-docs/docs/cordis-primer.i18n.yaml +6 -0
  92. package/references/official-docs/docs/cordis-primer.md +44 -0
  93. package/references/official-docs/docs/cordis-primer.zh.md +50 -0
  94. package/references/official-docs/docs/cordis-tutorial/01-first-plugin.i18n.yaml +6 -0
  95. package/references/official-docs/docs/cordis-tutorial/01-first-plugin.md +95 -0
  96. package/references/official-docs/docs/cordis-tutorial/01-first-plugin.zh.md +95 -0
  97. package/references/official-docs/docs/cordis-tutorial/02-lifecycle-and-effects.i18n.yaml +6 -0
  98. package/references/official-docs/docs/cordis-tutorial/02-lifecycle-and-effects.md +98 -0
  99. package/references/official-docs/docs/cordis-tutorial/02-lifecycle-and-effects.zh.md +98 -0
  100. package/references/official-docs/docs/cordis-tutorial/03-services.i18n.yaml +6 -0
  101. package/references/official-docs/docs/cordis-tutorial/03-services.md +98 -0
  102. package/references/official-docs/docs/cordis-tutorial/03-services.zh.md +98 -0
  103. package/references/official-docs/docs/cordis-tutorial/04-events.i18n.yaml +6 -0
  104. package/references/official-docs/docs/cordis-tutorial/04-events.md +144 -0
  105. package/references/official-docs/docs/cordis-tutorial/04-events.zh.md +144 -0
  106. package/references/official-docs/docs/cordis-tutorial/05-config.i18n.yaml +6 -0
  107. package/references/official-docs/docs/cordis-tutorial/05-config.md +84 -0
  108. package/references/official-docs/docs/cordis-tutorial/05-config.zh.md +84 -0
  109. package/references/official-docs/docs/cordis-tutorial/06-composition-and-hmr.i18n.yaml +6 -0
  110. package/references/official-docs/docs/cordis-tutorial/06-composition-and-hmr.md +113 -0
  111. package/references/official-docs/docs/cordis-tutorial/06-composition-and-hmr.zh.md +113 -0
  112. package/references/official-docs/docs/cordis-tutorial/07-into-the-harness.i18n.yaml +6 -0
  113. package/references/official-docs/docs/cordis-tutorial/07-into-the-harness.md +107 -0
  114. package/references/official-docs/docs/cordis-tutorial/07-into-the-harness.zh.md +107 -0
  115. package/references/official-docs/docs/cordis-tutorial/index.i18n.yaml +6 -0
  116. package/references/official-docs/docs/cordis-tutorial/index.md +60 -0
  117. package/references/official-docs/docs/cordis-tutorial/index.zh.md +62 -0
  118. package/references/official-docs/docs/defensive-patterns.i18n.yaml +6 -0
  119. package/references/official-docs/docs/defensive-patterns.md +33 -0
  120. package/references/official-docs/docs/defensive-patterns.zh.md +33 -0
  121. package/references/official-docs/docs/development.i18n.yaml +6 -0
  122. package/references/official-docs/docs/development.md +171 -0
  123. package/references/official-docs/docs/development.zh.md +171 -0
  124. package/references/official-docs/docs/event-producer-consumer.i18n.yaml +6 -0
  125. package/references/official-docs/docs/event-producer-consumer.md +76 -0
  126. package/references/official-docs/docs/event-producer-consumer.zh.md +78 -0
  127. package/references/official-docs/docs/glossary.i18n.yaml +6 -0
  128. package/references/official-docs/docs/glossary.md +45 -0
  129. package/references/official-docs/docs/glossary.zh.md +45 -0
  130. package/references/official-docs/docs/graph-atlas.i18n.yaml +6 -0
  131. package/references/official-docs/docs/graph-atlas.md +24 -0
  132. package/references/official-docs/docs/graph-atlas.zh.md +26 -0
  133. package/references/official-docs/docs/i18n/README.i18n.yaml +6 -0
  134. package/references/official-docs/docs/i18n/README.md +60 -0
  135. package/references/official-docs/docs/i18n/README.zh.md +60 -0
  136. package/references/official-docs/docs/i18n/style-samples.md +87 -0
  137. package/references/official-docs/docs/i18n/terminology.md +214 -0
  138. package/references/official-docs/docs/i18n/translation-prompt.md +263 -0
  139. package/references/official-docs/docs/i18n/translation-rules.i18n.yaml +6 -0
  140. package/references/official-docs/docs/i18n/translation-rules.md +69 -0
  141. package/references/official-docs/docs/i18n/translation-rules.zh.md +69 -0
  142. package/references/official-docs/docs/module-graph.i18n.yaml +6 -0
  143. package/references/official-docs/docs/module-graph.md +1638 -0
  144. package/references/official-docs/docs/module-graph.zh.md +1640 -0
  145. package/references/official-docs/docs/persistence-catalog.i18n.yaml +6 -0
  146. package/references/official-docs/docs/persistence-catalog.md +944 -0
  147. package/references/official-docs/docs/persistence-catalog.zh.md +946 -0
  148. package/references/official-docs/docs/postmortem/0001-acp-default-export-drops-inject.i18n.yaml +6 -0
  149. package/references/official-docs/docs/postmortem/0001-acp-default-export-drops-inject.md +113 -0
  150. package/references/official-docs/docs/postmortem/0001-acp-default-export-drops-inject.zh.md +113 -0
  151. package/references/official-docs/docs/postmortem/0002-js-expression-disabled-filesystem-tools.i18n.yaml +6 -0
  152. package/references/official-docs/docs/postmortem/0002-js-expression-disabled-filesystem-tools.md +47 -0
  153. package/references/official-docs/docs/postmortem/0002-js-expression-disabled-filesystem-tools.zh.md +47 -0
  154. package/references/official-docs/docs/postmortem/0003-web-agent-gui-feedback-loop.i18n.yaml +6 -0
  155. package/references/official-docs/docs/postmortem/0003-web-agent-gui-feedback-loop.md +53 -0
  156. package/references/official-docs/docs/postmortem/0003-web-agent-gui-feedback-loop.zh.md +53 -0
  157. package/references/official-docs/docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.i18n.yaml +6 -0
  158. package/references/official-docs/docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.md +55 -0
  159. package/references/official-docs/docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.zh.md +55 -0
  160. package/references/official-docs/docs/postmortem/README.i18n.yaml +6 -0
  161. package/references/official-docs/docs/postmortem/README.md +18 -0
  162. package/references/official-docs/docs/postmortem/README.zh.md +18 -0
  163. package/references/official-docs/docs/rescope.i18n.yaml +6 -0
  164. package/references/official-docs/docs/rescope.md +53 -0
  165. package/references/official-docs/docs/rescope.zh.md +53 -0
  166. package/references/official-docs/docs/subsystems/README.i18n.yaml +6 -0
  167. package/references/official-docs/docs/subsystems/README.md +55 -0
  168. package/references/official-docs/docs/subsystems/README.zh.md +55 -0
  169. package/references/official-docs/docs/subsystems/approval.i18n.yaml +6 -0
  170. package/references/official-docs/docs/subsystems/approval.md +170 -0
  171. package/references/official-docs/docs/subsystems/approval.zh.md +170 -0
  172. package/references/official-docs/docs/subsystems/attachment.i18n.yaml +6 -0
  173. package/references/official-docs/docs/subsystems/attachment.md +115 -0
  174. package/references/official-docs/docs/subsystems/attachment.zh.md +115 -0
  175. package/references/official-docs/docs/subsystems/client-modules.i18n.yaml +6 -0
  176. package/references/official-docs/docs/subsystems/client-modules.md +118 -0
  177. package/references/official-docs/docs/subsystems/client-modules.zh.md +118 -0
  178. package/references/official-docs/docs/subsystems/code-runtime.i18n.yaml +6 -0
  179. package/references/official-docs/docs/subsystems/code-runtime.md +191 -0
  180. package/references/official-docs/docs/subsystems/code-runtime.zh.md +191 -0
  181. package/references/official-docs/docs/subsystems/commands.i18n.yaml +6 -0
  182. package/references/official-docs/docs/subsystems/commands.md +187 -0
  183. package/references/official-docs/docs/subsystems/commands.zh.md +187 -0
  184. package/references/official-docs/docs/subsystems/compaction.i18n.yaml +6 -0
  185. package/references/official-docs/docs/subsystems/compaction.md +238 -0
  186. package/references/official-docs/docs/subsystems/compaction.zh.md +238 -0
  187. package/references/official-docs/docs/subsystems/core.i18n.yaml +6 -0
  188. package/references/official-docs/docs/subsystems/core.md +1070 -0
  189. package/references/official-docs/docs/subsystems/core.zh.md +1078 -0
  190. package/references/official-docs/docs/subsystems/credentials.i18n.yaml +6 -0
  191. package/references/official-docs/docs/subsystems/credentials.md +133 -0
  192. package/references/official-docs/docs/subsystems/credentials.zh.md +133 -0
  193. package/references/official-docs/docs/subsystems/extensions.i18n.yaml +6 -0
  194. package/references/official-docs/docs/subsystems/extensions.md +364 -0
  195. package/references/official-docs/docs/subsystems/extensions.zh.md +364 -0
  196. package/references/official-docs/docs/subsystems/feedback.i18n.yaml +6 -0
  197. package/references/official-docs/docs/subsystems/feedback.md +266 -0
  198. package/references/official-docs/docs/subsystems/feedback.zh.md +266 -0
  199. package/references/official-docs/docs/subsystems/filesystem.i18n.yaml +6 -0
  200. package/references/official-docs/docs/subsystems/filesystem.md +495 -0
  201. package/references/official-docs/docs/subsystems/filesystem.zh.md +495 -0
  202. package/references/official-docs/docs/subsystems/goal.i18n.yaml +6 -0
  203. package/references/official-docs/docs/subsystems/goal.md +277 -0
  204. package/references/official-docs/docs/subsystems/goal.zh.md +277 -0
  205. package/references/official-docs/docs/subsystems/invariants.i18n.yaml +6 -0
  206. package/references/official-docs/docs/subsystems/invariants.md +88 -0
  207. package/references/official-docs/docs/subsystems/invariants.zh.md +88 -0
  208. package/references/official-docs/docs/subsystems/jobs.i18n.yaml +6 -0
  209. package/references/official-docs/docs/subsystems/jobs.md +290 -0
  210. package/references/official-docs/docs/subsystems/jobs.zh.md +290 -0
  211. package/references/official-docs/docs/subsystems/llm-streaming.i18n.yaml +6 -0
  212. package/references/official-docs/docs/subsystems/llm-streaming.md +888 -0
  213. package/references/official-docs/docs/subsystems/llm-streaming.zh.md +894 -0
  214. package/references/official-docs/docs/subsystems/lsp.i18n.yaml +6 -0
  215. package/references/official-docs/docs/subsystems/lsp.md +202 -0
  216. package/references/official-docs/docs/subsystems/lsp.zh.md +202 -0
  217. package/references/official-docs/docs/subsystems/permission-presets.i18n.yaml +6 -0
  218. package/references/official-docs/docs/subsystems/permission-presets.md +131 -0
  219. package/references/official-docs/docs/subsystems/permission-presets.zh.md +131 -0
  220. package/references/official-docs/docs/subsystems/persistence.i18n.yaml +6 -0
  221. package/references/official-docs/docs/subsystems/persistence.md +385 -0
  222. package/references/official-docs/docs/subsystems/persistence.zh.md +385 -0
  223. package/references/official-docs/docs/subsystems/plan.i18n.yaml +6 -0
  224. package/references/official-docs/docs/subsystems/plan.md +87 -0
  225. package/references/official-docs/docs/subsystems/plan.zh.md +87 -0
  226. package/references/official-docs/docs/subsystems/sandbox.i18n.yaml +6 -0
  227. package/references/official-docs/docs/subsystems/sandbox.md +218 -0
  228. package/references/official-docs/docs/subsystems/sandbox.zh.md +218 -0
  229. package/references/official-docs/docs/subsystems/schedule.i18n.yaml +6 -0
  230. package/references/official-docs/docs/subsystems/schedule.md +186 -0
  231. package/references/official-docs/docs/subsystems/schedule.zh.md +186 -0
  232. package/references/official-docs/docs/subsystems/scope.i18n.yaml +6 -0
  233. package/references/official-docs/docs/subsystems/scope.md +59 -0
  234. package/references/official-docs/docs/subsystems/scope.zh.md +59 -0
  235. package/references/official-docs/docs/subsystems/session-projection.i18n.yaml +6 -0
  236. package/references/official-docs/docs/subsystems/session-projection.md +262 -0
  237. package/references/official-docs/docs/subsystems/session-projection.zh.md +262 -0
  238. package/references/official-docs/docs/subsystems/session-query.i18n.yaml +6 -0
  239. package/references/official-docs/docs/subsystems/session-query.md +495 -0
  240. package/references/official-docs/docs/subsystems/session-query.zh.md +495 -0
  241. package/references/official-docs/docs/subsystems/session-reference.i18n.yaml +6 -0
  242. package/references/official-docs/docs/subsystems/session-reference.md +108 -0
  243. package/references/official-docs/docs/subsystems/session-reference.zh.md +108 -0
  244. package/references/official-docs/docs/subsystems/session-telemetry.i18n.yaml +6 -0
  245. package/references/official-docs/docs/subsystems/session-telemetry.md +194 -0
  246. package/references/official-docs/docs/subsystems/session-telemetry.zh.md +194 -0
  247. package/references/official-docs/docs/subsystems/session-title.i18n.yaml +6 -0
  248. package/references/official-docs/docs/subsystems/session-title.md +204 -0
  249. package/references/official-docs/docs/subsystems/session-title.zh.md +204 -0
  250. package/references/official-docs/docs/subsystems/session.i18n.yaml +6 -0
  251. package/references/official-docs/docs/subsystems/session.md +849 -0
  252. package/references/official-docs/docs/subsystems/session.zh.md +851 -0
  253. package/references/official-docs/docs/subsystems/settings.i18n.yaml +6 -0
  254. package/references/official-docs/docs/subsystems/settings.md +310 -0
  255. package/references/official-docs/docs/subsystems/settings.zh.md +310 -0
  256. package/references/official-docs/docs/subsystems/shell.i18n.yaml +6 -0
  257. package/references/official-docs/docs/subsystems/shell.md +303 -0
  258. package/references/official-docs/docs/subsystems/shell.zh.md +303 -0
  259. package/references/official-docs/docs/subsystems/skills.i18n.yaml +6 -0
  260. package/references/official-docs/docs/subsystems/skills.md +331 -0
  261. package/references/official-docs/docs/subsystems/skills.zh.md +331 -0
  262. package/references/official-docs/docs/subsystems/spill.i18n.yaml +6 -0
  263. package/references/official-docs/docs/subsystems/spill.md +117 -0
  264. package/references/official-docs/docs/subsystems/spill.zh.md +117 -0
  265. package/references/official-docs/docs/subsystems/storage.i18n.yaml +6 -0
  266. package/references/official-docs/docs/subsystems/storage.md +229 -0
  267. package/references/official-docs/docs/subsystems/storage.zh.md +229 -0
  268. package/references/official-docs/docs/subsystems/subagent.i18n.yaml +6 -0
  269. package/references/official-docs/docs/subsystems/subagent.md +734 -0
  270. package/references/official-docs/docs/subsystems/subagent.zh.md +736 -0
  271. package/references/official-docs/docs/subsystems/subprocess.i18n.yaml +6 -0
  272. package/references/official-docs/docs/subsystems/subprocess.md +324 -0
  273. package/references/official-docs/docs/subsystems/subprocess.zh.md +324 -0
  274. package/references/official-docs/docs/subsystems/system-prompt.i18n.yaml +6 -0
  275. package/references/official-docs/docs/subsystems/system-prompt.md +207 -0
  276. package/references/official-docs/docs/subsystems/system-prompt.zh.md +207 -0
  277. package/references/official-docs/docs/subsystems/terminal.i18n.yaml +6 -0
  278. package/references/official-docs/docs/subsystems/terminal.md +184 -0
  279. package/references/official-docs/docs/subsystems/terminal.zh.md +184 -0
  280. package/references/official-docs/docs/subsystems/token-meter.i18n.yaml +6 -0
  281. package/references/official-docs/docs/subsystems/token-meter.md +90 -0
  282. package/references/official-docs/docs/subsystems/token-meter.zh.md +90 -0
  283. package/references/official-docs/docs/subsystems/tools.i18n.yaml +6 -0
  284. package/references/official-docs/docs/subsystems/tools.md +720 -0
  285. package/references/official-docs/docs/subsystems/tools.zh.md +720 -0
  286. package/references/official-docs/docs/subsystems/typert.i18n.yaml +6 -0
  287. package/references/official-docs/docs/subsystems/typert.md +336 -0
  288. package/references/official-docs/docs/subsystems/typert.zh.md +336 -0
  289. package/references/official-docs/docs/subsystems/user-questions.i18n.yaml +6 -0
  290. package/references/official-docs/docs/subsystems/user-questions.md +178 -0
  291. package/references/official-docs/docs/subsystems/user-questions.zh.md +178 -0
  292. package/references/official-docs/docs/subsystems/web-server.i18n.yaml +6 -0
  293. package/references/official-docs/docs/subsystems/web-server.md +108 -0
  294. package/references/official-docs/docs/subsystems/web-server.zh.md +108 -0
  295. package/references/official-docs/docs/subsystems/web.i18n.yaml +6 -0
  296. package/references/official-docs/docs/subsystems/web.md +199 -0
  297. package/references/official-docs/docs/subsystems/web.zh.md +199 -0
  298. package/references/official-docs/docs/subsystems/workflow.i18n.yaml +6 -0
  299. package/references/official-docs/docs/subsystems/workflow.md +278 -0
  300. package/references/official-docs/docs/subsystems/workflow.zh.md +278 -0
  301. package/references/official-docs/docs/subsystems/workspace.i18n.yaml +6 -0
  302. package/references/official-docs/docs/subsystems/workspace.md +228 -0
  303. package/references/official-docs/docs/subsystems/workspace.zh.md +228 -0
  304. package/references/official-docs/docs/testing.i18n.yaml +6 -0
  305. package/references/official-docs/docs/testing.md +49 -0
  306. package/references/official-docs/docs/testing.zh.md +49 -0
  307. package/references/official-docs/docs/tool-catalog.i18n.yaml +6 -0
  308. package/references/official-docs/docs/tool-catalog.md +1873 -0
  309. package/references/official-docs/docs/tool-catalog.zh.md +1878 -0
  310. package/references/official-docs/docs/tool-execution-pipeline.i18n.yaml +6 -0
  311. package/references/official-docs/docs/tool-execution-pipeline.md +62 -0
  312. package/references/official-docs/docs/tool-execution-pipeline.zh.md +64 -0
  313. package/references/official-docs/docs/user/develop/basic/config.i18n.yaml +6 -0
  314. package/references/official-docs/docs/user/develop/basic/config.md +106 -0
  315. package/references/official-docs/docs/user/develop/basic/config.zh.md +106 -0
  316. package/references/official-docs/docs/user/develop/basic/index.i18n.yaml +6 -0
  317. package/references/official-docs/docs/user/develop/basic/index.md +144 -0
  318. package/references/official-docs/docs/user/develop/basic/index.zh.md +144 -0
  319. package/references/official-docs/docs/user/develop/basic/publish.i18n.yaml +6 -0
  320. package/references/official-docs/docs/user/develop/basic/publish.md +183 -0
  321. package/references/official-docs/docs/user/develop/basic/publish.zh.md +183 -0
  322. package/references/official-docs/docs/user/develop/basic/tool.i18n.yaml +6 -0
  323. package/references/official-docs/docs/user/develop/basic/tool.md +52 -0
  324. package/references/official-docs/docs/user/develop/basic/tool.zh.md +52 -0
  325. package/references/official-docs/docs/user/develop/framework/events.i18n.yaml +6 -0
  326. package/references/official-docs/docs/user/develop/framework/events.md +143 -0
  327. package/references/official-docs/docs/user/develop/framework/events.zh.md +143 -0
  328. package/references/official-docs/docs/user/develop/framework/index.i18n.yaml +6 -0
  329. package/references/official-docs/docs/user/develop/framework/index.md +137 -0
  330. package/references/official-docs/docs/user/develop/framework/index.zh.md +137 -0
  331. package/references/official-docs/docs/user/develop/framework/service.i18n.yaml +6 -0
  332. package/references/official-docs/docs/user/develop/framework/service.md +148 -0
  333. package/references/official-docs/docs/user/develop/framework/service.zh.md +150 -0
  334. package/references/official-docs/docs/user/develop/practice/index.i18n.yaml +6 -0
  335. package/references/official-docs/docs/user/develop/practice/index.md +155 -0
  336. package/references/official-docs/docs/user/develop/practice/index.zh.md +155 -0
  337. package/references/official-docs/docs/user/develop/practice/llm-adapter.i18n.yaml +6 -0
  338. package/references/official-docs/docs/user/develop/practice/llm-adapter.md +188 -0
  339. package/references/official-docs/docs/user/develop/practice/llm-adapter.zh.md +188 -0
  340. package/references/official-docs/docs/user/guide/index.i18n.yaml +6 -0
  341. package/references/official-docs/docs/user/guide/index.md +30 -0
  342. package/references/official-docs/docs/user/guide/index.zh.md +30 -0
  343. package/references/official-docs/docs/user/guide/providers-custom-form.png +0 -0
  344. package/references/official-docs/docs/user/guide/providers-custom-form.zh.png +0 -0
  345. package/references/official-docs/docs/user/guide/providers-models-page.png +0 -0
  346. package/references/official-docs/docs/user/guide/providers-models-page.zh.png +0 -0
  347. package/references/official-docs/docs/user/guide/providers.i18n.yaml +6 -0
  348. package/references/official-docs/docs/user/guide/providers.md +98 -0
  349. package/references/official-docs/docs/user/guide/providers.zh.md +98 -0
  350. package/references/official-docs/docs/user/guide/python-sdk.i18n.yaml +6 -0
  351. package/references/official-docs/docs/user/guide/python-sdk.md +104 -0
  352. package/references/official-docs/docs/user/guide/python-sdk.zh.md +104 -0
  353. package/references/official-docs/docs/user/index.i18n.yaml +6 -0
  354. package/references/official-docs/docs/user/index.md +11 -0
  355. package/references/official-docs/docs/user/index.zh.md +11 -0
  356. package/references/official-docs/docs/web-styling.i18n.yaml +6 -0
  357. package/references/official-docs/docs/web-styling.md +25 -0
  358. package/references/official-docs/docs/web-styling.zh.md +25 -0
  359. package/references/official-docs/examples/AGENTS.md +20 -0
  360. package/references/official-docs/packages/AGENTS.md +27 -0
  361. package/references/official-docs/packages/README.md +69 -0
  362. package/references/official-docs/vendor/README.md +60 -0
  363. package/references/official-docs/website-docs.ts +524 -0
  364. package/references/sources.md +137 -0
  365. package/references/upstream-cordis.md +594 -0
  366. package/references/website-pages.md +668 -0
  367. package/scripts/archive-discussions.ps1 +154 -0
  368. package/scripts/download-community-articles.ps1 +188 -0
  369. package/scripts/download-community-repos.ps1 +232 -0
  370. package/scripts/download-sources.ps1 +195 -0
  371. package/scripts/gen-topic-snapshot.ps1 +91 -0
  372. package/scripts/install-skill.ps1 +63 -0
  373. package/scripts/sync-official-docs.ps1 +130 -0
  374. package/scripts/verify-kit.ps1 +191 -0
@@ -0,0 +1,3152 @@
1
+ <!-- 英文源文件由 scripts/gen-config-catalog.ts 生成;本中文文件是通过双语配对维护的经评审对侧。
2
+ 更新时先运行 `pnpm run gen-config-catalog` 更新英文,再更新本文件并运行 `pnpm run verify-translation-pairing --write docs/config-catalog.md` 重新记录配对。 -->
3
+
4
+ # 插件配置目录
5
+
6
+ [English](config-catalog.md) | 中文
7
+
8
+ 每个 `config:` 块均可由 `cordis.yml` 条目设置:针对每个可加载的 harness 包,原样列出其 `apply` 函数或服务构造函数接收的配置声明(包括 JSDoc),并附上所有引用类型——包内类型直接粘贴,其他类型则提供链接。粘贴的内容是插件声明的完整配置类型——运行时 schema 有意排除的字段是仅供运行时使用的 seam(其自身的 JSDoc 会如此说明),不能通过 `cordis.yml` 设置。这是以**部署**为轴的参考文档——插件作者所依据的连接方式请参阅各[子系统页面](subsystems/core.md)中的生成 `cordis-surface` 区域,面向模型的工具 schema 请参阅[工具目录](tool-catalog.md),而 [subsystems/](subsystems/core.md) 则记录了这些声明所引用的类型。
9
+
10
+ 英文源文件由源代码(`scripts/gen-config-catalog.ts`)生成,并通过 `pnpm run verify-config-catalog`(`doc-sync` 的一部分)验证新鲜度;本中文文件作为经评审对侧通过双语配对维护。声明块使用 `ts config-catalog` 围栏(doc-typecheck 会跳过它,因为单独引用导入项的声明无法独立编译)。英文生成器还会将运行时 schemastery schema 与粘贴的声明进行交叉核对——每个经 schema 验证的键(包括嵌套键)都必须能在声明的配置类型中找到——因此,粘贴内容无法隐藏加载器接受的字段。
11
+
12
+ `Requires:` 行列出插件通过 `inject` 注入的服务键:其 `cordis.yml` 树还必须加载这些服务的提供者。范围限定为 harness 层级(`packages/`);配置树还可能加载的 vendored cordis 插件(`hmr`、控制台日志记录器等)固定为上游源代码(参见 [vendoring policy](../vendor/README.md)),未收录于此目录。
13
+
14
+ <a id="deepseek-aidsh-acp"></a>
15
+
16
+ ## `@deepseek-ai/dsh-acp`
17
+
18
+ 需要:`agents`
19
+
20
+ ```ts config-catalog
21
+ /** Plugin config: the provider/model selection used for each ACP-created agent. */
22
+ export interface AcpConfig {
23
+ /** Provider route for created agents. */
24
+ provider?: string
25
+ /** Model name for created agents. */
26
+ model?: string
27
+ /** Runtime-only transport override; production uses stdio. */
28
+ stream?: Stream
29
+ }
30
+ ```
31
+
32
+ 依赖:`Stream`(`@agentclientprotocol/sdk`)
33
+
34
+ 来源:[`packages/acp/acp/src/index.ts:70`](../packages/acp/acp/src/index.ts)
35
+
36
+ <a id="deepseek-aidsh-acp-demo"></a>
37
+
38
+ ## `@deepseek-ai/dsh-acp-demo`
39
+
40
+ ```ts config-catalog
41
+ /**
42
+ * App config: the swappable per-deployment values. `provider` and `model` configure
43
+ * each agent the ACP bridge creates at `session/new`; `persona` is the
44
+ * deployment persona (forwarded to the system-prompt plugin); `toolOrder` is
45
+ * the explicit model-facing tool order (forwarded to the system-prompt plugin);
46
+ * `tools` is the tool registry's config (its presentation `mode`, forwarded
47
+ * through agent-spine-demo); `persistenceRoot` is the JSONL backend's directory.
48
+ */
49
+ export interface Config {
50
+ /** Provider route for ACP-created agents. */
51
+ provider: string
52
+ /** Model name for ACP-created agents (must have a registered adapter). */
53
+ model: string
54
+ /** Bundled agent-loop concurrency cap; `1` is serial and omission uses its default. */
55
+ maxParallelToolCalls?: number
56
+ /** Deployment persona (the system-prompt plugin's `persona` config). */
57
+ persona?: string
58
+ /** Explicit model-facing tool order (the system-prompt plugin's `toolOrder` config; see dsh-system-prompt). */
59
+ toolOrder?: string[]
60
+ /** Tool-registry config — its presentation `mode` (forwarded through agent-spine-demo; see dsh-tools). */
61
+ tools?: ToolsConfig
62
+ /** DeepSeek Harness home directory exposed to bash and used for local skill discovery. */
63
+ dshHome?: string
64
+ /** Fallback session-title limits forwarded through agent-spine-demo. */
65
+ sessionTitle?: NonNullable<agentCore.Config['sessionTitle']>
66
+ /** Directory for JSONL sessions and the derived query index. Defaults to `./.sessions`. */
67
+ persistenceRoot?: string
68
+ /** Write delta-chunk runs as packed storage rows (the JSONL backend's `packChunks`). Defaults to `true`. */
69
+ packChunks?: boolean
70
+ /** JSONL artifact encoding; defaults to checksummed Zstandard frames. */
71
+ persistenceCompression?: JsonlCompression
72
+ /** Controls automatic AGENTS.md/CLAUDE.md loading; configure a byte budget or set `false`. */
73
+ workspaceContext: agentCore.Config['workspaceContext']
74
+ /** Skill registry, local-provider, and model-facing consumer config forwarded to agent-spine-demo. */
75
+ skills?: agentCore.SkillConfig
76
+ /** Model-facing bash tool config forwarded through agent-core. */
77
+ toolBash?: NonNullable<agentCore.Config['toolBash']>
78
+ /** Process-local background-job admission config forwarded through agent-core. */
79
+ jobs?: NonNullable<agentCore.Config['jobs']>
80
+ /** Generic background-job controls forwarded through agent-core; set false to omit their tools. */
81
+ toolJobs?: NonNullable<agentCore.Config['toolJobs']>
82
+ /** Persisted same-session goals; owner defaults enable them, or false disables the stack and tools. */
83
+ goals?: agentCore.GoalConfig | false
84
+ }
85
+ ```
86
+
87
+ 依赖:[`agentCore`](../packages/examples/agent-spine-demo/src/index.ts) · [`JsonlCompression`](../packages/session/session-persistence-jsonl/src/index.ts) · [`ToolsConfig`](#deepseek-aidsh-tools)
88
+
89
+ 来源:[`packages/examples/acp-demo/src/index.ts:39`](../packages/examples/acp-demo/src/index.ts)
90
+
91
+ <a id="deepseek-aidsh-agent-default-model"></a>
92
+
93
+ ## `@deepseek-ai/dsh-agent-default-model`
94
+
95
+ ```ts config-catalog
96
+ /** Composition entry for the default model selection. */
97
+ export interface Config {
98
+ /** Registered provider route. */
99
+ provider: string
100
+ /** Provider-owned model id. */
101
+ model: string
102
+ }
103
+ ```
104
+
105
+ 来源:[`packages/core/agent-default-model/src/index.ts:41`](../packages/core/agent-default-model/src/index.ts)
106
+
107
+ <a id="deepseek-aidsh-agent-instructions"></a>
108
+
109
+ ## `@deepseek-ai/dsh-agent-instructions`
110
+
111
+ ```ts config-catalog
112
+ /** User-facing workspace instruction loader configuration. */
113
+ export interface Config {
114
+ /** Harness home containing the fixed user-global `AGENTS.md`; defaults to `$DSH_HOME` or `~/.dsh`. */
115
+ dshHome?: string
116
+ /** Directory entries that identify the project root while walking upward from the session cwd. */
117
+ projectRootMarkers?: string[]
118
+ /** UTF-8 byte cap for one rendered baseline or dynamic batch; non-positive or non-finite disables loading. */
119
+ maxBytes: number
120
+ /** Maximum UTF-8 bytes read from one instruction file; larger files are ignored. */
121
+ maxSourceBytes?: number
122
+ /**
123
+ * Ordered same-directory project candidates; every existing file loads, with
124
+ * per-directory trimmed-content duplicates collapsed to the earliest candidate.
125
+ */
126
+ instructionFileCandidates?: string[]
127
+ /**
128
+ * Ordered same-directory local-overlay candidates loaded after the base files
129
+ * under the same per-directory trimmed-content dedup; empty disables the overlay.
130
+ */
131
+ localInstructionFileCandidates?: string[]
132
+ }
133
+ ```
134
+
135
+ 来源:[`packages/context/agent-instructions/src/config.ts:18`](../packages/context/agent-instructions/src/config.ts)
136
+
137
+ <a id="deepseek-aidsh-agent-loop"></a>
138
+
139
+ ## `@deepseek-ai/dsh-agent-loop`
140
+
141
+ 需要:`agents` · `sessions` · `llm` · `tools` · `systemPrompt`
142
+
143
+ ```ts config-catalog
144
+ /** Agent-loop plugin configuration. */
145
+ export interface Config {
146
+ /**
147
+ * Maximum parallel-safe calls in flight per agent step. `1` is serial;
148
+ * omission defaults to {@link DEFAULT_MAX_PARALLEL_TOOL_CALLS}.
149
+ */
150
+ maxParallelToolCalls?: number
151
+ /** Agents created or resumed at plugin startup. */
152
+ agents: (AgentOptions & {
153
+ /** Stable config label used in logs and as the fresh combined-id prefix. */
154
+ id: string
155
+ /** Optional stable identity; remounts resume its materialized history, while first use creates it fresh. */
156
+ sessionId?: SessionId
157
+ /** Optional workspace for a fresh session. */
158
+ cwd?: string
159
+ /** Persisted session to resume instead of creating a fresh session. */
160
+ resumeSessionId?: SessionId
161
+ })[]
162
+ }
163
+ ```
164
+
165
+ 依赖:[`AgentOptions`](subsystems/core.md) · [`SessionId`](subsystems/core.md)
166
+
167
+ 来源:[`packages/core/agent-loop/src/index.ts:255`](../packages/core/agent-loop/src/index.ts)
168
+
169
+ <a id="deepseek-aidsh-agent-presets"></a>
170
+
171
+ ## `@deepseek-ai/dsh-agent-presets`
172
+
173
+ 需要:`loader`
174
+
175
+ ```ts config-catalog
176
+ /** Plugin config: which preset is the default, and where presets live. */
177
+ export interface Config {
178
+ /** Preset id mounted when a caller names none. Missing at mount time fails loud. */
179
+ default: string
180
+ /** Scanned roots in precedence order; an earlier root wins a duplicate id. */
181
+ roots: PresetRoot[]
182
+ /**
183
+ * Append the harness home's `USER_PRESET_DIR` as a `user` root, after every
184
+ * configured root. False mounts a roster over `roots` alone.
185
+ */
186
+ includeUserRoot: boolean
187
+ }
188
+
189
+ /** One directory scanned for preset subdirectories. */
190
+ export interface PresetRoot {
191
+ /** Directory holding one subdirectory per preset; a leading `~` expands. */
192
+ path: string
193
+ /** Trust recorded on every preset discovered under this root. */
194
+ trust: PresetTrust
195
+ }
196
+
197
+ /**
198
+ * Where a preset's composition came from. A `system` preset ships with the
199
+ * deployment; a `user` preset was authored locally, by a person or by an
200
+ * agent, and therefore carries the same trust as shell access.
201
+ */
202
+ export type PresetTrust = 'system' | 'user'
203
+ ```
204
+
205
+ 来源:[`packages/preset/agent-presets/src/preset.ts:52`](../packages/preset/agent-presets/src/preset.ts)
206
+
207
+ <a id="deepseek-aidsh-agent-spine-demo"></a>
208
+
209
+ ## `@deepseek-ai/dsh-agent-spine-demo`
210
+
211
+ ```ts config-catalog
212
+ /**
213
+ * Bundle config: each field forwarded verbatim to the child that owns it —
214
+ * `agents` to the agent loop (an app that pre-creates no agents, like the ACP
215
+ * bridge, simply omits it), `includeHarnessIdentity`, `includeRuntimeContext`,
216
+ * `persona`, and `toolOrder` to the system-prompt plugin (the fixed opener,
217
+ * dynamic-context policy, deployment persona, and explicit model-facing tool
218
+ * order), the `tools` object to the tool registry (its presentation `mode`),
219
+ * `dshHome` to bash environment and local skill discovery, `sessionTitle` to
220
+ * the fallback title service, `skills` to the
221
+ * skill registry/local provider/tool consumer, `workspaceContext` to the
222
+ * agent-instructions loader, `jobs` to the process-local job provider, and
223
+ * `toolBash`/`toolJobs` to the model-facing tool plugins this bundle owns.
224
+ * Provider adapters own their `retryPolicy`; this bundle always mounts its
225
+ * executor.
226
+ * `goals` opts into and configures the persisted goal domain plus its model tool
227
+ * and same-session driver; `invariants` configures global and package-filtered
228
+ * relational checks. Owner schemas supply defaults for optional input;
229
+ * workspace context instead requires an explicit byte budget or `false` because
230
+ * it changes model-visible input. Producer opt-in stays producer-local:
231
+ * `toolBash` configures bash only; independently composed producers keep their
232
+ * own config. Set `toolBash: false` when another plugin owns the model-facing
233
+ * `bash` name.
234
+ */
235
+ export interface Config {
236
+ /** The agent-loop `agents` list (see dsh-agent-loop's `Config`). */
237
+ agents?: AgentLoopConfig['agents']
238
+ /** Agent-loop concurrency cap; `1` is serial. */
239
+ maxParallelToolCalls?: AgentLoopConfig['maxParallelToolCalls']
240
+ /** Whether the system prompt includes the fixed Harness identity (default true). */
241
+ includeHarnessIdentity?: SystemPromptConfig['includeHarnessIdentity']
242
+ /** Whether model history includes dynamic runtime-context snapshots (default true). */
243
+ includeRuntimeContext?: SystemPromptConfig['includeRuntimeContext']
244
+ /** The deployment persona (see dsh-system-prompt's `Config`). */
245
+ persona?: SystemPromptConfig['persona']
246
+ /** The explicit model-facing tool order (see dsh-system-prompt's `Config`). */
247
+ toolOrder?: SystemPromptConfig['toolOrder']
248
+ /** The tool registry's config — its presentation `mode` (see dsh-tools' `Config`). */
249
+ tools?: ToolsConfig
250
+ /** DeepSeek Harness home directory shared by shell context and local skill discovery. */
251
+ dshHome?: string
252
+ /** Deterministic fallback and accepted-title limits; omission uses the bundle's example policy. */
253
+ sessionTitle?: SessionTitleConfig
254
+ /** Workspace-context loader controls with an explicit byte budget; set `false` for hermetic prompts. */
255
+ workspaceContext: workspaceContext.Config | false
256
+ /**
257
+ * Skill registry, local provider, and model-facing consumer config.
258
+ * Skills use `enabled` because one nested config controls a provider stack;
259
+ * single model-tool plugins use `Config | false` to disable that one consumer.
260
+ */
261
+ skills?: SkillConfig
262
+ /** Model-facing bash tool config, or false when another plugin owns `bash`. */
263
+ toolBash?: toolBash.Config | false
264
+ /** Process-local background-job admission config. */
265
+ jobs?: JobsConfig
266
+ /** Generic background-job controls; set false to keep the job service without model-facing job tools. */
267
+ toolJobs?: toolJobs.Config | false
268
+ /** Global enablement and package-name filters for invariant companions. */
269
+ invariants?: InvariantConfig
270
+ /** Opt-in persisted same-session goal stack; set false or omit to leave it unmounted. */
271
+ goals?: GoalConfig | false
272
+ }
273
+
274
+ /** Skill bundle config forwarded to the registry, local provider, and model-facing consumer. */
275
+ export interface SkillConfig {
276
+ /** Mount the bundled local skill provider and model-facing skill tool (default true). */
277
+ enabled?: boolean
278
+ /** Registry-level discovery cache settings. */
279
+ registry?: SkillRegistryConfig
280
+ /** Local filesystem skill provider settings. */
281
+ filesystem?: SkillFileSystem.Config
282
+ /** Model-facing skill catalog and tool settings. */
283
+ tool?: toolSkill.Config
284
+ }
285
+
286
+ /** Persisted goal domain, model-tool policy, and same-session driver config. */
287
+ export interface GoalConfig {
288
+ /** Goal-domain creation defaults. */
289
+ domain?: GoalDomainConfig
290
+ /** Model-facing goal-tool authority policy. */
291
+ tool?: toolGoal.Config
292
+ }
293
+ ```
294
+
295
+ 依赖:[`AgentLoopConfig`](#deepseek-aidsh-agent-loop) · [`GoalDomainConfig`](#deepseek-aidsh-goal) · [`InvariantConfig`](#deepseek-aidsh-invariants) · [`JobsConfig`](#deepseek-aidsh-jobs-local) · [`SessionTitleConfig`](#deepseek-aidsh-session-title) · [`SkillFileSystem`](../packages/skill/skill-filesystem/src/index.ts) · [`SkillRegistryConfig`](#deepseek-aidsh-skill) · [`SystemPromptConfig`](#deepseek-aidsh-system-prompt) · [`toolBash`](../packages/shell/tool-bash/src/index.ts) · [`toolGoal`](../packages/goal/tool-goal/src/index.ts) · [`toolJobs`](../packages/jobs/tool-jobs/src/index.ts) · [`ToolsConfig`](#deepseek-aidsh-tools) · [`toolSkill`](../packages/skill/tool-skill/src/index.ts) · [`workspaceContext`](../packages/context/agent-instructions/src/index.ts)
296
+
297
+ 来源:[`packages/examples/agent-spine-demo/src/index.ts:92`](../packages/examples/agent-spine-demo/src/index.ts)
298
+
299
+ <a id="deepseek-aidsh-agent-tool-presentation"></a>
300
+
301
+ ## `@deepseek-ai/dsh-agent-tool-presentation`
302
+
303
+ 需要:`tools`
304
+
305
+ ```ts config-catalog
306
+ /** Plugin config. */
307
+ export interface Config {
308
+ /**
309
+ * The form this agent's model sees. `native` sends every visible schema,
310
+ * `code` sends only `run_code` plus a generated SDK, `both` sends both.
311
+ * Required rather than defaulted: the deployment default is what a preset
312
+ * without this row already gets, so an omitted value would mean the row was
313
+ * composed for nothing.
314
+ */
315
+ mode: ToolPresentationMode
316
+ }
317
+ ```
318
+
319
+ 依赖:[`ToolPresentationMode`](subsystems/tools.md)
320
+
321
+ 来源:[`packages/core/agent-tool-presentation/src/index.ts:38`](../packages/core/agent-tool-presentation/src/index.ts)
322
+
323
+ <a id="deepseek-aidsh-attachment-local"></a>
324
+
325
+ ## `@deepseek-ai/dsh-attachment-local`
326
+
327
+ ```ts config-catalog
328
+ /** Local attachment backend configuration. */
329
+ export interface Config {
330
+ /** Explicit harness home; omitted follows `DSH_HOME`, then `~/.dsh`. */
331
+ dshHome?: string
332
+ /** Maximum encoded bytes accepted for one image. */
333
+ maxImageBytes?: number
334
+ /** Maximum image count accepted in one submitted message. */
335
+ maxImagesPerMessage?: number
336
+ /** Maximum aggregate encoded image bytes accepted in one submitted message. */
337
+ maxMessageImageBytes?: number
338
+ /** Maximum intrinsic width multiplied by height accepted for one image. */
339
+ maxImagePixels?: number
340
+ }
341
+ ```
342
+
343
+ 来源:[`packages/attachment/attachment-local/src/index.ts:24`](../packages/attachment/attachment-local/src/index.ts)
344
+
345
+ <a id="deepseek-aidsh-bash-local"></a>
346
+
347
+ ## `@deepseek-ai/dsh-bash-local`
348
+
349
+ 需要:`subprocess`
350
+
351
+ ```ts config-catalog
352
+ /** Plugin config (all optional — `static Config` supplies the defaults). */
353
+ export interface Config {
354
+ /** Default working directory for commands (default: process.cwd()). */
355
+ cwd?: string
356
+ /** Default foreground timeout in milliseconds. */
357
+ timeoutMs?: number
358
+ /** Upper bound for per-call timeout overrides. */
359
+ maxTimeoutMs?: number
360
+ /** Per-stream in-memory output cap; overflow spills to a temp file. */
361
+ maxOutputBytes?: number
362
+ /** Per-stream spill-file cap; larger streams retain only their in-memory tail. */
363
+ maxSpillBytes?: number
364
+ /** Grace period for kill escalation and inherited pipes; at most `MAX_TIMER_DELAY_MS`. */
365
+ graceMs?: number
366
+ }
367
+ ```
368
+
369
+ 来源:[`packages/shell/bash-local/src/index.ts:41`](../packages/shell/bash-local/src/index.ts)
370
+
371
+ <a id="deepseek-aidsh-bash-sandbox"></a>
372
+
373
+ ## `@deepseek-ai/dsh-bash-sandbox`
374
+
375
+ 需要:`subprocess` · `sandbox` · `sandboxPolicy`
376
+
377
+ ```ts config-catalog
378
+ /**
379
+ * Plugin config: the local executor's knobs, verbatim. The sandbox policy —
380
+ * the default mode and fallback `workspace-write` root — is NOT here: it lives
381
+ * on `ctx.sandboxPolicy` (`@deepseek-ai/dsh-sandbox-policy`), which resolves
382
+ * each calling session's mode and cwd for every enforcing capability. The runner
383
+ * choice is likewise the `ctx.sandbox` provider's config, not this executor's.
384
+ */
385
+ export type Config = LocalConfig
386
+ ```
387
+
388
+ 依赖:[`LocalConfig`](#deepseek-aidsh-bash-local)
389
+
390
+ 来源:[`packages/shell/bash-sandbox/src/index.ts:35`](../packages/shell/bash-sandbox/src/index.ts)
391
+
392
+ <a id="deepseek-aidsh-client-connection"></a>
393
+
394
+ ## `@deepseek-ai/dsh-client-connection`
395
+
396
+ 需要:`webServer`
397
+
398
+ ```ts config-catalog
399
+ /** Plugin config: the deployment's non-loopback serving authorities. */
400
+ export interface ConnectionConfig {
401
+ /**
402
+ * Authorities this deployment serves beyond loopback: exact `host:port`, or
403
+ * port-less `host` matching any port. The /api trust fence refuses any
404
+ * request whose Host is neither loopback nor listed here, so a
405
+ * non-loopback (`0.0.0.0`) deployment must declare the names it is reached
406
+ * by (the dsh CLI derives the machine's LAN IP literals itself). An entry
407
+ * that is not a bare, canonical authority fails the plugin load.
408
+ */
409
+ trustedHosts?: string[]
410
+ /** Maximum buffered JSON body for every `/api` request. */
411
+ maxRequestBodyBytes?: number
412
+ }
413
+ ```
414
+
415
+ 来源:[`packages/client/connection/src/index.ts:50`](../packages/client/connection/src/index.ts)
416
+
417
+ <a id="deepseek-aidsh-client-hmr"></a>
418
+
419
+ ## `@deepseek-ai/dsh-client-hmr`
420
+
421
+ 需要:`clientModuleHost` · `webServer`
422
+
423
+ ```ts config-catalog
424
+ /** Plugin config, validated by the same-named schemastery schema. */
425
+ export interface Config {
426
+ /** Bundle stat-poll interval in milliseconds (default 500, the build-side watcher's polling default). */
427
+ pollIntervalMs?: number
428
+ }
429
+ ```
430
+
431
+ 来源:[`packages/client/hmr/src/index.ts:31`](../packages/client/hmr/src/index.ts)
432
+
433
+ <a id="deepseek-aidsh-code-runtime-worker-thread"></a>
434
+
435
+ ## `@deepseek-ai/dsh-code-runtime-worker-thread`
436
+
437
+ ```ts config-catalog
438
+ /** Plugin config: every execution cap, changeable from `cordis.yml` (no hardcoded tunables). */
439
+ export interface Config {
440
+ /**
441
+ * Busy-time budget in milliseconds: the run fails with kind `'timeout'`
442
+ * once the worker's MEASURED event-loop active time
443
+ * (`worker.performance.eventLoopUtilization()`) exceeds this. Metering
444
+ * measured busy time — not wall time, not host-side pending-call
445
+ * bookkeeping — is what makes the budget both fair (a program awaiting a
446
+ * slow tool accrues nothing) and ungameable (a hot loop accrues whether
447
+ * or not a decoy dispatch is in flight).
448
+ */
449
+ computeMs?: number
450
+ /**
451
+ * Wall-clock ceiling in milliseconds; never pauses for anything. The
452
+ * backstop for what busy-time cannot see (a program awaiting a promise
453
+ * nobody will resolve). At most `2_147_483_647` (Node's maximum
454
+ * `setTimeout` delay, about 24.9 days): a longer value is rejected at load
455
+ * because `setTimeout` would clamp it to 1 ms.
456
+ */
457
+ maxWallMs?: number
458
+ /**
459
+ * Hard cap for serialized log-array, completion-value, and failure-message payloads;
460
+ * fixed result-envelope syntax is excluded.
461
+ */
462
+ maxOutputBytes?: number
463
+ /** The worker's max old-generation heap in MiB (`resourceLimits`); overflow kills the worker, surfacing as kind `'worker-exit'`. */
464
+ maxOldGenerationSizeMb?: number
465
+ }
466
+ ```
467
+
468
+ 来源:[`packages/code-runtime/code-runtime-worker-thread/src/index.ts:25`](../packages/code-runtime/code-runtime-worker-thread/src/index.ts)
469
+
470
+ <a id="deepseek-aidsh-compaction-basic"></a>
471
+
472
+ ## `@deepseek-ai/dsh-compaction-basic`
473
+
474
+ 需要:`llm` · `tokenMeter` · `sessions`
475
+
476
+ ```ts config-catalog
477
+ /** Basic compaction configuration with an optional exact-target policy table. */
478
+ export interface BasicCompactionConfig extends CompactionPolicyConfig {
479
+ /** Exact provider/model overrides; duplicate targets fail plugin load. */
480
+ modelPolicies?: ModelCompactPolicyConfig[]
481
+ /** Enable automatic step-boundary pressure and overflow-recovery listeners. Defaults to `true`. */
482
+ auto?: boolean
483
+ }
484
+
485
+ /** Policy fields shared by the default policy and exact model overrides. */
486
+ export interface CompactionPolicyConfig {
487
+ /** Compact at this fraction of the model's context window. Defaults to `0.8`. */
488
+ thresholdRatio?: number
489
+ /** Recent context retained as a fraction of the model's window. Defaults to `0.16`. */
490
+ retainRatio?: number
491
+ /** Absolute recent-context budget; mutually exclusive with `retainRatio`. */
492
+ retainTokens?: number
493
+ /** Summary provider; set together with `summarizationModel`, or inherit the conversation target. */
494
+ summarizationProvider?: string
495
+ /** Summary model; set together with `summarizationProvider`, or inherit the conversation target. */
496
+ summarizationModel?: string
497
+ /** Provider generation cap for summarization. Defaults to `8192`. */
498
+ maxTokens?: number
499
+ /** Extra attempts after the first compaction when pressure remains above threshold. Defaults to `1`. */
500
+ compactionRetries?: number
501
+ /** Maximum retries after canonical context overflow; `0` disables recovery. Defaults to `1`. */
502
+ maxOverflowRetries?: number
503
+ }
504
+
505
+ /** Exact provider/model override merged over the default compaction policy. */
506
+ export interface ModelCompactPolicyConfig extends CompactionPolicyConfig {
507
+ /** Registered provider route to match. */
508
+ provider: string
509
+ /** Exact routed model id to match within `provider`. */
510
+ model: string
511
+ }
512
+ ```
513
+
514
+ 来源:[`packages/compaction/compaction-basic/src/types.ts:38`](../packages/compaction/compaction-basic/src/types.ts)
515
+
516
+ <a id="deepseek-aidsh-compaction-tool-result-pruner"></a>
517
+
518
+ ## `@deepseek-ai/dsh-compaction-tool-result-pruner`
519
+
520
+ 需要:`tokenMeter`
521
+
522
+ ```ts config-catalog
523
+ /** Character-budget policy for deterministic tool-result pruning. */
524
+ export interface ToolResultPruneConfig {
525
+ /** Prune when total text exceeds this many Unicode code points. Defaults to `8192`. */
526
+ thresholdChars?: number
527
+ /** Maximum leading Unicode code points retained. Defaults to `4096`. */
528
+ headChars?: number
529
+ /** Maximum trailing Unicode code points retained. Defaults to `1024`. */
530
+ tailChars?: number
531
+ }
532
+ ```
533
+
534
+ 来源:[`packages/compaction/compaction-tool-result-pruner/src/types.ts:4`](../packages/compaction/compaction-tool-result-pruner/src/types.ts)
535
+
536
+ <a id="deepseek-aidsh-cordis-host-runner"></a>
537
+
538
+ ## `@deepseek-ai/dsh-cordis-host-runner`
539
+
540
+ 需要:`tools`
541
+
542
+ ```ts config-catalog
543
+ /** Runner configuration. */
544
+ export interface Config {
545
+ /** Maximum synchronous VM evaluation time in milliseconds. */
546
+ vmTimeoutMs?: number
547
+ }
548
+ ```
549
+
550
+ 来源:[`packages/extensions/cordis-host-runner/src/index.ts:88`](../packages/extensions/cordis-host-runner/src/index.ts)
551
+
552
+ <a id="deepseek-aidsh-credentials-local"></a>
553
+
554
+ ## `@deepseek-ai/dsh-credentials-local`
555
+
556
+ ```ts config-catalog
557
+ /** Plugin config: file location and hot-reload behavior. */
558
+ export interface Config {
559
+ /** Credentials document path; defaults to `.credentials.yaml` under the harness home. */
560
+ path?: string
561
+ /** Harness home used when `path` is omitted; defaults to `$DSH_HOME` or `~/.dsh`. */
562
+ dshHome?: string
563
+ /** Watch the document and hot-publish external edits; defaults to true. */
564
+ watch?: boolean
565
+ /** Watcher write-settle window in milliseconds; defaults to 100. */
566
+ debounceMs?: number
567
+ }
568
+ ```
569
+
570
+ 来源:[`packages/credentials/credentials-local/src/index.ts:55`](../packages/credentials/credentials-local/src/index.ts)
571
+
572
+ <a id="deepseek-aidsh-e2b"></a>
573
+
574
+ ## `@deepseek-ai/dsh-e2b`
575
+
576
+ ```ts config-catalog
577
+ /** Configuration for the shared E2B sandbox owner. */
578
+ export interface Config {
579
+ /** API key; omission reads `E2B_API_KEY`. It is never forwarded into the sandbox. */
580
+ apiKey?: string
581
+ /** Shared remote working directory, created before adapters receive the sandbox. */
582
+ cwd?: string
583
+ /** E2B sandbox lifetime in milliseconds; expiry always deletes the sandbox. */
584
+ timeoutMs?: number
585
+ }
586
+ ```
587
+
588
+ 来源:[`packages/e2b/e2b/src/index.ts:43`](../packages/e2b/e2b/src/index.ts)
589
+
590
+ <a id="deepseek-aidsh-fs-local"></a>
591
+
592
+ ## `@deepseek-ai/dsh-fs-local`
593
+
594
+ ```ts config-catalog
595
+ /** Configuration for the local filesystem backend. */
596
+ export interface Config {
597
+ /** Base directory for relative paths. Defaults to `process.cwd()`. */
598
+ cwd?: string
599
+ /**
600
+ * Exclusive UTF-8 byte limit on each overwrite-diff side, capped by the
601
+ * runtime's safe allocation/decode maximum. Defaults to 10 MiB.
602
+ */
603
+ diffBasisMaxBytes?: number
604
+ }
605
+ ```
606
+
607
+ 来源:[`packages/fs/fs-local/src/index.ts:41`](../packages/fs/fs-local/src/index.ts)
608
+
609
+ <a id="deepseek-aidsh-fs-sandbox"></a>
610
+
611
+ ## `@deepseek-ai/dsh-fs-sandbox`
612
+
613
+ 需要:`sandboxPolicy`
614
+
615
+ ```ts config-catalog
616
+ /**
617
+ * Plugin config: the local backend's knobs verbatim (`cwd` resolution default
618
+ * and `diffBasisMaxBytes` overwrite-presentation bound). The sandbox default
619
+ * (mode + `workspace-write` fallback root) is NOT here — `ctx.sandboxPolicy`
620
+ * resolves each calling session for every enforcing capability.
621
+ */
622
+ export type Config = LocalConfig
623
+ ```
624
+
625
+ 依赖:[`LocalConfig`](#deepseek-aidsh-fs-local)
626
+
627
+ 来源:[`packages/fs/fs-sandbox/src/index.ts:49`](../packages/fs/fs-sandbox/src/index.ts)
628
+
629
+ <a id="deepseek-aidsh-goal"></a>
630
+
631
+ ## `@deepseek-ai/dsh-goal`
632
+
633
+ 需要:`agents`
634
+
635
+ ```ts config-catalog
636
+ /** Deployment defaults for goal creation. */
637
+ export interface Config {
638
+ /** Total rounds used when a create request omits its own cap. */
639
+ defaultMaxGoalRounds?: number
640
+ }
641
+ ```
642
+
643
+ 来源:[`packages/goal/goal/src/index.ts:116`](../packages/goal/goal/src/index.ts)
644
+
645
+ <a id="deepseek-aidsh-headless"></a>
646
+
647
+ ## `@deepseek-ai/dsh-headless`
648
+
649
+ 需要:`agentDefaultModel` · `agents` · `sessions`
650
+
651
+ ```ts config-catalog
652
+ /** Plugin config: the task resolved from this app's injected provider service. */
653
+ export interface Config {
654
+ /** The prompt text for the single run. */
655
+ task: string
656
+ }
657
+ ```
658
+
659
+ 来源:[`packages/bundle/headless/src/index.ts:31`](../packages/bundle/headless/src/index.ts)
660
+
661
+ <a id="deepseek-aidsh-hooks-claude-code"></a>
662
+
663
+ ## `@deepseek-ai/dsh-hooks-claude-code`
664
+
665
+ 需要:`bash`
666
+
667
+ ```ts config-catalog
668
+ /** Plugin config: where the CC hook config lives + substitution roots. */
669
+ export interface Config {
670
+ /**
671
+ * Path to a `hooks.json` or a settings file whose `hooks` key holds the config.
672
+ * Process-level: read once at load, a relative path resolves against the process
673
+ * launch cwd, so one config applies to the whole process.
674
+ * TODO(per-session-hook-config): per-session discovery of a project-local
675
+ * `hooks.json` from each `session/new.cwd`.
676
+ */
677
+ configPath: string
678
+ /**
679
+ * Replaces `${CLAUDE_PLUGIN_ROOT}` in command strings (the plugin's root dir).
680
+ */
681
+ pluginRoot?: string
682
+ /**
683
+ * Replaces `${CLAUDE_PROJECT_DIR}` in command strings AND is exported as the
684
+ * `CLAUDE_PROJECT_DIR` env var for hook processes. When omitted, the env var
685
+ * defaults per-run to the agent's session workspace (`session.header.cwd`, the
686
+ * same dir the hook runs in) — Claude Code always exports this var, and common
687
+ * unmodified hooks reference `$CLAUDE_PROJECT_DIR` for project-relative paths.
688
+ */
689
+ projectDir?: string
690
+ /** Default per-hook timeout in ms when a hook sets none (CC default: 600000). */
691
+ defaultTimeoutMs?: number
692
+ /** Character cap for the `hook/result` event's persisted stderr summary. */
693
+ stderrSummaryMaxChars?: number
694
+ }
695
+ ```
696
+
697
+ 来源:[`packages/hooks/hooks-claude-code/src/index.ts:45`](../packages/hooks/hooks-claude-code/src/index.ts)
698
+
699
+ <a id="deepseek-aidsh-hooks-codex"></a>
700
+
701
+ ## `@deepseek-ai/dsh-hooks-codex`
702
+
703
+ 需要:`bash`
704
+
705
+ ```ts config-catalog
706
+ /** Plugin config: where the Codex hooks.json lives + the model name for payloads. */
707
+ export interface Config {
708
+ /**
709
+ * Path to a Codex `hooks.json`. Process-level: read once at load, a relative
710
+ * path resolves against the process launch cwd.
711
+ * TODO(per-session-hook-config): per-session project-local discovery from each
712
+ * `session/new.cwd`.
713
+ */
714
+ configPath: string
715
+ /** The model name stamped on every payload (Codex includes `model` on each event). */
716
+ model?: string
717
+ /** Default per-hook timeout in ms when a hook sets none (Codex default: 600000). */
718
+ defaultTimeoutMs?: number
719
+ /** Character cap for the `hook/result` event's persisted stderr summary. */
720
+ stderrSummaryMaxChars?: number
721
+ }
722
+ ```
723
+
724
+ 来源:[`packages/hooks/hooks-codex/src/index.ts:44`](../packages/hooks/hooks-codex/src/index.ts)
725
+
726
+ <a id="deepseek-aidsh-host-apiproxy"></a>
727
+
728
+ ## `@deepseek-ai/dsh-host-apiproxy`
729
+
730
+ 需要:`agentDefaultModel` · `agents` · `attachments` · `directoryPicker` · `llm` · `sessions` · `subagents` · `sessionQuery` · `tools` · `userInteraction` · `workspace`
731
+
732
+ ```ts config-catalog
733
+ /** Gateway plugin configuration. */
734
+ export interface Config {
735
+ /**
736
+ * Whether this deployment can hand paths to a native desktop opener —
737
+ * the `hasDocument` capability the agent-preset roster reports. Absent,
738
+ * the platform is asked (macOS/Windows/WSL yes; Linux only with a display
739
+ * server); set it explicitly where detection misleads, e.g. `false` in a
740
+ * container whose DISPLAY points nowhere a user can see.
741
+ */
742
+ nativeOpen?: boolean
743
+ /**
744
+ * DEFLATE level for every session-log ZIP entry: `0` stores without
745
+ * compression, `1` favors CPU/latency, and `9` favors archive size.
746
+ * @default 6
747
+ */
748
+ sessionExportCompressionLevel?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
749
+ /**
750
+ * Maximum physical size of a cold Session artifact eligible for blankness
751
+ * verification. Zero disables probes.
752
+ * @default 1024
753
+ */
754
+ coldBlankProbeMaxBytes?: number
755
+ }
756
+ ```
757
+
758
+ 来源:[`packages/host/apiproxy/src/index.ts:41`](../packages/host/apiproxy/src/index.ts)
759
+
760
+ <a id="deepseek-aidsh-host-directory-picker-browse"></a>
761
+
762
+ ## `@deepseek-ai/dsh-host-directory-picker-browse`
763
+
764
+ ```ts config-catalog
765
+ /** Validated plugin configuration. */
766
+ export interface Config {
767
+ /** Complete-result bound of one listing level; see {@link BrowseDirectoryPicker.Config}. */
768
+ maxEntries: number
769
+ }
770
+ ```
771
+
772
+ 来源:[`packages/host/directory-picker-browse/src/index.ts:181`](../packages/host/directory-picker-browse/src/index.ts)
773
+
774
+ <a id="deepseek-aidsh-host-frontend-static"></a>
775
+
776
+ ## `@deepseek-ai/dsh-host-frontend-static`
777
+
778
+ 需要:`webServer`
779
+
780
+ ```ts config-catalog
781
+ /** Plugin config: the dist anchor. */
782
+ export interface Config {
783
+ /** Absolute path of index.html inside the dist root. */
784
+ distIndex: string
785
+ }
786
+ ```
787
+
788
+ 来源:[`packages/host/frontend-static/src/index.ts:28`](../packages/host/frontend-static/src/index.ts)
789
+
790
+ <a id="deepseek-aidsh-host-webserver"></a>
791
+
792
+ ## `@deepseek-ai/dsh-host-webserver`
793
+
794
+ ```ts config-catalog
795
+ /** Gateway config: the listen address. */
796
+ export interface Config {
797
+ /** Listen host; the two supported values are loopback and all-interfaces. */
798
+ host: '127.0.0.1' | '0.0.0.0'
799
+ /** Listen port; zero requests an OS-assigned port. */
800
+ port: number
801
+ }
802
+ ```
803
+
804
+ 来源:[`packages/host/webserver/src/index.ts:45`](../packages/host/webserver/src/index.ts)
805
+
806
+ <a id="deepseek-aidsh-invariants"></a>
807
+
808
+ ## `@deepseek-ai/dsh-invariants`
809
+
810
+ ```ts config-catalog
811
+ /** Runtime invariant selection configured on the service plugin. */
812
+ export interface Config {
813
+ /** Global switch; defaults to `true`. */
814
+ readonly enabled?: boolean
815
+ /** Case-sensitive JavaScript regex sources that admit package names; empty admits all. */
816
+ readonly package_allowlist?: string[]
817
+ /** Case-sensitive JavaScript regex sources that exclude package names after allowlist matching. */
818
+ readonly package_blocklist?: string[]
819
+ }
820
+ ```
821
+
822
+ 来源:[`packages/runtime-diagnostics/invariants/src/index.ts:15`](../packages/runtime-diagnostics/invariants/src/index.ts)
823
+
824
+ <a id="deepseek-aidsh-jobs-local"></a>
825
+
826
+ ## `@deepseek-ai/dsh-jobs-local`
827
+
828
+ ```ts config-catalog
829
+ /** Configuration for the process-local job registry. */
830
+ export interface Config {
831
+ /**
832
+ * Maximum `running` plus `stopping` jobs per exact owner or in the shared unowned bucket;
833
+ * omission defaults to 10.
834
+ */
835
+ maxConcurrentJobsPerOwner?: number
836
+ }
837
+ ```
838
+
839
+ 来源:[`packages/jobs/jobs-local/src/index.ts:31`](../packages/jobs/jobs-local/src/index.ts)
840
+
841
+ <a id="deepseek-aidsh-llm-deepseek"></a>
842
+
843
+ ## `@deepseek-ai/dsh-llm-deepseek`
844
+
845
+ 需要:`llm`
846
+
847
+ ```ts config-catalog
848
+ /**
849
+ * Plugin config, validated by the same-named schemastery schema and doubling
850
+ * as the `llm-deepseek` settings-section shape. Every field is optional in
851
+ * yml: a missing API key resolves through {@link Config.apiKeyEnv} at each
852
+ * request (a request without any key fails with `MISSING_CREDENTIAL`, not at
853
+ * plugin load), omitted thinking mode uses the provider default, and omitted
854
+ * reasoning effort resolves to `high`.
855
+ */
856
+ export interface Config {
857
+ /** Credential reference (environment-variable name) resolved per request; defaults to `DEEPSEEK_API_KEY`. */
858
+ apiKeyEnv?: string
859
+ /** Endpoint base; falls back to $DEEPSEEK_BASE_URL from a trusted environment layer, then the public API. */
860
+ baseURL?: string
861
+ /** Deployment thinking policy; `disabled` limits every conversation request to `off`. */
862
+ thinking?: 'enabled' | 'disabled'
863
+ /** Default thinking effort (default `high`); `off` disables thinking per request. */
864
+ reasoningEffort?: 'off' | 'high' | 'max'
865
+ /** Default per-request output cap (default 256,000); a model's own cap and explicit request values win. */
866
+ maxTokens?: number
867
+ /** Positive context capacity used when the selected model has no exact value (default 1,000,000). */
868
+ defaultContextWindow?: number
869
+ /** Advisory models shown by discovery consumers; defaults to V4 Flash and V4 Pro. */
870
+ models?: DeepSeekCatalogModel[]
871
+ /** Maximum provider idle time while one stream read is outstanding (default five minutes). */
872
+ streamIdleTimeoutMs?: number
873
+ /** Provider-owned model-request retry policy; omission uses normal defaults. */
874
+ retryPolicy?: RetryPolicyConfig
875
+ }
876
+
877
+ /** One optional model entry advertised by the direct-fetch adapter. */
878
+ export interface DeepSeekCatalogModel {
879
+ /** Wire model id accepted by the configured endpoint. */
880
+ id: string
881
+ /** Selector label; defaults to {@link id}. */
882
+ name?: string
883
+ /** Optional selector detail for deployments with similar model variants. */
884
+ description?: string
885
+ /** Known combined request/response context capacity; omitted when deployment metadata is unavailable. */
886
+ contextWindow?: number
887
+ /** Per-request output cap for this model; omission falls back to the profile's {@link DeepSeekConnectionOptions.maxTokens}. */
888
+ maxTokens?: number
889
+ }
890
+ ```
891
+
892
+ 依赖:[`RetryPolicyConfig`](../packages/llm/llm/src/index.ts)
893
+
894
+ 来源:[`packages/llm/llm-deepseek/src/index.ts:62`](../packages/llm/llm-deepseek/src/index.ts)
895
+
896
+ <a id="deepseek-aidsh-llm-pi-ai"></a>
897
+
898
+ ## `@deepseek-ai/dsh-llm-pi-ai`
899
+
900
+ 需要:`llm`
901
+
902
+ ```ts config-catalog
903
+ /** Plugin configuration: the provider routes this instance owns. */
904
+ export interface Config {
905
+ /**
906
+ * pi-ai provider routes, keyed by provider. An empty (or omitted) dict is
907
+ * the dormant settings-driven posture: the adapter mounts with no routes
908
+ * and registers them the moment a settings section supplies profiles.
909
+ */
910
+ providers?: Record<string, PiAiProviderProfile>
911
+ }
912
+
913
+ /** Configuration for one pi-ai provider route; the `providers` dict key IS the route. */
914
+ export interface PiAiProviderProfile {
915
+ /** Credential reference (environment-variable name) resolved per request through `ctx.credentials`. */
916
+ apiKeyEnv?: string
917
+ /** Name shown by configuration surfaces; defaults to the route key. */
918
+ displayName?: string
919
+ /**
920
+ * Wire protocol every model on this route speaks. Omission keeps each
921
+ * installed catalog model's own protocol, which is why a catalog route needs
922
+ * no protocol at all; a route the catalog does not ship must name one.
923
+ */
924
+ api?: string
925
+ /** Endpoint for this route's models; defaults to the installed catalog's endpoint. */
926
+ baseURL?: string
927
+ /**
928
+ * This route's model catalog. Omission serves the installed catalog for the
929
+ * route unchanged; an explicit list replaces it, each entry defaulting its
930
+ * unset fields from the installed model of the same id.
931
+ */
932
+ models?: PiAiModelProfile[]
933
+ /**
934
+ * Installed-catalog customizations by model id: each entry reshapes that
935
+ * one model with the same fields a {@link models} entry takes, while the
936
+ * rest of the catalog keeps serving untouched. Only meaningful on a catalog
937
+ * route with no `models` list — `models` already replaces the catalog, so
938
+ * an override beside it, on a route the catalog does not ship, or naming a
939
+ * model the catalog does not describe is refused rather than skipped.
940
+ */
941
+ modelOverrides?: Record<string, PiAiModelOverride>
942
+ /**
943
+ * Reasoning-dispatch switches for every `openai-completions` model on this
944
+ * route; each model's own `compat` overrides per field. What neither sets
945
+ * keeps the installed catalog entry's value, then pi-ai's baseURL-derived
946
+ * detection.
947
+ */
948
+ compat?: PiAiCompatProfile
949
+ /**
950
+ * Context capacity for a model this route lists that neither the entry nor
951
+ * the installed catalog sizes (default 262,144). A guess by construction, so
952
+ * a deployment whose gateway serves smaller models corrects it here.
953
+ */
954
+ defaultContextWindow?: number
955
+ /**
956
+ * Output capability for a model this route lists that neither the entry nor
957
+ * the installed catalog sizes (default 32,768). This sizes the model; it
958
+ * never becomes a per-request cap on its own.
959
+ */
960
+ defaultMaxTokens?: number
961
+ /**
962
+ * Request modalities for a model this route lists that neither its entry's
963
+ * {@link PiAiModelProfile.input} nor the installed catalog declares (default
964
+ * `[text]`). A fallback like the capacities above, not an override: a
965
+ * catalog model keeps the modalities the catalog records for it, and this
966
+ * value never narrows one. A gateway serving vision models the catalog does
967
+ * not describe declares `[text, image]` once here instead of on every entry.
968
+ * Unlike an entry's list, this one may not be empty — nothing sits below it
969
+ * to answer instead.
970
+ */
971
+ defaultInput?: PiAiModality[]
972
+ /** Provider request headers; Harness attribution wins reserved names. */
973
+ headers?: Record<string, string>
974
+ /** Provider-neutral pi-ai reasoning level. */
975
+ reasoning?: ModelThinkingLevel
976
+ /** Token budgets used by reasoning providers that support them. */
977
+ thinkingBudgets?: ThinkingBudgets
978
+ /** Prompt-cache retention preference. */
979
+ cacheRetention?: CacheRetention
980
+ /** Streaming transport preference. */
981
+ transport?: Transport
982
+ /** HTTP/provider SDK timeout in milliseconds. */
983
+ timeoutMs?: number
984
+ /** WebSocket connection timeout in milliseconds. */
985
+ websocketConnectTimeoutMs?: number
986
+ /** Maximum provider idle time while one stream read is outstanding. */
987
+ streamIdleTimeoutMs?: number
988
+ /** Provider-owned model-request retry policy; omission uses normal defaults. */
989
+ retryPolicy?: RetryPolicyConfig
990
+ }
991
+
992
+ /** One configured model entry: an id plus the catalog fields it overrides. */
993
+ export interface PiAiModelProfile {
994
+ /** Model id sent to the provider and accepted by {@link GenerateOptions.model}. */
995
+ id: string
996
+ /** Display name for selectors; defaults to the catalog name, then the id. */
997
+ name?: string
998
+ /** Maximum combined request and response context in tokens. */
999
+ contextWindow?: number
1000
+ /**
1001
+ * Maximum output tokens. Configuring one also makes it this model's
1002
+ * per-request default; a value inherited from the installed catalog, or the
1003
+ * route's fallback, is the model's capability and never becomes a request
1004
+ * default on its own.
1005
+ */
1006
+ maxTokens?: number
1007
+ /**
1008
+ * Request modalities this model accepts. Absent — or empty, which describes
1009
+ * a model that accepts nothing and so states no answer either — keeps the
1010
+ * installed catalog entry's modalities, then the route's `defaultInput`.
1011
+ * Declaring images is what makes a hand-declared vision model usable, and
1012
+ * declaring text alone corrects a catalog model whose gateway does not serve
1013
+ * what the catalog records. This is a claim about the endpoint, not a check
1014
+ * of it: nothing interrogates a gateway for what it accepts, so a model
1015
+ * claiming images its endpoint refuses is refused by the provider instead,
1016
+ * mid-turn.
1017
+ */
1018
+ input?: PiAiModality[]
1019
+ /**
1020
+ * Selectable reasoning efforts. Absent inherits the installed catalog
1021
+ * entry's capability (a hand-declared model has none and does not reason);
1022
+ * `false` declares a non-reasoning model, which is how a profile strips
1023
+ * reasoning from a catalog model its gateway cannot serve; a non-empty dict
1024
+ * declares the offered levels and their wire spellings.
1025
+ */
1026
+ reasoningEfforts?: false | PiAiReasoningEfforts
1027
+ /** Reasoning-dispatch switches for this model, winning over the route's. */
1028
+ compat?: PiAiCompatProfile
1029
+ }
1030
+
1031
+ /**
1032
+ * Customization of one installed catalog model, keyed by its id in the
1033
+ * route's `modelOverrides` dict — the same fields a `models` entry may set,
1034
+ * with the id living in the key. Unlike a `models` list, overrides leave the
1035
+ * rest of the catalog serving untouched, which is what makes "correct one
1036
+ * model, keep the other thirty-seven" a three-line edit.
1037
+ */
1038
+ export type PiAiModelOverride = Omit<PiAiModelProfile, 'id'>
1039
+
1040
+ /**
1041
+ * Reasoning-dispatch compatibility switches, set on the route (its models'
1042
+ * default) or per model (winning over the route). Only the switches pi-ai's
1043
+ * reasoning dispatch reads are offered; the rest of pi-ai's compat surface
1044
+ * keeps its baseURL-derived auto-detection. pi-ai types both fields only on
1045
+ * `OpenAICompletionsCompat` — the other wire protocols define their reasoning
1046
+ * fields in the protocol itself — so resolution rejects a model-level switch
1047
+ * anywhere else, while a route-level default skips past models it cannot fit.
1048
+ */
1049
+ export interface PiAiCompatProfile {
1050
+ /** Reasoning parameter format the endpoint expects; absent keeps the catalog entry's, then pi-ai's baseURL-derived guess. */
1051
+ thinkingFormat?: PiAiThinkingFormat
1052
+ /** Whether the endpoint accepts `reasoning_effort`; absent keeps the catalog entry's, then pi-ai's baseURL-derived guess. */
1053
+ supportsReasoningEffort?: boolean
1054
+ }
1055
+
1056
+ /** One request modality a pi-ai model may accept. */
1057
+ export type PiAiModality = Model<Api>['input'][number]
1058
+
1059
+ /**
1060
+ * Selectable reasoning efforts for one model: each key is a level the model
1061
+ * offers (and selectors show), and its value is the wire spelling dispatch
1062
+ * sends for it. `off` alone may leave its value empty — "supported, send
1063
+ * nothing" — because for most providers not thinking is the parameter's
1064
+ * absence; every other declared level must name a wire value. A level absent
1065
+ * from the dict is not offered.
1066
+ */
1067
+ export type PiAiReasoningEfforts = Partial<Record<ModelThinkingLevel, string | null>>
1068
+
1069
+ /** One reasoning-dispatch wire format a profile may name. */
1070
+ export type PiAiThinkingFormat = Exclude<PiThinkingFormat, WithheldThinkingFormat>
1071
+
1072
+ /** The `compat.thinkingFormat` spellings pi-ai accepts on an `openai-completions` model. */
1073
+ type PiThinkingFormat = NonNullable<OpenAICompletionsCompat['thinkingFormat']>
1074
+
1075
+ /**
1076
+ * pi-ai thinking formats a profile cannot name: both drive the request through
1077
+ * `chatTemplateKwargs`, which this configuration does not expose.
1078
+ */
1079
+ type WithheldThinkingFormat = 'chat-template' | 'qwen-chat-template'
1080
+ ```
1081
+
1082
+ 依赖:`Api`(`@earendil-works/pi-ai`)· `CacheRetention`(`@earendil-works/pi-ai`)· `Model`(`@earendil-works/pi-ai`)· `ModelThinkingLevel`(`@earendil-works/pi-ai`)· `OpenAICompletionsCompat`(`@earendil-works/pi-ai`)· [`RetryPolicyConfig`](../packages/llm/llm/src/index.ts) · `ThinkingBudgets`(`@earendil-works/pi-ai`)· `Transport`(`@earendil-works/pi-ai`)
1083
+
1084
+ 来源:[`packages/llm/llm-pi-ai/src/config.ts:172`](../packages/llm/llm-pi-ai/src/config.ts)
1085
+
1086
+ <a id="deepseek-aidsh-llm-replay"></a>
1087
+
1088
+ ## `@deepseek-ai/dsh-llm-replay`
1089
+
1090
+ 需要:`llm`
1091
+
1092
+ ```ts config-catalog
1093
+ /** Plugin config: the {@link ReplayConfig} inputs, each defaulting to its `DSH_SNAPSHOT_*` env var in `apply`. */
1094
+ export interface Config {
1095
+ /** Override the fixture path; defaults to `$DSH_SNAPSHOT_FILE`. */
1096
+ file?: string
1097
+ /** Override the sidecar path; defaults to `$DSH_SNAPSHOT_OVERRIDE`. */
1098
+ overrideFile?: string
1099
+ /**
1100
+ * Override the child-log paths; defaults to `$DSH_SNAPSHOT_CHILD_FILES` (a
1101
+ * path-separator-delimited list). Each is a recorded subagent session log for
1102
+ * a nested-agent scenario; absent/empty for a single-session scenario.
1103
+ */
1104
+ childFiles?: string[]
1105
+ /** Optional replay-only provider catalog; absent or empty selects catch-all waterfall replay. */
1106
+ providers?: ReplayProviderConfig[]
1107
+ /** Optional per-chunk pacing delay in ms (see {@link ReplayConfig.paceMs}); absent keeps burst yield. */
1108
+ paceMs?: number
1109
+ }
1110
+
1111
+ /** One provider route exposed by the replay adapter. */
1112
+ export interface ReplayProviderConfig {
1113
+ /** Provider route used for replay requests. */
1114
+ id: string
1115
+ /** Selector label; defaults to {@link id}. */
1116
+ name?: string
1117
+ /** Advisory models exposed to replay scenarios that exercise discovery. */
1118
+ models?: ReplayModelConfig[]
1119
+ /** Optional provider-owned retry policy used by assembled recovery snapshots. */
1120
+ retryPolicy?: RetryPolicyConfig
1121
+ }
1122
+
1123
+ /** One model exposed by a replay-only provider catalog. */
1124
+ export interface ReplayModelConfig {
1125
+ /** Model id used for replay requests. */
1126
+ id: string
1127
+ /** Selector label; defaults to {@link id}. */
1128
+ name?: string
1129
+ /** Optional selector description. */
1130
+ description?: string
1131
+ /** Optional positive integer context capacity published by the replay adapter. */
1132
+ contextWindow?: number
1133
+ /** Optional declared input modalities, so a scenario can exercise capability gates (e.g. image-capable `read_image`). */
1134
+ inputModalities?: readonly ModelModality[]
1135
+ /**
1136
+ * Optional per-request output cap the replay route materializes when callers
1137
+ * omit one, so replay reconstructs the request header a live catalog produced.
1138
+ */
1139
+ defaultMaxTokens?: number
1140
+ /** Optional reasoning-effort ids the replay route accepts, in display order. */
1141
+ reasoningEfforts?: string[]
1142
+ /**
1143
+ * Optional effort materialized when callers omit one; must appear in
1144
+ * {@link reasoningEfforts} or call resolution rejects the route.
1145
+ */
1146
+ defaultReasoningEffort?: string
1147
+ }
1148
+ ```
1149
+
1150
+ 依赖:[`ModelModality`](../packages/llm/llm/src/index.ts) · [`RetryPolicyConfig`](../packages/llm/llm/src/index.ts)
1151
+
1152
+ 来源:[`packages/test-support/llm-replay/src/index.ts:776`](../packages/test-support/llm-replay/src/index.ts)
1153
+
1154
+ <a id="deepseek-aidsh-llm-retry"></a>
1155
+
1156
+ ## `@deepseek-ai/dsh-llm-retry`
1157
+
1158
+ 需要:`agents`
1159
+
1160
+ ```ts config-catalog
1161
+ /** This policy executor has no config; providers own `retryPolicy`. */
1162
+ export type Config = Readonly<Record<string, never>>
1163
+ ```
1164
+
1165
+ 来源:[`packages/llm/llm-retry/src/index.ts:24`](../packages/llm/llm-retry/src/index.ts)
1166
+
1167
+ <a id="deepseek-aidsh-lsp-stdio"></a>
1168
+
1169
+ ## `@deepseek-ai/dsh-lsp-stdio`
1170
+
1171
+ 需要:`fs` · `lsp` · `subprocess`
1172
+
1173
+ ```ts config-catalog
1174
+ /** Plugin configuration: provider id → local language-server configuration. */
1175
+ export interface Config {
1176
+ /** Non-empty table of stable provider ids to independent local server configurations. */
1177
+ servers: Record<string, LspLocalServerConfig>
1178
+ }
1179
+
1180
+ /** One configured local language server and its host bounds. */
1181
+ export interface LspLocalServerConfig {
1182
+ /** Executable to spawn (absolute, or resolved on PATH at load). */
1183
+ command: string
1184
+ /** Lowercase leading-dot extension → LSP language id (e.g. `{ '.ts': 'typescript' }`). */
1185
+ extensionToLanguage: Record<string, string>
1186
+ /** Arguments passed to the executable (no shell). Default `[]`. */
1187
+ args?: string[]
1188
+ /** Extra env vars merged on top of the scrubbed ambient env. Default `{}`. */
1189
+ env?: Record<string, string>
1190
+ /** Static `initialize` options forwarded to the server. Default `null`. */
1191
+ initializationOptions?: unknown
1192
+ /** Static answer to every `workspace/configuration` item. Default `null`. */
1193
+ configuration?: unknown
1194
+ /** Largest single framed message accepted from the server (bytes). Default 16000000. */
1195
+ maxMessageBytes?: number
1196
+ /** Largest stderr tail retained for diagnostics (bytes). Default 1000000. */
1197
+ maxStderrBytes?: number
1198
+ /** Largest source file this host will open (bytes). Default 4000000. */
1199
+ maxDocumentBytes?: number
1200
+ /** Graceful `shutdown`/`exit` budget before escalation (ms). Default 5000. */
1201
+ shutdownTimeoutMs?: number
1202
+ /** Request-cancel and SIGTERM→SIGKILL grace (ms). Default 2000. */
1203
+ killGraceMs?: number
1204
+ }
1205
+ ```
1206
+
1207
+ 来源:[`packages/lsp/lsp-stdio/src/index.ts:82`](../packages/lsp/lsp-stdio/src/index.ts)
1208
+
1209
+ <a id="deepseek-aidsh-mcp-client"></a>
1210
+
1211
+ ## `@deepseek-ai/dsh-mcp-client`
1212
+
1213
+ 需要:`tools`
1214
+
1215
+ ```ts config-catalog
1216
+ /** Configuration for one stdio or Streamable HTTP MCP server. */
1217
+ export type Config = StdioConfig | StreamableHttpConfig
1218
+
1219
+ /** Config for connecting to an MCP server via a spawned child process over stdio. */
1220
+ export interface StdioConfig {
1221
+ /** Selects child-process stdio transport. */
1222
+ transport: 'stdio'
1223
+ /**
1224
+ * Stable local namespace for this server's model-facing tool names
1225
+ * (`mcp__<serverName>__<rawName>`). Must match `[A-Za-z0-9_-]{1,32}` and be
1226
+ * unique across live mcp-client instances.
1227
+ */
1228
+ serverName: string
1229
+ /** Executable used to start the server. */
1230
+ command: string
1231
+ /** Arguments passed directly, without shell interpolation. */
1232
+ args: string[]
1233
+ /** Extra env vars merged on top of scrubbed ambient env. */
1234
+ env: Record<string, string>
1235
+ /** Working directory for the child process. */
1236
+ cwd: string
1237
+ /** Per-tool-call timeout in milliseconds. */
1238
+ toolCallTimeoutMs: number
1239
+ /** Fail plugin activation when the initial connection or tool synchronization fails. */
1240
+ failOnStartupError: boolean
1241
+ /** Automatic reconnect policy after a lost connection; omission uses the defaults. */
1242
+ reconnect?: ReconnectConfig
1243
+ }
1244
+
1245
+ /** Config for connecting to an MCP server over Streamable HTTP (SSE). */
1246
+ export interface StreamableHttpConfig {
1247
+ /** Selects Streamable HTTP transport. */
1248
+ transport: 'streamable-http'
1249
+ /**
1250
+ * Stable local namespace for this server's model-facing tool names
1251
+ * (`mcp__<serverName>__<rawName>`). Must match `[A-Za-z0-9_-]{1,32}` and be
1252
+ * unique across live mcp-client instances.
1253
+ */
1254
+ serverName: string
1255
+ /** MCP endpoint URL. */
1256
+ url: string
1257
+ /** Additional headers attached to MCP requests. */
1258
+ headers: Record<string, string>
1259
+ /** Per-tool-call timeout in milliseconds. */
1260
+ toolCallTimeoutMs: number
1261
+ /** Fail plugin activation when the initial connection or tool synchronization fails. */
1262
+ failOnStartupError: boolean
1263
+ /** Automatic reconnect policy after a lost connection; omission uses the defaults. */
1264
+ reconnect?: ReconnectConfig
1265
+ }
1266
+
1267
+ /** Automatic reconnect policy for one MCP server connection. */
1268
+ export interface ReconnectConfig {
1269
+ /** Reconnect automatically after a lost connection (default true). */
1270
+ enabled?: boolean
1271
+ /** First reconnect delay in milliseconds; doubles per consecutive failed attempt (default 500). */
1272
+ initialDelayMs?: number
1273
+ /** Backoff ceiling in milliseconds; also the uptime after which the attempt budget resets (default 30000). */
1274
+ maxDelayMs?: number
1275
+ /** Consecutive failed attempts per outage before giving up for good (default 10). */
1276
+ maxAttempts?: number
1277
+ }
1278
+ ```
1279
+
1280
+ 来源:[`packages/mcp/mcp-client/src/index.ts:98`](../packages/mcp/mcp-client/src/index.ts)
1281
+
1282
+ <a id="deepseek-aidsh-message-feedback"></a>
1283
+
1284
+ ## `@deepseek-ai/dsh-message-feedback`
1285
+
1286
+ 需要:`storageDomain` · `sessionPersistence` · `sessions`
1287
+
1288
+ ```ts config-catalog
1289
+ /** Required deployment policy for optional notes. */
1290
+ export interface Config {
1291
+ /** Maximum UTF-8 byte length accepted for one note. */
1292
+ readonly maxNoteBytes: number
1293
+ }
1294
+ ```
1295
+
1296
+ 来源:[`packages/feedback/message-feedback/src/index.ts:49`](../packages/feedback/message-feedback/src/index.ts)
1297
+
1298
+ <a id="deepseek-aidsh-permission-presets"></a>
1299
+
1300
+ ## `@deepseek-ai/dsh-permission-presets`
1301
+
1302
+ 需要:`bash` · `approval` · `sessions`
1303
+
1304
+ ```ts config-catalog
1305
+ /** The {@link PermissionPresetService} config: preset table and composition default. */
1306
+ export interface Config {
1307
+ /**
1308
+ * The preset table: name → knob bundle. Defaults to `workspace-write`
1309
+ * (workspace-write + ask) and `danger-full-access` (danger-full-access +
1310
+ * never). The name `custom` is reserved for the derived not-a-preset state.
1311
+ */
1312
+ presets?: Record<string, PresetSpec>
1313
+ /**
1314
+ * Default for new sessions. When omitted, the preset matching the composed
1315
+ * sandbox and approval defaults is used.
1316
+ */
1317
+ defaultPreset?: string
1318
+ }
1319
+
1320
+ /** One preset's sandbox/approval bundle and optional client presentation. */
1321
+ export interface PresetSpec {
1322
+ /** The `sandbox/mode` value the preset writes through. */
1323
+ sandbox: SandboxMode
1324
+ /** The `approval/policy` value the preset writes through. */
1325
+ approval: ApprovalPolicy
1326
+ /** The display label a client shows for this preset; the raw table key when omitted. */
1327
+ name?: string
1328
+ /** One user-facing sentence on what the preset means; omitted when not configured. */
1329
+ description?: string
1330
+ }
1331
+ ```
1332
+
1333
+ 依赖:[`ApprovalPolicy`](subsystems/approval.md) · [`SandboxMode`](subsystems/sandbox.md)
1334
+
1335
+ 来源:[`packages/interaction/permission-presets/src/index.ts:140`](../packages/interaction/permission-presets/src/index.ts)
1336
+
1337
+ <a id="deepseek-aidsh-persona"></a>
1338
+
1339
+ ## `@deepseek-ai/dsh-persona`
1340
+
1341
+ 需要:`systemPrompt`
1342
+
1343
+ ```ts config-catalog
1344
+ /** Plugin config: the persona text this composition contributes. */
1345
+ export interface Config {
1346
+ /**
1347
+ * Persona prose rendered as the `deployment:persona` section. A template:
1348
+ * complete `{{…}}` groups interpolate strictly against registered prompt
1349
+ * variables. Empty text drops the section at render, matching the registry.
1350
+ */
1351
+ text: string
1352
+ /** Make this persona the complete system prompt, suppressing every other section. */
1353
+ complete?: boolean
1354
+ /** Suppress dynamic runtime-context snapshots for this persona's agent scope. */
1355
+ includeRuntimeContext?: boolean
1356
+ }
1357
+ ```
1358
+
1359
+ 来源:[`packages/preset/persona/src/index.ts:34`](../packages/preset/persona/src/index.ts)
1360
+
1361
+ <a id="deepseek-aidsh-plan-mode"></a>
1362
+
1363
+ ## `@deepseek-ai/dsh-plan-mode`
1364
+
1365
+ 需要:`tools` · `systemPrompt`
1366
+
1367
+ ```ts config-catalog
1368
+ /** Deployment-owned plan guidance. */
1369
+ export interface PlanModeConfig {
1370
+ /** Guidance rendered as the `plan:policy` prompt section while plan mode is active. */
1371
+ section: string
1372
+ }
1373
+ ```
1374
+
1375
+ 来源:[`packages/plan/plan-mode/src/index.ts:70`](../packages/plan/plan-mode/src/index.ts)
1376
+
1377
+ <a id="deepseek-aidsh-pwsh-local"></a>
1378
+
1379
+ ## `@deepseek-ai/dsh-pwsh-local`
1380
+
1381
+ 需要:`subprocess`
1382
+
1383
+ ```ts config-catalog
1384
+ /** Plugin config (all optional — `static Config` supplies the defaults). */
1385
+ export interface Config {
1386
+ /** Default working directory for commands (default: process.cwd()). */
1387
+ cwd?: string
1388
+ /** Default foreground timeout in milliseconds. */
1389
+ timeoutMs?: number
1390
+ /** Upper bound for per-call timeout overrides. */
1391
+ maxTimeoutMs?: number
1392
+ /** Per-stream in-memory output cap; overflow spills to a temp file. */
1393
+ maxOutputBytes?: number
1394
+ /** Per-stream spill-file cap; larger streams retain only their in-memory tail. */
1395
+ maxSpillBytes?: number
1396
+ /** Grace period for kill escalation and inherited pipes; at most `MAX_TIMER_DELAY_MS`. */
1397
+ graceMs?: number
1398
+ /**
1399
+ * Explicit pwsh executable. When omitted, well-known Windows install
1400
+ * locations and PATH entries are probed in order (PowerShell 7 install,
1401
+ * PATH entries such as the Microsoft Store install, then Windows
1402
+ * PowerShell 5.1), falling back to a bare `pwsh` resolved through PATH.
1403
+ */
1404
+ pwshPath?: string
1405
+ }
1406
+ ```
1407
+
1408
+ 来源:[`packages/shell/pwsh-local/src/index.ts:58`](../packages/shell/pwsh-local/src/index.ts)
1409
+
1410
+ <a id="deepseek-aidsh-pwsh-sandbox"></a>
1411
+
1412
+ ## `@deepseek-ai/dsh-pwsh-sandbox`
1413
+
1414
+ 需要:`subprocess` · `sandbox` · `sandboxPolicy`
1415
+
1416
+ ```ts config-catalog
1417
+ /**
1418
+ * Plugin config: the local executor's knobs, verbatim. The sandbox policy —
1419
+ * the default mode and fallback `workspace-write` root — is NOT here: it lives
1420
+ * on `ctx.sandboxPolicy` (`@deepseek-ai/dsh-sandbox-policy`), which resolves
1421
+ * each calling session's mode and cwd for every enforcing capability. The
1422
+ * runner choice is likewise the `ctx.sandbox` provider's config, not this
1423
+ * executor's.
1424
+ */
1425
+ export type Config = LocalConfig
1426
+ ```
1427
+
1428
+ 依赖:[`LocalConfig`](#deepseek-aidsh-pwsh-local)
1429
+
1430
+ 来源:[`packages/shell/pwsh-sandbox/src/index.ts:40`](../packages/shell/pwsh-sandbox/src/index.ts)
1431
+
1432
+ <a id="deepseek-aidsh-repeat-tool-reminder"></a>
1433
+
1434
+ ## `@deepseek-ai/dsh-repeat-tool-reminder`
1435
+
1436
+ ```ts config-catalog
1437
+ /**
1438
+ * Plugin config, validated by the same-named schemastery schema plus the
1439
+ * load-time checks in `apply` (misconfiguration fails loud: an empty
1440
+ * `thresholds` list, a non-integer, a value below 2, or a duplicate throws at
1441
+ * plugin load, never a silent fall-back). `include`/`exclude` entries are
1442
+ * `*`-wildcard predicates over tool names at call time, not references to
1443
+ * registry entries — a pattern matching no currently registered tool is valid
1444
+ * (`exclude: [mcp_*]` must stay legal in a deployment that loads no MCP tools).
1445
+ */
1446
+ export interface Config {
1447
+ /** Consecutive-repeat counts that trigger a reminder (default `[3, 5, 8]`). */
1448
+ thresholds?: number[]
1449
+ /** Tool-name patterns to track; empty means every tool is tracked. */
1450
+ include?: string[]
1451
+ /** Tool-name patterns transparent to the chain (neither count nor reset). */
1452
+ exclude?: string[]
1453
+ /**
1454
+ * Maximum characters of canonical arguments quoted in the DETAILED reminder
1455
+ * (default 500). Large payloads (a `write` body, a long command) would
1456
+ * otherwise ride into the next request unbounded — precisely in a loop
1457
+ * scenario; the cap bounds the reminder, never the detection (the chain key
1458
+ * always compares the FULL canonical string).
1459
+ */
1460
+ argumentsPreviewChars?: number
1461
+ }
1462
+ ```
1463
+
1464
+ 来源:[`packages/guard/repeat-tool-reminder/src/index.ts:28`](../packages/guard/repeat-tool-reminder/src/index.ts)
1465
+
1466
+ <a id="deepseek-aidsh-sandbox-local"></a>
1467
+
1468
+ ## `@deepseek-ai/dsh-sandbox-local`
1469
+
1470
+ ```ts config-catalog
1471
+ /** Plugin config. All optional — `static Config` supplies the defaults. */
1472
+ export interface Config {
1473
+ /**
1474
+ * Override the runner argv; bwrap-compatible profile arguments are appended. A
1475
+ * non-empty override asserts full enforcement and skips built-in selection and
1476
+ * probing. A runner that starts but refuses its profile must be identifiable by
1477
+ * {@link runnerFailureSignatures}. Consumers classify a spawn rejection only after
1478
+ * confirming the workdir is usable. `ENOENT` or `EACCES` identifies the runner when
1479
+ * `error.path` equals argv[0] and `error.syscall` is `spawn` or `spawn <runner>`, or
1480
+ * when `error.path` is absent and `error.syscall` is exactly `spawn <runner>`.
1481
+ */
1482
+ runnerCommand?: string[]
1483
+ /**
1484
+ * Case-insensitive stderr substrings emitted when a configured
1485
+ * {@link runnerCommand} refuses its profile before executing the wrapped
1486
+ * command. Required and non-empty with `runnerCommand`; rejected without
1487
+ * it. Each entry is a non-empty, single-line, case-insensitive substring
1488
+ * covering the executable runner's own failure dialect.
1489
+ */
1490
+ runnerFailureSignatures?: string[]
1491
+ /** Positive timeout for each functional probe; zero would mean unbounded to Node. */
1492
+ probeTimeoutMs?: number
1493
+ }
1494
+ ```
1495
+
1496
+ 来源:[`packages/sandbox/sandbox-local/src/index.ts:44`](../packages/sandbox/sandbox-local/src/index.ts)
1497
+
1498
+ <a id="deepseek-aidsh-sandbox-policy"></a>
1499
+
1500
+ ## `@deepseek-ai/dsh-sandbox-policy`
1501
+
1502
+ ```ts config-catalog
1503
+ /**
1504
+ * Plugin config: the deployment's sandbox default. All optional — `Config`
1505
+ * supplies the defaults (`mode: 'read-only'` is the fail-safe default; a
1506
+ * deployment that wants a workspace-writable agent opts in explicitly). The
1507
+ * runner choice is NOT here (it is the `ctx.sandbox` provider's config), nor
1508
+ * is any per-family knob: this is the one shared policy home.
1509
+ */
1510
+ export interface Config {
1511
+ /** File-sandbox mode a session starts from (default: `read-only`). */
1512
+ mode?: SandboxMode
1513
+ /**
1514
+ * Fallback root for agentless calls and sessions without a cwd (default:
1515
+ * `process.cwd()`). Normal agent calls use their session cwd instead.
1516
+ */
1517
+ workspaceRoot?: string
1518
+ }
1519
+ ```
1520
+
1521
+ 依赖:[`SandboxMode`](subsystems/sandbox.md)
1522
+
1523
+ 来源:[`packages/sandbox/sandbox-policy/src/index.ts:67`](../packages/sandbox/sandbox-policy/src/index.ts)
1524
+
1525
+ <a id="deepseek-aidsh-sdk-jsonrpc-server"></a>
1526
+
1527
+ ## `@deepseek-ai/dsh-sdk-jsonrpc-server`
1528
+
1529
+ 需要:`agents`
1530
+
1531
+ ```ts config-catalog
1532
+ /** JSON-RPC deployment config plus runtime-only test hooks. */
1533
+ export interface JsonRpcConfig {
1534
+ /** Report max-token turn/subagent termination as a successful SDK result. */
1535
+ maxTokensAsSuccess?: boolean
1536
+ /** Transport input override; production uses `process.stdin`. */
1537
+ input?: Readable
1538
+ /** Transport output override; production uses `process.stdout`. */
1539
+ output?: Writable
1540
+ /** Process-exit override; production uses `process.exit`. */
1541
+ exit?: (code: number) => void
1542
+ }
1543
+ ```
1544
+
1545
+ 依赖:`Readable`(`node:stream`)· `Writable`(`node:stream`)
1546
+
1547
+ 来源:[`packages/sdk/server/src/index.ts:29`](../packages/sdk/server/src/index.ts)
1548
+
1549
+ <a id="deepseek-aidsh-session-persistence-jsonl"></a>
1550
+
1551
+ ## `@deepseek-ai/dsh-session-persistence-jsonl`
1552
+
1553
+ 需要:`sessions`
1554
+
1555
+ ```ts config-catalog
1556
+ /** Plugin config: where the JSONL backend keeps its session logs, and the packed-row write switch. */
1557
+ export interface Config {
1558
+ /**
1559
+ * Root directory for all session files. Required (no default): a default of
1560
+ * `process.cwd()` would scatter session files as the process's cwd changes
1561
+ * (bash calls, subprocesses). Sessions group under human-readable project
1562
+ * directories, then per-session directories. An existing root must be a
1563
+ * readable directory; an absent root is created on first materialization.
1564
+ */
1565
+ root: string
1566
+ /**
1567
+ * Write runs of consecutive `assistant/chunk` delta events as packed
1568
+ * `text-chunks`/`reasoning-chunks`/`tool-call-chunks` rows (lossless,
1569
+ * ~60% smaller logs measured on a real session). Defaults to true; false
1570
+ * keeps one `SessionEvent` per line for diagnostics. Reading packed rows is
1571
+ * unconditional: a log's layout never depends on this switch.
1572
+ */
1573
+ packChunks?: boolean
1574
+ /** Physical encoding; defaults to checksummed Zstandard frames. */
1575
+ compression?: JsonlCompression
1576
+ /** Maximum cold Session preparations retained for history-to-resume reuse. */
1577
+ preparedSessionCacheSize?: number
1578
+ /** Fixed live-event coalescing window; not a backend completion deadline. */
1579
+ writeBatchMaxDelayMs?: number
1580
+ }
1581
+
1582
+ /** Physical encoding selected for JSONL session artifacts. */
1583
+ export type JsonlCompression = 'zstd' | 'none'
1584
+ ```
1585
+
1586
+ 来源:[`packages/session/session-persistence-jsonl/src/index.ts:60`](../packages/session/session-persistence-jsonl/src/index.ts)
1587
+
1588
+ <a id="deepseek-aidsh-session-persistence-sqlite"></a>
1589
+
1590
+ ## `@deepseek-ai/dsh-session-persistence-sqlite`
1591
+
1592
+ 需要:`sessions`
1593
+
1594
+ ```ts config-catalog
1595
+ /** Plugin configuration. */
1596
+ export interface Config {
1597
+ /**
1598
+ * Filesystem path to the SQLite database file. The special value `:memory:`
1599
+ * opens an in-process database (tests). On filesystems with POSIX modes,
1600
+ * missing directories and databases are created owner-only; existing path
1601
+ * modes are preserved. Filesystem setup errors other than an existing database
1602
+ * fail initialization. The backend does not protect confidentiality or
1603
+ * integrity when another principal can replace the database entry in its
1604
+ * parent directory.
1605
+ */
1606
+ path: string
1607
+ /**
1608
+ * SQLite `journal_mode` pragma. `wal` (the default) is the recorded
1609
+ * durability model; pick a rollback-journal mode (`delete`/`truncate`/
1610
+ * `persist`) on filesystems where WAL's shared-memory files do not work
1611
+ * (network mounts). See {@link JournalMode}.
1612
+ */
1613
+ journalMode?: JournalMode
1614
+ /** Maximum cold Session preparations retained for history-to-resume reuse. */
1615
+ preparedSessionCacheSize?: number
1616
+ /** Fixed live-event coalescing window; not a backend completion deadline. */
1617
+ writeBatchMaxDelayMs?: number
1618
+ }
1619
+
1620
+ /**
1621
+ * Journal modes the backend will run under. `wal` is the default and the
1622
+ * durability model the persistence ADR records; the rollback-journal modes
1623
+ * (`delete`/`truncate`/`persist`) exist for filesystems where WAL's
1624
+ * shared-memory files do not work (network mounts). `memory`/`off` are
1625
+ * excluded: dropping journal durability silently contradicts what this
1626
+ * backend promises.
1627
+ */
1628
+ export type JournalMode = 'wal' | 'delete' | 'truncate' | 'persist'
1629
+ ```
1630
+
1631
+ 来源:[`packages/session/session-persistence-sqlite/src/index.ts:70`](../packages/session/session-persistence-sqlite/src/index.ts)
1632
+
1633
+ <a id="deepseek-aidsh-session-projection-cache"></a>
1634
+
1635
+ ## `@deepseek-ai/dsh-session-projection-cache`
1636
+
1637
+ 需要:`storageDomain` · `sessionProjections` · `sessionPersistence` · `sessions`
1638
+
1639
+ ```ts config-catalog
1640
+ /**
1641
+ * Plugin config. Both throttle triggers are deployment choices with no
1642
+ * universally correct value, so the composition states them explicitly
1643
+ * (cordis.yml); the two mandatory write points (`turn/end` and session
1644
+ * disposal) are policy, not tunables, and always fire.
1645
+ */
1646
+ export interface Config {
1647
+ /** Committed events per session that force a durable checkpoint write between mandatory points. */
1648
+ writeEveryEvents: number
1649
+ /** Longest time (milliseconds) a dirty checkpoint may stay unwritten between mandatory points. */
1650
+ writeIntervalMs: number
1651
+ }
1652
+ ```
1653
+
1654
+ 来源:[`packages/session/session-projection-cache/src/index.ts:42`](../packages/session/session-projection-cache/src/index.ts)
1655
+
1656
+ <a id="deepseek-aidsh-session-query-sqlite"></a>
1657
+
1658
+ ## `@deepseek-ai/dsh-session-query-sqlite`
1659
+
1660
+ 需要:`sessions`
1661
+
1662
+ ```ts config-catalog
1663
+ /** Combined session-query configuration backed by SQLite full-text search. */
1664
+ export interface Config extends SessionQueryConfig {
1665
+ /**
1666
+ * Dedicated derived-index path; `:memory:` is supported for ephemeral
1667
+ * indexes. Missing directories and database files are created owner-only on
1668
+ * POSIX filesystems; existing modes are preserved.
1669
+ */
1670
+ path: string
1671
+ /**
1672
+ * Open the SQLite module and handle at service activation or the first
1673
+ * search, or `never` to disable full-text search: the inherited exact
1674
+ * reads, filters, and traces stay available, while `searchSessions` and
1675
+ * `searchEvents` fail with `SESSION_QUERY_SEARCH_DISABLED` and SQLite is
1676
+ * never imported or opened. Defaults to `startup`.
1677
+ */
1678
+ openAt?: OpenAt
1679
+ /** SQLite journal mode. Defaults to `wal`. */
1680
+ journalMode?: JournalMode
1681
+ /** Page size when a request omits `limit`. At most `Number.MAX_SAFE_INTEGER - 1`; defaults to 20. */
1682
+ defaultLimit?: number
1683
+ /** Largest accepted page size. At most `Number.MAX_SAFE_INTEGER - 1`; defaults to 100. */
1684
+ maxLimit?: number
1685
+ /** Maximum snippet length in Unicode code points. Defaults to 240. */
1686
+ snippetChars?: number
1687
+ /** Maximum concurrent persisted-log inspections in one inherited batch read. Defaults to 4. */
1688
+ persistedInspectConcurrency?: number
1689
+ }
1690
+
1691
+ /** SQLite module/handle opening phase; `never` disables full-text search entirely. */
1692
+ export type OpenAt = 'startup' | 'first-search' | 'never'
1693
+
1694
+ /** Supported SQLite journal modes. */
1695
+ export type JournalMode = 'wal' | 'delete' | 'truncate' | 'persist'
1696
+ ```
1697
+
1698
+ 依赖:[`SessionQueryConfig`](../packages/session-query/session-query/src/index.ts)
1699
+
1700
+ 来源:[`packages/session-query/session-query-sqlite/src/index.ts:89`](../packages/session-query/session-query-sqlite/src/index.ts)
1701
+
1702
+ <a id="deepseek-aidsh-session-reference"></a>
1703
+
1704
+ ## `@deepseek-ai/dsh-session-reference`
1705
+
1706
+ 需要:`sessionQuery`
1707
+
1708
+ ```ts config-catalog
1709
+ /** Session-reference service configuration. */
1710
+ export interface Config {
1711
+ /** Maximum distinct source sessions referenced by one message, from one to three. */
1712
+ maxReferences?: number
1713
+ /** Default host candidate-list limit. */
1714
+ candidateLimit?: number
1715
+ /** Maximum rendered UTF-8 bytes for one source snapshot. */
1716
+ maxReferenceBytes?: number
1717
+ }
1718
+ ```
1719
+
1720
+ 来源:[`packages/context/session-reference/src/config.ts:11`](../packages/context/session-reference/src/config.ts)
1721
+
1722
+ <a id="deepseek-aidsh-session-telemetry-otel"></a>
1723
+
1724
+ ## `@deepseek-ai/dsh-session-telemetry-otel`
1725
+
1726
+ 需要:`sessions`
1727
+
1728
+ ```ts config-catalog
1729
+ /**
1730
+ * Plugin configuration: one sharing policy, two verbatim SDK option objects,
1731
+ * and one DSH-owned shutdown bound. Uploading modes validate their endpoint
1732
+ * and shutdown deadline at plugin load; `DISABLED` reads neither.
1733
+ */
1734
+ export interface Config {
1735
+ /** Sharing policy; defaults to local-only `DISABLED` behavior. */
1736
+ mode?: SessionTelemetryMode
1737
+ /**
1738
+ * Passed verbatim to the SDK's OTLP/HTTP log exporter — the complete
1739
+ * `OTLPExporterNodeConfigBase` shape (`headers`, `timeoutMillis`,
1740
+ * `compression`, `keepAlive`, …), owned and documented by the SDK. `url`
1741
+ * is the one field this package requires and validates itself.
1742
+ */
1743
+ exporter?: OTLPExporterNodeConfigBase & {
1744
+ /** Full logs endpoint (e.g. `https://collector.example.com/v1/logs`). Required outside `DISABLED`; validated at load. */
1745
+ url?: string
1746
+ }
1747
+ /**
1748
+ * Passed verbatim to `BatchLogRecordProcessor` (minus the exporter slot,
1749
+ * which this plugin fills); the SDK owns and documents these knobs.
1750
+ */
1751
+ processor?: Omit<BatchLogRecordProcessorOptions, 'exporter'>
1752
+ /** Maximum time spent awaiting the SDK provider's complete shutdown path. */
1753
+ shutdownTimeoutMillis?: number
1754
+ }
1755
+
1756
+ /** Session-sharing policy selected by {@link Config.mode}. */
1757
+ export enum SessionTelemetryMode {
1758
+ FULL = 'FULL',
1759
+ FEEDBACK_ONLY = 'FEEDBACK_ONLY',
1760
+ DISABLED = 'DISABLED',
1761
+ }
1762
+ ```
1763
+
1764
+ 依赖:`BatchLogRecordProcessorOptions`(`@opentelemetry/sdk-logs`)· `OTLPExporterNodeConfigBase`(`@opentelemetry/otlp-exporter-base`)
1765
+
1766
+ 来源:[`packages/session/session-telemetry-otel/src/index.ts:91`](../packages/session/session-telemetry-otel/src/index.ts)
1767
+
1768
+ <a id="deepseek-aidsh-session-title"></a>
1769
+
1770
+ ## `@deepseek-ai/dsh-session-title`
1771
+
1772
+ 需要:`sessions`
1773
+
1774
+ ```ts config-catalog
1775
+ /** Required deterministic fallback and accepted-title limits. */
1776
+ export interface Config {
1777
+ /** Maximum whitespace-delimited words in the built-in fallback. */
1778
+ readonly fallbackMaxWords: number
1779
+ /** Maximum UTF-8 bytes in the built-in fallback. */
1780
+ readonly fallbackMaxBytes: number
1781
+ /** Maximum UTF-8 bytes in any accepted title. */
1782
+ readonly maxTitleBytes: number
1783
+ }
1784
+ ```
1785
+
1786
+ 来源:[`packages/session/session-title/src/index.ts:79`](../packages/session/session-title/src/index.ts)
1787
+
1788
+ <a id="deepseek-aidsh-session-title-all-prompts-llm"></a>
1789
+
1790
+ ## `@deepseek-ai/dsh-session-title-all-prompts-llm`
1791
+
1792
+ 需要:`sessionTitle` · `llm` · `sessions`
1793
+
1794
+ ```ts config-catalog
1795
+ /** Required LLM policy; this plugin adds no defaults. */
1796
+ export type Config = SessionTitleLlmConfig
1797
+ ```
1798
+
1799
+ 依赖:[`SessionTitleLlmConfig`](../packages/session/session-title-llm/src/index.ts)
1800
+
1801
+ 来源:[`packages/session/session-title-all-prompts-llm/src/index.ts:15`](../packages/session/session-title-all-prompts-llm/src/index.ts)
1802
+
1803
+ <a id="deepseek-aidsh-session-title-first-prompt-llm"></a>
1804
+
1805
+ ## `@deepseek-ai/dsh-session-title-first-prompt-llm`
1806
+
1807
+ 需要:`sessionTitle` · `llm` · `sessions`
1808
+
1809
+ ```ts config-catalog
1810
+ /** Required LLM policy; this plugin adds no defaults. */
1811
+ export type Config = SessionTitleLlmConfig
1812
+ ```
1813
+
1814
+ 依赖:[`SessionTitleLlmConfig`](../packages/session/session-title-llm/src/index.ts)
1815
+
1816
+ 来源:[`packages/session/session-title-first-prompt-llm/src/index.ts:15`](../packages/session/session-title-first-prompt-llm/src/index.ts)
1817
+
1818
+ <a id="deepseek-aidsh-settings-file"></a>
1819
+
1820
+ ## `@deepseek-ai/dsh-settings-file`
1821
+
1822
+ ```ts config-catalog
1823
+ /** Plugin config: file location and hot-reload behavior. */
1824
+ export interface Config {
1825
+ /** Settings document path; defaults to `settings.yaml` under the harness home. */
1826
+ path?: string
1827
+ /** Harness home used when `path` is omitted; defaults to `$DSH_HOME` or `~/.dsh`. */
1828
+ dshHome?: string
1829
+ /** Watch the document and hot-publish external edits; defaults to true. */
1830
+ watch?: boolean
1831
+ /** Watcher write-settle window in milliseconds; defaults to 100. */
1832
+ debounceMs?: number
1833
+ }
1834
+ ```
1835
+
1836
+ 来源:[`packages/settings/settings-file/src/index.ts:21`](../packages/settings/settings-file/src/index.ts)
1837
+
1838
+ <a id="deepseek-aidsh-shell-env"></a>
1839
+
1840
+ ## `@deepseek-ai/dsh-shell-env`
1841
+
1842
+ ```ts config-catalog
1843
+ /** Plugin config (all optional — the built-in facts resolve without defaults). */
1844
+ export interface Config {
1845
+ /** DeepSeek Harness home directory exposed as `DSH_HOME`; defaults to `$DSH_HOME` or `~/.dsh`. */
1846
+ dshHome?: string
1847
+ }
1848
+ ```
1849
+
1850
+ 来源:[`packages/shell/shell-env/src/index.ts:29`](../packages/shell/shell-env/src/index.ts)
1851
+
1852
+ <a id="deepseek-aidsh-skill"></a>
1853
+
1854
+ ## `@deepseek-ai/dsh-skill`
1855
+
1856
+ ```ts config-catalog
1857
+ /** Skill registry configuration. */
1858
+ export interface Config {
1859
+ /** Maximum number of completed cwd/provider catalogs kept in memory. */
1860
+ readonly collectCacheMaxEntries?: number
1861
+ }
1862
+ ```
1863
+
1864
+ 来源:[`packages/skill/skill/src/index.ts:279`](../packages/skill/skill/src/index.ts)
1865
+
1866
+ <a id="deepseek-aidsh-skill-filesystem"></a>
1867
+
1868
+ ## `@deepseek-ai/dsh-skill-filesystem`
1869
+
1870
+ 需要:`skills`
1871
+
1872
+ ```ts config-catalog
1873
+ /** Local filesystem skill provider configuration. */
1874
+ export interface Config {
1875
+ /** Unique provider name. Defaults to `local`. */
1876
+ providerName?: string
1877
+ /** Whether project and user roots are included around custom roots. */
1878
+ includeDefaultRoots?: boolean
1879
+ /** DeepSeek Harness config root. Defaults to `$DSH_HOME` or `~/.dsh`. */
1880
+ dshHome?: string
1881
+ /** Shared agent config root. Defaults to `$DSH_AGENTS_HOME` or `~/.agents`. */
1882
+ agentsHome?: string
1883
+ /** Additional skill roots scanned after project roots and before user roots. */
1884
+ customSkillDirs?: string[]
1885
+ /** Whether host-local skill roots are watched for catalog changes. */
1886
+ watch?: boolean
1887
+ /** Whether Chokidar uses polling instead of native filesystem events. */
1888
+ watchUsePolling?: boolean
1889
+ /** Milliseconds a changed skill entry must remain stable before it is observed. */
1890
+ watchStabilityThresholdMs?: number
1891
+ /** Milliseconds between Chokidar stability or polling probes. */
1892
+ watchPollIntervalMs?: number
1893
+ /** Maximum distinct project roots whose skill directories remain watched. */
1894
+ watchMaxProjects?: number
1895
+ /** Whether watched symbolic links follow their target files. */
1896
+ watchFollowSymlinks?: boolean
1897
+ /** Bundled skill root; defaults to `$DSH_BUNDLED_SKILL_DIR` when default roots are included, otherwise mounts none. */
1898
+ bundledSkillDir?: string
1899
+ }
1900
+ ```
1901
+
1902
+ 来源:[`packages/skill/skill-filesystem/src/index.ts:49`](../packages/skill/skill-filesystem/src/index.ts)
1903
+
1904
+ <a id="deepseek-aidsh-spill-local"></a>
1905
+
1906
+ ## `@deepseek-ai/dsh-spill-local`
1907
+
1908
+ ```ts config-catalog
1909
+ /** Plugin config (all optional — `static Config` supplies the defaults). */
1910
+ export interface Config {
1911
+ /**
1912
+ * Root directory for spill files. Omitted uses a lazily-created private
1913
+ * (0700) per-process directory under the OS temp dir — the safe default for
1914
+ * a local deployment. Set it to keep spill files under a known location.
1915
+ */
1916
+ root?: string
1917
+ }
1918
+ ```
1919
+
1920
+ 来源:[`packages/spill/spill-local/src/index.ts:22`](../packages/spill/spill-local/src/index.ts)
1921
+
1922
+ <a id="deepseek-aidsh-spill-policy"></a>
1923
+
1924
+ ## `@deepseek-ai/dsh-spill-policy`
1925
+
1926
+ 需要:`tools`
1927
+
1928
+ ```ts config-catalog
1929
+ /** Plugin config. */
1930
+ export interface Config {
1931
+ /**
1932
+ * The model-facing context cap for a plain-text tool result, in UTF-8 bytes.
1933
+ * Omitted disables the policy entirely (no-op). When set, a result larger than
1934
+ * this is spilled and replaced with a preview derived from this same budget.
1935
+ */
1936
+ maxInlineBytes?: number
1937
+ }
1938
+ ```
1939
+
1940
+ 来源:[`packages/spill/spill-policy/src/index.ts:60`](../packages/spill/spill-policy/src/index.ts)
1941
+
1942
+ <a id="deepseek-aidsh-storage-domain"></a>
1943
+
1944
+ ## `@deepseek-ai/dsh-storage-domain`
1945
+
1946
+ 需要:`storage`
1947
+
1948
+ ```ts config-catalog
1949
+ /**
1950
+ * Plugin config. Which backend serves which domain is decided here, not
1951
+ * globally on the hub: `backend` is the default route and `routes` overrides
1952
+ * it per domain name. A route naming an unregistered backend fails loud at
1953
+ * `open` with `backend-not-found`.
1954
+ */
1955
+ export interface Config {
1956
+ /** Default backend name for every domain without an explicit route. Required: there is no universally correct medium. */
1957
+ backend: string
1958
+ /** Per-domain overrides: domain name → backend name. */
1959
+ routes?: Record<string, string>
1960
+ }
1961
+ ```
1962
+
1963
+ 来源:[`packages/storage/storage-domain/src/index.ts:52`](../packages/storage/storage-domain/src/index.ts)
1964
+
1965
+ <a id="deepseek-aidsh-storage-json"></a>
1966
+
1967
+ ## `@deepseek-ai/dsh-storage-json`
1968
+
1969
+ 需要:`storage`
1970
+
1971
+ ```ts config-catalog
1972
+ /**
1973
+ * Plugin configuration.
1974
+ * `root` has NO default on purpose: a `process.cwd()` fallback would scatter
1975
+ * unit files wherever the process happens to start; assemblies state the
1976
+ * location explicitly.
1977
+ */
1978
+ export interface Config {
1979
+ /** Directory holding one `<unit>.json` file per unit. */
1980
+ root: string
1981
+ }
1982
+ ```
1983
+
1984
+ 来源:[`packages/storage/storage-json/src/index.ts:27`](../packages/storage/storage-json/src/index.ts)
1985
+
1986
+ <a id="deepseek-aidsh-storage-sqlite"></a>
1987
+
1988
+ ## `@deepseek-ai/dsh-storage-sqlite`
1989
+
1990
+ 需要:`storage`
1991
+
1992
+ ```ts config-catalog
1993
+ /** Plugin configuration. */
1994
+ export interface Config {
1995
+ /**
1996
+ * Filesystem path to the SQLite database file. The special value `:memory:`
1997
+ * opens an in-process database (tests). On filesystems with POSIX modes,
1998
+ * missing directories and databases are created owner-only; existing path
1999
+ * modes are preserved. Filesystem setup errors other than an existing
2000
+ * database fail the open. The backend does not protect confidentiality or
2001
+ * integrity when another principal can replace the database entry in its
2002
+ * parent directory.
2003
+ */
2004
+ path: string
2005
+ /**
2006
+ * SQLite `journal_mode` pragma. `wal` (the default) suits local disks; pick
2007
+ * a rollback-journal mode (`delete`/`truncate`/`persist`) on filesystems
2008
+ * where WAL's shared-memory files do not work (network mounts). See
2009
+ * {@link JournalMode}.
2010
+ */
2011
+ journalMode?: JournalMode
2012
+ }
2013
+
2014
+ /**
2015
+ * Journal modes the backend will run under. `wal` is the default; the
2016
+ * rollback-journal modes (`delete`/`truncate`/`persist`) exist for
2017
+ * filesystems where WAL's shared-memory files do not work (network mounts).
2018
+ * `memory`/`off` are excluded: dropping journal durability silently
2019
+ * contradicts the durability clause of the KV backend contract.
2020
+ */
2021
+ export type JournalMode = 'wal' | 'delete' | 'truncate' | 'persist'
2022
+ ```
2023
+
2024
+ 来源:[`packages/storage/storage-sqlite/src/index.ts:24`](../packages/storage/storage-sqlite/src/index.ts)
2025
+
2026
+ <a id="deepseek-aidsh-subagent-acp"></a>
2027
+
2028
+ ## `@deepseek-ai/dsh-subagent-acp`
2029
+
2030
+ 需要:`subagents` · `subprocess`
2031
+
2032
+ ```ts config-catalog
2033
+ /** Config: how to spawn and drive the child ACP agent process. */
2034
+ export interface Config {
2035
+ /** Provider name on `ctx.subagents` (default `acp`). */
2036
+ providerName: string
2037
+ /** The executable to spawn for each run (the child ACP agent). */
2038
+ command: string
2039
+ /** Arguments passed to {@link command}. */
2040
+ args: string[]
2041
+ /**
2042
+ * Working directory override for the child process and its ACP session.
2043
+ * Must be non-empty; a relative path resolves against the harness launch
2044
+ * directory at load, and the result must be an existing directory. When
2045
+ * omitted, each child inherits its delegating parent session's cwd — and
2046
+ * starting one from a parent session that has no cwd fails.
2047
+ */
2048
+ cwd?: string
2049
+ /**
2050
+ * How to auto-answer the child's `session/request_permission` prompts:
2051
+ * `reject` (default — decline every prompt) or `allow` (approve via the first
2052
+ * `allow_once` or `allow_always` option). No prompt is surfaced to a human.
2053
+ */
2054
+ permission: PermissionPolicy
2055
+ /**
2056
+ * Extra environment variables for the child process — e.g. the child
2057
+ * harness's own `DEEPSEEK_API_KEY`. Forwarded on top of a credential-scrubbed
2058
+ * copy of the parent env, so an explicit key here reaches the child while
2059
+ * ambient secrets do not leak implicitly.
2060
+ */
2061
+ env: Record<string, string>
2062
+ /**
2063
+ * Grace period (ms) for the child's EOF-driven quiesce on dispose — its
2064
+ * window to flush persistence and tear down its own nested subprocesses
2065
+ * before the parent escalates to a signal. Must not exceed
2066
+ * `MAX_TIMER_DELAY_MS`.
2067
+ */
2068
+ disposeEofGraceMs?: number
2069
+ /** Termination-escalation grace (ms); must not exceed `MAX_TIMER_DELAY_MS`. */
2070
+ disposeGraceMs?: number
2071
+ }
2072
+
2073
+ /** Fixed response to child permission requests: reject by default, or select the first allow option. */
2074
+ export type PermissionPolicy = 'allow' | 'reject'
2075
+ ```
2076
+
2077
+ 来源:[`packages/subagent/subagent-acp/src/index.ts:27`](../packages/subagent/subagent-acp/src/index.ts)
2078
+
2079
+ <a id="deepseek-aidsh-subagent-claude-code"></a>
2080
+
2081
+ ## `@deepseek-ai/dsh-subagent-claude-code`
2082
+
2083
+ 需要:`subagents` · `subprocess`
2084
+
2085
+ ```ts config-catalog
2086
+ /** Deployment-owned environment and process-release bound. */
2087
+ export interface Config {
2088
+ /**
2089
+ * Explicit environment entries layered over the subprocess seam's
2090
+ * credential-scrubbed parent environment.
2091
+ */
2092
+ env?: Record<string, string>
2093
+ /** Grace in milliseconds for Claude Code process-tree termination. */
2094
+ disposeGraceMs?: number
2095
+ }
2096
+ ```
2097
+
2098
+ 来源:[`packages/subagent/subagent-claude-code/src/index.ts:32`](../packages/subagent/subagent-claude-code/src/index.ts)
2099
+
2100
+ <a id="deepseek-aidsh-subagent-codex"></a>
2101
+
2102
+ ## `@deepseek-ai/dsh-subagent-codex`
2103
+
2104
+ 需要:`subagents` · `subprocess`
2105
+
2106
+ ```ts config-catalog
2107
+ /** Deployment-owned environment and process-release bound. */
2108
+ export interface Config {
2109
+ /**
2110
+ * Explicit environment entries layered over the subprocess seam's
2111
+ * credential-scrubbed parent environment.
2112
+ */
2113
+ env?: Record<string, string>
2114
+ /** Grace in milliseconds for app-server process-tree termination. */
2115
+ disposeGraceMs?: number
2116
+ }
2117
+ ```
2118
+
2119
+ 来源:[`packages/subagent/subagent-codex/src/index.ts:30`](../packages/subagent/subagent-codex/src/index.ts)
2120
+
2121
+ <a id="deepseek-aidsh-subagent-dsh-sdk"></a>
2122
+
2123
+ ## `@deepseek-ai/dsh-subagent-dsh-sdk`
2124
+
2125
+ 需要:`subagents`
2126
+
2127
+ ```ts config-catalog
2128
+ /** Config: how to spawn and drive the child SDK runtime process. */
2129
+ export interface Config {
2130
+ /** Provider name on `ctx.subagents` (default `dsh-sdk`). */
2131
+ providerName: string
2132
+ /** The executable to spawn for each run (the child runtime bin or packaged exe). */
2133
+ command: string
2134
+ /** Arguments passed to {@link command} (typically the child's `cordis.yml` path). */
2135
+ args: string[]
2136
+ /**
2137
+ * Working directory override for the child process and its SDK session
2138
+ * workspace. Must be non-empty; a relative path resolves against the
2139
+ * harness launch directory at load, and the result must be an existing
2140
+ * directory. When omitted, each child inherits its delegating parent
2141
+ * session's cwd — and starting one from a parent session that has no cwd
2142
+ * fails.
2143
+ */
2144
+ cwd?: string
2145
+ /** Provider route the child runtime initializes with (default `deepseek-official`). */
2146
+ provider: string
2147
+ /** Model the child runtime initializes with (default `deepseek-v4-flash`). */
2148
+ model: string
2149
+ /** Optional per-request output-token cap for the child runtime. */
2150
+ maxTokens?: number
2151
+ /**
2152
+ * Extra environment variables for the child process — e.g. the child
2153
+ * runtime's own `DEEPSEEK_API_KEY`, or `DSH_CORDIS_CONFIG` naming its
2154
+ * config. Forwarded on top of a credential-scrubbed copy of the parent
2155
+ * env, so an explicit key here reaches the child while ambient secrets do
2156
+ * not leak implicitly.
2157
+ */
2158
+ env: Record<string, string>
2159
+ /** Bound (ms) on the protocol `shutdown` exchange during dispose. */
2160
+ shutdownTimeoutMs?: number
2161
+ /**
2162
+ * Grace period (ms) for the child's EOF-driven quiesce on dispose — its
2163
+ * window to flush persistence and tear down its own nested subprocesses
2164
+ * before the parent escalates to a signal.
2165
+ */
2166
+ disposeEofGraceMs?: number
2167
+ /** Termination confirmation window (ms), including forced exit on every platform. */
2168
+ disposeGraceMs?: number
2169
+ }
2170
+ ```
2171
+
2172
+ 来源:[`packages/subagent/subagent-dsh-sdk/src/index.ts:29`](../packages/subagent/subagent-dsh-sdk/src/index.ts)
2173
+
2174
+ <a id="deepseek-aidsh-subagent-fork-in-process"></a>
2175
+
2176
+ ## `@deepseek-ai/dsh-subagent-fork-in-process`
2177
+
2178
+ 需要:`subagents`
2179
+
2180
+ ```ts config-catalog
2181
+ /** Config: the registry name to register the provider under. */
2182
+ export interface Config {
2183
+ /** Provider name on `ctx.subagents` (default `fork`). */
2184
+ providerName: string
2185
+ }
2186
+ ```
2187
+
2188
+ 来源:[`packages/subagent/subagent-fork-in-process/src/index.ts:31`](../packages/subagent/subagent-fork-in-process/src/index.ts)
2189
+
2190
+ <a id="deepseek-aidsh-subagent-spawn-in-process"></a>
2191
+
2192
+ ## `@deepseek-ai/dsh-subagent-spawn-in-process`
2193
+
2194
+ 需要:`subagents`
2195
+
2196
+ ```ts config-catalog
2197
+ /** Config: the registry name to register the provider under. */
2198
+ export interface Config {
2199
+ /** Provider name on `ctx.subagents` (default `spawn`). */
2200
+ providerName: string
2201
+ }
2202
+ ```
2203
+
2204
+ 来源:[`packages/subagent/subagent-spawn-in-process/src/index.ts:25`](../packages/subagent/subagent-spawn-in-process/src/index.ts)
2205
+
2206
+ <a id="deepseek-aidsh-subprocess-e2b"></a>
2207
+
2208
+ ## `@deepseek-ai/dsh-subprocess-e2b`
2209
+
2210
+ 需要:`e2b`
2211
+
2212
+ ```ts config-catalog
2213
+ /** Configuration for the E2B subprocess adapter. */
2214
+ export interface Config {
2215
+ /** Remote status/liveness poll cadence in milliseconds; each tick is one control-plane request. */
2216
+ pollMs?: number
2217
+ }
2218
+ ```
2219
+
2220
+ 来源:[`packages/e2b/subprocess-e2b/src/index.ts:25`](../packages/e2b/subprocess-e2b/src/index.ts)
2221
+
2222
+ <a id="deepseek-aidsh-system-prompt"></a>
2223
+
2224
+ ## `@deepseek-ai/dsh-system-prompt`
2225
+
2226
+ ```ts config-catalog
2227
+ /** Plugin config: the deployment-authored fragment of the system prompt (see {@link Config.persona} for its contract). */
2228
+ export interface Config {
2229
+ /** Include the fixed DeepSeek Harness identity before the deployment persona (default true). */
2230
+ includeHarnessIdentity?: boolean
2231
+ /** Include dynamic runtime-context snapshots in model history (default true). */
2232
+ includeRuntimeContext?: boolean
2233
+ /**
2234
+ * Deployment-wide order-0 persona template. A scoped section named
2235
+ * `deployment:persona` shadows it; `{{variable}}` references are strict.
2236
+ */
2237
+ persona?: string
2238
+ /**
2239
+ * Model-facing tool names in order, with {@link TOOL_ORDER_REST} exactly once.
2240
+ * Invalid fields fail at load and unknown names fail at assembly; known names
2241
+ * hidden in one scope may be absent there. Omitted means lexicographic order.
2242
+ */
2243
+ toolOrder?: string[]
2244
+ }
2245
+ ```
2246
+
2247
+ 来源:[`packages/core/system-prompt/src/index.ts:186`](../packages/core/system-prompt/src/index.ts)
2248
+
2249
+ <a id="deepseek-aidsh-terminal-bash"></a>
2250
+
2251
+ ## `@deepseek-ai/dsh-terminal-bash`
2252
+
2253
+ 需要:`pty` · `sandboxPolicy` · `subprocess`
2254
+
2255
+ ```ts config-catalog
2256
+ /** Public plugin configuration. */
2257
+ export interface Config {
2258
+ /** Backend registry type (default: `shell`). */
2259
+ backendType?: string
2260
+ /** Interactive shell executable (default: `/bin/bash`). */
2261
+ shellPath?: string
2262
+ /** Shell arguments (default: `--noprofile --norc -i`). */
2263
+ shellArgs?: string[]
2264
+ /** Terminal rows. */
2265
+ rows?: number
2266
+ /** Terminal columns. */
2267
+ cols?: number
2268
+ /** Maximum retained logical lines. */
2269
+ scrollbackLines?: number
2270
+ /** Maximum retained UTF-8 bytes. */
2271
+ scrollbackMaxBytes?: number
2272
+ /** Maximum bytes returned by one read or settled viewport. */
2273
+ maxReadBytes?: number
2274
+ /** Readiness polling interval. */
2275
+ pollIntervalMs?: number
2276
+ /** Delay before Linux exact syscall probes. */
2277
+ exactProbeAfterMs?: number
2278
+ /** Silence duration that yields `inferred_idle`. */
2279
+ idleSilenceMs?: number
2280
+ /**
2281
+ * Extra wait beyond `idleSilenceMs`, once a prompt marker was seen, for the shell to
2282
+ * regain the foreground before `inferred_idle` settles; at least one `pollIntervalMs`.
2283
+ */
2284
+ handoffGraceMs?: number
2285
+ /** Absolute send wait bound. */
2286
+ timeoutMs?: number
2287
+ /** Grace before teardown escalates to `SIGKILL`. */
2288
+ disposeGraceMs?: number
2289
+ }
2290
+ ```
2291
+
2292
+ 来源:[`packages/terminal/terminal-bash/src/config.ts:6`](../packages/terminal/terminal-bash/src/config.ts)
2293
+
2294
+ <a id="deepseek-aidsh-time-context"></a>
2295
+
2296
+ ## `@deepseek-ai/dsh-time-context`
2297
+
2298
+ 需要:`agents`
2299
+
2300
+ ```ts config-catalog
2301
+ /** Request-preparation clock formatting and append scheduling. Invalid values fail plugin load. */
2302
+ export interface Config {
2303
+ /** Fallback display zone when the open turn has no unique browser zone. Omit to use the process zone. */
2304
+ timeZone?: string
2305
+ /** Minimum milliseconds between durable injections in one session. Omit or set to 0 to inject at every eligible step. */
2306
+ refreshIntervalMs?: number
2307
+ }
2308
+ ```
2309
+
2310
+ 来源:[`packages/context/time-context/src/index.ts:27`](../packages/context/time-context/src/index.ts)
2311
+
2312
+ <a id="deepseek-aidsh-tmux-context"></a>
2313
+
2314
+ ## `@deepseek-ai/dsh-tmux-context`
2315
+
2316
+ 需要:`agents`
2317
+
2318
+ ```ts config-catalog
2319
+ /** Per-turn tmux-location scheduling. Invalid values fail plugin load. */
2320
+ export interface Config {
2321
+ /** Minimum milliseconds between durable injections in one session. Omit or set to 0 to inject on every eligible change. */
2322
+ refreshIntervalMs?: number
2323
+ }
2324
+ ```
2325
+
2326
+ 来源:[`packages/context/tmux-context/src/index.ts:34`](../packages/context/tmux-context/src/index.ts)
2327
+
2328
+ <a id="deepseek-aidsh-token-meter"></a>
2329
+
2330
+ ## `@deepseek-ai/dsh-token-meter`
2331
+
2332
+ ```ts config-catalog
2333
+ /** Token-meter plugin configuration; the fixed estimator has no settings. */
2334
+ export type TokenMeterConfig = Record<string, never>
2335
+ ```
2336
+
2337
+ 来源:[`packages/llm/token-meter/src/types.ts:12`](../packages/llm/token-meter/src/types.ts)
2338
+
2339
+ <a id="deepseek-aidsh-tool-bash"></a>
2340
+
2341
+ ## `@deepseek-ai/dsh-tool-bash`
2342
+
2343
+ 需要:`tools` · `bash` · `systemPrompt` · `bashEnv`
2344
+
2345
+ ```ts config-catalog
2346
+ /** Configuration for the bash tool. */
2347
+ export interface Config {
2348
+ /** Expose `run_in_background` (default true); disabled calls are also rejected. */
2349
+ enableRunInBackground?: boolean
2350
+ }
2351
+ ```
2352
+
2353
+ 来源:[`packages/shell/tool-bash/src/index.ts:34`](../packages/shell/tool-bash/src/index.ts)
2354
+
2355
+ <a id="deepseek-aidsh-tool-bash-persistent"></a>
2356
+
2357
+ ## `@deepseek-ai/dsh-tool-bash-persistent`
2358
+
2359
+ 需要:`tools` · `pty`
2360
+
2361
+ ```ts config-catalog
2362
+ /** Configuration for the persistent Bash tool. */
2363
+ export interface Config {
2364
+ /** PTY backend used for each owner-isolated persistent shell (default `shell`). */
2365
+ backendType?: string
2366
+ /** Wall-clock limit for one command (default 300000). */
2367
+ timeoutMs?: number
2368
+ /** Maximum returned command-output characters before clipping (default 16000). */
2369
+ maxOutputChars?: number
2370
+ /** Model-facing tool description; deployments may describe their environment. */
2371
+ description?: string
2372
+ }
2373
+ ```
2374
+
2375
+ 来源:[`packages/shell/tool-bash-persistent/src/index.ts:405`](../packages/shell/tool-bash-persistent/src/index.ts)
2376
+
2377
+ <a id="deepseek-aidsh-tool-fs"></a>
2378
+
2379
+ ## `@deepseek-ai/dsh-tool-fs`
2380
+
2381
+ 需要:`tools` · `fs` · `systemPrompt`
2382
+
2383
+ ```ts config-catalog
2384
+ /** Plugin config (all optional — `Config` supplies the defaults). */
2385
+ export interface Config {
2386
+ /** Default and maximum number of lines returned by one `read` call. */
2387
+ readLimit?: number
2388
+ /** Maximum characters returned for a single line before truncation. */
2389
+ readMaxLineLength?: number
2390
+ /** Maximum bytes returned for the selected lines of one `read` call. */
2391
+ readMaxBytes?: number
2392
+ /** Files at or above this size stream instead of loading whole into memory. */
2393
+ readStreamMinSize?: number
2394
+ }
2395
+ ```
2396
+
2397
+ 来源:[`packages/fs/tool-fs/src/index.ts:25`](../packages/fs/tool-fs/src/index.ts)
2398
+
2399
+ <a id="deepseek-aidsh-tool-fs-search"></a>
2400
+
2401
+ ## `@deepseek-ai/dsh-tool-fs-search`
2402
+
2403
+ 需要:`tools` · `systemPrompt` · `subprocess`
2404
+
2405
+ ```ts config-catalog
2406
+ /** Plugin config; over-cap glob sampling is an explicit deployment choice and the remaining fields have defaults. */
2407
+ export interface Config {
2408
+ /** Whether an over-cap `glob` page is sampled across top-level entries instead of taking the modification-time head. */
2409
+ sampleOverCapGlobResults: boolean
2410
+ /** Max paths one `glob` call retains inline; later paths go to the formatted spill file. */
2411
+ globMaxResults?: number
2412
+ /** Max flat matches one `grep` call retains inline; later matches go to the formatted spill file. */
2413
+ grepMaxMatches?: number
2414
+ /** Max bytes retained for one matched-line preview (the cut preserves UTF-8 boundaries). */
2415
+ grepMaxLineBytes?: number
2416
+ /** Max bytes of one search's serialized `presentationMeta`; trailing groups/paths drop past it so the persisted card stays bounded. */
2417
+ searchMetaMaxBytes?: number
2418
+ /** Max complete raw `rg` stdout bytes a search will parse; larger raw output fails with `SEARCH_RAW_OUTPUT_OVERFLOW`. */
2419
+ rawOutputMaxBytes?: number
2420
+ /** Terminate-escalation grace (ms), handed to the subprocess seam and bounded by `MAX_TIMER_DELAY_MS`. */
2421
+ graceMs?: number
2422
+ /** Max bytes retained for one search's stderr tail; the excerpt is embedded in `SEARCH_*` error messages, never shown on success. */
2423
+ stderrMaxBytes?: number
2424
+ /**
2425
+ * Cooperative tool-call timeout budget (ms) on both tools, enforced by
2426
+ * `@deepseek-ai/dsh-tool-call-timeout-policy` through `exec.signal`.
2427
+ */
2428
+ timeoutMs?: number
2429
+ }
2430
+ ```
2431
+
2432
+ 来源:[`packages/fs/tool-fs-search/src/index.ts:73`](../packages/fs/tool-fs-search/src/index.ts)
2433
+
2434
+ <a id="deepseek-aidsh-tool-goal"></a>
2435
+
2436
+ ## `@deepseek-ai/dsh-tool-goal`
2437
+
2438
+ 需要:`agents` · `goals` · `tools` · `systemPrompt`
2439
+
2440
+ ```ts config-catalog
2441
+ /** Model policy and hard lower bounds for goal-state updates. */
2442
+ export interface Config {
2443
+ /** Minimum admitted goal rounds before the model may self-report `blocked`. */
2444
+ blockedAfterConsecutiveRounds?: number
2445
+ }
2446
+ ```
2447
+
2448
+ 来源:[`packages/goal/tool-goal/src/index.ts:26`](../packages/goal/tool-goal/src/index.ts)
2449
+
2450
+ <a id="deepseek-aidsh-tool-jobs"></a>
2451
+
2452
+ ## `@deepseek-ai/dsh-tool-jobs`
2453
+
2454
+ 需要:`tools` · `tasks` · `systemPrompt`
2455
+
2456
+ ```ts config-catalog
2457
+ /** Configures bounded `job_output` waits and completion-notice delivery. */
2458
+ export interface Config {
2459
+ /** Wait duration applied when `job_output` sets `wait` without `timeout_ms` (default 30s). */
2460
+ waitTimeoutMs?: number
2461
+ /** Hard cap on any single wait; a larger model-supplied `timeout_ms` is clamped down to it (default 10min). */
2462
+ maxWaitTimeoutMs?: number
2463
+ /** Whether a completion opens a turn on an idle owner (default `wakeup`). */
2464
+ completionDelivery?: CompletionDelivery
2465
+ /**
2466
+ * Turns one owner may have opened by completion wakes before the next
2467
+ * notice degrades to injection, reset by any user-authored input (default 3).
2468
+ * Bounds the self-exciting chain where a woken turn starts the job whose
2469
+ * completion wakes it again.
2470
+ */
2471
+ maxConsecutiveWakes?: number
2472
+ }
2473
+
2474
+ /**
2475
+ * How an unreported completion reaches an owner that is already idle: `wakeup`
2476
+ * opens a turn for it, `quiet` leaves it pending until something else wakes the
2477
+ * owner. A busy owner is injected either way.
2478
+ */
2479
+ export type CompletionDelivery = 'quiet' | 'wakeup'
2480
+ ```
2481
+
2482
+ 来源:[`packages/jobs/tool-jobs/src/index.ts:32`](../packages/jobs/tool-jobs/src/index.ts)
2483
+
2484
+ <a id="deepseek-aidsh-tool-lsp"></a>
2485
+
2486
+ ## `@deepseek-ai/dsh-tool-lsp`
2487
+
2488
+ 需要:`tools` · `lsp` · `systemPrompt`
2489
+
2490
+ ```ts config-catalog
2491
+ /** Plugin configuration: result caps and the timeout budget. */
2492
+ export interface Config {
2493
+ /** Largest number of rendered locations before an omission marker (default 100). */
2494
+ maxLocations?: number
2495
+ /** Largest complete rendered result in characters, including truncation metadata (default 16000). */
2496
+ maxResultChars?: number
2497
+ /** Tool-call timeout budget in ms (default 60000). */
2498
+ timeoutMs?: number
2499
+ }
2500
+ ```
2501
+
2502
+ 来源:[`packages/lsp/tool-lsp/src/index.ts:58`](../packages/lsp/tool-lsp/src/index.ts)
2503
+
2504
+ <a id="deepseek-aidsh-tool-pwsh"></a>
2505
+
2506
+ ## `@deepseek-ai/dsh-tool-pwsh`
2507
+
2508
+ 需要:`tools` · `bash` · `systemPrompt` · `bashEnv`
2509
+
2510
+ ```ts config-catalog
2511
+ /** Configuration for the pwsh tool. */
2512
+ export interface Config {
2513
+ /** Expose `run_in_background` (default true); disabled calls are also rejected. */
2514
+ enableRunInBackground?: boolean
2515
+ }
2516
+ ```
2517
+
2518
+ 来源:[`packages/shell/tool-pwsh/src/index.ts:52`](../packages/shell/tool-pwsh/src/index.ts)
2519
+
2520
+ <a id="deepseek-aidsh-tool-ralph"></a>
2521
+
2522
+ ## `@deepseek-ai/dsh-tool-ralph`
2523
+
2524
+ 需要:`tools` · `workflows` · `subagents` · `systemPrompt`
2525
+
2526
+ ```ts config-catalog
2527
+ /** Deployment policy for the fixed Ralph workflow. */
2528
+ export interface Config {
2529
+ /** Fresh structured-output provider used for every round (default `spawn`). */
2530
+ subagentProvider?: string
2531
+ /** Default and deployment ceiling for one call's round count (default 256). */
2532
+ maxRounds?: number
2533
+ /** Maximum serialized characters in one structured handoff (default 16384). */
2534
+ maxHandoffChars?: number
2535
+ /** Maximum characters in a successful parent-facing terminal text (default 16384). */
2536
+ maxResultChars?: number
2537
+ }
2538
+ ```
2539
+
2540
+ 来源:[`packages/workflow/tool-ralph/src/index.ts:23`](../packages/workflow/tool-ralph/src/index.ts)
2541
+
2542
+ <a id="deepseek-aidsh-tool-session-query"></a>
2543
+
2544
+ ## `@deepseek-ai/dsh-tool-session-query`
2545
+
2546
+ 需要:`tools` · `systemPrompt` · `sessionQuery`
2547
+
2548
+ ```ts config-catalog
2549
+ /** Deployment-owned search count and timeout bounds. */
2550
+ export interface Config {
2551
+ /** Maximum authorized hits returned by one search call. Defaults to 100. */
2552
+ maxSearchResults?: number
2553
+ /** Cooperative full-text search deadline in milliseconds. Defaults to 30000. */
2554
+ searchTimeoutMs?: number
2555
+ }
2556
+ ```
2557
+
2558
+ 来源:[`packages/session-query/tool-session-query/src/index.ts:29`](../packages/session-query/tool-session-query/src/index.ts)
2559
+
2560
+ <a id="deepseek-aidsh-tool-skill"></a>
2561
+
2562
+ ## `@deepseek-ai/dsh-tool-skill`
2563
+
2564
+ 需要:`agents` · `tools` · `skills`
2565
+
2566
+ ```ts config-catalog
2567
+ /** Model-facing skill catalog configuration. */
2568
+ export interface Config {
2569
+ /** Maximum normalized description length rendered in the session catalog; minimum 3. */
2570
+ catalogDescriptionMaxLength?: number
2571
+ }
2572
+ ```
2573
+
2574
+ 来源:[`packages/skill/tool-skill/src/index.ts:61`](../packages/skill/tool-skill/src/index.ts)
2575
+
2576
+ <a id="deepseek-aidsh-tool-str-replace-editor"></a>
2577
+
2578
+ ## `@deepseek-ai/dsh-tool-str-replace-editor`
2579
+
2580
+ 需要:`tools` · `fs`
2581
+
2582
+ ```ts config-catalog
2583
+ /** Configuration for the string-replacement editor tool. */
2584
+ export interface Config {
2585
+ /** Maximum returned view characters before clipping (default 16000). */
2586
+ maxOutputChars?: number
2587
+ /** Model-facing tool description. */
2588
+ description?: string
2589
+ }
2590
+ ```
2591
+
2592
+ 来源:[`packages/fs/tool-str-replace-editor/src/index.ts:497`](../packages/fs/tool-str-replace-editor/src/index.ts)
2593
+
2594
+ <a id="deepseek-aidsh-tool-subagent"></a>
2595
+
2596
+ ## `@deepseek-ai/dsh-tool-subagent`
2597
+
2598
+ 需要:`tools` · `subagents` · `systemPrompt`
2599
+
2600
+ ```ts config-catalog
2601
+ /** Config: which registered provider this tool delegates to, plus child defaults. */
2602
+ export interface Config {
2603
+ /** The `ctx.subagents` provider name to start runs on (e.g. `spawn`, `acp`). */
2604
+ provider: string
2605
+ /**
2606
+ * Model-facing tool name (default `subagent`). Each loaded instance must use
2607
+ * a distinct name.
2608
+ */
2609
+ toolName?: string
2610
+ /**
2611
+ * Expose `run_in_background` (default true). Disabled instances omit the
2612
+ * parameter and reject forced background calls.
2613
+ */
2614
+ enableRunInBackground?: boolean
2615
+ /**
2616
+ * Background execution policy (default `one-shot`). `one-shot` defaults calls
2617
+ * to foreground; `continuable` defaults them to background, requires a provider
2618
+ * with the `prepareContinuable` capability, and returns the durable child id.
2619
+ * Follow-up adapters remain independently optional.
2620
+ */
2621
+ backgroundMode?: 'one-shot' | 'continuable'
2622
+ /**
2623
+ * Agent options applied to every child; omitted fields use child-loop defaults.
2624
+ */
2625
+ agentOptions?: AgentOptions
2626
+ /**
2627
+ * Per-child persona that shadows `deployment:persona`. Requires the
2628
+ * provider's `persona` capability; omission preserves the deployment persona.
2629
+ */
2630
+ persona?: string
2631
+ /**
2632
+ * Tool filter applied to every child. Filtered tools disappear from its
2633
+ * prompt and reject execution. Requires the provider's `toolFilter`
2634
+ * capability; unknown names fail startup.
2635
+ */
2636
+ toolFilter?: {
2637
+ /** Global tool names the child keeps; everything else is removed. */
2638
+ allow?: string[]
2639
+ /** Global tool names removed from the child. */
2640
+ deny?: string[]
2641
+ }
2642
+ /**
2643
+ * Maximum child depth: a non-negative safe integer (default `3`; `0` forbids
2644
+ * delegation entirely), or `'provider-managed'` to send no cap. A numeric cap
2645
+ * requires the provider's `depthLimit` capability (mount fails loud
2646
+ * otherwise). The provider checks the calling agent's current depth at every
2647
+ * start; the tool remains model-visible so runtime policy owns rejection.
2648
+ * `'provider-managed'` is for an out-of-process provider whose recursion
2649
+ * budget belongs to the child runtime or its own deployment.
2650
+ */
2651
+ maxDepth?: number | 'provider-managed'
2652
+ }
2653
+ ```
2654
+
2655
+ 依赖:[`AgentOptions`](subsystems/core.md)
2656
+
2657
+ 来源:[`packages/subagent/tool-subagent/src/index.ts:29`](../packages/subagent/tool-subagent/src/index.ts)
2658
+
2659
+ <a id="deepseek-aidsh-tool-subagent-report"></a>
2660
+
2661
+ ## `@deepseek-ai/dsh-tool-subagent-report`
2662
+
2663
+ 需要:`subagents` · `tools` · `systemPrompt`
2664
+
2665
+ ```ts config-catalog
2666
+ /** Config: how accepted reports are scheduled on the parent. */
2667
+ export interface Config {
2668
+ /**
2669
+ * Parent scheduling (default `wakeup`). `wakeup` creates one ordinary later
2670
+ * parent turn; `quiet` adds context without waking, so a parked parent learns
2671
+ * of the report only when something else wakes it.
2672
+ */
2673
+ reportDelivery?: SubagentReportDelivery
2674
+ }
2675
+ ```
2676
+
2677
+ 依赖:[`SubagentReportDelivery`](subsystems/subagent.md)
2678
+
2679
+ 来源:[`packages/subagent/tool-subagent-report/src/index.ts:27`](../packages/subagent/tool-subagent-report/src/index.ts)
2680
+
2681
+ <a id="deepseek-aidsh-tool-terminal"></a>
2682
+
2683
+ ## `@deepseek-ai/dsh-tool-terminal`
2684
+
2685
+ 需要:`pty` · `tools` · `systemPrompt`
2686
+
2687
+ ```ts config-catalog
2688
+ /** Model-facing terminal tool configuration. */
2689
+ export interface Config {
2690
+ /** Expose `run_in_background` and accept background sends (default true). */
2691
+ enableRunInBackground?: boolean
2692
+ /** Maximum UTF-8 bytes in one complete terminal or task-output result. */
2693
+ maxResultBytes?: number
2694
+ }
2695
+ ```
2696
+
2697
+ 来源:[`packages/terminal/tool-terminal/src/index.ts:35`](../packages/terminal/tool-terminal/src/index.ts)
2698
+
2699
+ <a id="deepseek-aidsh-tool-todo"></a>
2700
+
2701
+ ## `@deepseek-ai/dsh-tool-todo`
2702
+
2703
+ 需要:`tools`
2704
+
2705
+ ```ts config-catalog
2706
+ /** Model-facing todo tool configuration. */
2707
+ export interface Config {
2708
+ /**
2709
+ * Required deployment choice for whether several todos may be `in_progress` at once. True suits
2710
+ * agents that run work concurrently — subagents, background commands, workflow fan-out — and the
2711
+ * description then instructs the model to mark every actively worked task. False restores the
2712
+ * single-active discipline: the description asks for exactly one, and a call marking more is
2713
+ * rejected.
2714
+ */
2715
+ allowParallelInProgress: boolean
2716
+ }
2717
+ ```
2718
+
2719
+ 来源:[`packages/todo/tool-todo/src/index.ts:29`](../packages/todo/tool-todo/src/index.ts)
2720
+
2721
+ <a id="deepseek-aidsh-tool-web"></a>
2722
+
2723
+ ## `@deepseek-ai/dsh-tool-web`
2724
+
2725
+ 需要:`tools` · `web` · `systemPrompt`
2726
+
2727
+ ```ts config-catalog
2728
+ /** Plugin config: which web tools to register, the source cap, per-tool budgets, and the fetch output cap. */
2729
+ export interface Config {
2730
+ /** Register `web_search`. Defaults to true. */
2731
+ search?: boolean
2732
+ /** Register `web_fetch`. Defaults to true. */
2733
+ fetch?: boolean
2734
+ /** Upper bound on sources returned by one `web_search` call. */
2735
+ searchMaxResults?: number
2736
+ /** Cooperative timeout budget (ms) for `web_fetch`. Defaults to 30000. */
2737
+ fetchTimeoutMs?: number
2738
+ /** Cooperative timeout budget (ms) for `web_search`. Defaults to 30000. */
2739
+ searchTimeoutMs?: number
2740
+ /** Cap on source characters converted and complete `web_fetch` output characters. Defaults to 200000. */
2741
+ fetchMaxOutputChars?: number
2742
+ }
2743
+ ```
2744
+
2745
+ 来源:[`packages/web/tool-web/src/index.ts:37`](../packages/web/tool-web/src/index.ts)
2746
+
2747
+ <a id="deepseek-aidsh-tool-workflow"></a>
2748
+
2749
+ ## `@deepseek-ai/dsh-tool-workflow`
2750
+
2751
+ 需要:`tools` · `workflows` · `systemPrompt`
2752
+
2753
+ ```ts config-catalog
2754
+ /** Config: the model-facing tool name plus result rendering caps. */
2755
+ export interface Config {
2756
+ /** The model-facing tool name to register (default `workflow`). */
2757
+ toolName?: string
2758
+ /** Rendered-result ceiling, in characters: a longer JSON value is truncated with a notice (default 50000). */
2759
+ maxResultChars?: number
2760
+ }
2761
+ ```
2762
+
2763
+ 来源:[`packages/workflow/tool-workflow/src/index.ts:33`](../packages/workflow/tool-workflow/src/index.ts)
2764
+
2765
+ <a id="deepseek-aidsh-tools"></a>
2766
+
2767
+ ## `@deepseek-ai/dsh-tools`
2768
+
2769
+ 需要:`systemPrompt`
2770
+
2771
+ ```ts config-catalog
2772
+ /** Plugin config: how the registered tools are presented to the model. */
2773
+ export interface Config {
2774
+ /**
2775
+ * Model presentation. `native` (default) sends every visible schema; `code`
2776
+ * sends only `run_code` plus a generated SDK prompt and collapses the
2777
+ * executor to the same surface (a model-direct call may only name
2778
+ * `run_code`; `run_code` SDK sub-dispatches keep every visible tool); `both`
2779
+ * sends both forms. Code modes require a `ctx.codeRuntime` whose `language`
2780
+ * has a registered SDK renderer (TypeScript or Python) and fail prompt
2781
+ * assembly when it is absent or has no renderer. Under `code`, native names
2782
+ * in `toolOrder` are invalid.
2783
+ */
2784
+ mode?: ToolPresentationMode
2785
+ /**
2786
+ * Concurrency cap for a `run_code` program's overlapping sub-calls
2787
+ * (default 10, the loop scheduler's own default). Sub-calls follow the
2788
+ * native scheduling contract — only calls whose tools classify
2789
+ * concurrency-safe overlap; exclusive calls form barriers — so `1`
2790
+ * restores strictly serial dispatch. Must be a positive integer.
2791
+ */
2792
+ maxParallelSubCalls?: number
2793
+ }
2794
+
2795
+ /** How the registry presents its tools to the model (see {@link Config.mode}). */
2796
+ export type ToolPresentationMode = 'native' | 'code' | 'both'
2797
+ ```
2798
+
2799
+ 来源:[`packages/core/tools/src/index.ts:654`](../packages/core/tools/src/index.ts)
2800
+
2801
+ <a id="deepseek-aidsh-typert-loader"></a>
2802
+
2803
+ ## `@deepseek-ai/dsh-typert-loader`
2804
+
2805
+ 需要:`typert` · `loader`
2806
+
2807
+ ```ts config-catalog
2808
+ /** Additional package artifacts whose owning plugins are nested behind another Loader entry. */
2809
+ export interface Config {
2810
+ /** Exact npm package names that must resolve and export `./typert`. */
2811
+ packages?: string[]
2812
+ }
2813
+ ```
2814
+
2815
+ 来源:[`packages/typert/loader/src/index.ts:47`](../packages/typert/loader/src/index.ts)
2816
+
2817
+ <a id="deepseek-aidsh-user-approval"></a>
2818
+
2819
+ ## `@deepseek-ai/dsh-user-approval`
2820
+
2821
+ ```ts config-catalog
2822
+ /** Plugin config. All optional — `static Config` supplies the defaults. */
2823
+ export interface Config {
2824
+ /**
2825
+ * The deployment's default {@link ApprovalPolicy} for sessions without an
2826
+ * `approval/policy` override — `'ask'` delegates to the composed answerers
2827
+ * (fail-closed with none); `'never'` auto-rejects every ask without
2828
+ * prompting (the deterministic CI/unattended stance).
2829
+ */
2830
+ readonly policy?: ApprovalPolicy
2831
+ }
2832
+
2833
+ /**
2834
+ * A session's approval policy — what happens to an {@link ApprovalService}
2835
+ * ask BEFORE any interactive answerer sees it:
2836
+ *
2837
+ * - `'ask'` (the default) — delegate to the composed answerers; with none
2838
+ * composed the chain falls through to the fail-closed `'unavailable'`.
2839
+ * - `'never'` — never prompt anyone: every ask resolves `'rejected'`
2840
+ * deterministically. The strict headless stance (CI, unattended runs) and
2841
+ * the policy whose outcome is knowable without asking.
2842
+ */
2843
+ export type ApprovalPolicy = 'ask' | 'never'
2844
+ ```
2845
+
2846
+ 来源:[`packages/interaction/user-approval/src/index.ts:177`](../packages/interaction/user-approval/src/index.ts)
2847
+
2848
+ <a id="deepseek-aidsh-web"></a>
2849
+
2850
+ ## `@deepseek-ai/dsh-web`
2851
+
2852
+ ```ts config-catalog
2853
+ /**
2854
+ * Config for the web seam. `searchProvider` / `fetchProvider` pin which provider
2855
+ * wins for each capability; both are optional (a single registered usable
2856
+ * provider auto-selects). Operational overrides such as environment variables
2857
+ * must feed these same fields rather than introduce a hidden priority chain.
2858
+ */
2859
+ export interface WebRuntimeConfig {
2860
+ /** Explicit search provider id. Omitted = auto-select when exactly one usable. */
2861
+ readonly searchProvider?: string
2862
+ /** Explicit fetch provider id. Omitted = auto-select when exactly one usable. */
2863
+ readonly fetchProvider?: string
2864
+ }
2865
+ ```
2866
+
2867
+ 来源:[`packages/web/web/src/index.ts:55`](../packages/web/web/src/index.ts)
2868
+
2869
+ <a id="deepseek-aidsh-web-app"></a>
2870
+
2871
+ ## `@deepseek-ai/dsh-web-app`
2872
+
2873
+ 需要:`webServer`
2874
+
2875
+ ```ts config-catalog
2876
+ /** Plugin config: composed deployment settings plus per-invocation command-line values. */
2877
+ export interface Config {
2878
+ /** Print the URL line on activation; a non-interactive layer can turn it off. */
2879
+ printUrl: boolean
2880
+ /**
2881
+ * Register the model-visible surface context (the `app:web-surface` prompt
2882
+ * section and the `DSH_WEB_URL` bash variable). A one-shot non-interactive
2883
+ * layer can turn it off when its user is not in the GUI, so the
2884
+ * orientation text would be false.
2885
+ */
2886
+ surfaceContext: boolean
2887
+ /** Explicit `--trusted-host` authorities from this invocation. */
2888
+ trustedHosts: string[]
2889
+ }
2890
+ ```
2891
+
2892
+ 来源:[`packages/bundle/web-app/src/index.ts:38`](../packages/bundle/web-app/src/index.ts)
2893
+
2894
+ <a id="deepseek-aidsh-web-fetch-http"></a>
2895
+
2896
+ ## `@deepseek-ai/dsh-web-fetch-http`
2897
+
2898
+ 需要:`web`
2899
+
2900
+ ```ts config-catalog
2901
+ /** Plugin config: the provider's transport and size limits plus its `User-Agent` (all defaulted). */
2902
+ export interface Config {
2903
+ /** Maximum accepted request URL length. */
2904
+ maxUrlLength?: number
2905
+ /** Maximum response body size in bytes. */
2906
+ maxResponseBytes?: number
2907
+ /** Maximum decoded body length in characters. */
2908
+ maxBodyChars?: number
2909
+ /** Default fetch timeout in milliseconds, within Node's timer range. */
2910
+ timeoutMs?: number
2911
+ /** Maximum number of same-origin redirect hops to follow. */
2912
+ maxRedirects?: number
2913
+ /** `User-Agent` header sent on every request. */
2914
+ userAgent?: string
2915
+ }
2916
+ ```
2917
+
2918
+ 来源:[`packages/web/web-fetch-http/src/index.ts:34`](../packages/web/web-fetch-http/src/index.ts)
2919
+
2920
+ <a id="deepseek-aidsh-web-search-deepseek"></a>
2921
+
2922
+ ## `@deepseek-ai/dsh-web-search-deepseek`
2923
+
2924
+ 需要:`web`
2925
+
2926
+ ```ts config-catalog
2927
+ /** Plugin config (all optional — `apply` fills env-var and constant defaults). */
2928
+ export interface Config {
2929
+ /** Literal DeepSeek API key; prefer {@link apiKeyEnv} so no secret enters configuration files. */
2930
+ apiKey?: string
2931
+ /** Credential reference resolved for each search; defaults to `DEEPSEEK_API_KEY`. */
2932
+ apiKeyEnv?: string
2933
+ /** Anthropic-compatible endpoint base; `/messages` is appended. */
2934
+ baseURL?: string
2935
+ /** Anthropic-format model name. Defaults to `deepseek-v4-flash`. */
2936
+ model?: string
2937
+ /** `anthropic-version` header value. Defaults to `2023-06-01`. */
2938
+ apiVersion?: string
2939
+ /** Upper bound on generated tokens for the Messages request. Defaults to 4096. */
2940
+ maxTokens?: number
2941
+ /** Maximum `web_search` server-tool uses per request. Defaults to 5. */
2942
+ maxUses?: number
2943
+ }
2944
+ ```
2945
+
2946
+ 来源:[`packages/web/web-search-deepseek/src/index.ts:46`](../packages/web/web-search-deepseek/src/index.ts)
2947
+
2948
+ <a id="deepseek-aidsh-web-search-exa"></a>
2949
+
2950
+ ## `@deepseek-ai/dsh-web-search-exa`
2951
+
2952
+ 需要:`web`
2953
+
2954
+ ```ts config-catalog
2955
+ /** Plugin config (all optional — `apply` fills env-var and constant defaults). */
2956
+ export interface Config {
2957
+ /** Exa API key. Falls back to `$EXA_API_KEY`. Empty → provider unavailable. */
2958
+ apiKey?: string
2959
+ /** Endpoint base; `/search` is appended. Defaults to the public API. */
2960
+ baseURL?: string
2961
+ /** Retrieval mode sent as Exa's `type`. Defaults to `auto`. */
2962
+ searchType?: 'auto' | 'keyword' | 'neural'
2963
+ /** Default result count when a request carries no `maxResults`. Omitted = none. */
2964
+ numResults?: number
2965
+ /** Highlight sentences requested per result. Defaults to 1. */
2966
+ highlightsPerResult?: number
2967
+ }
2968
+ ```
2969
+
2970
+ 来源:[`packages/web/web-search-exa/src/index.ts:38`](../packages/web/web-search-exa/src/index.ts)
2971
+
2972
+ <a id="deepseek-aidsh-web-search-perplexity"></a>
2973
+
2974
+ ## `@deepseek-ai/dsh-web-search-perplexity`
2975
+
2976
+ 需要:`web`
2977
+
2978
+ ```ts config-catalog
2979
+ /** Plugin config (all optional — `apply` fills env-var and constant defaults). */
2980
+ export interface Config {
2981
+ /** Perplexity API key. Falls back to `$PERPLEXITY_API_KEY`. Empty → unavailable. */
2982
+ apiKey?: string
2983
+ /** Endpoint base; `/chat/completions` is appended. Defaults to the public API. */
2984
+ baseURL?: string
2985
+ /** Search model name. Defaults to `sonar`. */
2986
+ model?: string
2987
+ /** Upper bound on generated answer tokens. Defaults to 1024. */
2988
+ maxTokens?: number
2989
+ /** Recency window sent as `search_recency_filter`. Omitted = no filter. */
2990
+ searchRecency?: 'day' | 'week' | 'month' | 'year'
2991
+ }
2992
+ ```
2993
+
2994
+ 来源:[`packages/web/web-search-perplexity/src/index.ts:32`](../packages/web/web-search-perplexity/src/index.ts)
2995
+
2996
+ <a id="deepseek-aidsh-workflow-worker-thread"></a>
2997
+
2998
+ ## `@deepseek-ai/dsh-workflow-worker-thread`
2999
+
3000
+ 需要:`subagents`
3001
+
3002
+ ```ts config-catalog
3003
+ /** Plugin config (all optional — `static Config` supplies the defaults). */
3004
+ export interface Config {
3005
+ /** The `ctx.subagents` provider children run on (default `spawn`). */
3006
+ provider?: string
3007
+ /** Concurrent `agent()` ceiling; `0` (the default) auto-resolves to `min(16, max(1, cores - 2))`. */
3008
+ maxConcurrentAgents?: number
3009
+ /** Total `agent()` calls one run may start — the runaway-loop backstop (default 1000). */
3010
+ maxTotalAgents?: number
3011
+ /** Items accepted by a single `parallel()`/`pipeline()` call (default 4096). */
3012
+ maxItemsPerCall?: number
3013
+ /** vm timeout for the script's initial synchronous slice, inside the worker (default 5000 ms). */
3014
+ syncTimeoutMs?: number
3015
+ /**
3016
+ * How long after a cancellation an unsettled script may keep running before
3017
+ * the run force-settles `cancelled` and its worker is TERMINATED (default
3018
+ * 5000 ms); also bounds `dispose()`.
3019
+ */
3020
+ disposeGraceMs?: number
3021
+ }
3022
+ ```
3023
+
3024
+ 来源:[`packages/workflow/workflow-worker-thread/src/index.ts:32`](../packages/workflow/workflow-worker-thread/src/index.ts)
3025
+
3026
+ ## 无配置的可加载插件
3027
+
3028
+ 这些插件通过 `cordis.yml` 中不含 `config:` 块的条目加载;它们未声明任何配置接口。
3029
+
3030
+ - `@deepseek-ai/dsh-agent`([`packages/core/agent/src/index.ts`](../packages/core/agent/src/index.ts))
3031
+ - `@deepseek-ai/dsh-api-gateway` — 需要 `typert`([`packages/api/gateway/src/index.ts`](../packages/api/gateway/src/index.ts))
3032
+ - `@deepseek-ai/dsh-api-remotes`([`packages/api/remotes/src/index.ts`](../packages/api/remotes/src/index.ts))
3033
+ - `@deepseek-ai/dsh-client-locale`([`packages/client/locale/src/index.ts`](../packages/client/locale/src/index.ts))
3034
+ - `@deepseek-ai/dsh-client-modules` — 需要 `webServer` · `loader`([`packages/client/modules/src/index.ts`](../packages/client/modules/src/index.ts))
3035
+ - `@deepseek-ai/dsh-client-runtime`([`packages/client/runtime/src/index.ts`](../packages/client/runtime/src/index.ts))
3036
+ - `@deepseek-ai/dsh-client-ui-agent-preset`([`packages/client/ui-agent-preset/src/index.ts`](../packages/client/ui-agent-preset/src/index.ts))
3037
+ - `@deepseek-ai/dsh-client-ui-commands`([`packages/client/ui-commands/src/index.ts`](../packages/client/ui-commands/src/index.ts))
3038
+ - `@deepseek-ai/dsh-client-ui-conversation`([`packages/client/ui-conversation/src/index.ts`](../packages/client/ui-conversation/src/index.ts))
3039
+ - `@deepseek-ai/dsh-client-ui-cordis`([`packages/extensions/ui-cordis/src/index.ts`](../packages/extensions/ui-cordis/src/index.ts))
3040
+ - `@deepseek-ai/dsh-client-ui-deliverables` — 需要 `systemPrompt`([`packages/client/ui-deliverables/src/index.ts`](../packages/client/ui-deliverables/src/index.ts))
3041
+ - `@deepseek-ai/dsh-client-ui-directory-picker-browse`([`packages/client/ui-directory-picker-browse/src/index.ts`](../packages/client/ui-directory-picker-browse/src/index.ts))
3042
+ - `@deepseek-ai/dsh-client-ui-directory-picker-native`([`packages/client/ui-directory-picker-native/src/index.ts`](../packages/client/ui-directory-picker-native/src/index.ts))
3043
+ - `@deepseek-ai/dsh-client-ui-goal`([`packages/client/ui-goal/src/index.ts`](../packages/client/ui-goal/src/index.ts))
3044
+ - `@deepseek-ai/dsh-client-ui-input-trigger`([`packages/client/ui-input-trigger/src/index.ts`](../packages/client/ui-input-trigger/src/index.ts))
3045
+ - `@deepseek-ai/dsh-client-ui-jobs`([`packages/client/ui-jobs/src/index.ts`](../packages/client/ui-jobs/src/index.ts))
3046
+ - `@deepseek-ai/dsh-client-ui-layout`([`packages/client/ui-layout/src/index.ts`](../packages/client/ui-layout/src/index.ts))
3047
+ - `@deepseek-ai/dsh-client-ui-message-feedback`([`packages/client/ui-message-feedback/src/index.ts`](../packages/client/ui-message-feedback/src/index.ts))
3048
+ - `@deepseek-ai/dsh-client-ui-model-selection`([`packages/client/ui-model-selection/src/index.ts`](../packages/client/ui-model-selection/src/index.ts))
3049
+ - `@deepseek-ai/dsh-client-ui-permission-presets`([`packages/client/ui-permission-presets/src/index.ts`](../packages/client/ui-permission-presets/src/index.ts))
3050
+ - `@deepseek-ai/dsh-client-ui-plan`([`packages/client/ui-plan/src/index.ts`](../packages/client/ui-plan/src/index.ts))
3051
+ - `@deepseek-ai/dsh-client-ui-settings`([`packages/client/ui-settings/src/index.ts`](../packages/client/ui-settings/src/index.ts))
3052
+ - `@deepseek-ai/dsh-client-ui-settings-general`([`packages/client/ui-settings-general/src/index.ts`](../packages/client/ui-settings-general/src/index.ts))
3053
+ - `@deepseek-ai/dsh-client-ui-settings-models`([`packages/client/ui-settings-models/src/index.ts`](../packages/client/ui-settings-models/src/index.ts))
3054
+ - `@deepseek-ai/dsh-client-ui-settings-plugin-inventory`([`packages/client/ui-settings-plugin-inventory/src/index.ts`](../packages/client/ui-settings-plugin-inventory/src/index.ts))
3055
+ - `@deepseek-ai/dsh-client-ui-settings-plugins`([`packages/client/ui-settings-plugins/src/index.ts`](../packages/client/ui-settings-plugins/src/index.ts))
3056
+ - `@deepseek-ai/dsh-client-ui-sidebar`([`packages/client/ui-sidebar/src/index.ts`](../packages/client/ui-sidebar/src/index.ts))
3057
+ - `@deepseek-ai/dsh-client-ui-skill`([`packages/client/ui-skill/src/index.ts`](../packages/client/ui-skill/src/index.ts))
3058
+ - `@deepseek-ai/dsh-client-ui-subagent`([`packages/client/ui-subagent/src/index.ts`](../packages/client/ui-subagent/src/index.ts))
3059
+ - `@deepseek-ai/dsh-client-ui-theme`([`packages/client/ui-theme/src/index.ts`](../packages/client/ui-theme/src/index.ts))
3060
+ - `@deepseek-ai/dsh-client-ui-tool`([`packages/client/ui-tool/src/index.ts`](../packages/client/ui-tool/src/index.ts))
3061
+ - `@deepseek-ai/dsh-client-ui-trajectory`([`packages/client/ui-trajectory/src/index.ts`](../packages/client/ui-trajectory/src/index.ts))
3062
+ - `@deepseek-ai/dsh-client-ui-user-questions`([`packages/client/ui-user-questions/src/index.ts`](../packages/client/ui-user-questions/src/index.ts))
3063
+ - `@deepseek-ai/dsh-client-ui-workflow-run`([`packages/client/ui-workflow-run/src/index.ts`](../packages/client/ui-workflow-run/src/index.ts))
3064
+ - `@deepseek-ai/dsh-client-ui-workspace`([`packages/client/ui-workspace/src/index.ts`](../packages/client/ui-workspace/src/index.ts))
3065
+ - `@deepseek-ai/dsh-command-compact` — 需要 `commands` · `compact`([`packages/compaction/command-compact/src/index.ts`](../packages/compaction/command-compact/src/index.ts))
3066
+ - `@deepseek-ai/dsh-command-feedback` — 需要 `commands`([`packages/feedback/command-feedback/src/index.ts`](../packages/feedback/command-feedback/src/index.ts))
3067
+ - `@deepseek-ai/dsh-command-goal` — 需要 `commands` · `goals`([`packages/goal/command-goal/src/index.ts`](../packages/goal/command-goal/src/index.ts))
3068
+ - `@deepseek-ai/dsh-commands`([`packages/interaction/commands/src/index.ts`](../packages/interaction/commands/src/index.ts))
3069
+ - `@deepseek-ai/dsh-cordis-client-runner`([`packages/extensions/cordis-client-runner/src/index.ts`](../packages/extensions/cordis-client-runner/src/index.ts))
3070
+ - `@deepseek-ai/dsh-fs-e2b` — 需要 `e2b`([`packages/e2b/fs-e2b/src/index.ts`](../packages/e2b/fs-e2b/src/index.ts))
3071
+ - `@deepseek-ai/dsh-fs-observation-policy`([`packages/fs/fs-observation-policy/src/index.ts`](../packages/fs/fs-observation-policy/src/index.ts))
3072
+ - `@deepseek-ai/dsh-goal-round-driver` — 需要 `agents` · `goals` · `sessions`([`packages/goal/goal-round-driver/src/index.ts`](../packages/goal/goal-round-driver/src/index.ts))
3073
+ - `@deepseek-ai/dsh-host-directory-picker-auto` — 需要 `webServer` · `loader`([`packages/host/directory-picker-auto/src/index.ts`](../packages/host/directory-picker-auto/src/index.ts))
3074
+ - `@deepseek-ai/dsh-host-directory-picker-native`([`packages/host/directory-picker-native/src/index.ts`](../packages/host/directory-picker-native/src/index.ts))
3075
+ - `@deepseek-ai/dsh-host-plugin-inventory` — 需要 `loader`([`packages/host/plugin-inventory/src/index.ts`](../packages/host/plugin-inventory/src/index.ts))
3076
+ - `@deepseek-ai/dsh-llm`([`packages/llm/llm/src/index.ts`](../packages/llm/llm/src/index.ts))
3077
+ - `@deepseek-ai/dsh-lsp`([`packages/lsp/lsp/src/index.ts`](../packages/lsp/lsp/src/index.ts))
3078
+ - `@deepseek-ai/dsh-schedule` — 需要 `agents` · `sessions` · `tools` · `sessionPersistence`([`packages/schedule/schedule/src/index.ts`](../packages/schedule/schedule/src/index.ts))
3079
+ - `@deepseek-ai/dsh-session`([`packages/core/session/src/index.ts`](../packages/core/session/src/index.ts))
3080
+ - `@deepseek-ai/dsh-session-checkpoint-policy` — 需要 `llm` · `sessionPersistence` · `sessions` · `tools`([`packages/session/session-checkpoint-policy/src/index.ts`](../packages/session/session-checkpoint-policy/src/index.ts))
3081
+ - `@deepseek-ai/dsh-session-log-export` — 需要 `commands`([`packages/session-query/session-log-export/src/index.ts`](../packages/session-query/session-log-export/src/index.ts))
3082
+ - `@deepseek-ai/dsh-session-projection`([`packages/session/session-projection/src/index.ts`](../packages/session/session-projection/src/index.ts))
3083
+ - `@deepseek-ai/dsh-session-stats` — 需要 `sessionProjections`([`packages/session/session-stats/src/index.ts`](../packages/session/session-stats/src/index.ts))
3084
+ - `@deepseek-ai/dsh-skill-badge` — 需要 `skills`([`packages/skill/skill-badge/src/index.ts`](../packages/skill/skill-badge/src/index.ts))
3085
+ - `@deepseek-ai/dsh-storage`([`packages/storage/storage/src/index.ts`](../packages/storage/storage/src/index.ts))
3086
+ - `@deepseek-ai/dsh-subagent`([`packages/subagent/subagent/src/index.ts`](../packages/subagent/subagent/src/index.ts))
3087
+ - `@deepseek-ai/dsh-subprocess-local`([`packages/subprocess/subprocess-local/src/index.ts`](../packages/subprocess/subprocess-local/src/index.ts))
3088
+ - `@deepseek-ai/dsh-terminal`([`packages/terminal/terminal/src/index.ts`](../packages/terminal/terminal/src/index.ts))
3089
+ - `@deepseek-ai/dsh-tool-ask-user` — 需要 `tools` · `userInteraction`([`packages/interaction/tool-ask-user/src/index.ts`](../packages/interaction/tool-ask-user/src/index.ts))
3090
+ - `@deepseek-ai/dsh-tool-call-timeout-policy` — 需要 `tools`([`packages/guard/timeout-policy/src/index.ts`](../packages/guard/timeout-policy/src/index.ts))
3091
+ - `@deepseek-ai/dsh-tool-cordis` — 需要 `tools` · `systemPrompt` · `dynamicCordisRunner` · `cordisInspect`([`packages/extensions/tool-cordis/src/index.ts`](../packages/extensions/tool-cordis/src/index.ts))
3092
+ - `@deepseek-ai/dsh-tool-subagent-control` — 需要 `tools` · `subagents`([`packages/subagent/tool-subagent-control/src/index.ts`](../packages/subagent/tool-subagent-control/src/index.ts))
3093
+ - `@deepseek-ai/dsh-user-questions`([`packages/interaction/user-questions/src/index.ts`](../packages/interaction/user-questions/src/index.ts))
3094
+ - `@deepseek-ai/dsh-workspace` — 需要 `storageDomain` · `sessionPersistence`([`packages/workspace/workspace/src/index.ts`](../packages/workspace/workspace/src/index.ts))
3095
+
3096
+ ## Seam 包(不可直接加载)
3097
+
3098
+ 抽象服务类——部署时应改为加载具体的实现包(参见[能力 seam](../.agents/notes/implemented/architecture/2026-06-13-capability-seams.md))。
3099
+
3100
+ - `@deepseek-ai/dsh-attachment` — 抽象 `AttachmentStore`([`packages/attachment/attachment/src/index.ts`](../packages/attachment/attachment/src/index.ts))
3101
+ - `@deepseek-ai/dsh-code-runtime` — 抽象 `CodeRuntime`([`packages/code-runtime/code-runtime/src/index.ts`](../packages/code-runtime/code-runtime/src/index.ts))
3102
+ - `@deepseek-ai/dsh-compaction` — 抽象 `CompactionEngine`([`packages/compaction/compaction/src/index.ts`](../packages/compaction/compaction/src/index.ts))
3103
+ - `@deepseek-ai/dsh-credentials` — 抽象 `Credentials`([`packages/credentials/credentials/src/index.ts`](../packages/credentials/credentials/src/index.ts))
3104
+ - `@deepseek-ai/dsh-fs` — 抽象 `FileSystem`([`packages/fs/fs/src/index.ts`](../packages/fs/fs/src/index.ts))
3105
+ - `@deepseek-ai/dsh-host-directory-picker` — 抽象 `DirectoryPicker`([`packages/host/directory-picker/src/index.ts`](../packages/host/directory-picker/src/index.ts))
3106
+ - `@deepseek-ai/dsh-jobs` — 抽象 `JobRegistry`([`packages/jobs/jobs/src/index.ts`](../packages/jobs/jobs/src/index.ts))
3107
+ - `@deepseek-ai/dsh-sandbox` — 抽象 `SandboxProvider`([`packages/sandbox/sandbox/src/index.ts`](../packages/sandbox/sandbox/src/index.ts))
3108
+ - `@deepseek-ai/dsh-session-persistence` — 抽象 `SessionPersistence`([`packages/session/session-persistence/src/index.ts`](../packages/session/session-persistence/src/index.ts))
3109
+ - `@deepseek-ai/dsh-session-query` — 抽象 `SessionQueryEngine`([`packages/session-query/session-query/src/index.ts`](../packages/session-query/session-query/src/index.ts))
3110
+ - `@deepseek-ai/dsh-settings` — 抽象 `Settings`([`packages/settings/settings/src/index.ts`](../packages/settings/settings/src/index.ts))
3111
+ - `@deepseek-ai/dsh-shell` — 抽象 `ShellExecutor`([`packages/shell/shell/src/index.ts`](../packages/shell/shell/src/index.ts))
3112
+ - `@deepseek-ai/dsh-spill` — 抽象 `SpillStore`([`packages/spill/spill/src/index.ts`](../packages/spill/spill/src/index.ts))
3113
+ - `@deepseek-ai/dsh-subprocess` — 抽象 `SubprocessRuntime`([`packages/subprocess/subprocess/src/index.ts`](../packages/subprocess/subprocess/src/index.ts))
3114
+ - `@deepseek-ai/dsh-workflow` — 抽象 `WorkflowEngine`([`packages/workflow/workflow/src/index.ts`](../packages/workflow/workflow/src/index.ts))
3115
+ ## 库包(无插件入口)
3116
+
3117
+ 由其他包作为库导入;`cordis.yml` 无法加载它们。
3118
+
3119
+ - `@deepseek-ai/dsh-acp-snapshot`([`packages/test-support/acp-snapshot/src/index.ts`](../packages/test-support/acp-snapshot/src/index.ts))
3120
+ - `@deepseek-ai/dsh-agent-loop-testkit`([`packages/test-support/agent-loop-testkit/src/index.ts`](../packages/test-support/agent-loop-testkit/src/index.ts))
3121
+ - `@deepseek-ai/dsh-anonymous-user-id`([`packages/identity/anonymous-user-id/src/index.ts`](../packages/identity/anonymous-user-id/src/index.ts))
3122
+ - `@deepseek-ai/dsh-app-boot`([`packages/boot/app-boot/src/index.ts`](../packages/boot/app-boot/src/index.ts))
3123
+ - `@deepseek-ai/dsh-atomic-write`([`packages/util/atomic-write/src/index.ts`](../packages/util/atomic-write/src/index.ts))
3124
+ - `@deepseek-ai/dsh-base`([`packages/bundle/base/src/index.ts`](../packages/bundle/base/src/index.ts))
3125
+ - `@deepseek-ai/dsh-brand`([`packages/util/brand/src/index.ts`](../packages/util/brand/src/index.ts))
3126
+ - `@deepseek-ai/dsh-client-schema-form`([`packages/client/schema-form/src/index.ts`](../packages/client/schema-form/src/index.ts))
3127
+ - `@deepseek-ai/dsh-client-test-runtime`([`packages/test-support/client-runtime/src/index.ts`](../packages/test-support/client-runtime/src/index.ts))
3128
+ - `@deepseek-ai/dsh-client-ui-attachment`([`packages/client/ui-attachment/src/index.ts`](../packages/client/ui-attachment/src/index.ts))
3129
+ - `@deepseek-ai/dsh-client-ui-primitives`([`packages/client/ui-primitives/src/index.ts`](../packages/client/ui-primitives/src/index.ts))
3130
+ - `@deepseek-ai/dsh-client-ui-slots`([`packages/client/ui-slots/src/index.ts`](../packages/client/ui-slots/src/index.ts))
3131
+ - `@deepseek-ai/dsh-client-web`([`packages/client/web/src/index.ts`](../packages/client/web/src/index.ts))
3132
+ - `@deepseek-ai/dsh-client-web-react`([`packages/client/web-react/src/index.ts`](../packages/client/web-react/src/index.ts))
3133
+ - `@deepseek-ai/dsh-cmdline`([`packages/boot/cmdline/src/index.ts`](../packages/boot/cmdline/src/index.ts))
3134
+ - `@deepseek-ai/dsh-home-paths`([`packages/util/home-paths/src/index.ts`](../packages/util/home-paths/src/index.ts))
3135
+ - `@deepseek-ai/dsh-hook-protocol`([`packages/hooks/hook-protocol/src/index.ts`](../packages/hooks/hook-protocol/src/index.ts))
3136
+ - `@deepseek-ai/dsh-launch-environment`([`packages/util/launch-environment/src/index.ts`](../packages/util/launch-environment/src/index.ts))
3137
+ - `@deepseek-ai/dsh-llm-mock-server`([`packages/test-support/llm-mock-server/src/index.ts`](../packages/test-support/llm-mock-server/src/index.ts))
3138
+ - `@deepseek-ai/dsh-loader-smoke`([`packages/test-support/loader-smoke/src/index.ts`](../packages/test-support/loader-smoke/src/index.ts))
3139
+ - `@deepseek-ai/dsh-native-command`([`packages/util/native-command/src/index.ts`](../packages/util/native-command/src/index.ts))
3140
+ - `@deepseek-ai/dsh-output-retention`([`packages/util/output-retention/src/index.ts`](../packages/util/output-retention/src/index.ts))
3141
+ - `@deepseek-ai/dsh-sandbox-windows-acl`([`packages/sandbox/sandbox-windows-acl/src/index.ts`](../packages/sandbox/sandbox-windows-acl/src/index.ts))
3142
+ - `@deepseek-ai/dsh-scope`([`packages/core/scope/src/index.ts`](../packages/core/scope/src/index.ts))
3143
+ - `@deepseek-ai/dsh-sdk-client`([`packages/sdk/client/src/index.ts`](../packages/sdk/client/src/index.ts))
3144
+ - `@deepseek-ai/dsh-sdk-jsonrpc-demo`([`packages/examples/jsonrpc-demo/src/index.ts`](../packages/examples/jsonrpc-demo/src/index.ts))
3145
+ - `@deepseek-ai/dsh-sdk-protocol`([`packages/sdk/protocol/src/index.ts`](../packages/sdk/protocol/src/index.ts))
3146
+ - `@deepseek-ai/dsh-session-telemetry`([`packages/session/session-telemetry/src/index.ts`](../packages/session/session-telemetry/src/index.ts))
3147
+ - `@deepseek-ai/dsh-session-title-llm`([`packages/session/session-title-llm/src/index.ts`](../packages/session/session-title-llm/src/index.ts))
3148
+ - `@deepseek-ai/dsh-subagent-in-process-driver`([`packages/subagent/subagent-in-process-driver/src/index.ts`](../packages/subagent/subagent-in-process-driver/src/index.ts))
3149
+ - `@deepseek-ai/dsh-timeout`([`packages/util/timeout/src/index.ts`](../packages/util/timeout/src/index.ts))
3150
+ - `@deepseek-ai/dsh-typert-generator`([`packages/typert/generator/src/index.ts`](../packages/typert/generator/src/index.ts))
3151
+ - `@deepseek-ai/dsh-typert-protocol`([`packages/typert/protocol/src/index.ts`](../packages/typert/protocol/src/index.ts))
3152
+ - `@deepseek-ai/dsh-typert-registry`([`packages/typert/registry/src/index.ts`](../packages/typert/registry/src/index.ts))