dsh-plugin-guide 0.3.10 → 0.3.16

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 (431) hide show
  1. package/README-es.md +13 -3
  2. package/README-hi.md +13 -3
  3. package/README-pt.md +13 -3
  4. package/README-zh.md +13 -3
  5. package/README.md +12 -3
  6. package/SKILL.md +1 -1
  7. package/guide/links.md +1 -0
  8. package/guide/unfixed-issues.md +111 -0
  9. package/package.json +1 -1
  10. package/references/official-docs/AGENTS.md +74 -49
  11. package/references/official-docs/README.i18n.yaml +2 -2
  12. package/references/official-docs/README.zh.md +12 -0
  13. package/references/official-docs/SNAPSHOT.md +4 -4
  14. package/references/official-docs/THIRD_PARTY_NOTICES.md +86 -30
  15. package/references/official-docs/docs/AGENTS.md +7 -6
  16. package/references/official-docs/docs/agent-lifecycle.i18n.yaml +2 -2
  17. package/references/official-docs/docs/agent-lifecycle.md +12 -5
  18. package/references/official-docs/docs/agent-lifecycle.zh.md +12 -5
  19. package/references/official-docs/docs/api-gateway.i18n.yaml +2 -2
  20. package/references/official-docs/docs/api-gateway.md +2 -2
  21. package/references/official-docs/docs/api-gateway.zh.md +2 -2
  22. package/references/official-docs/docs/architecture.i18n.yaml +2 -2
  23. package/references/official-docs/docs/architecture.md +26 -12
  24. package/references/official-docs/docs/architecture.zh.md +28 -14
  25. package/references/official-docs/docs/capability-seams.i18n.yaml +2 -2
  26. package/references/official-docs/docs/capability-seams.md +111 -31
  27. package/references/official-docs/docs/capability-seams.zh.md +111 -31
  28. package/references/official-docs/docs/config-catalog.i18n.yaml +2 -2
  29. package/references/official-docs/docs/config-catalog.md +674 -202
  30. package/references/official-docs/docs/config-catalog.zh.md +691 -219
  31. package/references/official-docs/docs/cookbook/adding-a-session-format-version.i18n.yaml +6 -0
  32. package/references/official-docs/docs/cookbook/adding-a-session-format-version.md +111 -0
  33. package/references/official-docs/docs/cookbook/adding-a-session-format-version.zh.md +111 -0
  34. package/references/official-docs/docs/cookbook/adding-a-settings-card.zh.md +1 -1
  35. package/references/official-docs/docs/cookbook/adding-a-tool.i18n.yaml +2 -2
  36. package/references/official-docs/docs/cookbook/adding-a-tool.md +2 -2
  37. package/references/official-docs/docs/cookbook/adding-a-tool.zh.md +4 -4
  38. package/references/official-docs/docs/cookbook/adding-a-vendored-package.i18n.yaml +2 -2
  39. package/references/official-docs/docs/cookbook/adding-a-vendored-package.md +1 -1
  40. package/references/official-docs/docs/cookbook/adding-a-vendored-package.zh.md +1 -1
  41. package/references/official-docs/docs/cookbook/adding-an-llm-adapter.zh.md +1 -1
  42. package/references/official-docs/docs/cookbook/extension-cookbook.i18n.yaml +2 -2
  43. package/references/official-docs/docs/cookbook/extension-cookbook.md +3 -3
  44. package/references/official-docs/docs/cookbook/extension-cookbook.zh.md +5 -5
  45. package/references/official-docs/docs/cookbook/responding-to-pr-review-on-a-stack.i18n.yaml +2 -2
  46. package/references/official-docs/docs/cookbook/responding-to-pr-review-on-a-stack.md +1 -1
  47. package/references/official-docs/docs/cookbook/responding-to-pr-review-on-a-stack.zh.md +1 -1
  48. package/references/official-docs/docs/cookbook/reviewing-persistence-type-changes.i18n.yaml +6 -0
  49. package/references/official-docs/docs/cookbook/reviewing-persistence-type-changes.md +108 -0
  50. package/references/official-docs/docs/cookbook/reviewing-persistence-type-changes.zh.md +108 -0
  51. package/references/official-docs/docs/cordis-api/fiber.i18n.yaml +2 -2
  52. package/references/official-docs/docs/cordis-api/fiber.md +3 -3
  53. package/references/official-docs/docs/cordis-api/fiber.zh.md +3 -3
  54. package/references/official-docs/docs/cordis-api/inherited.md +0 -3
  55. package/references/official-docs/docs/cordis-tutorial/06-composition-and-hmr.i18n.yaml +2 -2
  56. package/references/official-docs/docs/cordis-tutorial/06-composition-and-hmr.md +2 -2
  57. package/references/official-docs/docs/cordis-tutorial/06-composition-and-hmr.zh.md +2 -2
  58. package/references/official-docs/docs/deepseek-llm-api-wire-extensions.i18n.yaml +2 -2
  59. package/references/official-docs/docs/deepseek-llm-api-wire-extensions.md +14 -15
  60. package/references/official-docs/docs/deepseek-llm-api-wire-extensions.zh.md +15 -16
  61. package/references/official-docs/docs/dependency-catalog.json +7312 -0
  62. package/references/official-docs/docs/development.i18n.yaml +2 -2
  63. package/references/official-docs/docs/development.md +13 -3
  64. package/references/official-docs/docs/development.zh.md +16 -6
  65. package/references/official-docs/docs/event-producer-consumer.i18n.yaml +2 -2
  66. package/references/official-docs/docs/event-producer-consumer.md +50 -39
  67. package/references/official-docs/docs/event-producer-consumer.zh.md +55 -44
  68. package/references/official-docs/docs/glossary.i18n.yaml +2 -2
  69. package/references/official-docs/docs/glossary.md +1 -1
  70. package/references/official-docs/docs/glossary.zh.md +1 -1
  71. package/references/official-docs/docs/i18n/README.i18n.yaml +2 -2
  72. package/references/official-docs/docs/i18n/README.md +8 -3
  73. package/references/official-docs/docs/i18n/README.zh.md +8 -3
  74. package/references/official-docs/docs/i18n/style-samples.md +1 -1
  75. package/references/official-docs/docs/i18n/translation-prompt.md +5 -5
  76. package/references/official-docs/docs/i18n/translation-rules.zh.md +2 -2
  77. package/references/official-docs/docs/module-graph.i18n.yaml +2 -2
  78. package/references/official-docs/docs/module-graph.md +303 -120
  79. package/references/official-docs/docs/module-graph.zh.md +303 -120
  80. package/references/official-docs/docs/persistence-catalog.i18n.yaml +2 -2
  81. package/references/official-docs/docs/persistence-catalog.md +5699 -64
  82. package/references/official-docs/docs/persistence-catalog.zh.md +5708 -73
  83. package/references/official-docs/docs/persistence-changes/2026-09-11-initial.i18n.yaml +6 -0
  84. package/references/official-docs/docs/persistence-changes/2026-09-11-initial.md +280 -0
  85. package/references/official-docs/docs/persistence-changes/2026-09-11-initial.schema.json +13557 -0
  86. package/references/official-docs/docs/persistence-changes/2026-09-11-initial.zh.md +280 -0
  87. package/references/official-docs/docs/persistence-changes/2026-09-12-auto-review-error-metadata.i18n.yaml +6 -0
  88. package/references/official-docs/docs/persistence-changes/2026-09-12-auto-review-error-metadata.md +52 -0
  89. package/references/official-docs/docs/persistence-changes/2026-09-12-auto-review-error-metadata.schema.json +910 -0
  90. package/references/official-docs/docs/persistence-changes/2026-09-12-auto-review-error-metadata.zh.md +52 -0
  91. package/references/official-docs/docs/persistence-changes/2026-09-14-image-offload.i18n.yaml +6 -0
  92. package/references/official-docs/docs/persistence-changes/2026-09-14-image-offload.md +96 -0
  93. package/references/official-docs/docs/persistence-changes/2026-09-14-image-offload.schema.json +8478 -0
  94. package/references/official-docs/docs/persistence-changes/2026-09-14-image-offload.zh.md +96 -0
  95. package/references/official-docs/docs/persistence-changes/2026-09-14-workspace-changes-event.i18n.yaml +6 -0
  96. package/references/official-docs/docs/persistence-changes/2026-09-14-workspace-changes-event.md +48 -0
  97. package/references/official-docs/docs/persistence-changes/2026-09-14-workspace-changes-event.schema.json +72 -0
  98. package/references/official-docs/docs/persistence-changes/2026-09-14-workspace-changes-event.zh.md +48 -0
  99. package/references/official-docs/docs/persistence-changes/README.i18n.yaml +6 -0
  100. package/references/official-docs/docs/persistence-changes/README.md +74 -0
  101. package/references/official-docs/docs/persistence-changes/README.zh.md +74 -0
  102. package/references/official-docs/docs/persistence-changes/historical-formats/README.i18n.yaml +6 -0
  103. package/references/official-docs/docs/persistence-changes/historical-formats/README.md +74 -0
  104. package/references/official-docs/docs/persistence-changes/historical-formats/README.zh.md +74 -0
  105. package/references/official-docs/docs/persistence-changes/historical-formats/v0.i18n.yaml +6 -0
  106. package/references/official-docs/docs/persistence-changes/historical-formats/v0.md +5105 -0
  107. package/references/official-docs/docs/persistence-changes/historical-formats/v0.schema.json +49308 -0
  108. package/references/official-docs/docs/persistence-changes/historical-formats/v0.zh.md +5105 -0
  109. package/references/official-docs/docs/persistence-changes/historical-formats/v1.i18n.yaml +6 -0
  110. package/references/official-docs/docs/persistence-changes/historical-formats/v1.md +5107 -0
  111. package/references/official-docs/docs/persistence-changes/historical-formats/v1.schema.json +49411 -0
  112. package/references/official-docs/docs/persistence-changes/historical-formats/v1.zh.md +5107 -0
  113. package/references/official-docs/docs/persistence-changes/historical-formats/v2.i18n.yaml +6 -0
  114. package/references/official-docs/docs/persistence-changes/historical-formats/v2.md +5362 -0
  115. package/references/official-docs/docs/persistence-changes/historical-formats/v2.schema.json +56466 -0
  116. package/references/official-docs/docs/persistence-changes/historical-formats/v2.zh.md +5362 -0
  117. package/references/official-docs/docs/persistence-changes/releases/README.i18n.yaml +6 -0
  118. package/references/official-docs/docs/persistence-changes/releases/README.md +103 -0
  119. package/references/official-docs/docs/persistence-changes/releases/README.zh.md +103 -0
  120. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.1.i18n.yaml +6 -0
  121. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.1.md +201 -0
  122. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.1.schema.json +39868 -0
  123. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.1.zh.md +201 -0
  124. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.2.i18n.yaml +6 -0
  125. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.2.md +261 -0
  126. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.2.schema.json +43342 -0
  127. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.2.zh.md +261 -0
  128. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.3.i18n.yaml +6 -0
  129. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.3.md +126 -0
  130. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.3.schema.json +19452 -0
  131. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.3.zh.md +126 -0
  132. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.4.i18n.yaml +6 -0
  133. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.4.md +75 -0
  134. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.4.schema.json +5 -0
  135. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.4.zh.md +75 -0
  136. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.5.i18n.yaml +6 -0
  137. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.5.md +75 -0
  138. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.5.schema.json +5 -0
  139. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.5.zh.md +75 -0
  140. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.1.i18n.yaml +6 -0
  141. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.1.md +75 -0
  142. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.1.schema.json +5 -0
  143. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.1.zh.md +75 -0
  144. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.2.i18n.yaml +6 -0
  145. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.2.md +75 -0
  146. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.2.schema.json +5 -0
  147. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.2.zh.md +75 -0
  148. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.3.i18n.yaml +6 -0
  149. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.3.md +75 -0
  150. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.3.schema.json +5 -0
  151. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.3.zh.md +75 -0
  152. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.5.i18n.yaml +6 -0
  153. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.5.md +75 -0
  154. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.5.schema.json +5 -0
  155. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.5.zh.md +75 -0
  156. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.6.i18n.yaml +6 -0
  157. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.6.md +75 -0
  158. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.6.schema.json +5 -0
  159. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.6.zh.md +75 -0
  160. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.7.i18n.yaml +6 -0
  161. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.7.md +82 -0
  162. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.7.schema.json +5320 -0
  163. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.7.zh.md +82 -0
  164. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.8.i18n.yaml +6 -0
  165. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.8.md +110 -0
  166. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.8.schema.json +21258 -0
  167. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.8.zh.md +110 -0
  168. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.1.i18n.yaml +6 -0
  169. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.1.md +82 -0
  170. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.1.schema.json +417 -0
  171. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.1.zh.md +82 -0
  172. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.2.i18n.yaml +6 -0
  173. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.2.md +119 -0
  174. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.2.schema.json +29672 -0
  175. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.2.zh.md +119 -0
  176. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.1.i18n.yaml +6 -0
  177. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.1.md +295 -0
  178. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.1.schema.json +48429 -0
  179. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.1.zh.md +295 -0
  180. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.2.i18n.yaml +6 -0
  181. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.2.md +286 -0
  182. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.2.schema.json +49347 -0
  183. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.2.zh.md +286 -0
  184. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.3.i18n.yaml +6 -0
  185. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.3.md +75 -0
  186. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.3.schema.json +5 -0
  187. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.3.zh.md +75 -0
  188. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.4.i18n.yaml +6 -0
  189. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.4.md +95 -0
  190. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.4.schema.json +17642 -0
  191. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.4.zh.md +95 -0
  192. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.5.i18n.yaml +6 -0
  193. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.5.md +75 -0
  194. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.5.schema.json +5 -0
  195. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.5.zh.md +75 -0
  196. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-rc.1.i18n.yaml +6 -0
  197. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-rc.1.md +75 -0
  198. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-rc.1.schema.json +5 -0
  199. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-rc.1.zh.md +75 -0
  200. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.1.i18n.yaml +6 -0
  201. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.1.md +154 -0
  202. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.1.schema.json +38678 -0
  203. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.1.zh.md +154 -0
  204. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.2.i18n.yaml +6 -0
  205. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.2.md +86 -0
  206. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.2.schema.json +783 -0
  207. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.2.zh.md +86 -0
  208. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.1.i18n.yaml +6 -0
  209. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.1.md +139 -0
  210. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.1.schema.json +24597 -0
  211. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.1.zh.md +139 -0
  212. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.i18n.yaml +6 -0
  213. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.md +95 -0
  214. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.schema.json +2132 -0
  215. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.zh.md +95 -0
  216. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.1.i18n.yaml +6 -0
  217. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.1.md +75 -0
  218. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.1.schema.json +5 -0
  219. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.1.zh.md +75 -0
  220. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.2.i18n.yaml +6 -0
  221. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.2.md +75 -0
  222. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.2.schema.json +5 -0
  223. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.2.zh.md +75 -0
  224. package/references/official-docs/docs/persistence-changes/releases/manifest.json +162 -0
  225. package/references/official-docs/docs/persistence-schema.json +61480 -0
  226. package/references/official-docs/docs/postmortem/README.i18n.yaml +1 -1
  227. package/references/official-docs/docs/postmortem/README.md +1 -1
  228. package/references/official-docs/docs/postmortem/README.zh.md +1 -1
  229. package/references/official-docs/docs/rescope.i18n.yaml +2 -2
  230. package/references/official-docs/docs/rescope.md +2 -2
  231. package/references/official-docs/docs/rescope.zh.md +2 -2
  232. package/references/official-docs/docs/session-format-status.i18n.yaml +6 -0
  233. package/references/official-docs/docs/session-format-status.md +49 -0
  234. package/references/official-docs/docs/session-format-status.zh.md +49 -0
  235. package/references/official-docs/docs/subsystems/README.i18n.yaml +2 -2
  236. package/references/official-docs/docs/subsystems/README.md +12 -3
  237. package/references/official-docs/docs/subsystems/README.zh.md +23 -14
  238. package/references/official-docs/docs/subsystems/agent-team.i18n.yaml +2 -2
  239. package/references/official-docs/docs/subsystems/agent-team.md +1 -1
  240. package/references/official-docs/docs/subsystems/agent-team.zh.md +2 -2
  241. package/references/official-docs/docs/subsystems/approval.i18n.yaml +2 -2
  242. package/references/official-docs/docs/subsystems/approval.md +1 -1
  243. package/references/official-docs/docs/subsystems/approval.zh.md +1 -1
  244. package/references/official-docs/docs/subsystems/attachment.i18n.yaml +2 -2
  245. package/references/official-docs/docs/subsystems/attachment.md +17 -7
  246. package/references/official-docs/docs/subsystems/attachment.zh.md +17 -7
  247. package/references/official-docs/docs/subsystems/{code-runtime.i18n.yaml → boot.i18n.yaml} +3 -3
  248. package/references/official-docs/docs/subsystems/boot.md +223 -0
  249. package/references/official-docs/docs/subsystems/boot.zh.md +223 -0
  250. package/references/official-docs/docs/subsystems/browser-use.i18n.yaml +6 -0
  251. package/references/official-docs/docs/subsystems/browser-use.md +67 -0
  252. package/references/official-docs/docs/subsystems/browser-use.zh.md +67 -0
  253. package/references/official-docs/docs/subsystems/client-modules.i18n.yaml +2 -2
  254. package/references/official-docs/docs/subsystems/client-modules.md +20 -10
  255. package/references/official-docs/docs/subsystems/client-modules.zh.md +21 -11
  256. package/references/official-docs/docs/subsystems/client-resources.i18n.yaml +6 -0
  257. package/references/official-docs/docs/subsystems/client-resources.md +92 -0
  258. package/references/official-docs/docs/subsystems/client-resources.zh.md +92 -0
  259. package/references/official-docs/docs/subsystems/commands.i18n.yaml +2 -2
  260. package/references/official-docs/docs/subsystems/commands.md +4 -0
  261. package/references/official-docs/docs/subsystems/commands.zh.md +5 -1
  262. package/references/official-docs/docs/subsystems/compaction.i18n.yaml +2 -2
  263. package/references/official-docs/docs/subsystems/compaction.md +48 -2
  264. package/references/official-docs/docs/subsystems/compaction.zh.md +50 -4
  265. package/references/official-docs/docs/subsystems/computer-use.i18n.yaml +6 -0
  266. package/references/official-docs/docs/subsystems/computer-use.md +56 -0
  267. package/references/official-docs/docs/subsystems/computer-use.zh.md +56 -0
  268. package/references/official-docs/docs/subsystems/conversation.zh.md +1 -1
  269. package/references/official-docs/docs/subsystems/core.i18n.yaml +2 -2
  270. package/references/official-docs/docs/subsystems/core.md +106 -60
  271. package/references/official-docs/docs/subsystems/core.zh.md +109 -63
  272. package/references/official-docs/docs/subsystems/deliverables.i18n.yaml +6 -0
  273. package/references/official-docs/docs/subsystems/deliverables.md +178 -0
  274. package/references/official-docs/docs/subsystems/deliverables.zh.md +178 -0
  275. package/references/official-docs/docs/subsystems/extensions.zh.md +1 -1
  276. package/references/official-docs/docs/subsystems/feedback.i18n.yaml +2 -2
  277. package/references/official-docs/docs/subsystems/feedback.md +165 -31
  278. package/references/official-docs/docs/subsystems/feedback.zh.md +165 -31
  279. package/references/official-docs/docs/subsystems/filesystem.i18n.yaml +2 -2
  280. package/references/official-docs/docs/subsystems/filesystem.md +15 -0
  281. package/references/official-docs/docs/subsystems/filesystem.zh.md +16 -1
  282. package/references/official-docs/docs/subsystems/goal.i18n.yaml +2 -2
  283. package/references/official-docs/docs/subsystems/goal.md +37 -1
  284. package/references/official-docs/docs/subsystems/goal.zh.md +38 -2
  285. package/references/official-docs/docs/subsystems/invariants.i18n.yaml +2 -2
  286. package/references/official-docs/docs/subsystems/invariants.md +1 -1
  287. package/references/official-docs/docs/subsystems/invariants.zh.md +3 -3
  288. package/references/official-docs/docs/subsystems/jobs.i18n.yaml +1 -1
  289. package/references/official-docs/docs/subsystems/jobs.md +1 -1
  290. package/references/official-docs/docs/subsystems/jobs.zh.md +1 -1
  291. package/references/official-docs/docs/subsystems/llm-streaming.i18n.yaml +2 -2
  292. package/references/official-docs/docs/subsystems/llm-streaming.md +35 -15
  293. package/references/official-docs/docs/subsystems/llm-streaming.zh.md +37 -17
  294. package/references/official-docs/docs/subsystems/lsp.i18n.yaml +2 -2
  295. package/references/official-docs/docs/subsystems/lsp.md +1 -1
  296. package/references/official-docs/docs/subsystems/lsp.zh.md +1 -1
  297. package/references/official-docs/docs/subsystems/mcp.i18n.yaml +6 -0
  298. package/references/official-docs/docs/subsystems/mcp.md +139 -0
  299. package/references/official-docs/docs/subsystems/mcp.zh.md +139 -0
  300. package/references/official-docs/docs/subsystems/office-to-pdf.i18n.yaml +6 -0
  301. package/references/official-docs/docs/subsystems/office-to-pdf.md +87 -0
  302. package/references/official-docs/docs/subsystems/office-to-pdf.zh.md +87 -0
  303. package/references/official-docs/docs/subsystems/permission-presets.i18n.yaml +2 -2
  304. package/references/official-docs/docs/subsystems/permission-presets.md +62 -27
  305. package/references/official-docs/docs/subsystems/permission-presets.zh.md +62 -27
  306. package/references/official-docs/docs/subsystems/persistence.i18n.yaml +2 -2
  307. package/references/official-docs/docs/subsystems/persistence.md +36 -15
  308. package/references/official-docs/docs/subsystems/persistence.zh.md +36 -15
  309. package/references/official-docs/docs/subsystems/plan.zh.md +2 -2
  310. package/references/official-docs/docs/subsystems/ptc-runtime.i18n.yaml +6 -0
  311. package/references/official-docs/docs/subsystems/ptc-runtime.md +232 -0
  312. package/references/official-docs/docs/subsystems/ptc-runtime.zh.md +232 -0
  313. package/references/official-docs/docs/subsystems/sandbox.i18n.yaml +2 -2
  314. package/references/official-docs/docs/subsystems/sandbox.md +5 -4
  315. package/references/official-docs/docs/subsystems/sandbox.zh.md +7 -6
  316. package/references/official-docs/docs/subsystems/schedule.i18n.yaml +2 -2
  317. package/references/official-docs/docs/subsystems/schedule.md +2 -2
  318. package/references/official-docs/docs/subsystems/schedule.zh.md +3 -3
  319. package/references/official-docs/docs/subsystems/scope.i18n.yaml +2 -2
  320. package/references/official-docs/docs/subsystems/scope.md +1 -1
  321. package/references/official-docs/docs/subsystems/scope.zh.md +1 -1
  322. package/references/official-docs/docs/subsystems/session-projection.i18n.yaml +2 -2
  323. package/references/official-docs/docs/subsystems/session-projection.md +1 -1
  324. package/references/official-docs/docs/subsystems/session-projection.zh.md +2 -2
  325. package/references/official-docs/docs/subsystems/session-reference.i18n.yaml +2 -2
  326. package/references/official-docs/docs/subsystems/session-reference.md +11 -6
  327. package/references/official-docs/docs/subsystems/session-reference.zh.md +11 -6
  328. package/references/official-docs/docs/subsystems/session-telemetry.i18n.yaml +2 -2
  329. package/references/official-docs/docs/subsystems/session-telemetry.md +22 -6
  330. package/references/official-docs/docs/subsystems/session-telemetry.zh.md +23 -7
  331. package/references/official-docs/docs/subsystems/session-title.i18n.yaml +2 -2
  332. package/references/official-docs/docs/subsystems/session-title.md +5 -5
  333. package/references/official-docs/docs/subsystems/session-title.zh.md +5 -5
  334. package/references/official-docs/docs/subsystems/session.i18n.yaml +2 -2
  335. package/references/official-docs/docs/subsystems/session.md +149 -61
  336. package/references/official-docs/docs/subsystems/session.zh.md +150 -62
  337. package/references/official-docs/docs/subsystems/shell.i18n.yaml +2 -2
  338. package/references/official-docs/docs/subsystems/shell.md +19 -15
  339. package/references/official-docs/docs/subsystems/shell.zh.md +20 -16
  340. package/references/official-docs/docs/subsystems/sidebar-right.i18n.yaml +6 -0
  341. package/references/official-docs/docs/subsystems/sidebar-right.md +153 -0
  342. package/references/official-docs/docs/subsystems/sidebar-right.zh.md +153 -0
  343. package/references/official-docs/docs/subsystems/skills.i18n.yaml +2 -2
  344. package/references/official-docs/docs/subsystems/skills.md +4 -6
  345. package/references/official-docs/docs/subsystems/skills.zh.md +4 -6
  346. package/references/official-docs/docs/subsystems/slots.i18n.yaml +2 -2
  347. package/references/official-docs/docs/subsystems/slots.md +52 -38
  348. package/references/official-docs/docs/subsystems/slots.zh.md +53 -39
  349. package/references/official-docs/docs/subsystems/spill.i18n.yaml +2 -2
  350. package/references/official-docs/docs/subsystems/spill.md +13 -6
  351. package/references/official-docs/docs/subsystems/spill.zh.md +13 -6
  352. package/references/official-docs/docs/subsystems/ssh.i18n.yaml +6 -0
  353. package/references/official-docs/docs/subsystems/ssh.md +135 -0
  354. package/references/official-docs/docs/subsystems/ssh.zh.md +135 -0
  355. package/references/official-docs/docs/subsystems/storage.zh.md +2 -2
  356. package/references/official-docs/docs/subsystems/subagent.i18n.yaml +2 -2
  357. package/references/official-docs/docs/subsystems/subagent.md +33 -16
  358. package/references/official-docs/docs/subsystems/subagent.zh.md +32 -15
  359. package/references/official-docs/docs/subsystems/subprocess.i18n.yaml +2 -2
  360. package/references/official-docs/docs/subsystems/subprocess.md +41 -44
  361. package/references/official-docs/docs/subsystems/subprocess.zh.md +41 -44
  362. package/references/official-docs/docs/subsystems/system-prompt.i18n.yaml +2 -2
  363. package/references/official-docs/docs/subsystems/system-prompt.md +6 -2
  364. package/references/official-docs/docs/subsystems/system-prompt.zh.md +7 -3
  365. package/references/official-docs/docs/subsystems/todo.zh.md +1 -1
  366. package/references/official-docs/docs/subsystems/token-meter.i18n.yaml +2 -2
  367. package/references/official-docs/docs/subsystems/token-meter.md +2 -1
  368. package/references/official-docs/docs/subsystems/token-meter.zh.md +2 -1
  369. package/references/official-docs/docs/subsystems/tools.i18n.yaml +2 -2
  370. package/references/official-docs/docs/subsystems/tools.md +28 -12
  371. package/references/official-docs/docs/subsystems/tools.zh.md +28 -12
  372. package/references/official-docs/docs/subsystems/typert.i18n.yaml +2 -2
  373. package/references/official-docs/docs/subsystems/typert.md +6 -5
  374. package/references/official-docs/docs/subsystems/typert.zh.md +6 -5
  375. package/references/official-docs/docs/subsystems/user-questions.i18n.yaml +2 -2
  376. package/references/official-docs/docs/subsystems/user-questions.md +2 -0
  377. package/references/official-docs/docs/subsystems/user-questions.zh.md +2 -0
  378. package/references/official-docs/docs/subsystems/web-client.i18n.yaml +2 -2
  379. package/references/official-docs/docs/subsystems/web-client.md +5 -5
  380. package/references/official-docs/docs/subsystems/web-client.zh.md +6 -6
  381. package/references/official-docs/docs/subsystems/web-server.i18n.yaml +2 -2
  382. package/references/official-docs/docs/subsystems/web-server.md +64 -0
  383. package/references/official-docs/docs/subsystems/web-server.zh.md +65 -1
  384. package/references/official-docs/docs/subsystems/webhook.i18n.yaml +1 -1
  385. package/references/official-docs/docs/subsystems/webhook.md +2 -2
  386. package/references/official-docs/docs/subsystems/workflow.i18n.yaml +2 -2
  387. package/references/official-docs/docs/subsystems/workflow.md +8 -8
  388. package/references/official-docs/docs/subsystems/workflow.zh.md +10 -10
  389. package/references/official-docs/docs/subsystems/workspace.i18n.yaml +2 -2
  390. package/references/official-docs/docs/subsystems/workspace.md +199 -1
  391. package/references/official-docs/docs/subsystems/workspace.zh.md +199 -1
  392. package/references/official-docs/docs/testing.i18n.yaml +2 -2
  393. package/references/official-docs/docs/testing.md +5 -4
  394. package/references/official-docs/docs/testing.zh.md +5 -4
  395. package/references/official-docs/docs/tool-catalog.i18n.yaml +2 -2
  396. package/references/official-docs/docs/tool-catalog.md +452 -187
  397. package/references/official-docs/docs/tool-catalog.zh.md +454 -189
  398. package/references/official-docs/docs/tool-execution-pipeline.i18n.yaml +2 -2
  399. package/references/official-docs/docs/tool-execution-pipeline.md +2 -2
  400. package/references/official-docs/docs/tool-execution-pipeline.zh.md +2 -2
  401. package/references/official-docs/docs/user/develop/basic/index.zh.md +1 -1
  402. package/references/official-docs/docs/user/develop/basic/publish.i18n.yaml +2 -2
  403. package/references/official-docs/docs/user/develop/basic/publish.md +2 -2
  404. package/references/official-docs/docs/user/develop/basic/publish.zh.md +5 -5
  405. package/references/official-docs/docs/user/develop/framework/index.i18n.yaml +2 -2
  406. package/references/official-docs/docs/user/develop/framework/index.md +1 -1
  407. package/references/official-docs/docs/user/develop/framework/index.zh.md +1 -1
  408. package/references/official-docs/docs/user/develop/practice/dynamic-cordis.i18n.yaml +2 -2
  409. package/references/official-docs/docs/user/develop/practice/dynamic-cordis.md +8 -8
  410. package/references/official-docs/docs/user/develop/practice/dynamic-cordis.zh.md +8 -8
  411. package/references/official-docs/docs/user/guide/index.zh.md +2 -2
  412. package/references/official-docs/docs/user/guide/mcp-memory.zh.md +1 -1
  413. package/references/official-docs/docs/user/guide/network-proxy.i18n.yaml +2 -2
  414. package/references/official-docs/docs/user/guide/network-proxy.md +1 -1
  415. package/references/official-docs/docs/user/guide/network-proxy.zh.md +1 -1
  416. package/references/official-docs/docs/user/guide/providers.i18n.yaml +2 -2
  417. package/references/official-docs/docs/user/guide/providers.md +12 -8
  418. package/references/official-docs/docs/user/guide/providers.zh.md +14 -10
  419. package/references/official-docs/docs/user/guide/python-sdk.i18n.yaml +2 -2
  420. package/references/official-docs/docs/user/guide/python-sdk.md +59 -23
  421. package/references/official-docs/docs/user/guide/python-sdk.zh.md +60 -24
  422. package/references/official-docs/docs/web-styling.i18n.yaml +2 -2
  423. package/references/official-docs/docs/web-styling.md +2 -1
  424. package/references/official-docs/docs/web-styling.zh.md +3 -2
  425. package/references/official-docs/packages/AGENTS.md +1 -1
  426. package/references/official-docs/packages/README.md +12 -7
  427. package/references/official-docs/vendor/README.md +15 -11
  428. package/references/official-docs/website-docs.ts +4 -2
  429. package/scripts/sync-official-docs.ps1 +5 -5
  430. package/references/official-docs/docs/subsystems/code-runtime.md +0 -195
  431. package/references/official-docs/docs/subsystems/code-runtime.zh.md +0 -195
@@ -14,9 +14,14 @@ This tutorial installs the published Python SDK, runs the shipped standalone min
14
14
 
15
15
  ## Install the SDK
16
16
 
17
- ### Linux and macOS
17
+ <div>
18
+ <a id="linux-and-macos"></a>
19
+ <a id="windows-powershell"></a>
20
+ </div>
18
21
 
19
- ```sh
22
+ ::: code-group
23
+
24
+ ```sh [Linux/macOS]
20
25
  git clone https://github.com/deepseek-ai/deepseek-harness.git
21
26
  cd deepseek-harness
22
27
  python -m venv .venv
@@ -24,9 +29,7 @@ python -m venv .venv
24
29
  python -m pip install deepseek-harness-sdk
25
30
  ```
26
31
 
27
- ### Windows PowerShell
28
-
29
- ```powershell
32
+ ```powershell [Windows PowerShell]
30
33
  git clone https://github.com/deepseek-ai/deepseek-harness.git
31
34
  Set-Location deepseek-harness
32
35
  py -3.10 -m venv .venv
@@ -34,31 +37,43 @@ py -3.10 -m venv .venv
34
37
  python -m pip install deepseek-harness-sdk
35
38
  ```
36
39
 
40
+ :::
41
+
37
42
  The installation includes a matching native runtime wheel and the `dsh` command. Normal SDK execution needs no system Node.js. Repository contributors who build the artifacts should use the [Python contributor workflow](../../../python/development.md).
38
43
 
39
44
  ## Run the checked-in example
40
45
 
41
46
  Export the credential and, when needed, a compatible proxy endpoint:
42
47
 
43
- ### Linux and macOS
48
+ <div>
49
+ <a id="linux-and-macos-1"></a>
50
+ <a id="windows-powershell-1"></a>
51
+ </div>
44
52
 
45
- ```sh
53
+ ::: code-group
54
+
55
+ ```sh [Linux/macOS]
46
56
  export DEEPSEEK_API_KEY=sk-your-key-here
47
57
  # export DEEPSEEK_BASE_URL=http://127.0.0.1:8000/v1
48
58
  ```
49
59
 
50
- ### Windows PowerShell
51
-
52
- ```powershell
60
+ ```powershell [Windows PowerShell]
53
61
  $env:DEEPSEEK_API_KEY = "sk-your-key-here"
54
62
  # $env:DEEPSEEK_BASE_URL = "http://127.0.0.1:8000/v1"
55
63
  ```
56
64
 
65
+ :::
66
+
57
67
  Run one task with explicit workspace and home paths:
58
68
 
59
- ### Linux and macOS
69
+ <div>
70
+ <a id="linux-and-macos-2"></a>
71
+ <a id="windows-powershell-2"></a>
72
+ </div>
73
+
74
+ ::: code-group
60
75
 
61
- ```sh
76
+ ```sh [Linux/macOS]
62
77
  python python/sdk/examples/minimal.py \
63
78
  --workspace /absolute/path/to/disposable-workspace \
64
79
  --dsh-home /absolute/path/to/example-dsh-home \
@@ -66,9 +81,7 @@ python python/sdk/examples/minimal.py \
66
81
  "Inspect the repository and fix the failing tests."
67
82
  ```
68
83
 
69
- ### Windows PowerShell
70
-
71
- ```powershell
84
+ ```powershell [Windows PowerShell]
72
85
  python python/sdk/examples/minimal.py `
73
86
  --workspace C:\work\disposable-workspace `
74
87
  --dsh-home C:\work\example-dsh-home `
@@ -76,6 +89,8 @@ python python/sdk/examples/minimal.py `
76
89
  "Inspect the repository and fix the failing tests."
77
90
  ```
78
91
 
92
+ :::
93
+
79
94
  The script prints the final assistant response. The selected home receives the generated `sdk-minimal` profile, installed plugins, and uncompressed JSONL session logs under `sessions/`. The example and SDK never silently read `~/.dsh`.
80
95
 
81
96
  ## Use the SDK in your program
@@ -109,39 +124,60 @@ The SDK starts the bundled `dsh --profile sdk-minimal` process lazily and reuses
109
124
 
110
125
  Use `dsh plugin` for dependencies and bundle layers that should persist in this home:
111
126
 
112
- ### Linux and macOS
127
+ <div>
128
+ <a id="linux-and-macos-3"></a>
129
+ <a id="windows-powershell-3"></a>
130
+ </div>
113
131
 
114
- ```sh
132
+ ::: code-group
133
+
134
+ ```sh [Linux/macOS]
115
135
  export DSH_HOME=/absolute/path/to/example-dsh-home
116
136
  dsh --profile sdk-minimal --dump-default-config >/dev/null
117
137
  dsh plugin --profile sdk-minimal add file:/absolute/path/to/my-plugin-bundle
118
138
  ```
119
139
 
120
- ### Windows PowerShell
121
-
122
- ```powershell
140
+ ```powershell [Windows PowerShell]
123
141
  $env:DSH_HOME = "C:\work\example-dsh-home"
124
142
  dsh --profile sdk-minimal --dump-default-config | Out-Null
125
143
  dsh plugin --profile sdk-minimal add file:C:/work/my-plugin-bundle
126
144
  ```
127
145
 
146
+ :::
147
+
128
148
  The first command initializes the shipped standalone profile. The second forwards package management to `pnpm`, then records any installed package that exports a `dsh.bundle` layer. Install `pnpm` only for this management command; launching the installed SDK does not need it. Edit `$DSH_HOME/profiles/sdk-minimal/cordis.patch.yml` for persistent row changes, or pass patch files from Python for per-launch changes.
129
149
 
130
150
  Another `profile` is valid when it includes `@deepseek-ai/dsh-sdk-app` or another JSON-RPC server row. Missing server rows, unresolved plugins, and invalid patches fail during startup instead of falling back to another composition.
131
151
 
152
+ <a id="opt-in-to-str_replace_editor"></a>
153
+ ### Opt in to `str_replace_editor`
154
+
155
+ The bundled runtime includes `str_replace_editor`, but `sdk-minimal` omits it from the default Cordis tree. To use it, save this configuration as `editor.patch.yml`; `insert` adds both the editor and the filesystem provider that the minimal profile lacks:
156
+
157
+ ```yaml
158
+ - insert:
159
+ - id: fs-local
160
+ name: '@deepseek-ai/dsh-fs-local'
161
+ config:
162
+ cwd: !!js process.cwd()
163
+ - id: tool-str-replace-editor
164
+ name: '@deepseek-ai/dsh-tool-str-replace-editor'
165
+ ```
166
+
167
+ Pass `patches=("/absolute/path/to/editor.patch.yml",)` when constructing `DeepSeekHarness(profile="sdk-minimal", ...)`, or put the patch in `$DSH_HOME/profiles/sdk-minimal/cordis.patch.yml` for persistent configuration. On the next runtime launch, model requests include `str_replace_editor` beside the persistent shell. The local filesystem provider uses the runtime working directory for relative paths; like the minimal shell, it does not confine access to that directory. For the standard `sdk` profile, insert only the editor row so it uses the existing filesystem provider and policies.
168
+
132
169
  ## Understand the minimal profile
133
170
 
134
171
  | Property | Value |
135
172
  |---|---|
136
173
  | System prompt | `DSH_SYSTEM_PROMPT`, falling back to `You are a helpful software engineer assistant.` |
137
174
  | Model in `minimal.py` | `--model`, then `DSH_MODEL`, then `deepseek-v4-flash` |
138
- | Model-facing tools | Persistent `bash` on Linux/macOS or `pwsh` on Windows, plus `str_replace_editor` |
175
+ | Model-facing tool | Persistent `bash` on Linux/macOS or `pwsh` on Windows |
139
176
  | Shell timeout | 300 seconds |
140
- | Editor output limit | 16,000 characters |
141
177
  | Runtime context and compaction | Absent |
142
178
  | Session persistence | Uncompressed JSONL under `<dsh_home>/sessions` |
143
179
 
144
- The profile's sole bundle inserts the complete tree over an empty root and does not include `dsh-base`; later base-profile tools therefore cannot appear implicitly. It contains the SDK protocol, one environment-configured DeepSeek adapter, local execution, and persistence, while settings, managed credentials, telemetry, Web tools, subagents, local instruction discovery, and compaction are absent. It pins `danger-full-access`, so the platform-selected persistent shell and editor can modify any path visible to the runtime; use a disposable checkout or container.
180
+ The profile's sole bundle inserts the complete tree over an empty root and does not include `dsh-base`; later base-profile tools therefore cannot appear implicitly. It contains the SDK protocol, one environment-configured DeepSeek adapter, local execution, and persistence, while filesystem tools, settings, managed credentials, OTel telemetry, Web tools, subagents, local instruction discovery, and compaction are absent. The [DeepSeek session-log contributor](../../../packages/session/session-log-deepseek/README.md) uploads complete unaccepted log suffixes with DeepSeek requests by default; set `session-log-deepseek.enabled: false` in a profile patch to disable it. It pins `danger-full-access`, so the platform-selected persistent shell can modify any path visible to the runtime; use a disposable checkout or container.
145
181
 
146
182
  The installed wheel still packages the full `web` profile and frontend assets. Run `dsh web` against an explicit `DSH_HOME` when a Python SDK deployment also needs the browser application; `web` is a separate CLI application and cannot serve a Python SDK client.
147
183
 
@@ -14,9 +14,14 @@
14
14
 
15
15
  ## 安装 SDK
16
16
 
17
- ### Linux 与 macOS
17
+ <div>
18
+ <a id="linux-与-macos"></a>
19
+ <a id="windows-powershell"></a>
20
+ </div>
18
21
 
19
- ```sh
22
+ ::: code-group
23
+
24
+ ```sh [Linux/macOS]
20
25
  git clone https://github.com/deepseek-ai/deepseek-harness.git
21
26
  cd deepseek-harness
22
27
  python -m venv .venv
@@ -24,9 +29,7 @@ python -m venv .venv
24
29
  python -m pip install deepseek-harness-sdk
25
30
  ```
26
31
 
27
- ### Windows PowerShell
28
-
29
- ```powershell
32
+ ```powershell [Windows PowerShell]
30
33
  git clone https://github.com/deepseek-ai/deepseek-harness.git
31
34
  Set-Location deepseek-harness
32
35
  py -3.10 -m venv .venv
@@ -34,31 +37,43 @@ py -3.10 -m venv .venv
34
37
  python -m pip install deepseek-harness-sdk
35
38
  ```
36
39
 
40
+ :::
41
+
37
42
  安装内容包含匹配的原生运行时 wheel 与 `dsh` 命令。普通 SDK 运行不需要系统 Node.js。需要构建产物的仓库贡献者应使用 [Python 贡献者工作流](../../../python/development.zh.md)。
38
43
 
39
44
  ## 运行检入示例
40
45
 
41
46
  导出凭据;使用兼容代理时再设置 endpoint:
42
47
 
43
- ### Linux 与 macOS
48
+ <div>
49
+ <a id="linux-与-macos-1"></a>
50
+ <a id="windows-powershell-1"></a>
51
+ </div>
44
52
 
45
- ```sh
53
+ ::: code-group
54
+
55
+ ```sh [Linux/macOS]
46
56
  export DEEPSEEK_API_KEY=sk-your-key-here
47
57
  # export DEEPSEEK_BASE_URL=http://127.0.0.1:8000/v1
48
58
  ```
49
59
 
50
- ### Windows PowerShell
51
-
52
- ```powershell
60
+ ```powershell [Windows PowerShell]
53
61
  $env:DEEPSEEK_API_KEY = "sk-your-key-here"
54
62
  # $env:DEEPSEEK_BASE_URL = "http://127.0.0.1:8000/v1"
55
63
  ```
56
64
 
65
+ :::
66
+
57
67
  使用显式 workspace 与 home 路径运行一个任务:
58
68
 
59
- ### Linux 与 macOS
69
+ <div>
70
+ <a id="linux-与-macos-2"></a>
71
+ <a id="windows-powershell-2"></a>
72
+ </div>
73
+
74
+ ::: code-group
60
75
 
61
- ```sh
76
+ ```sh [Linux/macOS]
62
77
  python python/sdk/examples/minimal.py \
63
78
  --workspace /absolute/path/to/disposable-workspace \
64
79
  --dsh-home /absolute/path/to/example-dsh-home \
@@ -66,9 +81,7 @@ python python/sdk/examples/minimal.py \
66
81
  "Inspect the repository and fix the failing tests."
67
82
  ```
68
83
 
69
- ### Windows PowerShell
70
-
71
- ```powershell
84
+ ```powershell [Windows PowerShell]
72
85
  python python/sdk/examples/minimal.py `
73
86
  --workspace C:\work\disposable-workspace `
74
87
  --dsh-home C:\work\example-dsh-home `
@@ -76,6 +89,8 @@ python python/sdk/examples/minimal.py `
76
89
  "Inspect the repository and fix the failing tests."
77
90
  ```
78
91
 
92
+ :::
93
+
79
94
  脚本会打印最终 assistant 响应。所选 home 会保存生成的 `sdk-minimal` profile、已安装插件,以及 `sessions/` 下的未压缩 JSONL 会话日志。示例与 SDK 绝不会静默读取 `~/.dsh`。
80
95
 
81
96
  ## 在程序中使用 SDK
@@ -109,42 +124,63 @@ SDK 会延迟启动内置的 `dsh --profile sdk-minimal` 进程,并复用到
109
124
 
110
125
  需要在该 home 中持久保存依赖与 bundle 层时,使用 `dsh plugin`:
111
126
 
112
- ### Linux 与 macOS
127
+ <div>
128
+ <a id="linux-与-macos-3"></a>
129
+ <a id="windows-powershell-3"></a>
130
+ </div>
113
131
 
114
- ```sh
132
+ ::: code-group
133
+
134
+ ```sh [Linux/macOS]
115
135
  export DSH_HOME=/absolute/path/to/example-dsh-home
116
136
  dsh --profile sdk-minimal --dump-default-config >/dev/null
117
137
  dsh plugin --profile sdk-minimal add file:/absolute/path/to/my-plugin-bundle
118
138
  ```
119
139
 
120
- ### Windows PowerShell
121
-
122
- ```powershell
140
+ ```powershell [Windows PowerShell]
123
141
  $env:DSH_HOME = "C:\work\example-dsh-home"
124
142
  dsh --profile sdk-minimal --dump-default-config | Out-Null
125
143
  dsh plugin --profile sdk-minimal add file:C:/work/my-plugin-bundle
126
144
  ```
127
145
 
146
+ :::
147
+
128
148
  第一个命令初始化随附的独立 profile。第二个命令把包管理转发给 `pnpm`,然后记录所有导出 `dsh.bundle` 层的已安装包。只有执行此管理命令时才需要安装 `pnpm`;启动已安装 SDK 不需要它。持久配置项变更应编辑 `$DSH_HOME/profiles/sdk-minimal/cordis.patch.yml`;单次启动变更则从 Python 传入 patch 文件。
129
149
 
130
150
  另一个 `profile` 只有包含 `@deepseek-ai/dsh-sdk-app` 或另一个 JSON-RPC server 配置项时才有效。缺失 server 配置项、无法解析的插件和非法 patch 会在启动时失败,不会回退到其他组合。
131
151
 
152
+ <a id="opt-in-to-str_replace_editor"></a>
153
+ ### 显式启用 `str_replace_editor`
154
+
155
+ 随附运行时包含 `str_replace_editor`,但 `sdk-minimal` 的默认 Cordis tree 不挂载它。要使用该工具,请将以下配置保存为 `editor.patch.yml`;`insert` 会添加 editor,以及极简 profile 缺少的文件系统后端:
156
+
157
+ ```yaml
158
+ - insert:
159
+ - id: fs-local
160
+ name: '@deepseek-ai/dsh-fs-local'
161
+ config:
162
+ cwd: !!js process.cwd()
163
+ - id: tool-str-replace-editor
164
+ name: '@deepseek-ai/dsh-tool-str-replace-editor'
165
+ ```
166
+
167
+ 构造 `DeepSeekHarness(profile="sdk-minimal", ...)` 时传入 `patches=("/absolute/path/to/editor.patch.yml",)`,或将 patch 写入 `$DSH_HOME/profiles/sdk-minimal/cordis.patch.yml` 以持久保存配置。下次运行时启动后,模型请求会在持久 shell 之外包含 `str_replace_editor`。本地文件系统后端以运行时工作目录解析相对路径;与极简 shell 一样,它不会将访问限制在该目录内。对于标准 `sdk` profile,只插入 editor 配置项,让它使用已有的文件系统后端与策略。
168
+
132
169
  ## 理解极简 profile
133
170
 
134
171
  | 属性 | 值 |
135
172
  |---|---|
136
173
  | 系统提示词 | `DSH_SYSTEM_PROMPT`,未设置时为 `You are a helpful software engineer assistant.` |
137
174
  | `minimal.py` 的模型 | `--model`,然后是 `DSH_MODEL`,最后是 `deepseek-v4-flash` |
138
- | 面向模型的工具 | Linux/macOS 上的持久 `bash` 或 Windows 上的 `pwsh`,以及 `str_replace_editor` |
175
+ | 面向模型的工具 | Linux/macOS 上的持久 `bash` 或 Windows 上的 `pwsh` |
139
176
  | Shell 超时 | 300 秒 |
140
- | Editor 输出上限 | 16,000 字符 |
141
177
  | 运行时上下文与 compaction | 不存在 |
142
178
  | 会话持久化 | `<dsh_home>/sessions` 下的未压缩 JSONL |
143
179
 
144
- 该 profile 的唯一组合包会在空根之上插入完整配置树,且不包含 `dsh-base`,因此基础 profile 以后新增的工具不会隐式出现。它包含 SDK 协议、一个由环境配置的 DeepSeek 适配器、本地执行与持久化;settings、托管凭据、遥测、Web 工具、subagent、本地指令发现和 compaction 均不存在。它固定使用 `danger-full-access`,因此按平台选择的持久 shell 与 editor 可以修改运行时可见的任何路径;应使用一次性 checkout 或容器。
180
+ 该 profile 的唯一组合包会在空根之上插入完整配置树,且不包含 `dsh-base`,因此基础 profile 以后新增的工具不会隐式出现。它包含 SDK 协议、一个由环境配置的 DeepSeek 适配器、本地执行与持久化;文件系统工具、settings、托管凭据、OTel 遥测、Web 工具、subagent、本地指令发现和 compaction 均不存在。[DeepSeek 会话日志贡献器](../../../packages/session/session-log-deepseek/README.zh.md)默认随 DeepSeek 请求上传完整的未接受日志后缀;在 profile patch 中设置 `session-log-deepseek.enabled: false` 可将其关闭。它固定使用 `danger-full-access`,因此按平台选择的持久 shell 可以修改运行时可见的任何路径;应使用一次性 checkout 或容器。
145
181
 
146
182
  已安装 wheel 仍会打包完整 `web` profile 与前端产物。如果 Python SDK 部署还需要浏览器应用,请针对显式 `DSH_HOME` 运行 `dsh web`;`web` 是独立 CLI 应用,不能为 Python SDK client 提供服务。
147
183
 
148
184
  需要隔离 profile、插件、凭据、设置与会话时,应使用新的 home。独立工作应使用新的 session id;只有继续同一段持久对话和会话资源时,才同时复用 harness、home 与 id。
149
185
 
150
- [组合包参考](../../../packages/bundle/sdk-minimal/README-zh.md)定义确切配置树,[示例参考](../../../python/sdk/examples/README-zh.md)定义可运行程序。[Python SDK 参考](../../../python/sdk/README-zh.md)介绍生命周期、结果、通知与底层行为;[dsh CLI 参考](../../../apps/cli/reference/README-zh.md)介绍 profile 分层。
186
+ [组合包参考](../../../packages/bundle/sdk-minimal/README.zh.md)定义确切配置树,[示例参考](../../../python/sdk/examples/README.zh.md)定义可运行程序。[Python SDK 参考](../../../python/sdk/README.zh.md)介绍生命周期、结果、通知与底层行为;[dsh CLI 参考](../../../apps/cli/reference/README.zh.md)介绍 profile 分层。
@@ -2,5 +2,5 @@
2
2
  # side as of the last confirmed-consistent state. Both languages carry equal authority;
3
3
  # after editing either side, bring the other along and re-record with:
4
4
  # pnpm run verify-translation-pairing --write docs/web-styling.md
5
- web-styling.md: 250936b82f06b47d00c0b6646cbea5bdb41f42ea
6
- web-styling.zh.md: 9845b4f5d8341624d294a008f505c0fb1ec9757a
5
+ web-styling.md: 1be0b629d2ccf54c5a00cfc8091a01e3d4d09bfd
6
+ web-styling.zh.md: 106880e964a399cba825e889b5e93048589d00e4
@@ -12,6 +12,7 @@ Global style sheets belong in `ui-theme/src/styles/`. Component styles live besi
12
12
 
13
13
  ## Component rules
14
14
 
15
+ - Reuse the control before restyling one: the [ui-primitives component catalog](../packages/client/ui-primitives/README.md#component-catalog) is the only channel that crosses feature packages, and a deliberate visual difference belongs in a prop there rather than in a second copy ([decision](../.agents/notes/implemented/architecture/2026-09-05-shared-client-control-primitives.md)).
15
16
  - Use CSS Modules and `clsx`; do not add a component library or Tailwind.
16
17
  - Use `--dsw-alias-*` semantic tokens in feature components. Do not copy static palette values or write literal colors there.
17
18
  - Keep theme selectors out of feature component CSS. Light/dark overrides belong to the theme owner.
@@ -22,7 +23,7 @@ Global style sheets belong in `ui-theme/src/styles/`. Component styles live besi
22
23
  - Rounded corners inherit the global superellipse smoothing from ui-theme's `corner-shape.css` on supporting engines. Pair `corner-shape: round` with every full-round `border-radius` (`50%`, `100%`, or a pill radius) so circles and capsules keep circular arcs; the ui-theme corner-shape spec enforces the pairing.
23
24
  - Elevated surfaces (menus, popovers, modals, panels, floating buttons, the composer) set `border: 0` and take `box-shadow: var(--dsw-elevation-panel)`, `var(--dsw-elevation-prominent)`, or the composer's `var(--dsw-elevation-soft)` (larger blur at lower alpha): the 0.5px hairline stroke is the first shadow layer, and `--dsw-elevation-stroke-color` rebinds or suppresses it per surface or state. Never pair a `--dsw-alias-border-*` border with an lv/elevation shadow — the ui-theme elevation spec rejects the pairing; state-colored borders (warn panels) stay real borders.
24
25
  - Flat borders and separators that use a neutral `--dsw-alias-border-*` token draw at `0.5px` — buttons, inputs, cards, row dividers, and separators drawn as filled boxes (menu separators, the conversation header seam, markdown `hr`, vertical rails) share the hairline weight, which Chromium paints as one device pixel. Dashed affordances and state-colored borders keep 1px; spinner ring tracks keep their width through the spec's explicit allowlist. The ui-theme elevation spec rejects wider neutral solid borders.
25
- - Clickable artifact links (markdown anchors, prose file mentions, web source and fetch links, produced-file chips, workflow member links) color through `--dsw-alias-link` at `font-weight: 500`, with no underline at rest and a dotted 3px-offset underline on hover/focus. Text-leading anchors also lead with the ui-primitives `LinkIcon` category glyph riding `currentColor`; workflow member links and image-only anchors carry no glyph, and tool-row file links keep their grey dotted affordance ([clickable-link Agent Note](../.agents/notes/implemented/feature/2026-09-04-web-clickable-link-styles.md)).
26
+ - Clickable artifact links (markdown anchors, prose file mentions, web source and fetch links, produced-file chips, workflow member links) color through `--dsw-alias-link` at `font-weight: 500`, with no underline at rest and a dotted 3px-offset underline on hover/focus. Compact Thinking Markdown keeps tertiary text color and a resting dotted underline ([compact presentation](../.agents/notes/implemented/bug-fix/2026-09-17-thinking-markdown.md)). Text-leading anchors also lead with the ui-primitives `LinkIcon` category glyph riding `currentColor`, which for a well-known external host is that site's own mark instead of the globe; workflow member links and image-only anchors carry no glyph, and tool-row file links keep their grey dotted affordance ([clickable-link Agent Note](../.agents/notes/implemented/feature/2026-09-04-web-clickable-link-styles.md), [known-site mark Agent Note](../.agents/notes/implemented/feature/2026-09-16-known-site-link-marks.md)).
26
27
 
27
28
  ## Changing the system
28
29
 
@@ -6,12 +6,13 @@
6
6
 
7
7
  ## 职责归属
8
8
 
9
- [`ui-theme`](../packages/client/ui-theme/README-zh.md) 负责 `--dsw-*` 静态色阶、语义别名、排版、动效、渐变、阴影、滚动条样式以及明暗主题偏好。[`ui-layout`](../packages/client/ui-layout/README-zh.md) 将解析后的主题快照应用到文档。功能包使用语义别名,不得另行定义全局主题。
9
+ [`ui-theme`](../packages/client/ui-theme/README.zh.md) 负责 `--dsw-*` 静态色阶、语义别名、排版、动效、渐变、阴影、滚动条样式以及明暗主题偏好。[`ui-layout`](../packages/client/ui-layout/README.zh.md) 将解析后的主题快照应用到文档。功能包使用语义别名,不得另行定义全局主题。
10
10
 
11
11
  全局样式表归 `ui-theme/src/styles/` 所有。组件样式以 CSS Modules 形式放在组件旁。当某个值属于该组件的布局或呈现约定时,组件可以定义局部自定义属性;共享颜色、排版、层级和动效属于主题包。
12
12
 
13
13
  ## 组件规则
14
14
 
15
+ - 重新设计控件样式之前先复用控件:[ui-primitives 组件目录](../packages/client/ui-primitives/README.zh.md#component-catalog)是唯一跨功能包的通道,有意的视觉差异应作为那里的一个 prop,而不是另起一份拷贝([决定](../.agents/notes/implemented/architecture/2026-09-05-shared-client-control-primitives.zh.md))。
15
16
  - 使用 CSS Modules 和 `clsx`;不得添加组件库或 Tailwind。
16
17
  - 功能组件使用 `--dsw-alias-*` 语义 token。不得复制静态色板值或在其中写入颜色字面量。
17
18
  - 功能组件 CSS 不得包含主题选择器。明暗主题覆盖属于主题所有方。
@@ -22,7 +23,7 @@
22
23
  - 支持的引擎上,圆角继承 ui-theme `corner-shape.css` 的全局超级椭圆平滑。每个正圆 `border-radius`(`50%`、`100%` 或胶囊半径)必须配对 `corner-shape: round`,使圆形与胶囊保持圆弧;ui-theme 的 corner-shape spec 强制这一配对。
23
24
  - 高层级表面(菜单、浮层、对话框、面板、悬浮按钮、输入框)设 `border: 0` 并使用 `box-shadow: var(--dsw-elevation-panel)`、`var(--dsw-elevation-prominent)` 或输入框专用的 `var(--dsw-elevation-soft)`(更大模糊、更低透明度):0.5px 发丝描边是第一层投影,`--dsw-elevation-stroke-color` 可按表面或状态重绑或抑制描边。不得将 `--dsw-alias-border-*` border 与 lv/elevation 投影配对——ui-theme 的 elevation spec 会拒绝;状态色 border(warn 面板)保持真 border。
24
25
  - 使用中性 `--dsw-alias-border-*` token 的平面边框与分割线一律 `0.5px`——按钮、输入框、卡片、行分割线,以及以填充盒绘制的分隔线(菜单分隔、对话标题栏接缝、markdown `hr`、竖向轨道线)共用发丝线粗细,Chromium 将其绘制为一个设备像素。dashed 记号与状态色 border 保持 1px;spinner 圆环经 spec 的显式豁免保留原宽度。更宽的中性 solid border 会被 ui-theme elevation spec 拒绝。
25
- - 可点击产物链接(Markdown 锚点、正文文件引用、网页来源与抓取链接、产物 chips、workflow 成员链接)经 `--dsw-alias-link` 着色、`font-weight: 500`,默认无下划线,hover/focus 时为 3px offset 的点状下划线。带文字的锚点另以 ui-primitives 的 `LinkIcon` 分类图形(随 `currentColor`)作前置;workflow 成员链接与只包图片的锚点不带图形,工具行文件链接保持其灰色点线示能([可点击链接 Agent Note](../.agents/notes/implemented/feature/2026-09-04-web-clickable-link-styles.zh.md))。
26
+ - 可点击产物链接(Markdown 锚点、正文文件引用、网页来源与抓取链接、产物 chips、workflow 成员链接)经 `--dsw-alias-link` 着色、`font-weight: 500`,默认无下划线,hover/focus 时为 3px offset 的点状下划线。紧凑 Thinking Markdown 保持 tertiary 文字色和默认点状下划线([紧凑展示](../.agents/notes/implemented/bug-fix/2026-09-17-thinking-markdown.zh.md))。带文字的锚点另以 ui-primitives 的 `LinkIcon` 分类图形(随 `currentColor`)作前置;目的地是已知外部站点时改用该站点自己的标记而非地球;workflow 成员链接与只包图片的锚点不带图形,工具行文件链接保持其灰色点线示能([可点击链接 Agent Note](../.agents/notes/implemented/feature/2026-09-04-web-clickable-link-styles.zh.md)、[已知站点标记 Agent Note](../.agents/notes/implemented/feature/2026-09-16-known-site-link-marks.zh.md))。
26
27
 
27
28
  ## 变更系统
28
29
 
@@ -25,4 +25,4 @@ These package-specific rules supplement the repo-wide [conventions](../AGENTS.md
25
25
  - Tests live at package level under `tests/`, not `src/__tests__/`.
26
26
  - Update package README and JSDoc contracts in the same commit as behavior, and verify them against code with [dsh-prose-standard](../.agents/skills/dsh-prose-standard/SKILL.md). Group READMEs declare subsystem ownership through a canonical English page link or justified [exemption](../scripts/verify-subsystem-pages.ts).
27
27
  - Package READMEs document model, token, and KV-cache effects using the [canonical Model Experience format](../docs/cookbook/adding-a-package.md#4-write-the-package-readme).
28
- - Package READMEs put durable consumer gaps and non-obvious maintainer constraints under `## Known Limitations and Deferred Work`; ordinary cleanup stays in its TODO or Agent Note. Packages with none use a justified [allowlist entry](../scripts/verify-package-readme-limitations.ts) ([rationale](../.agents/notes/implemented/process/2026-07-10-readme-known-limitations-gate.md)).
28
+ - Package READMEs put durable consumer gaps and non-obvious maintainer constraints under `## Known Limitations and Deferred Work`; ordinary cleanup stays in its TODO or Agent Note. Packages with none use a justified [allowlist entry](../scripts/verify-package-readme-limitations.ts).
@@ -5,7 +5,7 @@ kind: "package-group"
5
5
 
6
6
  # Packages
7
7
 
8
- English | [中文](README-zh.md)
8
+ English | [中文](README.zh.md)
9
9
 
10
10
  ## Summary
11
11
 
@@ -36,12 +36,15 @@ Every package lives in exactly one group; new packages join existing groups, and
36
36
  | [`feedback/`](feedback/README.md) | Human feedback capture and command |
37
37
  | [`identity/`](identity/README.md) | Shared anonymous identity |
38
38
  | [`llm/`](llm/README.md) | LLM capability family: abstract service + provider adapters |
39
- | [`e2b/`](e2b/README.md) | E2B remote-runtime providers |
40
39
  | [`subprocess/`](subprocess/README.md) | Subprocess capability family: Service Definition + local process-tree provider |
40
+ | [`ssh/`](ssh/README.md) | POSIX remote connection with paired filesystem, subprocess and sandbox providers |
41
41
  | [`shell/`](shell/README.md) | Bash capability family: executor seam, local impl, model-facing tools |
42
42
  | [`terminal/`](terminal/README.md) | Persistent PTY capability family: owner-scoped sessions, local implementation, model-facing tools |
43
- | [`code-runtime/`](code-runtime/README.md) | Code-execution capability family: Service Definition + worker-thread provider + PTC mode Consumer |
43
+ | [`ptc-runtime/`](ptc-runtime/README.md) | PTC execution capability family: Service Definition + sandboxed Node provider + PTC mode Consumer |
44
+ | [`computer-use/`](computer-use/README.md) | Exclusive named desktop-provider registration |
45
+ | [`browser-use/`](browser-use/README.md) | Exclusive named browser-provider registration |
44
46
  | [`sandbox/`](sandbox/README.md) | Process-confinement seam; bwrap/Landlock/Seatbelt backends |
47
+ | [`deliverables/`](deliverables/README.md) | Turn deliverables: explicit file delivery and recorded workspace changes |
45
48
  | [`fs/`](fs/README.md) | Filesystem capability family: seam, local impl, model-facing file tools, discovery tools |
46
49
  | [`lsp/`](lsp/README.md) | LSP capability family: seam, generic stdio provider, and the `lsp` tool |
47
50
  | [`skill/`](skill/README.md) | Skill capability family: provider registry, local provider, model-facing catalog/loader |
@@ -49,10 +52,11 @@ Every package lives in exactly one group; new packages join existing groups, and
49
52
  | [`context/`](context/README.md) | Model-visible request context: workspace instructions, time context, references |
50
53
  | [`subagent/`](subagent/README.md) | Subagent capability family: provider-registry contract and model-facing delegation tools |
51
54
  | [`jobs/`](jobs/README.md) | Generic background-job runtime and model-facing job control tools |
52
- | [`experimental/`](experimental/README.md) | Private prototypes and internal-only plugins |
53
- | [`workflow/`](workflow/README.md) | Workflow seam, worker-thread engine, and model-facing `workflow`/`ralph` tools |
55
+ | [`experimental/`](experimental/README.md) | Pre-stable prototypes with explicit private exceptions |
56
+ | [`workflow/`](workflow/README.md) | Workflow seam, PTC process engine, and model-facing `workflow`/`ralph` tools |
54
57
  | [`webhook/`](webhook/README.md) | Verified external events, trusted rules, and fire-and-forget Workspace Sessions |
55
58
  | [`web/`](web/README.md) | Web capability family: seam, search/fetch providers, model-facing web tools |
59
+ | [`document/`](document/README.md) | Shared Host Office-to-PDF conversion |
56
60
  | [`attachment/`](attachment/README.md) | Durable attachment identity, validation, local content-addressed storage |
57
61
  | [`spill/`](spill/README.md) | Spill capability family: storage seam, local impl, tool-result spill policy |
58
62
  | [`todo/`](todo/README.md) | The model-facing `todo_write` tool |
@@ -61,6 +65,7 @@ Every package lives in exactly one group; new packages join existing groups, and
61
65
  | [`guard/`](guard/README.md) | Loop-hygiene guards: advisory repeat-call reminders + the `tools/execute` deadline enforcer |
62
66
  | [`bundle/`](bundle/README.md) | Installable `dsh --profile` patch layers |
63
67
  | [`extensions/`](extensions/README.md) | Agent runtime self-modification: live plugin/service inspection and model-written mount/unmount |
68
+ | [`mcp/`](mcp/README.md) | External Model Context Protocol servers exposed as native tools |
64
69
  | [`hooks/`](hooks/README.md) | Hook bridges + the shared Claude Code / Codex wire-protocol library |
65
70
  | [`session/`](session/README.md) | Durable session data plane: persistence seam + backends, projection seam, log-backed titles, session reporting |
66
71
  | [`session-query/`](session-query/README.md) | Session retrieval family: logical corpus, bounded reads, lineage, semantic filtering, SQLite full-text search |
@@ -74,7 +79,7 @@ Every package lives in exactly one group; new packages join existing groups, and
74
79
  | [`boot/`](boot/README.md) | Shared app-bin boot glue |
75
80
  | [`host/`](host/README.md) | Web-GUI host half: API gateway + HTTP route server |
76
81
  | [`client/`](client/README.md) | Web-GUI browser half: shell, wire, object services, slots, `ui-*` plugins |
77
- | [`test-support/`](test-support/README.md) | Support infrastructure (testkits, invariants, replay, Loader smokes) |
82
+ | [`test-support/`](test-support/README.md) | Test infrastructure (testkits, replay, Loader smokes) |
78
83
  | [`runtime-diagnostics/`](runtime-diagnostics/README.md) | Runtime diagnostics: package-owned invariant checks and reports |
79
84
  | [`util/`](util/README.md) | Low-level zero-dependency utilities shared across groups (`Branded<B>`, home/path helpers, timeout, retention) |
80
85
 
@@ -83,7 +88,7 @@ Every package lives in exactly one group; new packages join existing groups, and
83
88
  <a id="release-expectations"></a>
84
89
  ## Release expectations
85
90
 
86
- Most groups are product — stable API. The exceptions: `e2b/` is a POC, `experimental/` is unreleased, and `test-support/`, `runtime-diagnostics/`, and `util/` are support with lower compatibility expectations.
91
+ Most groups are product — stable API. The exceptions: `experimental/` publishes without stability or support promises, and `test-support/`, `runtime-diagnostics/`, and `util/` are support with lower compatibility expectations.
87
92
 
88
93
  -----
89
94
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  This directory contains source-vendored copies of the Cordis framework and its foundation libraries. They are copied into this monorepo instead of being depended on via npm, so that the harness fully owns its framework layer (auditable, patchable, pinned).
4
4
 
5
- All vendored packages are **renamed into the `@deepseek-ai` scope** (`cordis` → `@deepseek-ai/cordis`, `@cordisjs/plugin-<x>` → `@deepseek-ai/cordis-plugin-<x>`): every harness package declares `cordis` as a peer dependency, so publishing the harness publishes this framework layer too, and a publication under the upstream names would squat them on the registry. Directory names and upstream version numbers are deliberately unchanged, so the manifest below still reads as an upstream snapshot. `pnpm-workspace.yaml#linkWorkspacePackages` makes those preserved semver ranges resolve these pinned workspaces, including imports from built `lib/`. The `hygiene` gate `verify-vendored-links` asserts every vendored name resolves to a workspace `link:` in `pnpm-lock.yaml` with no registry copy alongside. Schemastery's manifest additionally declares a conditional `exports` map (import → `.mjs`, require → `.cjs`): pnpm links the directory itself, so without `exports` Node's ESM resolver would fall back to `main` and load the CJS entry whose lazy `require('@deepseek-ai/cosmokit')` can race ESM loading of the same linked module under module-hook hosts (vitest). Upstream MIT `LICENSE` files are preserved in each package directory.
5
+ All vendored packages use the **`@deepseek-ai` scope** (`cordis` → `@deepseek-ai/cordis`, `@cordisjs/plugin-<x>` → `@deepseek-ai/cordis-plugin-<x>`). The manifest table records upstream versions and source commits; each package manifest carries its Harness release version and publication metadata. Repository-owned runtime dependencies use `workspace:^`, so local builds resolve the pinned workspace packages and publication substitutes release ranges. Upstream MIT `LICENSE` files are preserved in each package directory.
6
6
 
7
7
  This file covers the manifest, the local-modification log, and the procedure for **updating** an existing vendored package. To **add a new** one, see the cookbook guide: [docs/cookbook/adding-a-vendored-package.md](../docs/cookbook/adding-a-vendored-package.md).
8
8
 
@@ -31,25 +31,29 @@ Intentionally **not** vendored (verified unused by this set): `reggol`, `@cordis
31
31
  Keep this log exhaustive — every divergence from upstream must be listed.
32
32
 
33
33
  1. **`hmr/src/index.ts`**: removed the `./locales/en-US.yml` / `./locales/zh-CN.yml` imports, the `.i18n({...})` call on the `Config` schema, and the `src/locales/` directory. Rationale: those imports require a runtime YAML loader hook (`@cordisjs/unyaml`) that we do not vendor; the i18n texts only localize config descriptions.
34
- 2. **All `package.json` files**: regenerated — added `private: true`, added precise `files` entries for bundled runtime files and `lib/types/**/*.d.ts` / `.d.ts.map`, preserved `src` in `files` only for packages whose previous file list already shipped it, added a `./src/*` export where missing, pointed declaration metadata at `lib/types`, and removed upstream `devDependencies`/`scripts`/`repository` fields. Dependency and peer-dependency ranges are preserved except that `hmr` declares `esbuild` as a direct dev dependency because its source imports the `BuildFailure` type and pnpm's strict workspace resolution requires the owner package to name that dependency, and `loader` requires `node-addon-require-builtin@^0.1.4` to match the runtime used by published app packages.
34
+ 2. **All `package.json` files**: regenerated for Harness releases with scoped names, release versions, publication metadata, precise bundled-runtime and `lib/types/**/*.d.ts` / `.d.ts.map` file entries, source exports where applicable, and declaration metadata pointing at `lib/types`. Repository-owned dependencies use the workspace protocol. HMR declares `esbuild` as a direct dev dependency for its imported `BuildFailure` type, and Loader requires `node-addon-require-builtin@^0.1.4` to match published app runtimes.
35
35
  3. **All `tsconfig.json` files**: regenerated to extend the repo-root `tsconfig.base.json`, emit TypeScript intermediates to `lib/types`, and declare project references.
36
- 4. **Vendored TypeScript source internal specifiers**: changed local relative imports/exports from upstream's specifier shape to explicit `.ts` specifiers so TypeScript rewrites emitted JS to `.js` while declarations keep explicit, NodeNext-safe `.ts` specifiers. This includes `loader/src/config/isolate.ts` using `declare module './entry.ts'`.
36
+ 4. **Vendored TypeScript source internal specifiers**: changed local relative imports/exports from upstream's specifier shape to explicit `.ts` specifiers so TypeScript rewrites emitted JS to `.js` while declarations keep explicit, NodeNext-safe `.ts` specifiers. This includes `loader/src/config/isolate.ts` using `declare module './entry.ts'`. Type-only dependencies use `import type` or inline `type` modifiers so ESM output does not retain erased interfaces.
37
37
  5. **`schemastery/tsdown.config.ts` and `logger-console/tsdown.config.ts`**: ours, not upstream files — per-package build-shape overrides (dual ESM+CJS output; separate node/browser entries) for the repo-root tsdown build. They read the JS emitted under `lib/types` and then write the publish runtime entries under `lib/`. Like the regenerated tsconfigs, they are not part of the upstream sync surface.
38
- 6. **`cordis/src/fiber.ts` lifecycle hardening**: locally closes three reentrant disposal gaps. An effect's owner-list wrapper is registered before its setup body runs, so an unload begun from inside setup awaits setup and every collected cleanup; synchronous setup failure removes the wrapper and rolls back collected cleanup. Async cleanup stays owner-visible until quiescence, and Cordis's internal effect composition joins an already-running cleanup while repeated public disposer calls retain their upstream single-shot result. Effect creation is rejected while the owner is `UNLOADING` (while `PENDING` and `LOADING` remain legal), preventing cleanup-time registrations from escaping the unload snapshot. Child fibers register and receive their parent-owned disposer before `internal/plugin` publication, resolve dependency declarations added by that notification before activation, drain effects attached while pending, skip plugin execution when reentrant disposal invalidates the load epoch before its first checkpoint, and contain teardown-notification failures per observer so one callback cannot starve peers or interrupt ownership cleanup. `Fiber.update()` returns its `internal/update` waterfall result, allowing Loader callers to await a restart while preserving synchronous config validation.
39
- 7. **`cordis/src/*.ts` JSDoc enrichment**: added `@param`/`@returns` tags and contract documentation (disposal semantics, waterfall veto, bail conditions, error cases) across the public plugin-author surface — `Context` (class, statics, and the `Context` interface properties incl. `root`), `EventsService`, `Fiber`, `RegistryService`, `ReflectService`, `Service`, `LoggerService` and their `declare module './context.ts'` overloads. Comment-only; no code changes. Motivation: the website API-reference generator renders these docs and hard-errors on undocumented members. Retire this entry when the enrichment is upstreamed to the fork.
40
- 8. **Transactional Loader/Include config reconciliation**: Loader imports a changed entry name before disposal, awaits lifecycle settlement, and restores the previous plugin or config when candidate application fails. Loader settlement rechecks service-gated fibers after current tasks drain, rejects failures, and leaves fibers with absent dependencies pending. Group updates start candidates concurrently, await every outcome, contain sibling-start failures after their owning tree is disposed, undo changes and additions on live-update failure, await removal, preserve programmatic option identity, and persist direct or tree-level mutations only after success. Include reads and validates detached candidate content, applies patches to a clone, reconciles the tree, and only then commits its cached content/data; direct refresh failures propagate for the caller to contain. A non-array parse is invalid, patches re-apply on every file or Include-config update, an omitted patch list clears the overlay, and initial content falls back to `initial` only on `ENOENT`. Covered by `packages/boot/app-boot/tests/config-reload.spec.ts` and `packages/host/webserver/tests/webserver.spec.ts`.
41
- 9. **`hmr/src/index.ts` exact config watching**: `registerConfig()` watches one absolute config path outside module roots, including a path under missing parents, serializes and coalesces refreshes, and returns an async disposer that closes the watcher and drains active work. Module watches realpath their existing base directory, attach change listeners before declaring the service ready, and use that spelling for Node module-cache identity; exact config watches realpath the deepest existing watch ancestor and restore the missing suffix. Those native paths prevent Windows short-name aliases from colliding with long-form libuv event paths while exact-config callbacks keep the requested filename. Refresh failures are normalized to `Error`, logged, and broadcast through the parallel `hmr/config-update-failed` event; observer failures are contained. Config-file changes discovered by the ordinary HMR watcher use the same serialized path. Covered by `packages/boot/app-boot/tests/hmr-config.spec.ts`.
42
- 10. **Vendored Node-compatible TypeScript**: marked erased imports explicitly across `cordis`, `loader`, `include`, `hmr`, and `schemastery` so Node's native TypeScript transform does not request types as runtime exports. Schemastery's source uses an ESM default export and its package declares `type: module`; its built ESM/CJS entries retain explicit `.mjs`/`.cjs` extensions.
43
- 11. **`include/src/index.ts` patch-semantics export**: extracted the private `applyPatches` body into the exported pure function `applyEntryPatches(data, patches, warn)` (the method delegates to it) and exported the `!!js` YAML dialect as `entryListSchema`, so `dsh --dump-config` composes and prints exactly what the include would mount without booting a tree. Behavior-preserving for mounting; the extraction exists because config tooling must never reimplement (and drift from) the patch algorithm. `applyEntryPatches` also indexes each `insert`ed entry as it is added, so a later patch in the same list can configure or disable a row an earlier patch inserted; upstream built the id index once before the patch loop, leaving inserted rows silently unpatchable. That matters because `dsh` composes an empty profile root with each bundle's patch layer, the profile's and the home-level `cordis.patch.yml`, and any `--patch` overlays as sibling patch lists at one include level — patches never cross an include boundary, so surface-only rows would otherwise be unreachable from user config. Covered by `packages/boot/app-boot/tests/config-reload.spec.ts`.
44
- 12. **`include/src/index.ts` serialized child-tree mutation and `hmr/src/index.ts` main-watcher initial-scan suppression**: every Include child-tree mutation (initial apply, refresh, `internal/update` patch re-application) runs through one per-Include queue, because the group's transactional `update` is not reentrant — two concurrent applies interleave create and rollback on the same entries and strand the Include fiber without ever settling. The HMR main watcher passes `ignoreInitial: true`: the initial scan re-announced files boot had just consumed, and its `add` for a config file refreshed an Include mid-initial-apply; once serialized, a failing initial apply's rollback disposed HMR, whose teardown drain waited on the queued refresh sitting behind that same apply — a deadlock that exited 13 with no diagnostic. `registerConfig()` keeps its own `ignoreInitial: false` watcher because a user patch layer present at registration must apply once. Covered by the patch-overlay boot-failure built-bin case in `apps/cli/tests/built-bin.e2e.ts`.
38
+ 6. **`cordis/src/fiber.ts` lifecycle hardening**: locally closes three reentrant disposal gaps. An effect's owner-list wrapper is registered before its setup body runs, so an unload begun from inside setup awaits setup and every collected cleanup; synchronous setup failure removes the wrapper and rolls back collected cleanup. Async cleanup stays owner-visible until quiescence, and Cordis's internal effect composition joins an already-running cleanup while repeated public disposer calls retain their upstream single-shot result. Effect creation is rejected while the owner is `UNLOADING` (while `PENDING` and `LOADING` remain legal), preventing cleanup-time registrations from escaping the unload snapshot. Child fibers register and receive their parent-owned disposer before `internal/plugin` publication, resolve dependency declarations added by that notification before activation, drain effects attached while pending, skip plugin execution when reentrant disposal invalidates the load epoch before its first checkpoint, and contain teardown-notification failures per observer so one callback cannot starve peers or interrupt ownership cleanup.
39
+ 7. **Cordis and Loader JSDoc enrichment**: added `@param`/`@returns` tags and contract documentation (disposal semantics, waterfall veto, bail conditions, error cases) across the public plugin-author surface — `Context` (class, statics, and the `Context` interface properties incl. `root`), module re-exports, shared utility helpers, `EventsService`, `Fiber`, `RegistryService`, `ReflectService`, `Service`, `LoggerService` and their `declare module './context.ts'` overloads. Loader documentation covers `loader/src/{index,internal,config/entry,config/group,config/isolate,config/tree,config/utils}.ts`, including entry ownership, tree mutation methods, and the `!!js` discriminator. Comment-only; no code changes. Motivation: the website API-reference generator renders these docs and hard-errors on undocumented members. Retire this entry when the enrichment is upstreamed to the fork.
40
+ 8. **`include/src/index.ts` resilient file refresh and patch reapplication**: [#514](https://github.com/deepseek-harness/deepseek-harness/pull/514) validates a top-level entry array before caching parsed content, logs refresh failures, reapplies patches after file or Include-config edits, updates the Include config when it vetoes a restart, and uses `initial` only after `ENOENT`. These parse protections retain the running tree after an invalid file; plugin activation failures can leave a partially applied tree. Loader entry/group/tree mutations follow the pinned eager, non-transactional implementation and do not restore previous plugins or options. Covered by `packages/boot/app-boot/tests/{config-reload,user-patches}.spec.ts`.
41
+ 9. **`hmr/src/index.ts` module-watcher readiness and native paths**: realpath the existing watch base, classify framework modules and attach listeners before reporting readiness, and compare config paths using both canonical and configured spellings. This preserves Node module-cache identity across Windows short-name paths and filesystem aliases. The main watcher uses `ignoreInitial: true` so startup reads do not trigger another refresh; exact profile patch watching is owned by `packages/boot/hmr/src/watch-config.ts`. Covered by `packages/boot/hmr/tests/watch-config.spec.ts`.
42
+ 10. **Vendored Node-compatible TypeScript**: marked erased imports explicitly across `cordis`, `loader`, `include`, `hmr`, and `schemastery` so Node's native TypeScript transform does not request types as runtime exports. Schemastery's source uses an ESM default export and its package declares `type: module`. Conditional exports select `.mjs` for import and `.cjs` for require; without them, concurrent imports under module-hook hosts reach the CJS entry and can race its require of ESM Cosmokit (`ERR_REQUIRE_ESM_RACE_CONDITION`).
43
+ 11. **`include/src/index.ts` patch-semantics export**: extracted the private `applyPatches` body into the exported pure function `applyEntryPatches(data, patches, warn)` (the method delegates to it) and exported the `!!js` YAML dialect as `entryListSchema`, so `dsh --dump-config` composes and prints exactly what the include would mount without booting a tree. The entry list is deep-cloned when patches are present; without patches, the returned array retains the entry objects. Public patch and Include fields carry JSDoc for config tooling. Behavior-preserving for mounting; the extraction exists because config tooling must never reimplement (and drift from) the patch algorithm. `applyEntryPatches` also indexes each `insert`ed entry as it is added, so a later patch in the same list can configure or disable a row an earlier patch inserted; upstream built the id index once before the patch loop, leaving inserted rows silently unpatchable. That matters because `dsh` composes an empty profile root with each bundle's patch layer, the profile's and the home-level `cordis.patch.yml`, and any `--patch` overlays as sibling patch lists at one include level — patches never cross an include boundary, so surface-only rows would otherwise be unreachable from user config. Covered by `packages/boot/app-boot/tests/config-reload.spec.ts`.
44
+ 12. **`loader/src/config/entry.ts` activation observer**: the detached `Entry.init()` completion observer handles both outcomes; the fiber retains its activation error for explicit consumer audits. Covered by `packages/boot/app-boot/tests/user-patches.spec.ts`.
45
45
  13. **`include/src/index.ts` `writeTask` type**: widened the optional `writeTask?: NodeJS.Timeout` property to `NodeJS.Timeout | undefined` — the debounced writer assigns `undefined` on flush, which `exactOptionalPropertyTypes` rejects on a plain optional. Type-only; no behavior change.
46
- 14. **`include/src/index.ts` durable debounced writes**: serialized and tracked config-file writes, retried transient `EACCES`/`EBUSY`/`EPERM` rename failures with a bounded backoff, observed asynchronous timer rejections, and drained the latest write during Include teardown. Windows can briefly retain a destination handle after a Loader child disposes; the upstream fire-and-forget rename escaped as an unhandled rejection and could lose the persisted `disabled` state. A terminal failure is logged by the asynchronous writer and remains on the queue so `Include.stop()` rethrows it instead of silently declaring persistence complete; Cordis's ordinary fiber teardown retains its separate error-containment contract. Covered by `packages/host/directory-picker-auto/tests/loader-composition.spec.ts` with injected transient and terminal rename failures.
46
+ 14. **`include/src/index.ts` durable debounced writes**: serialized and tracked config-file writes, retried transient `EACCES`/`EBUSY`/`EPERM` rename failures with a bounded backoff, observed asynchronous timer rejections, and drained writes before and after child removal during Include teardown. The first drain preserves an existing terminal write failure even if child removal schedules a later write. Missing-file initialization awaits the write and forces a fresh parse before mounting the initial entries. Windows can briefly retain a destination handle after a Loader child disposes; the upstream fire-and-forget rename escaped as an unhandled rejection and could lose the persisted `disabled` state. A terminal failure is logged by the asynchronous writer and remains on the queue so `Include.stop()` rethrows it instead of silently declaring persistence complete; Cordis's ordinary fiber teardown retains its separate error-containment contract. Covered by `packages/host/directory-picker-auto/tests/loader-composition.spec.ts` with injected transient and terminal rename failures.
47
47
  15. **Lazy Loader config resolution across `cordis/src/{events,fiber}.ts`, `loader/src/{index,config/entry}.ts`, `include/src/index.ts`, and `hmr/src/index.ts`**: ports [cordiverse/cordis#41](https://github.com/cordiverse/cordis/pull/41), retaining raw fiber config and resolving it through `internal/config` only after declared injections are active. Provider replacement re-resolves the raw expression, pending updates retain it, and HMR transfers it. Resolution applies only to the entry root, so child plugins mounted by a row keep caller-owned config identity. Include declares the `EntryGroup.key` tree-carrier marker (as Group does): its config is entry and patch lists, so interpolation keeps it literal and a `!!js` expression inside a nested row's config resolves lazily in that row's own fiber (Include's own `path` therefore stays literal too). Deferred failures retain the owning row diagnostic, and tree teardown does not persist failure-driven self-disposal. Covered by `packages/boot/app-boot/tests/{app-boot,user-patches}.spec.ts`, `packages/boot/cmdline/tests/cmdline.spec.ts`, `apps/cli/tests/web-agent-presets.e2e.ts`, and the built custom-profile cases in `apps/cli/tests/built-bin.e2e.ts`.
48
48
  16. **`cordis/package.json` publishes `src`**: added `src` to the `files` list, joining the other eight vendored packages. Cordis declares `"./src/*": "./src/*"` in its exports, so a tarball without `src` publishes an export map pointing at absent files; the release change judgement also reads `files` to decide whether a diff reaches the payload, and a package whose only published paths are build output has no tracked path to match.
49
49
  17. **`@deepseek-ai` rescope**: every vendored manifest `name`, every internal dependency entry among the vendored set, and every module specifier that reaches them use the scoped names in the manifest table's `npm name` column. Directory names, version numbers, and dependency ranges are unchanged, and no upstream runtime identifier is renamed — `Symbol.for('schemastery')` and Schemastery's `vendor:` metadata field keep their upstream values. Re-apply with `pnpm run rescope-vendor --apply` after a sync; the table's two name columns are the mapping, restated for consumers in [docs/rescope.md](../docs/rescope.md).
50
50
  18. **Entry `disabled` interpolation in `loader/src/config/entry.ts`**: a `disabled: !!js` expression evaluates against the loader context at every mount decision; the raw node stays in the options, so write-back keeps the `!!js` form. `disabled` is the only interpolated metadata field. Covered by `packages/boot/app-boot/tests/user-patches.spec.ts` and `apps/cli/tests/windows-shell.spec.ts`.
51
51
  19. **`loader/src/internal.ts` runtime shape detection**: `ModuleLoader.fromInternal()` classifies the internal loader by which module-job API it owns — `getOrCreateModuleJob` for v2, `getModuleJobForImport` for v1 — instead of by Node major version. Upstream tags every major `>= 24` as v2, but the v2 interface arrived in Node 24.12.0, so 24.0–24.11.1 report major 24 while still carrying the v1 loader; consumers then called `resolveSync` with reversed parameters and every call threw. `dsh web` served an empty client graph (`__DSH_BOOT__.entries: []`) and HMR partial reload resolved no entry URL, both behind swallowed or warn-level errors. Arity cannot discriminate the two shapes, because each reports `resolveSync.length === 2`. A loader owning neither API is left unclassified rather than guessed, so consumers take their documented no-internals path. Covered on the `node-compat` Node version matrix, which pins 24.9 for the mistagged range.
52
52
 
53
+ 20. **`loader/src/config/entry.ts` fiber identity**: stores the original fiber from the registry result’s context instead of its PromiseLike wrapper. Configuration updates and service notifications therefore mutate the same lifecycle state; updating a provider and consumer together cannot strand the consumer in `PENDING`. Covered by `packages/boot/hmr/tests/modules.spec.ts` and the built profile reload regression in `apps/cli/tests/built-bin.e2e.ts`.
54
+
55
+ 21. **`cordis/src/logger.ts` exporter disposal**: each disposer retains its registration id, so removing an earlier exporter cannot delete a later console or telemetry exporter. Covered by startup collector cleanup in `packages/boot/app-boot/tests/app-boot.spec.ts` and disabled-feedback output in `packages/session/session-telemetry-otel/tests/loader-composition.e2e.ts`.
56
+
53
57
  ## Sync procedure
54
58
 
55
59
  To update a vendored package from upstream:
@@ -251,7 +251,7 @@ const develop = pairedPages([
251
251
  {
252
252
  source: 'docs/user/develop/practice/dynamic-cordis.md',
253
253
  route: 'develop/practice/dynamic-cordis.md',
254
- label: { root: '运行时 Cordis 工具', en: 'Runtime Cordis tools' },
254
+ label: { root: '持久化 Harness 插件', en: 'Persistent Harness plugins' },
255
255
  sidebar: { root: 'zh-develop', en: 'en-develop' },
256
256
  section: { root: '实战', en: 'Practice' },
257
257
  order: 3,
@@ -326,7 +326,7 @@ const subsystemGroups = [
326
326
  ['jobs.md', '后台任务', 'Background jobs'],
327
327
  ['filesystem.md', '文件系统', 'Filesystem'],
328
328
  ['lsp.md', 'LSP 导航', 'LSP navigation'],
329
- ['code-runtime.md', '代码运行时', 'Code runtime'],
329
+ ['ptc-runtime.md', 'PTC 运行时', 'PTC runtime'],
330
330
  ['web.md', 'Web 访问', 'Web access'],
331
331
  ['skills.md', '技能', 'Skills'],
332
332
  ['workflow.md', '工作流', 'Workflows'],
@@ -347,6 +347,8 @@ const subsystemGroups = [
347
347
  ['web-client.md', 'Web Client 架构', 'Web Client architecture'],
348
348
  ['client-modules.md', '客户端模块', 'Client modules'],
349
349
  ['slots.md', '客户端 Slots', 'Client slots'],
350
+ ['client-resources.md', '客户端资源', 'Client resources'],
351
+ ['sidebar-right.md', '右侧 Sidebar', 'Right Sidebar'],
350
352
  ['conversation.md', 'Conversation 组装', 'Conversation assembly'],
351
353
  ['typert.md', 'Typert', 'Typert'],
352
354
  ['storage.md', '存储', 'Storage'],