dsh-plugin-guide 0.3.1 → 0.3.3

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 (371) hide show
  1. package/README.es.md +1 -1
  2. package/README.hi.md +1 -1
  3. package/README.md +1 -1
  4. package/README.pt.md +1 -1
  5. package/README.zh.md +1 -1
  6. package/SKILL.md +1 -1
  7. package/dist/dsh-plugin-dev.js +5 -5
  8. package/guide/links.md +1 -1
  9. package/guide/plugin-dev-guide.md +1 -1
  10. package/guide/quick-reference.es.md +2 -2
  11. package/guide/quick-reference.hi.md +1 -1
  12. package/guide/quick-reference.md +2 -2
  13. package/guide/quick-reference.pt.md +2 -2
  14. package/guide/quick-reference.zh-CN.md +2 -2
  15. package/package.json +3 -3
  16. package/references/cordis-paper-and-community.md +1 -1
  17. package/references/official-docs/AGENTS.md +28 -23
  18. package/references/official-docs/README.i18n.yaml +2 -2
  19. package/references/official-docs/README.md +1 -1
  20. package/references/official-docs/README.zh.md +19 -9
  21. package/references/official-docs/SNAPSHOT.md +5 -5
  22. package/references/official-docs/THIRD_PARTY_NOTICES.md +36 -13
  23. package/references/official-docs/docs/AGENTS.md +4 -4
  24. package/references/official-docs/docs/agent-lifecycle.i18n.yaml +2 -2
  25. package/references/official-docs/docs/agent-lifecycle.md +1 -1
  26. package/references/official-docs/docs/agent-lifecycle.zh.md +2 -2
  27. package/references/official-docs/docs/api-gateway.i18n.yaml +2 -2
  28. package/references/official-docs/docs/api-gateway.md +8 -8
  29. package/references/official-docs/docs/api-gateway.zh.md +8 -8
  30. package/references/official-docs/docs/architecture.i18n.yaml +2 -2
  31. package/references/official-docs/docs/architecture.md +25 -8
  32. package/references/official-docs/docs/architecture.zh.md +38 -21
  33. package/references/official-docs/docs/capability-seams.i18n.yaml +2 -2
  34. package/references/official-docs/docs/capability-seams.md +134 -67
  35. package/references/official-docs/docs/capability-seams.zh.md +134 -67
  36. package/references/official-docs/docs/config-catalog.i18n.yaml +2 -2
  37. package/references/official-docs/docs/config-catalog.md +731 -403
  38. package/references/official-docs/docs/config-catalog.zh.md +747 -419
  39. package/references/official-docs/docs/cookbook/adding-a-package.i18n.yaml +2 -2
  40. package/references/official-docs/docs/cookbook/adding-a-package.md +3 -4
  41. package/references/official-docs/docs/cookbook/adding-a-package.zh.md +9 -8
  42. package/references/official-docs/docs/cookbook/{adding-a-conversation-node.i18n.yaml → adding-a-remote-api.i18n.yaml} +3 -3
  43. package/references/official-docs/docs/cookbook/adding-a-remote-api.md +197 -0
  44. package/references/official-docs/docs/cookbook/adding-a-remote-api.zh.md +197 -0
  45. package/references/official-docs/docs/cookbook/adding-a-settings-card.i18n.yaml +6 -0
  46. package/references/official-docs/docs/cookbook/adding-a-settings-card.md +102 -0
  47. package/references/official-docs/docs/cookbook/adding-a-settings-card.zh.md +102 -0
  48. package/references/official-docs/docs/cookbook/adding-a-tool.i18n.yaml +2 -2
  49. package/references/official-docs/docs/cookbook/adding-a-tool.md +11 -4
  50. package/references/official-docs/docs/cookbook/adding-a-tool.zh.md +16 -9
  51. package/references/official-docs/docs/cookbook/adding-a-vendored-package.i18n.yaml +2 -2
  52. package/references/official-docs/docs/cookbook/adding-a-vendored-package.md +2 -2
  53. package/references/official-docs/docs/cookbook/adding-a-vendored-package.zh.md +4 -4
  54. package/references/official-docs/docs/cookbook/adding-an-llm-adapter.i18n.yaml +2 -2
  55. package/references/official-docs/docs/cookbook/adding-an-llm-adapter.md +1 -1
  56. package/references/official-docs/docs/cookbook/adding-an-llm-adapter.zh.md +3 -3
  57. package/references/official-docs/docs/cookbook/extension-cookbook.i18n.yaml +2 -2
  58. package/references/official-docs/docs/cookbook/extension-cookbook.md +9 -8
  59. package/references/official-docs/docs/cookbook/extension-cookbook.zh.md +17 -14
  60. package/references/official-docs/docs/cookbook/maintaining-dsh-code-review.i18n.yaml +1 -1
  61. package/references/official-docs/docs/cookbook/maintaining-dsh-code-review.zh.md +1 -1
  62. package/references/official-docs/docs/cookbook/responding-to-pr-review-on-a-stack.i18n.yaml +1 -1
  63. package/references/official-docs/docs/cookbook/responding-to-pr-review-on-a-stack.zh.md +1 -1
  64. package/references/official-docs/docs/cordis-api/context.i18n.yaml +1 -1
  65. package/references/official-docs/docs/cordis-api/context.zh.md +1 -1
  66. package/references/official-docs/docs/cordis-api/events.i18n.yaml +1 -1
  67. package/references/official-docs/docs/cordis-api/events.zh.md +1 -1
  68. package/references/official-docs/docs/cordis-api/inherited.md +1 -1
  69. package/references/official-docs/docs/cordis-primer.i18n.yaml +2 -2
  70. package/references/official-docs/docs/cordis-primer.md +2 -1
  71. package/references/official-docs/docs/cordis-primer.zh.md +3 -2
  72. package/references/official-docs/docs/cordis-tutorial/01-first-plugin.i18n.yaml +1 -1
  73. package/references/official-docs/docs/cordis-tutorial/01-first-plugin.zh.md +4 -4
  74. package/references/official-docs/docs/cordis-tutorial/02-lifecycle-and-effects.i18n.yaml +1 -1
  75. package/references/official-docs/docs/cordis-tutorial/02-lifecycle-and-effects.zh.md +4 -4
  76. package/references/official-docs/docs/cordis-tutorial/03-services.i18n.yaml +1 -1
  77. package/references/official-docs/docs/cordis-tutorial/03-services.zh.md +4 -4
  78. package/references/official-docs/docs/cordis-tutorial/04-events.i18n.yaml +1 -1
  79. package/references/official-docs/docs/cordis-tutorial/04-events.zh.md +4 -4
  80. package/references/official-docs/docs/cordis-tutorial/05-config.i18n.yaml +1 -1
  81. package/references/official-docs/docs/cordis-tutorial/05-config.zh.md +2 -2
  82. package/references/official-docs/docs/cordis-tutorial/06-composition-and-hmr.i18n.yaml +1 -1
  83. package/references/official-docs/docs/cordis-tutorial/06-composition-and-hmr.zh.md +3 -3
  84. package/references/official-docs/docs/cordis-tutorial/07-into-the-harness.i18n.yaml +2 -2
  85. package/references/official-docs/docs/cordis-tutorial/07-into-the-harness.md +5 -4
  86. package/references/official-docs/docs/cordis-tutorial/07-into-the-harness.zh.md +11 -10
  87. package/references/official-docs/docs/cordis-tutorial/index.i18n.yaml +1 -1
  88. package/references/official-docs/docs/cordis-tutorial/index.zh.md +10 -10
  89. package/references/official-docs/docs/deepseek-llm-api-wire-extensions.i18n.yaml +6 -0
  90. package/references/official-docs/docs/deepseek-llm-api-wire-extensions.md +159 -0
  91. package/references/official-docs/docs/deepseek-llm-api-wire-extensions.zh.md +159 -0
  92. package/references/official-docs/docs/defensive-patterns.i18n.yaml +1 -1
  93. package/references/official-docs/docs/defensive-patterns.zh.md +3 -1
  94. package/references/official-docs/docs/development.i18n.yaml +2 -2
  95. package/references/official-docs/docs/development.md +9 -13
  96. package/references/official-docs/docs/development.zh.md +23 -21
  97. package/references/official-docs/docs/event-producer-consumer.i18n.yaml +2 -2
  98. package/references/official-docs/docs/event-producer-consumer.md +55 -46
  99. package/references/official-docs/docs/event-producer-consumer.zh.md +55 -46
  100. package/references/official-docs/docs/glossary.i18n.yaml +2 -2
  101. package/references/official-docs/docs/glossary.md +1 -1
  102. package/references/official-docs/docs/glossary.zh.md +1 -1
  103. package/references/official-docs/docs/graph-atlas.i18n.yaml +2 -2
  104. package/references/official-docs/docs/graph-atlas.md +0 -2
  105. package/references/official-docs/docs/graph-atlas.zh.md +7 -9
  106. package/references/official-docs/docs/i18n/README.i18n.yaml +2 -2
  107. package/references/official-docs/docs/i18n/README.md +7 -7
  108. package/references/official-docs/docs/i18n/README.zh.md +11 -9
  109. package/references/official-docs/docs/i18n/style-samples.md +3 -3
  110. package/references/official-docs/docs/i18n/translation-prompt.md +3 -3
  111. package/references/official-docs/docs/i18n/translation-rules.i18n.yaml +2 -2
  112. package/references/official-docs/docs/i18n/translation-rules.md +2 -2
  113. package/references/official-docs/docs/i18n/translation-rules.zh.md +3 -3
  114. package/references/official-docs/docs/module-graph.i18n.yaml +2 -2
  115. package/references/official-docs/docs/module-graph.md +660 -909
  116. package/references/official-docs/docs/module-graph.zh.md +662 -911
  117. package/references/official-docs/docs/persistence-catalog.i18n.yaml +2 -2
  118. package/references/official-docs/docs/persistence-catalog.md +185 -53
  119. package/references/official-docs/docs/persistence-catalog.zh.md +193 -61
  120. package/references/official-docs/docs/postmortem/0001-acp-default-export-drops-inject.i18n.yaml +2 -2
  121. package/references/official-docs/docs/postmortem/0001-acp-default-export-drops-inject.md +2 -2
  122. package/references/official-docs/docs/postmortem/0001-acp-default-export-drops-inject.zh.md +3 -3
  123. package/references/official-docs/docs/postmortem/0002-js-expression-disabled-filesystem-tools.i18n.yaml +2 -2
  124. package/references/official-docs/docs/postmortem/0002-js-expression-disabled-filesystem-tools.md +2 -2
  125. package/references/official-docs/docs/postmortem/0002-js-expression-disabled-filesystem-tools.zh.md +2 -2
  126. package/references/official-docs/docs/postmortem/0003-web-agent-gui-feedback-loop.i18n.yaml +2 -2
  127. package/references/official-docs/docs/postmortem/0003-web-agent-gui-feedback-loop.md +2 -2
  128. package/references/official-docs/docs/postmortem/0003-web-agent-gui-feedback-loop.zh.md +2 -2
  129. package/references/official-docs/docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.i18n.yaml +2 -2
  130. package/references/official-docs/docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.md +1 -1
  131. package/references/official-docs/docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.zh.md +2 -2
  132. package/references/official-docs/docs/postmortem/README.i18n.yaml +1 -1
  133. package/references/official-docs/docs/postmortem/README.zh.md +5 -5
  134. package/references/official-docs/docs/rescope.i18n.yaml +2 -2
  135. package/references/official-docs/docs/rescope.md +2 -2
  136. package/references/official-docs/docs/rescope.zh.md +3 -3
  137. package/references/official-docs/docs/subsystems/README.i18n.yaml +2 -2
  138. package/references/official-docs/docs/subsystems/README.md +8 -2
  139. package/references/official-docs/docs/subsystems/README.zh.md +53 -47
  140. package/references/official-docs/docs/subsystems/agent-team.i18n.yaml +6 -0
  141. package/references/official-docs/docs/subsystems/agent-team.md +207 -0
  142. package/references/official-docs/docs/subsystems/agent-team.zh.md +207 -0
  143. package/references/official-docs/docs/subsystems/approval.i18n.yaml +2 -2
  144. package/references/official-docs/docs/subsystems/approval.md +12 -12
  145. package/references/official-docs/docs/subsystems/approval.zh.md +13 -13
  146. package/references/official-docs/docs/subsystems/attachment.i18n.yaml +2 -2
  147. package/references/official-docs/docs/subsystems/attachment.md +90 -7
  148. package/references/official-docs/docs/subsystems/attachment.zh.md +90 -7
  149. package/references/official-docs/docs/subsystems/client-modules.i18n.yaml +2 -2
  150. package/references/official-docs/docs/subsystems/client-modules.md +69 -19
  151. package/references/official-docs/docs/subsystems/client-modules.zh.md +69 -19
  152. package/references/official-docs/docs/subsystems/code-runtime.i18n.yaml +2 -2
  153. package/references/official-docs/docs/subsystems/code-runtime.md +12 -8
  154. package/references/official-docs/docs/subsystems/code-runtime.zh.md +13 -9
  155. package/references/official-docs/docs/subsystems/commands.i18n.yaml +2 -2
  156. package/references/official-docs/docs/subsystems/commands.md +30 -7
  157. package/references/official-docs/docs/subsystems/commands.zh.md +31 -8
  158. package/references/official-docs/docs/subsystems/compaction.i18n.yaml +2 -2
  159. package/references/official-docs/docs/subsystems/compaction.md +14 -14
  160. package/references/official-docs/docs/subsystems/compaction.zh.md +19 -19
  161. package/references/official-docs/docs/subsystems/conversation.i18n.yaml +6 -0
  162. package/references/official-docs/docs/{cookbook/adding-a-conversation-node.md → subsystems/conversation.md} +49 -24
  163. package/references/official-docs/docs/{cookbook/adding-a-conversation-node.zh.md → subsystems/conversation.zh.md} +49 -24
  164. package/references/official-docs/docs/subsystems/core.i18n.yaml +2 -2
  165. package/references/official-docs/docs/subsystems/core.md +114 -36
  166. package/references/official-docs/docs/subsystems/core.zh.md +145 -65
  167. package/references/official-docs/docs/subsystems/credentials.i18n.yaml +2 -2
  168. package/references/official-docs/docs/subsystems/credentials.md +207 -11
  169. package/references/official-docs/docs/subsystems/credentials.zh.md +207 -11
  170. package/references/official-docs/docs/subsystems/extensions.i18n.yaml +2 -2
  171. package/references/official-docs/docs/subsystems/extensions.md +27 -9
  172. package/references/official-docs/docs/subsystems/extensions.zh.md +30 -12
  173. package/references/official-docs/docs/subsystems/feedback.i18n.yaml +2 -2
  174. package/references/official-docs/docs/subsystems/feedback.md +6 -6
  175. package/references/official-docs/docs/subsystems/feedback.zh.md +6 -6
  176. package/references/official-docs/docs/subsystems/filesystem.i18n.yaml +2 -2
  177. package/references/official-docs/docs/subsystems/filesystem.md +17 -7
  178. package/references/official-docs/docs/subsystems/filesystem.zh.md +19 -9
  179. package/references/official-docs/docs/subsystems/goal.i18n.yaml +2 -2
  180. package/references/official-docs/docs/subsystems/goal.md +4 -4
  181. package/references/official-docs/docs/subsystems/goal.zh.md +8 -8
  182. package/references/official-docs/docs/subsystems/invariants.i18n.yaml +2 -2
  183. package/references/official-docs/docs/subsystems/invariants.md +2 -2
  184. package/references/official-docs/docs/subsystems/invariants.zh.md +5 -5
  185. package/references/official-docs/docs/subsystems/jobs.i18n.yaml +2 -2
  186. package/references/official-docs/docs/subsystems/jobs.md +3 -3
  187. package/references/official-docs/docs/subsystems/jobs.zh.md +6 -6
  188. package/references/official-docs/docs/subsystems/llm-streaming.i18n.yaml +2 -2
  189. package/references/official-docs/docs/subsystems/llm-streaming.md +193 -22
  190. package/references/official-docs/docs/subsystems/llm-streaming.zh.md +199 -28
  191. package/references/official-docs/docs/subsystems/lsp.i18n.yaml +2 -2
  192. package/references/official-docs/docs/subsystems/lsp.md +2 -2
  193. package/references/official-docs/docs/subsystems/lsp.zh.md +3 -3
  194. package/references/official-docs/docs/subsystems/permission-presets.i18n.yaml +2 -2
  195. package/references/official-docs/docs/subsystems/permission-presets.md +8 -8
  196. package/references/official-docs/docs/subsystems/permission-presets.zh.md +8 -8
  197. package/references/official-docs/docs/subsystems/persistence.i18n.yaml +2 -2
  198. package/references/official-docs/docs/subsystems/persistence.md +183 -173
  199. package/references/official-docs/docs/subsystems/persistence.zh.md +182 -172
  200. package/references/official-docs/docs/subsystems/plan.i18n.yaml +2 -2
  201. package/references/official-docs/docs/subsystems/plan.md +4 -4
  202. package/references/official-docs/docs/subsystems/plan.zh.md +10 -10
  203. package/references/official-docs/docs/subsystems/sandbox.i18n.yaml +2 -2
  204. package/references/official-docs/docs/subsystems/sandbox.md +5 -3
  205. package/references/official-docs/docs/subsystems/sandbox.zh.md +8 -6
  206. package/references/official-docs/docs/subsystems/schedule.i18n.yaml +2 -2
  207. package/references/official-docs/docs/subsystems/schedule.md +9 -3
  208. package/references/official-docs/docs/subsystems/schedule.zh.md +11 -5
  209. package/references/official-docs/docs/subsystems/scope.i18n.yaml +1 -1
  210. package/references/official-docs/docs/subsystems/scope.zh.md +1 -1
  211. package/references/official-docs/docs/subsystems/session-projection.i18n.yaml +2 -2
  212. package/references/official-docs/docs/subsystems/session-projection.md +148 -75
  213. package/references/official-docs/docs/subsystems/session-projection.zh.md +148 -75
  214. package/references/official-docs/docs/subsystems/session-query.i18n.yaml +2 -2
  215. package/references/official-docs/docs/subsystems/session-query.md +30 -16
  216. package/references/official-docs/docs/subsystems/session-query.zh.md +31 -17
  217. package/references/official-docs/docs/subsystems/session-reference.i18n.yaml +2 -2
  218. package/references/official-docs/docs/subsystems/session-reference.md +94 -7
  219. package/references/official-docs/docs/subsystems/session-reference.zh.md +95 -8
  220. package/references/official-docs/docs/subsystems/session-telemetry.i18n.yaml +2 -2
  221. package/references/official-docs/docs/subsystems/session-telemetry.md +5 -6
  222. package/references/official-docs/docs/subsystems/session-telemetry.zh.md +9 -10
  223. package/references/official-docs/docs/subsystems/session-title.i18n.yaml +2 -2
  224. package/references/official-docs/docs/subsystems/session-title.md +8 -8
  225. package/references/official-docs/docs/subsystems/session-title.zh.md +10 -10
  226. package/references/official-docs/docs/subsystems/session.i18n.yaml +2 -2
  227. package/references/official-docs/docs/subsystems/session.md +376 -71
  228. package/references/official-docs/docs/subsystems/session.zh.md +392 -85
  229. package/references/official-docs/docs/subsystems/settings.i18n.yaml +2 -2
  230. package/references/official-docs/docs/subsystems/settings.md +105 -10
  231. package/references/official-docs/docs/subsystems/settings.zh.md +105 -10
  232. package/references/official-docs/docs/subsystems/shell.i18n.yaml +2 -2
  233. package/references/official-docs/docs/subsystems/shell.md +3 -3
  234. package/references/official-docs/docs/subsystems/shell.zh.md +11 -11
  235. package/references/official-docs/docs/subsystems/skills.i18n.yaml +2 -2
  236. package/references/official-docs/docs/subsystems/skills.md +26 -3
  237. package/references/official-docs/docs/subsystems/skills.zh.md +29 -6
  238. package/references/official-docs/docs/subsystems/slots.i18n.yaml +6 -0
  239. package/references/official-docs/docs/subsystems/slots.md +175 -0
  240. package/references/official-docs/docs/subsystems/slots.zh.md +175 -0
  241. package/references/official-docs/docs/subsystems/spill.i18n.yaml +2 -2
  242. package/references/official-docs/docs/subsystems/spill.md +4 -4
  243. package/references/official-docs/docs/subsystems/spill.zh.md +6 -6
  244. package/references/official-docs/docs/subsystems/storage.i18n.yaml +2 -2
  245. package/references/official-docs/docs/subsystems/storage.md +38 -7
  246. package/references/official-docs/docs/subsystems/storage.zh.md +41 -10
  247. package/references/official-docs/docs/subsystems/subagent.i18n.yaml +2 -2
  248. package/references/official-docs/docs/subsystems/subagent.md +148 -116
  249. package/references/official-docs/docs/subsystems/subagent.zh.md +158 -124
  250. package/references/official-docs/docs/subsystems/subprocess.i18n.yaml +2 -2
  251. package/references/official-docs/docs/subsystems/subprocess.md +3 -3
  252. package/references/official-docs/docs/subsystems/subprocess.zh.md +5 -5
  253. package/references/official-docs/docs/subsystems/system-prompt.i18n.yaml +2 -2
  254. package/references/official-docs/docs/subsystems/system-prompt.md +21 -8
  255. package/references/official-docs/docs/subsystems/system-prompt.zh.md +23 -10
  256. package/references/official-docs/docs/subsystems/terminal.i18n.yaml +2 -2
  257. package/references/official-docs/docs/subsystems/terminal.md +2 -2
  258. package/references/official-docs/docs/subsystems/terminal.zh.md +4 -4
  259. package/references/official-docs/docs/subsystems/todo.i18n.yaml +6 -0
  260. package/references/official-docs/docs/subsystems/todo.md +32 -0
  261. package/references/official-docs/docs/subsystems/todo.zh.md +32 -0
  262. package/references/official-docs/docs/subsystems/token-meter.i18n.yaml +2 -2
  263. package/references/official-docs/docs/subsystems/token-meter.md +29 -14
  264. package/references/official-docs/docs/subsystems/token-meter.zh.md +30 -15
  265. package/references/official-docs/docs/subsystems/tools.i18n.yaml +2 -2
  266. package/references/official-docs/docs/subsystems/tools.md +46 -46
  267. package/references/official-docs/docs/subsystems/tools.zh.md +54 -54
  268. package/references/official-docs/docs/subsystems/typert.i18n.yaml +2 -2
  269. package/references/official-docs/docs/subsystems/typert.md +65 -58
  270. package/references/official-docs/docs/subsystems/typert.zh.md +67 -60
  271. package/references/official-docs/docs/subsystems/user-questions.i18n.yaml +2 -2
  272. package/references/official-docs/docs/subsystems/user-questions.md +35 -35
  273. package/references/official-docs/docs/subsystems/user-questions.zh.md +35 -35
  274. package/references/official-docs/docs/subsystems/web-client.i18n.yaml +6 -0
  275. package/references/official-docs/docs/subsystems/web-client.md +95 -0
  276. package/references/official-docs/docs/subsystems/web-client.zh.md +95 -0
  277. package/references/official-docs/docs/subsystems/web-server.i18n.yaml +2 -2
  278. package/references/official-docs/docs/subsystems/web-server.md +55 -9
  279. package/references/official-docs/docs/subsystems/web-server.zh.md +56 -10
  280. package/references/official-docs/docs/subsystems/web.i18n.yaml +2 -2
  281. package/references/official-docs/docs/subsystems/web.md +14 -7
  282. package/references/official-docs/docs/subsystems/web.zh.md +16 -9
  283. package/references/official-docs/docs/subsystems/webhook.i18n.yaml +6 -0
  284. package/references/official-docs/docs/subsystems/webhook.md +70 -0
  285. package/references/official-docs/docs/subsystems/webhook.zh.md +70 -0
  286. package/references/official-docs/docs/subsystems/workflow.i18n.yaml +2 -2
  287. package/references/official-docs/docs/subsystems/workflow.md +8 -8
  288. package/references/official-docs/docs/subsystems/workflow.zh.md +13 -13
  289. package/references/official-docs/docs/subsystems/workspace.i18n.yaml +2 -2
  290. package/references/official-docs/docs/subsystems/workspace.md +98 -5
  291. package/references/official-docs/docs/subsystems/workspace.zh.md +102 -9
  292. package/references/official-docs/docs/testing.i18n.yaml +2 -2
  293. package/references/official-docs/docs/testing.md +15 -10
  294. package/references/official-docs/docs/testing.zh.md +15 -10
  295. package/references/official-docs/docs/tool-catalog.i18n.yaml +2 -2
  296. package/references/official-docs/docs/tool-catalog.md +413 -61
  297. package/references/official-docs/docs/tool-catalog.zh.md +418 -63
  298. package/references/official-docs/docs/tool-execution-pipeline.i18n.yaml +2 -2
  299. package/references/official-docs/docs/tool-execution-pipeline.md +1 -1
  300. package/references/official-docs/docs/tool-execution-pipeline.zh.md +1 -1
  301. package/references/official-docs/docs/user/develop/basic/config.i18n.yaml +2 -2
  302. package/references/official-docs/docs/user/develop/basic/config.md +1 -1
  303. package/references/official-docs/docs/user/develop/basic/config.zh.md +4 -4
  304. package/references/official-docs/docs/user/develop/basic/index.i18n.yaml +1 -1
  305. package/references/official-docs/docs/user/develop/basic/index.zh.md +5 -5
  306. package/references/official-docs/docs/user/develop/basic/publish.i18n.yaml +2 -2
  307. package/references/official-docs/docs/user/develop/basic/publish.md +3 -3
  308. package/references/official-docs/docs/user/develop/basic/publish.zh.md +7 -7
  309. package/references/official-docs/docs/user/develop/basic/tool.i18n.yaml +2 -2
  310. package/references/official-docs/docs/user/develop/basic/tool.md +3 -3
  311. package/references/official-docs/docs/user/develop/basic/tool.zh.md +4 -4
  312. package/references/official-docs/docs/user/develop/framework/events.i18n.yaml +2 -2
  313. package/references/official-docs/docs/user/develop/framework/events.md +2 -2
  314. package/references/official-docs/docs/user/develop/framework/events.zh.md +3 -3
  315. package/references/official-docs/docs/user/develop/framework/index.i18n.yaml +1 -1
  316. package/references/official-docs/docs/user/develop/framework/index.zh.md +3 -3
  317. package/references/official-docs/docs/user/develop/framework/service.i18n.yaml +2 -2
  318. package/references/official-docs/docs/user/develop/framework/service.md +1 -1
  319. package/references/official-docs/docs/user/develop/framework/service.zh.md +3 -3
  320. package/references/official-docs/docs/user/develop/practice/dynamic-cordis.i18n.yaml +6 -0
  321. package/references/official-docs/docs/user/develop/practice/dynamic-cordis.md +15 -0
  322. package/references/official-docs/docs/user/develop/practice/dynamic-cordis.zh.md +15 -0
  323. package/references/official-docs/docs/user/develop/practice/index.i18n.yaml +2 -2
  324. package/references/official-docs/docs/user/develop/practice/index.md +1 -1
  325. package/references/official-docs/docs/user/develop/practice/index.zh.md +3 -3
  326. package/references/official-docs/docs/user/develop/practice/llm-adapter.i18n.yaml +2 -2
  327. package/references/official-docs/docs/user/develop/practice/llm-adapter.md +4 -3
  328. package/references/official-docs/docs/user/develop/practice/llm-adapter.zh.md +4 -3
  329. package/references/official-docs/docs/user/guide/github-review.i18n.yaml +6 -0
  330. package/references/official-docs/docs/user/guide/github-review.md +102 -0
  331. package/references/official-docs/docs/user/guide/github-review.zh.md +102 -0
  332. package/references/official-docs/docs/user/guide/index.i18n.yaml +2 -2
  333. package/references/official-docs/docs/user/guide/index.md +2 -2
  334. package/references/official-docs/docs/user/guide/index.zh.md +8 -8
  335. package/references/official-docs/docs/user/guide/mcp-memory.i18n.yaml +6 -0
  336. package/references/official-docs/docs/user/guide/mcp-memory.md +101 -0
  337. package/references/official-docs/docs/user/guide/mcp-memory.zh.md +101 -0
  338. package/references/official-docs/docs/user/guide/providers.i18n.yaml +2 -2
  339. package/references/official-docs/docs/user/guide/providers.md +40 -1
  340. package/references/official-docs/docs/user/guide/providers.zh.md +41 -2
  341. package/references/official-docs/docs/user/guide/python-sdk.i18n.yaml +2 -2
  342. package/references/official-docs/docs/user/guide/python-sdk.md +80 -34
  343. package/references/official-docs/docs/user/guide/python-sdk.zh.md +87 -41
  344. package/references/official-docs/docs/user/guide/schedule.i18n.yaml +6 -0
  345. package/references/official-docs/docs/user/guide/schedule.md +21 -0
  346. package/references/official-docs/docs/user/guide/schedule.zh.md +21 -0
  347. package/references/official-docs/docs/web-styling.i18n.yaml +2 -2
  348. package/references/official-docs/docs/web-styling.md +3 -0
  349. package/references/official-docs/docs/web-styling.zh.md +5 -2
  350. package/references/official-docs/packages/AGENTS.md +4 -3
  351. package/references/official-docs/packages/README.md +104 -59
  352. package/references/official-docs/vendor/README.md +1 -0
  353. package/references/official-docs/website-docs.ts +52 -11
  354. package/references/sources.md +2 -2
  355. package/references/website-pages.md +3 -3
  356. package/scripts/download-sources.ps1 +1 -1
  357. package/scripts/sync-official-docs.ps1 +19 -11
  358. package/scripts/verify-kit.ps1 +0 -4
  359. package/templates/js/README.es.md +1 -1
  360. package/templates/js/README.hi.md +1 -1
  361. package/templates/js/README.md +1 -1
  362. package/templates/js/README.pt.md +1 -1
  363. package/templates/js/README.zh.md +1 -1
  364. package/templates/js/package.json +4 -4
  365. package/templates/ts/README.es.md +1 -1
  366. package/templates/ts/README.hi.md +1 -1
  367. package/templates/ts/README.md +1 -1
  368. package/templates/ts/README.pt.md +1 -1
  369. package/templates/ts/README.zh.md +1 -1
  370. package/templates/ts/package.json +4 -4
  371. package/references/official-docs/examples/AGENTS.md +0 -20
@@ -5,11 +5,11 @@
5
5
 
6
6
  [English](persistence-catalog.md) | 中文
7
7
 
8
- 会话持久事件日志中可能出现的所有事件类型:完整持久化的 `SessionEvent` 信封,以及可通过合并扩展的 `SessionEventMap` 中的每个成员,包括 `@deepseek-ai/dsh-session` 所属的词汇和本仓库中每个插件对 `@deepseek-ai/dsh-session/types` 的声明合并,并附有源 JSDoc、完整 payload 声明、surface 标记和声明位置。本文档是 [session.md](subsystems/session.md)(surface 排序与 `deriveMessages()` 投影)、[persistence.md](subsystems/persistence.md)(如何让日志持久化)和 [session.md](subsystems/session.md#cordis-surface) 中生成区域(实时总线接线;日志事件**不是** cordis 事件,它通过唯一的 `session/event` emit 到达监听器)的补充。
8
+ 会话持久事件日志中可能出现的所有事件类型:完整持久化的 `SessionEvent` 信封,以及可通过合并扩展的 `SessionEventMap` 中的每个成员,包括 `@deepseek-ai/dsh-session` 所属的词汇和本仓库中每个插件对 `@deepseek-ai/dsh-session/types` 的声明合并,并附有源 JSDoc、完整 payload 声明、surface 标记和声明位置。本文档是 [session.md](subsystems/session.zh.md)(surface 排序与 `deriveMessages()` 投影)、[persistence.md](subsystems/persistence.zh.md)(如何让日志持久化)和 [session.md](subsystems/session.zh.md#cordis-surface) 中生成区域(实时总线接线;日志事件**不是** cordis 事件,它通过唯一的 `session/event` emit 到达监听器)的补充。
9
9
 
10
10
  英文源文件根据源码生成(`scripts/gen-persistence-catalog.ts`),并由 `pnpm run verify-persistence-catalog`(`doc-sync`(文档同步门禁)的一部分)验证新鲜度;本中文文件作为经评审对侧通过双语配对维护。声明块保留源码声明和嵌套属性的 JSDoc,只移除其所在接口/模块带来的缩进,并使用 `ts persistence-catalog` 围栏(doc-typecheck 会跳过这些围栏,因为声明引用了其所属模块中的类型)。payload 中的类型名称会链接到记录该类型的页面。参见 [persistence-log-catalog Agent Note](../.agents/notes/archived/process/2026-07-04-persistence-log-catalog.md)。
11
11
 
12
- 以下信封声明组合了每个事件的 `type`、单调递增的 `seq`、以 epoch 毫秒表示的 `time`、`data`,以及条件字段 `surfaceOp`/`sourceEventSeqs`。**surface** 表示 `SurfaceEventType` 成员:它会生成一条 LLM(大语言模型)消息,并声明该事件如何加入 surface 列表。**log-only** 表示其他所有事件:这类记录可持久化、可回放,但不参与派生历史。每个 payload 均可进行 JSON 序列化(在 `Session.append` 处强制执行),整个格式固定为 `SESSION_FORMAT_VERSION = 0`:这是预发布格式,不暗示任何兼容性(参见[版本立场](subsystems/persistence.md))。范围仅限本仓库中的包;下游插件可以继续合并其他事件类型,而这些类型按设计不属于本目录。
12
+ 以下信封声明组合了每个事件的 `type`、单调递增的 `seq`、以 epoch 毫秒表示的 `time`、`data`、可选的未知类型跳过标记 `ignorable`,以及条件字段 `surfaceOp`/`sourceEventSeqs`。**surface** 表示 `SurfaceEventType` 成员:它会生成一条 LLM(大语言模型)消息,并声明该事件如何加入 surface 列表。**log-only** 表示其他所有事件:这类记录可持久化、可回放,但不参与派生历史。每个 payload 均可进行 JSON 序列化(在 `Session.append` 处强制执行),整个格式固定为 `SESSION_FORMAT_VERSION = 0`:这是预发布格式,不暗示任何兼容性(参见[版本立场](subsystems/persistence.zh.md))。范围仅限本仓库中的包;下游插件可以继续合并其他事件类型,而这些类型按设计不属于本目录。
13
13
 
14
14
  ## 事件信封
15
15
 
@@ -42,7 +42,7 @@ export type SurfaceEventType =
42
42
  */
43
43
  export type SurfaceOp =
44
44
  | 'append'
45
- | { op: 'replace'; start: number; end: number }
45
+ | { op: 'replace'; start: SessionSeq; end: SessionSeq }
46
46
 
47
47
  /**
48
48
  * One immutable entry in the session log.
@@ -61,10 +61,21 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
61
61
  [K in SessionEventType]: {
62
62
  type: K
63
63
  /** Monotonic sequence number within the session. */
64
- seq: number
64
+ seq: SessionSeq
65
65
  /** Unix epoch milliseconds. */
66
66
  time: number
67
67
  data: SessionEventMap[K]
68
+ /**
69
+ * Marks an event a reader may safely skip when it does not recognize
70
+ * `type`. Absent means required: a reader meeting an unrecognized type
71
+ * without this marker MUST refuse to reconstruct the session instead of
72
+ * silently dropping the event, because an unrecognized required event may
73
+ * change how the rest of the log is interpreted. A writer sets `true` only
74
+ * on purely informational records whose loss cannot affect reconstruction;
75
+ * defaulting to required means a forgotten marker over-refuses (an
76
+ * inconvenience) rather than silently resuming a gutted session.
77
+ */
78
+ ignorable?: true
68
79
  } & (K extends SurfaceEventType ? {
69
80
  /**
70
81
  * Seq numbers of earlier events that this event cites as sources
@@ -74,14 +85,14 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
74
85
  * provider stream; when the field is absent, the event does not record which
75
86
  * earlier events produced the message.
76
87
  */
77
- sourceEventSeqs?: number[]
88
+ sourceEventSeqs?: SessionSeq[]
78
89
  /** How this event entered the surface; absent for non-surface events. */
79
90
  surfaceOp?: SurfaceOp
80
91
  } : object)
81
92
  }[T]
82
93
  ```
83
94
 
84
- 来源:[`packages/core/session/src/types.ts:336`](../packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:343`](../packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:372`](../packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:404`](../packages/core/session/src/types.ts)
95
+ 来源:[`packages/core/session/src/types.ts:368`](../packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:375`](../packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:404`](../packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:436`](../packages/core/session/src/types.ts)
85
96
 
86
97
  ## 事件
87
98
 
@@ -106,7 +117,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
106
117
  }
107
118
  ```
108
119
 
109
- 来源:[`packages/core/agent/src/types.ts:19`](../packages/core/agent/src/types.ts)
120
+ 来源:[`packages/core/agent/src/types.ts:58`](../packages/core/agent/src/types.ts)
110
121
 
111
122
  ### `agent-preset/*`
112
123
 
@@ -124,7 +135,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
124
135
  'agent-preset/selected': { agentPreset: string }
125
136
  ```
126
137
 
127
- 来源:[`packages/preset/agent-presets/src/session.ts:26`](../packages/preset/agent-presets/src/session.ts)
138
+ 来源:[`packages/preset/agent-presets/src/session.ts:28`](../packages/preset/agent-presets/src/session.ts)
128
139
 
129
140
  ### `approval/*`
130
141
 
@@ -144,14 +155,14 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
144
155
  'approval/asked': {
145
156
  id: ApprovalRequestId
146
157
  toolName: string
147
- callId?: CallId
158
+ callId?: ToolCallId
148
159
  reason?: string
149
160
  }
150
161
  ```
151
162
 
152
- 类型:[CallId](subsystems/core.md)
163
+ 类型:[ToolCallId](subsystems/core.zh.md)
153
164
 
154
- 来源:[`packages/interaction/user-approval/src/index.ts:44`](../packages/interaction/user-approval/src/index.ts)
165
+ 来源:[`packages/interaction/user-approval/src/types.ts:44`](../packages/interaction/user-approval/src/types.ts)
155
166
 
156
167
  <a id="approvaldecided--log-only"></a>
157
168
 
@@ -169,7 +180,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
169
180
  }
170
181
  ```
171
182
 
172
- 来源:[`packages/interaction/user-approval/src/index.ts:55`](../packages/interaction/user-approval/src/index.ts)
183
+ 来源:[`packages/interaction/user-approval/src/types.ts:55`](../packages/interaction/user-approval/src/types.ts)
173
184
 
174
185
  <a id="approvalpolicy--log-only"></a>
175
186
 
@@ -180,7 +191,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
180
191
  * The session's approval policy was switched — log-only, durable,
181
192
  * replayable, never in the model transcript (the model learns the policy
182
193
  * from the runtime-context snapshot and live switch notices). The LAST
183
- * such event is the session's override ({@link effectiveApprovalPolicy}).
194
+ * such event is the session's override.
184
195
  * `source: 'delegation'` marks an override seeded into a child; an absent
185
196
  * source is a runtime switch.
186
197
  */
@@ -191,7 +202,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
191
202
  }
192
203
  ```
193
204
 
194
- 来源:[`packages/interaction/user-approval/src/index.ts:67`](../packages/interaction/user-approval/src/index.ts)
205
+ 来源:[`packages/interaction/user-approval/src/index.ts:32`](../packages/interaction/user-approval/src/index.ts)
195
206
 
196
207
  ### `assistant/*`
197
208
 
@@ -204,9 +215,9 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
204
215
  'assistant/chunk': { turn: number; step: number; chunk: StreamChunk }
205
216
  ```
206
217
 
207
- 类型:[StreamChunk](subsystems/llm-streaming.md)
218
+ 类型:[StreamChunk](subsystems/llm-streaming.zh.md)
208
219
 
209
- 来源:[`packages/core/session/src/types.ts:266`](../packages/core/session/src/types.ts)
220
+ 来源:[`packages/core/session/src/types.ts:291`](../packages/core/session/src/types.ts)
210
221
 
211
222
  <a id="assistantmessage--surface"></a>
212
223
 
@@ -217,14 +228,18 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
217
228
  * Assembled assistant message for one step (derived history uses this).
218
229
  * Carries the step's `usage` when the adapter reported token accounting, so
219
230
  * the model output and its accounting travel together (there is no separate
220
- * usage record). `usage` is absent when the adapter reported none.
231
+ * usage record). `usage` is absent when the adapter reported none. A turn
232
+ * cancelled mid-stream finalizes its delivered text/reasoning prefix as this
233
+ * event with `interrupted: true`; undispatched tool calls are absent. The
234
+ * marker distinguishes that prefix without re-deriving interruption from turn
235
+ * boundaries. An aborted turn with no such event streamed no visible content.
221
236
  */
222
- 'assistant/message': { turn: number; step: number; message: AssistantMessage; usage?: TokenUsage }
237
+ 'assistant/message': { turn: number; step: number; message: AssistantMessage; usage?: TokenUsage; interrupted?: true }
223
238
  ```
224
239
 
225
- 类型:[TokenUsage](subsystems/llm-streaming.md)
240
+ 类型:[TokenUsage](subsystems/llm-streaming.zh.md)
226
241
 
227
- 来源:[`packages/core/session/src/types.ts:273`](../packages/core/session/src/types.ts)
242
+ 来源:[`packages/core/session/src/types.ts:302`](../packages/core/session/src/types.ts)
228
243
 
229
244
  ### `command/*`
230
245
 
@@ -243,11 +258,11 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
243
258
  commandId: CommandId
244
259
  kind: 'success' | 'error'
245
260
  text?: string
246
- sourceEventSeq?: number
261
+ sourceEventSeq?: import('@deepseek-ai/dsh-session/types').SessionSeq
247
262
  }
248
263
  ```
249
264
 
250
- 来源:[`packages/interaction/commands/src/types.ts:95`](../packages/interaction/commands/src/types.ts)
265
+ 来源:[`packages/interaction/commands/src/types.ts:104`](../packages/interaction/commands/src/types.ts)
251
266
 
252
267
  <a id="commandrun--log-only"></a>
253
268
 
@@ -267,7 +282,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
267
282
  'command/run': { commandId: CommandId; name: string; args?: string; source: CommandSource }
268
283
  ```
269
284
 
270
- 来源:[`packages/interaction/commands/src/types.ts:88`](../packages/interaction/commands/src/types.ts)
285
+ 来源:[`packages/interaction/commands/src/types.ts:97`](../packages/interaction/commands/src/types.ts)
271
286
 
272
287
  ### `compaction/*`
273
288
 
@@ -283,7 +298,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
283
298
  'compaction/end': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; error?: string }
284
299
  ```
285
300
 
286
- 来源:[`packages/compaction/compaction/src/types.ts:71`](../packages/compaction/compaction/src/types.ts)
301
+ 来源:[`packages/compaction/compaction/src/types.ts:72`](../packages/compaction/compaction/src/types.ts)
287
302
 
288
303
  <a id="compactionprune--log-only"></a>
289
304
 
@@ -301,15 +316,15 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
301
316
  */
302
317
  'compaction/prune': {
303
318
  /** The replaced range's first and last surface-node seqs (a surface-position span, like {@link CompactionResult.shadowedRange}). */
304
- shadowedRange: { start: number; end: number }
319
+ shadowedRange: { start: SessionSeq; end: SessionSeq }
305
320
  /** The seqs of all shadowed surface nodes, in surface order. */
306
- shadowedSeqs: number[]
321
+ shadowedSeqs: SessionSeq[]
307
322
  /** Heuristic price of the shadowed content under the token-meter's fixed estimator. */
308
323
  shadowedTokenCount: number
309
324
  }
310
325
  ```
311
326
 
312
- 来源:[`packages/compaction/compaction/src/types.ts:81`](../packages/compaction/compaction/src/types.ts)
327
+ 来源:[`packages/compaction/compaction/src/types.ts:82`](../packages/compaction/compaction/src/types.ts)
313
328
 
314
329
  <a id="compactionstart--log-only"></a>
315
330
 
@@ -324,7 +339,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
324
339
  'compaction/start': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null }
325
340
  ```
326
341
 
327
- 来源:[`packages/compaction/compaction/src/types.ts:23`](../packages/compaction/compaction/src/types.ts)
342
+ 来源:[`packages/compaction/compaction/src/types.ts:24`](../packages/compaction/compaction/src/types.ts)
328
343
 
329
344
  <a id="compactionsummary--log-only"></a>
330
345
 
@@ -344,8 +359,8 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
344
359
  compactionId: CompactionId
345
360
  sourceCommandId?: CommandId
346
361
  summary: ContentBlock[]
347
- shadowedRange: { start: number; end: number }
348
- shadowedSeqs: number[]
362
+ shadowedRange: { start: SessionSeq; end: SessionSeq }
363
+ shadowedSeqs: SessionSeq[]
349
364
  shadowedTokenCount: number
350
365
  /** The provider route that wrote the summary. */
351
366
  provider: string
@@ -376,9 +391,9 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
376
391
  )
377
392
  ```
378
393
 
379
- 类型:[ContentBlock](subsystems/core.md) · [TokenUsage](subsystems/llm-streaming.md)
394
+ 类型:[ContentBlock](subsystems/core.zh.md) · [TokenUsage](subsystems/llm-streaming.zh.md)
380
395
 
381
- 来源:[`packages/compaction/compaction/src/types.ts:33`](../packages/compaction/compaction/src/types.ts)
396
+ 来源:[`packages/compaction/compaction/src/types.ts:34`](../packages/compaction/compaction/src/types.ts)
382
397
 
383
398
  ### `feedback/*`
384
399
 
@@ -485,6 +500,22 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
485
500
 
486
501
  来源:[`packages/llm/llm-retry/src/types.ts:11`](../packages/llm/llm-retry/src/types.ts)
487
502
 
503
+ ### `model/*`
504
+
505
+ <a id="modelselection--log-only"></a>
506
+
507
+ #### `model/selection` — log-only
508
+
509
+ ```ts persistence-catalog
510
+ /**
511
+ * Complete validated model selection requested for subsequent prompt
512
+ * assembly. Log-only: it never enters derived model history.
513
+ */
514
+ 'model/selection': ModelSelection
515
+ ```
516
+
517
+ 来源:[`packages/api/session-controller/src/types.ts:41`](../packages/api/session-controller/src/types.ts)
518
+
488
519
  ### `permission/*`
489
520
 
490
521
  <a id="permissionpreset--log-only"></a>
@@ -495,13 +526,13 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
495
526
  /**
496
527
  * Records the selected preset as durable, log-only user intent. The knob
497
528
  * events follow in the same turn and control execution; this event stays
498
- * out of the model transcript and lets {@link effectivePermissionPreset}
529
+ * out of the model transcript and lets the permission projection unit
499
530
  * preserve a selection when bundles match.
500
531
  */
501
532
  'permission/preset': { preset: string }
502
533
  ```
503
534
 
504
- 来源:[`packages/interaction/permission-presets/src/index.ts:50`](../packages/interaction/permission-presets/src/index.ts)
535
+ 来源:[`packages/interaction/permission-presets/src/index.ts:53`](../packages/interaction/permission-presets/src/index.ts)
505
536
 
506
537
  ### `plan/*`
507
538
 
@@ -513,12 +544,12 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
513
544
  /**
514
545
  * Whether plan mode is in force from this point on: log-only, non-surface,
515
546
  * whole-value replace. The last `plan/mode` wins; a log with none folds to
516
- * inactive through {@link foldPlanMode}.
547
+ * inactive through the projection unit's fold.
517
548
  */
518
549
  'plan/mode': { active: boolean }
519
550
  ```
520
551
 
521
- 来源:[`packages/plan/plan-mode/src/index.ts:53`](../packages/plan/plan-mode/src/index.ts)
552
+ 来源:[`packages/plan/plan-mode/src/index.ts:46`](../packages/plan/plan-mode/src/index.ts)
522
553
 
523
554
  ### `request/*`
524
555
 
@@ -534,7 +565,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
534
565
  'request/context': RequestContext
535
566
  ```
536
567
 
537
- 来源:[`packages/core/session/src/types.ts:309`](../packages/core/session/src/types.ts)
568
+ 来源:[`packages/core/session/src/types.ts:341`](../packages/core/session/src/types.ts)
538
569
 
539
570
  <a id="requestheader--log-only"></a>
540
571
 
@@ -545,10 +576,15 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
545
576
  * Full header for the next request, appended inside its step before dispatch.
546
577
  * It is log-only; the latest snapshot reconstructs the request header.
547
578
  */
548
- 'request/header': { header: EpochHeader; reason: RequestHeaderReason }
579
+ 'request/header': {
580
+ header: EpochHeader
581
+ reason: RequestHeaderReason
582
+ /** A changed header also begins a distinct model-message series. */
583
+ startsSeries?: true
584
+ }
549
585
  ```
550
586
 
551
- 来源:[`packages/core/session/src/types.ts:304`](../packages/core/session/src/types.ts)
587
+ 来源:[`packages/core/session/src/types.ts:331`](../packages/core/session/src/types.ts)
552
588
 
553
589
  ### `sandbox/*`
554
590
 
@@ -561,7 +597,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
561
597
  * The session's sandbox mode was switched — log-only (like `approval/*`;
562
598
  * NOT a surface event, carries no `surfaceOp`): durable and replayable,
563
599
  * never in the model transcript. The LAST such event is the session's
564
- * override ({@link effectiveSandboxMode}). `source: 'delegation'` marks
600
+ * override (folded by the sandboxMode projection unit). `source: 'delegation'` marks
565
601
  * an override seeded into a child; an absent source is a runtime switch.
566
602
  */
567
603
  'sandbox/mode': {
@@ -587,7 +623,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
587
623
  'schedule/change': ScheduleChange
588
624
  ```
589
625
 
590
- 类型:[ScheduleChange](subsystems/schedule.md)
626
+ 类型:[ScheduleChange](subsystems/schedule.zh.md)
591
627
 
592
628
  来源:[`packages/schedule/schedule/src/types.ts:219`](../packages/schedule/schedule/src/types.ts)
593
629
 
@@ -623,7 +659,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
623
659
  'session/end-seed': Record<string, never>
624
660
  ```
625
661
 
626
- 来源:[`packages/core/session/src/types.ts:332`](../packages/core/session/src/types.ts)
662
+ 来源:[`packages/core/session/src/types.ts:364`](../packages/core/session/src/types.ts)
627
663
 
628
664
  <a id="sessiontitle--log-only"></a>
629
665
 
@@ -637,9 +673,9 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
637
673
  'session/title': SessionTitleEventData
638
674
  ```
639
675
 
640
- 类型:[SessionTitleEventData](subsystems/session-title.md)
676
+ 类型:[SessionTitleEventData](subsystems/session-title.zh.md)
641
677
 
642
- 来源:[`packages/session/session-title/src/index.ts:100`](../packages/session/session-title/src/index.ts)
678
+ 来源:[`packages/session/session-title/src/index.ts:77`](../packages/session/session-title/src/index.ts)
643
679
 
644
680
  <a id="sessiontitle-llm-request--log-only"></a>
645
681
 
@@ -650,9 +686,27 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
650
686
  'session/title-llm-request': SessionTitleLlmRequestEventData
651
687
  ```
652
688
 
653
- 类型:[SessionTitleLlmRequestEventData](subsystems/session-title.md)
689
+ 类型:[SessionTitleLlmRequestEventData](subsystems/session-title.zh.md)
690
+
691
+ 来源:[`packages/session/session-title-llm/src/index.ts:45`](../packages/session/session-title-llm/src/index.ts)
692
+
693
+ ### `session-log-deepseek/*`
694
+
695
+ <a id="session-log-deepseekdelivery-accepted--log-only"></a>
654
696
 
655
- 来源:[`packages/session/session-title-llm/src/index.ts:43`](../packages/session/session-title-llm/src/index.ts)
697
+ #### `session-log-deepseek/delivery-accepted` — log-only
698
+
699
+ ```ts persistence-catalog
700
+ /** Records that the configured endpoint accepted one delivery through `throughSeq`. */
701
+ 'session-log-deepseek/delivery-accepted': {
702
+ /** Session identity the accepted delivery carried; inherited fork markers retain the parent's id. */
703
+ sessionId: import('@deepseek-ai/dsh-session/types').SessionId
704
+ /** Last canonical event included in the accepted request. */
705
+ throughSeq: import('@deepseek-ai/dsh-session/types').SessionSeq
706
+ }
707
+ ```
708
+
709
+ 来源:[`packages/session/session-log-deepseek/src/types.ts:57`](../packages/session/session-log-deepseek/src/types.ts)
656
710
 
657
711
  ### `step/*`
658
712
 
@@ -665,7 +719,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
665
719
  'step/end': { turn: number; step: number }
666
720
  ```
667
721
 
668
- 来源:[`packages/core/session/src/types.ts:256`](../packages/core/session/src/types.ts)
722
+ 来源:[`packages/core/session/src/types.ts:281`](../packages/core/session/src/types.ts)
669
723
 
670
724
  <a id="stepstart--log-only"></a>
671
725
 
@@ -676,7 +730,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
676
730
  'step/start': { turn: number; step: number }
677
731
  ```
678
732
 
679
- 来源:[`packages/core/session/src/types.ts:254`](../packages/core/session/src/types.ts)
733
+ 来源:[`packages/core/session/src/types.ts:279`](../packages/core/session/src/types.ts)
680
734
 
681
735
  ### `subagent/*`
682
736
 
@@ -695,7 +749,85 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
695
749
  'subagent/descriptor': SubagentDescriptorData
696
750
  ```
697
751
 
698
- 来源:[`packages/subagent/subagent/src/descriptor.ts:37`](../packages/subagent/subagent/src/descriptor.ts)
752
+ 来源:[`packages/subagent/subagent/src/descriptor.ts:38`](../packages/subagent/subagent/src/descriptor.ts)
753
+
754
+ <a id="subagentmodel-selection-policy--log-only"></a>
755
+
756
+ #### `subagent/model-selection-policy` — 仅日志
757
+
758
+ ```ts persistence-catalog
759
+ /**
760
+ * Records that this session's delegation tool exposes child provider,
761
+ * model, and reasoning-effort selection. Appended before the first model
762
+ * request; absence means the fixed-route definition. Log-only: it carries
763
+ * no `surfaceOp` and never enters model history.
764
+ */
765
+ 'subagent/model-selection-policy': {
766
+ /** Exact routes this Session may select explicitly for a child. */
767
+ allowedModels: AllowedModelRoute[]
768
+ }
769
+ ```
770
+
771
+ 来源:[`packages/subagent/tool-subagent/src/model-selection-state.ts:17`](../packages/subagent/tool-subagent/src/model-selection-state.ts)
772
+
773
+ ### `team/*`
774
+
775
+ <a id="teammember--log-only"></a>
776
+
777
+ #### `team/member` — log-only
778
+
779
+ ```ts persistence-catalog
780
+ /** Whole teammate lifecycle value, stored only in the Team Lead Session. */
781
+ 'team/member': { version: 2; teamId: TeamId; member: TeamMemberSnapshot }
782
+ ```
783
+
784
+ 类型:[TeamId](subsystems/agent-team.zh.md) · [TeamMemberSnapshot](subsystems/agent-team.zh.md)
785
+
786
+ 来源:[`packages/experimental/agent-team/src/types.ts:204`](../packages/experimental/agent-team/src/types.ts)
787
+
788
+ <a id="teammessagedelivered--log-only"></a>
789
+
790
+ #### `team/message/delivered` — log-only
791
+
792
+ ```ts persistence-catalog
793
+ /** Durable acknowledgement that the target Session recorded the message. */
794
+ 'team/message/delivered': {
795
+ version: 2
796
+ teamId: TeamId
797
+ messageId: TeamMessageId
798
+ targetId: SessionId
799
+ }
800
+ ```
801
+
802
+ 类型:[TeamId](subsystems/agent-team.zh.md) · [TeamMessageId](subsystems/agent-team.zh.md)
803
+
804
+ 来源:[`packages/experimental/agent-team/src/types.ts:210`](../packages/experimental/agent-team/src/types.ts)
805
+
806
+ <a id="teammessagequeued--log-only"></a>
807
+
808
+ #### `team/message/queued` — log-only
809
+
810
+ ```ts persistence-catalog
811
+ /** Durable mailbox enqueue, stored before delivery is attempted. */
812
+ 'team/message/queued': { version: 2; teamId: TeamId; message: TeamMessageSnapshot }
813
+ ```
814
+
815
+ 类型:[TeamId](subsystems/agent-team.zh.md) · [TeamMessageSnapshot](subsystems/agent-team.zh.md)
816
+
817
+ 来源:[`packages/experimental/agent-team/src/types.ts:208`](../packages/experimental/agent-team/src/types.ts)
818
+
819
+ <a id="teamtask--log-only"></a>
820
+
821
+ #### `team/task` — log-only
822
+
823
+ ```ts persistence-catalog
824
+ /** Whole shared-task value, stored only in the Team Lead Session. */
825
+ 'team/task': { version: 2; teamId: TeamId; task: TeamTaskSnapshot }
826
+ ```
827
+
828
+ 类型:[TeamId](subsystems/agent-team.zh.md) · [TeamTaskSnapshot](subsystems/agent-team.zh.md)
829
+
830
+ 来源:[`packages/experimental/agent-team/src/types.ts:206`](../packages/experimental/agent-team/src/types.ts)
699
831
 
700
832
  ### `todo/*`
701
833
 
@@ -708,9 +840,9 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
708
840
  'todo/write': { todos: TodoItem[] }
709
841
  ```
710
842
 
711
- 类型:[TodoItem](subsystems/session.md)
843
+ 类型:[TodoItem](subsystems/todo.zh.md)
712
844
 
713
- 来源:[`packages/core/session/src/types.ts:299`](../packages/core/session/src/types.ts)
845
+ 来源:[`packages/todo/tool-todo/src/types.ts:31`](../packages/todo/tool-todo/src/types.ts)
714
846
 
715
847
  ### `tool/*`
716
848
 
@@ -724,12 +856,12 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
724
856
  * JSON string exactly as the model produced it (unparsed). `callId` pairs the
725
857
  * call with its `tool/result`.
726
858
  */
727
- 'tool/call': { turn: number; step: number; callId: CallId; name: string; arguments: string }
859
+ 'tool/call': { turn: number; step: number; callId: ToolCallId; name: string; arguments: string }
728
860
  ```
729
861
 
730
- 类型:[CallId](subsystems/core.md)
862
+ 类型:[ToolCallId](subsystems/core.zh.md)
731
863
 
732
- 来源:[`packages/core/session/src/types.ts:279`](../packages/core/session/src/types.ts)
864
+ 来源:[`packages/core/session/src/types.ts:308`](../packages/core/session/src/types.ts)
733
865
 
734
866
  <a id="toolcode-dispatch--log-only"></a>
735
867
 
@@ -751,7 +883,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
751
883
  * before returning), so its execution-enclosure relation holds by
752
884
  * construction.
753
885
  */
754
- 'tool/code-dispatch': CodeDispatchEventData
886
+ 'tool/code-dispatch': PtcDispatchEventData
755
887
  ```
756
888
 
757
889
  来源:[`packages/core/tools/src/types.ts:56`](../packages/core/tools/src/types.ts)
@@ -774,7 +906,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
774
906
  * with `tool/code-dispatch` by `subCallId` (timing = the two events'
775
907
  * `time` fields).
776
908
  */
777
- 'tool/code-dispatch-start': CodeDispatchStartEventData
909
+ 'tool/code-dispatch-start': PtcDispatchStartEventData
778
910
  ```
779
911
 
780
912
  来源:[`packages/core/tools/src/types.ts:40`](../packages/core/tools/src/types.ts)
@@ -804,7 +936,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
804
936
  }
805
937
  ```
806
938
 
807
- 来源:[`packages/core/session/src/types.ts:291`](../packages/core/session/src/types.ts)
939
+ 来源:[`packages/core/session/src/types.ts:320`](../packages/core/session/src/types.ts)
808
940
 
809
941
  ### `tool-workflow/*`
810
942
 
@@ -882,9 +1014,9 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
882
1014
  'turn/end': { turn: number; reason: TurnEndReason }
883
1015
  ```
884
1016
 
885
- 类型:[TurnEndReason](subsystems/session.md)
1017
+ 类型:[TurnEndReason](subsystems/session.zh.md)
886
1018
 
887
- 来源:[`packages/core/session/src/types.ts:252`](../packages/core/session/src/types.ts)
1019
+ 来源:[`packages/core/session/src/types.ts:277`](../packages/core/session/src/types.ts)
888
1020
 
889
1021
  <a id="turnstart--log-only"></a>
890
1022
 
@@ -900,7 +1032,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
900
1032
  'turn/start': { turn: number }
901
1033
  ```
902
1034
 
903
- 来源:[`packages/core/session/src/types.ts:243`](../packages/core/session/src/types.ts)
1035
+ 来源:[`packages/core/session/src/types.ts:268`](../packages/core/session/src/types.ts)
904
1036
 
905
1037
  ### `user/*`
906
1038
 
@@ -919,7 +1051,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
919
1051
  'user/message': UserMessage
920
1052
  ```
921
1053
 
922
- 来源:[`packages/core/session/src/types.ts:264`](../packages/core/session/src/types.ts)
1054
+ 来源:[`packages/core/session/src/types.ts:289`](../packages/core/session/src/types.ts)
923
1055
 
924
1056
  ### `web/*`
925
1057
 
@@ -2,5 +2,5 @@
2
2
  # side as of the last confirmed-consistent state. Both languages carry equal authority;
3
3
  # after editing either side, bring the other along and re-record with:
4
4
  # pnpm run verify-translation-pairing --write docs/postmortem/0001-acp-default-export-drops-inject.md
5
- 0001-acp-default-export-drops-inject.md: f8474bde0b81b24573f813d9a0fb017962751f49
6
- 0001-acp-default-export-drops-inject.zh.md: 9e0c4b289fca5798489434b55cc1482085512832
5
+ 0001-acp-default-export-drops-inject.md: d5325b3f051669111ad7c097c395744553d57c6c
6
+ 0001-acp-default-export-drops-inject.zh.md: 189c2418106dc44bde43ef7fd4d2f8ce62d1d672
@@ -10,7 +10,7 @@ Two integration mistakes broke ACP despite full unit coverage: a default export
10
10
 
11
11
  ## Summary
12
12
 
13
- The ACP server (`examples/acp-agent`, `@deepseek-ai/dsh-acp`) crashed the instant a real editor (Zed) connected: the first `session/new` request returned `Internal error: cannot get property "agents" without inject`, and `session/load` returned the same for `sessionPersistence`. The bridge was completely non-functional in production despite 178 green unit tests and 100% line coverage. Two independent bugs were hiding behind the same error string, and the test suite missed both for the same reason: every test mounted the plugin through a path that did not exercise how it actually loads or how its services actually resolve.
13
+ The ACP server (`dsh --profile acp`, `@deepseek-ai/dsh-acp`) crashed the instant a real editor (Zed) connected: the first `session/new` request returned `Internal error: cannot get property "agents" without inject`, and `session/load` returned the same for `sessionPersistence`. The bridge was completely non-functional in production despite 178 green unit tests and 100% line coverage. Two independent bugs were hiding behind the same error string, and the test suite missed both for the same reason: every test mounted the plugin through a path that did not exercise how it actually loads or how its services actually resolve.
14
14
 
15
15
  ## Impact
16
16
 
@@ -101,7 +101,7 @@ Both bugs share one root process gap: **no test exercised the plugin through its
101
101
 
102
102
  - **Removed `export default apply`** (`packages/acp/acp/src/index.ts`) — the Bug #1 fix.
103
103
  - **`AgentLoop.resume` reads `this.ctx.get('sessionPersistence')`** (`packages/core/agent-loop/src/index.ts`) — the Bug #2 fix, with a comment explaining the shadow-walk trap.
104
- - **No-key `session/new` e2e over real stdio** (`examples/acp-agent/tests/acp.e2e.ts`): boots the example as a subprocess through the real Loader and asserts `session/new` resolves. This fails loudly on Bug #1 with no API key. Verified it fails when `export default apply` is restored.
104
+ - **No-key `session/new` e2e over real stdio** (`apps/cli/tests/profiles/acp/tests/acp.e2e.ts`): boots the profile as a subprocess through the real Loader and asserts `session/new` resolves. This fails loudly on Bug #1 with no API key. Verified it fails when `export default apply` is restored.
105
105
  - **`TSX_TSCONFIG_PATH` in the e2e spawn**: the subprocess runs from a temp cwd, where tsx cannot find the repo-root tsconfig `paths` map by searching upward — so dsh-* imports silently fell back to built `lib/`. Pointing tsx at the repo tsconfig makes resolution cwd-independent and ensures the test runs *source*, not a possibly-stale build.
106
106
  - **[docs/testing.md](../testing.md) rule**: "test the real entry path", line coverage is not behavior coverage — codifies the lesson for every future plugin.
107
107
 
@@ -10,7 +10,7 @@
10
10
 
11
11
  ## 概述
12
12
 
13
- ACP 服务器(`examples/acp-agent`、`@deepseek-ai/dsh-acp`)在真实编辑器(Zed)连接的瞬间崩溃:第一个 `session/new` 请求返回 `Internal error: cannot get property "agents" without inject`,`session/load` 对 `sessionPersistence` 返回同样的错误。尽管有 178 个绿色单元测试和 100% 行覆盖率,bridge 在生产环境中完全无法工作。两个独立的 bug 隐藏在同一个错误字符串背后,测试套件之所以两个都没捕获,原因也相同:所有测试都通过一条不会触及插件真实加载方式和服务真实解析方式的路径来挂载插件。
13
+ ACP 服务器(`dsh --profile acp`、`@deepseek-ai/dsh-acp`)在真实编辑器(Zed)连接的瞬间崩溃:第一个 `session/new` 请求返回 `Internal error: cannot get property "agents" without inject`,`session/load` 对 `sessionPersistence` 返回同样的错误。尽管有 178 个绿色单元测试和 100% 行覆盖率,bridge 在生产环境中完全无法工作。两个独立的 bug 隐藏在同一个错误字符串背后,测试套件之所以两个都没捕获,原因也相同:所有测试都通过一条不会触及插件真实加载方式和服务真实解析方式的路径来挂载插件。
14
14
 
15
15
  ## 影响
16
16
 
@@ -101,9 +101,9 @@ if (!ctx.fiber.runtime) return ctx.reflect.get(prop, false) // ← direct glob
101
101
 
102
102
  - **删除 `export default apply`**(`packages/acp/acp/src/index.ts`)——Bug #1 的修复。
103
103
  - **`AgentLoop.resume` 使用 `this.ctx.get('sessionPersistence')`**(`packages/core/agent-loop/src/index.ts`)——Bug #2 的修复,附注释说明 shadow 遍历陷阱。
104
- - **无需 key 的 `session/new` e2e,通过真实 stdio 运行**(`examples/acp-agent/tests/acp.e2e.ts`):以子进程方式通过真实 Loader 启动示例,并断言 `session/new` 正常返回。无需 API key 即可明确暴露 Bug #1。已验证恢复 `export default apply` 时测试失败。
104
+ - **无需 key 的 `session/new` e2e,通过真实 stdio 运行**(`apps/cli/tests/profiles/acp/tests/acp.e2e.ts`):以子进程方式通过真实 Loader 启动 profile,并断言 `session/new` 正常返回。无需 API key 即可明确暴露 Bug #1。已验证恢复 `export default apply` 时测试失败。
105
105
  - **e2e spawn 中设置 `TSX_TSCONFIG_PATH`**:子进程从临时 cwd 运行,tsx 无法通过向上搜索找到仓库根的 tsconfig `paths` 映射——因此 dsh-* 的 import 静默回退到已构建的 `lib/`。将 tsx 指向仓库 tsconfig 使解析不依赖 cwd,确保测试运行的是*源码*而非可能陈旧的构建产物。
106
- - **[docs/testing.md](../testing.md) 规则**:「测试真实入口路径」,行覆盖率不等于行为覆盖率——将这一教训编纂为所有未来插件的规则。
106
+ - **[docs/testing.md](../testing.zh.md) 规则**:「测试真实入口路径」,行覆盖率不等于行为覆盖率——将这一教训编纂为所有未来插件的规则。
107
107
 
108
108
  ## 经验教训
109
109
 
@@ -2,5 +2,5 @@
2
2
  # side as of the last confirmed-consistent state. Both languages carry equal authority;
3
3
  # after editing either side, bring the other along and re-record with:
4
4
  # pnpm run verify-translation-pairing --write docs/postmortem/0002-js-expression-disabled-filesystem-tools.md
5
- 0002-js-expression-disabled-filesystem-tools.md: 93c62261f54e273ea5dbb2ca1a236daf9b2a6f15
6
- 0002-js-expression-disabled-filesystem-tools.zh.md: c0c1e1e18d5024ccaf09e199150f4319aa2b8ace
5
+ 0002-js-expression-disabled-filesystem-tools.md: 317b9759afda90b3864619f874f99e5a7047395f
6
+ 0002-js-expression-disabled-filesystem-tools.zh.md: 1c87796c66309be28a17a6c0e71e48ae2e2fda40
@@ -36,9 +36,9 @@ The snapshot framework treated any deterministic transcript as valid behavior. H
36
36
  ## Guardrails added
37
37
 
38
38
  - Filesystem scenarios boot `fs.cordis.yml`, an explicit fixed full-access overlay with a paired replay config and its own request-header class.
39
- - [`AGENTS.md`](../../AGENTS.md) and the [Cordis primer](../cordis-primer.md#loader-configuration) state that `!!js` is valid only under plugin `config` and conditional composition uses overlays.
39
+ - [`AGENTS.md`](../../AGENTS.md) and the [Cordis primer](../cordis-primer.md#loader-configuration) state that `!!js` is valid under plugin `config` and entry `disabled`; other entry metadata stays literal, so conditional composition uses overlays.
40
40
  - `verify-cordis-config` parses repository Cordis YAML and rejects expression nodes in Loader entry metadata, including include patches and inserted entries.
41
- - `dsh-acp-snapshot` rejects structured `UNKNOWN_TOOL` results in fresh runs and committed session fixtures before they can be committed as expected outputs.
41
+ - `dsh-session-snapshot` rejects structured `UNKNOWN_TOOL` results in fresh runs and committed session fixtures before they can be committed as expected outputs.
42
42
 
43
43
  ## Lessons
44
44