dsh-plugin-guide 0.3.1 → 0.3.3

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 (371) hide show
  1. package/README.es.md +1 -1
  2. package/README.hi.md +1 -1
  3. package/README.md +1 -1
  4. package/README.pt.md +1 -1
  5. package/README.zh.md +1 -1
  6. package/SKILL.md +1 -1
  7. package/dist/dsh-plugin-dev.js +5 -5
  8. package/guide/links.md +1 -1
  9. package/guide/plugin-dev-guide.md +1 -1
  10. package/guide/quick-reference.es.md +2 -2
  11. package/guide/quick-reference.hi.md +1 -1
  12. package/guide/quick-reference.md +2 -2
  13. package/guide/quick-reference.pt.md +2 -2
  14. package/guide/quick-reference.zh-CN.md +2 -2
  15. package/package.json +3 -3
  16. package/references/cordis-paper-and-community.md +1 -1
  17. package/references/official-docs/AGENTS.md +28 -23
  18. package/references/official-docs/README.i18n.yaml +2 -2
  19. package/references/official-docs/README.md +1 -1
  20. package/references/official-docs/README.zh.md +19 -9
  21. package/references/official-docs/SNAPSHOT.md +5 -5
  22. package/references/official-docs/THIRD_PARTY_NOTICES.md +36 -13
  23. package/references/official-docs/docs/AGENTS.md +4 -4
  24. package/references/official-docs/docs/agent-lifecycle.i18n.yaml +2 -2
  25. package/references/official-docs/docs/agent-lifecycle.md +1 -1
  26. package/references/official-docs/docs/agent-lifecycle.zh.md +2 -2
  27. package/references/official-docs/docs/api-gateway.i18n.yaml +2 -2
  28. package/references/official-docs/docs/api-gateway.md +8 -8
  29. package/references/official-docs/docs/api-gateway.zh.md +8 -8
  30. package/references/official-docs/docs/architecture.i18n.yaml +2 -2
  31. package/references/official-docs/docs/architecture.md +25 -8
  32. package/references/official-docs/docs/architecture.zh.md +38 -21
  33. package/references/official-docs/docs/capability-seams.i18n.yaml +2 -2
  34. package/references/official-docs/docs/capability-seams.md +134 -67
  35. package/references/official-docs/docs/capability-seams.zh.md +134 -67
  36. package/references/official-docs/docs/config-catalog.i18n.yaml +2 -2
  37. package/references/official-docs/docs/config-catalog.md +731 -403
  38. package/references/official-docs/docs/config-catalog.zh.md +747 -419
  39. package/references/official-docs/docs/cookbook/adding-a-package.i18n.yaml +2 -2
  40. package/references/official-docs/docs/cookbook/adding-a-package.md +3 -4
  41. package/references/official-docs/docs/cookbook/adding-a-package.zh.md +9 -8
  42. package/references/official-docs/docs/cookbook/{adding-a-conversation-node.i18n.yaml → adding-a-remote-api.i18n.yaml} +3 -3
  43. package/references/official-docs/docs/cookbook/adding-a-remote-api.md +197 -0
  44. package/references/official-docs/docs/cookbook/adding-a-remote-api.zh.md +197 -0
  45. package/references/official-docs/docs/cookbook/adding-a-settings-card.i18n.yaml +6 -0
  46. package/references/official-docs/docs/cookbook/adding-a-settings-card.md +102 -0
  47. package/references/official-docs/docs/cookbook/adding-a-settings-card.zh.md +102 -0
  48. package/references/official-docs/docs/cookbook/adding-a-tool.i18n.yaml +2 -2
  49. package/references/official-docs/docs/cookbook/adding-a-tool.md +11 -4
  50. package/references/official-docs/docs/cookbook/adding-a-tool.zh.md +16 -9
  51. package/references/official-docs/docs/cookbook/adding-a-vendored-package.i18n.yaml +2 -2
  52. package/references/official-docs/docs/cookbook/adding-a-vendored-package.md +2 -2
  53. package/references/official-docs/docs/cookbook/adding-a-vendored-package.zh.md +4 -4
  54. package/references/official-docs/docs/cookbook/adding-an-llm-adapter.i18n.yaml +2 -2
  55. package/references/official-docs/docs/cookbook/adding-an-llm-adapter.md +1 -1
  56. package/references/official-docs/docs/cookbook/adding-an-llm-adapter.zh.md +3 -3
  57. package/references/official-docs/docs/cookbook/extension-cookbook.i18n.yaml +2 -2
  58. package/references/official-docs/docs/cookbook/extension-cookbook.md +9 -8
  59. package/references/official-docs/docs/cookbook/extension-cookbook.zh.md +17 -14
  60. package/references/official-docs/docs/cookbook/maintaining-dsh-code-review.i18n.yaml +1 -1
  61. package/references/official-docs/docs/cookbook/maintaining-dsh-code-review.zh.md +1 -1
  62. package/references/official-docs/docs/cookbook/responding-to-pr-review-on-a-stack.i18n.yaml +1 -1
  63. package/references/official-docs/docs/cookbook/responding-to-pr-review-on-a-stack.zh.md +1 -1
  64. package/references/official-docs/docs/cordis-api/context.i18n.yaml +1 -1
  65. package/references/official-docs/docs/cordis-api/context.zh.md +1 -1
  66. package/references/official-docs/docs/cordis-api/events.i18n.yaml +1 -1
  67. package/references/official-docs/docs/cordis-api/events.zh.md +1 -1
  68. package/references/official-docs/docs/cordis-api/inherited.md +1 -1
  69. package/references/official-docs/docs/cordis-primer.i18n.yaml +2 -2
  70. package/references/official-docs/docs/cordis-primer.md +2 -1
  71. package/references/official-docs/docs/cordis-primer.zh.md +3 -2
  72. package/references/official-docs/docs/cordis-tutorial/01-first-plugin.i18n.yaml +1 -1
  73. package/references/official-docs/docs/cordis-tutorial/01-first-plugin.zh.md +4 -4
  74. package/references/official-docs/docs/cordis-tutorial/02-lifecycle-and-effects.i18n.yaml +1 -1
  75. package/references/official-docs/docs/cordis-tutorial/02-lifecycle-and-effects.zh.md +4 -4
  76. package/references/official-docs/docs/cordis-tutorial/03-services.i18n.yaml +1 -1
  77. package/references/official-docs/docs/cordis-tutorial/03-services.zh.md +4 -4
  78. package/references/official-docs/docs/cordis-tutorial/04-events.i18n.yaml +1 -1
  79. package/references/official-docs/docs/cordis-tutorial/04-events.zh.md +4 -4
  80. package/references/official-docs/docs/cordis-tutorial/05-config.i18n.yaml +1 -1
  81. package/references/official-docs/docs/cordis-tutorial/05-config.zh.md +2 -2
  82. package/references/official-docs/docs/cordis-tutorial/06-composition-and-hmr.i18n.yaml +1 -1
  83. package/references/official-docs/docs/cordis-tutorial/06-composition-and-hmr.zh.md +3 -3
  84. package/references/official-docs/docs/cordis-tutorial/07-into-the-harness.i18n.yaml +2 -2
  85. package/references/official-docs/docs/cordis-tutorial/07-into-the-harness.md +5 -4
  86. package/references/official-docs/docs/cordis-tutorial/07-into-the-harness.zh.md +11 -10
  87. package/references/official-docs/docs/cordis-tutorial/index.i18n.yaml +1 -1
  88. package/references/official-docs/docs/cordis-tutorial/index.zh.md +10 -10
  89. package/references/official-docs/docs/deepseek-llm-api-wire-extensions.i18n.yaml +6 -0
  90. package/references/official-docs/docs/deepseek-llm-api-wire-extensions.md +159 -0
  91. package/references/official-docs/docs/deepseek-llm-api-wire-extensions.zh.md +159 -0
  92. package/references/official-docs/docs/defensive-patterns.i18n.yaml +1 -1
  93. package/references/official-docs/docs/defensive-patterns.zh.md +3 -1
  94. package/references/official-docs/docs/development.i18n.yaml +2 -2
  95. package/references/official-docs/docs/development.md +9 -13
  96. package/references/official-docs/docs/development.zh.md +23 -21
  97. package/references/official-docs/docs/event-producer-consumer.i18n.yaml +2 -2
  98. package/references/official-docs/docs/event-producer-consumer.md +55 -46
  99. package/references/official-docs/docs/event-producer-consumer.zh.md +55 -46
  100. package/references/official-docs/docs/glossary.i18n.yaml +2 -2
  101. package/references/official-docs/docs/glossary.md +1 -1
  102. package/references/official-docs/docs/glossary.zh.md +1 -1
  103. package/references/official-docs/docs/graph-atlas.i18n.yaml +2 -2
  104. package/references/official-docs/docs/graph-atlas.md +0 -2
  105. package/references/official-docs/docs/graph-atlas.zh.md +7 -9
  106. package/references/official-docs/docs/i18n/README.i18n.yaml +2 -2
  107. package/references/official-docs/docs/i18n/README.md +7 -7
  108. package/references/official-docs/docs/i18n/README.zh.md +11 -9
  109. package/references/official-docs/docs/i18n/style-samples.md +3 -3
  110. package/references/official-docs/docs/i18n/translation-prompt.md +3 -3
  111. package/references/official-docs/docs/i18n/translation-rules.i18n.yaml +2 -2
  112. package/references/official-docs/docs/i18n/translation-rules.md +2 -2
  113. package/references/official-docs/docs/i18n/translation-rules.zh.md +3 -3
  114. package/references/official-docs/docs/module-graph.i18n.yaml +2 -2
  115. package/references/official-docs/docs/module-graph.md +660 -909
  116. package/references/official-docs/docs/module-graph.zh.md +662 -911
  117. package/references/official-docs/docs/persistence-catalog.i18n.yaml +2 -2
  118. package/references/official-docs/docs/persistence-catalog.md +185 -53
  119. package/references/official-docs/docs/persistence-catalog.zh.md +193 -61
  120. package/references/official-docs/docs/postmortem/0001-acp-default-export-drops-inject.i18n.yaml +2 -2
  121. package/references/official-docs/docs/postmortem/0001-acp-default-export-drops-inject.md +2 -2
  122. package/references/official-docs/docs/postmortem/0001-acp-default-export-drops-inject.zh.md +3 -3
  123. package/references/official-docs/docs/postmortem/0002-js-expression-disabled-filesystem-tools.i18n.yaml +2 -2
  124. package/references/official-docs/docs/postmortem/0002-js-expression-disabled-filesystem-tools.md +2 -2
  125. package/references/official-docs/docs/postmortem/0002-js-expression-disabled-filesystem-tools.zh.md +2 -2
  126. package/references/official-docs/docs/postmortem/0003-web-agent-gui-feedback-loop.i18n.yaml +2 -2
  127. package/references/official-docs/docs/postmortem/0003-web-agent-gui-feedback-loop.md +2 -2
  128. package/references/official-docs/docs/postmortem/0003-web-agent-gui-feedback-loop.zh.md +2 -2
  129. package/references/official-docs/docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.i18n.yaml +2 -2
  130. package/references/official-docs/docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.md +1 -1
  131. package/references/official-docs/docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.zh.md +2 -2
  132. package/references/official-docs/docs/postmortem/README.i18n.yaml +1 -1
  133. package/references/official-docs/docs/postmortem/README.zh.md +5 -5
  134. package/references/official-docs/docs/rescope.i18n.yaml +2 -2
  135. package/references/official-docs/docs/rescope.md +2 -2
  136. package/references/official-docs/docs/rescope.zh.md +3 -3
  137. package/references/official-docs/docs/subsystems/README.i18n.yaml +2 -2
  138. package/references/official-docs/docs/subsystems/README.md +8 -2
  139. package/references/official-docs/docs/subsystems/README.zh.md +53 -47
  140. package/references/official-docs/docs/subsystems/agent-team.i18n.yaml +6 -0
  141. package/references/official-docs/docs/subsystems/agent-team.md +207 -0
  142. package/references/official-docs/docs/subsystems/agent-team.zh.md +207 -0
  143. package/references/official-docs/docs/subsystems/approval.i18n.yaml +2 -2
  144. package/references/official-docs/docs/subsystems/approval.md +12 -12
  145. package/references/official-docs/docs/subsystems/approval.zh.md +13 -13
  146. package/references/official-docs/docs/subsystems/attachment.i18n.yaml +2 -2
  147. package/references/official-docs/docs/subsystems/attachment.md +90 -7
  148. package/references/official-docs/docs/subsystems/attachment.zh.md +90 -7
  149. package/references/official-docs/docs/subsystems/client-modules.i18n.yaml +2 -2
  150. package/references/official-docs/docs/subsystems/client-modules.md +69 -19
  151. package/references/official-docs/docs/subsystems/client-modules.zh.md +69 -19
  152. package/references/official-docs/docs/subsystems/code-runtime.i18n.yaml +2 -2
  153. package/references/official-docs/docs/subsystems/code-runtime.md +12 -8
  154. package/references/official-docs/docs/subsystems/code-runtime.zh.md +13 -9
  155. package/references/official-docs/docs/subsystems/commands.i18n.yaml +2 -2
  156. package/references/official-docs/docs/subsystems/commands.md +30 -7
  157. package/references/official-docs/docs/subsystems/commands.zh.md +31 -8
  158. package/references/official-docs/docs/subsystems/compaction.i18n.yaml +2 -2
  159. package/references/official-docs/docs/subsystems/compaction.md +14 -14
  160. package/references/official-docs/docs/subsystems/compaction.zh.md +19 -19
  161. package/references/official-docs/docs/subsystems/conversation.i18n.yaml +6 -0
  162. package/references/official-docs/docs/{cookbook/adding-a-conversation-node.md → subsystems/conversation.md} +49 -24
  163. package/references/official-docs/docs/{cookbook/adding-a-conversation-node.zh.md → subsystems/conversation.zh.md} +49 -24
  164. package/references/official-docs/docs/subsystems/core.i18n.yaml +2 -2
  165. package/references/official-docs/docs/subsystems/core.md +114 -36
  166. package/references/official-docs/docs/subsystems/core.zh.md +145 -65
  167. package/references/official-docs/docs/subsystems/credentials.i18n.yaml +2 -2
  168. package/references/official-docs/docs/subsystems/credentials.md +207 -11
  169. package/references/official-docs/docs/subsystems/credentials.zh.md +207 -11
  170. package/references/official-docs/docs/subsystems/extensions.i18n.yaml +2 -2
  171. package/references/official-docs/docs/subsystems/extensions.md +27 -9
  172. package/references/official-docs/docs/subsystems/extensions.zh.md +30 -12
  173. package/references/official-docs/docs/subsystems/feedback.i18n.yaml +2 -2
  174. package/references/official-docs/docs/subsystems/feedback.md +6 -6
  175. package/references/official-docs/docs/subsystems/feedback.zh.md +6 -6
  176. package/references/official-docs/docs/subsystems/filesystem.i18n.yaml +2 -2
  177. package/references/official-docs/docs/subsystems/filesystem.md +17 -7
  178. package/references/official-docs/docs/subsystems/filesystem.zh.md +19 -9
  179. package/references/official-docs/docs/subsystems/goal.i18n.yaml +2 -2
  180. package/references/official-docs/docs/subsystems/goal.md +4 -4
  181. package/references/official-docs/docs/subsystems/goal.zh.md +8 -8
  182. package/references/official-docs/docs/subsystems/invariants.i18n.yaml +2 -2
  183. package/references/official-docs/docs/subsystems/invariants.md +2 -2
  184. package/references/official-docs/docs/subsystems/invariants.zh.md +5 -5
  185. package/references/official-docs/docs/subsystems/jobs.i18n.yaml +2 -2
  186. package/references/official-docs/docs/subsystems/jobs.md +3 -3
  187. package/references/official-docs/docs/subsystems/jobs.zh.md +6 -6
  188. package/references/official-docs/docs/subsystems/llm-streaming.i18n.yaml +2 -2
  189. package/references/official-docs/docs/subsystems/llm-streaming.md +193 -22
  190. package/references/official-docs/docs/subsystems/llm-streaming.zh.md +199 -28
  191. package/references/official-docs/docs/subsystems/lsp.i18n.yaml +2 -2
  192. package/references/official-docs/docs/subsystems/lsp.md +2 -2
  193. package/references/official-docs/docs/subsystems/lsp.zh.md +3 -3
  194. package/references/official-docs/docs/subsystems/permission-presets.i18n.yaml +2 -2
  195. package/references/official-docs/docs/subsystems/permission-presets.md +8 -8
  196. package/references/official-docs/docs/subsystems/permission-presets.zh.md +8 -8
  197. package/references/official-docs/docs/subsystems/persistence.i18n.yaml +2 -2
  198. package/references/official-docs/docs/subsystems/persistence.md +183 -173
  199. package/references/official-docs/docs/subsystems/persistence.zh.md +182 -172
  200. package/references/official-docs/docs/subsystems/plan.i18n.yaml +2 -2
  201. package/references/official-docs/docs/subsystems/plan.md +4 -4
  202. package/references/official-docs/docs/subsystems/plan.zh.md +10 -10
  203. package/references/official-docs/docs/subsystems/sandbox.i18n.yaml +2 -2
  204. package/references/official-docs/docs/subsystems/sandbox.md +5 -3
  205. package/references/official-docs/docs/subsystems/sandbox.zh.md +8 -6
  206. package/references/official-docs/docs/subsystems/schedule.i18n.yaml +2 -2
  207. package/references/official-docs/docs/subsystems/schedule.md +9 -3
  208. package/references/official-docs/docs/subsystems/schedule.zh.md +11 -5
  209. package/references/official-docs/docs/subsystems/scope.i18n.yaml +1 -1
  210. package/references/official-docs/docs/subsystems/scope.zh.md +1 -1
  211. package/references/official-docs/docs/subsystems/session-projection.i18n.yaml +2 -2
  212. package/references/official-docs/docs/subsystems/session-projection.md +148 -75
  213. package/references/official-docs/docs/subsystems/session-projection.zh.md +148 -75
  214. package/references/official-docs/docs/subsystems/session-query.i18n.yaml +2 -2
  215. package/references/official-docs/docs/subsystems/session-query.md +30 -16
  216. package/references/official-docs/docs/subsystems/session-query.zh.md +31 -17
  217. package/references/official-docs/docs/subsystems/session-reference.i18n.yaml +2 -2
  218. package/references/official-docs/docs/subsystems/session-reference.md +94 -7
  219. package/references/official-docs/docs/subsystems/session-reference.zh.md +95 -8
  220. package/references/official-docs/docs/subsystems/session-telemetry.i18n.yaml +2 -2
  221. package/references/official-docs/docs/subsystems/session-telemetry.md +5 -6
  222. package/references/official-docs/docs/subsystems/session-telemetry.zh.md +9 -10
  223. package/references/official-docs/docs/subsystems/session-title.i18n.yaml +2 -2
  224. package/references/official-docs/docs/subsystems/session-title.md +8 -8
  225. package/references/official-docs/docs/subsystems/session-title.zh.md +10 -10
  226. package/references/official-docs/docs/subsystems/session.i18n.yaml +2 -2
  227. package/references/official-docs/docs/subsystems/session.md +376 -71
  228. package/references/official-docs/docs/subsystems/session.zh.md +392 -85
  229. package/references/official-docs/docs/subsystems/settings.i18n.yaml +2 -2
  230. package/references/official-docs/docs/subsystems/settings.md +105 -10
  231. package/references/official-docs/docs/subsystems/settings.zh.md +105 -10
  232. package/references/official-docs/docs/subsystems/shell.i18n.yaml +2 -2
  233. package/references/official-docs/docs/subsystems/shell.md +3 -3
  234. package/references/official-docs/docs/subsystems/shell.zh.md +11 -11
  235. package/references/official-docs/docs/subsystems/skills.i18n.yaml +2 -2
  236. package/references/official-docs/docs/subsystems/skills.md +26 -3
  237. package/references/official-docs/docs/subsystems/skills.zh.md +29 -6
  238. package/references/official-docs/docs/subsystems/slots.i18n.yaml +6 -0
  239. package/references/official-docs/docs/subsystems/slots.md +175 -0
  240. package/references/official-docs/docs/subsystems/slots.zh.md +175 -0
  241. package/references/official-docs/docs/subsystems/spill.i18n.yaml +2 -2
  242. package/references/official-docs/docs/subsystems/spill.md +4 -4
  243. package/references/official-docs/docs/subsystems/spill.zh.md +6 -6
  244. package/references/official-docs/docs/subsystems/storage.i18n.yaml +2 -2
  245. package/references/official-docs/docs/subsystems/storage.md +38 -7
  246. package/references/official-docs/docs/subsystems/storage.zh.md +41 -10
  247. package/references/official-docs/docs/subsystems/subagent.i18n.yaml +2 -2
  248. package/references/official-docs/docs/subsystems/subagent.md +148 -116
  249. package/references/official-docs/docs/subsystems/subagent.zh.md +158 -124
  250. package/references/official-docs/docs/subsystems/subprocess.i18n.yaml +2 -2
  251. package/references/official-docs/docs/subsystems/subprocess.md +3 -3
  252. package/references/official-docs/docs/subsystems/subprocess.zh.md +5 -5
  253. package/references/official-docs/docs/subsystems/system-prompt.i18n.yaml +2 -2
  254. package/references/official-docs/docs/subsystems/system-prompt.md +21 -8
  255. package/references/official-docs/docs/subsystems/system-prompt.zh.md +23 -10
  256. package/references/official-docs/docs/subsystems/terminal.i18n.yaml +2 -2
  257. package/references/official-docs/docs/subsystems/terminal.md +2 -2
  258. package/references/official-docs/docs/subsystems/terminal.zh.md +4 -4
  259. package/references/official-docs/docs/subsystems/todo.i18n.yaml +6 -0
  260. package/references/official-docs/docs/subsystems/todo.md +32 -0
  261. package/references/official-docs/docs/subsystems/todo.zh.md +32 -0
  262. package/references/official-docs/docs/subsystems/token-meter.i18n.yaml +2 -2
  263. package/references/official-docs/docs/subsystems/token-meter.md +29 -14
  264. package/references/official-docs/docs/subsystems/token-meter.zh.md +30 -15
  265. package/references/official-docs/docs/subsystems/tools.i18n.yaml +2 -2
  266. package/references/official-docs/docs/subsystems/tools.md +46 -46
  267. package/references/official-docs/docs/subsystems/tools.zh.md +54 -54
  268. package/references/official-docs/docs/subsystems/typert.i18n.yaml +2 -2
  269. package/references/official-docs/docs/subsystems/typert.md +65 -58
  270. package/references/official-docs/docs/subsystems/typert.zh.md +67 -60
  271. package/references/official-docs/docs/subsystems/user-questions.i18n.yaml +2 -2
  272. package/references/official-docs/docs/subsystems/user-questions.md +35 -35
  273. package/references/official-docs/docs/subsystems/user-questions.zh.md +35 -35
  274. package/references/official-docs/docs/subsystems/web-client.i18n.yaml +6 -0
  275. package/references/official-docs/docs/subsystems/web-client.md +95 -0
  276. package/references/official-docs/docs/subsystems/web-client.zh.md +95 -0
  277. package/references/official-docs/docs/subsystems/web-server.i18n.yaml +2 -2
  278. package/references/official-docs/docs/subsystems/web-server.md +55 -9
  279. package/references/official-docs/docs/subsystems/web-server.zh.md +56 -10
  280. package/references/official-docs/docs/subsystems/web.i18n.yaml +2 -2
  281. package/references/official-docs/docs/subsystems/web.md +14 -7
  282. package/references/official-docs/docs/subsystems/web.zh.md +16 -9
  283. package/references/official-docs/docs/subsystems/webhook.i18n.yaml +6 -0
  284. package/references/official-docs/docs/subsystems/webhook.md +70 -0
  285. package/references/official-docs/docs/subsystems/webhook.zh.md +70 -0
  286. package/references/official-docs/docs/subsystems/workflow.i18n.yaml +2 -2
  287. package/references/official-docs/docs/subsystems/workflow.md +8 -8
  288. package/references/official-docs/docs/subsystems/workflow.zh.md +13 -13
  289. package/references/official-docs/docs/subsystems/workspace.i18n.yaml +2 -2
  290. package/references/official-docs/docs/subsystems/workspace.md +98 -5
  291. package/references/official-docs/docs/subsystems/workspace.zh.md +102 -9
  292. package/references/official-docs/docs/testing.i18n.yaml +2 -2
  293. package/references/official-docs/docs/testing.md +15 -10
  294. package/references/official-docs/docs/testing.zh.md +15 -10
  295. package/references/official-docs/docs/tool-catalog.i18n.yaml +2 -2
  296. package/references/official-docs/docs/tool-catalog.md +413 -61
  297. package/references/official-docs/docs/tool-catalog.zh.md +418 -63
  298. package/references/official-docs/docs/tool-execution-pipeline.i18n.yaml +2 -2
  299. package/references/official-docs/docs/tool-execution-pipeline.md +1 -1
  300. package/references/official-docs/docs/tool-execution-pipeline.zh.md +1 -1
  301. package/references/official-docs/docs/user/develop/basic/config.i18n.yaml +2 -2
  302. package/references/official-docs/docs/user/develop/basic/config.md +1 -1
  303. package/references/official-docs/docs/user/develop/basic/config.zh.md +4 -4
  304. package/references/official-docs/docs/user/develop/basic/index.i18n.yaml +1 -1
  305. package/references/official-docs/docs/user/develop/basic/index.zh.md +5 -5
  306. package/references/official-docs/docs/user/develop/basic/publish.i18n.yaml +2 -2
  307. package/references/official-docs/docs/user/develop/basic/publish.md +3 -3
  308. package/references/official-docs/docs/user/develop/basic/publish.zh.md +7 -7
  309. package/references/official-docs/docs/user/develop/basic/tool.i18n.yaml +2 -2
  310. package/references/official-docs/docs/user/develop/basic/tool.md +3 -3
  311. package/references/official-docs/docs/user/develop/basic/tool.zh.md +4 -4
  312. package/references/official-docs/docs/user/develop/framework/events.i18n.yaml +2 -2
  313. package/references/official-docs/docs/user/develop/framework/events.md +2 -2
  314. package/references/official-docs/docs/user/develop/framework/events.zh.md +3 -3
  315. package/references/official-docs/docs/user/develop/framework/index.i18n.yaml +1 -1
  316. package/references/official-docs/docs/user/develop/framework/index.zh.md +3 -3
  317. package/references/official-docs/docs/user/develop/framework/service.i18n.yaml +2 -2
  318. package/references/official-docs/docs/user/develop/framework/service.md +1 -1
  319. package/references/official-docs/docs/user/develop/framework/service.zh.md +3 -3
  320. package/references/official-docs/docs/user/develop/practice/dynamic-cordis.i18n.yaml +6 -0
  321. package/references/official-docs/docs/user/develop/practice/dynamic-cordis.md +15 -0
  322. package/references/official-docs/docs/user/develop/practice/dynamic-cordis.zh.md +15 -0
  323. package/references/official-docs/docs/user/develop/practice/index.i18n.yaml +2 -2
  324. package/references/official-docs/docs/user/develop/practice/index.md +1 -1
  325. package/references/official-docs/docs/user/develop/practice/index.zh.md +3 -3
  326. package/references/official-docs/docs/user/develop/practice/llm-adapter.i18n.yaml +2 -2
  327. package/references/official-docs/docs/user/develop/practice/llm-adapter.md +4 -3
  328. package/references/official-docs/docs/user/develop/practice/llm-adapter.zh.md +4 -3
  329. package/references/official-docs/docs/user/guide/github-review.i18n.yaml +6 -0
  330. package/references/official-docs/docs/user/guide/github-review.md +102 -0
  331. package/references/official-docs/docs/user/guide/github-review.zh.md +102 -0
  332. package/references/official-docs/docs/user/guide/index.i18n.yaml +2 -2
  333. package/references/official-docs/docs/user/guide/index.md +2 -2
  334. package/references/official-docs/docs/user/guide/index.zh.md +8 -8
  335. package/references/official-docs/docs/user/guide/mcp-memory.i18n.yaml +6 -0
  336. package/references/official-docs/docs/user/guide/mcp-memory.md +101 -0
  337. package/references/official-docs/docs/user/guide/mcp-memory.zh.md +101 -0
  338. package/references/official-docs/docs/user/guide/providers.i18n.yaml +2 -2
  339. package/references/official-docs/docs/user/guide/providers.md +40 -1
  340. package/references/official-docs/docs/user/guide/providers.zh.md +41 -2
  341. package/references/official-docs/docs/user/guide/python-sdk.i18n.yaml +2 -2
  342. package/references/official-docs/docs/user/guide/python-sdk.md +80 -34
  343. package/references/official-docs/docs/user/guide/python-sdk.zh.md +87 -41
  344. package/references/official-docs/docs/user/guide/schedule.i18n.yaml +6 -0
  345. package/references/official-docs/docs/user/guide/schedule.md +21 -0
  346. package/references/official-docs/docs/user/guide/schedule.zh.md +21 -0
  347. package/references/official-docs/docs/web-styling.i18n.yaml +2 -2
  348. package/references/official-docs/docs/web-styling.md +3 -0
  349. package/references/official-docs/docs/web-styling.zh.md +5 -2
  350. package/references/official-docs/packages/AGENTS.md +4 -3
  351. package/references/official-docs/packages/README.md +104 -59
  352. package/references/official-docs/vendor/README.md +1 -0
  353. package/references/official-docs/website-docs.ts +52 -11
  354. package/references/sources.md +2 -2
  355. package/references/website-pages.md +3 -3
  356. package/scripts/download-sources.ps1 +1 -1
  357. package/scripts/sync-official-docs.ps1 +19 -11
  358. package/scripts/verify-kit.ps1 +0 -4
  359. package/templates/js/README.es.md +1 -1
  360. package/templates/js/README.hi.md +1 -1
  361. package/templates/js/README.md +1 -1
  362. package/templates/js/README.pt.md +1 -1
  363. package/templates/js/README.zh.md +1 -1
  364. package/templates/js/package.json +4 -4
  365. package/templates/ts/README.es.md +1 -1
  366. package/templates/ts/README.hi.md +1 -1
  367. package/templates/ts/README.md +1 -1
  368. package/templates/ts/README.pt.md +1 -1
  369. package/templates/ts/README.zh.md +1 -1
  370. package/templates/ts/package.json +4 -4
  371. package/references/official-docs/examples/AGENTS.md +0 -20
@@ -2,5 +2,5 @@
2
2
  # side as of the last confirmed-consistent state. Both languages carry equal authority;
3
3
  # after editing either side, bring the other along and re-record with:
4
4
  # pnpm run verify-translation-pairing --write docs/subsystems/settings.md
5
- settings.md: bb6163eb11412ebe90e7c72d76c0a7b77e040172
6
- settings.zh.md: b8168cba14003de61851841041e69e35c7583afa
5
+ settings.md: d8e3cbc46eb697315d4938b696e921a0c2e11828
6
+ settings.zh.md: 772fd7832ff80cab9444c16c9a1dc7ae1875d51e
@@ -51,7 +51,7 @@ interface SettingsRegisterOptions<T> {
51
51
 
52
52
  `validate` runs after the schema admits a value, so it sees defaults and the composition base exactly as the owner will. `dsh-llm-pi-ai` uses it to refuse a provider profile it could not serve at the write that produced it, rather than storing one that would disable every route in its namespace.
53
53
 
54
- `applies` is a UI hint, not a mechanism: a `restart` owner simply never watches, so its value is read once at construction and configuration surfaces can badge the pending change.
54
+ `applies` is a UI hint, not a mechanism: a `restart` owner never watches, so its value is read once at construction and configuration surfaces can badge the pending change.
55
55
 
56
56
  ```ts type-equiv
57
57
  /** When a namespace's changes take effect for its owner. */
@@ -161,13 +161,17 @@ Every committed change — an in-process write or an externally observed provide
161
161
  type SettingsUpdateSource = 'update' | 'provider'
162
162
  ```
163
163
 
164
+ ## Native document operations
165
+
166
+ `SettingsDocumentOpenValue` confirms that `settings/openSettingsDocument` prepared the provider-owned document and handed it to the native text editor. `AgentPresetDirectoryOpenValue` reports either a completed native handoff or the resolved user-preset directory when desktop opening is unavailable. Neither operation accepts a browser-selected Host path.
167
+
164
168
  <!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
165
169
 
166
170
  <a id="cordis-surface"></a>
167
171
 
168
172
  ## Cordis API
169
173
 
170
- Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) — this section is byte-identical in both language sides of the page. Signature blocks use a `ts cordis-catalog` fence and keep the original source JSDoc; dispatch modes are defined in the [primer](../cordis-primer.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
174
+ Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) — the language sides differ only in locale-specific paired document paths. Signature blocks use a `ts cordis-catalog` fence and keep the original source JSDoc; dispatch modes are defined in the [primer](../cordis-primer.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
171
175
 
172
176
  <a id="ctxsettings--settingsprovider-abstract-seam"></a>
173
177
 
@@ -193,8 +197,22 @@ prepareDocument(): Promise<string | undefined>
193
197
  * @param schema - schemastery schema resolving this namespace's value.
194
198
  * @param options - composition `base` layer and effect timing.
195
199
  * @returns the owner scope for reads, observation, and updates.
200
+ * @throws {TypeError} when `ns` is not a lowercase hyphenated identifier.
201
+ */
202
+ register<const Namespace extends string, T>( ns: Namespace & SettingsNamespaceInput<Namespace>, schema: z<T>, options?: SettingsRegisterOptions<T>, ): SettingsScope<T>
203
+
204
+ /**
205
+ * Attach one optional-settings consumer to this provider. The consumer
206
+ * registers its composition entry as the base layer while this provider is
207
+ * present, then falls back to that entry if the provider detaches.
208
+ * @param owner - consumer context whose unload suppresses fallback work.
209
+ * @param ns - consumer-owned settings namespace.
210
+ * @param schema - schema resolving the namespace.
211
+ * @param entry - composition entry used as the base and fallback value.
212
+ * @param hooks - source sink, change notification, and optional validation.
213
+ * @throws {TypeError} when `ns` is not a lowercase hyphenated identifier.
196
214
  */
197
- register<T>(ns: SettingsNamespace, schema: z<T>, options?: SettingsRegisterOptions<T>): SettingsScope<T>
215
+ installSection<const Namespace extends string, T>( owner: Context, ns: Namespace & SettingsNamespaceInput<Namespace>, schema: z<T>, entry: T, hooks: SettingsSectionHooks<T>, ): void
198
216
 
199
217
  /**
200
218
  * Describe every registered namespace for configuration surfaces, including
@@ -209,8 +227,9 @@ describe(options?: SettingsDescribeOptions): SettingsDescriptor[]
209
227
  * Read one registered namespace's resolved value.
210
228
  * @param ns - the namespace to read.
211
229
  * @returns the resolved value, or `undefined` while unregistered.
230
+ * @throws {TypeError} when `ns` is not a lowercase hyphenated identifier.
212
231
  */
213
- get(ns: SettingsNamespace): unknown
232
+ get<const Namespace extends string>(ns: Namespace & SettingsNamespaceInput<Namespace>): unknown
214
233
 
215
234
  /**
216
235
  * Merge a patch into one registered namespace's user layer, validate the
@@ -222,8 +241,9 @@ get(ns: SettingsNamespace): unknown
222
241
  * @param patch - plain-object patch over the user section.
223
242
  * @param expectedRevision - the descriptor `revision` the caller read; a
224
243
  * namespace that moved past it rejects with {@link SettingsConflictError}.
244
+ * @throws {TypeError} when `ns` is not a lowercase hyphenated identifier.
225
245
  */
226
- async update(ns: SettingsNamespace, patch: object, expectedRevision?: number): Promise<void>
246
+ async update<const Namespace extends string>( ns: Namespace & SettingsNamespaceInput<Namespace>, patch: object, expectedRevision?: number, ): Promise<void>
227
247
 
228
248
  /**
229
249
  * Replace one registered namespace's user section wholesale, validate,
@@ -234,8 +254,9 @@ async update(ns: SettingsNamespace, patch: object, expectedRevision?: number): P
234
254
  * @param section - the complete next user section.
235
255
  * @param expectedRevision - the descriptor `revision` the caller read; a
236
256
  * namespace that moved past it rejects with {@link SettingsConflictError}.
257
+ * @throws {TypeError} when `ns` is not a lowercase hyphenated identifier.
237
258
  */
238
- async replace(ns: SettingsNamespace, section: object, expectedRevision?: number): Promise<void>
259
+ async replace<const Namespace extends string>( ns: Namespace & SettingsNamespaceInput<Namespace>, section: object, expectedRevision?: number, ): Promise<void>
239
260
 
240
261
  /**
241
262
  * Apply path-addressed edits to one registered namespace's user section,
@@ -248,11 +269,85 @@ async replace(ns: SettingsNamespace, section: object, expectedRevision?: number)
248
269
  * @param ops - ordered path edits; later ops observe earlier ones.
249
270
  * @param expectedRevision - the descriptor `revision` the caller read; a
250
271
  * namespace that moved past it rejects with {@link SettingsConflictError}.
272
+ * @throws {TypeError} when `ns` is not a lowercase hyphenated identifier.
273
+ */
274
+ async mutate<const Namespace extends string>( ns: Namespace & SettingsNamespaceInput<Namespace>, ops: readonly SettingsPathOp[], expectedRevision?: number, ): Promise<void>
275
+ ```
276
+
277
+ Source: [`packages/settings/settings/src/index.ts`](../../packages/settings/settings/src/index.ts)
278
+
279
+ <a id="ctxsettingscontroller--settingscontroller"></a>
280
+
281
+ ### `ctx.settingsController` — `SettingsController`
282
+
283
+ Host service backing the generated `ctx.remote.settings` namespace. Every remote read uses `redactSecrets: true`, so a `role('secret')` field cannot ride a response. Writes expose the settings service's merge, replacement, and path-addressed operations, and classify every provider refusal as `settings/conflict` or `settings/rejected` with the service's message.
284
+
285
+ ```ts cordis-catalog
286
+ /**
287
+ * Describe every registered namespace for a configuration page: redacted
288
+ * layered values plus the serialized schema the page renders its form from.
289
+ * @returns provider writability, local-document presence, and one view per namespace.
290
+ * @throws RemoteError when no settings provider is mounted.
291
+ */
292
+ @Remote describe(): SettingsDescribeValue
293
+
294
+ /**
295
+ * Report whether this deployment can open an authored Agent preset directory natively.
296
+ * @returns true when the matching open operation is available.
297
+ */
298
+ @Remote canOpenAgentPresetDirectory(): boolean
299
+
300
+ /**
301
+ * Merge a patch into one namespace's stored user section.
302
+ * @param ns - namespace key to write.
303
+ * @param patch - fields to merge into the user section.
304
+ * @param expectedRevision - revision the caller read; `undefined` writes unconditionally.
305
+ * @returns the namespace's redacted view after the write.
306
+ * @throws RemoteError when the request is invalid, no provider is mounted, or the provider refuses the write.
307
+ */
308
+ @Remote update( ns: string, patch: Record<string, JsonValue>, expectedRevision: number | undefined, ): Promise<SettingsNamespaceView>
309
+
310
+ /**
311
+ * Replace one namespace's stored user section wholesale.
312
+ * @param ns - namespace key to write.
313
+ * @param section - complete replacement user section.
314
+ * @param expectedRevision - revision the caller read; `undefined` writes unconditionally.
315
+ * @returns the namespace's redacted view after the write.
316
+ * @throws RemoteError when the request is invalid, no provider is mounted, or the provider refuses the write.
317
+ */
318
+ @Remote replace( ns: string, section: Record<string, JsonValue>, expectedRevision: number | undefined, ): Promise<SettingsNamespaceView>
319
+
320
+ /**
321
+ * Apply path-addressed edits to one namespace's user section, resolved against
322
+ * the section as stored rather than against whatever the caller last read,
323
+ * then answer with that namespace's new redacted view.
324
+ * @param ns - namespace key to write.
325
+ * @param ops - the edits to apply, in order.
326
+ * @param expectedRevision - revision the caller read; `undefined` writes unconditionally.
327
+ * @returns the namespace's redacted view after the write.
328
+ * @throws RemoteError when the request is invalid, no provider is mounted, or the provider refuses the write.
329
+ */
330
+ @Remote async mutate( ns: string, ops: SettingsPathOpView[], expectedRevision: number | undefined, ): Promise<SettingsNamespaceView>
331
+
332
+ /**
333
+ * Materialize the provider-owned settings document and open it in a native text editor.
334
+ * @param signal - caller lifetime; abort terminates preparation or the native command.
335
+ * @returns confirmation after the native opener accepts the document.
336
+ * @throws RemoteError when no document exists, preparation fails, or opening fails.
337
+ */
338
+ @Remote async openSettingsDocument(signal: AbortSignal): Promise<SettingsDocumentOpenValue>
339
+
340
+ /**
341
+ * Open one user-authored Agent preset directory or return its path when no native opener exists.
342
+ * @param agentPreset - preset id resolved against Host-owned roots.
343
+ * @param signal - caller lifetime; abort terminates the native command.
344
+ * @returns an opened confirmation or the resolved directory for text display.
345
+ * @throws RemoteError when the preset is missing, read-only, invalid, or cannot be opened.
251
346
  */
252
- async mutate(ns: SettingsNamespace, ops: readonly SettingsPathOp[], expectedRevision?: number): Promise<void>
347
+ @Remote async openAgentPresetDirectory( agentPreset: string, signal: AbortSignal, ): Promise<AgentPresetDirectoryOpenValue>
253
348
  ```
254
349
 
255
- Source: [`packages/settings/settings/src/index.ts:350`](../../packages/settings/settings/src/index.ts)
350
+ Source: [`packages/api/settings-controller/src/index.ts`](../../packages/api/settings-controller/src/index.ts)
256
351
 
257
352
  <a id="settings-events"></a>
258
353
 
@@ -279,7 +374,7 @@ One registered namespace's RAW user section changed, whether or not the resolved
279
374
  'settings/document-updated'(ns: SettingsNamespace, revision: number): void
280
375
  ```
281
376
 
282
- Source: [`packages/settings/settings/src/types.ts:48`](../../packages/settings/settings/src/types.ts)
377
+ Source: [`packages/settings/settings/src/types.ts`](../../packages/settings/settings/src/types.ts)
283
378
 
284
379
  <a id="settingsupdated--emit"></a>
285
380
 
@@ -306,5 +401,5 @@ Committed change to one registered namespace's resolved value. Emitted after the
306
401
  'settings/updated'(ns: SettingsNamespace, next: unknown, prev: unknown, source: SettingsUpdateSource): void
307
402
  ```
308
403
 
309
- Source: [`packages/settings/settings/src/types.ts:35`](../../packages/settings/settings/src/types.ts)
404
+ Source: [`packages/settings/settings/src/types.ts`](../../packages/settings/settings/src/types.ts)
310
405
  <!-- END GENERATED cordis-surface -->
@@ -51,7 +51,7 @@ interface SettingsRegisterOptions<T> {
51
51
 
52
52
  `validate` 在 schema 接纳该值之后运行,因此它看到的默认值和组合 base 与 owner 实际看到的完全一致。`dsh-llm-pi-ai` 用它在写入处拒绝自己无法服务的提供方 profile,而不是先存下来、再让该 namespace 下每条路由失效。
53
53
 
54
- `applies` 是 UI 提示而非机制:`restart` 的 owner 只是从不 watch,其值在构造期读取一次,配置界面可为待生效变更加标。
54
+ `applies` 是 UI 提示而非机制:`restart` 的 owner 从不 watch,其值在构造期读取一次,配置界面可为待生效变更加标。
55
55
 
56
56
  ```ts type-equiv
57
57
  /** When a namespace's changes take effect for its owner. */
@@ -161,13 +161,17 @@ interface SettingsDescribeOptions {
161
161
  type SettingsUpdateSource = 'update' | 'provider'
162
162
  ```
163
163
 
164
+ ## 原生文档操作
165
+
166
+ `SettingsDocumentOpenValue` 确认 `settings/openSettingsDocument` 已准备好 provider 持有的文档,并将其交给原生文本编辑器。`AgentPresetDirectoryOpenValue` 报告已完成的原生交接,或在桌面打开不可用时返回解析后的用户 preset 目录。两项操作都不接受由浏览器选择的 Host 路径。
167
+
164
168
  <!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
165
169
 
166
170
  <a id="cordis-surface"></a>
167
171
 
168
172
  ## Cordis API
169
173
 
170
- Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) — this section is byte-identical in both language sides of the page. Signature blocks use a `ts cordis-catalog` fence and keep the original source JSDoc; dispatch modes are defined in the [primer](../cordis-primer.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
174
+ 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).
171
175
 
172
176
  <a id="ctxsettings--settingsprovider-abstract-seam"></a>
173
177
 
@@ -193,8 +197,22 @@ prepareDocument(): Promise<string | undefined>
193
197
  * @param schema - schemastery schema resolving this namespace's value.
194
198
  * @param options - composition `base` layer and effect timing.
195
199
  * @returns the owner scope for reads, observation, and updates.
200
+ * @throws {TypeError} when `ns` is not a lowercase hyphenated identifier.
201
+ */
202
+ register<const Namespace extends string, T>( ns: Namespace & SettingsNamespaceInput<Namespace>, schema: z<T>, options?: SettingsRegisterOptions<T>, ): SettingsScope<T>
203
+
204
+ /**
205
+ * Attach one optional-settings consumer to this provider. The consumer
206
+ * registers its composition entry as the base layer while this provider is
207
+ * present, then falls back to that entry if the provider detaches.
208
+ * @param owner - consumer context whose unload suppresses fallback work.
209
+ * @param ns - consumer-owned settings namespace.
210
+ * @param schema - schema resolving the namespace.
211
+ * @param entry - composition entry used as the base and fallback value.
212
+ * @param hooks - source sink, change notification, and optional validation.
213
+ * @throws {TypeError} when `ns` is not a lowercase hyphenated identifier.
196
214
  */
197
- register<T>(ns: SettingsNamespace, schema: z<T>, options?: SettingsRegisterOptions<T>): SettingsScope<T>
215
+ installSection<const Namespace extends string, T>( owner: Context, ns: Namespace & SettingsNamespaceInput<Namespace>, schema: z<T>, entry: T, hooks: SettingsSectionHooks<T>, ): void
198
216
 
199
217
  /**
200
218
  * Describe every registered namespace for configuration surfaces, including
@@ -209,8 +227,9 @@ describe(options?: SettingsDescribeOptions): SettingsDescriptor[]
209
227
  * Read one registered namespace's resolved value.
210
228
  * @param ns - the namespace to read.
211
229
  * @returns the resolved value, or `undefined` while unregistered.
230
+ * @throws {TypeError} when `ns` is not a lowercase hyphenated identifier.
212
231
  */
213
- get(ns: SettingsNamespace): unknown
232
+ get<const Namespace extends string>(ns: Namespace & SettingsNamespaceInput<Namespace>): unknown
214
233
 
215
234
  /**
216
235
  * Merge a patch into one registered namespace's user layer, validate the
@@ -222,8 +241,9 @@ get(ns: SettingsNamespace): unknown
222
241
  * @param patch - plain-object patch over the user section.
223
242
  * @param expectedRevision - the descriptor `revision` the caller read; a
224
243
  * namespace that moved past it rejects with {@link SettingsConflictError}.
244
+ * @throws {TypeError} when `ns` is not a lowercase hyphenated identifier.
225
245
  */
226
- async update(ns: SettingsNamespace, patch: object, expectedRevision?: number): Promise<void>
246
+ async update<const Namespace extends string>( ns: Namespace & SettingsNamespaceInput<Namespace>, patch: object, expectedRevision?: number, ): Promise<void>
227
247
 
228
248
  /**
229
249
  * Replace one registered namespace's user section wholesale, validate,
@@ -234,8 +254,9 @@ async update(ns: SettingsNamespace, patch: object, expectedRevision?: number): P
234
254
  * @param section - the complete next user section.
235
255
  * @param expectedRevision - the descriptor `revision` the caller read; a
236
256
  * namespace that moved past it rejects with {@link SettingsConflictError}.
257
+ * @throws {TypeError} when `ns` is not a lowercase hyphenated identifier.
237
258
  */
238
- async replace(ns: SettingsNamespace, section: object, expectedRevision?: number): Promise<void>
259
+ async replace<const Namespace extends string>( ns: Namespace & SettingsNamespaceInput<Namespace>, section: object, expectedRevision?: number, ): Promise<void>
239
260
 
240
261
  /**
241
262
  * Apply path-addressed edits to one registered namespace's user section,
@@ -248,11 +269,85 @@ async replace(ns: SettingsNamespace, section: object, expectedRevision?: number)
248
269
  * @param ops - ordered path edits; later ops observe earlier ones.
249
270
  * @param expectedRevision - the descriptor `revision` the caller read; a
250
271
  * namespace that moved past it rejects with {@link SettingsConflictError}.
272
+ * @throws {TypeError} when `ns` is not a lowercase hyphenated identifier.
273
+ */
274
+ async mutate<const Namespace extends string>( ns: Namespace & SettingsNamespaceInput<Namespace>, ops: readonly SettingsPathOp[], expectedRevision?: number, ): Promise<void>
275
+ ```
276
+
277
+ Source: [`packages/settings/settings/src/index.ts`](../../packages/settings/settings/src/index.ts)
278
+
279
+ <a id="ctxsettingscontroller--settingscontroller"></a>
280
+
281
+ ### `ctx.settingsController` — `SettingsController`
282
+
283
+ Host service backing the generated `ctx.remote.settings` namespace. Every remote read uses `redactSecrets: true`, so a `role('secret')` field cannot ride a response. Writes expose the settings service's merge, replacement, and path-addressed operations, and classify every provider refusal as `settings/conflict` or `settings/rejected` with the service's message.
284
+
285
+ ```ts cordis-catalog
286
+ /**
287
+ * Describe every registered namespace for a configuration page: redacted
288
+ * layered values plus the serialized schema the page renders its form from.
289
+ * @returns provider writability, local-document presence, and one view per namespace.
290
+ * @throws RemoteError when no settings provider is mounted.
291
+ */
292
+ @Remote describe(): SettingsDescribeValue
293
+
294
+ /**
295
+ * Report whether this deployment can open an authored Agent preset directory natively.
296
+ * @returns true when the matching open operation is available.
297
+ */
298
+ @Remote canOpenAgentPresetDirectory(): boolean
299
+
300
+ /**
301
+ * Merge a patch into one namespace's stored user section.
302
+ * @param ns - namespace key to write.
303
+ * @param patch - fields to merge into the user section.
304
+ * @param expectedRevision - revision the caller read; `undefined` writes unconditionally.
305
+ * @returns the namespace's redacted view after the write.
306
+ * @throws RemoteError when the request is invalid, no provider is mounted, or the provider refuses the write.
307
+ */
308
+ @Remote update( ns: string, patch: Record<string, JsonValue>, expectedRevision: number | undefined, ): Promise<SettingsNamespaceView>
309
+
310
+ /**
311
+ * Replace one namespace's stored user section wholesale.
312
+ * @param ns - namespace key to write.
313
+ * @param section - complete replacement user section.
314
+ * @param expectedRevision - revision the caller read; `undefined` writes unconditionally.
315
+ * @returns the namespace's redacted view after the write.
316
+ * @throws RemoteError when the request is invalid, no provider is mounted, or the provider refuses the write.
317
+ */
318
+ @Remote replace( ns: string, section: Record<string, JsonValue>, expectedRevision: number | undefined, ): Promise<SettingsNamespaceView>
319
+
320
+ /**
321
+ * Apply path-addressed edits to one namespace's user section, resolved against
322
+ * the section as stored rather than against whatever the caller last read,
323
+ * then answer with that namespace's new redacted view.
324
+ * @param ns - namespace key to write.
325
+ * @param ops - the edits to apply, in order.
326
+ * @param expectedRevision - revision the caller read; `undefined` writes unconditionally.
327
+ * @returns the namespace's redacted view after the write.
328
+ * @throws RemoteError when the request is invalid, no provider is mounted, or the provider refuses the write.
329
+ */
330
+ @Remote async mutate( ns: string, ops: SettingsPathOpView[], expectedRevision: number | undefined, ): Promise<SettingsNamespaceView>
331
+
332
+ /**
333
+ * Materialize the provider-owned settings document and open it in a native text editor.
334
+ * @param signal - caller lifetime; abort terminates preparation or the native command.
335
+ * @returns confirmation after the native opener accepts the document.
336
+ * @throws RemoteError when no document exists, preparation fails, or opening fails.
337
+ */
338
+ @Remote async openSettingsDocument(signal: AbortSignal): Promise<SettingsDocumentOpenValue>
339
+
340
+ /**
341
+ * Open one user-authored Agent preset directory or return its path when no native opener exists.
342
+ * @param agentPreset - preset id resolved against Host-owned roots.
343
+ * @param signal - caller lifetime; abort terminates the native command.
344
+ * @returns an opened confirmation or the resolved directory for text display.
345
+ * @throws RemoteError when the preset is missing, read-only, invalid, or cannot be opened.
251
346
  */
252
- async mutate(ns: SettingsNamespace, ops: readonly SettingsPathOp[], expectedRevision?: number): Promise<void>
347
+ @Remote async openAgentPresetDirectory( agentPreset: string, signal: AbortSignal, ): Promise<AgentPresetDirectoryOpenValue>
253
348
  ```
254
349
 
255
- Source: [`packages/settings/settings/src/index.ts:350`](../../packages/settings/settings/src/index.ts)
350
+ Source: [`packages/api/settings-controller/src/index.ts`](../../packages/api/settings-controller/src/index.ts)
256
351
 
257
352
  <a id="settings-events"></a>
258
353
 
@@ -279,7 +374,7 @@ One registered namespace's RAW user section changed, whether or not the resolved
279
374
  'settings/document-updated'(ns: SettingsNamespace, revision: number): void
280
375
  ```
281
376
 
282
- Source: [`packages/settings/settings/src/types.ts:48`](../../packages/settings/settings/src/types.ts)
377
+ Source: [`packages/settings/settings/src/types.ts`](../../packages/settings/settings/src/types.ts)
283
378
 
284
379
  <a id="settingsupdated--emit"></a>
285
380
 
@@ -306,5 +401,5 @@ Committed change to one registered namespace's resolved value. Emitted after the
306
401
  'settings/updated'(ns: SettingsNamespace, next: unknown, prev: unknown, source: SettingsUpdateSource): void
307
402
  ```
308
403
 
309
- Source: [`packages/settings/settings/src/types.ts:35`](../../packages/settings/settings/src/types.ts)
404
+ Source: [`packages/settings/settings/src/types.ts`](../../packages/settings/settings/src/types.ts)
310
405
  <!-- END GENERATED cordis-surface -->
@@ -2,5 +2,5 @@
2
2
  # side as of the last confirmed-consistent state. Both languages carry equal authority;
3
3
  # after editing either side, bring the other along and re-record with:
4
4
  # pnpm run verify-translation-pairing --write docs/subsystems/shell.md
5
- shell.md: b9f8e3aebb69348ea241be93d6fd5559068c4029
6
- shell.zh.md: 1ea086819f3badc92376d39cb13e584da772572b
5
+ shell.md: 554adcfb1b37a5e2fe787a78dbb61a1206f80cf9
6
+ shell.zh.md: f15b57cc0050bb8f38d2652ddb9ad0e250568663
@@ -226,7 +226,7 @@ interface ShellProcessRead {
226
226
 
227
227
  ## Cordis API
228
228
 
229
- Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) — this section is byte-identical in both language sides of the page. Signature blocks use a `ts cordis-catalog` fence and keep the original source JSDoc; dispatch modes are defined in the [primer](../cordis-primer.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
229
+ Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) — the language sides differ only in locale-specific paired document paths. Signature blocks use a `ts cordis-catalog` fence and keep the original source JSDoc; dispatch modes are defined in the [primer](../cordis-primer.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
230
230
 
231
231
  <a id="ctxshell--shellexecutor-abstract-seam"></a>
232
232
 
@@ -266,7 +266,7 @@ abstract run(spec: ShellExecSpec): Promise<ShellRunResult>
266
266
  abstract start(spec: ShellExecSpec): ShellProcess
267
267
  ```
268
268
 
269
- Source: [`packages/shell/shell/src/index.ts:65`](../../packages/shell/shell/src/index.ts)
269
+ Source: [`packages/shell/shell/src/index.ts`](../../packages/shell/shell/src/index.ts)
270
270
 
271
271
  <a id="ctxshellenv--shellenvregistry"></a>
272
272
 
@@ -299,5 +299,5 @@ list(): BashEnvVariableInfo[]
299
299
 
300
300
  Types: [DshEnvironment](subprocess.md) · [ToolExecution](tools.md)
301
301
 
302
- Source: [`packages/shell/shell-env/src/index.ts:89`](../../packages/shell/shell-env/src/index.ts)
302
+ Source: [`packages/shell/shell-env/src/index.ts`](../../packages/shell/shell-env/src/index.ts)
303
303
  <!-- END GENERATED cordis-surface -->
@@ -2,13 +2,13 @@
2
2
 
3
3
  [English](shell.md) | 中文
4
4
 
5
- bash 执行 seam 分为 Service Definition([dsh-shell](../../packages/shell/shell),`ctx.shell`)、Service Provider([dsh-bash-local](../../packages/shell/bash-local) 与 [dsh-bash-sandbox](../../packages/shell/bash-sandbox))和 Consumer([dsh-tool-bash](../../packages/shell/tool-bash),即 `bash` schema)。通用后台任务的 job id、所有权与控制位于 [jobs.md](jobs.md);本 seam 返回一个不含任务概念的进程句柄。原始进程组机制封装在[子进程 seam](subprocess.md)之后。
5
+ bash 执行 seam 分为 Service Definition([dsh-shell](../../packages/shell/shell),`ctx.shell`)、Service Provider([dsh-bash-local](../../packages/shell/bash-local) 与 [dsh-bash-sandbox](../../packages/shell/bash-sandbox))和 Consumer([dsh-tool-bash](../../packages/shell/tool-bash),即 `bash` schema)。通用后台任务的 job id、所有权与控制位于 [jobs.md](jobs.zh.md);本 seam 返回一个不含任务概念的进程句柄。原始进程组机制封装在[子进程 seam](subprocess.zh.md)之后。
6
6
 
7
7
  源码:[`packages/shell/shell/src/types.ts`](../../packages/shell/shell/src/types.ts)
8
8
 
9
9
  ## 受管 shell 环境命名空间
10
10
 
11
- `DSH_*` 变量是归 Harness 所有的子进程事实。面向模型的 bash 工具通过 `ctx.shellEnv` 收集它们,再经由 `ShellExecRequest.dshEnv` 传递;子进程服务在合并当前快照之前会移除继承而来的 `DSH_*` 名称。`DshEnvironmentKey`/`DshEnvironment` 词汇归[子进程 seam](subprocess.md)所有,由 `dsh-shell` 重导出。
11
+ `DSH_*` 变量是归 Harness 所有的子进程事实。面向模型的 bash 工具通过 `ctx.shellEnv` 收集它们,再经由 `ShellExecRequest.dshEnv` 传递;子进程服务在合并当前快照之前会移除继承而来的 `DSH_*` 名称。`DshEnvironmentKey`/`DshEnvironment` 词汇归[子进程 seam](subprocess.zh.md)所有,由 `dsh-shell` 重导出。
12
12
 
13
13
  ## 请求与规格:`resolve()` 拆分
14
14
 
@@ -98,7 +98,7 @@ interface ShellExecSpec {
98
98
  }
99
99
  ```
100
100
 
101
- `stdin` 和 `env` 是受信任的进程内插件输入,不由 `dsh-tool-bash` 暴露。本地执行器会先清除环境中的凭据,再合并调用方显式提供的 env。见 [bash-stdin-env Agent Note](../../.agents/notes/implemented/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.md)。
101
+ `stdin` 和 `env` 是受信任的进程内插件输入,不由 `dsh-tool-bash` 暴露。本地执行器会先清除环境中的凭据,再合并调用方显式提供的 env。见 [bash-stdin-env Agent Note](../../.agents/notes/implemented/architecture/2026-06-30-bash-stdin-env-trusted-plugin-api.zh.md)。
102
102
 
103
103
  `stdoutMaxBytes` 同样仅供受信任插件使用。它让前台消费方能在有界解析预算内请求完整 stdout,而不会改变 stderr、后台任务或面向模型的 bash 工具的常规输出上限。
104
104
 
@@ -136,11 +136,11 @@ interface ShellRunResult {
136
136
  }
137
137
  ```
138
138
 
139
- 每个流是一个 `CollectedOutput`:(可能被截断的)文本加恢复信息;截断时,`text` 是**尾部**,完整流溢出到一个私有文件。这些字段归[子进程 seam](subprocess.md)所有,由 `dsh-shell` 重导出。
139
+ 每个流是一个 `CollectedOutput`:(可能被截断的)文本加恢复信息;截断时,`text` 是**尾部**,完整流溢出到一个私有文件。这些字段归[子进程 seam](subprocess.zh.md)所有,由 `dsh-shell` 重导出。
140
140
 
141
141
  ## 文件沙箱:`ShellSandboxInfo`
142
142
 
143
- 使用沙箱的执行器通过 `ShellExecutor.sandboxMode` 暴露其已配置的模式回退值。工具层请求 [`@deepseek-ai/dsh-sandbox-policy`](../../packages/sandbox/sandbox-policy/README.md),把每个调用会话的持久 `sandbox/mode` 覆盖值与不可变 cwd 解析为 `ShellExecRequest.sandboxPolicy`;经用户批准、严格更宽松的调用只替换模式。模式/root/enforcement 词汇归 [`@deepseek-ai/dsh-sandbox` 沙箱 seam](sandbox.md) 所有;模式仅管辖文件效果。
143
+ 使用沙箱的执行器通过 `ShellExecutor.sandboxMode` 暴露其已配置的模式回退值。工具层请求 [`@deepseek-ai/dsh-sandbox-policy`](../../packages/sandbox/sandbox-policy/README.zh.md),把每个调用会话的持久 `sandbox/mode` 覆盖值与不可变 cwd 解析为 `ShellExecRequest.sandboxPolicy`;经用户批准、严格更宽松的调用只替换模式。模式/root/enforcement 词汇归 [`@deepseek-ai/dsh-sandbox` 沙箱 seam](sandbox.zh.md) 所有;模式仅管辖文件效果。
144
144
 
145
145
  沙箱化运行会报告其模式、保守的拒绝分类与强制执行完整度。`runnerFailed` 标记命令运行前沙箱 runner 已失败;前台执行会抛出 `SANDBOX_UNAVAILABLE`,而已结束的后台进程只能通过其事实通道报告。
146
146
 
@@ -162,7 +162,7 @@ interface ShellSandboxInfo {
162
162
  }
163
163
  ```
164
164
 
165
- 当受限模式没有可用后端时,`ctx.sandbox` 提供方会抛出、执行器会传播由[沙箱 seam](sandbox.md)所有的 `SANDBOX_UNAVAILABLE` 错误码。选定的 runner 拒绝其 profile 时会触达同一个故障关闭的前台错误;已结束的后台任务则记录 `runnerFailed`。模型会在结果中收到拒绝/runner 事实,仅当拒绝标记指出生效模式时才得知该模式,并可通过 `sandbox_permissions` 加 `justification` 请求一次性、严格更宽松的重试;执行任何操作前,`ctx.approval` 必须批准该次确切调用。完整的策略与切换设计见[沙箱 Agent Note](../../.agents/notes/implemented/feature/2026-07-06-sandbox.md)。
165
+ 当受限模式没有可用后端时,`ctx.sandbox` 提供方会抛出、执行器会传播由[沙箱 seam](sandbox.zh.md)所有的 `SANDBOX_UNAVAILABLE` 错误码。选定的 runner 拒绝其 profile 时会触达同一个故障关闭的前台错误;已结束的后台任务则记录 `runnerFailed`。模型会在结果中收到拒绝/runner 事实,仅当拒绝标记指出生效模式时才得知该模式,并可通过 `sandbox_permissions` 加 `justification` 请求一次性、严格更宽松的重试;执行任何操作前,`ctx.approval` 必须批准该次确切调用。完整的策略与切换设计见[沙箱 Agent Note](../../.agents/notes/implemented/feature/2026-07-06-sandbox.zh.md)。
166
166
 
167
167
  ## 后台进程:`ShellProcess`
168
168
 
@@ -218,7 +218,7 @@ interface ShellProcessRead {
218
218
 
219
219
  ## 服务
220
220
 
221
- `ShellExecutor` 拥有 `resolve`、前台 `run`、后台进程 `start` 以及 `sandboxMode` 能力事实。`dsh-bash-local` 拥有命令默认值补全、超时/中止分类、终端环境以及后台读取合并;进程组、有界收集器、spill 文件、凭据清除与 dispose(资源释放)后完全停稳归[子进程服务](subprocess.md)所有。`dsh-tool-bash` 拥有面向模型的渲染,并将后台句柄适配到[通用任务运行时](jobs.md)。`dsh-shell` 拥有 shell 工具共享的退出状态约定:导出的 `parseExitStatus`/`ParsedExitStatus` 是 `dsh-tool-bash` 的 `renderResult` 与 `dsh-tool-pwsh` 的 `renderPwshResult` 所追加的 `[exit code: N]` / `[killed by signal: X]` 标记的逆解析,两个工具的 `presentResult` 都用它把渲染文本拆分为 terminal 卡的输出正文与退出状态 pill。
221
+ `ShellExecutor` 拥有 `resolve`、前台 `run`、后台进程 `start` 以及 `sandboxMode` 能力事实。`dsh-bash-local` 拥有命令默认值补全、超时/中止分类、终端环境以及后台读取合并;进程组、有界收集器、spill 文件、凭据清除与 dispose(资源释放)后完全停稳归[子进程服务](subprocess.zh.md)所有。`dsh-tool-bash` 拥有面向模型的渲染,并将后台句柄适配到[通用任务运行时](jobs.zh.md)。`dsh-shell` 拥有 shell 工具共享的退出状态约定:导出的 `parseExitStatus`/`ParsedExitStatus` 是 `dsh-tool-bash` 的 `renderResult` 与 `dsh-tool-pwsh` 的 `renderPwshResult` 所追加的 `[exit code: N]` / `[killed by signal: X]` 标记的逆解析,两个工具的 `presentResult` 都用它把渲染文本拆分为 terminal 卡的输出正文与退出状态 pill。
222
222
 
223
223
  <!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
224
224
 
@@ -226,7 +226,7 @@ interface ShellProcessRead {
226
226
 
227
227
  ## Cordis API
228
228
 
229
- Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) — this section is byte-identical in both language sides of the page. Signature blocks use a `ts cordis-catalog` fence and keep the original source JSDoc; dispatch modes are defined in the [primer](../cordis-primer.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
229
+ 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).
230
230
 
231
231
  <a id="ctxshell--shellexecutor-abstract-seam"></a>
232
232
 
@@ -266,7 +266,7 @@ abstract run(spec: ShellExecSpec): Promise<ShellRunResult>
266
266
  abstract start(spec: ShellExecSpec): ShellProcess
267
267
  ```
268
268
 
269
- Source: [`packages/shell/shell/src/index.ts:65`](../../packages/shell/shell/src/index.ts)
269
+ Source: [`packages/shell/shell/src/index.ts`](../../packages/shell/shell/src/index.ts)
270
270
 
271
271
  <a id="ctxshellenv--shellenvregistry"></a>
272
272
 
@@ -297,7 +297,7 @@ collect(execution: ToolExecution): DshEnvironment
297
297
  list(): BashEnvVariableInfo[]
298
298
  ```
299
299
 
300
- Types: [DshEnvironment](subprocess.md) · [ToolExecution](tools.md)
300
+ Types: [DshEnvironment](subprocess.zh.md) · [ToolExecution](tools.zh.md)
301
301
 
302
- Source: [`packages/shell/shell-env/src/index.ts:89`](../../packages/shell/shell-env/src/index.ts)
302
+ Source: [`packages/shell/shell-env/src/index.ts`](../../packages/shell/shell-env/src/index.ts)
303
303
  <!-- END GENERATED cordis-surface -->
@@ -2,5 +2,5 @@
2
2
  # side as of the last confirmed-consistent state. Both languages carry equal authority;
3
3
  # after editing either side, bring the other along and re-record with:
4
4
  # pnpm run verify-translation-pairing --write docs/subsystems/skills.md
5
- skills.md: cd935692c00f89544dc324b33e847d8d588b78a8
6
- skills.zh.md: f574db048e1850ee425309fe015cd21a075eefc6
5
+ skills.md: 8224b91290c110d52d739cd85b3fc7d641f9a7ea
6
+ skills.zh.md: 018bd85d74ba40717c741d6600f991f3c6d36d4c
@@ -234,13 +234,36 @@ Before each later model step, the consumer applies exact tool visibility and dig
234
234
 
235
235
  The model-facing `skill({ name })` tool validates the kebab-case name, finds the summary in the invocation-neutral catalog, rejects it before loading unless `isModelInvocable` permits access, then rereads the complete definition for the calling agent cwd and rechecks the policy before returning content. It reports an unresolved skill as unknown or no longer available and returns a tool result containing `<skill_content name="...">`, `<skill_resources>`, and `<skill_instructions>`. `resourceBase` resolves explicitly referenced scripts, references, and assets only as needed; the loaded result does not enumerate a skill directory. Body-only edits therefore change later tool calls without producing catalog messages or rewriting earlier tool results.
236
236
 
237
+ ## Browser Session catalog
238
+
239
+ `SkillListRequest` addresses one Session by `sessionId`; `SkillListValue` returns the user-invocable entries with name, description, optional usage guidance, and model-invocation availability. `SessionSkillCatalog` reads the Session cwd and recorded preset without activating an Agent. A live Agent may supply its scoped registry, while a cold Session uses the preset's standing scope.
240
+
237
241
  <!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
238
242
 
239
243
  <a id="cordis-surface"></a>
240
244
 
241
245
  ## Cordis API
242
246
 
243
- Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) — this section is byte-identical in both language sides of the page. Signature blocks use a `ts cordis-catalog` fence and keep the original source JSDoc; dispatch modes are defined in the [primer](../cordis-primer.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
247
+ Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) — the language sides differ only in locale-specific paired document paths. Signature blocks use a `ts cordis-catalog` fence and keep the original source JSDoc; dispatch modes are defined in the [primer](../cordis-primer.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
248
+
249
+ <a id="ctxsessionskillcatalog--sessionskillcatalog"></a>
250
+
251
+ ### `ctx.sessionSkillCatalog` — `SessionSkillCatalog`
252
+
253
+ Host service backing `ctx.remote.skills` without activating a cold Agent.
254
+
255
+ ```ts cordis-catalog
256
+ /**
257
+ * List the user-invocable skills visible to one Session composition.
258
+ * @param request - Session identity whose cwd and preset select the catalog view.
259
+ * @param signal - caller lifetime carried by the Remote transport; admitted catalog reads retain their existing completion semantics.
260
+ * @returns user-invocable skill metadata without loading skill bodies.
261
+ * @throws RemoteError when the Session cannot be inspected or no registry can serve it.
262
+ */
263
+ @Remote async list(request: SkillListRequest, signal: AbortSignal): Promise<SkillListValue>
264
+ ```
265
+
266
+ Source: [`packages/api/session-controller/src/skill-catalog.ts`](../../packages/api/session-controller/src/skill-catalog.ts)
244
267
 
245
268
  <a id="ctxskills--skillregistry"></a>
246
269
 
@@ -304,7 +327,7 @@ async snapshot(options: SkillViewOptions = {}): Promise<SkillCatalogSnapshot>
304
327
  async get(name: string, options: SkillViewOptions = {}): Promise<SkillDefinition | undefined>
305
328
  ```
306
329
 
307
- Source: [`packages/skill/skill/src/index.ts:357`](../../packages/skill/skill/src/index.ts)
330
+ Source: [`packages/skill/skill/src/index.ts`](../../packages/skill/skill/src/index.ts)
308
331
 
309
332
  <a id="skills-events"></a>
310
333
 
@@ -327,5 +350,5 @@ A skill provider, runtime contribution, or provider-backed catalog may have chan
327
350
  'skills/change'(): void
328
351
  ```
329
352
 
330
- Source: [`packages/skill/skill/src/index.ts:297`](../../packages/skill/skill/src/index.ts)
353
+ Source: [`packages/skill/skill/src/index.ts`](../../packages/skill/skill/src/index.ts)
331
354
  <!-- END GENERATED cordis-surface -->