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