dsh-plugin-guide 0.3.27 → 0.3.30

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 (304) hide show
  1. package/README-es.md +3 -3
  2. package/README-hi.md +3 -3
  3. package/README-pt.md +3 -3
  4. package/README-zh.md +5 -3
  5. package/README.md +5 -3
  6. package/SKILL.md +21 -8
  7. package/dist/dsh-plugin-dev.js +93 -18
  8. package/guide/family-toolchain.md +260 -0
  9. package/guide/links.md +3 -2
  10. package/guide/migration-0.2.md +64 -8
  11. package/guide/plugin-dev-guide.md +8 -6
  12. package/guide/quick-reference.es.md +3 -2
  13. package/guide/quick-reference.hi.md +4 -3
  14. package/guide/quick-reference.md +6 -5
  15. package/guide/quick-reference.pt.md +4 -3
  16. package/guide/quick-reference.zh-CN.md +6 -5
  17. package/guide/release-engineering.md +4 -2
  18. package/guide/release-engineering.zh-CN.md +4 -2
  19. package/guide/unfixed-issues.md +7 -0
  20. package/guide/version-matrix.md +309 -0
  21. package/guide/when-to-retire-a-plugin.md +5 -5
  22. package/guide/when-to-retire-a-plugin.zh-CN.md +5 -5
  23. package/index.d.ts +32 -0
  24. package/index.js +24 -9
  25. package/package.json +19 -11
  26. package/references/community-ecosystem.md +2 -1
  27. package/references/dev-resource-landscape.md +294 -0
  28. package/references/official-docs/AGENTS.md +4 -5
  29. package/references/official-docs/SNAPSHOT.md +3 -3
  30. package/references/official-docs/THIRD_PARTY_NOTICES.md +2 -1
  31. package/references/official-docs/docs/AGENTS.md +1 -1
  32. package/references/official-docs/docs/architecture.i18n.yaml +14 -14
  33. package/references/official-docs/docs/architecture.md +11 -12
  34. package/references/official-docs/docs/architecture.zh.md +11 -12
  35. package/references/official-docs/docs/capability-seams.i18n.yaml +2 -2
  36. package/references/official-docs/docs/capability-seams.md +48 -23
  37. package/references/official-docs/docs/capability-seams.zh.md +48 -23
  38. package/references/official-docs/docs/cli-help.i18n.yaml +34 -0
  39. package/references/official-docs/docs/cli-help.md +203 -0
  40. package/references/official-docs/docs/cli-help.zh.md +205 -0
  41. package/references/official-docs/docs/config-catalog.md +305 -145
  42. package/references/official-docs/docs/config-catalog.zh.md +305 -145
  43. package/references/official-docs/docs/cookbook/adding-a-session-format-version.i18n.yaml +6 -6
  44. package/references/official-docs/docs/cookbook/adding-a-session-format-version.md +7 -5
  45. package/references/official-docs/docs/cookbook/adding-a-session-format-version.zh.md +7 -5
  46. package/references/official-docs/docs/cookbook/reviewing-persistence-type-changes.i18n.yaml +6 -6
  47. package/references/official-docs/docs/cookbook/reviewing-persistence-type-changes.md +11 -9
  48. package/references/official-docs/docs/cookbook/reviewing-persistence-type-changes.zh.md +11 -9
  49. package/references/official-docs/docs/deepseek-llm-api-wire-extensions.i18n.yaml +4 -4
  50. package/references/official-docs/docs/deepseek-llm-api-wire-extensions.md +5 -5
  51. package/references/official-docs/docs/deepseek-llm-api-wire-extensions.zh.md +5 -5
  52. package/references/official-docs/docs/defensive-patterns.i18n.yaml +2 -2
  53. package/references/official-docs/docs/defensive-patterns.md +1 -1
  54. package/references/official-docs/docs/defensive-patterns.zh.md +1 -1
  55. package/references/official-docs/docs/development.i18n.yaml +6 -6
  56. package/references/official-docs/docs/development.md +4 -2
  57. package/references/official-docs/docs/development.zh.md +4 -2
  58. package/references/official-docs/docs/event-producer-consumer.md +33 -33
  59. package/references/official-docs/docs/event-producer-consumer.zh.md +33 -33
  60. package/references/official-docs/docs/experimental-persistence-catalog.i18n.yaml +10 -0
  61. package/references/official-docs/docs/experimental-persistence-catalog.md +17 -0
  62. package/references/official-docs/docs/experimental-persistence-catalog.zh.md +17 -0
  63. package/references/official-docs/docs/module-graph.md +202 -131
  64. package/references/official-docs/docs/module-graph.zh.md +202 -131
  65. package/references/official-docs/docs/persistence-catalog.i18n.yaml +185 -158
  66. package/references/official-docs/docs/persistence-catalog.md +213 -112
  67. package/references/official-docs/docs/persistence-catalog.zh.md +213 -112
  68. package/references/official-docs/docs/persistence-changes/2026-09-13-working-directory.i18n.yaml +28 -0
  69. package/references/official-docs/docs/persistence-changes/2026-09-13-working-directory.md +48 -0
  70. package/references/official-docs/docs/persistence-changes/2026-09-13-working-directory.schema.json +76 -0
  71. package/references/official-docs/docs/persistence-changes/2026-09-13-working-directory.zh.md +48 -0
  72. package/references/official-docs/docs/persistence-changes/2026-09-16-session-format-v4.i18n.yaml +4 -4
  73. package/references/official-docs/docs/persistence-changes/2026-09-16-session-format-v4.md +2 -2
  74. package/references/official-docs/docs/persistence-changes/2026-09-16-session-format-v4.zh.md +2 -2
  75. package/references/official-docs/docs/persistence-changes/2026-09-19-external-subagent-catalog.i18n.yaml +28 -0
  76. package/references/official-docs/docs/persistence-changes/2026-09-19-external-subagent-catalog.md +48 -0
  77. package/references/official-docs/docs/persistence-changes/2026-09-19-external-subagent-catalog.schema.json +290 -0
  78. package/references/official-docs/docs/persistence-changes/2026-09-19-external-subagent-catalog.zh.md +48 -0
  79. package/references/official-docs/docs/persistence-changes/2026-10-05-ptc-operation-metadata.i18n.yaml +28 -0
  80. package/references/official-docs/docs/persistence-changes/2026-10-05-ptc-operation-metadata.md +48 -0
  81. package/references/official-docs/docs/persistence-changes/2026-10-05-ptc-operation-metadata.schema.json +457 -0
  82. package/references/official-docs/docs/persistence-changes/2026-10-05-ptc-operation-metadata.zh.md +48 -0
  83. package/references/official-docs/docs/persistence-changes/2026-10-05-working-directory-attribution.i18n.yaml +28 -0
  84. package/references/official-docs/docs/persistence-changes/2026-10-05-working-directory-attribution.md +60 -0
  85. package/references/official-docs/docs/persistence-changes/2026-10-05-working-directory-attribution.schema.json +11474 -0
  86. package/references/official-docs/docs/persistence-changes/2026-10-05-working-directory-attribution.zh.md +60 -0
  87. package/references/official-docs/docs/persistence-changes/2026-10-07-title-reasoning-effort.i18n.yaml +28 -0
  88. package/references/official-docs/docs/persistence-changes/2026-10-07-title-reasoning-effort.md +48 -0
  89. package/references/official-docs/docs/persistence-changes/2026-10-07-title-reasoning-effort.schema.json +2990 -0
  90. package/references/official-docs/docs/persistence-changes/2026-10-07-title-reasoning-effort.zh.md +48 -0
  91. package/references/official-docs/docs/persistence-changes/README.i18n.yaml +4 -4
  92. package/references/official-docs/docs/persistence-changes/README.md +12 -10
  93. package/references/official-docs/docs/persistence-changes/README.zh.md +12 -10
  94. package/references/official-docs/docs/persistence-changes/historical-formats/README.i18n.yaml +2 -2
  95. package/references/official-docs/docs/persistence-changes/historical-formats/README.md +1 -1
  96. package/references/official-docs/docs/persistence-changes/historical-formats/README.zh.md +1 -1
  97. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.2.i18n.yaml +2 -2
  98. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.2.md +50 -50
  99. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.2.zh.md +50 -50
  100. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.3.i18n.yaml +2 -2
  101. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.3.md +14 -14
  102. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.3.zh.md +14 -14
  103. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.7.i18n.yaml +2 -2
  104. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.7.md +3 -3
  105. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.7.zh.md +3 -3
  106. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.8.i18n.yaml +2 -2
  107. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.8.md +10 -10
  108. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.8.zh.md +10 -10
  109. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.1.i18n.yaml +2 -2
  110. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.1.md +3 -3
  111. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.1.zh.md +3 -3
  112. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.2.i18n.yaml +2 -2
  113. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.2.md +13 -13
  114. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.2.zh.md +13 -13
  115. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.1.i18n.yaml +2 -2
  116. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.1.md +63 -63
  117. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.1.zh.md +63 -63
  118. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.2.i18n.yaml +2 -2
  119. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.2.md +54 -54
  120. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.2.zh.md +54 -54
  121. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.4.i18n.yaml +2 -2
  122. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.4.md +7 -7
  123. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.4.zh.md +7 -7
  124. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.1.i18n.yaml +2 -2
  125. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.1.md +27 -27
  126. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.1.zh.md +27 -27
  127. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.2.i18n.yaml +2 -2
  128. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.2.md +4 -4
  129. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.2.zh.md +4 -4
  130. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.1.i18n.yaml +2 -2
  131. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.1.md +27 -27
  132. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.1.zh.md +27 -27
  133. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.i18n.yaml +2 -2
  134. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.md +7 -7
  135. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.zh.md +7 -7
  136. package/references/official-docs/docs/persistence-schema.json +2084 -1827
  137. package/references/official-docs/docs/session-format-status.i18n.yaml +6 -6
  138. package/references/official-docs/docs/session-format-status.md +6 -6
  139. package/references/official-docs/docs/session-format-status.zh.md +6 -6
  140. package/references/official-docs/docs/subsystems/README.i18n.yaml +2 -2
  141. package/references/official-docs/docs/subsystems/README.md +4 -1
  142. package/references/official-docs/docs/subsystems/README.zh.md +4 -1
  143. package/references/official-docs/docs/subsystems/agent-team.i18n.yaml +7 -7
  144. package/references/official-docs/docs/subsystems/agent-team.md +10 -10
  145. package/references/official-docs/docs/subsystems/agent-team.zh.md +10 -10
  146. package/references/official-docs/docs/subsystems/boot.i18n.yaml +2 -2
  147. package/references/official-docs/docs/subsystems/boot.md +4 -4
  148. package/references/official-docs/docs/subsystems/boot.zh.md +4 -4
  149. package/references/official-docs/docs/subsystems/claude-code-mods.i18n.yaml +2 -2
  150. package/references/official-docs/docs/subsystems/claude-code-mods.md +1 -1
  151. package/references/official-docs/docs/subsystems/claude-code-mods.zh.md +1 -1
  152. package/references/official-docs/docs/subsystems/jobs.i18n.yaml +2 -2
  153. package/references/official-docs/docs/subsystems/jobs.md +2 -3
  154. package/references/official-docs/docs/subsystems/jobs.zh.md +2 -3
  155. package/references/official-docs/docs/subsystems/llm-streaming.i18n.yaml +4 -4
  156. package/references/official-docs/docs/subsystems/llm-streaming.md +41 -14
  157. package/references/official-docs/docs/subsystems/llm-streaming.zh.md +41 -14
  158. package/references/official-docs/docs/subsystems/persistence.md +2 -0
  159. package/references/official-docs/docs/subsystems/persistence.zh.md +2 -0
  160. package/references/official-docs/docs/subsystems/plan.i18n.yaml +2 -2
  161. package/references/official-docs/docs/subsystems/plan.md +1 -1
  162. package/references/official-docs/docs/subsystems/plan.zh.md +1 -1
  163. package/references/official-docs/docs/subsystems/session-query.md +2 -0
  164. package/references/official-docs/docs/subsystems/session-query.zh.md +2 -0
  165. package/references/official-docs/docs/subsystems/session-title.i18n.yaml +6 -6
  166. package/references/official-docs/docs/subsystems/session-title.md +14 -5
  167. package/references/official-docs/docs/subsystems/session-title.zh.md +14 -5
  168. package/references/official-docs/docs/subsystems/session.i18n.yaml +3 -0
  169. package/references/official-docs/docs/subsystems/session.md +48 -5
  170. package/references/official-docs/docs/subsystems/session.zh.md +48 -5
  171. package/references/official-docs/docs/subsystems/skills.i18n.yaml +2 -2
  172. package/references/official-docs/docs/subsystems/skills.md +2 -2
  173. package/references/official-docs/docs/subsystems/skills.zh.md +2 -2
  174. package/references/official-docs/docs/subsystems/slots.md +10 -8
  175. package/references/official-docs/docs/subsystems/slots.zh.md +10 -8
  176. package/references/official-docs/docs/subsystems/ssh.i18n.yaml +2 -2
  177. package/references/official-docs/docs/subsystems/ssh.md +22 -11
  178. package/references/official-docs/docs/subsystems/ssh.zh.md +22 -11
  179. package/references/official-docs/docs/subsystems/subagent.i18n.yaml +24 -27
  180. package/references/official-docs/docs/subsystems/subagent.md +165 -229
  181. package/references/official-docs/docs/subsystems/subagent.zh.md +167 -233
  182. package/references/official-docs/docs/subsystems/system-prompt.i18n.yaml +2 -2
  183. package/references/official-docs/docs/subsystems/system-prompt.md +32 -2
  184. package/references/official-docs/docs/subsystems/system-prompt.zh.md +32 -2
  185. package/references/official-docs/docs/subsystems/tools.i18n.yaml +2 -2
  186. package/references/official-docs/docs/subsystems/tools.md +3 -3
  187. package/references/official-docs/docs/subsystems/tools.zh.md +3 -3
  188. package/references/official-docs/docs/subsystems/translation.i18n.yaml +19 -0
  189. package/references/official-docs/docs/subsystems/translation.md +103 -0
  190. package/references/official-docs/docs/subsystems/translation.zh.md +103 -0
  191. package/references/official-docs/docs/subsystems/web-server.i18n.yaml +8 -8
  192. package/references/official-docs/docs/subsystems/web-server.md +43 -8
  193. package/references/official-docs/docs/subsystems/web-server.zh.md +43 -8
  194. package/references/official-docs/docs/subsystems/webhook.md +1 -1
  195. package/references/official-docs/docs/subsystems/webhook.zh.md +1 -1
  196. package/references/official-docs/docs/subsystems/workflow.i18n.yaml +2 -2
  197. package/references/official-docs/docs/subsystems/workflow.md +1 -1
  198. package/references/official-docs/docs/subsystems/workflow.zh.md +1 -1
  199. package/references/official-docs/docs/subsystems/working-directory.i18n.yaml +13 -0
  200. package/references/official-docs/docs/subsystems/working-directory.md +64 -0
  201. package/references/official-docs/docs/subsystems/working-directory.zh.md +64 -0
  202. package/references/official-docs/docs/subsystems/workspace.md +2 -2
  203. package/references/official-docs/docs/subsystems/workspace.zh.md +2 -2
  204. package/references/official-docs/docs/subsystems/worktrees.i18n.yaml +13 -0
  205. package/references/official-docs/docs/subsystems/worktrees.md +76 -0
  206. package/references/official-docs/docs/subsystems/worktrees.zh.md +76 -0
  207. package/references/official-docs/docs/testing.i18n.yaml +2 -2
  208. package/references/official-docs/docs/testing.md +1 -1
  209. package/references/official-docs/docs/testing.zh.md +1 -1
  210. package/references/official-docs/docs/tool-catalog.i18n.yaml +57 -45
  211. package/references/official-docs/docs/tool-catalog.md +95 -41
  212. package/references/official-docs/docs/tool-catalog.zh.md +99 -45
  213. package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/bundled-python-tests/guide.i18n.yaml +16 -0
  214. package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/bundled-python-tests/guide.md +18 -0
  215. package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/bundled-python-tests/guide.zh.md +18 -0
  216. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/deepseek-model-discovery/guide.i18n.yaml +16 -0
  217. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/deepseek-model-discovery/guide.md +17 -0
  218. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/deepseek-model-discovery/guide.zh.md +17 -0
  219. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/desktop-test-auth-popup/guide.i18n.yaml +16 -0
  220. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/desktop-test-auth-popup/guide.md +18 -0
  221. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/desktop-test-auth-popup/guide.zh.md +18 -0
  222. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/experimental-package-composition/guide.i18n.yaml +16 -0
  223. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/experimental-package-composition/guide.md +28 -0
  224. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/experimental-package-composition/guide.zh.md +28 -0
  225. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/instruction-home-override/guide.i18n.yaml +16 -0
  226. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/instruction-home-override/guide.md +20 -0
  227. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/instruction-home-override/guide.zh.md +20 -0
  228. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/mock-messages-events/guide.i18n.yaml +16 -0
  229. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/mock-messages-events/guide.md +17 -0
  230. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/mock-messages-events/guide.zh.md +17 -0
  231. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/native-subagent-bundle-tools/guide.i18n.yaml +16 -0
  232. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/native-subagent-bundle-tools/guide.md +31 -0
  233. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/native-subagent-bundle-tools/guide.zh.md +31 -0
  234. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/new-session-generations/guide.i18n.yaml +16 -0
  235. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/new-session-generations/guide.md +20 -0
  236. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/new-session-generations/guide.zh.md +20 -0
  237. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/plugin-option-placement/guide.i18n.yaml +16 -0
  238. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/plugin-option-placement/guide.md +20 -0
  239. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/plugin-option-placement/guide.zh.md +20 -0
  240. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-optional-resources/guide.i18n.yaml +16 -0
  241. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-optional-resources/guide.md +18 -0
  242. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-optional-resources/guide.zh.md +18 -0
  243. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-ptc-sandbox/guide.i18n.yaml +16 -0
  244. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-ptc-sandbox/guide.md +21 -0
  245. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-ptc-sandbox/guide.zh.md +21 -0
  246. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-adapters/guide.i18n.yaml +16 -0
  247. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-adapters/guide.md +18 -0
  248. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-adapters/guide.zh.md +18 -0
  249. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-provider-strategy/guide.i18n.yaml +16 -0
  250. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-provider-strategy/guide.md +20 -0
  251. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-provider-strategy/guide.zh.md +20 -0
  252. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/ssh-helper-launch/guide.i18n.yaml +16 -0
  253. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/ssh-helper-launch/guide.md +19 -0
  254. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/ssh-helper-launch/guide.zh.md +19 -0
  255. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/subagent-activations/guide.i18n.yaml +16 -0
  256. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/subagent-activations/guide.md +59 -0
  257. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/subagent-activations/guide.zh.md +59 -0
  258. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/team-direct-inbox/guide.i18n.yaml +16 -0
  259. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/team-direct-inbox/guide.md +21 -0
  260. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/team-direct-inbox/guide.zh.md +21 -0
  261. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/terminal-command-labels/guide.i18n.yaml +16 -0
  262. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/terminal-command-labels/guide.md +18 -0
  263. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/terminal-command-labels/guide.zh.md +18 -0
  264. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/tool-presentation-mode/guide.i18n.yaml +16 -0
  265. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/tool-presentation-mode/guide.md +21 -0
  266. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/tool-presentation-mode/guide.zh.md +21 -0
  267. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/web-listener-trust-config/guide.i18n.yaml +16 -0
  268. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/web-listener-trust-config/guide.md +36 -0
  269. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/web-listener-trust-config/guide.zh.md +36 -0
  270. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/working-directory/guide.i18n.yaml +16 -0
  271. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/working-directory/guide.md +25 -0
  272. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/working-directory/guide.zh.md +25 -0
  273. package/references/official-docs/docs/user/guide/github-review.i18n.yaml +4 -4
  274. package/references/official-docs/docs/user/guide/github-review.md +7 -10
  275. package/references/official-docs/docs/user/guide/github-review.zh.md +7 -10
  276. package/references/official-docs/docs/user/guide/public-deployments.i18n.yaml +8 -8
  277. package/references/official-docs/docs/user/guide/public-deployments.md +9 -5
  278. package/references/official-docs/docs/user/guide/public-deployments.zh.md +9 -5
  279. package/references/official-docs/packages/README.md +4 -6
  280. package/references/official-docs/website-docs.ts +1 -0
  281. package/references/official-plugin-dev-skill.md +2 -2
  282. package/references/sources.md +2 -1
  283. package/scripts/archive-discussions.ps1 +162 -162
  284. package/scripts/build-llms-full.mjs +8 -0
  285. package/scripts/check-docs-drift.ps1 +55 -55
  286. package/scripts/check-ps1-bom.mjs +68 -0
  287. package/scripts/download-community-articles.ps1 +188 -188
  288. package/scripts/download-community-repos.ps1 +232 -232
  289. package/scripts/download-sources.ps1 +195 -195
  290. package/scripts/gen-topic-snapshot.ps1 +91 -91
  291. package/scripts/install-skill.ps1 +63 -63
  292. package/scripts/sync-official-docs.ps1 +138 -138
  293. package/scripts/verify-artifacts.mjs +26 -0
  294. package/scripts/verify-kit.ps1 +197 -187
  295. package/templates/js/README-es.md +1 -1
  296. package/templates/js/README-hi.md +1 -1
  297. package/templates/js/README-pt.md +1 -1
  298. package/templates/js/README-zh.md +1 -1
  299. package/templates/js/README.md +1 -1
  300. package/templates/ts/README-es.md +1 -1
  301. package/templates/ts/README-hi.md +1 -1
  302. package/templates/ts/README-pt.md +1 -1
  303. package/templates/ts/README-zh.md +1 -1
  304. package/templates/ts/README.md +1 -1
@@ -1,187 +1,197 @@
1
- # dsh-plugin-guide 完整性检查器
2
- # 用法: pwsh -File scripts/verify-kit.ps1 -Root <路径>
3
- # 校验范围: 本知识库自有文档(SKILL/README/NOTICE/guide/references 顶层);
4
- # 官方文档副本(references/official-docs)是逐字副本,其内部链接指向 deepseek-harness checkout,不在校验范围。
5
- param([string]$Root = '', [string]$Checkout = '', [switch]$Strict)
6
- if ([string]::IsNullOrEmpty($Root)) { $Root = if ($PSScriptRoot) { Split-Path $PSScriptRoot -Parent } else { (Get-Location).Path } }
7
- $ErrorActionPreference = 'SilentlyContinue'
8
- $issues = New-Object System.Collections.Generic.List[string]
9
- $info = New-Object System.Collections.Generic.List[string]
10
-
11
- # ---- 1) 关键路径 ----
12
- $critical = @(
13
- 'SKILL.md','README.md','README-zh.md','README-es.md','README-pt.md','README-hi.md','LICENSE','NOTICE.md','.gitignore',
14
- 'CONTRIBUTING.md','SECURITY.md','.github/ISSUE_TEMPLATE/bug_report.yml','.github/ISSUE_TEMPLATE/feature_request.yml','.github/PULL_REQUEST_TEMPLATE.md',
15
- 'guide/plugin-dev-guide.md','guide/quick-reference.md','guide/links.md','guide/quick-reference.zh-CN.md','guide/quick-reference.es.md','guide/quick-reference.pt.md','guide/quick-reference.hi.md',
16
- 'references/sources.md','references/harness-repo.md','references/website-pages.md',
17
- 'references/upstream-cordis.md','references/cordis-paper-and-community.md',
18
- 'references/community-ecosystem.md','references/community-repo-deep-dive.md',
19
- 'references/official-docs/docs/cordis-primer.md',
20
- 'references/official-docs/docs/cordis-tutorial/index.md',
21
- 'references/official-docs/docs/cordis-tutorial/01-first-plugin.md',
22
- 'references/official-docs/docs/cordis-tutorial/02-lifecycle-and-effects.md',
23
- 'references/official-docs/docs/cordis-tutorial/03-services.md',
24
- 'references/official-docs/docs/cordis-tutorial/04-events.md',
25
- 'references/official-docs/docs/cordis-tutorial/05-config.md',
26
- 'references/official-docs/docs/cordis-tutorial/06-composition-and-hmr.md',
27
- 'references/official-docs/docs/cordis-tutorial/07-into-the-harness.md',
28
- 'references/official-docs/docs/architecture.md',
29
- 'references/official-docs/docs/cookbook/extension-cookbook.md',
30
- 'references/official-docs/docs/cookbook/adding-a-tool.md',
31
- 'references/official-docs/docs/event-producer-consumer.md',
32
- 'references/official-docs/docs/user/develop/basic/index.md',
33
- 'references/official-docs/docs/user/develop/basic/tool.md',
34
- 'references/official-docs/docs/user/develop/basic/config.md',
35
- 'references/official-docs/docs/user/develop/basic/publish.md',
36
- 'references/official-docs/docs/user/develop/framework/service.md',
37
- 'references/official-docs/docs/user/develop/framework/events.md',
38
- 'references/official-docs/docs/user/develop/practice/index.md',
39
- 'references/official-docs/docs/user/develop/practice/llm-adapter.md',
40
- 'references/official-docs/docs/subsystems/session.md',
41
- 'references/official-docs/docs/subsystems/tools.md',
42
- 'references/official-docs/docs/cordis-api/context.md',
43
- 'references/official-docs/AGENTS.md',
44
- 'references/official-docs/SNAPSHOT.md',
45
- 'references/official-docs/packages/AGENTS.md',
46
- 'references/official-docs/packages/README.md',
47
- 'references/official-docs/vendor/README.md',
48
- 'scripts/download-sources.ps1','scripts/download-community-repos.ps1','scripts/gen-topic-snapshot.ps1','scripts/sync-official-docs.ps1','scripts/install-skill.ps1','scripts/verify-kit.ps1','scripts/archive-discussions.ps1','scripts/download-community-articles.ps1'
49
- )
50
- foreach ($c in $critical) { if (-not (Test-Path (Join-Path $Root $c))) { $issues.Add("CRITICAL-MISSING: $c") } }
51
- $info.Add("critical: $($critical.Count) 项, 缺失 $((($issues | Where-Object { $_ -like 'CRITICAL-*' }) | Measure-Object).Count)")
52
-
53
- # ---- 1b) 归档内容断言(防止同名文件错位: 历史事故是 examples/AGENTS.md 被当成仓库根 AGENTS.md) ----
54
- function Assert-FirstLine([string]$rel, [string]$pattern, [string]$expect) {
55
- $p = Join-Path $Root $rel
56
- if (-not (Test-Path $p)) { return }
57
- $first = Get-Content $p -Encoding UTF8 | Where-Object { $_.Trim() -ne '' } | Select-Object -First 1
58
- if ($first -notlike $pattern) { $issues.Add("CONTENT-ASSERT-FAIL: $rel 首行应为 $expect, 实际: $first") }
59
- }
60
- Assert-FirstLine 'references/official-docs/AGENTS.md' '# AGENTS.md' "仓库根 AGENTS.md 标题"
61
- Assert-FirstLine 'references/official-docs/packages/AGENTS.md' '# AGENTS.md*Harness Packages*' "packages/AGENTS.md 标题"
62
-
63
- # ---- 2) 自有文档相对链接解析 ----
64
- # 只检查 markdown 链接目标(读者会点击的);代码块/行内码里的裸词不参与,
65
- # 避免把 name、ctx、- 等片段误判为路径。链接按"相对所在文件目录"解析;
66
- # downloads/ 引用允许,指向 checkout 的逃逸链接(../../、../packages/ 等)跳过。
67
- $scopeFiles = @((Join-Path $Root 'SKILL.md'), (Join-Path $Root 'README.md'), (Join-Path $Root 'NOTICE.md'))
68
- $scopeFiles += Get-ChildItem (Join-Path $Root 'guide') -Filter *.md -File
69
- $scopeFiles += Get-ChildItem (Join-Path $Root 'references') -Filter *.md -File # 仅顶层,不含 official-docs 子树
70
- $missing = 0; $downloadsRefs = 0; $repoRelRefs = 0; $absRefs = 0
71
-
72
- function Is-PathToken([string]$t) {
73
- # 纯 ASCII 相对路径:含斜杠(guide/links.md、../references/x.md)或带扩展名(README.md);
74
- # 裸词、含空格/CJK 的引文片段不参与检查
75
- return $t -match '^(\.\./)?(\./)?(([A-Za-z0-9][A-Za-z0-9_.\-]*/)+[A-Za-z0-9_.\-]+(\.[A-Za-z0-9]+)?|[A-Za-z0-9][A-Za-z0-9_.\-]+\.[A-Za-z0-9]+)(#[A-Za-z0-9_\-/]+)?$'
76
- }
77
- function Test-FileRel([string]$p, [string]$dir) {
78
- $p = $p -replace '^\./',''
79
- $p = $p -replace '[?#].*$',''
80
- if ($p -match '[*]') { $d = Split-Path (Join-Path $dir $p) -Parent; return Test-Path $d }
81
- return Test-Path (Join-Path $dir $p)
82
- }
83
-
84
- foreach ($f in $scopeFiles) {
85
- if (-not (Test-Path $f.FullName)) { continue }
86
- $relFile = $f.FullName.Substring($Root.Length + 1)
87
- $fileDir = Split-Path $f.FullName -Parent
88
- $text = Get-Content $f.FullName -Raw -Encoding UTF8
89
- $tokens = New-Object System.Collections.Generic.HashSet[string]
90
- foreach ($m in [regex]::Matches($text, '\[[^\]]*\]\(([^)\s]+)\)')) {
91
- $t = $m.Groups[1].Value.Trim()
92
- if ($t -match '^https?://' -or $t -match '^[A-Za-z]:[\\/]' -or $t -match '^(<|\$|#)') { continue }
93
- if ($t -match '^[A-Za-z]:[\\/]') { $absRefs++; continue }
94
- if (-not (Is-PathToken $t)) { continue }
95
- [void]$tokens.Add($t)
96
- }
97
- foreach ($t in $tokens) {
98
- if ($t -match '^(\.\./){2,}' -or $t -match '^\.\./packages/|^\.\./\.agents/') { $repoRelRefs++; continue }
99
- if ($t -match '^(\./)?downloads/') { $downloadsRefs++; continue }
100
- if (-not (Test-FileRel $t $fileDir)) { $missing++; $issues.Add("LINK-MISSING: [$relFile] -> $t") }
101
- }
102
- }
103
- $info.Add("link-scan: $($scopeFiles.Count) 个自有文档; 缺失 $missing; downloads 引用 $downloadsRefs(允许); checkout 相对链接 $repoRelRefs(跳过); 绝对路径 $absRefs(信息)")
104
-
105
- # ---- 3) 功能文档中的本机绝对路径(设计内的回退/示例,仅信息) ----
106
- foreach ($f in @('SKILL.md','README.md','guide/plugin-dev-guide.md','guide/quick-reference.md','guide/links.md')) {
107
- $hits = Select-String -Path (Join-Path $Root $f) -Pattern 'D:\\deepseek-harness' -AllMatches
108
- foreach ($h in $hits) { $info.Add("ABS-PATH(设计内回退/示例): [$f] L$($h.LineNumber)") }
109
- }
110
-
111
- # ---- 4) 官方文档副本与 checkout 漂移校验(可选: -Checkout <deepseek-harness 路径>) ----
112
- # 把副本与 ref(origin/master, 回退 HEAD)的 git blob 逐一对比: 与工作树/本地未推送提交无关, 只回答"副本与上游是否一致"。
113
- if ($Checkout -and (Test-Path $Checkout)) {
114
- $kbDocs = Join-Path $Root 'references\official-docs'
115
- $driftCount = 0; $kbExtra = 0; $missingKb = 0; $checkedDrift = 0
116
- $gitOk = (& git -C $Checkout rev-parse --is-inside-work-tree 2>$null) -eq 'true'
117
- if (-not $gitOk) {
118
- $info.Add("checkout-drift: $Checkout 不是 git 仓库, 跳过(使用 scripts/sync-official-docs.ps1 的非 git 模式同步)")
119
- } else {
120
- $ref = if ((& git -C $Checkout rev-parse --verify -q origin/master 2>$null)) { 'origin/master' } else { 'HEAD' }
121
- $map = @{
122
- 'docs' = 'docs';
123
- 'AGENTS.md' = 'AGENTS.md';
124
- 'BENCHMARK.md' = 'BENCHMARK.md';
125
- 'CONTRIBUTING.md' = 'CONTRIBUTING.md';
126
- 'CONTRIBUTING.zh.md' = 'CONTRIBUTING.zh.md';
127
- 'CONTRIBUTING.i18n.yaml' = 'CONTRIBUTING.i18n.yaml';
128
- 'README-zh.md' = 'README-zh.md';
129
- 'README.i18n.yaml' = 'README.i18n.yaml';
130
- 'THIRD_PARTY_NOTICES.md' = 'THIRD_PARTY_NOTICES.md';
131
- 'LICENSE' = 'LICENSE';
132
- 'packages/AGENTS.md' = 'packages\AGENTS.md';
133
- 'packages/README.md' = 'packages\README.md';
134
- 'vendor/README.md' = 'vendor\README.md';
135
- 'website/docs.ts' = 'website-docs.ts'
136
- }
137
- # CLAUDE.md 上游是 symlink(blob 为目标路径文本), 与 KB 普通文件 blob 必然不同——单独比对目标文本内容。
138
- $claudeUpstream = (& git -C $Checkout cat-file -p "${ref}:CLAUDE.md" 2>$null | Select-Object -First 1)
139
- if ($claudeUpstream) {
140
- $claudeKb = Join-Path $kbDocs 'CLAUDE.md'
141
- if (Test-Path $claudeKb) {
142
- $claudeKbContent = (Get-Content $claudeKb -Raw -Encoding UTF8).Trim()
143
- if ($claudeKbContent -ne $claudeUpstream.Trim()) { $issues.Add("CHECKOUT-DRIFT: CLAUDE.md symlink 目标文本与 $ref 不一致, 运行 sync-official-docs.ps1 同步") }
144
- } else { $missingKb++; $issues.Add("CHECKOUT-DRIFT-MISSING-KB: CLAUDE.md -> 副本无此文件, 请运行 sync-official-docs.ps1") }
145
- }
146
- $keys = @($map.Keys)
147
- foreach ($line in (& git -C $Checkout ls-tree -r $ref -- $keys)) {
148
- if (-not $line) { continue }
149
- $i = $line.IndexOf("`t")
150
- if ($i -lt 0) { continue }
151
- $path = $line.Substring($i + 1)
152
- $sha = (($line.Substring(0, $i) -split '\s+')[2])
153
- $checkedDrift++
154
- $prefix = $null; $kbRel = $null
155
- foreach ($k in $keys) { if ($path -eq $k -or $path.StartsWith("$k/")) { $prefix = $k; $kbRel = $map[$k]; break } }
156
- if (-not $kbRel) { continue }
157
- $suffix = if ($path -eq $prefix) { '' } else { $path.Substring($prefix.Length + 1) }
158
- $kbPath = if ($suffix) { Join-Path (Join-Path $kbDocs $kbRel) ($suffix -replace '/','\') } else { Join-Path $kbDocs $kbRel }
159
- if (-not (Test-Path $kbPath)) { $missingKb++; $issues.Add("CHECKOUT-DRIFT-MISSING-KB: $path -> 副本无此文件, 请运行 sync-official-docs.ps1"); continue }
160
- $kbSha = (& git -C $Checkout hash-object $kbPath).Trim()
161
- if ($kbSha -ne $sha) {
162
- $driftCount++
163
- if ($driftCount -le 10) { $issues.Add("CHECKOUT-DRIFT: $path 与 $ref 不一致(副本落后或超前于上游), 运行 sync-official-docs.ps1 同步") }
164
- }
165
- }
166
- # KB 内多出、源 ref 已没有的文件(仅 docs/ 目录映射)
167
- $docsDir = Join-Path $kbDocs 'docs'
168
- if (Test-Path $docsDir) {
169
- $docsRoot = (Resolve-Path $docsDir).Path
170
- $treePaths = New-Object System.Collections.Generic.HashSet[string]
171
- foreach ($line in (& git -C $Checkout ls-tree -r --name-only $ref -- docs)) { if ($line) { [void]$treePaths.Add($line) } }
172
- Get-ChildItem -Recurse -File $docsDir | ForEach-Object {
173
- $rel = 'docs/' + $_.FullName.Substring($docsRoot.Length + 1).Replace('\','/')
174
- if (-not $treePaths.Contains($rel)) { $kbExtra++; $issues.Add("CHECKOUT-DRIFT-KB-EXTRA: 副本有、$ref 无: $rel (同步时会被清理)") }
175
- }
176
- }
177
- $info.Add("checkout-drift: ref=$ref 比较 $checkedDrift 个 blob; 内容漂移 $driftCount, KB 缺失 $missingKb, KB 多余 $kbExtra")
178
- if ($Strict -and ($driftCount -gt 0 -or $missingKb -gt 0 -or $kbExtra -gt 0)) { $issues.Add("CHECKOUT-DRIFT-STRICT: -Strict 下漂移视为失败") }
179
- }
180
- } elseif ($Checkout) {
181
- $issues.Add("CHECKOUT-MISSING: -Checkout 指定的路径不存在: $Checkout")
182
- }
183
-
184
- # ---- 输出 ----
185
- $info | ForEach-Object { Write-Output $_ }
186
- if ($issues.Count -gt 0) { $issues | ForEach-Object { Write-Output $_ }; Write-Output "ISSUES: $($issues.Count)"; exit 1 }
187
- Write-Output "VERIFY-OK"; exit 0
1
+ # dsh-plugin-guide 完整性检查器
2
+ # 用法: pwsh -File scripts/verify-kit.ps1 -Root <路径>
3
+ # 校验范围: 本知识库自有文档(SKILL/README/NOTICE/guide/references 顶层);
4
+ # 官方文档副本(references/official-docs)是逐字副本,其内部链接指向 deepseek-harness checkout,不在校验范围。
5
+ param([string]$Root = '', [string]$Checkout = '', [switch]$Strict)
6
+ if ([string]::IsNullOrEmpty($Root)) { $Root = if ($PSScriptRoot) { Split-Path $PSScriptRoot -Parent } else { (Get-Location).Path } }
7
+ $ErrorActionPreference = 'SilentlyContinue'
8
+ $issues = New-Object System.Collections.Generic.List[string]
9
+ $info = New-Object System.Collections.Generic.List[string]
10
+
11
+ # ---- 1) 关键路径 ----
12
+ $critical = @(
13
+ 'SKILL.md','README.md','README-zh.md','README-es.md','README-pt.md','README-hi.md','LICENSE','NOTICE.md','.gitignore',
14
+ # 2026-10-13: 入口点与行尾策略。index.js/index.d.ts 曾是唯一无测试、也不受门禁保护的出厂代码,
15
+ # CRLF 缺陷就是从那里进的(见 tests/entry.test.ts 顶部注释);.gitattributes 是那类缺陷的根治手段。
16
+ 'index.js','index.d.ts','.gitattributes',
17
+ 'CONTRIBUTING.md','SECURITY.md','.github/ISSUE_TEMPLATE/bug_report.yml','.github/ISSUE_TEMPLATE/feature_request.yml','.github/PULL_REQUEST_TEMPLATE.md',
18
+ 'guide/plugin-dev-guide.md','guide/quick-reference.md','guide/links.md','guide/quick-reference.zh-CN.md','guide/quick-reference.es.md','guide/quick-reference.pt.md','guide/quick-reference.hi.md',
19
+ # 2026-10-13: 补齐 gated 文件——这些曾被漏掉,导致陈旧内容能存活到发布
20
+ 'guide/version-matrix.md','guide/family-toolchain.md','guide/migration-0.2.md','guide/unfixed-issues.md',
21
+ 'guide/release-engineering.md','guide/release-engineering.zh-CN.md',
22
+ 'guide/when-to-retire-a-plugin.md','guide/when-to-retire-a-plugin.zh-CN.md',
23
+ 'guide/choosing-a-plugin.md','guide/choosing-a-plugin.zh-CN.md',
24
+ 'references/sources.md','references/harness-repo.md','references/website-pages.md',
25
+ 'references/official-plugin-dev-skill.md','references/dev-resource-landscape.md',
26
+ 'src/cli/skill-sections.ts','src/cli/templates.ts',
27
+ 'references/upstream-cordis.md','references/cordis-paper-and-community.md',
28
+ 'references/community-ecosystem.md','references/community-repo-deep-dive.md',
29
+ 'references/official-docs/docs/cordis-primer.md',
30
+ 'references/official-docs/docs/cordis-tutorial/index.md',
31
+ 'references/official-docs/docs/cordis-tutorial/01-first-plugin.md',
32
+ 'references/official-docs/docs/cordis-tutorial/02-lifecycle-and-effects.md',
33
+ 'references/official-docs/docs/cordis-tutorial/03-services.md',
34
+ 'references/official-docs/docs/cordis-tutorial/04-events.md',
35
+ 'references/official-docs/docs/cordis-tutorial/05-config.md',
36
+ 'references/official-docs/docs/cordis-tutorial/06-composition-and-hmr.md',
37
+ 'references/official-docs/docs/cordis-tutorial/07-into-the-harness.md',
38
+ 'references/official-docs/docs/architecture.md',
39
+ 'references/official-docs/docs/cookbook/extension-cookbook.md',
40
+ 'references/official-docs/docs/cookbook/adding-a-tool.md',
41
+ 'references/official-docs/docs/event-producer-consumer.md',
42
+ 'references/official-docs/docs/user/develop/basic/index.md',
43
+ 'references/official-docs/docs/user/develop/basic/tool.md',
44
+ 'references/official-docs/docs/user/develop/basic/config.md',
45
+ 'references/official-docs/docs/user/develop/basic/publish.md',
46
+ 'references/official-docs/docs/user/develop/framework/service.md',
47
+ 'references/official-docs/docs/user/develop/framework/events.md',
48
+ 'references/official-docs/docs/user/develop/practice/index.md',
49
+ 'references/official-docs/docs/user/develop/practice/llm-adapter.md',
50
+ 'references/official-docs/docs/subsystems/session.md',
51
+ 'references/official-docs/docs/subsystems/tools.md',
52
+ 'references/official-docs/docs/cordis-api/context.md',
53
+ 'references/official-docs/AGENTS.md',
54
+ 'references/official-docs/SNAPSHOT.md',
55
+ 'references/official-docs/packages/AGENTS.md',
56
+ 'references/official-docs/packages/README.md',
57
+ 'references/official-docs/vendor/README.md',
58
+ 'scripts/download-sources.ps1','scripts/download-community-repos.ps1','scripts/gen-topic-snapshot.ps1','scripts/sync-official-docs.ps1','scripts/install-skill.ps1','scripts/verify-kit.ps1','scripts/archive-discussions.ps1','scripts/download-community-articles.ps1'
59
+ )
60
+ foreach ($c in $critical) { if (-not (Test-Path (Join-Path $Root $c))) { $issues.Add("CRITICAL-MISSING: $c") } }
61
+ $info.Add("critical: $($critical.Count) 项, 缺失 $((($issues | Where-Object { $_ -like 'CRITICAL-*' }) | Measure-Object).Count)")
62
+
63
+ # ---- 1b) 归档内容断言(防止同名文件错位: 历史事故是 examples/AGENTS.md 被当成仓库根 AGENTS.md) ----
64
+ function Assert-FirstLine([string]$rel, [string]$pattern, [string]$expect) {
65
+ $p = Join-Path $Root $rel
66
+ if (-not (Test-Path $p)) { return }
67
+ $first = Get-Content $p -Encoding UTF8 | Where-Object { $_.Trim() -ne '' } | Select-Object -First 1
68
+ if ($first -notlike $pattern) { $issues.Add("CONTENT-ASSERT-FAIL: $rel 首行应为 $expect, 实际: $first") }
69
+ }
70
+ Assert-FirstLine 'references/official-docs/AGENTS.md' '# AGENTS.md' "仓库根 AGENTS.md 标题"
71
+ Assert-FirstLine 'references/official-docs/packages/AGENTS.md' '# AGENTS.md*Harness Packages*' "packages/AGENTS.md 标题"
72
+
73
+ # ---- 2) 自有文档相对链接解析 ----
74
+ # 只检查 markdown 链接目标(读者会点击的);代码块/行内码里的裸词不参与,
75
+ # 避免把 name、ctx、- 等片段误判为路径。链接按"相对所在文件目录"解析;
76
+ # downloads/ 引用允许,指向 checkout 的逃逸链接(../../、../packages/ 等)跳过。
77
+ $scopeFiles = @((Join-Path $Root 'SKILL.md'), (Join-Path $Root 'README.md'), (Join-Path $Root 'NOTICE.md'))
78
+ $scopeFiles += Get-ChildItem (Join-Path $Root 'guide') -Filter *.md -File
79
+ $scopeFiles += Get-ChildItem (Join-Path $Root 'references') -Filter *.md -File # 仅顶层,不含 official-docs 子树
80
+ $missing = 0; $downloadsRefs = 0; $repoRelRefs = 0; $absRefs = 0
81
+
82
+ function Is-PathToken([string]$t) {
83
+ # 纯 ASCII 相对路径:含斜杠(guide/links.md、../references/x.md)或带扩展名(README.md);
84
+ # 裸词、含空格/CJK 的引文片段不参与检查
85
+ return $t -match '^(\.\./)?(\./)?(([A-Za-z0-9][A-Za-z0-9_.\-]*/)+[A-Za-z0-9_.\-]+(\.[A-Za-z0-9]+)?|[A-Za-z0-9][A-Za-z0-9_.\-]+\.[A-Za-z0-9]+)(#[A-Za-z0-9_\-/]+)?$'
86
+ }
87
+ function Test-FileRel([string]$p, [string]$dir) {
88
+ $p = $p -replace '^\./',''
89
+ $p = $p -replace '[?#].*$',''
90
+ if ($p -match '[*]') { $d = Split-Path (Join-Path $dir $p) -Parent; return Test-Path $d }
91
+ return Test-Path (Join-Path $dir $p)
92
+ }
93
+
94
+ foreach ($f in $scopeFiles) {
95
+ if (-not (Test-Path $f.FullName)) { continue }
96
+ $relFile = $f.FullName.Substring($Root.Length + 1)
97
+ $fileDir = Split-Path $f.FullName -Parent
98
+ $text = Get-Content $f.FullName -Raw -Encoding UTF8
99
+ $tokens = New-Object System.Collections.Generic.HashSet[string]
100
+ foreach ($m in [regex]::Matches($text, '\[[^\]]*\]\(([^)\s]+)\)')) {
101
+ $t = $m.Groups[1].Value.Trim()
102
+ if ($t -match '^https?://' -or $t -match '^[A-Za-z]:[\\/]' -or $t -match '^(<|\$|#)') { continue }
103
+ if ($t -match '^[A-Za-z]:[\\/]') { $absRefs++; continue }
104
+ if (-not (Is-PathToken $t)) { continue }
105
+ [void]$tokens.Add($t)
106
+ }
107
+ foreach ($t in $tokens) {
108
+ if ($t -match '^(\.\./){2,}' -or $t -match '^\.\./packages/|^\.\./\.agents/') { $repoRelRefs++; continue }
109
+ if ($t -match '^(\./)?downloads/') { $downloadsRefs++; continue }
110
+ if (-not (Test-FileRel $t $fileDir)) { $missing++; $issues.Add("LINK-MISSING: [$relFile] -> $t") }
111
+ }
112
+ }
113
+ $info.Add("link-scan: $($scopeFiles.Count) 个自有文档; 缺失 $missing; downloads 引用 $downloadsRefs(允许); checkout 相对链接 $repoRelRefs(跳过); 绝对路径 $absRefs(信息)")
114
+
115
+ # ---- 3) 功能文档中的本机绝对路径(设计内的回退/示例,仅信息) ----
116
+ foreach ($f in @('SKILL.md','README.md','guide/plugin-dev-guide.md','guide/quick-reference.md','guide/links.md')) {
117
+ $hits = Select-String -Path (Join-Path $Root $f) -Pattern 'D:\\deepseek-harness' -AllMatches
118
+ foreach ($h in $hits) { $info.Add("ABS-PATH(设计内回退/示例): [$f] L$($h.LineNumber)") }
119
+ }
120
+
121
+ # ---- 4) 官方文档副本与 checkout 漂移校验(可选: -Checkout <deepseek-harness 路径>) ----
122
+ # 把副本与 ref(origin/master, 回退 HEAD)的 git blob 逐一对比: 与工作树/本地未推送提交无关, 只回答"副本与上游是否一致"。
123
+ if ($Checkout -and (Test-Path $Checkout)) {
124
+ $kbDocs = Join-Path $Root 'references\official-docs'
125
+ $driftCount = 0; $kbExtra = 0; $missingKb = 0; $checkedDrift = 0
126
+ $gitOk = (& git -C $Checkout rev-parse --is-inside-work-tree 2>$null) -eq 'true'
127
+ if (-not $gitOk) {
128
+ $info.Add("checkout-drift: $Checkout 不是 git 仓库, 跳过(使用 scripts/sync-official-docs.ps1 的非 git 模式同步)")
129
+ } else {
130
+ $ref = if ((& git -C $Checkout rev-parse --verify -q origin/master 2>$null)) { 'origin/master' } else { 'HEAD' }
131
+ $map = @{
132
+ 'docs' = 'docs';
133
+ 'AGENTS.md' = 'AGENTS.md';
134
+ 'BENCHMARK.md' = 'BENCHMARK.md';
135
+ 'CONTRIBUTING.md' = 'CONTRIBUTING.md';
136
+ 'CONTRIBUTING.zh.md' = 'CONTRIBUTING.zh.md';
137
+ 'CONTRIBUTING.i18n.yaml' = 'CONTRIBUTING.i18n.yaml';
138
+ 'README-zh.md' = 'README-zh.md';
139
+ 'README.i18n.yaml' = 'README.i18n.yaml';
140
+ 'THIRD_PARTY_NOTICES.md' = 'THIRD_PARTY_NOTICES.md';
141
+ 'LICENSE' = 'LICENSE';
142
+ 'packages/AGENTS.md' = 'packages\AGENTS.md';
143
+ 'packages/README.md' = 'packages\README.md';
144
+ 'vendor/README.md' = 'vendor\README.md';
145
+ 'website/docs.ts' = 'website-docs.ts'
146
+ }
147
+ # CLAUDE.md 上游是 symlink(blob 为目标路径文本), 与 KB 普通文件 blob 必然不同——单独比对目标文本内容。
148
+ $claudeUpstream = (& git -C $Checkout cat-file -p "${ref}:CLAUDE.md" 2>$null | Select-Object -First 1)
149
+ if ($claudeUpstream) {
150
+ $claudeKb = Join-Path $kbDocs 'CLAUDE.md'
151
+ if (Test-Path $claudeKb) {
152
+ $claudeKbContent = (Get-Content $claudeKb -Raw -Encoding UTF8).Trim()
153
+ if ($claudeKbContent -ne $claudeUpstream.Trim()) { $issues.Add("CHECKOUT-DRIFT: CLAUDE.md symlink 目标文本与 $ref 不一致, 运行 sync-official-docs.ps1 同步") }
154
+ } else { $missingKb++; $issues.Add("CHECKOUT-DRIFT-MISSING-KB: CLAUDE.md -> 副本无此文件, 请运行 sync-official-docs.ps1") }
155
+ }
156
+ $keys = @($map.Keys)
157
+ foreach ($line in (& git -C $Checkout ls-tree -r $ref -- $keys)) {
158
+ if (-not $line) { continue }
159
+ $i = $line.IndexOf("`t")
160
+ if ($i -lt 0) { continue }
161
+ $path = $line.Substring($i + 1)
162
+ $sha = (($line.Substring(0, $i) -split '\s+')[2])
163
+ $checkedDrift++
164
+ $prefix = $null; $kbRel = $null
165
+ foreach ($k in $keys) { if ($path -eq $k -or $path.StartsWith("$k/")) { $prefix = $k; $kbRel = $map[$k]; break } }
166
+ if (-not $kbRel) { continue }
167
+ $suffix = if ($path -eq $prefix) { '' } else { $path.Substring($prefix.Length + 1) }
168
+ $kbPath = if ($suffix) { Join-Path (Join-Path $kbDocs $kbRel) ($suffix -replace '/','\') } else { Join-Path $kbDocs $kbRel }
169
+ if (-not (Test-Path $kbPath)) { $missingKb++; $issues.Add("CHECKOUT-DRIFT-MISSING-KB: $path -> 副本无此文件, 请运行 sync-official-docs.ps1"); continue }
170
+ $kbSha = (& git -C $Checkout hash-object $kbPath).Trim()
171
+ if ($kbSha -ne $sha) {
172
+ $driftCount++
173
+ if ($driftCount -le 10) { $issues.Add("CHECKOUT-DRIFT: $path 与 $ref 不一致(副本落后或超前于上游), 运行 sync-official-docs.ps1 同步") }
174
+ }
175
+ }
176
+ # KB 内多出、源 ref 已没有的文件(仅 docs/ 目录映射)
177
+ $docsDir = Join-Path $kbDocs 'docs'
178
+ if (Test-Path $docsDir) {
179
+ $docsRoot = (Resolve-Path $docsDir).Path
180
+ $treePaths = New-Object System.Collections.Generic.HashSet[string]
181
+ foreach ($line in (& git -C $Checkout ls-tree -r --name-only $ref -- docs)) { if ($line) { [void]$treePaths.Add($line) } }
182
+ Get-ChildItem -Recurse -File $docsDir | ForEach-Object {
183
+ $rel = 'docs/' + $_.FullName.Substring($docsRoot.Length + 1).Replace('\','/')
184
+ if (-not $treePaths.Contains($rel)) { $kbExtra++; $issues.Add("CHECKOUT-DRIFT-KB-EXTRA: 副本有、$ref 无: $rel (同步时会被清理)") }
185
+ }
186
+ }
187
+ $info.Add("checkout-drift: ref=$ref 比较 $checkedDrift 个 blob; 内容漂移 $driftCount, KB 缺失 $missingKb, KB 多余 $kbExtra")
188
+ if ($Strict -and ($driftCount -gt 0 -or $missingKb -gt 0 -or $kbExtra -gt 0)) { $issues.Add("CHECKOUT-DRIFT-STRICT: -Strict 下漂移视为失败") }
189
+ }
190
+ } elseif ($Checkout) {
191
+ $issues.Add("CHECKOUT-MISSING: -Checkout 指定的路径不存在: $Checkout")
192
+ }
193
+
194
+ # ---- 输出 ----
195
+ $info | ForEach-Object { Write-Output $_ }
196
+ if ($issues.Count -gt 0) { $issues | ForEach-Object { Write-Output $_ }; Write-Output "ISSUES: $($issues.Count)"; exit 1 }
197
+ Write-Output "VERIFY-OK"; exit 0
@@ -6,7 +6,7 @@ Un plugin de DeepSeek Harness (DSH) generado con [`dsh-plugin-dev new`](https://
6
6
 
7
7
  | Superficie | Estado |
8
8
  |---|---|
9
- | Harness | DeepSeek Harness `0.1.7-rc.2` |
9
+ | Harness | DeepSeek Harness `{{dshBaseline}}` (npm `alpha`); `latest`/`next` = `0.2.0-rc.2` |
10
10
  | Node | `^22.19.0 || >=24.0.0` |
11
11
  | Plataformas | Todas (ESM puro; sin código nativo, sin red) |
12
12
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  | सतह | स्थिति |
8
8
  |---|---|
9
- | Harness | DeepSeek Harness `0.1.7-rc.2` |
9
+ | Harness | DeepSeek Harness `{{dshBaseline}}` (npm `alpha`); `latest`/`next` = `0.2.0-rc.2` |
10
10
  | Node | `^22.19.0 || >=24.0.0` |
11
11
  | प्लेटफ़ॉर्म | सभी (शुद्ध ESM; कोई नेटिव कोड नहीं, कोई नेटवर्क नहीं) |
12
12
 
@@ -6,7 +6,7 @@ Um plugin do DeepSeek Harness (DSH) gerado com [`dsh-plugin-dev new`](https://gi
6
6
 
7
7
  | Superfície | Estado |
8
8
  |---|---|
9
- | Harness | DeepSeek Harness `0.1.7-rc.2` |
9
+ | Harness | DeepSeek Harness `{{dshBaseline}}` (npm `alpha`); `latest`/`next` = `0.2.0-rc.2` |
10
10
  | Node | `^22.19.0 || >=24.0.0` |
11
11
  | Plataformas | Todas (ESM puro; sem código nativo, sem rede) |
12
12
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  | 项目 | 状态 |
8
8
  |---|---|
9
- | Harness | DeepSeek Harness `0.1.7-rc.2` |
9
+ | Harness | DeepSeek Harness `{{dshBaseline}}` (npm `alpha`); `latest`/`next` = `0.2.0-rc.2` |
10
10
  | Node | `^22.19.0 || >=24.0.0` |
11
11
  | 平台 | 全部(纯 ESM;无原生代码、无网络) |
12
12
 
@@ -6,7 +6,7 @@ A DeepSeek Harness (DSH) plugin scaffolded by [`dsh-plugin-dev new`](https://git
6
6
 
7
7
  | Surface | Status |
8
8
  |---|---|
9
- | Harness | DeepSeek Harness `0.1.7-rc.2` |
9
+ | Harness | DeepSeek Harness `{{dshBaseline}}` (npm `alpha`); `latest`/`next` = `0.2.0-rc.2` |
10
10
  | Node | `^22.19.0 || >=24.0.0` |
11
11
  | Platforms | All (plain ESM; no native code, no network) |
12
12
 
@@ -6,7 +6,7 @@ Un plugin de DeepSeek Harness (DSH) generado con [`dsh-plugin-dev new`](https://
6
6
 
7
7
  | Superficie | Estado |
8
8
  |---|---|
9
- | Harness | DeepSeek Harness `0.1.7-rc.2` |
9
+ | Harness | DeepSeek Harness `{{dshBaseline}}` (npm `alpha`); `latest`/`next` = `0.2.0-rc.2` |
10
10
  | Node | `^22.19.0 || >=24.0.0` |
11
11
  | Plataformas | Todas (ESM puro; sin código nativo, sin red) |
12
12
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  | सतह | स्थिति |
8
8
  |---|---|
9
- | Harness | DeepSeek Harness `0.1.7-rc.2` |
9
+ | Harness | DeepSeek Harness `{{dshBaseline}}` (npm `alpha`); `latest`/`next` = `0.2.0-rc.2` |
10
10
  | Node | `^22.19.0 || >=24.0.0` |
11
11
  | प्लेटफ़ॉर्म | सभी (शुद्ध ESM; कोई नेटिव कोड नहीं, कोई नेटवर्क नहीं) |
12
12
 
@@ -6,7 +6,7 @@ Um plugin do DeepSeek Harness (DSH) gerado com [`dsh-plugin-dev new`](https://gi
6
6
 
7
7
  | Superfície | Estado |
8
8
  |---|---|
9
- | Harness | DeepSeek Harness `0.1.7-rc.2` |
9
+ | Harness | DeepSeek Harness `{{dshBaseline}}` (npm `alpha`); `latest`/`next` = `0.2.0-rc.2` |
10
10
  | Node | `^22.19.0 || >=24.0.0` |
11
11
  | Plataformas | Todas (ESM puro; sem código nativo, sem rede) |
12
12
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  | 项目 | 状态 |
8
8
  |---|---|
9
- | Harness | DeepSeek Harness `0.1.7-rc.2` |
9
+ | Harness | DeepSeek Harness `{{dshBaseline}}` (npm `alpha`); `latest`/`next` = `0.2.0-rc.2` |
10
10
  | Node | `^22.19.0 || >=24.0.0` |
11
11
  | 平台 | 全部(纯 ESM;无原生代码、无网络) |
12
12
 
@@ -6,7 +6,7 @@ A DeepSeek Harness (DSH) plugin scaffolded by [`dsh-plugin-dev new`](https://git
6
6
 
7
7
  | Surface | Status |
8
8
  |---|---|
9
- | Harness | DeepSeek Harness `0.1.7-rc.2` |
9
+ | Harness | DeepSeek Harness `{{dshBaseline}}` (npm `alpha`); `latest`/`next` = `0.2.0-rc.2` |
10
10
  | Node | `^22.19.0 || >=24.0.0` |
11
11
  | Platforms | All (plain ESM; no native code, no network) |
12
12