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
@@ -0,0 +1,323 @@
1
+ # Profile management
2
+
3
+ English | [中文](boot.zh.md)
4
+
5
+ The [boot package group](../../packages/boot/README.md) owns launcher-provided profile access and the plugin manager. [Plugin Manager](../../packages/boot/plugin-manager/README.md) documents persistence, reload and package-operation behavior.
6
+
7
+ ## Management records
8
+
9
+ `PluginEntryId` identifies one Loader entry; callers obtain it from `listPlugins` rather than constructing a patch id.
10
+
11
+ `PluginInfo` carries module identity, effective enablement, fiber phase and optional display `meta`, plus a unique `patchId` or a `readOnlyReason`.
12
+
13
+ `BundleInfo` carries the package name, optional installed version, selected enablement, removal availability, optional resolution error, and, for a bundle the profile's own dependency supplies and the installation does not, `source`: that dependency as a spec `pnpm add` accepts. Its optional `meta` and each `BundleRowInfo.meta` contain display text or a metadata diagnostic; Clients select a language at render time.
14
+
15
+ `InstallBundleOptions.enabled` defaults to true. False installs without selecting the bundle layer. `approvedBuilds` grants persistent script permission to the supplied pending package names before installation. `registry` names the registry asked first; absent, the configured one.
16
+
17
+ `PluginRegistries` carries the configured first registry, `null` for the one pnpm's own configuration names, the fallbacks asked after it, and `resolved`, the URL pnpm's own configuration names or `null` while unread. `InspectOptions.registry` names the registry a lookup asks first.
18
+
19
+ `ChangeResult.changed` reports a disk edit independently of `application`: `applied`, `restart-required`, `overridden` or `failed`. Optional `error` carries a localizable code and external diagnostic. `packageResult` records the pnpm exit code, bounded output, truncation flag and complete diagnostic log path, plus `timedOut` when the manager terminated a run that stopped printing. A terminated run is classified `timeout` whatever exit status the signal left behind, so installation and removal report failure instead of success and no further registry is asked. `pendingBuilds` lists undecided packages across the profile; `approvedBuilds` records the names granted permission by this operation; `registries` lists the registries an installation asked, in order; `bundle` and `version` name the package a finished installation added and its manifest version; `failedAt` says whether the last failed run could not reach the registry it asked or the host a git or tarball spec is fetched from.
20
+
21
+ <!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
22
+
23
+ <a id="cordis-surface"></a>
24
+
25
+ ## Cordis API
26
+
27
+ 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).
28
+
29
+ <a id="ctxconfigeditor--configeditor"></a>
30
+
31
+ ### `ctx.configEditor` — `ConfigEditor`
32
+
33
+ Persist complete raw configs and apply them through the normal Loader path.
34
+
35
+ ```ts cordis-catalog
36
+ /** Addressable profile rows; nested Includes have independent configuration ownership.
37
+ * @returns Active entries with unique profile patch ids.
38
+ */
39
+ entries(): Entry[]
40
+
41
+ /** Read inherited and explicit profile values for the active entries.
42
+ * @returns Detached layer values alongside their Loader entries.
43
+ */
44
+ configuration(): Array<{ entry: Entry; inherited: Record<string, unknown>; override: Record<string, unknown> }>
45
+
46
+ /** Validate, persist, and reconcile a plugin's next config; ordinary fields keep normal lifecycle rules.
47
+ * @param entry Current Loader entry, also used to detect replacement during the write.
48
+ * @param change Derive a raw config from the current entry and its inherited layer.
49
+ * @returns Fulfillment after Loader reconciliation completes.
50
+ */
51
+ async edit( entry: Entry, change: (current: Record<string, unknown>, inherited: Record<string, unknown>) => Record<string, unknown>, ): Promise<void>
52
+ ```
53
+
54
+ Source: [`packages/boot/config-editor/src/index.ts`](../../packages/boot/config-editor/src/index.ts)
55
+
56
+ <a id="ctxhmr--hmr"></a>
57
+
58
+ ### `ctx.hmr` — `Hmr`
59
+
60
+ Hot reload service with Cordis-compatible module configuration and events.
61
+
62
+ ```ts cordis-catalog
63
+ /** Serialize a caller-owned mutation with all automatic reload paths.
64
+ * @param operation Work that must not overlap module or configuration replacement.
65
+ * @returns The operation result after its asynchronous work completes.
66
+ */
67
+ runExclusive<T>(operation: () => Promise<T>): Promise<T>
68
+
69
+ /** Watch a configuration path through the same queue as module replacement.
70
+ * @param filename Absolute path, which may not exist yet.
71
+ * @param refresh Rebuilds configuration from its current files and awaits Loader completion.
72
+ * @returns Disposer closing this registration and waiting for its pending refresh.
73
+ */
74
+ async watchConfig(filename: string, refresh: () => Promise<void>): Promise<() => Promise<void>>
75
+
76
+ /** Read direct module dependency URLs from the active Node loader.
77
+ * @param url Module URL.
78
+ * @returns Linked module URLs, or an empty list for an uncached module.
79
+ */
80
+ async getLinked(url: string): Promise<string[]>
81
+ ```
82
+
83
+ Source: [`packages/boot/hmr/src/index.ts`](../../packages/boot/hmr/src/index.ts)
84
+
85
+ <a id="ctxpluginmanager--pluginmanager"></a>
86
+
87
+ ### `ctx.pluginManager` — `PluginManager`
88
+
89
+ Manage profile files and apply their declared reload lifecycle.
90
+
91
+ ```ts cordis-catalog
92
+ /** Read exact plugin-version exemptions saved in this profile.
93
+ * @returns Accepted package-name@version keys with the runtime versions they may run on, and any
94
+ * record or file problem the reader rejected, which the caller reports instead of failing.
95
+ */
96
+ @Remote listVersionExemptions(): { exemptions: Record<string, string[]>; warnings: string[] }
97
+
98
+ /** Grant or revoke one exact plugin/runtime exemption and reevaluate live plugins.
99
+ * @param packageVersion Exact manifest package name followed by @ and its version; never an installation spec or alias.
100
+ * @param runtimeVersion Exact current DSH version for grants; revocation may name a previous runtime.
101
+ * @param enabled Whether to grant rather than revoke the exemption.
102
+ * @param acceptRisk Required true for grants after the user accepts possible crashes and data loss.
103
+ * @returns Saved and runtime outcomes. Startup-only profiles require restart.
104
+ */
105
+ @Remote setVersionExemption(packageVersion: string, runtimeVersion: string, enabled: boolean, acceptRisk?: boolean): Promise<ChangeResult>
106
+
107
+ /** Read current plugins, including why a row cannot be changed through the profile patch.
108
+ * @returns Current runtime entries with persistent patch targets.
109
+ */
110
+ @Remote async listPlugins(): Promise<PluginInfo[]>
111
+
112
+ /** Read the profile's installed bundles, the bundles this dsh installation supplies, and the selected names that are not bundles.
113
+ * A dependency without a bundle patch is listed, as a `not-bundle` problem, only while it is selected.
114
+ * @returns Package versions, manifest descriptions, the installable spec of profile dependencies, rows, optional
115
+ * display metadata, activation selections, whether the installation offers the bundle, and removal availability.
116
+ */
117
+ @Remote listBundles(): Promise<BundleInfo[]>
118
+
119
+ /** Read the registries this manager asks: the configured first one, its fallbacks in order, and what pnpm's own configuration names.
120
+ * @returns The registries in pnpm's comparison form; null is the one pnpm's own configuration names, `resolved` as pnpm reads it now.
121
+ */
122
+ @Remote async registries(): Promise<PluginRegistries>
123
+
124
+ /** Read what a spec names before installing it.
125
+ * @param spec One package spec: a registry name, an absolute path, a git address, or a tarball.
126
+ * @param options The registry asked first.
127
+ * @param signal Ends a registry lookup early.
128
+ * @returns The package the spec names, or why it is refused.
129
+ */
130
+ @Remote async inspect(spec: string, options?: InspectOptions, signal?: AbortSignal): Promise<PluginSpecInspection>
131
+
132
+ /** Persist a plugin entry's desired enablement and apply it on live profiles.
133
+ * @param id Loader entry identity returned by listPlugins.
134
+ * @param enabled Whether the plugin should run.
135
+ * @returns Saved and runtime outcomes, including higher-priority overrides.
136
+ */
137
+ @Remote setPluginEnabled(id: PluginEntryId, enabled: boolean): Promise<ChangeResult>
138
+
139
+ /** Select or remove a bundle layer while retaining installed dependencies.
140
+ * @param name Bundle package name.
141
+ * @param enabled Whether the bundle contributes its patch layer.
142
+ * @returns Persisted and runtime outcomes.
143
+ */
144
+ @Remote setBundleEnabled(name: string, enabled: boolean): Promise<ChangeResult>
145
+
146
+ /**
147
+ * Install a package using the same pnpm implementation as dsh plugin. GitHub
148
+ * repositories get a connection check bounded by githubConnectionTimeoutMs before pnpm starts;
149
+ * only network failures or timeouts stop installation, while pnpm owns authentication and transport fallback. A run
150
+ * that fails, is cancelled, or adds a package without a bundle patch restores
151
+ * `package.json` and `pnpm-lock.yaml` as they were; downloaded files can stay.
152
+ * @param spec One package spec, including local paths relative to the invocation directory.
153
+ * @param options Whether to activate the installed bundle (defaults to true), the request id a cancellation names,
154
+ * the pending build scripts to allow for this profile before pnpm runs, and the registry asked first.
155
+ * @returns Package-manager diagnostics, the registries asked, and the observed activation outcome.
156
+ */
157
+ @Remote installBundle(spec: string, options?: InstallBundleOptions): Promise<ChangeResult>
158
+
159
+ /** Recover the result of an active installation without cancelling it.
160
+ * @param requestId The id supplied when installation started.
161
+ * @returns The installation's outcome after it settles, or null if no active request has that id.
162
+ * Completed results are not retained; null establishes neither success nor cancellation.
163
+ */
164
+ @Remote async waitForInstall(requestId: PluginInstallRequestId): Promise<ChangeResult | null>
165
+
166
+ /** Stop an installation this manager owns and wait until its files are back.
167
+ * @param requestId The id the installation was started with.
168
+ * @returns `cancelled` once the Git check or pnpm exited and the files are restored, `too-late` once the bundle is being
169
+ * applied, `not-running` for any other id.
170
+ */
171
+ @Remote async cancelInstall(requestId: PluginInstallRequestId): Promise<PluginInstallCancellation>
172
+
173
+ /** Unload and remove a profile-owned bundle dependency through dsh plugin's pnpm path; a selected name no
174
+ * dependency holds is only deselected.
175
+ * @param name Installed dependency or selected bundle name.
176
+ * @returns Removal diagnostics and the remaining profile state.
177
+ */
178
+ @Remote removeBundle(name: string): Promise<ChangeResult>
179
+ ```
180
+
181
+ Source: [`packages/boot/plugin-manager/src/index.ts`](../../packages/boot/plugin-manager/src/index.ts)
182
+
183
+ <a id="ctxpluginregistryprobe--pluginregistryprobe"></a>
184
+
185
+ ### `ctx.pluginRegistryProbe` — `PluginRegistryProbe`
186
+
187
+ Compares public registry responses on the Host; the Client owns the initial selection.
188
+
189
+ ```ts cordis-catalog
190
+ /**
191
+ * Race npm and npmmirror HTTPS ping responses through the Host's fetch proxy.
192
+ * Concurrent readers share a probe; a winner cancels and awaits the other request.
193
+ * @returns the first registry with a successful response, or null when disabled or neither responds successfully; results are cached.
194
+ * @throws rejects when the service has been unloaded.
195
+ */
196
+ @Remote async fastest(): Promise<string | null>
197
+ ```
198
+
199
+ Source: [`packages/client/ui-plugin-manager/src/index.ts`](../../packages/client/ui-plugin-manager/src/index.ts)
200
+
201
+ <a id="ctxprofilecontext--profilecontext"></a>
202
+
203
+ ### `ctx.profileContext` — `ProfileContext`
204
+
205
+ Current profile facts; scheduling and mutation belong to their callers.
206
+
207
+ Source: [`packages/boot/app-boot/src/profile-context.ts`](../../packages/boot/app-boot/src/profile-context.ts)
208
+
209
+ <a id="app-boot-events"></a>
210
+
211
+ ### `app-boot/*` events
212
+
213
+ <a id="app-bootconfig-reload--emit"></a>
214
+
215
+ #### `app-boot/config-reload` — emit
216
+
217
+ Profile patches were reconciled into the running Loader tree: every entry update settled and no new inactive entry was introduced. Carries no diff; listeners re-read Loader entries.
218
+
219
+ ```ts cordis-catalog
220
+ /**
221
+ * Profile patches were reconciled into the running Loader tree: every entry update settled and no new
222
+ * inactive entry was introduced. Carries no diff; listeners re-read Loader entries.
223
+ * @mode emit
224
+ */
225
+ 'app-boot/config-reload'(): void
226
+ ```
227
+
228
+ Source: [`packages/boot/app-boot/src/index.ts`](../../packages/boot/app-boot/src/index.ts)
229
+
230
+ <a id="hmr-events"></a>
231
+
232
+ ### `hmr/*` events
233
+
234
+ <a id="hmrchange--emit"></a>
235
+
236
+ #### `hmr/change` — emit
237
+
238
+ A watched file has no module or configuration handler.
239
+
240
+ ```ts cordis-catalog
241
+ /** A watched file has no module or configuration handler.
242
+ * @mode emit
243
+ * @param url Canonical file URL.
244
+ */
245
+ 'hmr/change'(url: string): void
246
+ ```
247
+
248
+ Source: [`packages/boot/hmr/src/index.ts`](../../packages/boot/hmr/src/index.ts)
249
+
250
+ <a id="hmrreload--emit"></a>
251
+
252
+ #### `hmr/reload` — emit
253
+
254
+ Module replacements have finished loading.
255
+
256
+ ```ts cordis-catalog
257
+ /** Module replacements have finished loading.
258
+ * @mode emit
259
+ * @param reloads Replaced plugins and their module locations.
260
+ */
261
+ 'hmr/reload'(reloads: Map<Plugin, Reload>): void
262
+ ```
263
+
264
+ Source: [`packages/boot/hmr/src/index.ts`](../../packages/boot/hmr/src/index.ts)
265
+
266
+ <a id="plugin-manager-events"></a>
267
+
268
+ ### `plugin-manager/*` events
269
+
270
+ <a id="plugin-managerchanged--emit"></a>
271
+
272
+ #### `plugin-manager/changed` — emit
273
+
274
+ The profile's plugins, bundles, or composition changed: a manager operation completed. A patch generation applied outside the manager, by HMR's watcher after a CLI or hand edit, announces nothing here.
275
+
276
+ ```ts cordis-catalog
277
+ /**
278
+ * The profile's plugins, bundles, or composition changed: a manager
279
+ * operation completed. A patch generation applied outside the manager,
280
+ * by HMR's watcher after a CLI or hand edit, announces nothing here.
281
+ * @mode emit
282
+ * @param change - what changed.
283
+ */
284
+ 'plugin-manager/changed'(change: PluginChange): void
285
+ ```
286
+
287
+ Source: [`packages/boot/plugin-manager/src/types.ts`](../../packages/boot/plugin-manager/src/types.ts)
288
+
289
+ <a id="plugin-managerinstall-log--emit"></a>
290
+
291
+ #### `plugin-manager/install-log` — emit
292
+
293
+ One chunk of a pnpm run's output, streamed as the run produces it.
294
+
295
+ ```ts cordis-catalog
296
+ /**
297
+ * One chunk of a pnpm run's output, streamed as the run produces it.
298
+ * @mode emit
299
+ * @param chunk - the chunk and the run it belongs to.
300
+ */
301
+ 'plugin-manager/install-log'(chunk: PluginInstallLogChunk): void
302
+ ```
303
+
304
+ Source: [`packages/boot/plugin-manager/src/types.ts`](../../packages/boot/plugin-manager/src/types.ts)
305
+
306
+ <a id="plugin-managerinstall-state--emit"></a>
307
+
308
+ #### `plugin-manager/install-state` — emit
309
+
310
+ An installation moved between its Host phases. `installing` is announced once per registry the installation asks, with the attempt's registry and position; `cancelling` and `applying` once.
311
+
312
+ ```ts cordis-catalog
313
+ /**
314
+ * An installation moved between its Host phases. `installing` is announced once per registry the
315
+ * installation asks, with the attempt's registry and position; `cancelling` and `applying` once.
316
+ * @mode emit
317
+ * @param progress - the installation's request id and phase, with the attempt while installing.
318
+ */
319
+ 'plugin-manager/install-state'(progress: PluginInstallProgress): void
320
+ ```
321
+
322
+ Source: [`packages/boot/plugin-manager/src/types.ts`](../../packages/boot/plugin-manager/src/types.ts)
323
+ <!-- END GENERATED cordis-surface -->
@@ -0,0 +1,323 @@
1
+ # Profile 管理
2
+
3
+ [English](boot.md) | 中文
4
+
5
+ [boot 包组](../../packages/boot/README.zh.md)负责 launcher 提供的 profile 访问与插件管理器。[插件管理器](../../packages/boot/plugin-manager/README.zh.md)文档说明持久化、重载与包操作行为。
6
+
7
+ ## 管理记录
8
+
9
+ `PluginEntryId` 标识一个 Loader 条目;调用方从 `listPlugins` 获取,不自行拼接 patch id。
10
+
11
+ `PluginInfo` 包含模块标识、实际启停状态、fiber 阶段和可选的展示 `meta`,以及唯一的 `patchId` 或 `readOnlyReason`。
12
+
13
+ `BundleInfo` 包含包名、可选的安装版本、组合层选择状态、删除可用性、可选的解析错误;由 profile 自身依赖提供、且安装不提供的组合包还带有 `source`,即该依赖在 `pnpm add` 中可用的 spec。它的可选 `meta` 与各行的 `BundleRowInfo.meta` 包含展示文本或元信息诊断;Client 在渲染时选择语言。
14
+
15
+ `InstallBundleOptions.enabled` 默认为 true,false 表示安装但不选择组合包层。`approvedBuilds` 在安装前向指定的待审批包名授予持久脚本权限。`registry` 指定首先询问的注册表;缺省为配置的那个。
16
+
17
+ `PluginRegistries` 携带配置的第一个注册表(`null` 即 pnpm 自身配置指定的那个)、随后依次询问的备选注册表,以及 `resolved`——pnpm 自身配置指向的 URL,未读到时为 `null`。`InspectOptions.registry` 指定一次查询首先询问的注册表。
18
+
19
+ `ChangeResult.changed` 报告磁盘修改,独立于 `application`:`applied`、`restart-required`、`overridden` 或 `failed`。可选的 `error` 包含可本地化的错误码和外部诊断。`packageResult` 记录 pnpm 退出码、有界输出、截断标志及完整诊断日志路径;当管理器终止了一个停止打印的运行,还记录 `timedOut`。被终止的运行不论信号留下什么退出状态都归类为 `timeout`,因此安装与删除都报告失败而非成功,也不会再询问下一个注册表。`pendingBuilds` 列出整个 profile 尚未决定的包;`approvedBuilds` 记录本次操作授予权限的包名;`registries` 按顺序列出一次安装问过的注册表;`bundle` 与 `version` 给出完成的安装新增的包及其清单版本;`failedAt` 说明最后一次失败的运行连不上的是所问的注册表,还是 git 或 tarball spec 自身拉取的主机。
20
+
21
+ <!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
22
+
23
+ <a id="cordis-surface"></a>
24
+
25
+ ## Cordis API
26
+
27
+ 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.zh.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
28
+
29
+ <a id="ctxconfigeditor--configeditor"></a>
30
+
31
+ ### `ctx.configEditor` — `ConfigEditor`
32
+
33
+ Persist complete raw configs and apply them through the normal Loader path.
34
+
35
+ ```ts cordis-catalog
36
+ /** Addressable profile rows; nested Includes have independent configuration ownership.
37
+ * @returns Active entries with unique profile patch ids.
38
+ */
39
+ entries(): Entry[]
40
+
41
+ /** Read inherited and explicit profile values for the active entries.
42
+ * @returns Detached layer values alongside their Loader entries.
43
+ */
44
+ configuration(): Array<{ entry: Entry; inherited: Record<string, unknown>; override: Record<string, unknown> }>
45
+
46
+ /** Validate, persist, and reconcile a plugin's next config; ordinary fields keep normal lifecycle rules.
47
+ * @param entry Current Loader entry, also used to detect replacement during the write.
48
+ * @param change Derive a raw config from the current entry and its inherited layer.
49
+ * @returns Fulfillment after Loader reconciliation completes.
50
+ */
51
+ async edit( entry: Entry, change: (current: Record<string, unknown>, inherited: Record<string, unknown>) => Record<string, unknown>, ): Promise<void>
52
+ ```
53
+
54
+ Source: [`packages/boot/config-editor/src/index.ts`](../../packages/boot/config-editor/src/index.ts)
55
+
56
+ <a id="ctxhmr--hmr"></a>
57
+
58
+ ### `ctx.hmr` — `Hmr`
59
+
60
+ Hot reload service with Cordis-compatible module configuration and events.
61
+
62
+ ```ts cordis-catalog
63
+ /** Serialize a caller-owned mutation with all automatic reload paths.
64
+ * @param operation Work that must not overlap module or configuration replacement.
65
+ * @returns The operation result after its asynchronous work completes.
66
+ */
67
+ runExclusive<T>(operation: () => Promise<T>): Promise<T>
68
+
69
+ /** Watch a configuration path through the same queue as module replacement.
70
+ * @param filename Absolute path, which may not exist yet.
71
+ * @param refresh Rebuilds configuration from its current files and awaits Loader completion.
72
+ * @returns Disposer closing this registration and waiting for its pending refresh.
73
+ */
74
+ async watchConfig(filename: string, refresh: () => Promise<void>): Promise<() => Promise<void>>
75
+
76
+ /** Read direct module dependency URLs from the active Node loader.
77
+ * @param url Module URL.
78
+ * @returns Linked module URLs, or an empty list for an uncached module.
79
+ */
80
+ async getLinked(url: string): Promise<string[]>
81
+ ```
82
+
83
+ Source: [`packages/boot/hmr/src/index.ts`](../../packages/boot/hmr/src/index.ts)
84
+
85
+ <a id="ctxpluginmanager--pluginmanager"></a>
86
+
87
+ ### `ctx.pluginManager` — `PluginManager`
88
+
89
+ Manage profile files and apply their declared reload lifecycle.
90
+
91
+ ```ts cordis-catalog
92
+ /** Read exact plugin-version exemptions saved in this profile.
93
+ * @returns Accepted package-name@version keys with the runtime versions they may run on, and any
94
+ * record or file problem the reader rejected, which the caller reports instead of failing.
95
+ */
96
+ @Remote listVersionExemptions(): { exemptions: Record<string, string[]>; warnings: string[] }
97
+
98
+ /** Grant or revoke one exact plugin/runtime exemption and reevaluate live plugins.
99
+ * @param packageVersion Exact manifest package name followed by @ and its version; never an installation spec or alias.
100
+ * @param runtimeVersion Exact current DSH version for grants; revocation may name a previous runtime.
101
+ * @param enabled Whether to grant rather than revoke the exemption.
102
+ * @param acceptRisk Required true for grants after the user accepts possible crashes and data loss.
103
+ * @returns Saved and runtime outcomes. Startup-only profiles require restart.
104
+ */
105
+ @Remote setVersionExemption(packageVersion: string, runtimeVersion: string, enabled: boolean, acceptRisk?: boolean): Promise<ChangeResult>
106
+
107
+ /** Read current plugins, including why a row cannot be changed through the profile patch.
108
+ * @returns Current runtime entries with persistent patch targets.
109
+ */
110
+ @Remote async listPlugins(): Promise<PluginInfo[]>
111
+
112
+ /** Read the profile's installed bundles, the bundles this dsh installation supplies, and the selected names that are not bundles.
113
+ * A dependency without a bundle patch is listed, as a `not-bundle` problem, only while it is selected.
114
+ * @returns Package versions, manifest descriptions, the installable spec of profile dependencies, rows, optional
115
+ * display metadata, activation selections, whether the installation offers the bundle, and removal availability.
116
+ */
117
+ @Remote listBundles(): Promise<BundleInfo[]>
118
+
119
+ /** Read the registries this manager asks: the configured first one, its fallbacks in order, and what pnpm's own configuration names.
120
+ * @returns The registries in pnpm's comparison form; null is the one pnpm's own configuration names, `resolved` as pnpm reads it now.
121
+ */
122
+ @Remote async registries(): Promise<PluginRegistries>
123
+
124
+ /** Read what a spec names before installing it.
125
+ * @param spec One package spec: a registry name, an absolute path, a git address, or a tarball.
126
+ * @param options The registry asked first.
127
+ * @param signal Ends a registry lookup early.
128
+ * @returns The package the spec names, or why it is refused.
129
+ */
130
+ @Remote async inspect(spec: string, options?: InspectOptions, signal?: AbortSignal): Promise<PluginSpecInspection>
131
+
132
+ /** Persist a plugin entry's desired enablement and apply it on live profiles.
133
+ * @param id Loader entry identity returned by listPlugins.
134
+ * @param enabled Whether the plugin should run.
135
+ * @returns Saved and runtime outcomes, including higher-priority overrides.
136
+ */
137
+ @Remote setPluginEnabled(id: PluginEntryId, enabled: boolean): Promise<ChangeResult>
138
+
139
+ /** Select or remove a bundle layer while retaining installed dependencies.
140
+ * @param name Bundle package name.
141
+ * @param enabled Whether the bundle contributes its patch layer.
142
+ * @returns Persisted and runtime outcomes.
143
+ */
144
+ @Remote setBundleEnabled(name: string, enabled: boolean): Promise<ChangeResult>
145
+
146
+ /**
147
+ * Install a package using the same pnpm implementation as dsh plugin. GitHub
148
+ * repositories get a connection check bounded by githubConnectionTimeoutMs before pnpm starts;
149
+ * only network failures or timeouts stop installation, while pnpm owns authentication and transport fallback. A run
150
+ * that fails, is cancelled, or adds a package without a bundle patch restores
151
+ * `package.json` and `pnpm-lock.yaml` as they were; downloaded files can stay.
152
+ * @param spec One package spec, including local paths relative to the invocation directory.
153
+ * @param options Whether to activate the installed bundle (defaults to true), the request id a cancellation names,
154
+ * the pending build scripts to allow for this profile before pnpm runs, and the registry asked first.
155
+ * @returns Package-manager diagnostics, the registries asked, and the observed activation outcome.
156
+ */
157
+ @Remote installBundle(spec: string, options?: InstallBundleOptions): Promise<ChangeResult>
158
+
159
+ /** Recover the result of an active installation without cancelling it.
160
+ * @param requestId The id supplied when installation started.
161
+ * @returns The installation's outcome after it settles, or null if no active request has that id.
162
+ * Completed results are not retained; null establishes neither success nor cancellation.
163
+ */
164
+ @Remote async waitForInstall(requestId: PluginInstallRequestId): Promise<ChangeResult | null>
165
+
166
+ /** Stop an installation this manager owns and wait until its files are back.
167
+ * @param requestId The id the installation was started with.
168
+ * @returns `cancelled` once the Git check or pnpm exited and the files are restored, `too-late` once the bundle is being
169
+ * applied, `not-running` for any other id.
170
+ */
171
+ @Remote async cancelInstall(requestId: PluginInstallRequestId): Promise<PluginInstallCancellation>
172
+
173
+ /** Unload and remove a profile-owned bundle dependency through dsh plugin's pnpm path; a selected name no
174
+ * dependency holds is only deselected.
175
+ * @param name Installed dependency or selected bundle name.
176
+ * @returns Removal diagnostics and the remaining profile state.
177
+ */
178
+ @Remote removeBundle(name: string): Promise<ChangeResult>
179
+ ```
180
+
181
+ Source: [`packages/boot/plugin-manager/src/index.ts`](../../packages/boot/plugin-manager/src/index.ts)
182
+
183
+ <a id="ctxpluginregistryprobe--pluginregistryprobe"></a>
184
+
185
+ ### `ctx.pluginRegistryProbe` — `PluginRegistryProbe`
186
+
187
+ Compares public registry responses on the Host; the Client owns the initial selection.
188
+
189
+ ```ts cordis-catalog
190
+ /**
191
+ * Race npm and npmmirror HTTPS ping responses through the Host's fetch proxy.
192
+ * Concurrent readers share a probe; a winner cancels and awaits the other request.
193
+ * @returns the first registry with a successful response, or null when disabled or neither responds successfully; results are cached.
194
+ * @throws rejects when the service has been unloaded.
195
+ */
196
+ @Remote async fastest(): Promise<string | null>
197
+ ```
198
+
199
+ Source: [`packages/client/ui-plugin-manager/src/index.ts`](../../packages/client/ui-plugin-manager/src/index.ts)
200
+
201
+ <a id="ctxprofilecontext--profilecontext"></a>
202
+
203
+ ### `ctx.profileContext` — `ProfileContext`
204
+
205
+ Current profile facts; scheduling and mutation belong to their callers.
206
+
207
+ Source: [`packages/boot/app-boot/src/profile-context.ts`](../../packages/boot/app-boot/src/profile-context.ts)
208
+
209
+ <a id="app-boot-events"></a>
210
+
211
+ ### `app-boot/*` events
212
+
213
+ <a id="app-bootconfig-reload--emit"></a>
214
+
215
+ #### `app-boot/config-reload` — emit
216
+
217
+ Profile patches were reconciled into the running Loader tree: every entry update settled and no new inactive entry was introduced. Carries no diff; listeners re-read Loader entries.
218
+
219
+ ```ts cordis-catalog
220
+ /**
221
+ * Profile patches were reconciled into the running Loader tree: every entry update settled and no new
222
+ * inactive entry was introduced. Carries no diff; listeners re-read Loader entries.
223
+ * @mode emit
224
+ */
225
+ 'app-boot/config-reload'(): void
226
+ ```
227
+
228
+ Source: [`packages/boot/app-boot/src/index.ts`](../../packages/boot/app-boot/src/index.ts)
229
+
230
+ <a id="hmr-events"></a>
231
+
232
+ ### `hmr/*` events
233
+
234
+ <a id="hmrchange--emit"></a>
235
+
236
+ #### `hmr/change` — emit
237
+
238
+ A watched file has no module or configuration handler.
239
+
240
+ ```ts cordis-catalog
241
+ /** A watched file has no module or configuration handler.
242
+ * @mode emit
243
+ * @param url Canonical file URL.
244
+ */
245
+ 'hmr/change'(url: string): void
246
+ ```
247
+
248
+ Source: [`packages/boot/hmr/src/index.ts`](../../packages/boot/hmr/src/index.ts)
249
+
250
+ <a id="hmrreload--emit"></a>
251
+
252
+ #### `hmr/reload` — emit
253
+
254
+ Module replacements have finished loading.
255
+
256
+ ```ts cordis-catalog
257
+ /** Module replacements have finished loading.
258
+ * @mode emit
259
+ * @param reloads Replaced plugins and their module locations.
260
+ */
261
+ 'hmr/reload'(reloads: Map<Plugin, Reload>): void
262
+ ```
263
+
264
+ Source: [`packages/boot/hmr/src/index.ts`](../../packages/boot/hmr/src/index.ts)
265
+
266
+ <a id="plugin-manager-events"></a>
267
+
268
+ ### `plugin-manager/*` events
269
+
270
+ <a id="plugin-managerchanged--emit"></a>
271
+
272
+ #### `plugin-manager/changed` — emit
273
+
274
+ The profile's plugins, bundles, or composition changed: a manager operation completed. A patch generation applied outside the manager, by HMR's watcher after a CLI or hand edit, announces nothing here.
275
+
276
+ ```ts cordis-catalog
277
+ /**
278
+ * The profile's plugins, bundles, or composition changed: a manager
279
+ * operation completed. A patch generation applied outside the manager,
280
+ * by HMR's watcher after a CLI or hand edit, announces nothing here.
281
+ * @mode emit
282
+ * @param change - what changed.
283
+ */
284
+ 'plugin-manager/changed'(change: PluginChange): void
285
+ ```
286
+
287
+ Source: [`packages/boot/plugin-manager/src/types.ts`](../../packages/boot/plugin-manager/src/types.ts)
288
+
289
+ <a id="plugin-managerinstall-log--emit"></a>
290
+
291
+ #### `plugin-manager/install-log` — emit
292
+
293
+ One chunk of a pnpm run's output, streamed as the run produces it.
294
+
295
+ ```ts cordis-catalog
296
+ /**
297
+ * One chunk of a pnpm run's output, streamed as the run produces it.
298
+ * @mode emit
299
+ * @param chunk - the chunk and the run it belongs to.
300
+ */
301
+ 'plugin-manager/install-log'(chunk: PluginInstallLogChunk): void
302
+ ```
303
+
304
+ Source: [`packages/boot/plugin-manager/src/types.ts`](../../packages/boot/plugin-manager/src/types.ts)
305
+
306
+ <a id="plugin-managerinstall-state--emit"></a>
307
+
308
+ #### `plugin-manager/install-state` — emit
309
+
310
+ An installation moved between its Host phases. `installing` is announced once per registry the installation asks, with the attempt's registry and position; `cancelling` and `applying` once.
311
+
312
+ ```ts cordis-catalog
313
+ /**
314
+ * An installation moved between its Host phases. `installing` is announced once per registry the
315
+ * installation asks, with the attempt's registry and position; `cancelling` and `applying` once.
316
+ * @mode emit
317
+ * @param progress - the installation's request id and phase, with the attempt while installing.
318
+ */
319
+ 'plugin-manager/install-state'(progress: PluginInstallProgress): void
320
+ ```
321
+
322
+ Source: [`packages/boot/plugin-manager/src/types.ts`](../../packages/boot/plugin-manager/src/types.ts)
323
+ <!-- END GENERATED cordis-surface -->