dsh-plugin-guide 0.3.27 → 0.3.29

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 (292) 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 +4 -3
  7. package/dist/dsh-plugin-dev.js +17 -8
  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/package.json +4 -3
  24. package/references/community-ecosystem.md +2 -1
  25. package/references/dev-resource-landscape.md +294 -0
  26. package/references/official-docs/AGENTS.md +4 -5
  27. package/references/official-docs/SNAPSHOT.md +3 -3
  28. package/references/official-docs/THIRD_PARTY_NOTICES.md +2 -1
  29. package/references/official-docs/docs/AGENTS.md +1 -1
  30. package/references/official-docs/docs/architecture.i18n.yaml +14 -14
  31. package/references/official-docs/docs/architecture.md +11 -12
  32. package/references/official-docs/docs/architecture.zh.md +11 -12
  33. package/references/official-docs/docs/capability-seams.i18n.yaml +2 -2
  34. package/references/official-docs/docs/capability-seams.md +48 -23
  35. package/references/official-docs/docs/capability-seams.zh.md +48 -23
  36. package/references/official-docs/docs/cli-help.i18n.yaml +34 -0
  37. package/references/official-docs/docs/cli-help.md +203 -0
  38. package/references/official-docs/docs/cli-help.zh.md +205 -0
  39. package/references/official-docs/docs/config-catalog.md +305 -145
  40. package/references/official-docs/docs/config-catalog.zh.md +305 -145
  41. package/references/official-docs/docs/cookbook/adding-a-session-format-version.i18n.yaml +6 -6
  42. package/references/official-docs/docs/cookbook/adding-a-session-format-version.md +7 -5
  43. package/references/official-docs/docs/cookbook/adding-a-session-format-version.zh.md +7 -5
  44. package/references/official-docs/docs/cookbook/reviewing-persistence-type-changes.i18n.yaml +6 -6
  45. package/references/official-docs/docs/cookbook/reviewing-persistence-type-changes.md +11 -9
  46. package/references/official-docs/docs/cookbook/reviewing-persistence-type-changes.zh.md +11 -9
  47. package/references/official-docs/docs/deepseek-llm-api-wire-extensions.i18n.yaml +4 -4
  48. package/references/official-docs/docs/deepseek-llm-api-wire-extensions.md +5 -5
  49. package/references/official-docs/docs/deepseek-llm-api-wire-extensions.zh.md +5 -5
  50. package/references/official-docs/docs/defensive-patterns.i18n.yaml +2 -2
  51. package/references/official-docs/docs/defensive-patterns.md +1 -1
  52. package/references/official-docs/docs/defensive-patterns.zh.md +1 -1
  53. package/references/official-docs/docs/development.i18n.yaml +6 -6
  54. package/references/official-docs/docs/development.md +4 -2
  55. package/references/official-docs/docs/development.zh.md +4 -2
  56. package/references/official-docs/docs/event-producer-consumer.md +33 -33
  57. package/references/official-docs/docs/event-producer-consumer.zh.md +33 -33
  58. package/references/official-docs/docs/experimental-persistence-catalog.i18n.yaml +10 -0
  59. package/references/official-docs/docs/experimental-persistence-catalog.md +17 -0
  60. package/references/official-docs/docs/experimental-persistence-catalog.zh.md +17 -0
  61. package/references/official-docs/docs/module-graph.md +202 -131
  62. package/references/official-docs/docs/module-graph.zh.md +202 -131
  63. package/references/official-docs/docs/persistence-catalog.i18n.yaml +185 -158
  64. package/references/official-docs/docs/persistence-catalog.md +213 -112
  65. package/references/official-docs/docs/persistence-catalog.zh.md +213 -112
  66. package/references/official-docs/docs/persistence-changes/2026-09-13-working-directory.i18n.yaml +28 -0
  67. package/references/official-docs/docs/persistence-changes/2026-09-13-working-directory.md +48 -0
  68. package/references/official-docs/docs/persistence-changes/2026-09-13-working-directory.schema.json +76 -0
  69. package/references/official-docs/docs/persistence-changes/2026-09-13-working-directory.zh.md +48 -0
  70. package/references/official-docs/docs/persistence-changes/2026-09-16-session-format-v4.i18n.yaml +4 -4
  71. package/references/official-docs/docs/persistence-changes/2026-09-16-session-format-v4.md +2 -2
  72. package/references/official-docs/docs/persistence-changes/2026-09-16-session-format-v4.zh.md +2 -2
  73. package/references/official-docs/docs/persistence-changes/2026-09-19-external-subagent-catalog.i18n.yaml +28 -0
  74. package/references/official-docs/docs/persistence-changes/2026-09-19-external-subagent-catalog.md +48 -0
  75. package/references/official-docs/docs/persistence-changes/2026-09-19-external-subagent-catalog.schema.json +290 -0
  76. package/references/official-docs/docs/persistence-changes/2026-09-19-external-subagent-catalog.zh.md +48 -0
  77. package/references/official-docs/docs/persistence-changes/2026-10-05-ptc-operation-metadata.i18n.yaml +28 -0
  78. package/references/official-docs/docs/persistence-changes/2026-10-05-ptc-operation-metadata.md +48 -0
  79. package/references/official-docs/docs/persistence-changes/2026-10-05-ptc-operation-metadata.schema.json +457 -0
  80. package/references/official-docs/docs/persistence-changes/2026-10-05-ptc-operation-metadata.zh.md +48 -0
  81. package/references/official-docs/docs/persistence-changes/2026-10-05-working-directory-attribution.i18n.yaml +28 -0
  82. package/references/official-docs/docs/persistence-changes/2026-10-05-working-directory-attribution.md +60 -0
  83. package/references/official-docs/docs/persistence-changes/2026-10-05-working-directory-attribution.schema.json +11474 -0
  84. package/references/official-docs/docs/persistence-changes/2026-10-05-working-directory-attribution.zh.md +60 -0
  85. package/references/official-docs/docs/persistence-changes/2026-10-07-title-reasoning-effort.i18n.yaml +28 -0
  86. package/references/official-docs/docs/persistence-changes/2026-10-07-title-reasoning-effort.md +48 -0
  87. package/references/official-docs/docs/persistence-changes/2026-10-07-title-reasoning-effort.schema.json +2990 -0
  88. package/references/official-docs/docs/persistence-changes/2026-10-07-title-reasoning-effort.zh.md +48 -0
  89. package/references/official-docs/docs/persistence-changes/README.i18n.yaml +4 -4
  90. package/references/official-docs/docs/persistence-changes/README.md +12 -10
  91. package/references/official-docs/docs/persistence-changes/README.zh.md +12 -10
  92. package/references/official-docs/docs/persistence-changes/historical-formats/README.i18n.yaml +2 -2
  93. package/references/official-docs/docs/persistence-changes/historical-formats/README.md +1 -1
  94. package/references/official-docs/docs/persistence-changes/historical-formats/README.zh.md +1 -1
  95. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.2.i18n.yaml +2 -2
  96. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.2.md +50 -50
  97. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.2.zh.md +50 -50
  98. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.3.i18n.yaml +2 -2
  99. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.3.md +14 -14
  100. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.3.zh.md +14 -14
  101. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.7.i18n.yaml +2 -2
  102. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.7.md +3 -3
  103. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.7.zh.md +3 -3
  104. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.8.i18n.yaml +2 -2
  105. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.8.md +10 -10
  106. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.8.zh.md +10 -10
  107. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.1.i18n.yaml +2 -2
  108. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.1.md +3 -3
  109. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.1.zh.md +3 -3
  110. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.2.i18n.yaml +2 -2
  111. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.2.md +13 -13
  112. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.2.zh.md +13 -13
  113. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.1.i18n.yaml +2 -2
  114. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.1.md +63 -63
  115. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.1.zh.md +63 -63
  116. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.2.i18n.yaml +2 -2
  117. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.2.md +54 -54
  118. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.2.zh.md +54 -54
  119. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.4.i18n.yaml +2 -2
  120. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.4.md +7 -7
  121. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.4.zh.md +7 -7
  122. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.1.i18n.yaml +2 -2
  123. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.1.md +27 -27
  124. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.1.zh.md +27 -27
  125. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.2.i18n.yaml +2 -2
  126. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.2.md +4 -4
  127. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.2.zh.md +4 -4
  128. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.1.i18n.yaml +2 -2
  129. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.1.md +27 -27
  130. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.1.zh.md +27 -27
  131. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.i18n.yaml +2 -2
  132. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.md +7 -7
  133. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.zh.md +7 -7
  134. package/references/official-docs/docs/persistence-schema.json +2084 -1827
  135. package/references/official-docs/docs/session-format-status.i18n.yaml +6 -6
  136. package/references/official-docs/docs/session-format-status.md +6 -6
  137. package/references/official-docs/docs/session-format-status.zh.md +6 -6
  138. package/references/official-docs/docs/subsystems/README.i18n.yaml +2 -2
  139. package/references/official-docs/docs/subsystems/README.md +4 -1
  140. package/references/official-docs/docs/subsystems/README.zh.md +4 -1
  141. package/references/official-docs/docs/subsystems/agent-team.i18n.yaml +7 -7
  142. package/references/official-docs/docs/subsystems/agent-team.md +10 -10
  143. package/references/official-docs/docs/subsystems/agent-team.zh.md +10 -10
  144. package/references/official-docs/docs/subsystems/boot.i18n.yaml +2 -2
  145. package/references/official-docs/docs/subsystems/boot.md +4 -4
  146. package/references/official-docs/docs/subsystems/boot.zh.md +4 -4
  147. package/references/official-docs/docs/subsystems/claude-code-mods.i18n.yaml +2 -2
  148. package/references/official-docs/docs/subsystems/claude-code-mods.md +1 -1
  149. package/references/official-docs/docs/subsystems/claude-code-mods.zh.md +1 -1
  150. package/references/official-docs/docs/subsystems/jobs.i18n.yaml +2 -2
  151. package/references/official-docs/docs/subsystems/jobs.md +2 -3
  152. package/references/official-docs/docs/subsystems/jobs.zh.md +2 -3
  153. package/references/official-docs/docs/subsystems/llm-streaming.i18n.yaml +4 -4
  154. package/references/official-docs/docs/subsystems/llm-streaming.md +41 -14
  155. package/references/official-docs/docs/subsystems/llm-streaming.zh.md +41 -14
  156. package/references/official-docs/docs/subsystems/persistence.md +2 -0
  157. package/references/official-docs/docs/subsystems/persistence.zh.md +2 -0
  158. package/references/official-docs/docs/subsystems/plan.i18n.yaml +2 -2
  159. package/references/official-docs/docs/subsystems/plan.md +1 -1
  160. package/references/official-docs/docs/subsystems/plan.zh.md +1 -1
  161. package/references/official-docs/docs/subsystems/session-query.md +2 -0
  162. package/references/official-docs/docs/subsystems/session-query.zh.md +2 -0
  163. package/references/official-docs/docs/subsystems/session-title.i18n.yaml +6 -6
  164. package/references/official-docs/docs/subsystems/session-title.md +14 -5
  165. package/references/official-docs/docs/subsystems/session-title.zh.md +14 -5
  166. package/references/official-docs/docs/subsystems/session.i18n.yaml +3 -0
  167. package/references/official-docs/docs/subsystems/session.md +48 -5
  168. package/references/official-docs/docs/subsystems/session.zh.md +48 -5
  169. package/references/official-docs/docs/subsystems/skills.i18n.yaml +2 -2
  170. package/references/official-docs/docs/subsystems/skills.md +2 -2
  171. package/references/official-docs/docs/subsystems/skills.zh.md +2 -2
  172. package/references/official-docs/docs/subsystems/slots.md +10 -8
  173. package/references/official-docs/docs/subsystems/slots.zh.md +10 -8
  174. package/references/official-docs/docs/subsystems/ssh.i18n.yaml +2 -2
  175. package/references/official-docs/docs/subsystems/ssh.md +22 -11
  176. package/references/official-docs/docs/subsystems/ssh.zh.md +22 -11
  177. package/references/official-docs/docs/subsystems/subagent.i18n.yaml +24 -27
  178. package/references/official-docs/docs/subsystems/subagent.md +165 -229
  179. package/references/official-docs/docs/subsystems/subagent.zh.md +167 -233
  180. package/references/official-docs/docs/subsystems/system-prompt.i18n.yaml +2 -2
  181. package/references/official-docs/docs/subsystems/system-prompt.md +32 -2
  182. package/references/official-docs/docs/subsystems/system-prompt.zh.md +32 -2
  183. package/references/official-docs/docs/subsystems/tools.i18n.yaml +2 -2
  184. package/references/official-docs/docs/subsystems/tools.md +3 -3
  185. package/references/official-docs/docs/subsystems/tools.zh.md +3 -3
  186. package/references/official-docs/docs/subsystems/translation.i18n.yaml +19 -0
  187. package/references/official-docs/docs/subsystems/translation.md +103 -0
  188. package/references/official-docs/docs/subsystems/translation.zh.md +103 -0
  189. package/references/official-docs/docs/subsystems/web-server.i18n.yaml +8 -8
  190. package/references/official-docs/docs/subsystems/web-server.md +43 -8
  191. package/references/official-docs/docs/subsystems/web-server.zh.md +43 -8
  192. package/references/official-docs/docs/subsystems/webhook.md +1 -1
  193. package/references/official-docs/docs/subsystems/webhook.zh.md +1 -1
  194. package/references/official-docs/docs/subsystems/workflow.i18n.yaml +2 -2
  195. package/references/official-docs/docs/subsystems/workflow.md +1 -1
  196. package/references/official-docs/docs/subsystems/workflow.zh.md +1 -1
  197. package/references/official-docs/docs/subsystems/working-directory.i18n.yaml +13 -0
  198. package/references/official-docs/docs/subsystems/working-directory.md +64 -0
  199. package/references/official-docs/docs/subsystems/working-directory.zh.md +64 -0
  200. package/references/official-docs/docs/subsystems/workspace.md +2 -2
  201. package/references/official-docs/docs/subsystems/workspace.zh.md +2 -2
  202. package/references/official-docs/docs/subsystems/worktrees.i18n.yaml +13 -0
  203. package/references/official-docs/docs/subsystems/worktrees.md +76 -0
  204. package/references/official-docs/docs/subsystems/worktrees.zh.md +76 -0
  205. package/references/official-docs/docs/testing.i18n.yaml +2 -2
  206. package/references/official-docs/docs/testing.md +1 -1
  207. package/references/official-docs/docs/testing.zh.md +1 -1
  208. package/references/official-docs/docs/tool-catalog.i18n.yaml +57 -45
  209. package/references/official-docs/docs/tool-catalog.md +95 -41
  210. package/references/official-docs/docs/tool-catalog.zh.md +99 -45
  211. package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/bundled-python-tests/guide.i18n.yaml +16 -0
  212. package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/bundled-python-tests/guide.md +18 -0
  213. package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/bundled-python-tests/guide.zh.md +18 -0
  214. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/deepseek-model-discovery/guide.i18n.yaml +16 -0
  215. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/deepseek-model-discovery/guide.md +17 -0
  216. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/deepseek-model-discovery/guide.zh.md +17 -0
  217. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/desktop-test-auth-popup/guide.i18n.yaml +16 -0
  218. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/desktop-test-auth-popup/guide.md +18 -0
  219. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/desktop-test-auth-popup/guide.zh.md +18 -0
  220. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/experimental-package-composition/guide.i18n.yaml +16 -0
  221. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/experimental-package-composition/guide.md +28 -0
  222. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/experimental-package-composition/guide.zh.md +28 -0
  223. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/instruction-home-override/guide.i18n.yaml +16 -0
  224. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/instruction-home-override/guide.md +20 -0
  225. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/instruction-home-override/guide.zh.md +20 -0
  226. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/mock-messages-events/guide.i18n.yaml +16 -0
  227. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/mock-messages-events/guide.md +17 -0
  228. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/mock-messages-events/guide.zh.md +17 -0
  229. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/native-subagent-bundle-tools/guide.i18n.yaml +16 -0
  230. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/native-subagent-bundle-tools/guide.md +31 -0
  231. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/native-subagent-bundle-tools/guide.zh.md +31 -0
  232. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/new-session-generations/guide.i18n.yaml +16 -0
  233. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/new-session-generations/guide.md +20 -0
  234. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/new-session-generations/guide.zh.md +20 -0
  235. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/plugin-option-placement/guide.i18n.yaml +16 -0
  236. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/plugin-option-placement/guide.md +20 -0
  237. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/plugin-option-placement/guide.zh.md +20 -0
  238. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-optional-resources/guide.i18n.yaml +16 -0
  239. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-optional-resources/guide.md +18 -0
  240. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-optional-resources/guide.zh.md +18 -0
  241. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-ptc-sandbox/guide.i18n.yaml +16 -0
  242. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-ptc-sandbox/guide.md +21 -0
  243. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-ptc-sandbox/guide.zh.md +21 -0
  244. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-adapters/guide.i18n.yaml +16 -0
  245. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-adapters/guide.md +18 -0
  246. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-adapters/guide.zh.md +18 -0
  247. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-provider-strategy/guide.i18n.yaml +16 -0
  248. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-provider-strategy/guide.md +20 -0
  249. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-provider-strategy/guide.zh.md +20 -0
  250. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/ssh-helper-launch/guide.i18n.yaml +16 -0
  251. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/ssh-helper-launch/guide.md +19 -0
  252. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/ssh-helper-launch/guide.zh.md +19 -0
  253. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/subagent-activations/guide.i18n.yaml +16 -0
  254. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/subagent-activations/guide.md +59 -0
  255. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/subagent-activations/guide.zh.md +59 -0
  256. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/team-direct-inbox/guide.i18n.yaml +16 -0
  257. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/team-direct-inbox/guide.md +21 -0
  258. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/team-direct-inbox/guide.zh.md +21 -0
  259. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/terminal-command-labels/guide.i18n.yaml +16 -0
  260. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/terminal-command-labels/guide.md +18 -0
  261. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/terminal-command-labels/guide.zh.md +18 -0
  262. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/tool-presentation-mode/guide.i18n.yaml +16 -0
  263. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/tool-presentation-mode/guide.md +21 -0
  264. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/tool-presentation-mode/guide.zh.md +21 -0
  265. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/web-listener-trust-config/guide.i18n.yaml +16 -0
  266. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/web-listener-trust-config/guide.md +36 -0
  267. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/web-listener-trust-config/guide.zh.md +36 -0
  268. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/working-directory/guide.i18n.yaml +16 -0
  269. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/working-directory/guide.md +25 -0
  270. package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/working-directory/guide.zh.md +25 -0
  271. package/references/official-docs/docs/user/guide/github-review.i18n.yaml +4 -4
  272. package/references/official-docs/docs/user/guide/github-review.md +7 -10
  273. package/references/official-docs/docs/user/guide/github-review.zh.md +7 -10
  274. package/references/official-docs/docs/user/guide/public-deployments.i18n.yaml +8 -8
  275. package/references/official-docs/docs/user/guide/public-deployments.md +9 -5
  276. package/references/official-docs/docs/user/guide/public-deployments.zh.md +9 -5
  277. package/references/official-docs/packages/README.md +4 -6
  278. package/references/official-docs/website-docs.ts +1 -0
  279. package/references/official-plugin-dev-skill.md +2 -2
  280. package/references/sources.md +1 -1
  281. package/scripts/build-llms-full.mjs +8 -0
  282. package/scripts/verify-kit.ps1 +8 -1
  283. package/templates/js/README-es.md +1 -1
  284. package/templates/js/README-hi.md +1 -1
  285. package/templates/js/README-pt.md +1 -1
  286. package/templates/js/README-zh.md +1 -1
  287. package/templates/js/README.md +1 -1
  288. package/templates/ts/README-es.md +1 -1
  289. package/templates/ts/README-hi.md +1 -1
  290. package/templates/ts/README-pt.md +1 -1
  291. package/templates/ts/README-zh.md +1 -1
  292. package/templates/ts/README.md +1 -1
@@ -529,7 +529,7 @@ interface LlmModelContext {
529
529
  }
530
530
  ```
531
531
 
532
- Reasoning effort is another exact-route capability. The core brands identifiers but does not enumerate their values; each adapter owns the ordered set, display names, and optional deployment default.
532
+ Reasoning effort is another exact-route capability. The core brands identifiers but does not enumerate their values; each adapter owns the choices in increasing effort order, display names, and optional deployment default. Ordering compares selectable controls, not predicted token use, cost, or latency.
533
533
 
534
534
  ```ts type-equiv
535
535
  /** Adapter-owned identifier for one model's selectable reasoning effort. */
@@ -551,7 +551,7 @@ interface LlmReasoningEffortInfo {
551
551
  ```ts type-equiv
552
552
  /** Selectable reasoning efforts for one exact provider/model route. */
553
553
  interface LlmModelReasoningInfo {
554
- /** Supported efforts in adapter-preferred display order. */
554
+ /** Supported efforts from least to greatest selectable reasoning effort, not predicted token use or latency. */
555
555
  efforts: readonly LlmReasoningEffortInfo[]
556
556
  /**
557
557
  * Adapter-configured default materialized into requests when callers omit
@@ -634,8 +634,8 @@ interface GenerateOptions {
634
634
  sessionId?: Branded<'SessionId'>
635
635
  /**
636
636
  * Provider-neutral classification for an auxiliary model call. Adapters may
637
- * map the purpose to model-hidden transport metadata or purpose-specific
638
- * generation policy. Ordinary conversation requests leave it unset.
637
+ * map the purpose to model-hidden transport metadata. Ordinary conversation
638
+ * requests leave it unset.
639
639
  */
640
640
  purpose?: 'compaction' | 'session-title'
641
641
  }
@@ -744,6 +744,16 @@ On the wire, a loop-built request is the derived history alone: the rendered pro
744
744
 
745
745
  FIXME(call-config-shape): revisit which remaining fields are genuinely epoch-level for cache purposes (`model` and the model-owned reasoning effort are explicit; the sampling scalars sit here out of caution).
746
746
 
747
+ ```ts type-equiv
748
+ /** Concrete generation settings; omitted controls use the selected route's defaults. */
749
+ interface LlmCallControls {
750
+ reasoningEffort?: ReasoningEffortId
751
+ temperature?: number
752
+ maxTokens?: number
753
+ stop?: string[]
754
+ }
755
+ ```
756
+
747
757
  ```ts type-equiv
748
758
  /**
749
759
  * Provider, model, reasoning effort, and sampling scalars of one conversation's
@@ -751,16 +761,28 @@ FIXME(call-config-shape): revisit which remaining fields are genuinely epoch-lev
751
761
  * the loop builds requests from the logged header rather than accepting these
752
762
  * per call.
753
763
  */
754
- interface LlmCallConfig {
764
+ interface LlmCallConfig extends LlmCallControls {
755
765
  provider: string
756
766
  model: string
757
- reasoningEffort?: ReasoningEffortId
758
- temperature?: number
759
- maxTokens?: number
760
- stop?: string[]
761
767
  }
762
768
  ```
763
769
 
770
+ ```ts type-equiv
771
+ /**
772
+ * Synchronous, pure configuration of one call before defaults and validation.
773
+ * Compose functions in the desired order; later writes replace earlier ones.
774
+ * The returned controls cannot change the captured route. Errors reject
775
+ * preparation before dispatch; only the resolved configuration is recordable.
776
+ * @param controls - detached, deeply frozen proposed controls, without defaults.
777
+ * @param model - detached, deeply frozen metadata from the captured adapter generation.
778
+ * @returns concrete controls; omitted fields receive the route's defaults.
779
+ */
780
+ type ConfigureCall = (
781
+ controls: Readonly<LlmCallControls>,
782
+ model: Readonly<LlmResolvedModelInfo>,
783
+ ) => LlmCallControls
784
+ ```
785
+
764
786
  ```ts type-equiv
765
787
  /**
766
788
  * Effective config fields supplied by exact-model adapter resolution rather
@@ -774,7 +796,7 @@ interface LlmCallConfigAdapterDefaults {
774
796
 
775
797
  ## Official DeepSeek request extensions
776
798
 
777
- `ctx.deepseekLlmApiExtensions` is the provider-specific registry for additive top-level fields on `deepseek-official` requests. Contributor plugins use `register(field, provider)` to claim one field; the adapter calls `prepare(request)` after serializing its base body and merges the returned fields before HTTP. The prepared `accept()` transaction runs after 2xx, so a contributor can commit delivery state without treating a transport or provider rejection as acceptance. Preparation, collision, and acceptance failures use `REQUEST_EXTENSION` and fail the model request. A merged body that fails to serialize is sent without extension fields; acceptance is skipped and the provider plugin logs the omitted field names.
799
+ `ctx.deepseekLlmApiExtensions` is the provider-specific registry for additive top-level fields on `deepseek-official` requests. Contributor plugins use `register(field, provider)` to claim one field; the adapter calls `prepare(request)` after serializing its base body and merges the returned fields before HTTP. The prepared `accept()` transaction runs after 2xx, so a contributor can commit delivery state without treating a transport or provider rejection as acceptance. A contributor whose preparation throws is logged and omitted from that request, and an acceptance failure is logged without failing the request; a base-field collision uses `REQUEST_EXTENSION` and fails the model request. A merged body that fails to serialize is sent without extension fields; acceptance is skipped and the provider plugin logs the omitted field names.
778
800
 
779
801
  The [wire reference](../deepseek-llm-api-wire-extensions.md) defines the exact request headers, extension transaction, field versions, and receiver obligations. The shipped composition registers [`dsh_session_log`](../../packages/session/session-log-deepseek/README.md) as a lossless incremental canonical-log suffix and [`dsh_plugin_packages`](../../packages/llm/plugin-package-inventory-deepseek/README.md) as the complete active Loader-backed package set. These fields remain outside model messages and are absent from the pi-ai adapter path.
780
802
 
@@ -909,8 +931,9 @@ register<K extends keyof DeepSeekLlmApiExtensionMap>( field: K, provider: DeepSe
909
931
 
910
932
  /**
911
933
  * Prepare every currently registered field from one immutable base request.
912
- * Preparation failures reject before HTTP dispatch. Field values are cloned and frozen;
913
- * providers retain no mutable alias to the outgoing request.
934
+ * A provider whose preparation throws, or whose value cannot be cloned, is omitted
935
+ * from this request; the first such failure per field is logged. Only cancellation rejects. Field values are cloned
936
+ * and frozen; providers retain no mutable alias to the outgoing request.
914
937
  * @param request - exact serialized request facts before extension fields.
915
938
  * @returns detached fields and their idempotent joint acceptance transaction.
916
939
  */
@@ -1054,11 +1077,15 @@ async resolveCallConfig(config: LlmCallConfig, signal?: AbortSignal): Promise<Ll
1054
1077
  * Resolve one call under its current adapter registration. The returned
1055
1078
  * one-shot handle keeps that registration across header logging and dispatch,
1056
1079
  * so HMR cannot combine one adapter's capability result with another adapter.
1057
- * @param config - provider/model route and optional request controls.
1080
+ * An optional synchronous callback selects concrete controls using captured
1081
+ * model metadata. Defaults and validation apply to its result. Callback
1082
+ * failures and cancellation reject preparation before dispatch.
1083
+ * @param config - provider/model route and optional concrete request controls.
1058
1084
  * @param signal - optional cancellation for adapter-owned capability lookup.
1085
+ * @param configure - pure control selection, called once before defaults and validation.
1059
1086
  * @returns a prepared config and its registration-bound stream entry point.
1060
1087
  */
1061
- async prepareCall(config: LlmCallConfig, signal?: AbortSignal): Promise<PreparedLlmCall>
1088
+ async prepareCall( config: LlmCallConfig, signal?: AbortSignal, configure?: ConfigureCall, ): Promise<PreparedLlmCall>
1062
1089
 
1063
1090
  /**
1064
1091
  * Stream one model call as raw chunks (token-level deltas). Replay state is
@@ -535,7 +535,7 @@ interface LlmModelContext {
535
535
  }
536
536
  ```
537
537
 
538
- 推理强度是另一项针对确切路由的能力。核心为标识符添加品牌类型,但不枚举其值;有序集合、展示名称和可选的部署默认值均由各适配器持有。
538
+ 推理强度是另一项确切路由能力。核心为标识符添加品牌类型,但不枚举其值;每个适配器负责按强度递增排列的选项、显示名称与可选部署默认值。该顺序比较可选控制,不预测 token 用量、成本或延迟。
539
539
 
540
540
  ```ts type-equiv
541
541
  /** Adapter-owned identifier for one model's selectable reasoning effort. */
@@ -557,7 +557,7 @@ interface LlmReasoningEffortInfo {
557
557
  ```ts type-equiv
558
558
  /** Selectable reasoning efforts for one exact provider/model route. */
559
559
  interface LlmModelReasoningInfo {
560
- /** Supported efforts in adapter-preferred display order. */
560
+ /** Supported efforts from least to greatest selectable reasoning effort, not predicted token use or latency. */
561
561
  efforts: readonly LlmReasoningEffortInfo[]
562
562
  /**
563
563
  * Adapter-configured default materialized into requests when callers omit
@@ -640,8 +640,8 @@ interface GenerateOptions {
640
640
  sessionId?: Branded<'SessionId'>
641
641
  /**
642
642
  * Provider-neutral classification for an auxiliary model call. Adapters may
643
- * map the purpose to model-hidden transport metadata or purpose-specific
644
- * generation policy. Ordinary conversation requests leave it unset.
643
+ * map the purpose to model-hidden transport metadata. Ordinary conversation
644
+ * requests leave it unset.
645
645
  */
646
646
  purpose?: 'compaction' | 'session-title'
647
647
  }
@@ -750,6 +750,16 @@ interface LlmDiscoveredModel {
750
750
 
751
751
  FIXME(call-config-shape):重新审视其余哪些字段出于缓存目的确实属于 epoch 层级(`model` 和模型持有的推理强度已明确属于;采样标量目前出于谨慎保留在此)。
752
752
 
753
+ ```ts type-equiv
754
+ /** Concrete generation settings; omitted controls use the selected route's defaults. */
755
+ interface LlmCallControls {
756
+ reasoningEffort?: ReasoningEffortId
757
+ temperature?: number
758
+ maxTokens?: number
759
+ stop?: string[]
760
+ }
761
+ ```
762
+
753
763
  ```ts type-equiv
754
764
  /**
755
765
  * Provider, model, reasoning effort, and sampling scalars of one conversation's
@@ -757,16 +767,28 @@ FIXME(call-config-shape):重新审视其余哪些字段出于缓存目的确
757
767
  * the loop builds requests from the logged header rather than accepting these
758
768
  * per call.
759
769
  */
760
- interface LlmCallConfig {
770
+ interface LlmCallConfig extends LlmCallControls {
761
771
  provider: string
762
772
  model: string
763
- reasoningEffort?: ReasoningEffortId
764
- temperature?: number
765
- maxTokens?: number
766
- stop?: string[]
767
773
  }
768
774
  ```
769
775
 
776
+ ```ts type-equiv
777
+ /**
778
+ * Synchronous, pure configuration of one call before defaults and validation.
779
+ * Compose functions in the desired order; later writes replace earlier ones.
780
+ * The returned controls cannot change the captured route. Errors reject
781
+ * preparation before dispatch; only the resolved configuration is recordable.
782
+ * @param controls - detached, deeply frozen proposed controls, without defaults.
783
+ * @param model - detached, deeply frozen metadata from the captured adapter generation.
784
+ * @returns concrete controls; omitted fields receive the route's defaults.
785
+ */
786
+ type ConfigureCall = (
787
+ controls: Readonly<LlmCallControls>,
788
+ model: Readonly<LlmResolvedModelInfo>,
789
+ ) => LlmCallControls
790
+ ```
791
+
770
792
  ```ts type-equiv
771
793
  /**
772
794
  * Effective config fields supplied by exact-model adapter resolution rather
@@ -780,7 +802,7 @@ interface LlmCallConfigAdapterDefaults {
780
802
 
781
803
  ## DeepSeek 官方请求扩展
782
804
 
783
- `ctx.deepseekLlmApiExtensions` 是用于向 `deepseek-official` 请求添加顶层字段的提供方特定注册表。贡献插件通过 `register(field, provider)` 认领一个字段;适配器在序列化基础正文后调用 `prepare(request)`,并在 HTTP 前合并返回字段。已准备的 `accept()` 事务会在 2xx 后运行,因此贡献方可以提交交付状态,而不会把传输失败或提供方拒绝当作接受。准备、冲突与接受失败会使用 `REQUEST_EXTENSION`,并使模型请求失败。合并后的正文无法序列化时,请求不带扩展字段发出,跳过接受,并由提供方插件记录被省略的字段名。
805
+ `ctx.deepseekLlmApiExtensions` 是用于向 `deepseek-official` 请求添加顶层字段的提供方特定注册表。贡献插件通过 `register(field, provider)` 认领一个字段;适配器在序列化基础正文后调用 `prepare(request)`,并在 HTTP 前合并返回字段。已准备的 `accept()` 事务会在 2xx 后运行,因此贡献方可以提交交付状态,而不会把传输失败或提供方拒绝当作接受。贡献方准备时抛错会被记录并在该次请求中省略,接受失败只记录告警而不使请求失败;与基础字段冲突时使用 `REQUEST_EXTENSION` 并使模型请求失败。合并后的正文无法序列化时,请求不带扩展字段发出,跳过接受,并由提供方插件记录被省略的字段名。
784
806
 
785
807
  [协议参考](../deepseek-llm-api-wire-extensions.zh.md)定义确切的请求标头、扩展事务、字段版本和接收方义务。随附组合会将 [`dsh_session_log`](../../packages/session/session-log-deepseek/README.zh.md) 注册为无损增量权威日志后缀,并将 [`dsh_plugin_packages`](../../packages/llm/plugin-package-inventory-deepseek/README.zh.md) 注册为完整存活 Loader 包集合。这些字段仍位于模型消息之外,也不会进入 pi-ai 适配器路径。
786
808
 
@@ -915,8 +937,9 @@ register<K extends keyof DeepSeekLlmApiExtensionMap>( field: K, provider: DeepSe
915
937
 
916
938
  /**
917
939
  * Prepare every currently registered field from one immutable base request.
918
- * Preparation failures reject before HTTP dispatch. Field values are cloned and frozen;
919
- * providers retain no mutable alias to the outgoing request.
940
+ * A provider whose preparation throws, or whose value cannot be cloned, is omitted
941
+ * from this request; the first such failure per field is logged. Only cancellation rejects. Field values are cloned
942
+ * and frozen; providers retain no mutable alias to the outgoing request.
920
943
  * @param request - exact serialized request facts before extension fields.
921
944
  * @returns detached fields and their idempotent joint acceptance transaction.
922
945
  */
@@ -1060,11 +1083,15 @@ async resolveCallConfig(config: LlmCallConfig, signal?: AbortSignal): Promise<Ll
1060
1083
  * Resolve one call under its current adapter registration. The returned
1061
1084
  * one-shot handle keeps that registration across header logging and dispatch,
1062
1085
  * so HMR cannot combine one adapter's capability result with another adapter.
1063
- * @param config - provider/model route and optional request controls.
1086
+ * An optional synchronous callback selects concrete controls using captured
1087
+ * model metadata. Defaults and validation apply to its result. Callback
1088
+ * failures and cancellation reject preparation before dispatch.
1089
+ * @param config - provider/model route and optional concrete request controls.
1064
1090
  * @param signal - optional cancellation for adapter-owned capability lookup.
1091
+ * @param configure - pure control selection, called once before defaults and validation.
1065
1092
  * @returns a prepared config and its registration-bound stream entry point.
1066
1093
  */
1067
- async prepareCall(config: LlmCallConfig, signal?: AbortSignal): Promise<PreparedLlmCall>
1094
+ async prepareCall( config: LlmCallConfig, signal?: AbortSignal, configure?: ConfigureCall, ): Promise<PreparedLlmCall>
1068
1095
 
1069
1096
  /**
1070
1097
  * Stream one model call as raw chunks (token-level deltas). Replay state is
@@ -311,6 +311,8 @@ type SessionPersistenceRevision = Branded<'SessionPersistenceRevision'>
311
311
  interface SessionPersistenceSnapshot {
312
312
  /** Detached metadata for one stored session. */
313
313
  readonly header: SessionHeader
314
+ /** Header-only format classification; absent without versioned artifact metadata. */
315
+ readonly formatStatus?: 'current' | 'migration-required'
314
316
  /** Opaque change token; see {@link SessionPersistence.stat}. */
315
317
  readonly revision: SessionPersistenceRevision
316
318
  /** Logical event count, when the backend can provide it cheaply from metadata; otherwise absent. */
@@ -311,6 +311,8 @@ type SessionPersistenceRevision = Branded<'SessionPersistenceRevision'>
311
311
  interface SessionPersistenceSnapshot {
312
312
  /** Detached metadata for one stored session. */
313
313
  readonly header: SessionHeader
314
+ /** Header-only format classification; absent without versioned artifact metadata. */
315
+ readonly formatStatus?: 'current' | 'migration-required'
314
316
  /** Opaque change token; see {@link SessionPersistence.stat}. */
315
317
  readonly revision: SessionPersistenceRevision
316
318
  /** Logical event count, when the backend can provide it cheaply from metadata; otherwise absent. */
@@ -15,8 +15,8 @@
15
15
  en: ee04468005fae8e1
16
16
  zh: 1347d554102951f2
17
17
  /plan-mode/the-exit-tool-and-the-plan-command:
18
- en: ecf7fe520658b10f
19
- zh: 9d6d2c4729e9a47e
18
+ en: b5bbc440552d7ade
19
+ zh: 17fb1cfed1bc48ef
20
20
  /plan-mode/the-service:
21
21
  en: 07c3eec12e0dc75c
22
22
  zh: 183d73f6672e2c5a
@@ -30,7 +30,7 @@ A missing, blank, or non-string `section` and any unknown key fail at plugin loa
30
30
 
31
31
  ## The exit tool and the `/plan` command
32
32
 
33
- [`exit_plan_mode`](../tool-catalog.md#deepseek-aidsh-plan-mode) stays registered while plan mode is inactive, so entering or leaving plan mode changes only the prompt section, never the request tool catalog; execution outside plan mode fails. In plan mode it requires a complete markdown plan starting with a `#` heading and presents it for review through the [user-questions seam](user-questions.md). Approval returns `{ approved: true }` and records a silent (non-narrated) pending exit that is appended at the next accepted in-turn pre-step. Plan guidance therefore remains active for the rest of the assistant's current tool batch, and the tool result itself reports the transition. Keep-planning is a failed call carrying the user's feedback, so the model revises and presents again; a missing interaction channel and a service reload during review also fail the call rather than silently leaving plan mode.
33
+ [`exit_plan_mode`](../tool-catalog.md#deepseek-aidsh-plan-mode) stays registered while plan mode is inactive, so entering or leaving plan mode changes only the prompt section, never the request tool catalog; execution outside plan mode fails. In plan mode it requires a complete markdown plan starting with a `#` heading and presents it for review through the [user-questions seam](user-questions.md). Approval returns `{ approved: true }` and records a silent (non-narrated) pending exit that is appended at the next accepted in-turn pre-step. Plan guidance therefore remains active for the rest of the assistant's current tool batch, and the tool result itself reports the transition. Keep-planning is a failed call carrying the user's feedback, so the model revises and presents again. A dismissed review returns `{ approved: false }` and concludes the turn, so plan mode stays active until the user's next message. A missing interaction channel and a service reload during review also fail the call rather than silently leaving plan mode.
34
34
 
35
35
  When [`ctx.commands`](commands.md) is composed, the plugin registers `/plan [off|message]`: bare `/plan` selects plan mode, any other non-empty message selects it and then submits the text through `agent.steer()` so it becomes the next step's ordinary logged user message under plan guidance, and the exact argument `off` selects inactive, which also cancels a pending entry before it is appended and becomes visible to a request.
36
36
 
@@ -30,7 +30,7 @@ interface PlanModeConfig {
30
30
 
31
31
  ## 退出工具与 `/plan` 命令
32
32
 
33
- [`exit_plan_mode`](../tool-catalog.zh.md#deepseek-aidsh-plan-mode) 在计划模式未激活时仍保持注册,因此进入或离开计划模式只改变提示词段落,绝不改变请求的工具目录;在计划模式之外执行会失败。在计划模式中,它要求一份以 `#` 标题开头的完整 markdown 计划,并通过[用户交互 seam](user-questions.zh.md) 呈交评审。批准返回 `{ approved: true }`,并记录一个静默(不叙述)的待生效退出,由下一个被接受的轮内 pre-step 追加。因此,计划指引在 assistant 当前这批工具调用的剩余部分继续生效,而工具结果本身会报告这次转换。「继续规划」则是一次携带用户反馈的失败调用,模型据此修订并再次呈交;评审期间交互通道缺失或服务重载同样使调用失败,而不是静默离开计划模式。
33
+ [`exit_plan_mode`](../tool-catalog.zh.md#deepseek-aidsh-plan-mode) 在计划模式未激活时仍保持注册,因此进入或离开计划模式只改变提示词段落,绝不改变请求的工具目录;在计划模式之外执行会失败。在计划模式中,它要求一份以 `#` 标题开头的完整 markdown 计划,并通过[用户交互 seam](user-questions.zh.md) 呈交评审。批准返回 `{ approved: true }`,并记录一个静默(不叙述)的待生效退出,由下一个被接受的轮内 pre-step 追加。因此,计划指引在 assistant 当前这批工具调用的剩余部分继续生效,而工具结果本身会报告这次转换。「继续规划」则是一次携带用户反馈的失败调用,模型据此修订并再次呈交。放弃评审返回 `{ approved: false }` 并结束当前轮次,计划模式保持激活,直到用户发出下一条消息。评审期间交互通道缺失或服务重载同样使调用失败,而不是静默离开计划模式。
34
34
 
35
35
  当 [`ctx.commands`](commands.zh.md) 被组合时,插件注册 `/plan [off|message]`:单独的 `/plan` 选择计划模式;任何其他非空消息先选择计划模式,再通过 `agent.steer()` 提交该文本,使其在计划指引下成为下一步骤的普通已记录用户消息;确切参数 `off` 选择未激活,这还会在待生效条目被追加并对请求可见之前将其取消。
36
36
 
@@ -24,6 +24,8 @@ interface SessionRecord {
24
24
  live: boolean
25
25
  /** Whether the active persistence backend currently lists the id, including a created-but-unmaterialized session it already observes. */
26
26
  persisted: boolean
27
+ /** Current for live Sessions; otherwise the persistence format status when reported. */
28
+ formatStatus?: 'current' | 'migration-required'
27
29
  }
28
30
  ```
29
31
 
@@ -24,6 +24,8 @@ interface SessionRecord {
24
24
  live: boolean
25
25
  /** Whether the active persistence backend currently lists the id, including a created-but-unmaterialized session it already observes. */
26
26
  persisted: boolean
27
+ /** Current for live Sessions; otherwise the persistence format status when reported. */
28
+ formatStatus?: 'current' | 'migration-required'
27
29
  }
28
30
  ```
29
31
 
@@ -3,14 +3,14 @@
3
3
  # After editing either side, bring the other along and re-record with:
4
4
  # pnpm run verify-translation-pairing --write docs/subsystems/session-title.md
5
5
  /session-titles:
6
- en: a0ad8d5f000e5258
7
- zh: 9527bc25711342de
6
+ en: 40ede027d4f62b35
7
+ zh: 0efd7cb0710a0ed9
8
8
  /session-titles/durable-title-state:
9
9
  en: c6be2d86647daa6f
10
10
  zh: fb259d9fb4738f39
11
11
  /session-titles/auxiliary-request-record:
12
- en: 4942bec7a7d1d9de
13
- zh: 9edfc1c908577c37
12
+ en: e5d5045ddfa7e771
13
+ zh: 8c989ef59853cce4
14
14
  /session-titles/provider-input-and-output:
15
- en: 886e036e442ae06a
16
- zh: 49f95782b8aa9bf3
15
+ en: 28ee84e62db773f0
16
+ zh: 93beca6fbcd02c4e
@@ -2,7 +2,7 @@
2
2
 
3
3
  English | [中文](session-title.zh.md)
4
4
 
5
- Durable latest-wins title state and the optional asynchronous provider vocabulary owned by [`@deepseek-ai/dsh-session-title`](../../packages/session/session-title). The shared LLM helper owns the exact auxiliary request record. Package READMEs own timing, fallback, failure, and fork behavior; the generated [persistence catalog](../persistence-catalog.md) owns the complete event declarations.
5
+ Durable latest-wins title state and the optional asynchronous provider vocabulary owned by [`@deepseek-ai/dsh-session-title`](../../packages/session/session-title). The shared execution module owns the exact auxiliary request record. Package READMEs own timing, fallback, failure, and fork behavior; the generated [persistence catalog](../persistence-catalog.md) owns the complete event declarations.
6
6
 
7
7
  Sources: [`packages/session/session-title/src/index.ts`](../../packages/session/session-title/src/index.ts), [`packages/session/session-title-llm/src/index.ts`](../../packages/session/session-title-llm/src/index.ts)
8
8
 
@@ -64,7 +64,7 @@ interface SessionTitleSnapshot extends SessionTitleEventData {
64
64
 
65
65
  ## Auxiliary request record
66
66
 
67
- The shared LLM helper records each validated, dispatchable title request before calling the model. The payload reproduces the model-visible system and message input, routing, output limit, provider ownership, and source-message attribution even when generation later fails.
67
+ The shared execution module records each validated, dispatchable title request before calling the model. The payload reproduces the model-visible system and message input, routing, output limit, resolved reasoning effort, provider ownership, and source-message attribution even when generation later fails.
68
68
 
69
69
  ```ts type-equiv
70
70
  /** Exact model-visible request recorded before one auxiliary title dispatch. */
@@ -81,12 +81,14 @@ interface SessionTitleLlmRequestEventData {
81
81
  readonly messages: Message[]
82
82
  /** Exact auxiliary output-token cap. */
83
83
  readonly maxTokens: number
84
+ /** Resolved reasoning effort when recorded; older requests can omit it. */
85
+ readonly reasoningEffort?: ReasoningEffortId
84
86
  }
85
87
  ```
86
88
 
87
89
  ## Provider input and output
88
90
 
89
- The service snapshots eligible messages through one revision. A provider returns only seqs from that request; service-owned acceptance verifies ordering, normalizes the title, enforces the byte limit, and appends the title with its source-message seqs and source kind.
91
+ The service snapshots eligible messages through one revision and, immediately before each provider call, the latest accepted title including the fallback it just ensured. A provider returns only seqs from that request; service-owned acceptance verifies ordering, normalizes the title, enforces the byte limit, and appends the title with its source-message seqs and source kind.
90
92
 
91
93
  ```ts type-equiv
92
94
  /** One eligible human text message exposed to title providers. */
@@ -112,6 +114,12 @@ interface SessionTitleProviderRequest {
112
114
  readonly messages: readonly SessionTitleUserMessage[]
113
115
  /** Exact current logged main-request route, when one has been recorded. */
114
116
  readonly route?: SessionTitleModelIdentity
117
+ /**
118
+ * Latest accepted title captured at invocation, including an accepted
119
+ * fallback whose event may follow the last eligible message. Absent before
120
+ * any title is accepted. The provider decides whether and how to use it.
121
+ */
122
+ readonly currentTitle?: SessionTitleSnapshot
115
123
  /** Cancellation for supersession, disposal, timeout composition, or the explicit caller. */
116
124
  readonly signal: AbortSignal
117
125
  }
@@ -138,7 +146,7 @@ interface SessionTitleProvider {
138
146
  readonly automatic: SessionTitleAutomaticMode
139
147
  /**
140
148
  * Produce one title revision.
141
- * @param request - message snapshot, current route, session, and cancellation.
149
+ * @param request - message snapshot, current title, current route, session, and cancellation.
142
150
  * @returns proposed title plus exact input seqs and the optional provider/model route used to generate it.
143
151
  */
144
152
  generate(request: SessionTitleProviderRequest): Promise<SessionTitleProviderResult>
@@ -191,7 +199,8 @@ async refresh(session: Session, signal?: AbortSignal): Promise<SessionTitleSnaps
191
199
 
192
200
  /**
193
201
  * Register the sole optional title provider. Disposal aborts its pending and
194
- * active work before another provider may register.
202
+ * active work; a replacement may register once disposal has started, and the
203
+ * closing provider's late results never commit.
195
204
  * @param provider - provider identity, cadence, and generation function.
196
205
  * @returns exact Cordis effect disposer, which settles after active calls quiesce.
197
206
  */
@@ -2,7 +2,7 @@
2
2
 
3
3
  [English](session-title.md) | 中文
4
4
 
5
- [`@deepseek-ai/dsh-session-title`](../../packages/session/session-title) 所拥有的持久、后写覆盖的标题状态与可选异步提供方词汇。共享 LLM(大语言模型)辅助组件负责精确的辅助请求记录。各包 README 负责时序、回退、失败与 fork 行为;生成的[持久化日志事件目录](../persistence-catalog.zh.md)负责完整的事件声明。
5
+ [`@deepseek-ai/dsh-session-title`](../../packages/session/session-title) 所拥有的持久、后写覆盖的标题状态与可选异步提供方词汇。共享执行模块负责精确的辅助请求记录。各包 README 负责时序、回退、失败与 fork 行为;生成的[持久化日志事件目录](../persistence-catalog.zh.md)负责完整的事件声明。
6
6
 
7
7
  源码:[`packages/session/session-title/src/index.ts`](../../packages/session/session-title/src/index.ts)、[`packages/session/session-title-llm/src/index.ts`](../../packages/session/session-title-llm/src/index.ts)
8
8
 
@@ -64,7 +64,7 @@ interface SessionTitleSnapshot extends SessionTitleEventData {
64
64
 
65
65
  ## 辅助请求记录
66
66
 
67
- 共享 LLM 辅助组件会在调用模型前,记录每一项已经过验证且可分发的标题请求。即使后续生成失败,载荷仍会复现模型可见的系统输入与消息输入、路由、输出上限、提供方归属和源消息归因。
67
+ 共享执行模块会在调用模型前,记录每一项已经过验证且可分发的标题请求。即使后续生成失败,载荷仍会复现模型可见的系统输入与消息输入、路由、输出上限、解析后的推理强度、提供方归属和源消息归因。
68
68
 
69
69
  ```ts type-equiv
70
70
  /** Exact model-visible request recorded before one auxiliary title dispatch. */
@@ -81,12 +81,14 @@ interface SessionTitleLlmRequestEventData {
81
81
  readonly messages: Message[]
82
82
  /** Exact auxiliary output-token cap. */
83
83
  readonly maxTokens: number
84
+ /** Resolved reasoning effort when recorded; older requests can omit it. */
85
+ readonly reasoningEffort?: ReasoningEffortId
84
86
  }
85
87
  ```
86
88
 
87
89
  ## 提供方输入与输出
88
90
 
89
- 服务会对截至某一修订的合格消息创建快照。提供方返回的 seq 仅可来自该请求;由服务负责的接纳流程会验证顺序、规范化标题、强制执行字节上限,并追加标题及其来源消息 seq 和来源类型。
91
+ 服务会对截至某一修订的合格消息、以及在每次提供方调用前刚刚确保的回退和最新已接纳标题创建快照。提供方返回的 seq 仅可来自该请求;由服务负责的接纳流程会验证顺序、规范化标题、强制执行字节上限,并追加标题及其来源消息 seq 和来源类型。
90
92
 
91
93
  ```ts type-equiv
92
94
  /** One eligible human text message exposed to title providers. */
@@ -112,6 +114,12 @@ interface SessionTitleProviderRequest {
112
114
  readonly messages: readonly SessionTitleUserMessage[]
113
115
  /** Exact current logged main-request route, when one has been recorded. */
114
116
  readonly route?: SessionTitleModelIdentity
117
+ /**
118
+ * Latest accepted title captured at invocation, including an accepted
119
+ * fallback whose event may follow the last eligible message. Absent before
120
+ * any title is accepted. The provider decides whether and how to use it.
121
+ */
122
+ readonly currentTitle?: SessionTitleSnapshot
115
123
  /** Cancellation for supersession, disposal, timeout composition, or the explicit caller. */
116
124
  readonly signal: AbortSignal
117
125
  }
@@ -138,7 +146,7 @@ interface SessionTitleProvider {
138
146
  readonly automatic: SessionTitleAutomaticMode
139
147
  /**
140
148
  * Produce one title revision.
141
- * @param request - message snapshot, current route, session, and cancellation.
149
+ * @param request - message snapshot, current title, current route, session, and cancellation.
142
150
  * @returns proposed title plus exact input seqs and the optional provider/model route used to generate it.
143
151
  */
144
152
  generate(request: SessionTitleProviderRequest): Promise<SessionTitleProviderResult>
@@ -191,7 +199,8 @@ async refresh(session: Session, signal?: AbortSignal): Promise<SessionTitleSnaps
191
199
 
192
200
  /**
193
201
  * Register the sole optional title provider. Disposal aborts its pending and
194
- * active work before another provider may register.
202
+ * active work; a replacement may register once disposal has started, and the
203
+ * closing provider's late results never commit.
195
204
  * @param provider - provider identity, cadence, and generation function.
196
205
  * @returns exact Cordis effect disposer, which settles after active calls quiesce.
197
206
  */
@@ -59,6 +59,9 @@
59
59
  /sessions/plugin-contributed-log-only-events:
60
60
  en: 0a014a755b75449f
61
61
  zh: 9d59d74490a1bcb2
62
+ /sessions/plugin-contributed-log-only-events/plugin-records:
63
+ en: 15102fd0b937fbf3
64
+ zh: 37ebf1d715db097c
62
65
  /sessions/durability-contract:
63
66
  en: 62e3e4fbcba292a3
64
67
  zh: cb6dcaf531621e85
@@ -752,6 +752,49 @@ When several events in one plugin-owned family assemble into one Web Client Conv
752
752
 
753
753
  The hook bridges' `hook/invoked` / `hook/result` pairs (from `@deepseek-ai/dsh-hook-protocol`) correlate by `handlerId`. `UserPromptSubmit`, `PreToolUse`, `PostToolUse`, and `Stop` fire inside the loop's open turn, so their `hook/*` records are turn-enclosed by construction. `SessionStart` gets no `hook/*` record because it runs before turn 1; its context remains pending in the inbox until a waking delivery opens a turn.
754
754
 
755
+ ### Plugin records
756
+
757
+ Experimental packages declare plugin-owned state in `PluginRecordMap`: `appendPluginRecord()` uses each declaration to type its name and payload, and appends an event marked `ignorable: true` in the `plugin:` namespace. `pluginRecordOf()` reads stored records with unknown payloads regardless of current declarations. The [experimental persistence catalog](../experimental-persistence-catalog.md) lists current declarations. The [package README](../../packages/core/session/README.md#write-experimental-plugin-records) owns the caller restriction, retention, and read path.
758
+
759
+ ```ts type-equiv
760
+ /**
761
+ * Event type of an experimental plugin record: `plugin:` followed by
762
+ * slash-separated segments of lowercase letters, digits, `.`, `_`, and `-`,
763
+ * each starting with a letter or digit. A record type is never a
764
+ * {@link SessionEventMap} member.
765
+ */
766
+ type PluginRecordType = `plugin:${string}`
767
+ ```
768
+
769
+ ```ts type-equiv
770
+ /**
771
+ * Payloads written by experimental packages, keyed by their `plugin:` record
772
+ * names. Packages augment this map to type writes and enter the current plugin
773
+ * record catalog; these declarations do not enter {@link SessionEventMap} or
774
+ * released persistence schemas. Stored records still require owner validation.
775
+ */
776
+ interface PluginRecordMap {}
777
+ ```
778
+
779
+ ```ts type-equiv
780
+ /**
781
+ * One committed experimental plugin record, read from the log by
782
+ * `pluginRecordOf`. The record's owner validates `data` before use, because a
783
+ * restored record carries whatever JSON an earlier build of its owner wrote,
784
+ * or a V3 event that a format migration renamed into the `plugin:` namespace held.
785
+ */
786
+ interface PluginRecord {
787
+ /** The record type, chosen by the owning plugin. */
788
+ readonly type: PluginRecordType
789
+ /** The record's position in the Session log. */
790
+ readonly seq: SessionSeq
791
+ /** Unix epoch milliseconds at append. */
792
+ readonly time: number
793
+ /** The JSON payload as committed. */
794
+ readonly data: unknown
795
+ }
796
+ ```
797
+
755
798
  ## Durability contract
756
799
 
757
800
  What a persistence backend relies on: the durable log persists every event losslessly, and every Assistant attempt is one `assistant/message` or `assistant/attempt` whose embedded compact stream preserves the original timed chunks. `seq` stays contiguous across these settlements and all interleaved events. A backend may choose its own storage framing for an event batch as long as a handle's `read()` returns the exact appended events; current JSONL writes one row per event (see [persistence.md](persistence.md)). All `event.data` must be JSON-serializable; `Session.append` enforces this at the source (throwing on non-serializable data), so a bad event never enters the log and `session.snapshotEvents()` always equals what a backend can persist. Adding an event type that carries non-serializable data, corrupts core execution nesting, or violates its owner's declared relation is a breaking change to the on-disk format.
@@ -879,10 +922,10 @@ workspaceDesktop(): { name: string; available: boolean; fileManager: 'finder' |
879
922
  * Fork one cold-readable exact event prefix into a new Session. An omitted
880
923
  * boundary selects the latest completed-turn prefix; an open cut receives
881
924
  * synthetic fork closers.
882
- * @param request - source Session and optional exact inclusive event boundary.
925
+ * @param request - source Session, optional exact inclusive event boundary, and migration preflight choice.
883
926
  * @returns the new Session identity.
884
927
  */
885
- @Remote('fork') fork(request: SessionForkRequest): Promise<SessionForkValue>
928
+ @Remote('fork') async fork(request: SessionForkRequest): Promise<SessionForkValue>
886
929
 
887
930
  /**
888
931
  * Admit one prompt after explicitly resuming its Session.
@@ -931,10 +974,10 @@ workspaceDesktop(): { name: string; available: boolean; fileManager: 'finder' |
931
974
  @Remote({ mode: 'stream' }) follow(request: SessionFollowRequest, signal: AbortSignal): AsyncIterable<SessionFollowFrame>
932
975
 
933
976
  /**
934
- * Read all registered projections without activating an Agent.
977
+ * Read exact projections, returning cached hints only when migration is required.
935
978
  * @param request - Session whose current values are required.
936
- * @param signal - cancellation for the Session observation.
937
- * @returns complete baseline, or null when the Session does not exist.
979
+ * @param signal - cancellation for the Session read.
980
+ * @returns a sequenced baseline, cached hints when migration is deferred, or null when absent.
938
981
  */
939
982
  @Remote('projections') async projections(request: SessionProjectionsRequest, signal: AbortSignal): Promise<SessionProjectionsValue>
940
983