dsh-plugin-dev-kb 1.3.0 → 1.4.0

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 (364) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.en.md +4 -4
  3. package/README.md +5 -5
  4. package/kb/INDEX.md +18 -18
  5. package/kb/README.md +6 -4
  6. package/kb/extra/AGENTS.md +11 -10
  7. package/kb/extra/cookbook/adding-a-remote-api.md +2 -2
  8. package/kb/extra/cookbook/adding-a-remote-api.zh.md +2 -2
  9. package/kb/extra/cookbook/adding-a-session-format-version.md +48 -6
  10. package/kb/extra/cookbook/adding-a-session-format-version.zh.md +48 -6
  11. package/kb/extra/cookbook/reviewing-persistence-type-changes.md +120 -0
  12. package/kb/extra/cookbook/reviewing-persistence-type-changes.zh.md +120 -0
  13. package/kb/extra/deepseek-llm-api-wire-extensions.md +18 -19
  14. package/kb/extra/deepseek-llm-api-wire-extensions.zh.md +17 -18
  15. package/kb/extra/development.md +27 -10
  16. package/kb/extra/development.zh.md +27 -10
  17. package/kb/extra/event-producer-consumer.md +89 -68
  18. package/kb/extra/event-producer-consumer.zh.md +90 -69
  19. package/kb/extra/glossary.md +1 -1
  20. package/kb/extra/glossary.zh.md +1 -1
  21. package/kb/extra/i18n/README.md +15 -7
  22. package/kb/extra/i18n/README.zh.md +15 -7
  23. package/kb/extra/i18n/terminology.md +4 -4
  24. package/kb/extra/i18n/translation-prompt.md +2 -2
  25. package/kb/extra/module-graph.md +574 -326
  26. package/kb/extra/module-graph.zh.md +574 -326
  27. package/kb/extra/persistence-changes/2026-09-11-initial.md +280 -0
  28. package/kb/extra/persistence-changes/2026-09-11-initial.zh.md +280 -0
  29. package/kb/extra/persistence-changes/2026-09-12-auto-review-error-metadata.md +52 -0
  30. package/kb/extra/persistence-changes/2026-09-12-auto-review-error-metadata.zh.md +52 -0
  31. package/kb/extra/persistence-changes/2026-09-14-image-offload.md +96 -0
  32. package/kb/extra/persistence-changes/2026-09-14-image-offload.zh.md +96 -0
  33. package/kb/extra/persistence-changes/2026-09-14-workspace-changes-event.md +48 -0
  34. package/kb/extra/persistence-changes/2026-09-14-workspace-changes-event.zh.md +48 -0
  35. package/kb/extra/persistence-changes/2026-09-16-session-format-v4.md +120 -0
  36. package/kb/extra/persistence-changes/2026-09-16-session-format-v4.zh.md +120 -0
  37. package/kb/extra/persistence-changes/2026-09-18-schedule-optional-title.md +48 -0
  38. package/kb/extra/persistence-changes/2026-09-18-schedule-optional-title.zh.md +48 -0
  39. package/kb/extra/persistence-changes/2026-09-20-unknown-child-catalog.md +48 -0
  40. package/kb/extra/persistence-changes/2026-09-20-unknown-child-catalog.zh.md +48 -0
  41. package/kb/extra/persistence-changes/2026-09-21-user-question-reply.md +60 -0
  42. package/kb/extra/persistence-changes/2026-09-21-user-question-reply.zh.md +60 -0
  43. package/kb/extra/persistence-changes/README.md +88 -0
  44. package/kb/extra/persistence-changes/README.zh.md +88 -0
  45. package/kb/extra/persistence-changes/historical-formats/README.md +75 -0
  46. package/kb/extra/persistence-changes/historical-formats/README.zh.md +75 -0
  47. package/kb/extra/persistence-changes/historical-formats/v0.md +5105 -0
  48. package/kb/extra/persistence-changes/historical-formats/v0.zh.md +5105 -0
  49. package/kb/extra/persistence-changes/historical-formats/v1.md +5107 -0
  50. package/kb/extra/persistence-changes/historical-formats/v1.zh.md +5107 -0
  51. package/kb/extra/persistence-changes/historical-formats/v2.md +5362 -0
  52. package/kb/extra/persistence-changes/historical-formats/v2.zh.md +5362 -0
  53. package/kb/extra/persistence-changes/historical-formats/v3.md +5634 -0
  54. package/kb/extra/persistence-changes/historical-formats/v3.zh.md +5634 -0
  55. package/kb/extra/persistence-changes/releases/README.md +103 -0
  56. package/kb/extra/persistence-changes/releases/README.zh.md +103 -0
  57. package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.1.md +201 -0
  58. package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.1.zh.md +201 -0
  59. package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.2.md +261 -0
  60. package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.2.zh.md +261 -0
  61. package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.3.md +126 -0
  62. package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.3.zh.md +126 -0
  63. package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.4.md +75 -0
  64. package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.4.zh.md +75 -0
  65. package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.5.md +75 -0
  66. package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.5.zh.md +75 -0
  67. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.1.md +75 -0
  68. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.1.zh.md +75 -0
  69. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.2.md +75 -0
  70. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.2.zh.md +75 -0
  71. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.3.md +75 -0
  72. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.3.zh.md +75 -0
  73. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.5.md +75 -0
  74. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.5.zh.md +75 -0
  75. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.6.md +75 -0
  76. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.6.zh.md +75 -0
  77. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.7.md +82 -0
  78. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.7.zh.md +82 -0
  79. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.8.md +110 -0
  80. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.8.zh.md +110 -0
  81. package/kb/extra/persistence-changes/releases/dsh-v0.1.1-rc.1.md +82 -0
  82. package/kb/extra/persistence-changes/releases/dsh-v0.1.1-rc.1.zh.md +82 -0
  83. package/kb/extra/persistence-changes/releases/dsh-v0.1.1-rc.2.md +119 -0
  84. package/kb/extra/persistence-changes/releases/dsh-v0.1.1-rc.2.zh.md +119 -0
  85. package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.1.md +295 -0
  86. package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.1.zh.md +295 -0
  87. package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.2.md +286 -0
  88. package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.2.zh.md +286 -0
  89. package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.3.md +75 -0
  90. package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.3.zh.md +75 -0
  91. package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.4.md +95 -0
  92. package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.4.zh.md +95 -0
  93. package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.5.md +75 -0
  94. package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.5.zh.md +75 -0
  95. package/kb/extra/persistence-changes/releases/dsh-v0.1.2-rc.1.md +75 -0
  96. package/kb/extra/persistence-changes/releases/dsh-v0.1.2-rc.1.zh.md +75 -0
  97. package/kb/extra/persistence-changes/releases/dsh-v0.1.3-alpha.1.md +154 -0
  98. package/kb/extra/persistence-changes/releases/dsh-v0.1.3-alpha.1.zh.md +154 -0
  99. package/kb/extra/persistence-changes/releases/dsh-v0.1.3-alpha.2.md +86 -0
  100. package/kb/extra/persistence-changes/releases/dsh-v0.1.3-alpha.2.zh.md +86 -0
  101. package/kb/extra/persistence-changes/releases/dsh-v0.1.5-alpha.1.md +139 -0
  102. package/kb/extra/persistence-changes/releases/dsh-v0.1.5-alpha.1.zh.md +139 -0
  103. package/kb/extra/persistence-changes/releases/dsh-v0.1.5-alpha.2.md +95 -0
  104. package/kb/extra/persistence-changes/releases/dsh-v0.1.5-alpha.2.zh.md +95 -0
  105. package/kb/extra/persistence-changes/releases/dsh-v0.1.5-rc.1.md +75 -0
  106. package/kb/extra/persistence-changes/releases/dsh-v0.1.5-rc.1.zh.md +75 -0
  107. package/kb/extra/persistence-changes/releases/dsh-v0.1.5-rc.2.md +75 -0
  108. package/kb/extra/persistence-changes/releases/dsh-v0.1.5-rc.2.zh.md +75 -0
  109. package/kb/extra/rescope.md +1 -1
  110. package/kb/extra/rescope.zh.md +1 -1
  111. package/kb/extra/session-format-status.md +22 -6
  112. package/kb/extra/session-format-status.zh.md +22 -6
  113. package/kb/extra/subsystems/agent-team.md +52 -28
  114. package/kb/extra/subsystems/agent-team.zh.md +52 -28
  115. package/kb/extra/subsystems/attachment.md +19 -9
  116. package/kb/extra/subsystems/attachment.zh.md +19 -9
  117. package/kb/extra/subsystems/boot.md +323 -0
  118. package/kb/extra/subsystems/boot.zh.md +323 -0
  119. package/kb/extra/subsystems/browser-use.md +67 -0
  120. package/kb/extra/subsystems/browser-use.zh.md +67 -0
  121. package/kb/extra/subsystems/claude-code-mods.md +146 -0
  122. package/kb/extra/subsystems/claude-code-mods.zh.md +146 -0
  123. package/kb/extra/subsystems/computer-use.md +56 -0
  124. package/kb/extra/subsystems/computer-use.zh.md +56 -0
  125. package/kb/extra/subsystems/deliverables.md +178 -0
  126. package/kb/extra/subsystems/deliverables.zh.md +178 -0
  127. package/kb/extra/subsystems/extensions.md +6 -4
  128. package/kb/extra/subsystems/extensions.zh.md +6 -4
  129. package/kb/extra/subsystems/feedback.md +4 -4
  130. package/kb/extra/subsystems/feedback.zh.md +4 -4
  131. package/kb/extra/subsystems/mcp.md +139 -0
  132. package/kb/extra/subsystems/mcp.zh.md +139 -0
  133. package/kb/extra/subsystems/office-to-pdf.md +87 -0
  134. package/kb/extra/subsystems/office-to-pdf.zh.md +87 -0
  135. package/kb/extra/subsystems/otel.md +44 -0
  136. package/kb/extra/subsystems/otel.zh.md +44 -0
  137. package/kb/extra/subsystems/product-telemetry.md +79 -0
  138. package/kb/extra/subsystems/product-telemetry.zh.md +79 -0
  139. package/kb/extra/subsystems/ssh.md +135 -0
  140. package/kb/extra/subsystems/ssh.zh.md +135 -0
  141. package/kb/extra/subsystems/todo.md +3 -3
  142. package/kb/extra/subsystems/todo.zh.md +3 -3
  143. package/kb/extra/subsystems/voice-input.md +164 -0
  144. package/kb/extra/subsystems/voice-input.zh.md +164 -0
  145. package/kb/extra/subsystems/webhook.md +3 -3
  146. package/kb/extra/subsystems/webhook.zh.md +1 -1
  147. package/kb/extra/testing.md +3 -3
  148. package/kb/extra/testing.zh.md +3 -3
  149. package/kb/extra/ui-radius.md +115 -0
  150. package/kb/extra/ui-radius.zh.md +115 -0
  151. package/kb/extra/upgrade-guide/v0.1.7-rc.2/schedule-optional-bundle/guide.md +22 -0
  152. package/kb/extra/upgrade-guide/v0.1.7-rc.2/schedule-optional-bundle/guide.zh.md +22 -0
  153. package/kb/extra/upgrade-guide/v0.1.7-rc.2/transcript-view-legacy-normal/guide.md +25 -0
  154. package/kb/extra/upgrade-guide/v0.1.7-rc.2/transcript-view-legacy-normal/guide.zh.md +25 -0
  155. package/kb/extra/upgrade-guide/v0.2.0-rc.2/account-sign-in-errors/guide.md +18 -0
  156. package/kb/extra/upgrade-guide/v0.2.0-rc.2/account-sign-in-errors/guide.zh.md +18 -0
  157. package/kb/extra/upgrade-guide/v0.2.0-rc.2/remove-runtime-invariants/guide.md +23 -0
  158. package/kb/extra/upgrade-guide/v0.2.0-rc.2/remove-runtime-invariants/guide.zh.md +23 -0
  159. package/kb/extra/upgrade-guide/v0.2.0-rc.2/schedule-bundle-retired/guide.md +22 -0
  160. package/kb/extra/upgrade-guide/v0.2.0-rc.2/schedule-bundle-retired/guide.zh.md +22 -0
  161. package/kb/extra/upgrade-guide/v0.2.0-rc.2/subpath-plugin-display-manifest/guide.md +27 -0
  162. package/kb/extra/upgrade-guide/v0.2.0-rc.2/subpath-plugin-display-manifest/guide.zh.md +27 -0
  163. package/kb/extra/web-styling.md +12 -3
  164. package/kb/extra/web-styling.zh.md +12 -3
  165. package/kb/meta/search-index.json +976 -256
  166. package/kb/meta/site-pages.txt +188 -188
  167. package/kb/meta/source.json +6 -6
  168. package/kb/meta/topics.md +10 -6
  169. package/kb/site/develop/basic/config.md +1 -0
  170. package/kb/site/develop/basic/index.md +1 -0
  171. package/kb/site/develop/basic/publish.md +9 -2
  172. package/kb/site/develop/basic/tool.md +1 -0
  173. package/kb/site/develop/cordis-tutorial/01-first-plugin.md +1 -0
  174. package/kb/site/develop/cordis-tutorial/02-lifecycle-and-effects.md +1 -0
  175. package/kb/site/develop/cordis-tutorial/03-services.md +1 -0
  176. package/kb/site/develop/cordis-tutorial/04-events.md +1 -0
  177. package/kb/site/develop/cordis-tutorial/05-config.md +28 -0
  178. package/kb/site/develop/cordis-tutorial/06-composition-and-hmr.md +3 -2
  179. package/kb/site/develop/cordis-tutorial/07-into-the-harness.md +1 -0
  180. package/kb/site/develop/cordis-tutorial/index.md +1 -0
  181. package/kb/site/develop/framework/events.md +1 -0
  182. package/kb/site/develop/framework/index.md +2 -1
  183. package/kb/site/develop/framework/service.md +1 -0
  184. package/kb/site/develop/practice/dynamic-cordis.md +9 -8
  185. package/kb/site/develop/practice/index.md +1 -0
  186. package/kb/site/develop/practice/llm-adapter.md +2 -1
  187. package/kb/site/en/develop/basic/config.md +1 -0
  188. package/kb/site/en/develop/basic/index.md +1 -0
  189. package/kb/site/en/develop/basic/publish.md +9 -2
  190. package/kb/site/en/develop/basic/tool.md +1 -0
  191. package/kb/site/en/develop/cordis-tutorial/01-first-plugin.md +1 -0
  192. package/kb/site/en/develop/cordis-tutorial/02-lifecycle-and-effects.md +1 -0
  193. package/kb/site/en/develop/cordis-tutorial/03-services.md +1 -0
  194. package/kb/site/en/develop/cordis-tutorial/04-events.md +1 -0
  195. package/kb/site/en/develop/cordis-tutorial/05-config.md +28 -0
  196. package/kb/site/en/develop/cordis-tutorial/06-composition-and-hmr.md +3 -2
  197. package/kb/site/en/develop/cordis-tutorial/07-into-the-harness.md +1 -0
  198. package/kb/site/en/develop/cordis-tutorial/index.md +1 -0
  199. package/kb/site/en/develop/framework/events.md +1 -0
  200. package/kb/site/en/develop/framework/index.md +2 -1
  201. package/kb/site/en/develop/framework/service.md +1 -0
  202. package/kb/site/en/develop/practice/dynamic-cordis.md +9 -8
  203. package/kb/site/en/develop/practice/index.md +1 -0
  204. package/kb/site/en/develop/practice/llm-adapter.md +2 -1
  205. package/kb/site/en/guide/github-review.md +1 -0
  206. package/kb/site/en/guide/mcp-memory.md +1 -0
  207. package/kb/site/en/guide/network-proxy.md +2 -1
  208. package/kb/site/en/guide/providers-custom-form.png +0 -0
  209. package/kb/site/en/guide/providers-models-page.png +0 -0
  210. package/kb/site/en/guide/providers.md +97 -82
  211. package/kb/site/en/guide/public-deployments.md +36 -0
  212. package/kb/site/en/guide/python-sdk.md +42 -21
  213. package/kb/site/en/guide/quickstart.md +2 -0
  214. package/kb/site/en/guide/schedule.md +70 -11
  215. package/kb/site/en/reference/agent-lifecycle.md +1 -0
  216. package/kb/site/en/reference/api-gateway.md +13 -11
  217. package/kb/site/en/reference/capability-seams.md +177 -59
  218. package/kb/site/en/reference/config-catalog.md +1758 -821
  219. package/kb/site/en/reference/cookbook/adding-a-package.md +57 -3
  220. package/kb/site/en/reference/cookbook/adding-a-settings-card.md +35 -64
  221. package/kb/site/en/reference/cookbook/adding-a-tool.md +4 -3
  222. package/kb/site/en/reference/cookbook/adding-an-llm-adapter.md +1 -0
  223. package/kb/site/en/reference/cookbook/extension-cookbook.md +6 -5
  224. package/kb/site/en/reference/cordis-api/context.md +1 -0
  225. package/kb/site/en/reference/cordis-api/events.md +1 -0
  226. package/kb/site/en/reference/cordis-api/fiber.md +4 -3
  227. package/kb/site/en/reference/cordis-api/inherited.md +16 -16
  228. package/kb/site/en/reference/cordis-api/registry.md +1 -0
  229. package/kb/site/en/reference/cordis-api/service.md +1 -0
  230. package/kb/site/en/reference/cordis-primer.md +1 -0
  231. package/kb/site/en/reference/index.md +18 -11
  232. package/kb/site/en/reference/persistence-catalog.md +7687 -54
  233. package/kb/site/en/reference/subsystems/approval.md +2 -1
  234. package/kb/site/en/reference/subsystems/client-modules.md +23 -15
  235. package/kb/site/en/reference/subsystems/client-resources.md +3 -1
  236. package/kb/site/en/reference/subsystems/commands.md +6 -1
  237. package/kb/site/en/reference/subsystems/compaction.md +50 -3
  238. package/kb/site/en/reference/subsystems/conversation.md +36 -6
  239. package/kb/site/en/reference/subsystems/core.md +97 -257
  240. package/kb/site/en/reference/subsystems/credentials.md +169 -5
  241. package/kb/site/en/reference/subsystems/filesystem.md +11 -0
  242. package/kb/site/en/reference/subsystems/goal.md +2 -1
  243. package/kb/site/en/reference/subsystems/index.md +16 -5
  244. package/kb/site/en/reference/subsystems/jobs.md +337 -127
  245. package/kb/site/en/reference/subsystems/llm-streaming.md +76 -36
  246. package/kb/site/en/reference/subsystems/lsp.md +1 -0
  247. package/kb/site/en/reference/subsystems/permission-presets.md +66 -29
  248. package/kb/site/en/reference/subsystems/persistence.md +4 -3
  249. package/kb/site/en/reference/subsystems/plan.md +2 -1
  250. package/kb/site/en/reference/subsystems/ptc-runtime.md +236 -0
  251. package/kb/site/en/reference/subsystems/sandbox.md +7 -5
  252. package/kb/site/en/reference/subsystems/schedule.md +392 -33
  253. package/kb/site/en/reference/subsystems/scope.md +2 -1
  254. package/kb/site/en/reference/subsystems/session-projection.md +22 -19
  255. package/kb/site/en/reference/subsystems/session-query.md +1 -0
  256. package/kb/site/en/reference/subsystems/session-reference.md +8 -6
  257. package/kb/site/en/reference/subsystems/session-telemetry.md +7 -4
  258. package/kb/site/en/reference/subsystems/session-title.md +6 -5
  259. package/kb/site/en/reference/subsystems/session.md +199 -81
  260. package/kb/site/en/reference/subsystems/settings.md +43 -292
  261. package/kb/site/en/reference/subsystems/shell.md +37 -28
  262. package/kb/site/en/reference/subsystems/sidebar-right.md +23 -12
  263. package/kb/site/en/reference/subsystems/skills.md +5 -6
  264. package/kb/site/en/reference/subsystems/slots.md +34 -13
  265. package/kb/site/en/reference/subsystems/spill.md +4 -3
  266. package/kb/site/en/reference/subsystems/storage.md +2 -2
  267. package/kb/site/en/reference/subsystems/subagent.md +50 -64
  268. package/kb/site/en/reference/subsystems/subprocess.md +17 -18
  269. package/kb/site/en/reference/subsystems/system-prompt.md +4 -1
  270. package/kb/site/en/reference/subsystems/terminal.md +1 -0
  271. package/kb/site/en/reference/subsystems/token-meter.md +1 -0
  272. package/kb/site/en/reference/subsystems/tools.md +40 -12
  273. package/kb/site/en/reference/subsystems/typert.md +153 -10
  274. package/kb/site/en/reference/subsystems/user-questions.md +131 -1
  275. package/kb/site/en/reference/subsystems/web-client.md +15 -9
  276. package/kb/site/en/reference/subsystems/web-server.md +74 -1
  277. package/kb/site/en/reference/subsystems/web.md +1 -0
  278. package/kb/site/en/reference/subsystems/workflow.md +10 -9
  279. package/kb/site/en/reference/subsystems/workspace.md +294 -34
  280. package/kb/site/en/reference/tool-catalog.md +782 -331
  281. package/kb/site/en/reference/tool-execution-pipeline.md +7 -3
  282. package/kb/site/guide/github-review.md +1 -0
  283. package/kb/site/guide/mcp-memory.md +1 -0
  284. package/kb/site/guide/network-proxy.md +2 -1
  285. package/kb/site/guide/providers-custom-form.zh.png +0 -0
  286. package/kb/site/guide/providers-models-page.zh.png +0 -0
  287. package/kb/site/guide/providers.md +109 -94
  288. package/kb/site/guide/public-deployments.md +36 -0
  289. package/kb/site/guide/python-sdk.md +42 -21
  290. package/kb/site/guide/quickstart.md +2 -0
  291. package/kb/site/guide/schedule.md +70 -11
  292. package/kb/site/reference/agent-lifecycle.md +1 -0
  293. package/kb/site/reference/api-gateway.md +13 -11
  294. package/kb/site/reference/capability-seams.md +177 -59
  295. package/kb/site/reference/config-catalog.md +1760 -822
  296. package/kb/site/reference/cookbook/adding-a-package.md +55 -3
  297. package/kb/site/reference/cookbook/adding-a-settings-card.md +35 -64
  298. package/kb/site/reference/cookbook/adding-a-tool.md +4 -3
  299. package/kb/site/reference/cookbook/adding-an-llm-adapter.md +1 -0
  300. package/kb/site/reference/cookbook/extension-cookbook.md +6 -5
  301. package/kb/site/reference/cordis-api/context.md +1 -0
  302. package/kb/site/reference/cordis-api/events.md +1 -0
  303. package/kb/site/reference/cordis-api/fiber.md +4 -3
  304. package/kb/site/reference/cordis-api/inherited.md +16 -16
  305. package/kb/site/reference/cordis-api/registry.md +1 -0
  306. package/kb/site/reference/cordis-api/service.md +1 -0
  307. package/kb/site/reference/cordis-primer.md +1 -0
  308. package/kb/site/reference/index.md +18 -11
  309. package/kb/site/reference/persistence-catalog.md +7693 -60
  310. package/kb/site/reference/subsystems/approval.md +2 -1
  311. package/kb/site/reference/subsystems/client-modules.md +23 -15
  312. package/kb/site/reference/subsystems/client-resources.md +3 -1
  313. package/kb/site/reference/subsystems/commands.md +6 -1
  314. package/kb/site/reference/subsystems/compaction.md +50 -3
  315. package/kb/site/reference/subsystems/conversation.md +35 -5
  316. package/kb/site/reference/subsystems/core.md +97 -257
  317. package/kb/site/reference/subsystems/credentials.md +169 -5
  318. package/kb/site/reference/subsystems/filesystem.md +11 -0
  319. package/kb/site/reference/subsystems/goal.md +2 -1
  320. package/kb/site/reference/subsystems/index.md +16 -5
  321. package/kb/site/reference/subsystems/jobs.md +336 -126
  322. package/kb/site/reference/subsystems/llm-streaming.md +76 -36
  323. package/kb/site/reference/subsystems/lsp.md +1 -0
  324. package/kb/site/reference/subsystems/permission-presets.md +66 -29
  325. package/kb/site/reference/subsystems/persistence.md +4 -3
  326. package/kb/site/reference/subsystems/plan.md +2 -1
  327. package/kb/site/reference/subsystems/ptc-runtime.md +236 -0
  328. package/kb/site/reference/subsystems/sandbox.md +7 -5
  329. package/kb/site/reference/subsystems/schedule.md +392 -33
  330. package/kb/site/reference/subsystems/scope.md +2 -1
  331. package/kb/site/reference/subsystems/session-projection.md +22 -19
  332. package/kb/site/reference/subsystems/session-query.md +1 -0
  333. package/kb/site/reference/subsystems/session-reference.md +8 -6
  334. package/kb/site/reference/subsystems/session-telemetry.md +7 -4
  335. package/kb/site/reference/subsystems/session-title.md +6 -5
  336. package/kb/site/reference/subsystems/session.md +199 -81
  337. package/kb/site/reference/subsystems/settings.md +43 -292
  338. package/kb/site/reference/subsystems/shell.md +37 -28
  339. package/kb/site/reference/subsystems/sidebar-right.md +23 -12
  340. package/kb/site/reference/subsystems/skills.md +5 -6
  341. package/kb/site/reference/subsystems/slots.md +34 -13
  342. package/kb/site/reference/subsystems/spill.md +3 -2
  343. package/kb/site/reference/subsystems/storage.md +2 -2
  344. package/kb/site/reference/subsystems/subagent.md +49 -63
  345. package/kb/site/reference/subsystems/subprocess.md +17 -18
  346. package/kb/site/reference/subsystems/system-prompt.md +4 -1
  347. package/kb/site/reference/subsystems/terminal.md +1 -0
  348. package/kb/site/reference/subsystems/token-meter.md +1 -0
  349. package/kb/site/reference/subsystems/tools.md +40 -12
  350. package/kb/site/reference/subsystems/typert.md +153 -10
  351. package/kb/site/reference/subsystems/user-questions.md +132 -2
  352. package/kb/site/reference/subsystems/web-client.md +15 -9
  353. package/kb/site/reference/subsystems/web-server.md +74 -1
  354. package/kb/site/reference/subsystems/web.md +1 -0
  355. package/kb/site/reference/subsystems/workflow.md +10 -9
  356. package/kb/site/reference/subsystems/workspace.md +294 -34
  357. package/kb/site/reference/tool-catalog.md +784 -333
  358. package/kb/site/reference/tool-execution-pipeline.md +7 -3
  359. package/package.json +2 -2
  360. package/skills/dsh-plugin-dev-kb.md +5 -4
  361. package/kb/site/en/reference/subsystems/code-runtime.md +0 -198
  362. package/kb/site/en/reference/subsystems/invariants.md +0 -91
  363. package/kb/site/reference/subsystems/code-runtime.md +0 -198
  364. package/kb/site/reference/subsystems/invariants.md +0 -91
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  editSource: "docs/subsystems/core.zh.md"
3
+ rawMarkdownPath: "reference/subsystems/core.md"
3
4
  outline: [2,3]
4
5
  ---
5
6
 
@@ -113,7 +114,7 @@ interface Agent {
113
114
  * turn and runs when the aborted activity converges to idle; a `disposed`
114
115
  * cancel leaves it parked. A wake submitted while already idle always opens
115
116
  * its turn boundary, even when its message is cleared before the driver
116
- * claims ([cancel-convergence wake latch](../../../../.agents/notes/implemented/bug-fix/2026-08-07-cancel-convergence-wake-latch.md)).
117
+ * claims ([driver wake convergence](../../agent-loop/src/agent.ts)).
117
118
  * @param message - identified content and the source that supplied it.
118
119
  * @param target - the preferred next-turn or next-step inbox boundary.
119
120
  * @param wakeup - whether delivery may wake the driver.
@@ -279,7 +280,7 @@ interface Inbox {
279
280
  type InboxTarget = 'next-turn' | 'next-step'
280
281
  ```
281
282
 
282
- 每个待处理入队项就是其 `UserMessage`;`MessageId` 是唯一标识。结构化 `Inbox` 方法会记录规范化的持久 `agent/inbox/spliced` 变更,并拒绝重复的待处理 id。`replace(messageId, newMessage)` 与 `remove(messageId)` 通过 `MessageId` 跨两份列表定位待处理消息;替换可以改变标识,并先将旧消息作为 discarded 发布,再将新消息作为 inserted 发布。普通删除和 `clear()` 都表示取消。在步骤边界,dsh-agent-loop 包内部的 `ReactLoopInbox` 会通过纯删除 splice 移除拟进入步骤的批次——全部 `next-step` 输入,外加轮次边界上的一条 `next-turn` 消息——且不发出 discarded 通知,随后逐条发出 claimed 通知。仅供循环使用的待处理检测与领取操作不属于 `Agent.inbox`。每个 `ReactLoopInbox` 构造函数都从其 agent 作用域贡献标准 `inbox` 投影;注册表通过引用计数在多个 agent 之间共享该定义,其 cell 是唯一 live 状态,同一份折叠也服务于冷消费方。该 fold 会拒绝不安全或越界的 splice 坐标,以及跨两份列表重复的标识,并通过事件 seq 指出格式错误的持久历史。跟踪单条消息的消费方使用精确的 `agent/inbox/inserted`、`claimed` 与 `discarded` 通知。
283
+ 每个待处理入队项就是其 `UserMessage`;`MessageId` 是唯一标识。结构化 `Inbox` 方法会记录规范化的持久 `agent/inbox/spliced` 变更,并拒绝重复的待处理 id。`replace(messageId, newMessage)` 与 `remove(messageId)` 通过 `MessageId` 跨两份列表定位待处理消息;替换可以改变标识,并先将旧消息作为 discarded 发布,再将新消息作为 inserted 发布。普通删除和 `clear()` 都表示取消。在步骤边界,dsh-agent-loop 包内部的 `ReactLoopInbox` 会通过纯删除 splice 移除拟进入步骤的批次——全部 `next-step` 输入,外加轮次边界上的一条 `next-turn` 消息——且不发出 discarded 通知,随后逐条发出 claimed 通知。仅供循环使用的待处理检测与领取操作不属于 `Agent.inbox`。`AgentLoop` 服务在发布工厂之前注册标准 `inbox` 投影;其 cell 是唯一 live 状态,同一份折叠在没有 Agent 时也服务于冷消费方。该 fold 会拒绝不安全或越界的 splice 坐标,以及跨两份列表重复的标识,并通过事件 seq 指出格式错误的持久历史。跟踪单条消息的消费方使用精确的 `agent/inbox/inserted`、`claimed` 与 `discarded` 通知。
283
284
 
284
285
  取消:
285
286
 
@@ -304,7 +305,7 @@ type AgentCancelCause =
304
305
  | { readonly kind: 'disposed' }
305
306
  ```
306
307
 
307
- cause 是由 TypeScript 强制约束的同进程输入。活跃的取消持有者会将它复制到仅运行时的 `AbortSignal.reason`;signal 不授予协作监听器任何分类权限。持久 `turn/end` 以 `{ kind: 'aborted', reason: TurnEndCancelCause }` 记录结果,取消原因随终态结果一起持久化。
308
+ cause 是由 TypeScript 强制约束的同进程输入。活跃的取消持有者把同一个对象暴露为仅运行时的 `AbortSignal.reason`;signal 不授予协作监听器任何分类权限。持久 `turn/end` 以 `{ kind: 'aborted', reason: TurnEndCancelCause }` 记录结果,取消原因随终态结果一起持久化。
308
309
 
309
310
  [事件分类](../index.md#events)负责 `agent/*` 生命周期、检查点与 waterfall(瀑布式事件)约定。轮次和步骤边界是持久会话事件,而不是 agent emit。
310
311
 
@@ -347,7 +348,7 @@ type RequestErrorAction = { kind: 'retry' } | undefined
347
348
 
348
349
  `agent/pre-step` 是请求推导前唯一的 waterfall(瀑布式)监听器链。`agent/turn-stopping` 在轮次没有工具或 steering(中途引导)后续时运行,先于最后一次 steering 排空。
349
350
 
350
- `agent/session-start` 携带 `SessionStartSource`(会话生命周期为何开始;桥接层据此匹配其 SessionStart):
351
+ `agent/created` 携带 `SessionStartSource`(会话生命周期为何开始;桥接层据此匹配其 SessionStart):
351
352
 
352
353
  ```ts type-equiv
353
354
  /** Why a session lifecycle began; seeded creates are `startup`, while persisted loads are `resume`. */
@@ -434,7 +435,7 @@ Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnp
434
435
 
435
436
  ### `ctx.agentDefaultModel` — `AgentDefaultModelConfig`
436
437
 
437
- Owns the default model selection independently of any Host or transport. The composition entry remains usable without a settings provider; when one is mounted, its user layer is read live.
438
+ Owns the default model selection independently of any Host or transport. Each operation reads the owning Config references.
438
439
 
439
440
  ```ts cordis-catalog
440
441
  /**
@@ -444,10 +445,11 @@ Owns the default model selection independently of any Host or transport. The com
444
445
  currentSelection(): ModelSelection
445
446
 
446
447
  /**
447
- * Save the complete default model selection. A deployment without a settings
448
- * provider keeps its composition entry.
448
+ * Save the complete default model selection. A deployment without a configuration
449
+ * editor keeps its composition entry. Saves commit in submission order; a failed
450
+ * save rejects its caller without blocking later saves.
449
451
  * @param next - resolved selection accepted by an entry point.
450
- * @returns fulfillment after the optional settings write settles.
452
+ * @returns fulfillment after the optional profile write settles.
451
453
  */
452
454
  async saveSelection(next: ModelSelection): Promise<void>
453
455
  ```
@@ -494,247 +496,103 @@ Types: [SessionHeader](./persistence.md)
494
496
 
495
497
  Source: [`packages/core/agent-loop/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/agent-loop/src/index.ts)
496
498
 
497
- <a id="ctxagentpresets--agentpresets"></a>
499
+ <a id="ctxagentpresets--agentpresetregistry"></a>
498
500
 
499
- ### `ctx.agentPresets` — `AgentPresets`
501
+ ### `ctx.agentPresets` — `AgentPresetRegistry`
500
502
 
501
- Registry over the deployment's agent presets.
502
-
503
- Discovery is unmemoized: `list()` and `resolve()` re-read the roots on every call so a preset authored while the process runs is visible immediately, and a preset deleted underneath a picker disappears from the next read.
503
+ Registry of YAML-declared presets and the revisions live Agents retain.
504
504
 
505
505
  ```ts cordis-catalog
506
- /**
507
- * Every preset the configured roots currently supply.
508
- * @returns the presets, first-root-wins per id.
506
+ /** Register and eagerly load a definition; activation failure remains visible in the roster.
507
+ * @param definition Parsed configuration supplied by the declaring plugin.
508
+ * @returns Definition disposer after activation or its diagnostic settles; the declaring plugin owns it.
509
509
  */
510
- async list(): Promise<AgentPreset[]>
510
+ async register(definition: PresetDefinition): Promise<() => Promise<void>>
511
511
 
512
- /**
513
- * The roster off the Host: {@link list} projected to path-free rows, with
514
- * the default marked and this deployment's authoring capability beside it.
515
- *
516
- * Whether a client can open a preset's directory is the Host's own opener
517
- * capability, not a roster property — a caller needing both joins them.
518
- * @returns the rows and the authoring capability.
512
+ /** Inspect retained revisions, or the exact revision an Agent joined.
513
+ * @param ctx - optional Agent context; omission includes all retained revisions.
514
+ * @returns detached module references and isolation diagnostics; no match returns an empty list.
519
515
  */
520
- @Remote('list') async remoteExportList(): Promise<AgentPresetRoster>
516
+ inspectCompositions(ctx?: Context): AgentPresetInspection[]
521
517
 
522
- /**
523
- * Every preset's composition as flattened plugin rows, for plugin-listing
524
- * surfaces beside the roster's own picker.
525
- *
526
- * A preset with a live standing mount answers from its newest generation's
527
- * Loader entries — the composition new sessions join — even when the file
528
- * behind it has since been edited into an unreadable state: the mount is
529
- * what sessions actually run, so the broken verdict only applies to a
530
- * preset nothing composed. One never composed since boot answers from its
531
- * file, with `!!js` disabled gates evaluated against the Loader context so
532
- * both answers reflect the same host. Reading never mounts: an unmounted
533
- * preset is parsed, not composed, so listing a preset's plugins cannot
534
- * activate them early. A composition that stopped reading between
535
- * discovery's health verdict and this read is reported broken with the
536
- * raced reason rather than dropped.
537
- * @returns one composition per roster preset, in roster order.
538
- */
539
- async compositionInventory(): Promise<AgentPresetComposition[]>
540
-
541
- /**
542
- * Resolve one preset by id.
543
- *
544
- * A broken preset resolves — deleting one, reading one, and reporting one
545
- * all need the row — and the mounting paths refuse it AFTER resolution
546
- * through {@link resolveMountable}.
547
- * @param id - the preset id, or `undefined` for {@link defaultId}.
548
- * @returns the resolved preset.
549
- * @throws when no configured root supplies that id.
550
- */
551
- async resolve(id?: string): Promise<AgentPreset>
552
-
553
- /**
554
- * Compose one agent from a preset: ensure the preset's standing mount, then
555
- * parent the agent's scope key to it so the mount's registrations and
556
- * listeners cover this agent.
557
- *
558
- * Call from the agent factory's `setup(agentCtx)`; a rejection there rolls
559
- * the agent creation back, so a broken preset never yields a half-composed
560
- * session.
561
- * @param agentCtx - the agent's scope context.
562
- * @param id - the preset id, or `undefined` for {@link defaultId}.
563
- * @returns the preset that was composed, for the caller to record.
564
- * @throws when the preset is unknown or its composition is unusable.
518
+ /** Read every declared preset, including activation failures.
519
+ * @returns Display metadata and loading diagnostics.
565
520
  */
566
- async mount(agentCtx: Context, id?: string): Promise<AgentPreset>
521
+ async list(): Promise<AgentPreset[]>
567
522
 
568
- /**
569
- * Join one agent to the SAME standing composition another already runs on.
570
- *
571
- * This is how a child agent inherits its parent's capabilities. It is a bind,
572
- * not a mount: the parent's generation is already composed, so the child gets
573
- * that exact instance — the same plugin objects, the same tool registrations,
574
- * the same prompt sections. Re-resolving the parent's preset by id instead
575
- * would re-read the roster, and a composition file edited since the parent
576
- * started would hand the child a DIFFERENT generation than the one its
577
- * parent's history was produced under (and a preset deleted since would fail
578
- * the child outright while its parent keeps running).
579
- *
580
- * Synchronous, and with no composition failure mode of its own — it reads no
581
- * roster, mounts nothing, and touches no file — which is what lets a child
582
- * creation window use it: the two in-process subagent drivers compose their
583
- * children inside a synchronous `setup`. It still rejects a caller error, as
584
- * the `@throws` below record.
585
- *
586
- * A parent that joined no preset — a rosterless deployment — yields no join
587
- * and no error: there, the model-facing rows sit in the host composition and
588
- * the child already sees them through the global layer.
589
- * @param agentCtx - the joining agent's scope context.
590
- * @param parentCtx - the scope context of the agent whose composition to join.
591
- * @returns the preset id joined, or undefined when the parent joined none.
592
- * @throws when `agentCtx` carries no scope, or has already joined a preset.
523
+ /** Read the selection roster.
524
+ * @returns Current presets, each marked when it is the default.
593
525
  */
594
- composeFrom(agentCtx: Context, parentCtx: Context): string | undefined
526
+ @Remote('list') async remoteExportList(): Promise<AgentPresetRoster>
595
527
 
596
- /**
597
- * The preset one live agent runs on.
598
- *
599
- * Read from the live scope chain rather than from the session, so it answers
600
- * for an agent whose session has not recorded a preset yet — a child agent
601
- * whose durable header is being built from its parent's composition.
602
- * @param agentCtx - the agent's scope context.
603
- * @returns the preset id, or undefined when the agent joined none.
528
+ /** Resolve an identity without starting an Agent.
529
+ * @param id Explicit preset or the current default.
530
+ * @returns Current metadata, including failure when activation failed.
604
531
  */
605
- composedPreset(agentCtx: Context): string | undefined
532
+ async resolve(id?: string): Promise<AgentPreset>
606
533
 
607
- /**
608
- * Read one preset's composition text.
609
- * @param id - the preset id.
610
- * @returns the composition exactly as stored.
611
- * @throws when no configured root supplies that id.
534
+ /** Read one declaration's child plugin list as YAML, for viewing only.
535
+ * @param agentPreset Preset identity.
536
+ * @returns The declared composition beside its published metadata.
612
537
  */
613
- async read(id: string): Promise<string>
538
+ @Remote('read') readDocument(agentPreset: string): Promise<AgentPresetDocument>
614
539
 
615
- /**
616
- * One preset's composition text with the roster row it belongs to.
617
- * @param agentPreset - the preset id.
618
- * @returns the composition beside its trust and published metadata.
619
- * @throws {RemoteError} `gateway/bad-request` for an empty id, or
620
- * `agent-preset/not-found` when no configured root supplies it.
540
+ /** Bind an unpublished Agent to the current preset revision.
541
+ * @param ctx Agent context from its setup callback.
542
+ * @param id Requested preset, or the default.
543
+ * @returns Bound preset identity.
621
544
  */
622
- @Remote('read') async readDocument(agentPreset: string): Promise<AgentPresetDocument>
545
+ async mount(ctx: Context, id?: string): Promise<AgentPreset>
623
546
 
624
- /**
625
- * Create a locally authored preset by copying an existing one whole.
626
- *
627
- * Copy is the only authoring write. Composition text never crosses this
628
- * seam: the source is named by id and its directory is copied as it stands,
629
- * so the copy is exactly as loadable as its source and authoring grants no
630
- * capability the roster did not already carry. The copy is NOT mounted to
631
- * validate — a source that mounts today yields a copy that mounts today.
632
- * @param from - the preset the copy starts from; shipped presets are the
633
- * primary source, so any trust is accepted.
634
- * @param id - the new preset's id, which becomes its directory name.
635
- * @param name - display name for the copy; absent falls back to the id.
636
- * @throws when the source is unknown, the id is unusable or already taken,
637
- * or the deployment configures no writable root.
547
+ /** Join a child to the exact revision retained by its parent.
548
+ * @param ctx Child Agent context.
549
+ * @param parent Parent Agent context.
550
+ * @returns Inherited preset id, or undefined in a preset-free composition.
638
551
  */
639
- async copy(from: string, id: string, name?: string): Promise<void>
552
+ composeFrom(ctx: Context, parent: Context): string | undefined
640
553
 
641
- /**
642
- * Copy one preset through the Remote API.
643
- * @param from - the source preset id.
644
- * @param id - the new preset id.
645
- * @param name - the copy's optional display name.
646
- * @returns once the copy is stored.
647
- * @throws {RemoteError} with the corresponding stable preset code and
648
- * details when the copy is refused.
554
+ /** Read the preset a live Agent uses.
555
+ * @param ctx Agent context.
556
+ * @returns Its preset id, if bound.
649
557
  */
650
- @Remote('copy') async remoteExportCopy(from: string, id: string, name?: string): Promise<void>
558
+ composedPreset(ctx: Context): string | undefined
651
559
 
652
- /**
653
- * Delete a locally authored preset.
654
- *
655
- * @param id - the preset id.
656
- * @throws when the preset is unknown or ships with the deployment.
657
- */
658
- async remove(id: string): Promise<void>
659
-
660
- /**
661
- * Delete one preset through the Remote API.
662
- * @param id - the preset id.
663
- * @returns once the preset is deleted.
664
- * @throws {RemoteError} with the corresponding stable preset code and
665
- * details when deletion is refused.
666
- */
667
- @Remote('deletePreset') async remoteExportDelete(id: string): Promise<void>
668
-
669
- /**
670
- * One agent's instance of a service its preset mounted.
671
- *
672
- * A preset publishes services behind `isolate` realms, which are invisible
673
- * outside the group that declares them — including to the host. This is how a
674
- * caller holding the agent reads one anyway: a request that is ABOUT a
675
- * session but arrives from outside it, which is every browser RPC.
676
- *
677
- * Read addressing only. A host row that `inject`s a service cannot use this,
678
- * because injection resolves before any session exists and has no agent to
679
- * key by; such a service belongs on the host plane instead.
680
- * @param agent - the agent whose composition to look inside.
681
- * @param name - the service name as the preset's rows resolve it.
682
- * @returns the agent's instance, or undefined when its preset mounts none.
560
+ /** Read a service supplied inside an Agent's isolated preset group.
561
+ * @param agent Agent whose composition is queried.
562
+ * @param name Cordis service name.
563
+ * @returns The service, or undefined.
683
564
  */
684
565
  serviceFor<K extends string & keyof Context>(agent: { ctx: Context }, name: K): Context[K] | undefined
685
566
 
686
- /**
687
- * Re-link one agent to a different preset's standing composition.
688
- *
689
- * Only valid while the agent has produced nothing: swapping tools mid
690
- * conversation would leave logged tool calls the new composition cannot
691
- * make. The CALLER owns that check — this method does not read session
692
- * history.
693
- *
694
- * The swap is a parent re-link, not an unmount: standing mounts are shared
695
- * and permanent, so the old composition stays for its other agents and the
696
- * new one is ensured BEFORE the link moves. An unknown or unusable preset
697
- * therefore throws with the agent exactly as it was — there is no torn-down
698
- * state to restore. The re-link runs through the binding this roster kept
699
- * from the agent's mount — dsh-scope's only re-link authority. An agent
700
- * that never composed one has nothing to re-link: the switch is then the
701
- * agent's first bind, exactly a mount. A committed re-link emits
702
- * `tools/change` because changing the parent scope changes the Agent's
703
- * resolved tool set without adding or removing registry entries.
704
- * @param agentCtx - the agent's scope context.
705
- * @param id - the preset to compose the agent from instead.
706
- * @returns the preset now installed.
707
- * @throws when the preset is unknown or its composition is unusable.
567
+ /** Rebind a blank Agent; the caller owns the blank-session check.
568
+ * @param ctx Agent context.
569
+ * @param id Requested preset.
570
+ * @returns The bound identity.
708
571
  */
709
- async recompose(agentCtx: Context, id: string): Promise<AgentPreset>
572
+ async recompose(ctx: Context, id: string): Promise<AgentPreset>
710
573
 
711
- /**
712
- * Compose a blank session's agent from a different preset and record it.
713
- * @param agent - the session's live agent, resolved from the wire identity.
714
- * @param agentPreset - the preset to compose the agent from instead.
715
- * @returns the preset id that was recorded.
716
- * @throws {RemoteError} with `gateway/bad-request`, `agent-preset/locked`,
717
- * `agent-preset/not-found`, or `agent-preset/invalid` when refused.
574
+ /** Select a preset before a session starts its first turn.
575
+ * @param agent Target Agent.
576
+ * @param agentPreset Requested identity.
577
+ * @returns Committed preset identity.
718
578
  */
719
579
  @Remote('select') async select(agent: Agent, agentPreset: string): Promise<string>
720
580
 
721
- /**
722
- * The standing scope key of one preset, for a host reader with no agent.
723
- *
724
- * A cold transcript read resolves tool presenters against the composition
725
- * the session recorded, and the standing mount makes that possible without
726
- * resuming anything: ensuring the mount composes plugins but starts no
727
- * agent, no session, and no turn.
728
- * @param id - the preset id, or `undefined` for {@link defaultId}.
729
- * @returns the standing scope key readers pass as a registry view scope.
730
- * @throws when the preset is unknown or its composition is unusable.
581
+ /** Read current registrations for cold transcript presentation.
582
+ * @param id Preset identity or the default.
583
+ * @returns A revision lease; dispose it after the scoped read completes.
584
+ */
585
+ async acquireScope(id?: string): Promise<{ key: ScopeKey } & AsyncDisposable>
586
+
587
+ /** Read plugin rows without creating an Agent.
588
+ * @returns Current declaration metadata and activation states.
731
589
  */
732
- async standingKeyFor(id?: string): Promise<ScopeKey>
590
+ compositionInventory(): Promise<AgentPresetComposition[]>
733
591
  ```
734
592
 
735
593
  Types: [ScopeKey](./scope.md)
736
594
 
737
- Source: [`packages/preset/agent-presets/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/preset/agent-presets/src/index.ts)
595
+ Source: [`packages/preset/agent-preset-registry/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/preset/agent-preset-registry/src/index.ts)
738
596
 
739
597
  <a id="ctxagents--agentregistry"></a>
740
598
 
@@ -830,16 +688,16 @@ async create(options: CreateAgentOptions): Promise<AgentHandle>
830
688
  async resume(options: ResumeAgentOptions): Promise<AgentHandle>
831
689
 
832
690
  /**
833
- * Register a live agent. Throws if an agent with the same id is already
834
- * registered. Emits `agent/created` on registration and `agent/disposed`
691
+ * Register a live agent with source `startup`. Rejects if the id is already registered or a
692
+ * serial `agent/created` listener fails. Emits `agent/disposed`
835
693
  * when the calling fiber is disposed — both with the agent's scope carrier
836
694
  * (`scopeTarget(agent, agent)`): the subject is the agent in hand, so the
837
695
  * emits are scope-filtered regardless of which context invoked `register`
838
696
  * (calling through `agent.ctx` scopes EFFECTS; dispatch scoping always
839
697
  * requires passing the carrier). The entry is a runtime root; factory-backed
840
- * creation uses `options.parentAgent` for child ownership. Returns the disposer.
698
+ * creation uses `options.parentAgent` for child ownership. Await the registration before using the agent.
841
699
  * @param agent - the already-constructed agent to record in the store.
842
- * @returns the EXACT Cordis effect disposer (single-shot; a repeat call
700
+ * @returns the awaitable Cordis effect disposer (single-shot; a repeat call
843
701
  * returns undefined without awaiting an in-flight teardown). Exact
844
702
  * identity is load-bearing: a composite (generator) effect that owns a
845
703
  * teardown ORDER — the agent factory's lifecycle chain — must yield THIS
@@ -848,7 +706,7 @@ async resume(options: ResumeAgentOptions): Promise<AgentHandle>
848
706
  * owner unload, unregistering the agent (and emitting `agent/disposed`)
849
707
  * while its final turn is still draining.
850
708
  */
851
- register(agent: Agent): () => void
709
+ register(agent: Agent): ReturnType<Context['effect']>
852
710
 
853
711
  /**
854
712
  * Insert an already-constructed agent without announcing it. This is the
@@ -862,19 +720,22 @@ register(agent: Agent): () => void
862
720
  * the resumed session's durable parent lineage.
863
721
  * @returns an idempotent closure that removes this exact entry and emits
864
722
  * `agent/disposed` with listener failures contained. When called from a
865
- * synchronous `agent/created` listener, removal and disposal wait until
866
- * that creation dispatch unwinds.
723
+ * `agent/created` listener, removal and disposal wait until the serial
724
+ * creation dispatch settles.
867
725
  */
868
726
  enter(agent: Agent, owner: Agent | undefined): () => void
869
727
 
870
728
  /**
871
729
  * Announce an agent previously inserted with {@link enter}.
872
730
  * @param agent - the live inserted agent to announce.
731
+ * @param source - fresh creation, resume, clear, or compaction source.
732
+ * @param signal - optional factory initialization cancellation signal passed to listeners.
733
+ * @returns completion of the serial creation listeners; a listener failure rejects.
873
734
  * @throws if `agent` is not the exact live registry entry for its id, or its
874
735
  * creation announcement already began (including a reentrant call from a
875
736
  * creation listener).
876
737
  */
877
- announce(agent: Agent): void
738
+ async announce(agent: Agent, source: SessionStartSource, signal?: AbortSignal): Promise<void>
878
739
 
879
740
  /**
880
741
  * Look up a live agent.
@@ -937,24 +798,27 @@ Types: [Scoped](./scope.md)
937
798
 
938
799
  Source: [`packages/core/agent/src/runtime-types.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/agent/src/runtime-types.ts)
939
800
 
940
- <a id="agentcreated--emit"></a>
801
+ <a id="agentcreated--serial"></a>
941
802
 
942
- #### `agent/created` — emit
803
+ #### `agent/created` — serial
943
804
 
944
- A fully configured agent and live session were published. Setup is composition-only; `agent/session-start` is the first startup-driving extension point. Synchronous listener failure vetoes publication, while returned-promise rejection is reported. Detach requested during dispatch waits until every creation listener has observed the stable entry.
805
+ An entered agent is ready for per-agent initialization after factory setup. Listeners run in order and are awaited before creation resolves. AgentLoop holds queued input until all listeners finish. A throw or rejection fails creation and skips later listeners. Disposal retains the scope and session until dispatch settles; listeners must not await agent.whenIdle() or their own owner's disposal.
945
806
 
946
807
  ```ts cordis-catalog
947
808
  /**
948
- * A fully configured agent and live session were published. Setup is
949
- * composition-only; `agent/session-start` is the first startup-driving extension point.
950
- * Synchronous listener failure vetoes publication, while returned-promise
951
- * rejection is reported. Detach requested during dispatch waits until every
952
- * creation listener has observed the stable entry.
809
+ * An entered agent is ready for per-agent initialization after factory setup.
810
+ * Listeners run in order and are awaited before creation resolves. AgentLoop
811
+ * holds queued input until all listeners finish. A throw or rejection fails
812
+ * creation and skips later listeners. Disposal retains the scope and session
813
+ * until dispatch settles; listeners must not await agent.whenIdle() or their
814
+ * own owner's disposal.
953
815
  * @param payload.agent - the newly registered agent with its live session and completed setup.
816
+ * @param payload.source - fresh creation, resume, clear, or compaction source.
817
+ * @param payload.signal - factory initialization cancellation signal, when provided.
954
818
  * Scope-filtered dispatch (`@deepseek-ai/dsh-scope`): agent-scoped listeners receive only that agent.
955
- * @mode emit
819
+ * @mode serial
956
820
  */
957
- 'agent/created'(this: Scoped<Agent>, payload: { agent: Agent }): void
821
+ 'agent/created'(this: Scoped<Agent>, payload: { agent: Agent; source: SessionStartSource; signal?: AbortSignal }): undefined | Promise<undefined>
958
822
  ```
959
823
 
960
824
  Types: [Scoped](./scope.md)
@@ -1157,30 +1021,6 @@ Types: [LlmFailure](./llm-streaming.md) · [ResolvedRetryPolicy](./llm-streaming
1157
1021
 
1158
1022
  Source: [`packages/core/agent/src/runtime-types.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/agent/src/runtime-types.ts)
1159
1023
 
1160
- <a id="agentsession-start--emit"></a>
1161
-
1162
- #### `agent/session-start` — emit
1163
-
1164
- The session lifecycle began, once before the first turn. Use `agent.inject()` to seed model-facing context. This is a notification, not a veto; disposal requested by a lifecycle owner is rechecked before the driver starts.
1165
-
1166
- ```ts cordis-catalog
1167
- /**
1168
- * The session lifecycle began, once before the first turn. Use
1169
- * `agent.inject()` to seed model-facing context. This is a notification, not
1170
- * a veto; disposal requested by a lifecycle owner is rechecked before the
1171
- * driver starts.
1172
- * @param payload.agent - the agent whose session lifecycle began.
1173
- * @param payload.source - why the session started (fresh startup, resume, …).
1174
- * Scope-filtered dispatch (`@deepseek-ai/dsh-scope`): agent-scoped listeners receive only that agent.
1175
- * @mode emit
1176
- */
1177
- 'agent/session-start'(this: Scoped<Agent>, payload: { agent: Agent; source: SessionStartSource }): void
1178
- ```
1179
-
1180
- Types: [Scoped](./scope.md)
1181
-
1182
- Source: [`packages/core/agent/src/runtime-types.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/agent/src/runtime-types.ts)
1183
-
1184
1024
  <a id="agentstatus--emit"></a>
1185
1025
 
1186
1026
  #### `agent/status` — emit
@@ -1281,5 +1121,5 @@ One session committed a different agent preset to its durable log. Consumers inv
1281
1121
  'agent-preset/selected'(sessionId: SessionId, agentPreset: string): void
1282
1122
  ```
1283
1123
 
1284
- Source: [`packages/preset/agent-presets/src/types.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/preset/agent-presets/src/types.ts)
1124
+ Source: [`packages/preset/agent-preset-registry/src/types.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/preset/agent-preset-registry/src/types.ts)
1285
1125
  <!-- END GENERATED cordis-surface -->