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 管理
2
-
3
- [English](boot.md) | 中文
4
-
5
- [boot 包组](../../packages/boot/README.zh.md)负责 launcher 提供的 profile 访问与插件管理器。[插件管理器](../../packages/boot/plugin-manager/README.zh.md)文档说明持久化、重载与包操作行为。
6
-
7
- ## 管理记录
8
-
9
- `PluginEntryId` 标识一个 Loader 条目;调用方从 `listPlugins` 获取,不自行拼接 patch id。
10
-
11
- `PluginInfo` 包含模块标识、实际启停状态、fiber 阶段和可选的展示 `meta`,以及唯一的 `patchId` 或 `readOnlyReason`。
12
-
13
- `BundleInfo.official` 标识项目维护的随附可选组合包和按需目录项,独立于安装状态。`availability` 表示可读取的安装随附包、profile 包或 `missing`;按需目录项不计入未声明的传递依赖副本。`installed` 记录 profile 的依赖声明。按需条目的 `installTarget` 包含 Host 生成的精确 spec 和版本。`BundleInfo` 还包含包名、可选的安装版本、组合层选择状态、删除可用性、可选的解析错误;由 profile 自身依赖提供、且安装不提供的组合包还带有 `source`,即该依赖在 `pnpm add` 中可用的 spec。它的可选 `meta` 与各行的 `BundleRowInfo.meta` 包含展示文本或元信息诊断;Client 在渲染时选择语言。
14
-
15
- `InstallBundleOptions.saveExact` 向共享包安装器传入 `--save-exact`。`InstallBundleOptions.enabled` 默认为 true,false 表示安装但不选择组合包层。`approvedBuilds` 在安装前向指定的待审批包名授予持久脚本权限。`registry` 指定首先询问的注册表;缺省为配置的那个。
16
-
17
- `PluginRegistries` 携带配置的第一个注册表(`null` 即 pnpm 自身配置指定的那个)、随后依次询问的备选注册表,以及 `resolved`——pnpm 自身配置指向的 URL,未读到时为 `null`。`InspectOptions.registry` 指定一次查询首先询问的注册表。
18
-
19
- `ChangeResult.changed` 报告磁盘修改,独立于 `application`:`applied`、`restart-required`、`overridden` 或 `failed`。可选的 `error` 包含可本地化的错误码和外部诊断。`packageResult` 记录 pnpm 退出码、有界输出、截断标志及完整诊断日志路径;当管理器终止了一个停止打印的运行,还记录 `timedOut`。被终止的运行不论信号留下什么退出状态都归类为 `timeout`,因此安装与删除都报告失败而非成功,也不会再询问下一个注册表。`pendingBuilds` 列出整个 profile 尚未决定的包;`approvedBuilds` 记录本次操作授予权限的包名;`registries` 按顺序列出一次安装问过的注册表;`bundle` 与 `version` 给出完成的安装新增的包及其清单版本;`failedAt` 说明最后一次失败的运行连不上的是所问的注册表,还是 git 或 tarball spec 自身拉取的主机。
20
-
21
- ## 市场记录
22
-
23
- [Plugin Market](../../packages/boot/plugin-market/README.zh.md) 读取第 1 版索引格式,校验由 [`dsh-plugin-market-index`](../../packages/util/plugin-market-index/README.zh.md) 完成。
24
-
25
- `MarketIndexSummary` 携带一个已配置的索引 URL,以及最近一次成功读取得到的 `title` 和 `description`;最近一次读取失败时,还携带其 `error`。
26
-
27
- `MarketQuery` 选择索引的一页:模糊匹配的 `text`、一个 `category`、必须全部具备的 `labels`、一个 `MarketSort`、`offset`、不超过 100 的 `limit`、表示重新获取而不使用缓存文档的 `refresh`,以及用于继续读取同一文档后续页的 `fetchedAt`。`MarketSearchResult` 携带索引 URL、`title`、可选的 `description`、市场 `metadata`、该文档的 `fetchedAt`、本页的 `entries`、匹配总数 `total` 和 `nextOffset`。每个 `MarketListingEntry` 额外携带 `defaultVersion`,即默认安装的版本,以及 `installation`,即该包名在当前 profile 中的状态;其 `versions` 中的每个版本额外携带 `install`,即交给 `installBundle` 的精确 spec 和可选的首选 registry,以及 `compatibility`,即包含版本豁免在内的 `engines.dsh` 评估结果。
28
-
29
- ## Profile 重新组合
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.zh.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 管理
2
+
3
+ [English](boot.md) | 中文
4
+
5
+ [boot 包组](../../packages/boot/README.zh.md)负责 launcher 提供的 profile 访问与插件管理器。[插件管理器](../../packages/boot/plugin-manager/README.zh.md)文档说明持久化、重载与包操作行为。
6
+
7
+ ## 管理记录
8
+
9
+ `PluginEntryId` 标识一个 Loader 条目;调用方从 `listPlugins` 获取,不自行拼接 patch id。
10
+
11
+ `PluginInfo` 包含模块标识、实际启停状态、fiber 阶段和可选的展示 `meta`,以及唯一的 `patchId` 或 `readOnlyReason`。
12
+
13
+ `BundleInfo.official` 标识项目维护的随附可选组合包和按需目录项,独立于安装状态。`availability` 表示可读取的安装随附包、profile 包或 `missing`;按需目录项不计入未声明的传递依赖副本。`installed` 记录 profile 的依赖声明。按需条目的 `installTarget` 包含 Host 生成的精确 spec 和版本。`BundleInfo` 还包含包名、可选的安装版本、组合层选择状态、删除可用性、更新方式(`update`:`registry` 或 `git`,组合包无法更新时不存在)、可选的解析错误或平台不支持错误;由 profile 自身依赖提供、且安装不提供的组合包还带有 `source`,即该依赖在 `pnpm add` 中可用的 spec。它的可选 `meta` 与各行的 `BundleRowInfo.meta` 包含展示文本或元信息诊断;Client 在渲染时选择语言。
14
+
15
+ `InstallBundleOptions.saveExact` 向共享包安装器传入 `--save-exact`。`InstallBundleOptions.enabled` 默认为 true,false 表示安装但不选择组合包层。`approvedBuilds` 在安装前向指定的待审批包名授予持久脚本权限。`registry` 指定首先询问的注册表;缺省为配置的那个。`expected` 指定该 spec 必须安装的包与清单版本;安装了其他任何内容的运行会连同其 profile 文件与模块一起被撤销,并以 `unexpected-package` 失败,所安装的包未声明组合包的运行以 `not-bundle` 失败,组合包 patch 无法加载的运行则以操作错误失败。
16
+
17
+ `BundleDetail` 是 profile 中组合包的详细介绍:`{ status: 'found' }` 携带其 `origin`(`locale` 或 `readme`)、在包内的 `path` 和 `markdown`;否则为 `{ status: 'none' }`。[`readBundleDetail`](../../packages/boot/plugin-manager/README.zh.md#bundle-detail-documents) 说明读取顺序和图片路由。`NpmFileSource` 指定一个公共 npm 文件 CDN:`jsdelivr`、`unpkg` 或 `npmmirror`;一次读取的 `npmFileSources` 列出先请求的 CDN。
18
+
19
+ `PluginRegistries` 携带配置的第一个注册表(`null` 即 pnpm 自身配置指定的那个)、随后依次询问的备选注册表,以及 `resolved`——pnpm 自身配置指向的 URL,未读到时为 `null`。`InspectOptions.registry` 指定一次查询首先询问的注册表。
20
+
21
+ `ChangeResult.changed` 报告磁盘修改,独立于 `application`:`applied`、`restart-required`、`overridden` 或 `failed`。可选的 `error` 包含可本地化的错误码和外部诊断。`packageResult` 记录运行的退出状态、有界输出、截断标志及完整诊断日志路径;当管理器终止了一个停止打印的运行,或 GitHub 连接检查到达期限,还记录 `timedOut`;被终止的运行记录强制填入的状态 1,因为它的进程没有返回任何状态。被终止的运行不论信号留下什么退出状态都归类为 `timeout`,因此安装与删除都报告失败而非成功,也不会再询问下一个注册表。`pendingBuilds` 列出整个 profile 尚未决定的包;`approvedBuilds` 记录本次操作授予权限的包名;`registries` 按顺序列出一次安装问过的注册表;`bundle` 与 `version` 给出完成的安装新增的包及其清单版本;`failedAt` 说明最后一次失败的运行连不上的是所问的注册表,还是 git 或 tarball spec 自身拉取的主机。
22
+
23
+ ## 市场记录
24
+
25
+ [Plugin Market](../../packages/boot/plugin-market/README.zh.md) 读取第 1 版索引格式,校验由 [`dsh-plugin-market-index`](../../packages/util/plugin-market-index/README.zh.md) 完成。
26
+
27
+ `MarketIndexSummary` 携带一个已配置的索引 URL,以及最近一次成功读取得到的 `title` 和 `description`;最近一次读取失败时,还携带其 `error`。
28
+
29
+ `MarketQuery` 选择索引的一页:模糊匹配的 `text`、一个 `category`、必须全部具备的 `labels`、一个 `MarketSort`、`offset`、不超过 100 的 `limit`、表示重新获取而不使用缓存文档的 `refresh`,以及用于继续读取同一文档后续页的 `fetchedAt`。`MarketSearchResult` 携带索引 URL、`title`、可选的 `description`、市场 `metadata`、该文档的 `fetchedAt`、本页的 `entries`、匹配总数 `total` 和 `nextOffset`。每个 `MarketListingEntry` 额外携带 `defaultVersion`,即默认安装的版本,以及 `installation`,即该包名在当前 profile 中的状态;其 `versions` 中的每个版本额外携带 `install`,即交给 `installBundle` 的精确 spec 和可选的首选 registry,`compatibility`,即包含版本豁免在内的 `engines.dsh` 评估结果,以及 `update`,即该版本能否通过 `updateBundle` 替换已安装的 Git 副本:它比该副本新,且固定到该副本来源的仓库目录中的一个提交。
30
+
31
+ `PluginDetail` 是市场条目的详细介绍:`{ status: 'found' }` 携带其 `origin`(`locale`、`readme` 或 `repository`)、`markdown`,以及一个 `document` id,该文档中的图片由 `GET /api/plugin-market/detail-file` 提供;否则为 `{ status: 'none' }`。读取其来源的顺序见[插件市场的说明](../../packages/boot/plugin-market/README.zh.md#plugin-detail-documents)。
32
+
33
+ ## Profile 重新组合
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.zh.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.zh.md) · [Session](session.zh.md) · [ToolCallId](core.zh.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.zh.md) · [ToolCallId](core.zh.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 -->