dsh-plugin-guide 0.2.0 → 0.3.2

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 (373) hide show
  1. package/README.es.md +36 -18
  2. package/README.hi.md +36 -18
  3. package/README.md +38 -18
  4. package/README.pt.md +36 -18
  5. package/README.zh.md +38 -18
  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 +2 -2
  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 +3 -3
  15. package/package.json +13 -4
  16. package/references/cordis-paper-and-community.md +1 -1
  17. package/references/harness-repo.md +1 -1
  18. package/references/official-docs/AGENTS.md +27 -22
  19. package/references/official-docs/README.i18n.yaml +2 -2
  20. package/references/official-docs/README.md +1 -1
  21. package/references/official-docs/README.zh.md +19 -9
  22. package/references/official-docs/SNAPSHOT.md +5 -5
  23. package/references/official-docs/THIRD_PARTY_NOTICES.md +36 -13
  24. package/references/official-docs/docs/AGENTS.md +4 -4
  25. package/references/official-docs/docs/agent-lifecycle.i18n.yaml +2 -2
  26. package/references/official-docs/docs/agent-lifecycle.md +1 -1
  27. package/references/official-docs/docs/agent-lifecycle.zh.md +2 -2
  28. package/references/official-docs/docs/api-gateway.i18n.yaml +2 -2
  29. package/references/official-docs/docs/api-gateway.md +8 -8
  30. package/references/official-docs/docs/api-gateway.zh.md +8 -8
  31. package/references/official-docs/docs/architecture.i18n.yaml +2 -2
  32. package/references/official-docs/docs/architecture.md +23 -7
  33. package/references/official-docs/docs/architecture.zh.md +36 -20
  34. package/references/official-docs/docs/capability-seams.i18n.yaml +2 -2
  35. package/references/official-docs/docs/capability-seams.md +132 -67
  36. package/references/official-docs/docs/capability-seams.zh.md +132 -67
  37. package/references/official-docs/docs/config-catalog.i18n.yaml +2 -2
  38. package/references/official-docs/docs/config-catalog.md +659 -373
  39. package/references/official-docs/docs/config-catalog.zh.md +677 -391
  40. package/references/official-docs/docs/cookbook/adding-a-package.i18n.yaml +2 -2
  41. package/references/official-docs/docs/cookbook/adding-a-package.md +2 -3
  42. package/references/official-docs/docs/cookbook/adding-a-package.zh.md +8 -7
  43. package/references/official-docs/docs/cookbook/{adding-a-conversation-node.i18n.yaml → adding-a-remote-api.i18n.yaml} +3 -3
  44. package/references/official-docs/docs/cookbook/adding-a-remote-api.md +197 -0
  45. package/references/official-docs/docs/cookbook/adding-a-remote-api.zh.md +197 -0
  46. package/references/official-docs/docs/cookbook/adding-a-settings-card.i18n.yaml +6 -0
  47. package/references/official-docs/docs/cookbook/adding-a-settings-card.md +102 -0
  48. package/references/official-docs/docs/cookbook/adding-a-settings-card.zh.md +102 -0
  49. package/references/official-docs/docs/cookbook/adding-a-tool.i18n.yaml +2 -2
  50. package/references/official-docs/docs/cookbook/adding-a-tool.md +11 -4
  51. package/references/official-docs/docs/cookbook/adding-a-tool.zh.md +16 -9
  52. package/references/official-docs/docs/cookbook/adding-a-vendored-package.i18n.yaml +2 -2
  53. package/references/official-docs/docs/cookbook/adding-a-vendored-package.md +2 -2
  54. package/references/official-docs/docs/cookbook/adding-a-vendored-package.zh.md +4 -4
  55. package/references/official-docs/docs/cookbook/adding-an-llm-adapter.i18n.yaml +2 -2
  56. package/references/official-docs/docs/cookbook/adding-an-llm-adapter.md +1 -1
  57. package/references/official-docs/docs/cookbook/adding-an-llm-adapter.zh.md +3 -3
  58. package/references/official-docs/docs/cookbook/extension-cookbook.i18n.yaml +2 -2
  59. package/references/official-docs/docs/cookbook/extension-cookbook.md +9 -8
  60. package/references/official-docs/docs/cookbook/extension-cookbook.zh.md +17 -14
  61. package/references/official-docs/docs/cookbook/maintaining-dsh-code-review.i18n.yaml +1 -1
  62. package/references/official-docs/docs/cookbook/maintaining-dsh-code-review.zh.md +1 -1
  63. package/references/official-docs/docs/cookbook/responding-to-pr-review-on-a-stack.i18n.yaml +1 -1
  64. package/references/official-docs/docs/cookbook/responding-to-pr-review-on-a-stack.zh.md +1 -1
  65. package/references/official-docs/docs/cordis-api/context.i18n.yaml +1 -1
  66. package/references/official-docs/docs/cordis-api/context.zh.md +1 -1
  67. package/references/official-docs/docs/cordis-api/events.i18n.yaml +1 -1
  68. package/references/official-docs/docs/cordis-api/events.zh.md +1 -1
  69. package/references/official-docs/docs/cordis-api/inherited.md +1 -1
  70. package/references/official-docs/docs/cordis-primer.i18n.yaml +2 -2
  71. package/references/official-docs/docs/cordis-primer.md +2 -1
  72. package/references/official-docs/docs/cordis-primer.zh.md +3 -2
  73. package/references/official-docs/docs/cordis-tutorial/01-first-plugin.i18n.yaml +1 -1
  74. package/references/official-docs/docs/cordis-tutorial/01-first-plugin.zh.md +4 -4
  75. package/references/official-docs/docs/cordis-tutorial/02-lifecycle-and-effects.i18n.yaml +1 -1
  76. package/references/official-docs/docs/cordis-tutorial/02-lifecycle-and-effects.zh.md +4 -4
  77. package/references/official-docs/docs/cordis-tutorial/03-services.i18n.yaml +1 -1
  78. package/references/official-docs/docs/cordis-tutorial/03-services.zh.md +4 -4
  79. package/references/official-docs/docs/cordis-tutorial/04-events.i18n.yaml +1 -1
  80. package/references/official-docs/docs/cordis-tutorial/04-events.zh.md +4 -4
  81. package/references/official-docs/docs/cordis-tutorial/05-config.i18n.yaml +1 -1
  82. package/references/official-docs/docs/cordis-tutorial/05-config.zh.md +2 -2
  83. package/references/official-docs/docs/cordis-tutorial/06-composition-and-hmr.i18n.yaml +1 -1
  84. package/references/official-docs/docs/cordis-tutorial/06-composition-and-hmr.zh.md +3 -3
  85. package/references/official-docs/docs/cordis-tutorial/07-into-the-harness.i18n.yaml +2 -2
  86. package/references/official-docs/docs/cordis-tutorial/07-into-the-harness.md +5 -4
  87. package/references/official-docs/docs/cordis-tutorial/07-into-the-harness.zh.md +11 -10
  88. package/references/official-docs/docs/cordis-tutorial/index.i18n.yaml +1 -1
  89. package/references/official-docs/docs/cordis-tutorial/index.zh.md +10 -10
  90. package/references/official-docs/docs/deepseek-llm-api-wire-extensions.i18n.yaml +6 -0
  91. package/references/official-docs/docs/deepseek-llm-api-wire-extensions.md +159 -0
  92. package/references/official-docs/docs/deepseek-llm-api-wire-extensions.zh.md +159 -0
  93. package/references/official-docs/docs/defensive-patterns.i18n.yaml +1 -1
  94. package/references/official-docs/docs/defensive-patterns.zh.md +3 -1
  95. package/references/official-docs/docs/development.i18n.yaml +2 -2
  96. package/references/official-docs/docs/development.md +9 -13
  97. package/references/official-docs/docs/development.zh.md +23 -21
  98. package/references/official-docs/docs/event-producer-consumer.i18n.yaml +2 -2
  99. package/references/official-docs/docs/event-producer-consumer.md +55 -46
  100. package/references/official-docs/docs/event-producer-consumer.zh.md +55 -46
  101. package/references/official-docs/docs/glossary.i18n.yaml +2 -2
  102. package/references/official-docs/docs/glossary.md +1 -1
  103. package/references/official-docs/docs/glossary.zh.md +1 -1
  104. package/references/official-docs/docs/graph-atlas.i18n.yaml +2 -2
  105. package/references/official-docs/docs/graph-atlas.md +0 -2
  106. package/references/official-docs/docs/graph-atlas.zh.md +7 -9
  107. package/references/official-docs/docs/i18n/README.i18n.yaml +2 -2
  108. package/references/official-docs/docs/i18n/README.md +7 -7
  109. package/references/official-docs/docs/i18n/README.zh.md +11 -9
  110. package/references/official-docs/docs/i18n/style-samples.md +3 -3
  111. package/references/official-docs/docs/i18n/translation-prompt.md +3 -3
  112. package/references/official-docs/docs/i18n/translation-rules.i18n.yaml +2 -2
  113. package/references/official-docs/docs/i18n/translation-rules.md +2 -2
  114. package/references/official-docs/docs/i18n/translation-rules.zh.md +3 -3
  115. package/references/official-docs/docs/module-graph.i18n.yaml +2 -2
  116. package/references/official-docs/docs/module-graph.md +666 -747
  117. package/references/official-docs/docs/module-graph.zh.md +668 -749
  118. package/references/official-docs/docs/persistence-catalog.i18n.yaml +2 -2
  119. package/references/official-docs/docs/persistence-catalog.md +160 -39
  120. package/references/official-docs/docs/persistence-catalog.zh.md +169 -48
  121. package/references/official-docs/docs/postmortem/0001-acp-default-export-drops-inject.i18n.yaml +2 -2
  122. package/references/official-docs/docs/postmortem/0001-acp-default-export-drops-inject.md +2 -2
  123. package/references/official-docs/docs/postmortem/0001-acp-default-export-drops-inject.zh.md +3 -3
  124. package/references/official-docs/docs/postmortem/0002-js-expression-disabled-filesystem-tools.i18n.yaml +2 -2
  125. package/references/official-docs/docs/postmortem/0002-js-expression-disabled-filesystem-tools.md +2 -2
  126. package/references/official-docs/docs/postmortem/0002-js-expression-disabled-filesystem-tools.zh.md +2 -2
  127. package/references/official-docs/docs/postmortem/0003-web-agent-gui-feedback-loop.i18n.yaml +2 -2
  128. package/references/official-docs/docs/postmortem/0003-web-agent-gui-feedback-loop.md +2 -2
  129. package/references/official-docs/docs/postmortem/0003-web-agent-gui-feedback-loop.zh.md +2 -2
  130. package/references/official-docs/docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.i18n.yaml +2 -2
  131. package/references/official-docs/docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.md +1 -1
  132. package/references/official-docs/docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.zh.md +2 -2
  133. package/references/official-docs/docs/postmortem/README.i18n.yaml +1 -1
  134. package/references/official-docs/docs/postmortem/README.zh.md +5 -5
  135. package/references/official-docs/docs/rescope.i18n.yaml +2 -2
  136. package/references/official-docs/docs/rescope.md +2 -2
  137. package/references/official-docs/docs/rescope.zh.md +3 -3
  138. package/references/official-docs/docs/subsystems/README.i18n.yaml +2 -2
  139. package/references/official-docs/docs/subsystems/README.md +8 -2
  140. package/references/official-docs/docs/subsystems/README.zh.md +53 -47
  141. package/references/official-docs/docs/subsystems/agent-team.i18n.yaml +6 -0
  142. package/references/official-docs/docs/subsystems/agent-team.md +206 -0
  143. package/references/official-docs/docs/subsystems/agent-team.zh.md +206 -0
  144. package/references/official-docs/docs/subsystems/approval.i18n.yaml +2 -2
  145. package/references/official-docs/docs/subsystems/approval.md +12 -12
  146. package/references/official-docs/docs/subsystems/approval.zh.md +13 -13
  147. package/references/official-docs/docs/subsystems/attachment.i18n.yaml +2 -2
  148. package/references/official-docs/docs/subsystems/attachment.md +90 -7
  149. package/references/official-docs/docs/subsystems/attachment.zh.md +90 -7
  150. package/references/official-docs/docs/subsystems/client-modules.i18n.yaml +2 -2
  151. package/references/official-docs/docs/subsystems/client-modules.md +69 -19
  152. package/references/official-docs/docs/subsystems/client-modules.zh.md +69 -19
  153. package/references/official-docs/docs/subsystems/code-runtime.i18n.yaml +2 -2
  154. package/references/official-docs/docs/subsystems/code-runtime.md +5 -5
  155. package/references/official-docs/docs/subsystems/code-runtime.zh.md +6 -6
  156. package/references/official-docs/docs/subsystems/commands.i18n.yaml +2 -2
  157. package/references/official-docs/docs/subsystems/commands.md +29 -6
  158. package/references/official-docs/docs/subsystems/commands.zh.md +30 -7
  159. package/references/official-docs/docs/subsystems/compaction.i18n.yaml +2 -2
  160. package/references/official-docs/docs/subsystems/compaction.md +5 -5
  161. package/references/official-docs/docs/subsystems/compaction.zh.md +11 -11
  162. package/references/official-docs/docs/subsystems/conversation.i18n.yaml +6 -0
  163. package/references/official-docs/docs/{cookbook/adding-a-conversation-node.md → subsystems/conversation.md} +49 -24
  164. package/references/official-docs/docs/{cookbook/adding-a-conversation-node.zh.md → subsystems/conversation.zh.md} +49 -24
  165. package/references/official-docs/docs/subsystems/core.i18n.yaml +2 -2
  166. package/references/official-docs/docs/subsystems/core.md +110 -33
  167. package/references/official-docs/docs/subsystems/core.zh.md +141 -62
  168. package/references/official-docs/docs/subsystems/credentials.i18n.yaml +2 -2
  169. package/references/official-docs/docs/subsystems/credentials.md +207 -11
  170. package/references/official-docs/docs/subsystems/credentials.zh.md +207 -11
  171. package/references/official-docs/docs/subsystems/extensions.i18n.yaml +2 -2
  172. package/references/official-docs/docs/subsystems/extensions.md +27 -9
  173. package/references/official-docs/docs/subsystems/extensions.zh.md +30 -12
  174. package/references/official-docs/docs/subsystems/feedback.i18n.yaml +2 -2
  175. package/references/official-docs/docs/subsystems/feedback.md +4 -4
  176. package/references/official-docs/docs/subsystems/feedback.zh.md +4 -4
  177. package/references/official-docs/docs/subsystems/filesystem.i18n.yaml +2 -2
  178. package/references/official-docs/docs/subsystems/filesystem.md +17 -7
  179. package/references/official-docs/docs/subsystems/filesystem.zh.md +19 -9
  180. package/references/official-docs/docs/subsystems/goal.i18n.yaml +2 -2
  181. package/references/official-docs/docs/subsystems/goal.md +4 -4
  182. package/references/official-docs/docs/subsystems/goal.zh.md +8 -8
  183. package/references/official-docs/docs/subsystems/invariants.i18n.yaml +2 -2
  184. package/references/official-docs/docs/subsystems/invariants.md +2 -2
  185. package/references/official-docs/docs/subsystems/invariants.zh.md +5 -5
  186. package/references/official-docs/docs/subsystems/jobs.i18n.yaml +2 -2
  187. package/references/official-docs/docs/subsystems/jobs.md +3 -3
  188. package/references/official-docs/docs/subsystems/jobs.zh.md +6 -6
  189. package/references/official-docs/docs/subsystems/llm-streaming.i18n.yaml +2 -2
  190. package/references/official-docs/docs/subsystems/llm-streaming.md +193 -22
  191. package/references/official-docs/docs/subsystems/llm-streaming.zh.md +199 -28
  192. package/references/official-docs/docs/subsystems/lsp.i18n.yaml +2 -2
  193. package/references/official-docs/docs/subsystems/lsp.md +2 -2
  194. package/references/official-docs/docs/subsystems/lsp.zh.md +3 -3
  195. package/references/official-docs/docs/subsystems/permission-presets.i18n.yaml +2 -2
  196. package/references/official-docs/docs/subsystems/permission-presets.md +8 -8
  197. package/references/official-docs/docs/subsystems/permission-presets.zh.md +8 -8
  198. package/references/official-docs/docs/subsystems/persistence.i18n.yaml +2 -2
  199. package/references/official-docs/docs/subsystems/persistence.md +35 -17
  200. package/references/official-docs/docs/subsystems/persistence.zh.md +38 -20
  201. package/references/official-docs/docs/subsystems/plan.i18n.yaml +2 -2
  202. package/references/official-docs/docs/subsystems/plan.md +4 -4
  203. package/references/official-docs/docs/subsystems/plan.zh.md +10 -10
  204. package/references/official-docs/docs/subsystems/sandbox.i18n.yaml +2 -2
  205. package/references/official-docs/docs/subsystems/sandbox.md +5 -3
  206. package/references/official-docs/docs/subsystems/sandbox.zh.md +8 -6
  207. package/references/official-docs/docs/subsystems/schedule.i18n.yaml +2 -2
  208. package/references/official-docs/docs/subsystems/schedule.md +9 -3
  209. package/references/official-docs/docs/subsystems/schedule.zh.md +11 -5
  210. package/references/official-docs/docs/subsystems/scope.i18n.yaml +1 -1
  211. package/references/official-docs/docs/subsystems/scope.zh.md +1 -1
  212. package/references/official-docs/docs/subsystems/session-projection.i18n.yaml +2 -2
  213. package/references/official-docs/docs/subsystems/session-projection.md +136 -67
  214. package/references/official-docs/docs/subsystems/session-projection.zh.md +136 -67
  215. package/references/official-docs/docs/subsystems/session-query.i18n.yaml +2 -2
  216. package/references/official-docs/docs/subsystems/session-query.md +11 -3
  217. package/references/official-docs/docs/subsystems/session-query.zh.md +12 -4
  218. package/references/official-docs/docs/subsystems/session-reference.i18n.yaml +2 -2
  219. package/references/official-docs/docs/subsystems/session-reference.md +94 -7
  220. package/references/official-docs/docs/subsystems/session-reference.zh.md +95 -8
  221. package/references/official-docs/docs/subsystems/session-telemetry.i18n.yaml +2 -2
  222. package/references/official-docs/docs/subsystems/session-telemetry.md +5 -6
  223. package/references/official-docs/docs/subsystems/session-telemetry.zh.md +9 -10
  224. package/references/official-docs/docs/subsystems/session-title.i18n.yaml +2 -2
  225. package/references/official-docs/docs/subsystems/session-title.md +3 -3
  226. package/references/official-docs/docs/subsystems/session-title.zh.md +5 -5
  227. package/references/official-docs/docs/subsystems/session.i18n.yaml +2 -2
  228. package/references/official-docs/docs/subsystems/session.md +273 -39
  229. package/references/official-docs/docs/subsystems/session.zh.md +290 -54
  230. package/references/official-docs/docs/subsystems/settings.i18n.yaml +2 -2
  231. package/references/official-docs/docs/subsystems/settings.md +105 -10
  232. package/references/official-docs/docs/subsystems/settings.zh.md +105 -10
  233. package/references/official-docs/docs/subsystems/shell.i18n.yaml +2 -2
  234. package/references/official-docs/docs/subsystems/shell.md +3 -3
  235. package/references/official-docs/docs/subsystems/shell.zh.md +11 -11
  236. package/references/official-docs/docs/subsystems/skills.i18n.yaml +2 -2
  237. package/references/official-docs/docs/subsystems/skills.md +26 -3
  238. package/references/official-docs/docs/subsystems/skills.zh.md +29 -6
  239. package/references/official-docs/docs/subsystems/slots.i18n.yaml +6 -0
  240. package/references/official-docs/docs/subsystems/slots.md +174 -0
  241. package/references/official-docs/docs/subsystems/slots.zh.md +174 -0
  242. package/references/official-docs/docs/subsystems/spill.i18n.yaml +2 -2
  243. package/references/official-docs/docs/subsystems/spill.md +4 -4
  244. package/references/official-docs/docs/subsystems/spill.zh.md +6 -6
  245. package/references/official-docs/docs/subsystems/storage.i18n.yaml +2 -2
  246. package/references/official-docs/docs/subsystems/storage.md +13 -5
  247. package/references/official-docs/docs/subsystems/storage.zh.md +16 -8
  248. package/references/official-docs/docs/subsystems/subagent.i18n.yaml +2 -2
  249. package/references/official-docs/docs/subsystems/subagent.md +120 -32
  250. package/references/official-docs/docs/subsystems/subagent.zh.md +131 -41
  251. package/references/official-docs/docs/subsystems/subprocess.i18n.yaml +2 -2
  252. package/references/official-docs/docs/subsystems/subprocess.md +3 -3
  253. package/references/official-docs/docs/subsystems/subprocess.zh.md +5 -5
  254. package/references/official-docs/docs/subsystems/system-prompt.i18n.yaml +2 -2
  255. package/references/official-docs/docs/subsystems/system-prompt.md +21 -8
  256. package/references/official-docs/docs/subsystems/system-prompt.zh.md +23 -10
  257. package/references/official-docs/docs/subsystems/terminal.i18n.yaml +2 -2
  258. package/references/official-docs/docs/subsystems/terminal.md +2 -2
  259. package/references/official-docs/docs/subsystems/terminal.zh.md +4 -4
  260. package/references/official-docs/docs/subsystems/todo.i18n.yaml +6 -0
  261. package/references/official-docs/docs/subsystems/todo.md +32 -0
  262. package/references/official-docs/docs/subsystems/todo.zh.md +32 -0
  263. package/references/official-docs/docs/subsystems/token-meter.i18n.yaml +2 -2
  264. package/references/official-docs/docs/subsystems/token-meter.md +27 -12
  265. package/references/official-docs/docs/subsystems/token-meter.zh.md +28 -13
  266. package/references/official-docs/docs/subsystems/tools.i18n.yaml +2 -2
  267. package/references/official-docs/docs/subsystems/tools.md +46 -46
  268. package/references/official-docs/docs/subsystems/tools.zh.md +54 -54
  269. package/references/official-docs/docs/subsystems/typert.i18n.yaml +2 -2
  270. package/references/official-docs/docs/subsystems/typert.md +65 -58
  271. package/references/official-docs/docs/subsystems/typert.zh.md +67 -60
  272. package/references/official-docs/docs/subsystems/user-questions.i18n.yaml +2 -2
  273. package/references/official-docs/docs/subsystems/user-questions.md +35 -35
  274. package/references/official-docs/docs/subsystems/user-questions.zh.md +35 -35
  275. package/references/official-docs/docs/subsystems/web-client.i18n.yaml +6 -0
  276. package/references/official-docs/docs/subsystems/web-client.md +95 -0
  277. package/references/official-docs/docs/subsystems/web-client.zh.md +95 -0
  278. package/references/official-docs/docs/subsystems/web-server.i18n.yaml +2 -2
  279. package/references/official-docs/docs/subsystems/web-server.md +55 -9
  280. package/references/official-docs/docs/subsystems/web-server.zh.md +56 -10
  281. package/references/official-docs/docs/subsystems/web.i18n.yaml +2 -2
  282. package/references/official-docs/docs/subsystems/web.md +14 -7
  283. package/references/official-docs/docs/subsystems/web.zh.md +16 -9
  284. package/references/official-docs/docs/subsystems/webhook.i18n.yaml +6 -0
  285. package/references/official-docs/docs/subsystems/webhook.md +70 -0
  286. package/references/official-docs/docs/subsystems/webhook.zh.md +70 -0
  287. package/references/official-docs/docs/subsystems/workflow.i18n.yaml +2 -2
  288. package/references/official-docs/docs/subsystems/workflow.md +8 -8
  289. package/references/official-docs/docs/subsystems/workflow.zh.md +13 -13
  290. package/references/official-docs/docs/subsystems/workspace.i18n.yaml +2 -2
  291. package/references/official-docs/docs/subsystems/workspace.md +98 -5
  292. package/references/official-docs/docs/subsystems/workspace.zh.md +102 -9
  293. package/references/official-docs/docs/testing.i18n.yaml +2 -2
  294. package/references/official-docs/docs/testing.md +15 -10
  295. package/references/official-docs/docs/testing.zh.md +15 -10
  296. package/references/official-docs/docs/tool-catalog.i18n.yaml +2 -2
  297. package/references/official-docs/docs/tool-catalog.md +433 -27
  298. package/references/official-docs/docs/tool-catalog.zh.md +438 -29
  299. package/references/official-docs/docs/tool-execution-pipeline.i18n.yaml +2 -2
  300. package/references/official-docs/docs/tool-execution-pipeline.md +1 -1
  301. package/references/official-docs/docs/tool-execution-pipeline.zh.md +1 -1
  302. package/references/official-docs/docs/user/develop/basic/config.i18n.yaml +2 -2
  303. package/references/official-docs/docs/user/develop/basic/config.md +1 -1
  304. package/references/official-docs/docs/user/develop/basic/config.zh.md +4 -4
  305. package/references/official-docs/docs/user/develop/basic/index.i18n.yaml +1 -1
  306. package/references/official-docs/docs/user/develop/basic/index.zh.md +5 -5
  307. package/references/official-docs/docs/user/develop/basic/publish.i18n.yaml +2 -2
  308. package/references/official-docs/docs/user/develop/basic/publish.md +3 -3
  309. package/references/official-docs/docs/user/develop/basic/publish.zh.md +7 -7
  310. package/references/official-docs/docs/user/develop/basic/tool.i18n.yaml +2 -2
  311. package/references/official-docs/docs/user/develop/basic/tool.md +3 -3
  312. package/references/official-docs/docs/user/develop/basic/tool.zh.md +4 -4
  313. package/references/official-docs/docs/user/develop/framework/events.i18n.yaml +2 -2
  314. package/references/official-docs/docs/user/develop/framework/events.md +2 -2
  315. package/references/official-docs/docs/user/develop/framework/events.zh.md +3 -3
  316. package/references/official-docs/docs/user/develop/framework/index.i18n.yaml +1 -1
  317. package/references/official-docs/docs/user/develop/framework/index.zh.md +3 -3
  318. package/references/official-docs/docs/user/develop/framework/service.i18n.yaml +2 -2
  319. package/references/official-docs/docs/user/develop/framework/service.md +1 -1
  320. package/references/official-docs/docs/user/develop/framework/service.zh.md +3 -3
  321. package/references/official-docs/docs/user/develop/practice/dynamic-cordis.i18n.yaml +6 -0
  322. package/references/official-docs/docs/user/develop/practice/dynamic-cordis.md +15 -0
  323. package/references/official-docs/docs/user/develop/practice/dynamic-cordis.zh.md +15 -0
  324. package/references/official-docs/docs/user/develop/practice/index.i18n.yaml +2 -2
  325. package/references/official-docs/docs/user/develop/practice/index.md +1 -1
  326. package/references/official-docs/docs/user/develop/practice/index.zh.md +3 -3
  327. package/references/official-docs/docs/user/develop/practice/llm-adapter.i18n.yaml +2 -2
  328. package/references/official-docs/docs/user/develop/practice/llm-adapter.md +4 -3
  329. package/references/official-docs/docs/user/develop/practice/llm-adapter.zh.md +4 -3
  330. package/references/official-docs/docs/user/guide/github-review.i18n.yaml +6 -0
  331. package/references/official-docs/docs/user/guide/github-review.md +102 -0
  332. package/references/official-docs/docs/user/guide/github-review.zh.md +102 -0
  333. package/references/official-docs/docs/user/guide/index.i18n.yaml +2 -2
  334. package/references/official-docs/docs/user/guide/index.md +2 -2
  335. package/references/official-docs/docs/user/guide/index.zh.md +8 -8
  336. package/references/official-docs/docs/user/guide/mcp-memory.i18n.yaml +6 -0
  337. package/references/official-docs/docs/user/guide/mcp-memory.md +101 -0
  338. package/references/official-docs/docs/user/guide/mcp-memory.zh.md +101 -0
  339. package/references/official-docs/docs/user/guide/providers.i18n.yaml +2 -2
  340. package/references/official-docs/docs/user/guide/providers.md +40 -1
  341. package/references/official-docs/docs/user/guide/providers.zh.md +41 -2
  342. package/references/official-docs/docs/user/guide/python-sdk.i18n.yaml +2 -2
  343. package/references/official-docs/docs/user/guide/python-sdk.md +80 -34
  344. package/references/official-docs/docs/user/guide/python-sdk.zh.md +87 -41
  345. package/references/official-docs/docs/user/guide/schedule.i18n.yaml +6 -0
  346. package/references/official-docs/docs/user/guide/schedule.md +21 -0
  347. package/references/official-docs/docs/user/guide/schedule.zh.md +21 -0
  348. package/references/official-docs/docs/web-styling.i18n.yaml +1 -1
  349. package/references/official-docs/docs/web-styling.zh.md +2 -2
  350. package/references/official-docs/packages/AGENTS.md +3 -2
  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/check-docs-drift.ps1 +55 -0
  357. package/scripts/check-readme-sync.mjs +91 -0
  358. package/scripts/download-sources.ps1 +1 -1
  359. package/scripts/sync-official-docs.ps1 +19 -11
  360. package/scripts/verify-kit.ps1 +0 -4
  361. package/templates/js/README.es.md +1 -1
  362. package/templates/js/README.hi.md +1 -1
  363. package/templates/js/README.md +1 -1
  364. package/templates/js/README.pt.md +1 -1
  365. package/templates/js/README.zh.md +1 -1
  366. package/templates/js/package.json +4 -4
  367. package/templates/ts/README.es.md +1 -1
  368. package/templates/ts/README.hi.md +1 -1
  369. package/templates/ts/README.md +1 -1
  370. package/templates/ts/README.pt.md +1 -1
  371. package/templates/ts/README.zh.md +1 -1
  372. package/templates/ts/package.json +4 -4
  373. package/references/official-docs/examples/AGENTS.md +0 -20
@@ -1,12 +1,32 @@
1
- # 添加 Web Client Conversation Node
1
+ # Conversation 组装
2
2
 
3
- [English](adding-a-conversation-node.md) | 中文
3
+ [English](conversation.md) | 中文
4
4
 
5
- 本教程为 Web Client Chat 视图添加一行由业务自行拥有的内容。完成后的插件会把一个持久 Session 事件族关联成一个 Context,增量构造业务 State,发布类型化 Step 数据,再渲染 keyed Chat Node;整个过程不扫描 Session 窗口或其他已渲染节点。本教程假设 Host 已经记录这些事件,且该 Client 插件已组装进 Web bundle;Host 侧外部 UITrajectory 等额外视图目标不在本文范围内。
5
+ Conversation Client `SessionEventLikeEntry` window 与浏览器 view 之间的 target-neutral assembly 层。[`ui-conversation`](../../packages/client/ui-conversation/README.zh.md)拥有 event view registry、每个 `SessionBinding` 对应的 identity-stable binding、Turn/Step Location、增量 Context assembly、target source、共享 shell 与输入编排。[`ui-chat`](../../packages/client/ui-chat/README.zh.md)[`ui-trajectory`](../../packages/client/ui-trajectory/README.zh.md)等 target 包拥有各自的 Definition、最终 snapshot 与渲染。
6
6
 
7
- [Conversation Node 组装决策](../../.agents/notes/implemented/architecture/2026-08-09-client-conversation-node-assembly.md)记录完整的引擎模型和设计理由;本文只说明实现路径。
7
+ 本文定义数据模型与业务自有 Conversation node 的扩展路径。[Web Client 架构](web-client.zh.md)说明该子系统在 Client model 与 Slots 之间的位置;[Conversation Node 组装决策](../../.agents/notes/implemented/architecture/2026-08-09-client-conversation-node-assembly.zh.md)记录其设计理由。
8
8
 
9
- ## 1. 设计可回放的事件族
9
+ ## 数据模型与所有权
10
+
11
+ Session Controller 拥有连续的已加载逻辑 event window。每个 `SessionEventLikeEntry` 都是 `{ type: 'event', event: SessionEvent }` 或 `{ type: 'chunks', event: ChunkRowEvent }`;两种内部 event 都公开 `type`、`seq`、`time` 与 `data`。`ui-conversation` 把这些 entry 直接交给 assembler,不另开 history stream、不转换 record,也不展开 packed member。每个 Session 对应一个 `ConversationNodeAssembler`,它应用所有已注册 Definition,并为每个已注册 view target 发布独立 source。
12
+
13
+ | 概念 | Owner 与用途 |
14
+ |---|---|
15
+ | Event Definition | 业务包一次匹配一条标准 event 或一个 packed Assistant run,以稳定 `(kind, id)` 关联输入、折叠确定性 State,并可选择 materialize 一个 target node。 |
16
+ | Context | Engine 为一个 `(kind, id)` 拥有的有序 Match 与当前 State。一个 packed run 只占一个 update Match;只有 update 的证据可以保持 pending,直到分页补齐其唯一 scalar start。 |
17
+ | Location | Engine 根据持久 boundary event 推导的 Session、Turn 或 Step 坐标。Definition 可以向一个 Turn 或 Step 发布类型化数据。 |
18
+ | View Definition | Target 包为每个 Session 创建一个增量 builder,并拥有该 target 的最终 snapshot 类型。 |
19
+ | View | Chat 或 Trajectory 等 Slot entry 只读取自身 target snapshot,并渲染 target 自有 node。 |
20
+
21
+ Chat 与 Trajectory 可以识别同一个持久 event family,但各自保留自己的 Definition State 与最终 node payload。共享的 target-neutral 机制只包括 identity routing、有序 replay、Location data、predecessor dependency 与 publication cadence。
22
+
23
+ ## Target 激活
24
+
25
+ 每个 Session 都保留单调增长的 active target 集合。创建或读取 target source 不会激活它。shell 会显式激活持久化选择或新选择的 View,其他消费者则通过 target source 的首个订阅激活 target。首次激活会创建该 target 的 builder,并从当前按 target 索引的 Context 调用一次 `replace()`。后续 flush 对每个 active target 调用 `apply()`,取消订阅不会移除 target。
26
+
27
+ shell 拥有 View 选择,并在 binding 创建、被选为 current 或 View roster 变化时,于渲染前解析已注册的偏好 View 或 Chat fallback。assembler 只接收解析后的 target id,不自行选择 Chat 或其他默认 target。第三方 View 使用相同的选择与激活操作。
28
+
29
+ ## 可回放 event family
10
30
 
11
31
  编写 Definition 前先选定稳定的业务 id。构成同一个 Node 的每条事件都必须携带该 id,或只凭自身 payload 独立推导出该 id;Client 绝不能把 update 猜测为属于“最近一个未完成”的 Context。
12
32
 
@@ -22,18 +42,21 @@
22
42
 
23
43
  系统支持增量事件。如果生产方能以较低成本发出 whole-value checkpoint,应优先采用,因为 start 位于已加载窗口之外时它仍可直接使用。每条 delta 都必须携带稳定 id,并且按照日志 `seq` 升序回放时能够确定性地产生 State;它不能依赖只存在于实时内存中的状态。如果当前历史窗口只有 update,Assembler 会保留一个 pending Context,并在更早分页补齐 start 前不构造 State。如果产品必须在 start 尚未加载时渲染,terminal 或 checkpoint 事件就必须携带足够的完整 fallback 状态,让 Definition 能直接构造结果;不要通过扫描无关事件恢复它。
24
44
 
25
- ## 2. 实现 Definition 与类型化 Chat payload
45
+ 连续且属于同一 block 的历史 `assistant/chunk` delta 会以 `chunkrow/text-chunks`、`chunkrow/reasoning-chunks` 或 `chunkrow/tool-call-chunks` 到达。顶层 `seq` 与 `time` 表示首个逻辑成员,`data` 保留每个 fragment 与 timestamp gap。这些 Client-only event 只能充当 update;`start()` 只接收标准 `SessionEvent`。消费 Assistant delta 的 Definition 在同一组 `match()` 与 `update()` 方法里处理相关 packed tag,其他 Definition 直接返回 `null`,无需展开该 run。
46
+
47
+ ## Definition 与类型化 Chat payload
26
48
 
27
49
  为了完整展示关联关系,下面把生产方声明和 Client 贡献写在同一个代码块里。实际的包族中,branded id 与 `SessionEventMap` 声明留在事件生产方,Definition、Chat data 合并与 renderer 留在 Client 插件。
28
50
 
29
51
  ```ts ignore-check
30
52
  import { createElement } from 'react'
53
+ import type { Context as ClientContext } from '@deepseek-ai/cordis'
31
54
  import type { Branded } from '@deepseek-ai/dsh-brand'
32
55
  import type {
33
- ClientContext, ConversationLocation, ConversationNodeContext,
56
+ ConversationLocation, ConversationNodeContext,
34
57
  ConversationNodeDefinition,
35
- } from '@deepseek-ai/dsh-client-runtime/client'
36
- import type { ChatNodeViewProps } from '@deepseek-ai/dsh-client-ui-conversation/client'
58
+ } from '@deepseek-ai/dsh-client-ui-conversation/client'
59
+ import type { ChatNodeViewProps } from '@deepseek-ai/dsh-client-ui-chat/client'
37
60
 
38
61
  type ReviewId = Branded<'ReviewId'>
39
62
 
@@ -88,13 +111,13 @@ interface ReviewChatData {
88
111
  readonly summary?: string
89
112
  }
90
113
 
91
- declare module '@deepseek-ai/dsh-client-ui-conversation/client' {
114
+ declare module '@deepseek-ai/dsh-client-ui-chat/client' {
92
115
  interface ChatNodeDataMap {
93
116
  'review-job': ReviewChatData
94
117
  }
95
118
  }
96
119
 
97
- declare module '@deepseek-ai/dsh-client-runtime/client' {
120
+ declare module '@deepseek-ai/dsh-client-ui-conversation/client' {
98
121
  interface ConversationStepDataMap {
99
122
  'review-job': ReviewChatData
100
123
  }
@@ -182,10 +205,10 @@ function ReviewNodeView({ node }: ChatNodeViewProps<'review-job'>) {
182
205
  return createElement('p', null, text)
183
206
  }
184
207
 
185
- export const inject = ['conversationEvents', 'slots']
208
+ export const inject = ['uiConversation', 'slots']
186
209
 
187
210
  export function apply(ctx: ClientContext): void {
188
- ctx.conversationEvents.register(reviewDefinition)
211
+ ctx.uiConversation.events.register(reviewDefinition)
189
212
  ctx.slots.inject('conversation.chat.node', () => ctx.slots.register({
190
213
  name: 'conversation.chat.node',
191
214
  key: 'review-job',
@@ -193,33 +216,33 @@ export function apply(ctx: ClientContext): void {
193
216
  }
194
217
  ```
195
218
 
196
- `match(event)` 是身份提取器,不是 fold:它只能收到当前事件,并返回 Definition 内部 id 与生命周期角色。命中后,Assembler 通过 `(kind, id)` 定位 Context,再调用一次 `start`,或把当前 State 交给 `update`。两个函数都必须返回引擎随后采用的 State;推荐返回新的 immutable value,但函数原地修改后返回同一对象时,采用语义也相同。
219
+ `match(event)` 是身份提取器,不是 fold:它只能收到当前 `SessionEventLike`,并返回 Definition 内部 id 与生命周期角色。命中后,Assembler 通过 `(kind, id)` 定位 Context;标准 event 可触发一次 `start`,标准或 packed event 可把当前 State 交给 `update`。两个函数都必须返回引擎随后采用的 State;推荐返回新的 immutable value,但函数原地修改后返回同一对象时,采用语义也相同。
197
220
 
198
221
  `buildLocationData(context, scope)` 可以把 Definition 拥有的数据发布到引擎拥有的 Turn 或 Step 上。通过 declaration merging 为每个 key 指定精确 value 类型。同一 Location 内的另一个 Node 可以使用受限 slot hook(例如 `useTurnData(key)`)读取该值,无须取得 Session,也无须扫描 `snapshot.chat.nodes`。
199
222
 
200
223
  `target` 与 `buildViewNode(context)` 必须同时声明一项由 target 拥有的渲染贡献。把 `context.key` 保留为 React 侧身份,根据持久排序证据选择 `anchorSeq`,并且只返回 renderer 可以直接使用的数据。某个 target Node 一旦发布,就要继续返回同一个 key;需要暂时离开可见流时使用 `visibility: 'hidden'`,不要改为返回 `null` 撤回它。
201
224
 
202
- ## 3. 只在 start 时查询更早的业务 Context
225
+ ## Predecessor read
203
226
 
204
227
  有些 Definition 需要另一个业务 kind 在当前位置之前的最新 State。`start` 会收到 `ConversationContextReader`;应在这里调用 `reader.previous<State>(kind)`,不要接收 Context 集合或扫描事件。Reader 返回当前 start `seq` 之前最近一个已启动 Context 的只读数据。
205
228
 
206
229
  Assembler 会记录这项依赖。如果后续 older prepend 带来了更近的前序 Context、补齐了原先未知的窗口缺口,或者前序 State 被修订,引擎会从 `start` 重新运行依赖方 Context,并按 `seq` 升序回放其 update。被查询的 Definition 仍负责把有用信息写入自身 State;Reader 不提供业务专用查询方法,也不授予修改其他 Context 的权限。
207
230
 
208
- ## 4. 理解三条摄入路径
231
+ ## Window 更新路径
209
232
 
210
- 历史可能从尾部开始一页一页向前请求,但每个已接收分页都会先按 `seq` 升序归一化,再进入 State 回放。
233
+ 历史可能从尾部开始一页一页向前请求。Session journal 先校验互不重叠的逻辑 seq range,Assembler 再按每个已接受 input 的首 `seq` 排序并进入 State 回放。
211
234
 
212
235
  | 路径 | 引擎工作 | Definition 可观察到的行为 |
213
236
  |---|---|---|
214
- | open、resync 或 gap repair 时 replace | 重建已加载窗口,每条事件对每个 Definition 匹配一次,再回放每个已有 start 的 Context | 先执行 `start`,再按 `seq` 升序执行其 update;只有 update 的 pending Context 仍没有 State |
215
- | prepend 一页更早历史 | 只匹配新增的更早事件,按 `(kind, id)` 合并进 Context,保留现有 keyed node,并只重放受影响的 Context 与依赖 | 新发现的 start 会激活已收集 update;Location 或前序依赖变化也可能重跑 Context |
216
- | append 一条实时事件 | 每个 Definition 各调用一次 `match`,按 key 查找命中的 Context,只更新该 Context | 对 start 之后的匹配事件执行一次 `update` 并请求一次发布;不扫描已有 Context |
237
+ | open、resync 或 gap repair 时 replace | 重建已加载窗口,每条标准 event 或 packed run 对每个 Definition 匹配一次,再回放每个已有 start 的 Context | 先执行 `start`,再按逻辑 `seq` 升序执行其 update;只有 update 的 pending Context 仍没有 State |
238
+ | prepend 一页更早历史 | 只匹配新增的更早 input,按 `(kind, id)` 合并进 Context,保留现有 keyed node,并只重放受影响的 Context 与依赖 | 新发现的 scalar start 会激活已收集的 scalar 与 packed update;Location 或前序依赖变化也可能重跑 Context |
239
+ | append 一条实时事件 | 每个 Definition 各调用一次 `match`,按 key 查找命中的 Context,只更新该 Context | 对 start 之后的匹配事件执行一次 scalar `update` 并请求一次发布;不扫描已有 Context |
217
240
 
218
- 注册 `D` 个 Definition 时,一条新事件会进行 `D` 次仅当前事件匹配;命中后的 Context key 查询是常数时间。Definition 代码必须维持这个性质:正常 append 热路径不得遍历完整事件窗口、所有 Context、`context.matches` 或已渲染 Node 集合。累计事实放进 State,同 Turn/Step 共享信息放进 Location data,有索引的前序依赖使用 `reader.previous()`。
241
+ 注册 `D` 个 Definition 时,一条新 scalar event 或 packed run 会进行 `D` 次仅当前 input 匹配;命中后的 Context key 查询是常数时间。Definition 代码必须维持这个性质:正常 append 热路径不得遍历完整事件窗口、所有 Context、`context.matches` 或已渲染 Node 集合。累计事实放进 State,同 Turn/Step 共享信息放进 Location data,有索引的前序依赖使用 `reader.previous()`。
219
242
 
220
- `publication` 控制发生 State 变更后何时物化。结构或 terminal 变化使用 `immediate`,高频可见 delta 使用 `animation-frame`,只为后续发布积累 State 时使用 `none`。引擎仍会按日志顺序应用每条 update;该选项只合并视图发布频率。
243
+ `publication` 控制发生 State 变更后何时物化。结构或 terminal 变化使用 `immediate`,高频可见 delta 使用 `animation-frame`,只为后续发布积累 State 时使用 `none`。引擎按日志顺序应用每条 scalar update,并用一次 batch update 应用一个 packed run;该选项只合并视图发布频率。
221
244
 
222
- ## 5. 验证回放、分页与渲染
245
+ ## 验证要求
223
246
 
224
247
  添加聚焦测试,证明以下结果:
225
248
 
@@ -229,5 +252,7 @@ Assembler 会记录这项依赖。如果后续 older prepend 带来了更近的
229
252
  4. prepend 更早分页只增加更早的行;数据未变化的既有 keyed Node value 不被替换。
230
253
  5. 重复的可见 delta 保持 `context.key`,并在请求 `animation-frame` 时每帧最多发布一次。
231
254
  6. keyed renderer 只消费 `node.data` 与受限 Location hook,不扫描 Session 事件窗口、Context 或 Chat Node。
255
+ 7. scalar 与 packed Assistant 历史产生相同的最终 State、timing boundary 和 target snapshot;一个 packed run 在 replace、prepend、Location replay 与 registry rebuild 中始终只保留一个 Match。
256
+ 8. 创建 target source 不执行 builder 工作;显式选择或首次订阅执行一次完整 replace,后续更新送达所有 active target,重复激活不会再次 replace。
232
257
 
233
- 流式与中断处理可参考 [`packages/client/ui-conversation/src/client/conversation-nodes/assistant.ts`](../../packages/client/ui-conversation/src/client/conversation-nodes/assistant.ts),前序查询可参考 [`inbox.ts`](../../packages/client/ui-conversation/src/client/conversation-nodes/inbox.ts) 与 [`message.ts`](../../packages/client/ui-conversation/src/client/conversation-nodes/message.ts),只发布 Turn data 而不创建自有 Node 的例子见 [`packages/client/ui-deliverables`](../../packages/client/ui-deliverables)。
258
+ 流式与中断处理可参考 [`packages/client/ui-chat/src/client/conversation-nodes/assistant.ts`](../../packages/client/ui-chat/src/client/conversation-nodes/assistant.ts),前序查询可参考 [`inbox.ts`](../../packages/client/ui-chat/src/client/conversation-nodes/inbox.ts) 与 [`message.ts`](../../packages/client/ui-chat/src/client/conversation-nodes/message.ts),只发布 Turn data 而不创建自有 Node 的例子见 [`packages/client/ui-deliverables`](../../packages/client/ui-deliverables)。
@@ -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/subsystems/core.md
5
- core.md: d14ad52e57572d5b0b110a0b16ff734e3499bdf5
6
- core.zh.md: 9ace28731f2532f571b66f2e7f6a3ea4a2c4e345
5
+ core.md: 124d30a5abeddd81edd2eb03a9bb213487b6a38e
6
+ core.zh.md: c2d67eabb3b223d3f1d20c42f01280f16656ebef
@@ -17,7 +17,7 @@ A turn flows through the six packages in one loop: the driver in [`agent-loop`](
17
17
  | `agent-loop/` | The concrete driver implementing the public `Agent` contract (`ctx.agentLoop`) | this page |
18
18
  | `scope/` | The scoped-registration primitive the registries and loop build per-agent scoping on | [scope.md](scope.md) |
19
19
 
20
- `scope/` is the one non-service package: a dependency-free library (`createScope`/`scopeOf`/`scopeTarget`) that sits below `session/` and `system-prompt/` in the module graph precisely so they can consume it without a cycle. `agent-loop` is the one concrete implementation of the public `Agent` contract and lives here because it is the harness's default product loop; it runs each driver inside `ctx.agents.withInitiator()`. Extension plugins depend on `agent` — including when they need the initiating Agent — and never on `agent-loop` directly, so the loop stays swappable. The default composition that wires this spine into a runnable agent is [`examples/agent-spine-demo`](../../packages/examples/agent-spine-demo/README.md).
20
+ `scope/` is the one non-service package: a dependency-free library (`createScope`/`scopeOf`/`scopeTarget`) that sits below `session/` and `system-prompt/` in the module graph precisely so they can consume it without a cycle. `agent-loop` is the one concrete implementation of the public `Agent` contract and lives here because it is the harness's default product loop; it runs each driver inside `ctx.agents.withInitiator()`. Extension plugins depend on `agent` — including when they need the initiating Agent — and never on `agent-loop` directly, so the loop stays swappable. [`dsh-base`](../../packages/bundle/base/README.md) is the default product composition, while [`dsh-sdk-minimal`](../../packages/bundle/sdk-minimal/README.md) declares a smaller standalone tree.
21
21
 
22
22
  ## Creation and ownership
23
23
 
@@ -57,9 +57,9 @@ interface AgentHandle {
57
57
  Source: [`packages/core/agent/src/types.ts`](../../packages/core/agent/src/types.ts)
58
58
 
59
59
  ```ts type-equiv
60
- /** Public live-agent handle. */
60
+ /** Public live-agent handle; the runtime face augments its live capabilities. */
61
61
  interface Agent {
62
- /** The single identity shared with {@link session}. */
62
+ /** Session-backed Agent identity. */
63
63
  readonly id: SessionId
64
64
  /** The provider route and model this agent's requests use. */
65
65
  readonly options: AgentOptions
@@ -161,12 +161,14 @@ interface AgentOptions {
161
161
  provider?: string
162
162
  /** Model id interpreted by the selected provider adapter. */
163
163
  model?: string
164
+ /** Adapter-owned reasoning effort for the selected provider/model route. */
165
+ reasoningEffort?: ReasoningEffortId
164
166
  /** Maximum output tokens for each conversation-model request. */
165
167
  maxTokens?: number
166
168
  }
167
169
  ```
168
170
 
169
- Dispatch requires `provider` and `model` after `agent/request`. When present, `maxTokens` must be a positive safe integer and caps every conversation-model request; omission allows the exact-model adapter default to materialize before the request header, or otherwise leaves provider behavior unchanged. An agent-scoped `deployment:persona` prompt section may shadow the global default persona.
171
+ Dispatch requires `provider` and `model` after `agent/request`. An explicit `reasoningEffort` seeds the first request on that route; exact-model resolution validates it, while omission allows the adapter default to materialize. When present, `maxTokens` must be a positive safe integer and caps every conversation-model request; omission allows the exact-model adapter default to materialize before the request header, or otherwise leaves provider behavior unchanged. An agent-scoped `deployment:persona` prompt section may shadow the global default persona.
170
172
 
171
173
  The inbox is the delivery vocabulary — two ordered pending-message lists the agent owns as a durable projection:
172
174
 
@@ -200,7 +202,7 @@ type AgentCancelCause =
200
202
  | { readonly kind: 'disposed' }
201
203
  ```
202
204
 
203
- The cause is a TypeScript-enforced same-process input. An active cancellation holder copies it into the runtime-only `AbortSignal.reason`; a signal grants cooperating listeners no classification authority. Durable `turn/end` retains the coarse `{ kind: 'aborted' }` outcome; recording who requested cancellation would require a separate durable event rather than overloading the terminal result.
205
+ The cause is a TypeScript-enforced same-process input. An active cancellation holder copies it into the runtime-only `AbortSignal.reason`; a signal grants cooperating listeners no classification authority. Durable `turn/end` records the outcome as `{ kind: 'aborted', reason: TurnEndCancelCause }`, so the cancel cause lands in the terminal result.
204
206
 
205
207
  The [event taxonomy](../architecture.md#events) owns the `agent/*` lifecycle, checkpoint, and waterfall contracts. Turn and step boundaries are durable session events rather than agent emits.
206
208
 
@@ -222,7 +224,12 @@ It returns a `PreStepDecision`. Reject opens no step. Enter supplies the complet
222
224
  /** Whether and with which messages the loop enters a proposed step. */
223
225
  type PreStepDecision =
224
226
  | { kind: 'reject' }
225
- | { kind: 'enter'; messages: UserMessage[] }
227
+ | {
228
+ kind: 'enter'
229
+ messages: UserMessage[]
230
+ /** Start a distinct model-message series before this step's admitted messages. */
231
+ startsRequestSeries?: true
232
+ }
226
233
  ```
227
234
 
228
235
  `agent/request-error` runs after a failed model step closes and before its turn closes. Listeners can repair durable state or await policy work while the failed turn's signal is still live. A handling listener returns `{ kind: 'retry' }` without calling `next()`; the default `undefined` leaves the failure terminal.
@@ -232,7 +239,7 @@ type PreStepDecision =
232
239
  type RequestErrorAction = { kind: 'retry' } | undefined
233
240
  ```
234
241
 
235
- `agent/pre-step` is the only serial listener chain before request derivation. `agent/turn-stopping` runs when a turn has no tool or steering continuation, before one final steering drain.
242
+ `agent/pre-step` is the only waterfall listener chain before request derivation. `agent/turn-stopping` runs when a turn has no tool or steering continuation, before one final steering drain.
236
243
 
237
244
  `agent/session-start` carries a `SessionStartSource` (why the session lifecycle began; a bridge keys its SessionStart matcher on it):
238
245
 
@@ -245,7 +252,7 @@ type SessionStartSource = 'startup' | 'resume' | 'clear' | 'compact'
245
252
 
246
253
  A `Session` is an **append-only log** of typed `SessionEvent`s — the single source of truth. The LLM message history is *derived* from the log (`deriveMessages()`), not stored separately. Every entry carries a monotonic `seq`, a `time`, and a `type`-discriminated `data` payload; surface variants may also list cited earlier events in `sourceEventSeqs` and carry a `surfaceOp`.
247
254
 
248
- The `SessionEvent` envelope's exact conditional fields, the twelve event variants (`turn/start`, `turn/end`, `step/start`, `step/end`, `user/message`, `assistant/chunk`, `assistant/message`, `tool/call`, `tool/result`, `steering/message`, `todo/write`, `request/header`), the `deriveMessages()` projection rules, the `TurnTrigger`/`TurnEndReason` reasons, and the execution-enclosure and standalone-event rules are on **[session.md](session.md)**. How the log is made durable — the `SessionPersistence` interface, JSONL/SQLite backends, the `session/flush` checkpoint, crash recovery, and `SessionHeader` — is on **[persistence.md](persistence.md)**.
255
+ The `SessionEvent` envelope's exact conditional fields, the twelve core event variants (`turn/start`, `turn/end`, `step/start`, `step/end`, `user/message`, `assistant/chunk`, `assistant/message`, `tool/call`, `tool/result`, `request/header`, `request/context`, `session/end-seed`), the `deriveMessages()` projection rules, the `TurnEndReason` reasons, and the execution-enclosure and standalone-event rules are on **[session.md](session.md)**. How the log is made durable — the `SessionPersistence` interface, JSONL provider, `session/flush` checkpoint, crash recovery, and `SessionHeader` — is on **[persistence.md](persistence.md)**.
249
256
 
250
257
  ## `ToolDefinition`
251
258
 
@@ -280,14 +287,13 @@ declare module '@deepseek-ai/dsh-llm' {
280
287
  }
281
288
  ```
282
289
 
283
- Six canonical maps use this pattern; a plugin author extends these:
290
+ Five canonical maps use this pattern; a plugin author extends these:
284
291
 
285
292
  | Map | Package | Derives | Catalog |
286
293
  |---|---|---|---|
287
294
  | `ContentBlockMap` | dsh-llm | `ContentBlock` | [llm-streaming.md](llm-streaming.md#content-blocks-and-messages) |
288
295
  | `MessageSourceMap` | dsh-llm | `MessageSource` | [llm-streaming.md](llm-streaming.md#content-blocks-and-messages) |
289
296
  | `FinishReasonMap` | dsh-llm | `FinishReason` | [llm-streaming.md](llm-streaming.md#the-model-request-and-result) |
290
- | `TurnTriggerMap` | dsh-session | `TurnTrigger` | [session.md](session.md) |
291
297
  | `TurnEndReasonMap` | dsh-session | `TurnEndReason` | [session.md](session.md) |
292
298
  | `SessionEventMap` | dsh-session | `SessionEvent` | [session.md](session.md) |
293
299
 
@@ -295,9 +301,9 @@ Two large discriminated unions are the ones consumers `switch` over most: **`Str
295
301
 
296
302
  ### Branded IDs
297
303
 
298
- IDs passed between packages are **branded** — structurally strings, but non-interchangeable at the type level (a `SessionId` cannot be passed where a `CallId` is expected). Construction goes through a per-type factory; comparison, logging, and JSON behave as ordinary strings.
304
+ IDs passed between packages are **branded** — structurally strings, but non-interchangeable at the type level (a `SessionId` cannot be passed where a `ToolCallId` is expected). Construction uses the shared `brandString<T>()` helper or an owner-defined validating factory; comparison, logging, and JSON behave as ordinary strings.
299
305
 
300
- The `Branded<B>` primitive lives in its own type-only package, [dsh-brand](../../packages/util/brand) (no runtime code, no harness-package dependency), so any package can brand the ids it owns without depending on an unrelated capability package.
306
+ The `Branded<B>` primitive and stateless constructor live in [dsh-brand](../../packages/util/brand), which has no harness capability dependency. `brandString<T>()` applies a compile-time-only string brand.
301
307
 
302
308
  Source: [`packages/util/brand/src/index.ts`](../../packages/util/brand/src/index.ts)
303
309
 
@@ -306,7 +312,7 @@ Source: [`packages/util/brand/src/index.ts`](../../packages/util/brand/src/index
306
312
  type Branded<B extends string> = string & { readonly [BRAND]: B }
307
313
  ```
308
314
 
309
- The two core IDs are `CallId` (correlates a tool call with its result; dsh-llm) and `SessionId` (the shared live agent and durable session identity; dsh-session). Capability packages brand their own ids too, such as `JobId` in [jobs.md](jobs.md).
315
+ The two core IDs are `ToolCallId` (correlates a tool call with its result; dsh-llm) and `SessionId` (the shared live agent and durable session identity; dsh-session). Capability packages brand their own ids too, such as `JobId` in [jobs.md](jobs.md).
310
316
 
311
317
  <!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
312
318
 
@@ -314,7 +320,7 @@ The two core IDs are `CallId` (correlates a tool call with its result; dsh-llm)
314
320
 
315
321
  ## Cordis API
316
322
 
317
- Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) — this section is byte-identical in both language sides of the page. Signature blocks use a `ts cordis-catalog` fence and keep the original source JSDoc; dispatch modes are defined in the [primer](../cordis-primer.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
323
+ Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) — the language sides differ only in locale-specific paired document paths. Signature blocks use a `ts cordis-catalog` fence and keep the original source JSDoc; dispatch modes are defined in the [primer](../cordis-primer.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
318
324
 
319
325
  <a id="ctxagentdefaultmodel--agentdefaultmodelconfig"></a>
320
326
 
@@ -338,7 +344,7 @@ currentSelection(): ModelSelection
338
344
  async saveSelection(next: ModelSelection): Promise<void>
339
345
  ```
340
346
 
341
- Source: [`packages/core/agent-default-model/src/index.ts:64`](../../packages/core/agent-default-model/src/index.ts)
347
+ Source: [`packages/core/agent-default-model/src/index.ts`](../../packages/core/agent-default-model/src/index.ts)
342
348
 
343
349
  <a id="ctxagentloop--agentloop"></a>
344
350
 
@@ -377,7 +383,7 @@ async resume(ownerCtx: Context, options: ResumeAgentOptions): Promise<AgentHandl
377
383
 
378
384
  Types: [SessionHeader](persistence.md)
379
385
 
380
- Source: [`packages/core/agent-loop/src/index.ts:296`](../../packages/core/agent-loop/src/index.ts)
386
+ Source: [`packages/core/agent-loop/src/index.ts`](../../packages/core/agent-loop/src/index.ts)
381
387
 
382
388
  <a id="ctxagentpresets--agentpresets"></a>
383
389
 
@@ -394,6 +400,35 @@ Discovery is unmemoized: `list()` and `resolve()` re-read the roots on every cal
394
400
  */
395
401
  async list(): Promise<AgentPreset[]>
396
402
 
403
+ /**
404
+ * The roster off the Host: {@link list} projected to path-free rows, with
405
+ * the default marked and this deployment's authoring capability beside it.
406
+ *
407
+ * Whether a client can open a preset's directory is the Host's own opener
408
+ * capability, not a roster property — a caller needing both joins them.
409
+ * @returns the rows and the authoring capability.
410
+ */
411
+ @Remote('list') async remoteExportList(): Promise<AgentPresetRoster>
412
+
413
+ /**
414
+ * Every preset's composition as flattened plugin rows, for plugin-listing
415
+ * surfaces beside the roster's own picker.
416
+ *
417
+ * A preset with a live standing mount answers from its newest generation's
418
+ * Loader entries — the composition new sessions join — even when the file
419
+ * behind it has since been edited into an unreadable state: the mount is
420
+ * what sessions actually run, so the broken verdict only applies to a
421
+ * preset nothing composed. One never composed since boot answers from its
422
+ * file, with `!!js` disabled gates evaluated against the Loader context so
423
+ * both answers reflect the same host. Reading never mounts: an unmounted
424
+ * preset is parsed, not composed, so listing a preset's plugins cannot
425
+ * activate them early. A composition that stopped reading between
426
+ * discovery's health verdict and this read is reported broken with the
427
+ * raced reason rather than dropped.
428
+ * @returns one composition per roster preset, in roster order.
429
+ */
430
+ async compositionInventory(): Promise<AgentPresetComposition[]>
431
+
397
432
  /**
398
433
  * Resolve one preset by id.
399
434
  *
@@ -468,6 +503,15 @@ composedPreset(agentCtx: Context): string | undefined
468
503
  */
469
504
  async read(id: string): Promise<string>
470
505
 
506
+ /**
507
+ * One preset's composition text with the roster row it belongs to.
508
+ * @param agentPreset - the preset id.
509
+ * @returns the composition beside its trust and published metadata.
510
+ * @throws {RemoteError} `gateway/bad-request` for an empty id, or
511
+ * `agent-preset/not-found` when no configured root supplies it.
512
+ */
513
+ @Remote('read') async readDocument(agentPreset: string): Promise<AgentPresetDocument>
514
+
471
515
  /**
472
516
  * Create a locally authored preset by copying an existing one whole.
473
517
  *
@@ -485,13 +529,34 @@ async read(id: string): Promise<string>
485
529
  */
486
530
  async copy(from: string, id: string, name?: string): Promise<void>
487
531
 
532
+ /**
533
+ * Copy one preset through the Remote API.
534
+ * @param from - the source preset id.
535
+ * @param id - the new preset id.
536
+ * @param name - the copy's optional display name.
537
+ * @returns once the copy is stored.
538
+ * @throws {RemoteError} with the corresponding stable preset code and
539
+ * details when the copy is refused.
540
+ */
541
+ @Remote('copy') async remoteExportCopy(from: string, id: string, name?: string): Promise<void>
542
+
488
543
  /**
489
544
  * Delete a locally authored preset.
545
+ *
490
546
  * @param id - the preset id.
491
547
  * @throws when the preset is unknown or ships with the deployment.
492
548
  */
493
549
  async remove(id: string): Promise<void>
494
550
 
551
+ /**
552
+ * Delete one preset through the Remote API.
553
+ * @param id - the preset id.
554
+ * @returns once the preset is deleted.
555
+ * @throws {RemoteError} with the corresponding stable preset code and
556
+ * details when deletion is refused.
557
+ */
558
+ @Remote('deletePreset') async remoteExportDelete(id: string): Promise<void>
559
+
495
560
  /**
496
561
  * One agent's instance of a service its preset mounted.
497
562
  *
@@ -524,7 +589,9 @@ serviceFor<K extends string & keyof Context>(agent: { ctx: Context }, name: K):
524
589
  * state to restore. The re-link runs through the binding this roster kept
525
590
  * from the agent's mount — dsh-scope's only re-link authority. An agent
526
591
  * that never composed one has nothing to re-link: the switch is then the
527
- * agent's first bind, exactly a mount.
592
+ * agent's first bind, exactly a mount. A committed re-link emits
593
+ * `tools/change` because changing the parent scope changes the Agent's
594
+ * resolved tool set without adding or removing registry entries.
528
595
  * @param agentCtx - the agent's scope context.
529
596
  * @param id - the preset to compose the agent from instead.
530
597
  * @returns the preset now installed.
@@ -532,6 +599,16 @@ serviceFor<K extends string & keyof Context>(agent: { ctx: Context }, name: K):
532
599
  */
533
600
  async recompose(agentCtx: Context, id: string): Promise<AgentPreset>
534
601
 
602
+ /**
603
+ * Compose a blank session's agent from a different preset and record it.
604
+ * @param agent - the session's live agent, resolved from the wire identity.
605
+ * @param agentPreset - the preset to compose the agent from instead.
606
+ * @returns the preset id that was recorded.
607
+ * @throws {RemoteError} with `gateway/bad-request`, `agent-preset/locked`,
608
+ * `agent-preset/not-found`, or `agent-preset/invalid` when refused.
609
+ */
610
+ @Remote('select') async select(agent: Agent, agentPreset: string): Promise<string>
611
+
535
612
  /**
536
613
  * The standing scope key of one preset, for a host reader with no agent.
537
614
  *
@@ -548,7 +625,7 @@ async standingKeyFor(id?: string): Promise<ScopeKey>
548
625
 
549
626
  Types: [ScopeKey](scope.md)
550
627
 
551
- Source: [`packages/preset/agent-presets/src/index.ts:82`](../../packages/preset/agent-presets/src/index.ts)
628
+ Source: [`packages/preset/agent-presets/src/index.ts`](../../packages/preset/agent-presets/src/index.ts)
552
629
 
553
630
  <a id="ctxagents--agentregistry"></a>
554
631
 
@@ -720,7 +797,7 @@ list(): Agent[]
720
797
  roots(): Agent[]
721
798
  ```
722
799
 
723
- Source: [`packages/core/agent/src/index.ts:256`](../../packages/core/agent/src/index.ts)
800
+ Source: [`packages/core/agent/src/index.ts`](../../packages/core/agent/src/index.ts)
724
801
 
725
802
  <a id="agent-events"></a>
726
803
 
@@ -748,7 +825,7 @@ A fully configured agent and live session were published. Setup is composition-o
748
825
 
749
826
  Types: [Scoped](scope.md)
750
827
 
751
- Source: [`packages/core/agent/src/runtime-types.ts:159`](../../packages/core/agent/src/runtime-types.ts)
828
+ Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts)
752
829
 
753
830
  <a id="agentdisposed--emit"></a>
754
831
 
@@ -770,7 +847,7 @@ An agent left the registry; AgentLoop emits this after driver quiescence and sco
770
847
 
771
848
  Types: [Scoped](scope.md)
772
849
 
773
- Source: [`packages/core/agent/src/runtime-types.ts:168`](../../packages/core/agent/src/runtime-types.ts)
850
+ Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts)
774
851
 
775
852
  <a id="agenterror--emit"></a>
776
853
 
@@ -794,7 +871,7 @@ A step or turn errored. The machine reports a failure here even when the error h
794
871
 
795
872
  Types: [Scoped](scope.md)
796
873
 
797
- Source: [`packages/core/agent/src/runtime-types.ts:290`](../../packages/core/agent/src/runtime-types.ts)
874
+ Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts)
798
875
 
799
876
  <a id="agentinboxclaimed--emit"></a>
800
877
 
@@ -818,7 +895,7 @@ One message left the inbox inside its open turn. If the proposed step is rejecte
818
895
 
819
896
  Types: [Scoped](scope.md) · [UserMessage](session.md)
820
897
 
821
- Source: [`packages/core/agent/src/runtime-types.ts:197`](../../packages/core/agent/src/runtime-types.ts)
898
+ Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts)
822
899
 
823
900
  <a id="agentinboxdiscarded--emit"></a>
824
901
 
@@ -839,7 +916,7 @@ One message was discarded from the live inbox.
839
916
 
840
917
  Types: [Scoped](scope.md) · [UserMessage](session.md)
841
918
 
842
- Source: [`packages/core/agent/src/runtime-types.ts:205`](../../packages/core/agent/src/runtime-types.ts)
919
+ Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts)
843
920
 
844
921
  <a id="agentinboxinserted--emit"></a>
845
922
 
@@ -860,7 +937,7 @@ One message entered the live inbox.
860
937
 
861
938
  Types: [Scoped](scope.md) · [UserMessage](session.md)
862
939
 
863
- Source: [`packages/core/agent/src/runtime-types.ts:186`](../../packages/core/agent/src/runtime-types.ts)
940
+ Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts)
864
941
 
865
942
  <a id="agentpre-step--waterfall"></a>
866
943
 
@@ -885,7 +962,7 @@ Reject a proposed step or replace the messages that enter it. Calling `next()` p
885
962
 
886
963
  Types: [Scoped](scope.md) · [UserMessage](session.md)
887
964
 
888
- Source: [`packages/core/agent/src/runtime-types.ts:231`](../../packages/core/agent/src/runtime-types.ts)
965
+ Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts)
889
966
 
890
967
  <a id="agentrequest--waterfall"></a>
891
968
 
@@ -911,7 +988,7 @@ Replace the frozen call configuration. `await next()` yields the config the mach
911
988
 
912
989
  Types: [LlmCallConfig](llm-streaming.md) · [Scoped](scope.md)
913
990
 
914
- Source: [`packages/core/agent/src/runtime-types.ts:244`](../../packages/core/agent/src/runtime-types.ts)
991
+ Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts)
915
992
 
916
993
  <a id="agentrequest-error--waterfall"></a>
917
994
 
@@ -940,7 +1017,7 @@ Handle one failed model-request attempt before the loop retries or closes its st
940
1017
 
941
1018
  Types: [LlmFailure](llm-streaming.md) · [ResolvedRetryPolicy](llm-streaming.md) · [Scoped](scope.md)
942
1019
 
943
- Source: [`packages/core/agent/src/runtime-types.ts:260`](../../packages/core/agent/src/runtime-types.ts)
1020
+ Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts)
944
1021
 
945
1022
  <a id="agentsession-start--emit"></a>
946
1023
 
@@ -964,7 +1041,7 @@ The session lifecycle began, once before the first turn. Use `agent.inject()` to
964
1041
 
965
1042
  Types: [Scoped](scope.md)
966
1043
 
967
- Source: [`packages/core/agent/src/runtime-types.ts:217`](../../packages/core/agent/src/runtime-types.ts)
1044
+ Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts)
968
1045
 
969
1046
  <a id="agentstatus--emit"></a>
970
1047
 
@@ -987,7 +1064,7 @@ Agent status changed (`idle` ⇄ `running`). A waking delivery enters `running`
987
1064
 
988
1065
  Types: [Scoped](scope.md)
989
1066
 
990
- Source: [`packages/core/agent/src/runtime-types.ts:178`](../../packages/core/agent/src/runtime-types.ts)
1067
+ Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts)
991
1068
 
992
1069
  <a id="agentturn-stopping--serial"></a>
993
1070
 
@@ -1018,7 +1095,7 @@ The turn is about to close: the model owes no response (no live tool calls, no f
1018
1095
 
1019
1096
  Types: [Scoped](scope.md)
1020
1097
 
1021
- Source: [`packages/core/agent/src/runtime-types.ts:278`](../../packages/core/agent/src/runtime-types.ts)
1098
+ Source: [`packages/core/agent/src/runtime-types.ts`](../../packages/core/agent/src/runtime-types.ts)
1022
1099
 
1023
1100
  <a id="agent-loop-events"></a>
1024
1101
 
@@ -1043,7 +1120,7 @@ A declarative agent entry failed before it could publish a live agent. Consumers
1043
1120
  'agent-loop/config-start-failed'(payload: { sessionId: SessionId; error: unknown }): void
1044
1121
  ```
1045
1122
 
1046
- Source: [`packages/core/agent-loop/src/index.ts:183`](../../packages/core/agent-loop/src/index.ts)
1123
+ Source: [`packages/core/agent-loop/src/index.ts`](../../packages/core/agent-loop/src/index.ts)
1047
1124
 
1048
1125
  <a id="agent-preset-events"></a>
1049
1126
 
@@ -1066,5 +1143,5 @@ One session committed a different agent preset to its durable log. Consumers inv
1066
1143
  'agent-preset/selected'(sessionId: SessionId, agentPreset: string): void
1067
1144
  ```
1068
1145
 
1069
- Source: [`packages/preset/agent-presets/src/types.ts:13`](../../packages/preset/agent-presets/src/types.ts)
1146
+ Source: [`packages/preset/agent-presets/src/types.ts`](../../packages/preset/agent-presets/src/types.ts)
1070
1147
  <!-- END GENERATED cordis-surface -->