dsh-plugin-dev-kb 1.6.0 → 1.8.1

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 (622) hide show
  1. package/CHANGELOG.md +186 -141
  2. package/README.en.md +172 -155
  3. package/README.md +183 -163
  4. package/kb/INDEX.md +236 -234
  5. package/kb/README.md +88 -83
  6. package/kb/extra/AGENTS.md +77 -77
  7. package/kb/extra/cli-help.md +15 -7
  8. package/kb/extra/cli-help.zh.md +15 -7
  9. package/kb/extra/cookbook/adding-a-plugin-preview.md +18 -25
  10. package/kb/extra/cookbook/adding-a-plugin-preview.zh.md +18 -25
  11. package/kb/extra/cookbook/reviewing-persistence-type-changes.md +1 -1
  12. package/kb/extra/cookbook/reviewing-persistence-type-changes.zh.md +1 -1
  13. package/kb/extra/cookbook/reviewing-ui-design.md +166 -0
  14. package/kb/extra/cookbook/reviewing-ui-design.zh.md +166 -0
  15. package/kb/extra/deepseek-llm-api-wire-extensions.md +162 -162
  16. package/kb/extra/deepseek-llm-api-wire-extensions.zh.md +162 -162
  17. package/kb/extra/defensive-patterns/conversation-and-session.md +2 -2
  18. package/kb/extra/defensive-patterns/conversation-and-session.zh.md +2 -2
  19. package/kb/extra/defensive-patterns/general.md +2 -0
  20. package/kb/extra/defensive-patterns/general.zh.md +2 -0
  21. package/kb/extra/defensive-patterns/package-surface.md +233 -231
  22. package/kb/extra/defensive-patterns/package-surface.zh.md +233 -231
  23. package/kb/extra/defensive-patterns/remote-and-api.md +117 -115
  24. package/kb/extra/defensive-patterns/remote-and-api.zh.md +117 -115
  25. package/kb/extra/development.md +221 -214
  26. package/kb/extra/development.zh.md +228 -221
  27. package/kb/extra/event-producer-consumer.md +133 -110
  28. package/kb/extra/event-producer-consumer.zh.md +135 -112
  29. package/kb/extra/i18n/README.md +2 -0
  30. package/kb/extra/i18n/README.zh.md +2 -0
  31. package/kb/extra/module-graph.md +1961 -1776
  32. package/kb/extra/module-graph.zh.md +1963 -1778
  33. package/kb/extra/persistence-changes/2026-10-13-liveshare-share-viewer-principal.md +60 -0
  34. package/kb/extra/persistence-changes/2026-10-13-liveshare-share-viewer-principal.zh.md +60 -0
  35. package/kb/extra/persistence-changes/2026-10-19-session-team-mode.md +48 -0
  36. package/kb/extra/persistence-changes/2026-10-19-session-team-mode.zh.md +48 -0
  37. package/kb/extra/persistence-changes/2026-10-22-action-card-status.md +60 -0
  38. package/kb/extra/persistence-changes/2026-10-22-action-card-status.zh.md +60 -0
  39. package/kb/extra/persistence-changes/2026-10-25-skill-catalog-incomplete.md +60 -0
  40. package/kb/extra/persistence-changes/2026-10-25-skill-catalog-incomplete.zh.md +60 -0
  41. package/kb/extra/persistence-changes/2026-10-27-retry-control-input.md +60 -0
  42. package/kb/extra/persistence-changes/2026-10-27-retry-control-input.zh.md +60 -0
  43. package/kb/extra/persistence-changes/2026-10-27-subagent-settlement-attribution.md +60 -0
  44. package/kb/extra/persistence-changes/2026-10-27-subagent-settlement-attribution.zh.md +60 -0
  45. package/kb/extra/persistence-changes/2026-11-02-subagent-catalog-names.md +48 -0
  46. package/kb/extra/persistence-changes/2026-11-02-subagent-catalog-names.zh.md +48 -0
  47. package/kb/extra/persistence-changes/2026-11-02-team-task-owner-names.md +48 -0
  48. package/kb/extra/persistence-changes/2026-11-02-team-task-owner-names.zh.md +48 -0
  49. package/kb/extra/persistence-changes/2026-11-05-timeline-priority-notice.md +60 -0
  50. package/kb/extra/persistence-changes/2026-11-05-timeline-priority-notice.zh.md +60 -0
  51. package/kb/extra/persistence-changes/README.md +92 -90
  52. package/kb/extra/persistence-changes/README.zh.md +92 -90
  53. package/kb/extra/persistence-changes/historical-formats/README.md +75 -75
  54. package/kb/extra/persistence-changes/historical-formats/README.zh.md +75 -75
  55. package/kb/extra/persistence-changes/releases/README.md +103 -103
  56. package/kb/extra/persistence-changes/releases/README.zh.md +103 -103
  57. package/kb/extra/rescope.md +55 -53
  58. package/kb/extra/rescope.zh.md +55 -53
  59. package/kb/extra/subsystems/agent-team.md +38 -75
  60. package/kb/extra/subsystems/agent-team.zh.md +38 -75
  61. package/kb/extra/subsystems/attachment.md +36 -13
  62. package/kb/extra/subsystems/attachment.zh.md +36 -13
  63. package/kb/extra/subsystems/boot.md +631 -447
  64. package/kb/extra/subsystems/boot.zh.md +631 -447
  65. package/kb/extra/subsystems/computer-use.md +179 -59
  66. package/kb/extra/subsystems/computer-use.zh.md +179 -59
  67. package/kb/extra/subsystems/deliverables.md +2 -0
  68. package/kb/extra/subsystems/deliverables.zh.md +2 -0
  69. package/kb/extra/subsystems/extensions.md +387 -384
  70. package/kb/extra/subsystems/extensions.zh.md +387 -384
  71. package/kb/extra/subsystems/feedback.md +418 -400
  72. package/kb/extra/subsystems/feedback.zh.md +418 -400
  73. package/kb/extra/subsystems/forge.md +2169 -0
  74. package/kb/extra/subsystems/forge.zh.md +2171 -0
  75. package/kb/extra/subsystems/liveshare.md +167 -0
  76. package/kb/extra/subsystems/liveshare.zh.md +167 -0
  77. package/kb/extra/subsystems/mcp.md +237 -139
  78. package/kb/extra/subsystems/mcp.zh.md +237 -139
  79. package/kb/extra/subsystems/office-kit.md +122 -0
  80. package/kb/extra/subsystems/office-kit.zh.md +122 -0
  81. package/kb/extra/subsystems/working-directory.md +95 -64
  82. package/kb/extra/subsystems/working-directory.zh.md +95 -64
  83. package/kb/extra/subsystems/worktrees.md +187 -76
  84. package/kb/extra/subsystems/worktrees.zh.md +187 -76
  85. package/kb/extra/testing.md +1 -1
  86. package/kb/extra/testing.zh.md +1 -1
  87. package/kb/extra/ui-design-review-cases.md +445 -0
  88. package/kb/extra/ui-design-review-cases.zh.md +445 -0
  89. package/kb/extra/ui-radius.md +3 -1
  90. package/kb/extra/ui-radius.zh.md +3 -1
  91. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/python-ptc-sandbox/guide.md +21 -21
  92. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/python-ptc-sandbox/guide.zh.md +21 -21
  93. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/team-direct-inbox/guide.md +1 -1
  94. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/team-direct-inbox/guide.zh.md +1 -1
  95. package/kb/extra/upgrade-guide/v0.2.1-alpha.2/cordis-timer-wrappers/guide.md +24 -0
  96. package/kb/extra/upgrade-guide/v0.2.1-alpha.2/cordis-timer-wrappers/guide.zh.md +24 -0
  97. package/kb/extra/upgrade-guide/v0.2.1-alpha.2/plugin-manager-view-fields/guide.md +25 -0
  98. package/kb/extra/upgrade-guide/v0.2.1-alpha.2/plugin-manager-view-fields/guide.zh.md +25 -0
  99. package/kb/extra/upgrade-guide/v0.2.1-alpha.4/model-switch-compaction/guide.md +30 -0
  100. package/kb/extra/upgrade-guide/v0.2.1-alpha.4/model-switch-compaction/guide.zh.md +30 -0
  101. package/kb/extra/upgrade-guide/v0.2.1-alpha.4/session-model-selection/guide.md +28 -0
  102. package/kb/extra/upgrade-guide/v0.2.1-alpha.4/session-model-selection/guide.zh.md +28 -0
  103. package/kb/extra/upgrade-guide/v0.2.1-rc.1/agent-instructions-chain-budgets/guide.md +24 -0
  104. package/kb/extra/upgrade-guide/v0.2.1-rc.1/agent-instructions-chain-budgets/guide.zh.md +24 -0
  105. package/kb/extra/upgrade-guide/v0.2.1-rc.1/subagent-control-tools/guide.md +23 -0
  106. package/kb/extra/upgrade-guide/v0.2.1-rc.1/subagent-control-tools/guide.zh.md +23 -0
  107. package/kb/extra/upgrade-guide/v0.2.1-rc.2/agent-runtime-owner/guide.md +20 -0
  108. package/kb/extra/upgrade-guide/v0.2.1-rc.2/agent-runtime-owner/guide.zh.md +20 -0
  109. package/kb/extra/upgrade-guide/v0.2.1-rc.2/agent-team-subagents/guide.md +31 -0
  110. package/kb/extra/upgrade-guide/v0.2.1-rc.2/agent-team-subagents/guide.zh.md +31 -0
  111. package/kb/extra/upgrade-guide/v0.2.1-rc.2/approval-projection-dependency/guide.md +34 -0
  112. package/kb/extra/upgrade-guide/v0.2.1-rc.2/approval-projection-dependency/guide.zh.md +34 -0
  113. package/kb/extra/upgrade-guide/v0.2.1-rc.2/auto-review-shutdown/guide.md +20 -0
  114. package/kb/extra/upgrade-guide/v0.2.1-rc.2/auto-review-shutdown/guide.zh.md +20 -0
  115. package/kb/extra/upgrade-guide/v0.2.1-rc.2/auto-review-user-sources/guide.md +18 -0
  116. package/kb/extra/upgrade-guide/v0.2.1-rc.2/auto-review-user-sources/guide.zh.md +18 -0
  117. package/kb/extra/upgrade-guide/v0.2.1-rc.2/built-in-japanese/guide.md +18 -0
  118. package/kb/extra/upgrade-guide/v0.2.1-rc.2/built-in-japanese/guide.zh.md +18 -0
  119. package/kb/extra/upgrade-guide/v0.2.1-rc.2/conditional-tools/guide.md +25 -0
  120. package/kb/extra/upgrade-guide/v0.2.1-rc.2/conditional-tools/guide.zh.md +25 -0
  121. package/kb/extra/upgrade-guide/v0.2.1-rc.2/context-menu-services/guide.md +23 -0
  122. package/kb/extra/upgrade-guide/v0.2.1-rc.2/context-menu-services/guide.zh.md +23 -0
  123. package/kb/extra/upgrade-guide/v0.2.1-rc.2/cua-consent-storage/guide.md +22 -0
  124. package/kb/extra/upgrade-guide/v0.2.1-rc.2/cua-consent-storage/guide.zh.md +22 -0
  125. package/kb/extra/upgrade-guide/v0.2.1-rc.2/cua-preset-scope/guide.md +18 -0
  126. package/kb/extra/upgrade-guide/v0.2.1-rc.2/cua-preset-scope/guide.zh.md +18 -0
  127. package/kb/extra/upgrade-guide/v0.2.1-rc.2/cua-relative-coordinates/guide.md +17 -0
  128. package/kb/extra/upgrade-guide/v0.2.1-rc.2/cua-relative-coordinates/guide.zh.md +17 -0
  129. package/kb/extra/upgrade-guide/v0.2.1-rc.2/file-drag-callbacks/guide.md +19 -0
  130. package/kb/extra/upgrade-guide/v0.2.1-rc.2/file-drag-callbacks/guide.zh.md +19 -0
  131. package/kb/extra/upgrade-guide/v0.2.1-rc.2/headless-policy-composition/guide.md +27 -0
  132. package/kb/extra/upgrade-guide/v0.2.1-rc.2/headless-policy-composition/guide.zh.md +27 -0
  133. package/kb/extra/upgrade-guide/v0.2.1-rc.2/model-badge-package-removal/guide.md +18 -0
  134. package/kb/extra/upgrade-guide/v0.2.1-rc.2/model-badge-package-removal/guide.zh.md +18 -0
  135. package/kb/extra/upgrade-guide/v0.2.1-rc.2/new-session-blank-reuse/guide.md +22 -0
  136. package/kb/extra/upgrade-guide/v0.2.1-rc.2/new-session-blank-reuse/guide.zh.md +22 -0
  137. package/kb/extra/upgrade-guide/v0.2.1-rc.2/node-24/guide.md +17 -0
  138. package/kb/extra/upgrade-guide/v0.2.1-rc.2/node-24/guide.zh.md +17 -0
  139. package/kb/extra/upgrade-guide/v0.2.1-rc.2/official-bundle-lists/guide.md +18 -0
  140. package/kb/extra/upgrade-guide/v0.2.1-rc.2/official-bundle-lists/guide.zh.md +18 -0
  141. package/kb/extra/upgrade-guide/v0.2.1-rc.2/persistent-terminal-controls/guide.md +18 -0
  142. package/kb/extra/upgrade-guide/v0.2.1-rc.2/persistent-terminal-controls/guide.zh.md +18 -0
  143. package/kb/extra/upgrade-guide/v0.2.1-rc.2/pi-ai-default-capacities/guide.md +18 -0
  144. package/kb/extra/upgrade-guide/v0.2.1-rc.2/pi-ai-default-capacities/guide.zh.md +18 -0
  145. package/kb/extra/upgrade-guide/v0.2.1-rc.2/pi-ai-model-catalog/guide.md +53 -0
  146. package/kb/extra/upgrade-guide/v0.2.1-rc.2/pi-ai-model-catalog/guide.zh.md +53 -0
  147. package/kb/extra/upgrade-guide/v0.2.1-rc.2/pi-ai-protocol-replay/guide.md +30 -0
  148. package/kb/extra/upgrade-guide/v0.2.1-rc.2/pi-ai-protocol-replay/guide.zh.md +30 -0
  149. package/kb/extra/upgrade-guide/v0.2.1-rc.2/ptc-script-format/guide.md +20 -0
  150. package/kb/extra/upgrade-guide/v0.2.1-rc.2/ptc-script-format/guide.zh.md +20 -0
  151. package/kb/extra/upgrade-guide/v0.2.1-rc.2/sdk-desktop-context/guide.md +18 -0
  152. package/kb/extra/upgrade-guide/v0.2.1-rc.2/sdk-desktop-context/guide.zh.md +18 -0
  153. package/kb/extra/upgrade-guide/v0.2.1-rc.2/sdk-minimal-checkpoints/guide.md +18 -0
  154. package/kb/extra/upgrade-guide/v0.2.1-rc.2/sdk-minimal-checkpoints/guide.zh.md +18 -0
  155. package/kb/extra/upgrade-guide/v0.2.1-rc.2/session-projection-handles/guide.md +24 -0
  156. package/kb/extra/upgrade-guide/v0.2.1-rc.2/session-projection-handles/guide.zh.md +24 -0
  157. package/kb/extra/upgrade-guide/v0.2.1-rc.2/session-store-writes/guide.md +25 -0
  158. package/kb/extra/upgrade-guide/v0.2.1-rc.2/session-store-writes/guide.zh.md +25 -0
  159. package/kb/extra/upgrade-guide/v0.2.1-rc.2/session-team-mode/guide.md +22 -0
  160. package/kb/extra/upgrade-guide/v0.2.1-rc.2/session-team-mode/guide.zh.md +22 -0
  161. package/kb/extra/upgrade-guide/v0.2.1-rc.2/subagent-activation-options/guide.md +18 -0
  162. package/kb/extra/upgrade-guide/v0.2.1-rc.2/subagent-activation-options/guide.zh.md +18 -0
  163. package/kb/extra/upgrade-guide/v0.2.1-rc.2/subagent-service-methods/guide.md +19 -0
  164. package/kb/extra/upgrade-guide/v0.2.1-rc.2/subagent-service-methods/guide.zh.md +19 -0
  165. package/kb/extra/upgrade-guide/v0.2.1-rc.2/subagent-user-controls/guide.md +26 -0
  166. package/kb/extra/upgrade-guide/v0.2.1-rc.2/subagent-user-controls/guide.zh.md +26 -0
  167. package/kb/extra/upgrade-guide/v0.2.1-rc.2/tool-executor-plugins/guide.md +35 -0
  168. package/kb/extra/upgrade-guide/v0.2.1-rc.2/tool-executor-plugins/guide.zh.md +35 -0
  169. package/kb/extra/upgrade-guide/v0.2.1-rc.2/web-fetch-private-destinations/guide.md +21 -0
  170. package/kb/extra/upgrade-guide/v0.2.1-rc.2/web-fetch-private-destinations/guide.zh.md +21 -0
  171. package/kb/extra/upgrade-guide/v0.2.1-rc.2/webserver-index-peer/guide.md +17 -0
  172. package/kb/extra/upgrade-guide/v0.2.1-rc.2/webserver-index-peer/guide.zh.md +17 -0
  173. package/kb/extra/upgrade-guide/v0.2.1-rc.3/attachment-read-access/guide.md +23 -0
  174. package/kb/extra/upgrade-guide/v0.2.1-rc.3/attachment-read-access/guide.zh.md +23 -0
  175. package/kb/extra/upgrade-guide/v0.2.1-rc.3/computer-use-helper-permissions/guide.md +21 -0
  176. package/kb/extra/upgrade-guide/v0.2.1-rc.3/computer-use-helper-permissions/guide.zh.md +21 -0
  177. package/kb/extra/upgrade-guide/v0.2.1-rc.3/cua-bundle-id-consent/guide.md +20 -0
  178. package/kb/extra/upgrade-guide/v0.2.1-rc.3/cua-bundle-id-consent/guide.zh.md +20 -0
  179. package/kb/extra/upgrade-guide/v0.2.1-rc.3/generated-worktree-names/guide.md +20 -0
  180. package/kb/extra/upgrade-guide/v0.2.1-rc.3/generated-worktree-names/guide.zh.md +20 -0
  181. package/kb/extra/upgrade-guide/v0.2.1-rc.3/inbox-only-agent-wait/guide.md +19 -0
  182. package/kb/extra/upgrade-guide/v0.2.1-rc.3/inbox-only-agent-wait/guide.zh.md +19 -0
  183. package/kb/extra/upgrade-guide/v0.2.1-rc.3/independent-session-forks/guide.md +23 -0
  184. package/kb/extra/upgrade-guide/v0.2.1-rc.3/independent-session-forks/guide.zh.md +23 -0
  185. package/kb/extra/upgrade-guide/v0.2.1-rc.3/ptc-caller-cancellation/guide.md +20 -0
  186. package/kb/extra/upgrade-guide/v0.2.1-rc.3/ptc-caller-cancellation/guide.zh.md +20 -0
  187. package/kb/extra/upgrade-guide/v0.2.1-rc.3/session-follow-activation/guide.md +21 -0
  188. package/kb/extra/upgrade-guide/v0.2.1-rc.3/session-follow-activation/guide.zh.md +21 -0
  189. package/kb/extra/upgrade-guide/v0.2.1-rc.3/subagent-runtime-ownership/guide.md +21 -0
  190. package/kb/extra/upgrade-guide/v0.2.1-rc.3/subagent-runtime-ownership/guide.zh.md +21 -0
  191. package/kb/extra/upgrade-guide/v0.2.1-rc.3/team-mode-menu/guide.md +18 -0
  192. package/kb/extra/upgrade-guide/v0.2.1-rc.3/team-mode-menu/guide.zh.md +18 -0
  193. package/kb/extra/upgrade-guide/v0.2.1-rc.3/team-projection/guide.md +20 -0
  194. package/kb/extra/upgrade-guide/v0.2.1-rc.3/team-projection/guide.zh.md +20 -0
  195. package/kb/extra/upgrade-guide/v0.2.1-rc.3/web-file-downloads/guide.md +19 -0
  196. package/kb/extra/upgrade-guide/v0.2.1-rc.3/web-file-downloads/guide.zh.md +19 -0
  197. package/kb/extra/upgrade-guide/v0.2.1-rc.3/web-search-defaults/guide.md +18 -0
  198. package/kb/extra/upgrade-guide/v0.2.1-rc.3/web-search-defaults/guide.zh.md +18 -0
  199. package/kb/extra/upgrade-guide/v0.2.1-rc.4/model-listing-refresh/guide.md +22 -0
  200. package/kb/extra/upgrade-guide/v0.2.1-rc.4/model-listing-refresh/guide.zh.md +22 -0
  201. package/kb/extra/upgrade-guide/v0.2.1-rc.4/reasoning-body-props/guide.md +20 -0
  202. package/kb/extra/upgrade-guide/v0.2.1-rc.4/reasoning-body-props/guide.zh.md +20 -0
  203. package/kb/extra/upgrade-guide/v0.2.1-rc.4/sandbox-unsupported-policy-error/guide.md +18 -0
  204. package/kb/extra/upgrade-guide/v0.2.1-rc.4/sandbox-unsupported-policy-error/guide.zh.md +18 -0
  205. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/context-menu-target/guide.md +19 -0
  206. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/context-menu-target/guide.zh.md +19 -0
  207. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/cordis-loader-entry-trees/guide.md +24 -0
  208. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/cordis-loader-entry-trees/guide.zh.md +24 -0
  209. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/css-anchored-menus/guide.md +21 -0
  210. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/css-anchored-menus/guide.zh.md +21 -0
  211. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/cua-source-dev-helper/guide.md +19 -0
  212. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/cua-source-dev-helper/guide.zh.md +19 -0
  213. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/desktop-stable-channel/guide.md +18 -0
  214. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/desktop-stable-channel/guide.zh.md +18 -0
  215. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/forge-git-permissions/guide.md +21 -0
  216. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/forge-git-permissions/guide.zh.md +21 -0
  217. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/forge-worktree-entry/guide.md +29 -0
  218. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/forge-worktree-entry/guide.zh.md +29 -0
  219. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/fs-observation-policy-default-off/guide.md +29 -0
  220. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/fs-observation-policy-default-off/guide.zh.md +29 -0
  221. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/llm-error-builtin-codes/guide.md +18 -0
  222. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/llm-error-builtin-codes/guide.zh.md +18 -0
  223. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/llm-request-purpose-declarations/guide.md +29 -0
  224. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/llm-request-purpose-declarations/guide.zh.md +29 -0
  225. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/pi-ai-request-image-count/guide.md +18 -0
  226. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/pi-ai-request-image-count/guide.zh.md +18 -0
  227. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/projection-event-frames/guide.md +32 -0
  228. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/projection-event-frames/guide.zh.md +32 -0
  229. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/projection-released-checkpoint/guide.md +30 -0
  230. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/projection-released-checkpoint/guide.zh.md +30 -0
  231. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/projection-snapshot-scope/guide.md +19 -0
  232. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/projection-snapshot-scope/guide.zh.md +19 -0
  233. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/retained-ptc-timeout/guide.md +21 -0
  234. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/retained-ptc-timeout/guide.zh.md +21 -0
  235. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/schedule-agent-tools/guide.md +37 -0
  236. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/schedule-agent-tools/guide.zh.md +37 -0
  237. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/schedule-remote-host-tasks/guide.md +22 -0
  238. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/schedule-remote-host-tasks/guide.zh.md +22 -0
  239. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/sdk-run-commands/guide.md +24 -0
  240. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/sdk-run-commands/guide.zh.md +24 -0
  241. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/session-header-menu/guide.md +20 -0
  242. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/session-header-menu/guide.zh.md +20 -0
  243. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/subagent-explicit-reasoning/guide.md +20 -0
  244. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/subagent-explicit-reasoning/guide.zh.md +20 -0
  245. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/web-search-credential-modes/guide.md +17 -0
  246. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/web-search-credential-modes/guide.zh.md +17 -0
  247. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/web-search-default-provider/guide.md +19 -0
  248. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/web-search-default-provider/guide.zh.md +19 -0
  249. package/kb/extra/upgrade-guide/v0.2.2-alpha.3/chat-process-activity-context/guide.md +18 -0
  250. package/kb/extra/upgrade-guide/v0.2.2-alpha.3/chat-process-activity-context/guide.zh.md +18 -0
  251. package/kb/extra/upgrade-guide/v0.2.2-alpha.3/office-kit-package/guide.md +34 -0
  252. package/kb/extra/upgrade-guide/v0.2.2-alpha.3/office-kit-package/guide.zh.md +34 -0
  253. package/kb/extra/upgrade-guide/v0.2.2-alpha.3/office-operation-tools/guide.md +49 -0
  254. package/kb/extra/upgrade-guide/v0.2.2-alpha.3/office-operation-tools/guide.zh.md +49 -0
  255. package/kb/extra/upgrade-guide/v0.2.2-alpha.3/office-skill-resources/guide.md +36 -0
  256. package/kb/extra/upgrade-guide/v0.2.2-alpha.3/office-skill-resources/guide.zh.md +36 -0
  257. package/kb/extra/upgrade-guide/v0.2.2-alpha.3/subagent-names/guide.md +29 -0
  258. package/kb/extra/upgrade-guide/v0.2.2-alpha.3/subagent-names/guide.zh.md +29 -0
  259. package/kb/extra/upgrade-guide/v0.2.2-rc.1/account-notification-fields/guide.md +26 -0
  260. package/kb/extra/upgrade-guide/v0.2.2-rc.1/account-notification-fields/guide.zh.md +26 -0
  261. package/kb/extra/upgrade-guide/v0.2.2-rc.1/account-remote-provider/guide.md +22 -0
  262. package/kb/extra/upgrade-guide/v0.2.2-rc.1/account-remote-provider/guide.zh.md +22 -0
  263. package/kb/extra/upgrade-guide/v0.2.2-rc.1/archive-worktrees/guide.md +21 -0
  264. package/kb/extra/upgrade-guide/v0.2.2-rc.1/archive-worktrees/guide.zh.md +21 -0
  265. package/kb/extra/upgrade-guide/v0.2.2-rc.1/attachment-error-codes/guide.md +23 -0
  266. package/kb/extra/upgrade-guide/v0.2.2-rc.1/attachment-error-codes/guide.zh.md +23 -0
  267. package/kb/extra/upgrade-guide/v0.2.2-rc.1/cua-ax-read-limits/guide.md +20 -0
  268. package/kb/extra/upgrade-guide/v0.2.2-rc.1/cua-ax-read-limits/guide.zh.md +20 -0
  269. package/kb/extra/upgrade-guide/v0.2.2-rc.1/cua-hover-ax-only/guide.md +18 -0
  270. package/kb/extra/upgrade-guide/v0.2.2-rc.1/cua-hover-ax-only/guide.zh.md +18 -0
  271. package/kb/extra/upgrade-guide/v0.2.2-rc.1/cua-native-platform/guide.md +23 -0
  272. package/kb/extra/upgrade-guide/v0.2.2-rc.1/cua-native-platform/guide.zh.md +23 -0
  273. package/kb/extra/upgrade-guide/v0.2.2-rc.1/dsh-doc-skill/guide.md +35 -0
  274. package/kb/extra/upgrade-guide/v0.2.2-rc.1/dsh-doc-skill/guide.zh.md +35 -0
  275. package/kb/extra/upgrade-guide/v0.2.2-rc.1/forge-change-request-overview/guide.md +26 -0
  276. package/kb/extra/upgrade-guide/v0.2.2-rc.1/forge-change-request-overview/guide.zh.md +26 -0
  277. package/kb/extra/upgrade-guide/v0.2.2-rc.1/forge-pinned-diff/guide.md +26 -0
  278. package/kb/extra/upgrade-guide/v0.2.2-rc.1/forge-pinned-diff/guide.zh.md +26 -0
  279. package/kb/extra/upgrade-guide/v0.2.2-rc.1/forge-review-reads/guide.md +19 -0
  280. package/kb/extra/upgrade-guide/v0.2.2-rc.1/forge-review-reads/guide.zh.md +19 -0
  281. package/kb/extra/upgrade-guide/v0.2.2-rc.1/package-export-cleanup/guide.md +26 -0
  282. package/kb/extra/upgrade-guide/v0.2.2-rc.1/package-export-cleanup/guide.zh.md +26 -0
  283. package/kb/extra/upgrade-guide/v0.2.2-rc.1/plugin-update-method/guide.md +22 -0
  284. package/kb/extra/upgrade-guide/v0.2.2-rc.1/plugin-update-method/guide.zh.md +22 -0
  285. package/kb/extra/upgrade-guide/v0.2.2-rc.1/ptc-bootstrap-protocol/guide.md +25 -0
  286. package/kb/extra/upgrade-guide/v0.2.2-rc.1/ptc-bootstrap-protocol/guide.zh.md +25 -0
  287. package/kb/extra/upgrade-guide/v0.2.2-rc.1/ptc-inspect-output/guide.md +48 -0
  288. package/kb/extra/upgrade-guide/v0.2.2-rc.1/ptc-inspect-output/guide.zh.md +48 -0
  289. package/kb/extra/upgrade-guide/v0.2.2-rc.1/ptc-scoped-repl-default/guide.md +45 -0
  290. package/kb/extra/upgrade-guide/v0.2.2-rc.1/ptc-scoped-repl-default/guide.zh.md +45 -0
  291. package/kb/extra/upgrade-guide/v0.2.2-rc.1/runtime-context-reminders/guide.md +19 -0
  292. package/kb/extra/upgrade-guide/v0.2.2-rc.1/runtime-context-reminders/guide.zh.md +19 -0
  293. package/kb/extra/upgrade-guide/v0.2.2-rc.1/session-append-overloads/guide.md +17 -0
  294. package/kb/extra/upgrade-guide/v0.2.2-rc.1/session-append-overloads/guide.zh.md +17 -0
  295. package/kb/extra/upgrade-guide/v0.2.2-rc.1/subagent-interrupt-default/guide.md +27 -0
  296. package/kb/extra/upgrade-guide/v0.2.2-rc.1/subagent-interrupt-default/guide.zh.md +27 -0
  297. package/kb/extra/upgrade-guide/v0.2.2-rc.1/terminal-backend-cleanup-error/guide.md +20 -0
  298. package/kb/extra/upgrade-guide/v0.2.2-rc.1/terminal-backend-cleanup-error/guide.zh.md +20 -0
  299. package/kb/extra/upgrade-guide/v0.2.2-rc.1/terminal-bundle-sidebar-backend/guide.md +19 -0
  300. package/kb/extra/upgrade-guide/v0.2.2-rc.1/terminal-bundle-sidebar-backend/guide.zh.md +19 -0
  301. package/kb/extra/upgrade-guide/v0.2.2-rc.1/web-fetch-transport-error-codes/guide.md +18 -0
  302. package/kb/extra/upgrade-guide/v0.2.2-rc.1/web-fetch-transport-error-codes/guide.zh.md +18 -0
  303. package/kb/extra/upgrade-guide/v0.2.2-rc.1/web-search-billing/guide.md +41 -0
  304. package/kb/extra/upgrade-guide/v0.2.2-rc.1/web-search-billing/guide.zh.md +41 -0
  305. package/kb/extra/upgrade-guide/v0.2.2-rc.1/window-drag-regions/guide.md +21 -0
  306. package/kb/extra/upgrade-guide/v0.2.2-rc.1/window-drag-regions/guide.zh.md +21 -0
  307. package/kb/extra/upgrade-guide/v0.2.2-rc.2/client-module-metadata/guide.md +29 -0
  308. package/kb/extra/upgrade-guide/v0.2.2-rc.2/client-module-metadata/guide.zh.md +29 -0
  309. package/kb/extra/upgrade-guide/v0.2.2-rc.2/connection-page-peer/guide.md +25 -0
  310. package/kb/extra/upgrade-guide/v0.2.2-rc.2/connection-page-peer/guide.zh.md +25 -0
  311. package/kb/extra/upgrade-guide/v0.2.2-rc.2/cordis-root-and-intercept-metadata/guide.md +31 -0
  312. package/kb/extra/upgrade-guide/v0.2.2-rc.2/cordis-root-and-intercept-metadata/guide.zh.md +31 -0
  313. package/kb/extra/upgrade-guide/v0.2.2-rc.2/cua-agents-without-preset/guide.md +24 -0
  314. package/kb/extra/upgrade-guide/v0.2.2-rc.2/cua-agents-without-preset/guide.zh.md +24 -0
  315. package/kb/extra/upgrade-guide/v0.2.2-rc.2/cua-macos-provider/guide.md +24 -0
  316. package/kb/extra/upgrade-guide/v0.2.2-rc.2/cua-macos-provider/guide.zh.md +24 -0
  317. package/kb/extra/upgrade-guide/v0.2.2-rc.2/cua-partial-observations/guide.md +19 -0
  318. package/kb/extra/upgrade-guide/v0.2.2-rc.2/cua-partial-observations/guide.zh.md +19 -0
  319. package/kb/extra/upgrade-guide/v0.2.2-rc.2/deepseek-files-timeout/guide.md +15 -0
  320. package/kb/extra/upgrade-guide/v0.2.2-rc.2/deepseek-files-timeout/guide.zh.md +15 -0
  321. package/kb/extra/upgrade-guide/v0.2.2-rc.2/experimental-tool-error-codes/guide.md +28 -0
  322. package/kb/extra/upgrade-guide/v0.2.2-rc.2/experimental-tool-error-codes/guide.zh.md +28 -0
  323. package/kb/extra/upgrade-guide/v0.2.2-rc.2/package-export-cleanup/guide.md +36 -0
  324. package/kb/extra/upgrade-guide/v0.2.2-rc.2/package-export-cleanup/guide.zh.md +36 -0
  325. package/kb/extra/upgrade-guide/v0.2.2-rc.2/python-ptc-removal/guide.md +22 -0
  326. package/kb/extra/upgrade-guide/v0.2.2-rc.2/python-ptc-removal/guide.zh.md +22 -0
  327. package/kb/extra/upgrade-guide/v0.2.2-rc.2/session-status-package/guide.md +31 -0
  328. package/kb/extra/upgrade-guide/v0.2.2-rc.2/session-status-package/guide.zh.md +31 -0
  329. package/kb/extra/upgrade-guide/v0.2.2-rc.2/shared-search-filter/guide.md +18 -0
  330. package/kb/extra/upgrade-guide/v0.2.2-rc.2/shared-search-filter/guide.zh.md +18 -0
  331. package/kb/extra/upgrade-guide/v0.2.2-rc.2/shell-fs-tool-error-codes/guide.md +30 -0
  332. package/kb/extra/upgrade-guide/v0.2.2-rc.2/shell-fs-tool-error-codes/guide.zh.md +30 -0
  333. package/kb/extra/web-styling.md +57 -39
  334. package/kb/extra/web-styling.zh.md +57 -39
  335. package/kb/meta/search-index.json +4508 -3806
  336. package/kb/meta/source.json +18 -14
  337. package/kb/site/develop/cordis-tutorial/04-events.md +1 -1
  338. package/kb/site/develop/cordis-tutorial/07-into-the-harness.md +5 -4
  339. package/kb/site/develop/framework/events.md +1 -1
  340. package/kb/site/develop/practice/dynamic-cordis.md +1 -1
  341. package/kb/site/develop/practice/llm-adapter.md +192 -192
  342. package/kb/site/en/develop/cordis-tutorial/04-events.md +1 -1
  343. package/kb/site/en/develop/cordis-tutorial/07-into-the-harness.md +5 -4
  344. package/kb/site/en/develop/framework/events.md +1 -1
  345. package/kb/site/en/develop/practice/dynamic-cordis.md +1 -1
  346. package/kb/site/en/develop/practice/llm-adapter.md +192 -192
  347. package/kb/site/en/guide/desktop-uninstall-cleanup.md +63 -0
  348. package/kb/site/en/guide/network-proxy.md +1 -1
  349. package/kb/site/en/guide/plugin-market.md +153 -151
  350. package/kb/site/en/guide/providers.md +234 -230
  351. package/kb/site/en/guide/python-sdk.md +17 -2
  352. package/kb/site/en/guide/quickstart.md +35 -34
  353. package/kb/site/en/guide/schedule.md +45 -26
  354. package/kb/site/en/reference/agent-lifecycle.md +3 -1
  355. package/kb/site/en/reference/api-gateway.md +4 -4
  356. package/kb/site/en/reference/capability-seams.md +789 -719
  357. package/kb/site/en/reference/config-catalog.md +5432 -4806
  358. package/kb/site/en/reference/cookbook/adding-a-package.md +175 -173
  359. package/kb/site/en/reference/cookbook/adding-a-tool.md +105 -104
  360. package/kb/site/en/reference/cookbook/extension-cookbook.md +178 -135
  361. package/kb/site/en/reference/cordis-api/context.md +373 -369
  362. package/kb/site/en/reference/cordis-api/events.md +9 -9
  363. package/kb/site/en/reference/cordis-api/fiber.md +457 -380
  364. package/kb/site/en/reference/cordis-api/inherited.md +44 -43
  365. package/kb/site/en/reference/cordis-api/service.md +118 -107
  366. package/kb/site/en/reference/experimental-persistence-catalog.md +36 -20
  367. package/kb/site/en/reference/index.md +174 -168
  368. package/kb/site/en/reference/persistence-catalog.md +9453 -9146
  369. package/kb/site/en/reference/subsystems/client-modules.md +19 -11
  370. package/kb/site/en/reference/subsystems/compaction.md +288 -288
  371. package/kb/site/en/reference/subsystems/conversation.md +2 -0
  372. package/kb/site/en/reference/subsystems/core.md +1172 -1117
  373. package/kb/site/en/reference/subsystems/credentials.md +526 -497
  374. package/kb/site/en/reference/subsystems/filesystem.md +708 -534
  375. package/kb/site/en/reference/subsystems/index.md +82 -80
  376. package/kb/site/en/reference/subsystems/llm-streaming.md +1290 -1200
  377. package/kb/site/en/reference/subsystems/lsp.md +230 -206
  378. package/kb/site/en/reference/subsystems/persistence.md +451 -422
  379. package/kb/site/en/reference/subsystems/plan.md +91 -91
  380. package/kb/site/en/reference/subsystems/ptc-runtime.md +295 -254
  381. package/kb/site/en/reference/subsystems/sandbox.md +250 -225
  382. package/kb/site/en/reference/subsystems/schedule.md +194 -430
  383. package/kb/site/en/reference/subsystems/session-projection.md +186 -44
  384. package/kb/site/en/reference/subsystems/session-query.md +525 -515
  385. package/kb/site/en/reference/subsystems/session-reference.md +231 -228
  386. package/kb/site/en/reference/subsystems/session.md +1478 -1343
  387. package/kb/site/en/reference/subsystems/sidebar-right.md +165 -164
  388. package/kb/site/en/reference/subsystems/skills.md +356 -356
  389. package/kb/site/en/reference/subsystems/slots.md +235 -204
  390. package/kb/site/en/reference/subsystems/storage.md +26 -9
  391. package/kb/site/en/reference/subsystems/subagent.md +119 -102
  392. package/kb/site/en/reference/subsystems/system-prompt.md +13 -11
  393. package/kb/site/en/reference/subsystems/terminal.md +188 -188
  394. package/kb/site/en/reference/subsystems/token-meter.md +45 -0
  395. package/kb/site/en/reference/subsystems/tools.md +902 -751
  396. package/kb/site/en/reference/subsystems/typert.md +21 -11
  397. package/kb/site/en/reference/subsystems/user-questions.md +330 -311
  398. package/kb/site/en/reference/subsystems/web-client.md +161 -104
  399. package/kb/site/en/reference/subsystems/web-server.md +434 -306
  400. package/kb/site/en/reference/subsystems/web.md +268 -210
  401. package/kb/site/en/reference/subsystems/workflow.md +287 -282
  402. package/kb/site/en/reference/subsystems/workspace.md +743 -651
  403. package/kb/site/en/reference/tool-catalog.md +2867 -2829
  404. package/kb/site/en/reference/tool-execution-pipeline.md +5 -4
  405. package/kb/site/guide/desktop-uninstall-cleanup.md +63 -0
  406. package/kb/site/guide/network-proxy.md +1 -1
  407. package/kb/site/guide/plugin-market.md +153 -151
  408. package/kb/site/guide/providers.md +234 -230
  409. package/kb/site/guide/python-sdk.md +17 -2
  410. package/kb/site/guide/quickstart.md +35 -34
  411. package/kb/site/guide/schedule.md +45 -26
  412. package/kb/site/reference/agent-lifecycle.md +3 -1
  413. package/kb/site/reference/api-gateway.md +4 -4
  414. package/kb/site/reference/capability-seams.md +789 -719
  415. package/kb/site/reference/config-catalog.md +5432 -4806
  416. package/kb/site/reference/cookbook/adding-a-package.md +175 -173
  417. package/kb/site/reference/cookbook/adding-a-tool.md +107 -106
  418. package/kb/site/reference/cookbook/extension-cookbook.md +182 -139
  419. package/kb/site/reference/cordis-api/context.md +373 -369
  420. package/kb/site/reference/cordis-api/events.md +9 -9
  421. package/kb/site/reference/cordis-api/fiber.md +459 -380
  422. package/kb/site/reference/cordis-api/inherited.md +44 -43
  423. package/kb/site/reference/cordis-api/service.md +118 -107
  424. package/kb/site/reference/experimental-persistence-catalog.md +36 -20
  425. package/kb/site/reference/index.md +178 -172
  426. package/kb/site/reference/persistence-catalog.md +9453 -9146
  427. package/kb/site/reference/subsystems/client-modules.md +19 -11
  428. package/kb/site/reference/subsystems/compaction.md +288 -288
  429. package/kb/site/reference/subsystems/conversation.md +4 -0
  430. package/kb/site/reference/subsystems/core.md +1184 -1129
  431. package/kb/site/reference/subsystems/credentials.md +526 -497
  432. package/kb/site/reference/subsystems/filesystem.md +708 -534
  433. package/kb/site/reference/subsystems/index.md +82 -80
  434. package/kb/site/reference/subsystems/llm-streaming.md +1296 -1206
  435. package/kb/site/reference/subsystems/lsp.md +230 -206
  436. package/kb/site/reference/subsystems/persistence.md +451 -422
  437. package/kb/site/reference/subsystems/plan.md +91 -91
  438. package/kb/site/reference/subsystems/ptc-runtime.md +295 -254
  439. package/kb/site/reference/subsystems/sandbox.md +250 -225
  440. package/kb/site/reference/subsystems/schedule.md +197 -433
  441. package/kb/site/reference/subsystems/session-projection.md +186 -44
  442. package/kb/site/reference/subsystems/session-query.md +525 -515
  443. package/kb/site/reference/subsystems/session-reference.md +231 -228
  444. package/kb/site/reference/subsystems/session.md +1482 -1347
  445. package/kb/site/reference/subsystems/sidebar-right.md +165 -164
  446. package/kb/site/reference/subsystems/skills.md +356 -356
  447. package/kb/site/reference/subsystems/slots.md +239 -208
  448. package/kb/site/reference/subsystems/storage.md +26 -9
  449. package/kb/site/reference/subsystems/subagent.md +119 -102
  450. package/kb/site/reference/subsystems/system-prompt.md +13 -11
  451. package/kb/site/reference/subsystems/terminal.md +188 -188
  452. package/kb/site/reference/subsystems/token-meter.md +45 -0
  453. package/kb/site/reference/subsystems/tools.md +902 -751
  454. package/kb/site/reference/subsystems/typert.md +21 -11
  455. package/kb/site/reference/subsystems/user-questions.md +330 -311
  456. package/kb/site/reference/subsystems/web-client.md +161 -104
  457. package/kb/site/reference/subsystems/web-server.md +434 -306
  458. package/kb/site/reference/subsystems/web.md +268 -210
  459. package/kb/site/reference/subsystems/workflow.md +287 -282
  460. package/kb/site/reference/subsystems/workspace.md +743 -651
  461. package/kb/site/reference/tool-catalog.md +2872 -2835
  462. package/kb/site/reference/tool-execution-pipeline.md +4 -3
  463. package/lib/index.js +359 -244
  464. package/lib/kb-version.js +118 -0
  465. package/package.json +68 -66
  466. package/scripts/refresh-kb.mjs +153 -0
  467. package/scripts/selfcheck.mjs +18 -0
  468. package/scripts/smoke.mjs +77 -0
  469. package/skills/dsh-plugin-dev-kb.md +71 -69
  470. package/skills/dsh-plugin-starter.md +65 -0
  471. package/skills/dsh-upgrade-assistant.md +62 -0
  472. package/kb/extra/agent-lifecycle.md +0 -91
  473. package/kb/extra/agent-lifecycle.zh.md +0 -93
  474. package/kb/extra/api-gateway.md +0 -172
  475. package/kb/extra/api-gateway.zh.md +0 -178
  476. package/kb/extra/architecture.md +0 -165
  477. package/kb/extra/architecture.zh.md +0 -169
  478. package/kb/extra/capability-seams.md +0 -714
  479. package/kb/extra/capability-seams.zh.md +0 -716
  480. package/kb/extra/config-catalog.md +0 -4801
  481. package/kb/extra/config-catalog.zh.md +0 -4803
  482. package/kb/extra/cookbook/adding-a-package.md +0 -170
  483. package/kb/extra/cookbook/adding-a-package.zh.md +0 -170
  484. package/kb/extra/cookbook/adding-a-settings-card.md +0 -72
  485. package/kb/extra/cookbook/adding-a-settings-card.zh.md +0 -72
  486. package/kb/extra/cookbook/adding-a-tool.md +0 -101
  487. package/kb/extra/cookbook/adding-a-tool.zh.md +0 -103
  488. package/kb/extra/cookbook/adding-an-llm-adapter.md +0 -43
  489. package/kb/extra/cookbook/adding-an-llm-adapter.zh.md +0 -43
  490. package/kb/extra/cookbook/extension-cookbook.md +0 -132
  491. package/kb/extra/cookbook/extension-cookbook.zh.md +0 -136
  492. package/kb/extra/cordis-api/context.md +0 -364
  493. package/kb/extra/cordis-api/context.zh.md +0 -366
  494. package/kb/extra/cordis-api/events.md +0 -207
  495. package/kb/extra/cordis-api/events.zh.md +0 -209
  496. package/kb/extra/cordis-api/fiber.md +0 -375
  497. package/kb/extra/cordis-api/fiber.zh.md +0 -377
  498. package/kb/extra/cordis-api/inherited.md +0 -38
  499. package/kb/extra/cordis-api/registry.md +0 -152
  500. package/kb/extra/cordis-api/registry.zh.md +0 -154
  501. package/kb/extra/cordis-api/service.md +0 -102
  502. package/kb/extra/cordis-api/service.zh.md +0 -104
  503. package/kb/extra/cordis-tutorial/01-first-plugin.md +0 -95
  504. package/kb/extra/cordis-tutorial/01-first-plugin.zh.md +0 -95
  505. package/kb/extra/cordis-tutorial/02-lifecycle-and-effects.md +0 -98
  506. package/kb/extra/cordis-tutorial/02-lifecycle-and-effects.zh.md +0 -98
  507. package/kb/extra/cordis-tutorial/03-services.md +0 -98
  508. package/kb/extra/cordis-tutorial/03-services.zh.md +0 -98
  509. package/kb/extra/cordis-tutorial/04-events.md +0 -144
  510. package/kb/extra/cordis-tutorial/04-events.zh.md +0 -144
  511. package/kb/extra/cordis-tutorial/05-config.md +0 -111
  512. package/kb/extra/cordis-tutorial/05-config.zh.md +0 -111
  513. package/kb/extra/cordis-tutorial/06-composition-and-hmr.md +0 -113
  514. package/kb/extra/cordis-tutorial/06-composition-and-hmr.zh.md +0 -113
  515. package/kb/extra/cordis-tutorial/07-into-the-harness.md +0 -108
  516. package/kb/extra/cordis-tutorial/07-into-the-harness.zh.md +0 -108
  517. package/kb/extra/cordis-tutorial/index.md +0 -60
  518. package/kb/extra/cordis-tutorial/index.zh.md +0 -62
  519. package/kb/extra/experimental-persistence-catalog.md +0 -17
  520. package/kb/extra/experimental-persistence-catalog.zh.md +0 -17
  521. package/kb/extra/persistence-catalog.md +0 -9140
  522. package/kb/extra/persistence-catalog.zh.md +0 -9142
  523. package/kb/extra/subsystems/README.md +0 -76
  524. package/kb/extra/subsystems/README.zh.md +0 -76
  525. package/kb/extra/subsystems/approval.md +0 -170
  526. package/kb/extra/subsystems/approval.zh.md +0 -170
  527. package/kb/extra/subsystems/client-modules.md +0 -198
  528. package/kb/extra/subsystems/client-modules.zh.md +0 -198
  529. package/kb/extra/subsystems/client-resources.md +0 -92
  530. package/kb/extra/subsystems/client-resources.zh.md +0 -92
  531. package/kb/extra/subsystems/commands.md +0 -223
  532. package/kb/extra/subsystems/commands.zh.md +0 -223
  533. package/kb/extra/subsystems/compaction.md +0 -284
  534. package/kb/extra/subsystems/compaction.zh.md +0 -284
  535. package/kb/extra/subsystems/conversation.md +0 -301
  536. package/kb/extra/subsystems/conversation.zh.md +0 -303
  537. package/kb/extra/subsystems/core.md +0 -1113
  538. package/kb/extra/subsystems/core.zh.md +0 -1125
  539. package/kb/extra/subsystems/credentials.md +0 -493
  540. package/kb/extra/subsystems/credentials.zh.md +0 -493
  541. package/kb/extra/subsystems/filesystem.md +0 -530
  542. package/kb/extra/subsystems/filesystem.zh.md +0 -530
  543. package/kb/extra/subsystems/goal.md +0 -313
  544. package/kb/extra/subsystems/goal.zh.md +0 -313
  545. package/kb/extra/subsystems/jobs.md +0 -554
  546. package/kb/extra/subsystems/jobs.zh.md +0 -554
  547. package/kb/extra/subsystems/llm-streaming.md +0 -1196
  548. package/kb/extra/subsystems/llm-streaming.zh.md +0 -1202
  549. package/kb/extra/subsystems/lsp.md +0 -202
  550. package/kb/extra/subsystems/lsp.zh.md +0 -202
  551. package/kb/extra/subsystems/office-to-pdf.md +0 -87
  552. package/kb/extra/subsystems/office-to-pdf.zh.md +0 -87
  553. package/kb/extra/subsystems/permission-presets.md +0 -167
  554. package/kb/extra/subsystems/permission-presets.zh.md +0 -167
  555. package/kb/extra/subsystems/persistence.md +0 -418
  556. package/kb/extra/subsystems/persistence.zh.md +0 -418
  557. package/kb/extra/subsystems/plan.md +0 -87
  558. package/kb/extra/subsystems/plan.zh.md +0 -87
  559. package/kb/extra/subsystems/ptc-runtime.md +0 -250
  560. package/kb/extra/subsystems/ptc-runtime.zh.md +0 -250
  561. package/kb/extra/subsystems/sandbox.md +0 -221
  562. package/kb/extra/subsystems/sandbox.zh.md +0 -221
  563. package/kb/extra/subsystems/schedule.md +0 -550
  564. package/kb/extra/subsystems/schedule.zh.md +0 -550
  565. package/kb/extra/subsystems/scope.md +0 -59
  566. package/kb/extra/subsystems/scope.zh.md +0 -61
  567. package/kb/extra/subsystems/session-projection.md +0 -356
  568. package/kb/extra/subsystems/session-projection.zh.md +0 -356
  569. package/kb/extra/subsystems/session-query.md +0 -511
  570. package/kb/extra/subsystems/session-query.zh.md +0 -511
  571. package/kb/extra/subsystems/session-reference.md +0 -224
  572. package/kb/extra/subsystems/session-reference.zh.md +0 -224
  573. package/kb/extra/subsystems/session-telemetry.md +0 -212
  574. package/kb/extra/subsystems/session-telemetry.zh.md +0 -212
  575. package/kb/extra/subsystems/session-title.md +0 -213
  576. package/kb/extra/subsystems/session-title.zh.md +0 -213
  577. package/kb/extra/subsystems/session.md +0 -1339
  578. package/kb/extra/subsystems/session.zh.md +0 -1343
  579. package/kb/extra/subsystems/settings.md +0 -155
  580. package/kb/extra/subsystems/settings.zh.md +0 -155
  581. package/kb/extra/subsystems/shell.md +0 -314
  582. package/kb/extra/subsystems/shell.zh.md +0 -314
  583. package/kb/extra/subsystems/sidebar-right.md +0 -160
  584. package/kb/extra/subsystems/sidebar-right.zh.md +0 -160
  585. package/kb/extra/subsystems/skills.md +0 -352
  586. package/kb/extra/subsystems/skills.zh.md +0 -352
  587. package/kb/extra/subsystems/slots.md +0 -200
  588. package/kb/extra/subsystems/slots.zh.md +0 -204
  589. package/kb/extra/subsystems/spill.md +0 -124
  590. package/kb/extra/subsystems/spill.zh.md +0 -124
  591. package/kb/extra/subsystems/storage.md +0 -259
  592. package/kb/extra/subsystems/storage.zh.md +0 -259
  593. package/kb/extra/subsystems/subagent.md +0 -686
  594. package/kb/extra/subsystems/subagent.zh.md +0 -688
  595. package/kb/extra/subsystems/subprocess.md +0 -321
  596. package/kb/extra/subsystems/subprocess.zh.md +0 -321
  597. package/kb/extra/subsystems/system-prompt.md +0 -254
  598. package/kb/extra/subsystems/system-prompt.zh.md +0 -254
  599. package/kb/extra/subsystems/terminal.md +0 -184
  600. package/kb/extra/subsystems/terminal.zh.md +0 -184
  601. package/kb/extra/subsystems/token-meter.md +0 -106
  602. package/kb/extra/subsystems/token-meter.zh.md +0 -106
  603. package/kb/extra/subsystems/tools.md +0 -747
  604. package/kb/extra/subsystems/tools.zh.md +0 -747
  605. package/kb/extra/subsystems/typert.md +0 -690
  606. package/kb/extra/subsystems/typert.zh.md +0 -690
  607. package/kb/extra/subsystems/user-questions.md +0 -307
  608. package/kb/extra/subsystems/user-questions.zh.md +0 -307
  609. package/kb/extra/subsystems/web-client.md +0 -100
  610. package/kb/extra/subsystems/web-client.zh.md +0 -100
  611. package/kb/extra/subsystems/web-server.md +0 -302
  612. package/kb/extra/subsystems/web-server.zh.md +0 -302
  613. package/kb/extra/subsystems/web.md +0 -206
  614. package/kb/extra/subsystems/web.zh.md +0 -206
  615. package/kb/extra/subsystems/workflow.md +0 -278
  616. package/kb/extra/subsystems/workflow.zh.md +0 -278
  617. package/kb/extra/subsystems/workspace.md +0 -647
  618. package/kb/extra/subsystems/workspace.zh.md +0 -647
  619. package/kb/extra/tool-catalog.md +0 -2824
  620. package/kb/extra/tool-catalog.zh.md +0 -2832
  621. package/kb/extra/tool-execution-pipeline.md +0 -65
  622. package/kb/extra/tool-execution-pipeline.zh.md +0 -67
@@ -1,447 +1,631 @@
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.official` identifies project-maintained shipped optional bundles and on-demand catalog entries independently of installation. `availability` identifies a readable installation-provided or profile package, or `missing`; on-demand catalog entries exclude undeclared transitive copies. `installed` records the profile dependency declaration. An on-demand `installTarget` carries the host-derived exact spec and version. `BundleInfo` also 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.saveExact` passes `--save-exact` to the shared package installer. `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
- ## Market records
22
-
23
- [Plugin Market](../../packages/boot/plugin-market/README.md) reads index format 1, validated by [`dsh-plugin-market-index`](../../packages/util/plugin-market-index/README.md).
24
-
25
- `MarketIndexSummary` carries one configured index URL with the `title` and `description` of its last successful read and, when the last read failed, its `error`.
26
-
27
- `MarketQuery` selects one page of an index: fuzzy `text`, a `category`, `labels` that must all be present, a `MarketSort`, `offset`, `limit` up to 100, `refresh` to fetch again instead of using a cached document, and `fetchedAt` to continue the pages of one document. `MarketSearchResult` carries the index URL, `title`, optional `description`, market `metadata`, the document's `fetchedAt`, the page's `entries`, the `total` number of matches, and the `nextOffset`. Each `MarketListingEntry` adds `defaultVersion`, the version installed by default, and `installation`, the profile's status for the package name; each of its `versions` adds `install`, the exact spec and optional first registry for `installBundle`, and `compatibility`, the evaluation of its `engines.dsh` including a version exemption.
28
-
29
- ## Profile reconciliation
30
-
31
- <a id="profile-reconciliation"></a>
32
-
33
- ```ts type-equiv
34
- /** Outcome of {@link Hmr.reconcileProfile}. */
35
- interface ProfileReconciliation {
36
- /** Diagnostics for Loader entries left inactive. */
37
- warnings: string[]
38
- /** Loaded modules whose files changed on disk and whose previous code keeps running until a restart. */
39
- pending: PendingModule[]
40
- /**
41
- * Why every change waits for a restart: `module-comparison` when module caches cannot be inspected or their files
42
- * compared, even when no URLs are known; `package-moved` when the runtime resolution cannot publish a moved package.
43
- */
44
- restartReason?: 'module-comparison' | 'package-moved'
45
- }
46
- ```
47
-
48
- ```ts type-equiv
49
- /** A changed module that loads only after a restart. */
50
- interface PendingModule {
51
- url: string
52
- /**
53
- * `host-module`: the process entry point's static graph imports it. `unmanaged-plugin`: it is imported by a plugin
54
- * that runs outside a traversable Loader entry. `module-comparison`: loaded modules could not be compared with disk.
55
- */
56
- reason: 'host-module' | 'unmanaged-plugin' | 'module-comparison'
57
- }
58
- ```
59
-
60
- <!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
61
-
62
- <a id="cordis-surface"></a>
63
-
64
- ## Cordis API
65
-
66
- 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).
67
-
68
- <a id="ctxconfigeditor--configeditor"></a>
69
-
70
- ### `ctx.configEditor` — `ConfigEditor`
71
-
72
- Persist complete raw configs and apply them through the normal Loader path.
73
-
74
- ```ts cordis-catalog
75
- /** Addressable profile rows; nested Includes have independent configuration ownership.
76
- * @returns Active entries with unique profile patch ids.
77
- */
78
- entries(): Entry[]
79
-
80
- /** Read inherited and explicit profile values for the active entries.
81
- * @returns Detached layer values alongside their Loader entries.
82
- */
83
- configuration(): Array<{ entry: Entry; inherited: Record<string, unknown>; override: Record<string, unknown> }>
84
-
85
- /** Validate, persist, and reconcile a plugin's next config; ordinary fields keep normal lifecycle rules.
86
- * @param entry Current Loader entry, also used to detect replacement during the write.
87
- * @param change Derive a raw config from the current entry and its inherited layer.
88
- * @returns Fulfillment after Loader reconciliation completes.
89
- */
90
- async edit( entry: Entry, change: (current: Record<string, unknown>, inherited: Record<string, unknown>) => Record<string, unknown>, ): Promise<void>
91
- ```
92
-
93
- Source: [`packages/boot/config-editor/src/index.ts`](../../packages/boot/config-editor/src/index.ts)
94
-
95
- <a id="ctxhmr--hmr"></a>
96
-
97
- ### `ctx.hmr` — `Hmr`
98
-
99
- Hot reload service with Cordis-compatible module configuration and events.
100
-
101
- ```ts cordis-catalog
102
- /** Serialize a caller-owned mutation with all automatic reload paths.
103
- * @param operation Work that must not overlap module or configuration replacement.
104
- * @returns The operation result after its asynchronous work completes.
105
- */
106
- runExclusive<T>(operation: () => Promise<T>): Promise<T>
107
-
108
- /** Watch a configuration path through the same queue as module replacement.
109
- * @param filename Absolute path, which may not exist yet.
110
- * @param refresh Rebuilds configuration from its current files and awaits Loader completion.
111
- * @returns Disposer closing this registration and waiting for its pending refresh.
112
- */
113
- async watchConfig(filename: string, refresh: () => Promise<void>): Promise<() => Promise<void>>
114
-
115
- /** Read direct module dependency URLs from the active Node loader.
116
- * @param url Module URL.
117
- * @returns Linked module URLs, or an empty list for an uncached module.
118
- */
119
- async getLinked(url: string): Promise<string[]>
120
-
121
- /**
122
- * Recompose the profile from its manifest and patch files, replacing running plugins whose loaded files below the
123
- * profile directory or its linked package targets changed on disk, and publishing its runtime resolution. Changed
124
- * modules are evicted and the Loader entries running them stop; app-boot's {@link recomposeProfile} then publishes the
125
- * resolution, applies the generation, starts the stopped entries with the current files and configuration,
126
- * imports entries whose import failed again, and judges activation. Afterwards the modules below the mappings the
127
- * recomposition dropped are evicted, so a removed or deselected package is imported afresh when it returns. Callers run
128
- * inside {@link runExclusive}.
129
- * @param requiredIds Entry ids whose inactive state is reported as a failure even when it predates this call.
130
- * @returns Inactive-entry diagnostics, the changed modules that load after a restart, and a profile-wide restart reason.
131
- * @throws The patch read, publication, preparation, apply, or activation failure of the recomposition, including a
132
- * replacement plugin that fails to load or start, whose previous code no longer runs.
133
- */
134
- async reconcileProfile(requiredIds: readonly string[] = []): Promise<ProfileReconciliation>
135
- ```
136
-
137
- Source: [`packages/boot/hmr/src/index.ts`](../../packages/boot/hmr/src/index.ts)
138
-
139
- <a id="ctxpluginmanager--pluginmanager"></a>
140
-
141
- ### `ctx.pluginManager` — `PluginManager`
142
-
143
- Manage profile files and apply their declared reload lifecycle.
144
-
145
- ```ts cordis-catalog
146
- /** Read exact plugin-version exemptions saved in this profile.
147
- * @returns Accepted package-name@version keys with the runtime versions they may run on, and any
148
- * record or file problem the reader rejected, which the caller reports instead of failing.
149
- */
150
- @Remote listVersionExemptions(): { exemptions: Record<string, string[]>; warnings: string[] }
151
-
152
- /** Grant or revoke one exact plugin/runtime exemption and reevaluate live plugins.
153
- * @param packageVersion Exact manifest package name followed by @ and its version; never an installation spec or alias.
154
- * @param runtimeVersion Exact current DSH version for grants; revocation may name a previous runtime.
155
- * @param enabled Whether to grant rather than revoke the exemption.
156
- * @param acceptRisk Required true for grants after the user accepts possible crashes and data loss.
157
- * @returns Saved and runtime outcomes. Startup-only profiles require restart.
158
- */
159
- @Remote setVersionExemption(packageVersion: string, runtimeVersion: string, enabled: boolean, acceptRisk?: boolean): Promise<ChangeResult>
160
-
161
- /** Read current plugins, including why a row cannot be changed through the profile patch.
162
- * @returns Current runtime entries with persistent patch targets.
163
- */
164
- @Remote async listPlugins(): Promise<PluginInfo[]>
165
-
166
- /** Read installed, installation-provided, and offline Official catalog bundles, plus selected non-bundle names.
167
- * A dependency without a bundle patch is listed, as a `not-bundle` problem, only while it is selected.
168
- * @returns Package versions, manifest descriptions, the installable spec of profile dependencies, rows, optional
169
- * display metadata, activation selections, whether the installation offers the bundle, and removal availability.
170
- */
171
- @Remote listBundles(): Promise<BundleInfo[]>
172
-
173
- /** Read the registries this manager asks: the configured first one, its fallbacks in order, and what pnpm's own configuration names.
174
- * @returns The registries in pnpm's comparison form; null is the one pnpm's own configuration names, `resolved` as pnpm reads it now.
175
- */
176
- @Remote async registries(): Promise<PluginRegistries>
177
-
178
- /** Read what a spec names before installing it.
179
- * @param spec One package spec: a registry name, an absolute path, a git address, or a tarball.
180
- * @param options The registry asked first.
181
- * @param signal Ends a registry lookup early.
182
- * @returns The package the spec names, or why it is refused.
183
- */
184
- @Remote async inspect(spec: string, options?: InspectOptions, signal?: AbortSignal): Promise<PluginSpecInspection>
185
-
186
- /** Persist a plugin entry's desired enablement and apply it on live profiles.
187
- * @param id Loader entry identity returned by listPlugins.
188
- * @param enabled Whether the plugin should run.
189
- * @returns Saved and runtime outcomes, including higher-priority overrides.
190
- */
191
- @Remote setPluginEnabled(id: PluginEntryId, enabled: boolean): Promise<ChangeResult>
192
-
193
- /** Select or remove a bundle layer while retaining installed dependencies.
194
- * @param name Bundle package name.
195
- * @param enabled Whether the bundle contributes its patch layer.
196
- * @returns Persisted and runtime outcomes.
197
- */
198
- @Remote setBundleEnabled(name: string, enabled: boolean): Promise<ChangeResult>
199
-
200
- /**
201
- * Install a package using the same pnpm implementation as dsh plugin. GitHub
202
- * repositories get a connection check bounded by githubConnectionTimeoutMs before pnpm starts;
203
- * only network failures or timeouts stop installation, while pnpm owns authentication and transport fallback. A run
204
- * that fails, is cancelled, or adds a package without a bundle patch restores
205
- * `package.json` and `pnpm-lock.yaml` as they were; downloaded files can stay.
206
- * @param spec One package spec, including local paths relative to the invocation directory.
207
- * @param options Whether to activate the installed bundle (defaults to true), the request id a cancellation names,
208
- * the pending build scripts to allow, whether to save an exact dependency, and the registry asked first.
209
- * @returns Package-manager diagnostics, the registries asked, and the observed activation outcome.
210
- */
211
- @Remote installBundle(spec: string, options?: InstallBundleOptions): Promise<ChangeResult>
212
-
213
- /** Recover the result of an active installation without cancelling it.
214
- * @param requestId The id supplied when installation started.
215
- * @returns The installation's outcome after it settles, or null if no active request has that id.
216
- * Completed results are not retained; null establishes neither success nor cancellation.
217
- */
218
- @Remote async waitForInstall(requestId: PluginInstallRequestId): Promise<ChangeResult | null>
219
-
220
- /** Stop an installation this manager owns and wait until its files are back.
221
- * @param requestId The id the installation was started with.
222
- * @returns `cancelled` once the Git check or pnpm exited and the files are restored, `too-late` once the bundle is being
223
- * applied, `not-running` for any other id.
224
- */
225
- @Remote async cancelInstall(requestId: PluginInstallRequestId): Promise<PluginInstallCancellation>
226
-
227
- /** Unload and remove a profile-owned bundle dependency through dsh plugin's pnpm path; a selected name no
228
- * dependency holds is only deselected.
229
- * @param name Installed dependency or selected bundle name.
230
- * @returns Removal diagnostics and the remaining profile state.
231
- */
232
- @Remote removeBundle(name: string): Promise<ChangeResult>
233
- ```
234
-
235
- Source: [`packages/boot/plugin-manager/src/index.ts`](../../packages/boot/plugin-manager/src/index.ts)
236
-
237
- <a id="ctxpluginmarket--pluginmarket"></a>
238
-
239
- ### `ctx.pluginMarket` — `PluginMarket`
240
-
241
- Fetches, validates, and caches configured market indexes; annotates entries with the profile's installation facts.
242
-
243
- ```ts cordis-catalog
244
- /**
245
- * List the configured index sources without fetching them.
246
- * @returns every source in order, with the title of its last successful read and, when the last read failed, its error.
247
- */
248
- @Remote listIndexes(): MarketIndexSummary[]
249
-
250
- /**
251
- * Replace the configured index sources through Settings, without remounting this service.
252
- * `plugin-market/changed` announces the committed list. A URL already configured is kept as written, so a client can
253
- * add or remove sources beside one that `listIndexes` reports as unusable.
254
- * @param urls - index URLs in display order.
255
- * @throws {RemoteError} `plugin-market/invalid-index-url` for an invalid new URL or a repeated URL;
256
- * `plugin-market/settings-unavailable` without Settings or a profile entry.
257
- */
258
- @Remote async setIndexes(urls: string[]): Promise<void>
259
-
260
- /**
261
- * Return one page of the plugins of a configured index that match a query. Concurrent reads of a URL share one
262
- * fetch; a successful document is reused for `cacheTtlMs` unless `refresh` is set. Matching and ordering read only
263
- * the document; installation status and compatibility are computed for the returned page on every call.
264
- * @param url - a configured index URL.
265
- * @param query - text, filters, order, page, and whether to bypass the cached document.
266
- * @returns the index header, the page's plugins with each plugin's default version and installation status and each
267
- * version's compatibility and install arguments, the number of matches, and the next page's offset.
268
- * @throws {RemoteError} `plugin-market/invalid-query`, `plugin-market/unknown-index`, `plugin-market/invalid-index-url`,
269
- * `plugin-market/fetch-failed`, or `plugin-market/invalid-index`.
270
- */
271
- @Remote async search(url: string, query: MarketQuery): Promise<MarketSearchResult>
272
-
273
- /**
274
- * Read one plugin of a configured index, using the cached document as `search` does.
275
- * @param url - a configured index URL.
276
- * @param name - the plugin's package name.
277
- * @returns the plugin with its default version, installation status, and annotated versions; undefined when the
278
- * index does not list it.
279
- * @throws {RemoteError} `plugin-market/unknown-index`, `plugin-market/invalid-index-url`, `plugin-market/fetch-failed`,
280
- * or `plugin-market/invalid-index`.
281
- */
282
- async entry(url: string, name: string): Promise<MarketListingEntry | undefined>
283
- ```
284
-
285
- Source: [`packages/boot/plugin-market/src/index.ts`](../../packages/boot/plugin-market/src/index.ts)
286
-
287
- <a id="ctxpluginregistryprobe--pluginregistryprobe"></a>
288
-
289
- ### `ctx.pluginRegistryProbe` — `PluginRegistryProbe`
290
-
291
- Compares public registry responses on the Host; the Client owns the initial selection.
292
-
293
- ```ts cordis-catalog
294
- /**
295
- * Race npm and npmmirror HTTPS ping responses through the Host's fetch proxy.
296
- * Concurrent readers share a probe; a winner cancels and awaits the other request.
297
- * @returns the first registry with a successful response, or null when disabled or neither responds successfully; results are cached.
298
- * @throws rejects when the service has been unloaded.
299
- */
300
- @Remote async fastest(): Promise<string | null>
301
- ```
302
-
303
- Source: [`packages/client/ui-plugin-manager/src/index.ts`](../../packages/client/ui-plugin-manager/src/index.ts)
304
-
305
- <a id="ctxprofilecontext--profilecontext"></a>
306
-
307
- ### `ctx.profileContext` — `ProfileContext`
308
-
309
- Current profile facts; scheduling and mutation belong to their callers.
310
-
311
- Source: [`packages/boot/app-boot/src/profile-context.ts`](../../packages/boot/app-boot/src/profile-context.ts)
312
-
313
- <a id="app-boot-events"></a>
314
-
315
- ### `app-boot/*` events
316
-
317
- <a id="app-bootconfig-reload--emit"></a>
318
-
319
- #### `app-boot/config-reload` — emit
320
-
321
- 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.
322
-
323
- ```ts cordis-catalog
324
- /**
325
- * Profile patches were reconciled into the running Loader tree: every entry update settled and no new
326
- * inactive entry was introduced. Carries no diff; listeners re-read Loader entries.
327
- * @mode emit
328
- */
329
- 'app-boot/config-reload'(): void
330
- ```
331
-
332
- Source: [`packages/boot/app-boot/src/index.ts`](../../packages/boot/app-boot/src/index.ts)
333
-
334
- <a id="hmr-events"></a>
335
-
336
- ### `hmr/*` events
337
-
338
- <a id="hmrchange--emit"></a>
339
-
340
- #### `hmr/change` — emit
341
-
342
- A watched file has no module or configuration handler.
343
-
344
- ```ts cordis-catalog
345
- /** A watched file has no module or configuration handler.
346
- * @mode emit
347
- * @param url Canonical file URL.
348
- */
349
- 'hmr/change'(url: string): void
350
- ```
351
-
352
- Source: [`packages/boot/hmr/src/index.ts`](../../packages/boot/hmr/src/index.ts)
353
-
354
- <a id="hmrreload--emit"></a>
355
-
356
- #### `hmr/reload` — emit
357
-
358
- Module replacements have finished loading.
359
-
360
- ```ts cordis-catalog
361
- /** Module replacements have finished loading.
362
- * @mode emit
363
- * @param reloads Replaced plugins and their module locations.
364
- */
365
- 'hmr/reload'(reloads: Map<Plugin, Reload>): void
366
- ```
367
-
368
- Source: [`packages/boot/hmr/src/index.ts`](../../packages/boot/hmr/src/index.ts)
369
-
370
- <a id="plugin-manager-events"></a>
371
-
372
- ### `plugin-manager/*` events
373
-
374
- <a id="plugin-managerchanged--emit"></a>
375
-
376
- #### `plugin-manager/changed` — emit
377
-
378
- 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.
379
-
380
- ```ts cordis-catalog
381
- /**
382
- * The profile's plugins, bundles, or composition changed: a manager
383
- * operation completed. A patch generation applied outside the manager,
384
- * by HMR's watcher after a CLI or hand edit, announces nothing here.
385
- * @mode emit
386
- * @param change - what changed.
387
- */
388
- 'plugin-manager/changed'(change: PluginChange): void
389
- ```
390
-
391
- Source: [`packages/boot/plugin-manager/src/types.ts`](../../packages/boot/plugin-manager/src/types.ts)
392
-
393
- <a id="plugin-managerinstall-log--emit"></a>
394
-
395
- #### `plugin-manager/install-log` — emit
396
-
397
- One chunk of a pnpm run's output, streamed as the run produces it.
398
-
399
- ```ts cordis-catalog
400
- /**
401
- * One chunk of a pnpm run's output, streamed as the run produces it.
402
- * @mode emit
403
- * @param chunk - the chunk and the run it belongs to.
404
- */
405
- 'plugin-manager/install-log'(chunk: PluginInstallLogChunk): void
406
- ```
407
-
408
- Source: [`packages/boot/plugin-manager/src/types.ts`](../../packages/boot/plugin-manager/src/types.ts)
409
-
410
- <a id="plugin-managerinstall-state--emit"></a>
411
-
412
- #### `plugin-manager/install-state` — emit
413
-
414
- 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.
415
-
416
- ```ts cordis-catalog
417
- /**
418
- * An installation moved between its Host phases. `installing` is announced once per registry the
419
- * installation asks, with the attempt's registry and position; `cancelling` and `applying` once.
420
- * @mode emit
421
- * @param progress - the installation's request id and phase, with the attempt while installing.
422
- */
423
- 'plugin-manager/install-state'(progress: PluginInstallProgress): void
424
- ```
425
-
426
- Source: [`packages/boot/plugin-manager/src/types.ts`](../../packages/boot/plugin-manager/src/types.ts)
427
-
428
- <a id="plugin-market-events"></a>
429
-
430
- ### `plugin-market/*` events
431
-
432
- <a id="plugin-marketchanged--emit"></a>
433
-
434
- #### `plugin-market/changed` — emit
435
-
436
- The configured index sources changed.
437
-
438
- ```ts cordis-catalog
439
- /**
440
- * The configured index sources changed.
441
- * @mode emit
442
- */
443
- 'plugin-market/changed'(): void
444
- ```
445
-
446
- Source: [`packages/boot/plugin-market/src/types.ts`](../../packages/boot/plugin-market/src/types.ts)
447
- <!-- END GENERATED cordis-surface -->
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.official` identifies project-maintained shipped optional bundles and on-demand catalog entries independently of installation. `availability` identifies a readable installation-provided or profile package, or `missing`; on-demand catalog entries exclude undeclared transitive copies. `installed` records the profile dependency declaration. An on-demand `installTarget` carries the host-derived exact spec and version. `BundleInfo` also carries the package name, optional installed version, selected enablement, removal availability, update method (`update`: `registry` or `git`, absent when the bundle cannot be updated), optional resolution or unsupported-platform 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.saveExact` passes `--save-exact` to the shared package installer. `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. `expected` names the package and manifest version the spec must install; a run that installs anything else is undone with its profile files and modules and fails with `unexpected-package`, one whose package declares no bundle fails with `not-bundle`, and one whose bundle patches cannot load fails as an operation error.
16
+
17
+ `BundleDetail` is a profile bundle's long description: `{ status: 'found' }` with its `origin` (`locale` or `readme`), its `path` inside the package, and its `markdown`, or `{ status: 'none' }`; [`readBundleDetail`](../../packages/boot/plugin-manager/README.md#bundle-detail-documents) documents the order and the image route. `NpmFileSource` names a public npm file CDN, `jsdelivr`, `unpkg`, or `npmmirror`; a read's `npmFileSources` lists the ones to ask first.
18
+
19
+ `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.
20
+
21
+ `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 run's exit status, bounded output, truncation flag and complete diagnostic log path, plus `timedOut` when the manager terminated a run that stopped printing or the GitHub connection check hit its deadline; a terminated run records the coerced status 1 because its process returned none. 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.
22
+
23
+ ## Market records
24
+
25
+ [Plugin Market](../../packages/boot/plugin-market/README.md) reads index format 1, validated by [`dsh-plugin-market-index`](../../packages/util/plugin-market-index/README.md).
26
+
27
+ `MarketIndexSummary` carries one configured index URL with the `title` and `description` of its last successful read and, when the last read failed, its `error`.
28
+
29
+ `MarketQuery` selects one page of an index: fuzzy `text`, a `category`, `labels` that must all be present, a `MarketSort`, `offset`, `limit` up to 100, `refresh` to fetch again instead of using a cached document, and `fetchedAt` to continue the pages of one document. `MarketSearchResult` carries the index URL, `title`, optional `description`, market `metadata`, the document's `fetchedAt`, the page's `entries`, the `total` number of matches, and the `nextOffset`. Each `MarketListingEntry` adds `defaultVersion`, the version installed by default, and `installation`, the profile's status for the package name; each of its `versions` adds `install`, the exact spec and optional first registry for `installBundle`, `compatibility`, the evaluation of its `engines.dsh` including a version exemption, and `update`, whether the version can replace an installed Git copy through `updateBundle`: it is newer and pins a commit of the repository directory that copy came from.
30
+
31
+ `PluginDetail` is a market entry's long description: `{ status: 'found' }` with its `origin` (`locale`, `readme`, or `repository`), its `markdown`, and a `document` id whose images `GET /api/plugin-market/detail-file` serves, or `{ status: 'none' }`. The [plugin market documents the order](../../packages/boot/plugin-market/README.md#plugin-detail-documents) its sources are read in.
32
+
33
+ ## Profile reconciliation
34
+
35
+ <a id="profile-reconciliation"></a>
36
+
37
+ ```ts type-equiv
38
+ /** Outcome of {@link Hmr.reconcileProfile}. */
39
+ interface ProfileReconciliation {
40
+ /** Diagnostics for Loader entries left inactive. */
41
+ warnings: string[]
42
+ /** Loaded modules whose files changed on disk and whose previous code keeps running until a restart. */
43
+ pending: PendingModule[]
44
+ /**
45
+ * Why every change waits for a restart: `module-comparison` when module caches cannot be inspected or their files
46
+ * compared, even when no URLs are known; `package-moved` when the runtime resolution cannot publish a moved package.
47
+ */
48
+ restartReason?: 'module-comparison' | 'package-moved'
49
+ }
50
+ ```
51
+
52
+ ```ts type-equiv
53
+ /** A changed module that loads only after a restart. */
54
+ interface PendingModule {
55
+ url: string
56
+ /**
57
+ * `host-module`: the process entry point's static graph imports it. `unmanaged-plugin`: it is imported by a plugin
58
+ * that runs outside a traversable Loader entry. `module-comparison`: loaded modules could not be compared with disk.
59
+ */
60
+ reason: 'host-module' | 'unmanaged-plugin' | 'module-comparison'
61
+ }
62
+ ```
63
+
64
+ <!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
65
+
66
+ <a id="cordis-surface"></a>
67
+
68
+ ## Cordis API
69
+
70
+ 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).
71
+
72
+ <a id="ctxactioncards--actioncards"></a>
73
+
74
+ ### `ctx.actionCards` — `ActionCards`
75
+
76
+ Card tool, kind registry, Session projection, user actions and status notices.
77
+
78
+ ```ts cordis-catalog
79
+ /**
80
+ * Register one action kind for the caller's lifetime.
81
+ * @param kind - the kind's skill, details schema, verbs and handler.
82
+ * @returns disposer removing the kind; actions on its cards are then unavailable.
83
+ * @throws when another kind already registered the same action.
84
+ */
85
+ register<Details>(kind: ActionCardKind<Details>): () => void
86
+
87
+ /**
88
+ * Record a card decision in the Session log; the next model request reports it.
89
+ * @param agent - agent whose Session owns the card.
90
+ * @param decision - the card's new state.
91
+ * @throws when no kind ever registered the decision's action with this service, or its phase is one the projection derives.
92
+ */
93
+ record(agent: Agent, decision: ActionCardDecision): void
94
+
95
+ /**
96
+ * Read the cards of one Session.
97
+ * @param session - a Session whose projections are prepared.
98
+ * @returns proposals and decisions by call id.
99
+ */
100
+ view(session: Session): ActionCardView
101
+
102
+ /**
103
+ * Apply a user action to a logged card. Shared checks run first, then the kind reconciles the card; `dismiss` is
104
+ * recorded here and every other verb goes to the card's kind. `dismiss` also works on an unstarted card whose kind
105
+ * is no longer registered. Concurrent actions on one card share one operation.
106
+ * @param agent - live root resolved from the displayed Session.
107
+ * @param callId - the card's `propose_action` call id.
108
+ * @param verb - `dismiss` or one of the kind's verbs.
109
+ * @param payload - kind-defined fields such as a chosen location.
110
+ * @returns acceptance of background work, the decision in effect, or a refusal.
111
+ */
112
+ @Remote act(agent: Agent, callId: ToolCallId, verb: string, payload?: Record<string, JsonValue>): Promise<ActionCardResult>
113
+ ```
114
+
115
+ Types: [Agent](core.md) · [Session](session.md) · [ToolCallId](core.md)
116
+
117
+ Source: [`packages/experimental/action-cards/src/index.ts`](../../packages/experimental/action-cards/src/index.ts)
118
+
119
+ <a id="ctxconfigeditor--configeditor"></a>
120
+
121
+ ### `ctx.configEditor` — `ConfigEditor`
122
+
123
+ Persist complete raw configs and apply them through the normal Loader path.
124
+
125
+ ```ts cordis-catalog
126
+ /** Addressable profile rows; nested Includes have independent configuration ownership.
127
+ * @returns Active entries with unique profile patch ids.
128
+ */
129
+ entries(): Entry[]
130
+
131
+ /** Read inherited and explicit profile values for the active entries.
132
+ * @returns Detached layer values alongside their Loader entries.
133
+ */
134
+ configuration(): Array<{ entry: Entry; inherited: Record<string, unknown>; override: Record<string, unknown> }>
135
+
136
+ /** Validate, persist, and reconcile a plugin's next config; ordinary fields keep normal lifecycle rules.
137
+ * @param entry Current Loader entry, also used to detect replacement during the write.
138
+ * @param change Derive a raw config from the current entry and its inherited layer.
139
+ * @returns Fulfillment after Loader reconciliation completes.
140
+ */
141
+ async edit( entry: Entry, change: (current: Record<string, unknown>, inherited: Record<string, unknown>) => Record<string, unknown>, ): Promise<void>
142
+ ```
143
+
144
+ Source: [`packages/boot/config-editor/src/index.ts`](../../packages/boot/config-editor/src/index.ts)
145
+
146
+ <a id="ctxheadlessstartup--headlessstartupvalues"></a>
147
+
148
+ ### `ctx.headlessStartup` — `HeadlessStartupValues`
149
+
150
+ What the runner row reads from HEADLESS_STARTUP_SERVICE.
151
+
152
+ Source: [`packages/bundle/headless/src/startup.ts`](../../packages/bundle/headless/src/startup.ts)
153
+
154
+ <a id="ctxhmr--hmr"></a>
155
+
156
+ ### `ctx.hmr` — `Hmr`
157
+
158
+ Hot reload service with Cordis-compatible module configuration and events.
159
+
160
+ ```ts cordis-catalog
161
+ /** Serialize a caller-owned mutation with all automatic reload paths.
162
+ * @param operation Work that must not overlap module or configuration replacement.
163
+ * @returns The operation result after its asynchronous work completes.
164
+ */
165
+ runExclusive<T>(operation: () => Promise<T>): Promise<T>
166
+
167
+ /** Watch a configuration path through the same queue as module replacement.
168
+ * @param filename Absolute path, which may not exist yet.
169
+ * @param refresh Rebuilds configuration from its current files and awaits Loader completion.
170
+ * @returns Disposer closing this registration and waiting for its pending refresh.
171
+ */
172
+ async watchConfig(filename: string, refresh: () => Promise<void>): Promise<() => Promise<void>>
173
+
174
+ /** Read direct module dependency URLs from the active Node loader.
175
+ * @param url Module URL.
176
+ * @returns Linked module URLs, or an empty list for an uncached module.
177
+ */
178
+ async getLinked(url: string): Promise<string[]>
179
+
180
+ /**
181
+ * Recompose the profile from its manifest and patch files, replacing running plugins whose loaded files below the
182
+ * profile directory or its linked package targets changed on disk, and publishing its runtime resolution. Changed
183
+ * modules are evicted and the Loader entries running them stop; app-boot's {@link recomposeProfile} then publishes the
184
+ * resolution, applies the generation, starts the stopped entries with the current files and configuration,
185
+ * imports entries whose import failed again, and judges activation. Afterwards the modules below the mappings the
186
+ * recomposition dropped are evicted, so a removed or deselected package is imported afresh when it returns. Callers run
187
+ * inside {@link runExclusive}.
188
+ * @param requiredIds Entry ids whose inactive state is reported as a failure even when it predates this call.
189
+ * @returns Inactive-entry diagnostics, the changed modules that load after a restart, and a profile-wide restart reason.
190
+ * @throws The patch read, publication, preparation, apply, or activation failure of the recomposition, including a
191
+ * replacement plugin that fails to load or start, whose previous code no longer runs.
192
+ */
193
+ async reconcileProfile(requiredIds: readonly string[] = []): Promise<ProfileReconciliation>
194
+ ```
195
+
196
+ Source: [`packages/boot/hmr/src/index.ts`](../../packages/boot/hmr/src/index.ts)
197
+
198
+ <a id="ctxpluginmanager--pluginmanager"></a>
199
+
200
+ ### `ctx.pluginManager` — `PluginManager`
201
+
202
+ Manage profile files and apply their declared reload lifecycle.
203
+
204
+ ```ts cordis-catalog
205
+ /**
206
+ * Read a bundle's long description: the Markdown file its locale `meta.detail` names in `language`, otherwise its
207
+ * README. An installed bundle is read from its directory without network access; an official bundle the installation
208
+ * offers before it is installed is read from the npm file CDNs at its offered version. Nothing is cached.
209
+ * @param name - the bundle's package name, as `listBundles()` lists it.
210
+ * @param language - the display language, such as `zh-CN`; documents fall back through its prefixes to English.
211
+ * @param options - `npmFileSources` names npm file CDNs to ask first for an offered bundle, in order, such as the one
212
+ * a Client measured as fastest; configured CDNs it omits follow, and CDNs that are not configured are not asked.
213
+ * @returns the document with its origin and path, or `none`.
214
+ * @throws {RemoteError} `plugin-manager/unknown-bundle`, `plugin-manager/invalid-language`, or
215
+ * `plugin-manager/detail-unavailable`.
216
+ */
217
+ @Remote async readBundleDetail(name: string, language: string, options?: { npmFileSources?: NpmFileSource[] }): Promise<BundleDetail>
218
+
219
+ /** Read exact plugin-version exemptions saved in this profile.
220
+ * @returns Accepted package-name@version keys with the runtime versions they may run on, and any
221
+ * record or file problem the reader rejected, which the caller reports instead of failing.
222
+ */
223
+ @Remote listVersionExemptions(): { exemptions: Record<string, string[]>; warnings: string[] }
224
+
225
+ /** Grant or revoke one exact plugin/runtime exemption and reevaluate live plugins.
226
+ * @param packageVersion Exact manifest package name followed by @ and its version; never an installation spec or alias.
227
+ * @param runtimeVersion Exact current DSH version for grants; revocation may name a previous runtime.
228
+ * @param enabled Whether to grant rather than revoke the exemption.
229
+ * @param acceptRisk Required true for grants after the user accepts possible crashes and data loss.
230
+ * @returns Saved and runtime outcomes. Startup-only profiles require restart.
231
+ */
232
+ @Remote setVersionExemption(packageVersion: string, runtimeVersion: string, enabled: boolean, acceptRisk?: boolean): Promise<ChangeResult>
233
+
234
+ /** Read current plugins, including why a row cannot be changed through the profile patch.
235
+ * @returns Current runtime entries with persistent patch targets.
236
+ * @throws {PluginManagerError} `PLUGIN_MANAGER_PROFILE_READ_FAILED` to in-process callers when the profile patches
237
+ * cannot be read; Remote callers receive `gateway/internal`.
238
+ */
239
+ @Remote async listPlugins(): Promise<PluginInfo[]>
240
+
241
+ /** Read installed, installation-provided, and offline Official catalog bundles, plus selected non-bundle names.
242
+ * A dependency without a bundle patch is listed, as a `not-bundle` problem, only while it is selected.
243
+ * @returns Package versions, manifest descriptions, the installable spec of profile dependencies, rows, optional
244
+ * display metadata, activation selections, whether the installation offers the bundle, and removal availability.
245
+ * @throws {PluginManagerError} `PLUGIN_MANAGER_PROFILE_READ_FAILED` to in-process callers when a profile or
246
+ * installation manifest cannot be read; Remote callers receive `gateway/internal`.
247
+ */
248
+ @Remote listBundles(): Promise<BundleInfo[]>
249
+
250
+ /** Read the registries this manager asks: the configured first one, its fallbacks in order, and what pnpm's own configuration names.
251
+ * @returns The registries in pnpm's comparison form; null is the one pnpm's own configuration names, `resolved` as pnpm reads it now.
252
+ */
253
+ @Remote async registries(): Promise<PluginRegistries>
254
+
255
+ /** Read what a spec names before installing it.
256
+ * @param spec One package spec: a registry name, an absolute path, a git address, or a tarball.
257
+ * @param options The registry asked first.
258
+ * @param signal Ends a registry lookup early.
259
+ * @returns The package the spec names, or why it is refused.
260
+ */
261
+ @Remote async inspect(spec: string, options?: InspectOptions, signal?: AbortSignal): Promise<PluginSpecInspection>
262
+
263
+ /** Read the published versions newer than an installed registry package's version, from the first registry that answers.
264
+ * Official bundles follow the DSH version and are not listed.
265
+ * @param name Installed profile dependency name.
266
+ * @param options The registry asked first; absent, the one the package was installed from in this process, else the configured one.
267
+ * @param signal Ends the lookups early.
268
+ * @returns At most `versionListLimit` newer versions, newest first, with their tags, deprecation, bundle declaration,
269
+ * and DSH compatibility, and the registry that answered; or why no list could be read, with every registry asked.
270
+ */
271
+ @Remote async listVersions(name: string, options?: ListVersionsOptions, signal?: AbortSignal): Promise<PluginVersionList>
272
+
273
+ /**
274
+ * Replace an installed bundle with a newer version. A registry copy updates to `name@version`, checked on the registry
275
+ * first: it must exist, declare a bundle, and accept the running DSH version, or nothing changes. A Git copy updates
276
+ * to the Git spec `options.spec` names, which must pin a full commit of the repository directory the copy came from;
277
+ * with HMR, a network failure or timeout reaching its repository stops the update before anything changes. pnpm reads
278
+ * a Git package only while installing it, so its bundle and compatibility are checked then. Either target
279
+ * installation is undone, profile files and modules included, before its bundle loads unless it installs `name` at
280
+ * `version`. With HMR the installed version is removed, so its plugins stop, and the target is installed with the same
281
+ * selection; when that installation fails or is cancelled, the removed version is installed again: a registry copy
282
+ * from the registry it came from, a Git copy from its saved spec. Without HMR the target is installed over the running
283
+ * version and the result reports the restart.
284
+ * @param name Installed profile dependency name.
285
+ * @param version Exact version newer than the installed one.
286
+ * @param options The registry asked first, as for `listVersions`; the Git spec of `version`, required for and accepted
287
+ * only by a bundle `listBundles` lists with `update: 'git'`; and the request id naming the progress and the target
288
+ * installation's logs and cancellation.
289
+ * @returns The versions, the last step that ran with its result, and the reinstallation when one ran.
290
+ */
291
+ @Remote async updateBundle(name: string, version: string, options?: UpdateBundleOptions): Promise<PluginUpdateResult>
292
+
293
+ /** Persist a plugin entry's desired enablement and apply it on live profiles.
294
+ * @param id Loader entry identity returned by listPlugins.
295
+ * @param enabled Whether the plugin should run.
296
+ * @returns Saved and runtime outcomes, including higher-priority overrides.
297
+ */
298
+ @Remote setPluginEnabled(id: PluginEntryId, enabled: boolean): Promise<ChangeResult>
299
+
300
+ /** Select or remove a bundle layer while retaining installed dependencies.
301
+ * @param name Bundle package name.
302
+ * @param enabled Whether the bundle contributes its patch layer.
303
+ * @returns Persisted and runtime outcomes.
304
+ */
305
+ @Remote setBundleEnabled(name: string, enabled: boolean): Promise<ChangeResult>
306
+
307
+ /**
308
+ * Install a package using the same pnpm implementation as dsh plugin. GitHub
309
+ * repositories get a connection check bounded by githubConnectionTimeoutMs before pnpm starts;
310
+ * only network failures or timeouts stop installation, and a stop streams the check's diagnostic
311
+ * as the installation's install-log run under its request id, while pnpm owns authentication and transport fallback. An
312
+ * HTTP(S) Git URL on another host is installed over SSH instead when access probes bounded by gitTransportTimeoutMs
313
+ * find that only SSH can read it. A run
314
+ * that fails, is cancelled, or adds a package without a bundle patch restores
315
+ * `package.json` and `pnpm-lock.yaml` as they were; downloaded files can stay.
316
+ * @param spec One package spec, including local paths relative to the invocation directory.
317
+ * @param options Whether to activate the installed bundle (defaults to true), the request id a cancellation names,
318
+ * the pending build scripts to allow, whether to save an exact dependency, and the registry asked first.
319
+ * @returns Package-manager diagnostics, the registries asked, and the observed activation outcome.
320
+ */
321
+ @Remote installBundle(spec: string, options?: InstallBundleOptions): Promise<ChangeResult>
322
+
323
+ /** Recover the result of an active installation without cancelling it.
324
+ * @param requestId The id supplied when installation started.
325
+ * @returns The installation's outcome after it settles, or null if no active request has that id.
326
+ * Completed results are not retained; null establishes neither success nor cancellation.
327
+ */
328
+ @Remote async waitForInstall(requestId: PluginInstallRequestId): Promise<ChangeResult | null>
329
+
330
+ /** Stop an installation this manager owns and wait until its files are back.
331
+ * @param requestId The id the installation was started with.
332
+ * @returns `cancelled` once the Git check or pnpm exited and the files are restored, `too-late` once the bundle is being
333
+ * applied, `not-running` for any other id.
334
+ */
335
+ @Remote async cancelInstall(requestId: PluginInstallRequestId): Promise<PluginInstallCancellation>
336
+
337
+ /** Unload and remove a profile-owned bundle dependency through dsh plugin's pnpm path; a selected name no
338
+ * dependency holds is only deselected.
339
+ * @param name Installed dependency or selected bundle name.
340
+ * @returns Removal diagnostics and the remaining profile state.
341
+ */
342
+ @Remote removeBundle(name: string): Promise<ChangeResult>
343
+ ```
344
+
345
+ Source: [`packages/boot/plugin-manager/src/index.ts`](../../packages/boot/plugin-manager/src/index.ts)
346
+
347
+ <a id="ctxpluginmarket--pluginmarket"></a>
348
+
349
+ ### `ctx.pluginMarket` — `PluginMarket`
350
+
351
+ Fetches, validates, and caches configured market indexes; annotates entries with the profile's installation facts.
352
+
353
+ ```ts cordis-catalog
354
+ /**
355
+ * List the configured index sources without fetching them.
356
+ * @returns every source in order, with the title of its last successful read and, when the last read failed, its error.
357
+ */
358
+ @Remote listIndexes(): MarketIndexSummary[]
359
+
360
+ /**
361
+ * Replace the configured index sources through Settings, without remounting this service.
362
+ * `plugin-market/changed` announces the committed list. A URL already configured is kept as written, so a client can
363
+ * add or remove sources beside one that `listIndexes` reports as unusable.
364
+ * @param urls - index URLs in display order.
365
+ * @throws {RemoteError} `plugin-market/invalid-index-url` for an invalid new URL or a repeated URL;
366
+ * `plugin-market/settings-unavailable` without Settings or a profile entry.
367
+ */
368
+ @Remote async setIndexes(urls: string[]): Promise<void>
369
+
370
+ /**
371
+ * Return one page of the plugins of a configured index that match a query. Concurrent reads of a URL share one
372
+ * fetch; a successful document is reused for `cacheTtlMs` unless `refresh` is set. Matching and ordering read only
373
+ * the document; installation status and compatibility are computed for the returned page on every call.
374
+ * @param url - a configured index URL.
375
+ * @param query - text, filters, order, page, and whether to bypass the cached document.
376
+ * @returns the index header, the page's plugins with each plugin's default version and installation status and each
377
+ * version's compatibility and install arguments, the number of matches, and the next page's offset.
378
+ * @throws {RemoteError} `plugin-market/invalid-query`, `plugin-market/unknown-index`, `plugin-market/invalid-index-url`,
379
+ * `plugin-market/fetch-failed`, or `plugin-market/invalid-index`.
380
+ */
381
+ @Remote async search(url: string, query: MarketQuery): Promise<MarketSearchResult>
382
+
383
+ /**
384
+ * Read one plugin of a configured index, using the cached document as `search` does.
385
+ * @param url - a configured index URL.
386
+ * @param name - the plugin's package name.
387
+ * @returns the plugin with its default version, installation status, and annotated versions; undefined when the
388
+ * index does not list it.
389
+ * @throws {RemoteError} `plugin-market/unknown-index`, `plugin-market/invalid-index-url`, `plugin-market/fetch-failed`,
390
+ * or `plugin-market/invalid-index`.
391
+ */
392
+ async entry(url: string, name: string): Promise<MarketListingEntry | undefined>
393
+
394
+ /**
395
+ * Read the long description of one listed version of a plugin market entry, from the version's source: the npm file
396
+ * CDNs for a public npm version, or its pinned Git commit. The Markdown file the package's locale `meta.detail` names
397
+ * in `language` comes first, then the package's README, then the README of the entry's `repository`, or for an npm
398
+ * version without one, of its `package.json` `repository`, at the default branch. An npm version from another
399
+ * registry has no readable package files, so only the entry's `repository` is read.
400
+ * @param url - a configured index URL.
401
+ * @param name - the plugin's package name.
402
+ * @param version - one listed version.
403
+ * @param language - the display language, such as `zh-CN`; documents fall back through its prefixes to English.
404
+ * @param options - `refresh` reads again instead of reusing a result cached for `cacheTtlMs`; `npmFileSources` names
405
+ * npm file CDNs to ask first for an npm version, in order; configured CDNs it omits follow, and CDNs that are not
406
+ * configured are not asked.
407
+ * @returns the document with its origin and image document id, or `none`.
408
+ * @throws {RemoteError} the failures of `search`, `plugin-market/unknown-plugin` for an unlisted plugin or version,
409
+ * `plugin-market/invalid-query`, or `plugin-market/detail-unavailable`.
410
+ */
411
+ @Remote async readEntryDetail( url: string, name: string, version: string, language: string, options?: { refresh?: boolean; npmFileSources?: NpmFileSource[] }, ): Promise<PluginDetail>
412
+ ```
413
+
414
+ Source: [`packages/boot/plugin-market/src/index.ts`](../../packages/boot/plugin-market/src/index.ts)
415
+
416
+ <a id="ctxpluginrecommendations--pluginrecommendations"></a>
417
+
418
+ ### `ctx.pluginRecommendations` — `PluginRecommendations`
419
+
420
+ Catalog lookups for card text and the enabling behind the `enable_official_plugin` card.
421
+
422
+ ```ts cordis-catalog
423
+ /**
424
+ * Read the current catalog text for a logged card.
425
+ * @param agent - Exact live root resolved by the Gateway from the Session id.
426
+ * @param callId - The card's `propose_action` call id, never a package supplied by the browser.
427
+ * @returns the plugin's title, description and selection, or a refusal when the card names no available official plugin.
428
+ */
429
+ @Remote async describe(agent: Agent, callId: ToolCallId): Promise<RecommendationDetails>
430
+ ```
431
+
432
+ Types: [Agent](core.md) · [ToolCallId](core.md)
433
+
434
+ Source: [`packages/experimental/plugin-recommendations/src/index.ts`](../../packages/experimental/plugin-recommendations/src/index.ts)
435
+
436
+ <a id="ctxpluginregistryprobe--pluginregistryprobe"></a>
437
+
438
+ ### `ctx.pluginRegistryProbe` — `PluginRegistryProbe`
439
+
440
+ Compares public registry responses on the Host; the Client owns the initial selection.
441
+
442
+ ```ts cordis-catalog
443
+ /**
444
+ * Race npm and npmmirror HTTPS ping responses through the Host's fetch proxy.
445
+ * Concurrent readers share a probe; a winner cancels and awaits the other request.
446
+ * @returns the first registry with a successful response, or null when disabled or neither responds successfully; results are cached.
447
+ * @throws rejects when the service has been unloaded.
448
+ */
449
+ @Remote async fastest(): Promise<string | null>
450
+ ```
451
+
452
+ Source: [`packages/client/ui-plugin-manager/src/index.ts`](../../packages/client/ui-plugin-manager/src/index.ts)
453
+
454
+ <a id="ctxprofilecontext--profilecontext"></a>
455
+
456
+ ### `ctx.profileContext` — `ProfileContext`
457
+
458
+ Current profile facts; scheduling and mutation belong to their callers.
459
+
460
+ Source: [`packages/boot/app-boot/src/profile-context.ts`](../../packages/boot/app-boot/src/profile-context.ts)
461
+
462
+ <a id="app-boot-events"></a>
463
+
464
+ ### `app-boot/*` events
465
+
466
+ <a id="app-bootconfig-reload--emit"></a>
467
+
468
+ #### `app-boot/config-reload` — emit
469
+
470
+ 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.
471
+
472
+ ```ts cordis-catalog
473
+ /**
474
+ * Profile patches were reconciled into the running Loader tree: every entry update settled and no new
475
+ * inactive entry was introduced. Carries no diff; listeners re-read Loader entries.
476
+ * @mode emit
477
+ */
478
+ 'app-boot/config-reload'(): void
479
+ ```
480
+
481
+ Source: [`packages/boot/app-boot/src/index.ts`](../../packages/boot/app-boot/src/index.ts)
482
+
483
+ <a id="hmr-events"></a>
484
+
485
+ ### `hmr/*` events
486
+
487
+ <a id="hmrchange--emit"></a>
488
+
489
+ #### `hmr/change` — emit
490
+
491
+ A watched file has no module or configuration handler.
492
+
493
+ ```ts cordis-catalog
494
+ /** A watched file has no module or configuration handler.
495
+ * @mode emit
496
+ * @param url Canonical file URL.
497
+ */
498
+ 'hmr/change'(url: string): void
499
+ ```
500
+
501
+ Source: [`packages/boot/hmr/src/index.ts`](../../packages/boot/hmr/src/index.ts)
502
+
503
+ <a id="hmrreload--emit"></a>
504
+
505
+ #### `hmr/reload` — emit
506
+
507
+ Module replacements have finished loading.
508
+
509
+ ```ts cordis-catalog
510
+ /** Module replacements have finished loading.
511
+ * @mode emit
512
+ * @param reloads Replaced plugins and their module locations.
513
+ */
514
+ 'hmr/reload'(reloads: Map<Plugin, Reload>): void
515
+ ```
516
+
517
+ Source: [`packages/boot/hmr/src/index.ts`](../../packages/boot/hmr/src/index.ts)
518
+
519
+ <a id="plugin-manager-events"></a>
520
+
521
+ ### `plugin-manager/*` events
522
+
523
+ <a id="plugin-managerchanged--emit"></a>
524
+
525
+ #### `plugin-manager/changed` — emit
526
+
527
+ 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.
528
+
529
+ ```ts cordis-catalog
530
+ /**
531
+ * The profile's plugins, bundles, or composition changed: a manager
532
+ * operation completed. A patch generation applied outside the manager,
533
+ * by HMR's watcher after a CLI or hand edit, announces nothing here.
534
+ * @mode emit
535
+ * @param change - what changed.
536
+ */
537
+ 'plugin-manager/changed'(change: PluginChange): void
538
+ ```
539
+
540
+ Source: [`packages/boot/plugin-manager/src/types.ts`](../../packages/boot/plugin-manager/src/types.ts)
541
+
542
+ <a id="plugin-managerinstall-log--emit"></a>
543
+
544
+ #### `plugin-manager/install-log` — emit
545
+
546
+ One chunk of an installation run's output, streamed as the run produces it.
547
+
548
+ ```ts cordis-catalog
549
+ /**
550
+ * One chunk of an installation run's output, streamed as the run produces it.
551
+ * @mode emit
552
+ * @param chunk - the chunk and the run it belongs to.
553
+ */
554
+ 'plugin-manager/install-log'(chunk: PluginInstallLogChunk): void
555
+ ```
556
+
557
+ Source: [`packages/boot/plugin-manager/src/types.ts`](../../packages/boot/plugin-manager/src/types.ts)
558
+
559
+ <a id="plugin-managerinstall-state--emit"></a>
560
+
561
+ #### `plugin-manager/install-state` — emit
562
+
563
+ 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.
564
+
565
+ ```ts cordis-catalog
566
+ /**
567
+ * An installation moved between its Host phases. `installing` is announced once per registry the
568
+ * installation asks, with the attempt's registry and position; `cancelling` and `applying` once.
569
+ * @mode emit
570
+ * @param progress - the installation's request id and phase, with the attempt while installing.
571
+ */
572
+ 'plugin-manager/install-state'(progress: PluginInstallProgress): void
573
+ ```
574
+
575
+ Source: [`packages/boot/plugin-manager/src/types.ts`](../../packages/boot/plugin-manager/src/types.ts)
576
+
577
+ <a id="plugin-manageroperation--parallel"></a>
578
+
579
+ #### `plugin-manager/operation` — parallel
580
+
581
+ One manager invocation started or ended; subscribers run independently without delaying management.
582
+
583
+ ```ts cordis-catalog
584
+ /**
585
+ * One manager invocation started or ended; subscribers run independently without delaying management.
586
+ * @mode parallel
587
+ * @param operation - Correlated operation facts; a start without an end has an unknown outcome.
588
+ */
589
+ 'plugin-manager/operation'(operation: PluginOperation): void | Promise<void>
590
+ ```
591
+
592
+ Source: [`packages/boot/plugin-manager/src/types.ts`](../../packages/boot/plugin-manager/src/types.ts)
593
+
594
+ <a id="plugin-managerupdate-state--emit"></a>
595
+
596
+ #### `plugin-manager/update-state` — emit
597
+
598
+ An update moved to its next step: checking the target, removing the installed version, installing the target, or reinstalling the removed version after the target failed. Announced once per step.
599
+
600
+ ```ts cordis-catalog
601
+ /**
602
+ * An update moved to its next step: checking the target, removing the installed version, installing the target,
603
+ * or reinstalling the removed version after the target failed. Announced once per step.
604
+ * @mode emit
605
+ * @param progress - the update's request id and step.
606
+ */
607
+ 'plugin-manager/update-state'(progress: PluginUpdateProgress): void
608
+ ```
609
+
610
+ Source: [`packages/boot/plugin-manager/src/types.ts`](../../packages/boot/plugin-manager/src/types.ts)
611
+
612
+ <a id="plugin-market-events"></a>
613
+
614
+ ### `plugin-market/*` events
615
+
616
+ <a id="plugin-marketchanged--emit"></a>
617
+
618
+ #### `plugin-market/changed` — emit
619
+
620
+ The configured index sources changed.
621
+
622
+ ```ts cordis-catalog
623
+ /**
624
+ * The configured index sources changed.
625
+ * @mode emit
626
+ */
627
+ 'plugin-market/changed'(): void
628
+ ```
629
+
630
+ Source: [`packages/boot/plugin-market/src/types.ts`](../../packages/boot/plugin-market/src/types.ts)
631
+ <!-- END GENERATED cordis-surface -->