dsh-plugin-guide 0.3.21 → 0.3.23

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 (438) hide show
  1. package/README-es.md +15 -12
  2. package/README-hi.md +15 -12
  3. package/README-pt.md +15 -12
  4. package/README-zh.md +15 -12
  5. package/README.md +290 -280
  6. package/SKILL.md +36 -19
  7. package/dist/dsh-plugin-dev.js +113 -9
  8. package/guide/choosing-a-plugin.md +412 -0
  9. package/guide/choosing-a-plugin.zh-CN.md +414 -0
  10. package/guide/links.md +20 -2
  11. package/guide/migration-0.2.md +219 -0
  12. package/guide/plugin-dev-guide.md +99 -24
  13. package/guide/quick-reference.es.md +14 -8
  14. package/guide/quick-reference.hi.md +15 -9
  15. package/guide/quick-reference.md +18 -10
  16. package/guide/quick-reference.pt.md +15 -9
  17. package/guide/quick-reference.zh-CN.md +19 -11
  18. package/guide/release-engineering.md +2 -2
  19. package/guide/release-engineering.zh-CN.md +2 -2
  20. package/guide/unfixed-issues.md +117 -82
  21. package/guide/when-to-retire-a-plugin.md +127 -0
  22. package/guide/when-to-retire-a-plugin.zh-CN.md +127 -0
  23. package/icon.svg +5 -0
  24. package/locale/en.json +6 -0
  25. package/locale/zh.json +6 -0
  26. package/package.json +8 -4
  27. package/references/official-docs/AGENTS.md +8 -5
  28. package/references/official-docs/CONTRIBUTING.i18n.yaml +6 -5
  29. package/references/official-docs/README.i18n.yaml +33 -5
  30. package/references/official-docs/README.zh.md +3 -3
  31. package/references/official-docs/SNAPSHOT.md +3 -3
  32. package/references/official-docs/THIRD_PARTY_NOTICES.md +34 -6
  33. package/references/official-docs/docs/AGENTS.md +4 -4
  34. package/references/official-docs/docs/agent-lifecycle.i18n.yaml +9 -5
  35. package/references/official-docs/docs/api-gateway.i18n.yaml +27 -5
  36. package/references/official-docs/docs/api-gateway.md +10 -9
  37. package/references/official-docs/docs/api-gateway.zh.md +10 -9
  38. package/references/official-docs/docs/architecture.i18n.yaml +36 -5
  39. package/references/official-docs/docs/architecture.md +10 -8
  40. package/references/official-docs/docs/architecture.zh.md +10 -8
  41. package/references/official-docs/docs/capability-seams.i18n.yaml +9 -5
  42. package/references/official-docs/docs/capability-seams.md +76 -32
  43. package/references/official-docs/docs/capability-seams.zh.md +76 -32
  44. package/references/official-docs/docs/config-catalog.i18n.yaml +18 -5
  45. package/references/official-docs/docs/config-catalog.md +1360 -765
  46. package/references/official-docs/docs/config-catalog.zh.md +1363 -767
  47. package/references/official-docs/docs/cookbook/adding-a-package.i18n.yaml +27 -5
  48. package/references/official-docs/docs/cookbook/adding-a-package.md +56 -3
  49. package/references/official-docs/docs/cookbook/adding-a-package.zh.md +54 -3
  50. package/references/official-docs/docs/cookbook/adding-a-remote-api.i18n.yaml +24 -5
  51. package/references/official-docs/docs/cookbook/adding-a-remote-api.md +2 -2
  52. package/references/official-docs/docs/cookbook/adding-a-remote-api.zh.md +2 -2
  53. package/references/official-docs/docs/cookbook/adding-a-session-format-version.i18n.yaml +39 -5
  54. package/references/official-docs/docs/cookbook/adding-a-session-format-version.md +46 -6
  55. package/references/official-docs/docs/cookbook/adding-a-session-format-version.zh.md +46 -6
  56. package/references/official-docs/docs/cookbook/adding-a-settings-card.i18n.yaml +21 -5
  57. package/references/official-docs/docs/cookbook/adding-a-settings-card.md +34 -64
  58. package/references/official-docs/docs/cookbook/adding-a-settings-card.zh.md +34 -64
  59. package/references/official-docs/docs/cookbook/adding-a-tool.i18n.yaml +30 -5
  60. package/references/official-docs/docs/cookbook/adding-a-tool.md +2 -2
  61. package/references/official-docs/docs/cookbook/adding-a-tool.zh.md +2 -2
  62. package/references/official-docs/docs/cookbook/adding-a-vendored-package.i18n.yaml +18 -5
  63. package/references/official-docs/docs/cookbook/adding-an-llm-adapter.i18n.yaml +18 -5
  64. package/references/official-docs/docs/cookbook/extension-cookbook.i18n.yaml +24 -5
  65. package/references/official-docs/docs/cookbook/extension-cookbook.md +3 -3
  66. package/references/official-docs/docs/cookbook/extension-cookbook.zh.md +3 -3
  67. package/references/official-docs/docs/cookbook/maintaining-dsh-code-review.i18n.yaml +21 -5
  68. package/references/official-docs/docs/cookbook/responding-to-pr-review-on-a-stack.i18n.yaml +15 -5
  69. package/references/official-docs/docs/cookbook/reviewing-persistence-type-changes.i18n.yaml +30 -5
  70. package/references/official-docs/docs/cookbook/reviewing-persistence-type-changes.md +13 -1
  71. package/references/official-docs/docs/cookbook/reviewing-persistence-type-changes.zh.md +13 -1
  72. package/references/official-docs/docs/cordis-api/context.i18n.yaml +72 -5
  73. package/references/official-docs/docs/cordis-api/events.i18n.yaml +36 -5
  74. package/references/official-docs/docs/cordis-api/fiber.i18n.yaml +75 -5
  75. package/references/official-docs/docs/cordis-api/inherited.md +15 -13
  76. package/references/official-docs/docs/cordis-api/registry.i18n.yaml +21 -5
  77. package/references/official-docs/docs/cordis-api/service.i18n.yaml +36 -5
  78. package/references/official-docs/docs/cordis-primer.i18n.yaml +21 -5
  79. package/references/official-docs/docs/cordis-tutorial/01-first-plugin.i18n.yaml +21 -5
  80. package/references/official-docs/docs/cordis-tutorial/02-lifecycle-and-effects.i18n.yaml +15 -5
  81. package/references/official-docs/docs/cordis-tutorial/03-services.i18n.yaml +21 -5
  82. package/references/official-docs/docs/cordis-tutorial/04-events.i18n.yaml +15 -5
  83. package/references/official-docs/docs/cordis-tutorial/05-config.i18n.yaml +18 -5
  84. package/references/official-docs/docs/cordis-tutorial/05-config.md +27 -0
  85. package/references/official-docs/docs/cordis-tutorial/05-config.zh.md +27 -0
  86. package/references/official-docs/docs/cordis-tutorial/06-composition-and-hmr.i18n.yaml +15 -5
  87. package/references/official-docs/docs/cordis-tutorial/07-into-the-harness.i18n.yaml +18 -5
  88. package/references/official-docs/docs/cordis-tutorial/index.i18n.yaml +15 -5
  89. package/references/official-docs/docs/deepseek-llm-api-wire-extensions.i18n.yaml +33 -5
  90. package/references/official-docs/docs/deepseek-llm-api-wire-extensions.md +7 -7
  91. package/references/official-docs/docs/deepseek-llm-api-wire-extensions.zh.md +7 -7
  92. package/references/official-docs/docs/defensive-patterns.i18n.yaml +27 -5
  93. package/references/official-docs/docs/dependency-catalog.json +2 -2
  94. package/references/official-docs/docs/development.i18n.yaml +48 -5
  95. package/references/official-docs/docs/development.md +27 -10
  96. package/references/official-docs/docs/development.zh.md +27 -10
  97. package/references/official-docs/docs/event-producer-consumer.i18n.yaml +12 -5
  98. package/references/official-docs/docs/event-producer-consumer.md +78 -66
  99. package/references/official-docs/docs/event-producer-consumer.zh.md +78 -66
  100. package/references/official-docs/docs/glossary.i18n.yaml +24 -5
  101. package/references/official-docs/docs/graph-atlas.i18n.yaml +9 -5
  102. package/references/official-docs/docs/i18n/README.i18n.yaml +18 -5
  103. package/references/official-docs/docs/i18n/README.md +12 -8
  104. package/references/official-docs/docs/i18n/README.zh.md +12 -8
  105. package/references/official-docs/docs/i18n/terminology.md +4 -4
  106. package/references/official-docs/docs/i18n/translation-prompt.md +2 -2
  107. package/references/official-docs/docs/i18n/translation-rules.i18n.yaml +27 -5
  108. package/references/official-docs/docs/module-graph.i18n.yaml +9 -5
  109. package/references/official-docs/docs/module-graph.md +348 -245
  110. package/references/official-docs/docs/module-graph.zh.md +348 -245
  111. package/references/official-docs/docs/persistence-catalog.i18n.yaml +2064 -5
  112. package/references/official-docs/docs/persistence-catalog.md +5275 -3205
  113. package/references/official-docs/docs/persistence-catalog.zh.md +5275 -3205
  114. package/references/official-docs/docs/persistence-changes/2026-09-11-initial.i18n.yaml +27 -5
  115. package/references/official-docs/docs/persistence-changes/2026-09-12-auto-review-error-metadata.i18n.yaml +27 -5
  116. package/references/official-docs/docs/persistence-changes/2026-09-14-image-offload.i18n.yaml +27 -5
  117. package/references/official-docs/docs/persistence-changes/2026-09-14-workspace-changes-event.i18n.yaml +27 -5
  118. package/references/official-docs/docs/persistence-changes/2026-09-16-session-format-v4.i18n.yaml +28 -0
  119. package/references/official-docs/docs/persistence-changes/2026-09-16-session-format-v4.md +120 -0
  120. package/references/official-docs/docs/persistence-changes/2026-09-16-session-format-v4.schema.json +16212 -0
  121. package/references/official-docs/docs/persistence-changes/2026-09-16-session-format-v4.zh.md +120 -0
  122. package/references/official-docs/docs/persistence-changes/2026-09-18-schedule-optional-title.i18n.yaml +28 -0
  123. package/references/official-docs/docs/persistence-changes/2026-09-18-schedule-optional-title.md +48 -0
  124. package/references/official-docs/docs/persistence-changes/2026-09-18-schedule-optional-title.schema.json +302 -0
  125. package/references/official-docs/docs/persistence-changes/2026-09-18-schedule-optional-title.zh.md +48 -0
  126. package/references/official-docs/docs/persistence-changes/2026-09-20-unknown-child-catalog.i18n.yaml +28 -0
  127. package/references/official-docs/docs/persistence-changes/2026-09-20-unknown-child-catalog.md +48 -0
  128. package/references/official-docs/docs/persistence-changes/2026-09-20-unknown-child-catalog.schema.json +250 -0
  129. package/references/official-docs/docs/persistence-changes/2026-09-20-unknown-child-catalog.zh.md +48 -0
  130. package/references/official-docs/docs/persistence-changes/2026-09-21-user-question-reply.i18n.yaml +28 -0
  131. package/references/official-docs/docs/persistence-changes/2026-09-21-user-question-reply.md +60 -0
  132. package/references/official-docs/docs/persistence-changes/2026-09-21-user-question-reply.schema.json +11405 -0
  133. package/references/official-docs/docs/persistence-changes/2026-09-21-user-question-reply.zh.md +60 -0
  134. package/references/official-docs/docs/persistence-changes/README.i18n.yaml +27 -5
  135. package/references/official-docs/docs/persistence-changes/README.md +17 -3
  136. package/references/official-docs/docs/persistence-changes/README.zh.md +17 -3
  137. package/references/official-docs/docs/persistence-changes/finalized/v4.json +379 -0
  138. package/references/official-docs/docs/persistence-changes/historical-formats/README.i18n.yaml +27 -5
  139. package/references/official-docs/docs/persistence-changes/historical-formats/README.md +3 -2
  140. package/references/official-docs/docs/persistence-changes/historical-formats/README.zh.md +3 -2
  141. package/references/official-docs/docs/persistence-changes/historical-formats/v0.i18n.yaml +1284 -5
  142. package/references/official-docs/docs/persistence-changes/historical-formats/v1.i18n.yaml +1284 -5
  143. package/references/official-docs/docs/persistence-changes/historical-formats/v2.i18n.yaml +1344 -5
  144. package/references/official-docs/docs/persistence-changes/historical-formats/v3.i18n.yaml +1441 -0
  145. package/references/official-docs/docs/persistence-changes/historical-formats/v3.md +5634 -0
  146. package/references/official-docs/docs/persistence-changes/historical-formats/v3.schema.json +61307 -0
  147. package/references/official-docs/docs/persistence-changes/historical-formats/v3.zh.md +5634 -0
  148. package/references/official-docs/docs/persistence-changes/releases/README.i18n.yaml +30 -5
  149. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.1.i18n.yaml +30 -5
  150. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.2.i18n.yaml +30 -5
  151. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.3.i18n.yaml +30 -5
  152. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.4.i18n.yaml +30 -5
  153. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.5.i18n.yaml +30 -5
  154. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.1.i18n.yaml +30 -5
  155. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.2.i18n.yaml +30 -5
  156. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.3.i18n.yaml +30 -5
  157. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.5.i18n.yaml +30 -5
  158. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.6.i18n.yaml +30 -5
  159. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.7.i18n.yaml +30 -5
  160. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.8.i18n.yaml +30 -5
  161. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.1.i18n.yaml +30 -5
  162. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.2.i18n.yaml +30 -5
  163. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.1.i18n.yaml +30 -5
  164. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.2.i18n.yaml +30 -5
  165. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.3.i18n.yaml +30 -5
  166. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.4.i18n.yaml +30 -5
  167. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.5.i18n.yaml +30 -5
  168. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-rc.1.i18n.yaml +30 -5
  169. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.1.i18n.yaml +30 -5
  170. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.2.i18n.yaml +30 -5
  171. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.1.i18n.yaml +30 -5
  172. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.i18n.yaml +30 -5
  173. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.schema.json +3 -3
  174. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.1.i18n.yaml +30 -5
  175. package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.2.i18n.yaml +30 -5
  176. package/references/official-docs/docs/persistence-schema.json +12692 -48753
  177. package/references/official-docs/docs/postmortem/0001-acp-default-export-drops-inject.i18n.yaml +33 -5
  178. package/references/official-docs/docs/postmortem/0002-js-expression-disabled-filesystem-tools.i18n.yaml +27 -5
  179. package/references/official-docs/docs/postmortem/0003-web-agent-gui-feedback-loop.i18n.yaml +27 -5
  180. package/references/official-docs/docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.i18n.yaml +27 -5
  181. package/references/official-docs/docs/postmortem/README.i18n.yaml +6 -5
  182. package/references/official-docs/docs/rescope.i18n.yaml +18 -5
  183. package/references/official-docs/docs/rescope.md +1 -1
  184. package/references/official-docs/docs/rescope.zh.md +1 -1
  185. package/references/official-docs/docs/session-format-status.i18n.yaml +27 -5
  186. package/references/official-docs/docs/session-format-status.md +17 -3
  187. package/references/official-docs/docs/session-format-status.zh.md +17 -3
  188. package/references/official-docs/docs/subsystems/README.i18n.yaml +6 -5
  189. package/references/official-docs/docs/subsystems/README.md +6 -3
  190. package/references/official-docs/docs/subsystems/README.zh.md +6 -3
  191. package/references/official-docs/docs/subsystems/agent-team.i18n.yaml +21 -5
  192. package/references/official-docs/docs/subsystems/agent-team.md +52 -28
  193. package/references/official-docs/docs/subsystems/agent-team.zh.md +52 -28
  194. package/references/official-docs/docs/subsystems/approval.i18n.yaml +18 -5
  195. package/references/official-docs/docs/subsystems/approval.md +1 -1
  196. package/references/official-docs/docs/subsystems/approval.zh.md +1 -1
  197. package/references/official-docs/docs/subsystems/attachment.i18n.yaml +12 -5
  198. package/references/official-docs/docs/subsystems/attachment.md +2 -2
  199. package/references/official-docs/docs/subsystems/attachment.zh.md +2 -2
  200. package/references/official-docs/docs/subsystems/boot.i18n.yaml +9 -5
  201. package/references/official-docs/docs/subsystems/boot.md +117 -17
  202. package/references/official-docs/docs/subsystems/boot.zh.md +117 -17
  203. package/references/official-docs/docs/subsystems/browser-use.i18n.yaml +18 -5
  204. package/references/official-docs/docs/subsystems/claude-code-mods.i18n.yaml +28 -0
  205. package/references/official-docs/docs/subsystems/claude-code-mods.md +146 -0
  206. package/references/official-docs/docs/subsystems/claude-code-mods.zh.md +146 -0
  207. package/references/official-docs/docs/subsystems/client-modules.i18n.yaml +18 -5
  208. package/references/official-docs/docs/subsystems/client-modules.md +13 -7
  209. package/references/official-docs/docs/subsystems/client-modules.zh.md +13 -7
  210. package/references/official-docs/docs/subsystems/client-resources.i18n.yaml +21 -5
  211. package/references/official-docs/docs/subsystems/commands.i18n.yaml +18 -5
  212. package/references/official-docs/docs/subsystems/commands.md +1 -1
  213. package/references/official-docs/docs/subsystems/commands.zh.md +1 -1
  214. package/references/official-docs/docs/subsystems/compaction.i18n.yaml +21 -5
  215. package/references/official-docs/docs/subsystems/compaction.md +2 -2
  216. package/references/official-docs/docs/subsystems/compaction.zh.md +2 -2
  217. package/references/official-docs/docs/subsystems/computer-use.i18n.yaml +15 -5
  218. package/references/official-docs/docs/subsystems/conversation.i18n.yaml +30 -5
  219. package/references/official-docs/docs/subsystems/conversation.md +35 -6
  220. package/references/official-docs/docs/subsystems/conversation.zh.md +34 -5
  221. package/references/official-docs/docs/subsystems/core.i18n.yaml +36 -5
  222. package/references/official-docs/docs/subsystems/core.md +70 -214
  223. package/references/official-docs/docs/subsystems/core.zh.md +70 -214
  224. package/references/official-docs/docs/subsystems/credentials.i18n.yaml +24 -5
  225. package/references/official-docs/docs/subsystems/credentials.md +168 -5
  226. package/references/official-docs/docs/subsystems/credentials.zh.md +168 -5
  227. package/references/official-docs/docs/subsystems/deliverables.i18n.yaml +27 -5
  228. package/references/official-docs/docs/subsystems/extensions.i18n.yaml +6 -5
  229. package/references/official-docs/docs/subsystems/extensions.md +6 -4
  230. package/references/official-docs/docs/subsystems/extensions.zh.md +6 -4
  231. package/references/official-docs/docs/subsystems/feedback.i18n.yaml +27 -5
  232. package/references/official-docs/docs/subsystems/filesystem.i18n.yaml +33 -5
  233. package/references/official-docs/docs/subsystems/filesystem.md +10 -0
  234. package/references/official-docs/docs/subsystems/filesystem.zh.md +10 -0
  235. package/references/official-docs/docs/subsystems/goal.i18n.yaml +18 -5
  236. package/references/official-docs/docs/subsystems/goal.md +1 -1
  237. package/references/official-docs/docs/subsystems/goal.zh.md +1 -1
  238. package/references/official-docs/docs/subsystems/jobs.i18n.yaml +24 -5
  239. package/references/official-docs/docs/subsystems/jobs.md +335 -126
  240. package/references/official-docs/docs/subsystems/jobs.zh.md +335 -126
  241. package/references/official-docs/docs/subsystems/llm-streaming.i18n.yaml +48 -5
  242. package/references/official-docs/docs/subsystems/llm-streaming.md +60 -31
  243. package/references/official-docs/docs/subsystems/llm-streaming.zh.md +60 -31
  244. package/references/official-docs/docs/subsystems/lsp.i18n.yaml +18 -5
  245. package/references/official-docs/docs/subsystems/mcp.i18n.yaml +33 -5
  246. package/references/official-docs/docs/subsystems/mcp.md +2 -2
  247. package/references/official-docs/docs/subsystems/mcp.zh.md +2 -2
  248. package/references/official-docs/docs/subsystems/office-to-pdf.i18n.yaml +18 -5
  249. package/references/official-docs/docs/subsystems/office-to-pdf.md +4 -4
  250. package/references/official-docs/docs/subsystems/office-to-pdf.zh.md +4 -4
  251. package/references/official-docs/docs/subsystems/otel.i18n.yaml +7 -0
  252. package/references/official-docs/docs/subsystems/otel.md +44 -0
  253. package/references/official-docs/docs/subsystems/otel.zh.md +44 -0
  254. package/references/official-docs/docs/subsystems/permission-presets.i18n.yaml +18 -5
  255. package/references/official-docs/docs/subsystems/permission-presets.md +7 -6
  256. package/references/official-docs/docs/subsystems/permission-presets.zh.md +7 -6
  257. package/references/official-docs/docs/subsystems/persistence.i18n.yaml +36 -5
  258. package/references/official-docs/docs/subsystems/persistence.md +3 -3
  259. package/references/official-docs/docs/subsystems/persistence.zh.md +3 -3
  260. package/references/official-docs/docs/subsystems/plan.i18n.yaml +21 -5
  261. package/references/official-docs/docs/subsystems/plan.md +1 -1
  262. package/references/official-docs/docs/subsystems/plan.zh.md +1 -1
  263. package/references/official-docs/docs/subsystems/product-telemetry.i18n.yaml +10 -0
  264. package/references/official-docs/docs/subsystems/product-telemetry.md +79 -0
  265. package/references/official-docs/docs/subsystems/product-telemetry.zh.md +79 -0
  266. package/references/official-docs/docs/subsystems/ptc-runtime.i18n.yaml +18 -5
  267. package/references/official-docs/docs/subsystems/sandbox.i18n.yaml +18 -5
  268. package/references/official-docs/docs/subsystems/sandbox.md +1 -1
  269. package/references/official-docs/docs/subsystems/sandbox.zh.md +1 -1
  270. package/references/official-docs/docs/subsystems/schedule.i18n.yaml +39 -5
  271. package/references/official-docs/docs/subsystems/schedule.md +391 -33
  272. package/references/official-docs/docs/subsystems/schedule.zh.md +391 -33
  273. package/references/official-docs/docs/subsystems/scope.i18n.yaml +15 -5
  274. package/references/official-docs/docs/subsystems/scope.md +1 -1
  275. package/references/official-docs/docs/subsystems/scope.zh.md +1 -1
  276. package/references/official-docs/docs/subsystems/session-projection.i18n.yaml +15 -5
  277. package/references/official-docs/docs/subsystems/session-projection.md +20 -18
  278. package/references/official-docs/docs/subsystems/session-projection.zh.md +20 -18
  279. package/references/official-docs/docs/subsystems/session-query.i18n.yaml +27 -5
  280. package/references/official-docs/docs/subsystems/session-reference.i18n.yaml +18 -5
  281. package/references/official-docs/docs/subsystems/session-telemetry.i18n.yaml +21 -5
  282. package/references/official-docs/docs/subsystems/session-telemetry.md +6 -4
  283. package/references/official-docs/docs/subsystems/session-telemetry.zh.md +6 -4
  284. package/references/official-docs/docs/subsystems/session-title.i18n.yaml +15 -5
  285. package/references/official-docs/docs/subsystems/session.i18n.yaml +66 -5
  286. package/references/official-docs/docs/subsystems/session.md +113 -62
  287. package/references/official-docs/docs/subsystems/session.zh.md +113 -62
  288. package/references/official-docs/docs/subsystems/settings.i18n.yaml +12 -5
  289. package/references/official-docs/docs/subsystems/settings.md +42 -292
  290. package/references/official-docs/docs/subsystems/settings.zh.md +42 -292
  291. package/references/official-docs/docs/subsystems/shell.i18n.yaml +24 -5
  292. package/references/official-docs/docs/subsystems/shell.md +29 -22
  293. package/references/official-docs/docs/subsystems/shell.zh.md +29 -22
  294. package/references/official-docs/docs/subsystems/sidebar-right.i18n.yaml +36 -5
  295. package/references/official-docs/docs/subsystems/sidebar-right.md +14 -9
  296. package/references/official-docs/docs/subsystems/sidebar-right.zh.md +14 -9
  297. package/references/official-docs/docs/subsystems/skills.i18n.yaml +27 -5
  298. package/references/official-docs/docs/subsystems/skills.md +2 -2
  299. package/references/official-docs/docs/subsystems/skills.zh.md +2 -2
  300. package/references/official-docs/docs/subsystems/slots.i18n.yaml +27 -5
  301. package/references/official-docs/docs/subsystems/slots.md +21 -7
  302. package/references/official-docs/docs/subsystems/slots.zh.md +21 -7
  303. package/references/official-docs/docs/subsystems/spill.i18n.yaml +15 -5
  304. package/references/official-docs/docs/subsystems/spill.md +1 -1
  305. package/references/official-docs/docs/subsystems/spill.zh.md +1 -1
  306. package/references/official-docs/docs/subsystems/ssh.i18n.yaml +21 -5
  307. package/references/official-docs/docs/subsystems/storage.i18n.yaml +24 -5
  308. package/references/official-docs/docs/subsystems/storage.md +1 -2
  309. package/references/official-docs/docs/subsystems/storage.zh.md +1 -2
  310. package/references/official-docs/docs/subsystems/subagent.i18n.yaml +30 -5
  311. package/references/official-docs/docs/subsystems/subagent.md +35 -60
  312. package/references/official-docs/docs/subsystems/subagent.zh.md +35 -60
  313. package/references/official-docs/docs/subsystems/subprocess.i18n.yaml +30 -5
  314. package/references/official-docs/docs/subsystems/system-prompt.i18n.yaml +18 -5
  315. package/references/official-docs/docs/subsystems/terminal.i18n.yaml +18 -5
  316. package/references/official-docs/docs/subsystems/todo.i18n.yaml +12 -5
  317. package/references/official-docs/docs/subsystems/todo.md +3 -3
  318. package/references/official-docs/docs/subsystems/todo.zh.md +3 -3
  319. package/references/official-docs/docs/subsystems/token-meter.i18n.yaml +12 -5
  320. package/references/official-docs/docs/subsystems/tools.i18n.yaml +24 -5
  321. package/references/official-docs/docs/subsystems/tools.md +15 -4
  322. package/references/official-docs/docs/subsystems/tools.zh.md +15 -4
  323. package/references/official-docs/docs/subsystems/typert.i18n.yaml +21 -5
  324. package/references/official-docs/docs/subsystems/typert.md +147 -6
  325. package/references/official-docs/docs/subsystems/typert.zh.md +147 -6
  326. package/references/official-docs/docs/subsystems/user-questions.i18n.yaml +27 -5
  327. package/references/official-docs/docs/subsystems/user-questions.md +128 -1
  328. package/references/official-docs/docs/subsystems/user-questions.zh.md +129 -2
  329. package/references/official-docs/docs/subsystems/voice-input.i18n.yaml +19 -0
  330. package/references/official-docs/docs/subsystems/voice-input.md +164 -0
  331. package/references/official-docs/docs/subsystems/voice-input.zh.md +164 -0
  332. package/references/official-docs/docs/subsystems/web-client.i18n.yaml +36 -5
  333. package/references/official-docs/docs/subsystems/web-client.md +10 -5
  334. package/references/official-docs/docs/subsystems/web-client.zh.md +10 -5
  335. package/references/official-docs/docs/subsystems/web-server.i18n.yaml +15 -5
  336. package/references/official-docs/docs/subsystems/web-server.md +12 -4
  337. package/references/official-docs/docs/subsystems/web-server.zh.md +12 -4
  338. package/references/official-docs/docs/subsystems/web.i18n.yaml +27 -5
  339. package/references/official-docs/docs/subsystems/webhook.i18n.yaml +18 -5
  340. package/references/official-docs/docs/subsystems/webhook.md +1 -1
  341. package/references/official-docs/docs/subsystems/webhook.zh.md +1 -1
  342. package/references/official-docs/docs/subsystems/workflow.i18n.yaml +27 -5
  343. package/references/official-docs/docs/subsystems/workflow.md +2 -2
  344. package/references/official-docs/docs/subsystems/workflow.zh.md +2 -2
  345. package/references/official-docs/docs/subsystems/workspace.i18n.yaml +27 -5
  346. package/references/official-docs/docs/subsystems/workspace.md +175 -35
  347. package/references/official-docs/docs/subsystems/workspace.zh.md +175 -35
  348. package/references/official-docs/docs/testing.i18n.yaml +33 -5
  349. package/references/official-docs/docs/testing.md +2 -2
  350. package/references/official-docs/docs/testing.zh.md +2 -2
  351. package/references/official-docs/docs/tool-catalog.i18n.yaml +312 -5
  352. package/references/official-docs/docs/tool-catalog.md +321 -92
  353. package/references/official-docs/docs/tool-catalog.zh.md +321 -92
  354. package/references/official-docs/docs/tool-execution-pipeline.i18n.yaml +9 -5
  355. package/references/official-docs/docs/tool-execution-pipeline.md +6 -3
  356. package/references/official-docs/docs/tool-execution-pipeline.zh.md +6 -3
  357. package/references/official-docs/docs/ui-radius.i18n.yaml +31 -0
  358. package/references/official-docs/docs/ui-radius.md +115 -0
  359. package/references/official-docs/docs/ui-radius.zh.md +115 -0
  360. package/references/official-docs/docs/upgrade-guide/v0.1.7-rc.2/schedule-optional-bundle/guide.i18n.yaml +16 -0
  361. package/references/official-docs/docs/upgrade-guide/v0.1.7-rc.2/schedule-optional-bundle/guide.md +22 -0
  362. package/references/official-docs/docs/upgrade-guide/v0.1.7-rc.2/schedule-optional-bundle/guide.zh.md +22 -0
  363. package/references/official-docs/docs/upgrade-guide/v0.1.7-rc.2/transcript-view-legacy-normal/guide.i18n.yaml +16 -0
  364. package/references/official-docs/docs/upgrade-guide/v0.1.7-rc.2/transcript-view-legacy-normal/guide.md +25 -0
  365. package/references/official-docs/docs/upgrade-guide/v0.1.7-rc.2/transcript-view-legacy-normal/guide.zh.md +25 -0
  366. package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/account-sign-in-errors/guide.i18n.yaml +16 -0
  367. package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/account-sign-in-errors/guide.md +18 -0
  368. package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/account-sign-in-errors/guide.zh.md +18 -0
  369. package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/remove-runtime-invariants/guide.i18n.yaml +16 -0
  370. package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/remove-runtime-invariants/guide.md +23 -0
  371. package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/remove-runtime-invariants/guide.zh.md +23 -0
  372. package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/schedule-bundle-retired/guide.i18n.yaml +16 -0
  373. package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/schedule-bundle-retired/guide.md +22 -0
  374. package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/schedule-bundle-retired/guide.zh.md +22 -0
  375. package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/subpath-plugin-display-manifest/guide.i18n.yaml +16 -0
  376. package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/subpath-plugin-display-manifest/guide.md +27 -0
  377. package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/subpath-plugin-display-manifest/guide.zh.md +27 -0
  378. package/references/official-docs/docs/user/develop/basic/config.i18n.yaml +27 -5
  379. package/references/official-docs/docs/user/develop/basic/index.i18n.yaml +36 -5
  380. package/references/official-docs/docs/user/develop/basic/publish.i18n.yaml +30 -5
  381. package/references/official-docs/docs/user/develop/basic/publish.md +7 -1
  382. package/references/official-docs/docs/user/develop/basic/publish.zh.md +7 -1
  383. package/references/official-docs/docs/user/develop/basic/tool.i18n.yaml +15 -5
  384. package/references/official-docs/docs/user/develop/framework/events.i18n.yaml +45 -5
  385. package/references/official-docs/docs/user/develop/framework/index.i18n.yaml +30 -5
  386. package/references/official-docs/docs/user/develop/framework/service.i18n.yaml +39 -5
  387. package/references/official-docs/docs/user/develop/practice/dynamic-cordis.i18n.yaml +9 -5
  388. package/references/official-docs/docs/user/develop/practice/index.i18n.yaml +45 -5
  389. package/references/official-docs/docs/user/develop/practice/llm-adapter.i18n.yaml +33 -5
  390. package/references/official-docs/docs/user/develop/practice/llm-adapter.md +1 -1
  391. package/references/official-docs/docs/user/develop/practice/llm-adapter.zh.md +1 -1
  392. package/references/official-docs/docs/user/guide/github-review.i18n.yaml +24 -5
  393. package/references/official-docs/docs/user/guide/index.i18n.yaml +18 -5
  394. package/references/official-docs/docs/user/guide/index.md +1 -0
  395. package/references/official-docs/docs/user/guide/index.zh.md +1 -0
  396. package/references/official-docs/docs/user/guide/mcp-memory.i18n.yaml +36 -5
  397. package/references/official-docs/docs/user/guide/network-proxy.i18n.yaml +24 -5
  398. package/references/official-docs/docs/user/guide/providers-custom-form.png +0 -0
  399. package/references/official-docs/docs/user/guide/providers-custom-form.zh.png +0 -0
  400. package/references/official-docs/docs/user/guide/providers-models-page.png +0 -0
  401. package/references/official-docs/docs/user/guide/providers-models-page.zh.png +0 -0
  402. package/references/official-docs/docs/user/guide/providers.i18n.yaml +36 -5
  403. package/references/official-docs/docs/user/guide/providers.md +88 -78
  404. package/references/official-docs/docs/user/guide/providers.zh.md +102 -92
  405. package/references/official-docs/docs/user/guide/public-deployments.i18n.yaml +19 -0
  406. package/references/official-docs/docs/user/guide/public-deployments.md +33 -0
  407. package/references/official-docs/docs/user/guide/public-deployments.zh.md +33 -0
  408. package/references/official-docs/docs/user/guide/python-sdk.i18n.yaml +27 -5
  409. package/references/official-docs/docs/user/guide/python-sdk.md +1 -1
  410. package/references/official-docs/docs/user/guide/python-sdk.zh.md +1 -1
  411. package/references/official-docs/docs/user/guide/schedule.i18n.yaml +30 -5
  412. package/references/official-docs/docs/user/guide/schedule.md +69 -11
  413. package/references/official-docs/docs/user/guide/schedule.zh.md +69 -11
  414. package/references/official-docs/docs/user/index.i18n.yaml +9 -5
  415. package/references/official-docs/docs/web-styling.i18n.yaml +18 -5
  416. package/references/official-docs/docs/web-styling.md +12 -3
  417. package/references/official-docs/docs/web-styling.zh.md +12 -3
  418. package/references/official-docs/packages/AGENTS.md +1 -2
  419. package/references/official-docs/packages/README.md +5 -5
  420. package/references/official-docs/vendor/README.md +6 -2
  421. package/references/official-docs/website-docs.ts +10 -3
  422. package/references/official-plugin-dev-skill.md +124 -0
  423. package/references/sources.md +10 -5
  424. package/scripts/archive-discussions.ps1 +9 -1
  425. package/scripts/build-llms-full.mjs +64 -0
  426. package/scripts/check-docs-drift.ps1 +1 -1
  427. package/scripts/sync-official-docs.ps1 +1 -1
  428. package/templates/js/icon.svg +4 -0
  429. package/templates/js/locale/en.json +6 -0
  430. package/templates/js/locale/zh.json +6 -0
  431. package/templates/js/package.json +9 -1
  432. package/templates/ts/icon.svg +4 -0
  433. package/templates/ts/locale/en.json +6 -0
  434. package/templates/ts/locale/zh.json +6 -0
  435. package/templates/ts/package.json +9 -1
  436. package/references/official-docs/docs/subsystems/invariants.i18n.yaml +0 -6
  437. package/references/official-docs/docs/subsystems/invariants.md +0 -88
  438. package/references/official-docs/docs/subsystems/invariants.zh.md +0 -88
@@ -110,7 +110,7 @@ interface Agent {
110
110
  * turn and runs when the aborted activity converges to idle; a `disposed`
111
111
  * cancel leaves it parked. A wake submitted while already idle always opens
112
112
  * its turn boundary, even when its message is cleared before the driver
113
- * claims ([cancel-convergence wake latch](../../../../.agents/notes/implemented/bug-fix/2026-08-07-cancel-convergence-wake-latch.md)).
113
+ * claims ([driver wake convergence](../../agent-loop/src/agent.ts)).
114
114
  * @param message - identified content and the source that supplied it.
115
115
  * @param target - the preferred next-turn or next-step inbox boundary.
116
116
  * @param wakeup - whether delivery may wake the driver.
@@ -301,7 +301,7 @@ type AgentCancelCause =
301
301
  | { readonly kind: 'disposed' }
302
302
  ```
303
303
 
304
- cause 是由 TypeScript 强制约束的同进程输入。活跃的取消持有者会将它复制到仅运行时的 `AbortSignal.reason`;signal 不授予协作监听器任何分类权限。持久 `turn/end` 以 `{ kind: 'aborted', reason: TurnEndCancelCause }` 记录结果,取消原因随终态结果一起持久化。
304
+ cause 是由 TypeScript 强制约束的同进程输入。活跃的取消持有者把同一个对象暴露为仅运行时的 `AbortSignal.reason`;signal 不授予协作监听器任何分类权限。持久 `turn/end` 以 `{ kind: 'aborted', reason: TurnEndCancelCause }` 记录结果,取消原因随终态结果一起持久化。
305
305
 
306
306
  [事件分类](../architecture.zh.md#events)负责 `agent/*` 生命周期、检查点与 waterfall(瀑布式事件)约定。轮次和步骤边界是持久会话事件,而不是 agent emit。
307
307
 
@@ -431,7 +431,7 @@ Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnp
431
431
 
432
432
  ### `ctx.agentDefaultModel` — `AgentDefaultModelConfig`
433
433
 
434
- Owns the default model selection independently of any Host or transport. The composition entry remains usable without a settings provider; when one is mounted, its user layer is read live.
434
+ Owns the default model selection independently of any Host or transport. Each operation reads the owning Config references.
435
435
 
436
436
  ```ts cordis-catalog
437
437
  /**
@@ -441,10 +441,11 @@ Owns the default model selection independently of any Host or transport. The com
441
441
  currentSelection(): ModelSelection
442
442
 
443
443
  /**
444
- * Save the complete default model selection. A deployment without a settings
445
- * provider keeps its composition entry.
444
+ * Save the complete default model selection. A deployment without a configuration
445
+ * editor keeps its composition entry. Saves commit in submission order; a failed
446
+ * save rejects its caller without blocking later saves.
446
447
  * @param next - resolved selection accepted by an entry point.
447
- * @returns fulfillment after the optional settings write settles.
448
+ * @returns fulfillment after the optional profile write settles.
448
449
  */
449
450
  async saveSelection(next: ModelSelection): Promise<void>
450
451
  ```
@@ -491,248 +492,103 @@ Types: [SessionHeader](persistence.zh.md)
491
492
 
492
493
  Source: [`packages/core/agent-loop/src/index.ts`](../../packages/core/agent-loop/src/index.ts)
493
494
 
494
- <a id="ctxagentpresets--agentpresets"></a>
495
+ <a id="ctxagentpresets--agentpresetregistry"></a>
495
496
 
496
- ### `ctx.agentPresets` — `AgentPresets`
497
+ ### `ctx.agentPresets` — `AgentPresetRegistry`
497
498
 
498
- Registry over the deployment's agent presets.
499
-
500
- Discovery is unmemoized: `list()` and `resolve()` re-read the roots on every call so a preset authored while the process runs is visible immediately, and a preset deleted underneath a picker disappears from the next read.
499
+ Registry of YAML-declared presets and the revisions live Agents retain.
501
500
 
502
501
  ```ts cordis-catalog
503
- /**
504
- * Every preset the configured roots currently supply.
505
- * @returns the presets, first-root-wins per id.
502
+ /** Register and eagerly load a definition; activation failure remains visible in the roster.
503
+ * @param definition Parsed configuration supplied by the declaring plugin.
504
+ * @returns Definition disposer after activation or its diagnostic settles; the declaring plugin owns it.
506
505
  */
507
- async list(): Promise<AgentPreset[]>
506
+ async register(definition: PresetDefinition): Promise<() => Promise<void>>
508
507
 
509
- /**
510
- * The roster off the Host: {@link list} projected to path-free rows, with
511
- * the policy-effective default marked, this deployment's authoring
512
- * capability, and its mode-selection policy beside it.
513
- *
514
- * Whether a client can open a preset's directory is the Host's own opener
515
- * capability, not a roster property — a caller needing both joins them.
516
- * @returns the rows, authoring capability, and effective selection policy.
508
+ /** Inspect retained revisions, or the exact revision an Agent joined.
509
+ * @param ctx - optional Agent context; omission includes all retained revisions.
510
+ * @returns detached module references and isolation diagnostics; no match returns an empty list.
517
511
  */
518
- @Remote('list') async remoteExportList(): Promise<AgentPresetRoster>
512
+ inspectCompositions(ctx?: Context): AgentPresetInspection[]
519
513
 
520
- /**
521
- * Every preset's composition as flattened plugin rows, for plugin-listing
522
- * surfaces beside the roster's own picker.
523
- *
524
- * A preset with a live standing mount answers from its newest generation's
525
- * Loader entries — the composition new sessions join — even when the file
526
- * behind it has since been edited into an unreadable state: the mount is
527
- * what sessions actually run, so the broken verdict only applies to a
528
- * preset nothing composed. One never composed since boot answers from its
529
- * file, with `!!js` disabled gates evaluated against the Loader context so
530
- * both answers reflect the same host. Reading never mounts: an unmounted
531
- * preset is parsed, not composed, so listing a preset's plugins cannot
532
- * activate them early. A composition that stopped reading between
533
- * discovery's health verdict and this read is reported broken with the
534
- * raced reason rather than dropped.
535
- * @returns one composition per roster preset, in roster order.
536
- */
537
- async compositionInventory(): Promise<AgentPresetComposition[]>
538
-
539
- /**
540
- * Resolve one preset by id.
541
- *
542
- * A broken preset resolves — deleting one, reading one, and reporting one
543
- * all need the row — and the mounting paths refuse it AFTER resolution
544
- * through {@link resolveMountable}.
545
- * @param id - the preset id, or `undefined` for {@link defaultId}.
546
- * @returns the resolved preset.
547
- * @throws when no configured root supplies that id.
514
+ /** Read every declared preset, including activation failures.
515
+ * @returns Display metadata and loading diagnostics.
548
516
  */
549
- async resolve(id?: string): Promise<AgentPreset>
550
-
551
- /**
552
- * Compose one agent from a preset: ensure the preset's standing mount, then
553
- * parent the agent's scope key to it so the mount's registrations and
554
- * listeners cover this agent.
555
- *
556
- * Call from the agent factory's `setup(agentCtx)`; a rejection there rolls
557
- * the agent creation back, so a broken preset never yields a half-composed
558
- * session.
559
- * @param agentCtx - the agent's scope context.
560
- * @param id - the preset id, or `undefined` for {@link defaultId}.
561
- * @returns the preset that was composed, for the caller to record.
562
- * @throws when the preset is unknown or its composition is unusable.
563
- */
564
- async mount(agentCtx: Context, id?: string): Promise<AgentPreset>
565
-
566
- /**
567
- * Join one agent to the SAME standing composition another already runs on.
568
- *
569
- * This is how a child agent inherits its parent's capabilities. It is a bind,
570
- * not a mount: the parent's generation is already composed, so the child gets
571
- * that exact instance — the same plugin objects, the same tool registrations,
572
- * the same prompt sections. Re-resolving the parent's preset by id instead
573
- * would re-read the roster, and a composition file edited since the parent
574
- * started would hand the child a DIFFERENT generation than the one its
575
- * parent's history was produced under (and a preset deleted since would fail
576
- * the child outright while its parent keeps running).
577
- *
578
- * Synchronous, and with no composition failure mode of its own — it reads no
579
- * roster, mounts nothing, and touches no file — which is what lets a child
580
- * creation window use it: the two in-process subagent drivers compose their
581
- * children inside a synchronous `setup`. It still rejects a caller error, as
582
- * the `@throws` below record.
583
- *
584
- * A parent that joined no preset — a rosterless deployment — yields no join
585
- * and no error: there, the model-facing rows sit in the host composition and
586
- * the child already sees them through the global layer.
587
- * @param agentCtx - the joining agent's scope context.
588
- * @param parentCtx - the scope context of the agent whose composition to join.
589
- * @returns the preset id joined, or undefined when the parent joined none.
590
- * @throws when `agentCtx` carries no scope, or has already joined a preset.
591
- */
592
- composeFrom(agentCtx: Context, parentCtx: Context): string | undefined
593
-
594
- /**
595
- * The preset one live agent runs on.
596
- *
597
- * Read from the live scope chain rather than from the session, so it answers
598
- * for an agent whose session has not recorded a preset yet — a child agent
599
- * whose durable header is being built from its parent's composition.
600
- * @param agentCtx - the agent's scope context.
601
- * @returns the preset id, or undefined when the agent joined none.
602
- */
603
- composedPreset(agentCtx: Context): string | undefined
517
+ async list(): Promise<AgentPreset[]>
604
518
 
605
- /**
606
- * Read one preset's composition text.
607
- * @param id - the preset id.
608
- * @returns the composition exactly as stored.
609
- * @throws when no configured root supplies that id.
519
+ /** Read the selection roster.
520
+ * @returns Current presets, each marked when it is the default.
610
521
  */
611
- async read(id: string): Promise<string>
522
+ @Remote('list') async remoteExportList(): Promise<AgentPresetRoster>
612
523
 
613
- /**
614
- * One preset's composition text with the roster row it belongs to.
615
- * @param agentPreset - the preset id.
616
- * @returns the composition beside its trust and published metadata.
617
- * @throws {RemoteError} `gateway/bad-request` for an empty id, or
618
- * `agent-preset/not-found` when no configured root supplies it.
524
+ /** Resolve an identity without starting an Agent.
525
+ * @param id Explicit preset or the current default.
526
+ * @returns Current metadata, including failure when activation failed.
619
527
  */
620
- @Remote('read') async readDocument(agentPreset: string): Promise<AgentPresetDocument>
528
+ async resolve(id?: string): Promise<AgentPreset>
621
529
 
622
- /**
623
- * Create a locally authored preset by copying an existing one whole.
624
- *
625
- * Copy is the only authoring write. Composition text never crosses this
626
- * seam: the source is named by id and its directory is copied as it stands,
627
- * so the copy is exactly as loadable as its source and authoring grants no
628
- * capability the roster did not already carry. The copy is NOT mounted to
629
- * validate — a source that mounts today yields a copy that mounts today.
630
- * @param from - the preset the copy starts from; shipped presets are the
631
- * primary source, so any trust is accepted.
632
- * @param id - the new preset's id, which becomes its directory name.
633
- * @param name - display name for the copy; absent falls back to the id.
634
- * @throws when the source is unknown, the id is unusable or already taken,
635
- * or the deployment configures no writable root.
530
+ /** Read one declaration's child plugin list as YAML, for viewing only.
531
+ * @param agentPreset Preset identity.
532
+ * @returns The declared composition beside its published metadata.
636
533
  */
637
- async copy(from: string, id: string, name?: string): Promise<void>
534
+ @Remote('read') readDocument(agentPreset: string): Promise<AgentPresetDocument>
638
535
 
639
- /**
640
- * Copy one preset through the Remote API.
641
- * @param from - the source preset id.
642
- * @param id - the new preset id.
643
- * @param name - the copy's optional display name.
644
- * @returns once the copy is stored.
645
- * @throws {RemoteError} with the corresponding stable preset code and
646
- * details when the copy is refused.
536
+ /** Bind an unpublished Agent to the current preset revision.
537
+ * @param ctx Agent context from its setup callback.
538
+ * @param id Requested preset, or the default.
539
+ * @returns Bound preset identity.
647
540
  */
648
- @Remote('copy') async remoteExportCopy(from: string, id: string, name?: string): Promise<void>
541
+ async mount(ctx: Context, id?: string): Promise<AgentPreset>
649
542
 
650
- /**
651
- * Delete a locally authored preset.
652
- *
653
- * @param id - the preset id.
654
- * @throws when the preset is unknown or ships with the deployment.
543
+ /** Join a child to the exact revision retained by its parent.
544
+ * @param ctx Child Agent context.
545
+ * @param parent Parent Agent context.
546
+ * @returns Inherited preset id, or undefined in a preset-free composition.
655
547
  */
656
- async remove(id: string): Promise<void>
548
+ composeFrom(ctx: Context, parent: Context): string | undefined
657
549
 
658
- /**
659
- * Delete one preset through the Remote API.
660
- * @param id - the preset id.
661
- * @returns once the preset is deleted.
662
- * @throws {RemoteError} with the corresponding stable preset code and
663
- * details when deletion is refused.
550
+ /** Read the preset a live Agent uses.
551
+ * @param ctx Agent context.
552
+ * @returns Its preset id, if bound.
664
553
  */
665
- @Remote('deletePreset') async remoteExportDelete(id: string): Promise<void>
554
+ composedPreset(ctx: Context): string | undefined
666
555
 
667
- /**
668
- * One agent's instance of a service its preset mounted.
669
- *
670
- * A preset publishes services behind `isolate` realms, which are invisible
671
- * outside the group that declares them — including to the host. This is how a
672
- * caller holding the agent reads one anyway: a request that is ABOUT a
673
- * session but arrives from outside it, which is every browser RPC.
674
- *
675
- * Read addressing only. A host row that `inject`s a service cannot use this,
676
- * because injection resolves before any session exists and has no agent to
677
- * key by; such a service belongs on the host plane instead.
678
- * @param agent - the agent whose composition to look inside.
679
- * @param name - the service name as the preset's rows resolve it.
680
- * @returns the agent's instance, or undefined when its preset mounts none.
556
+ /** Read a service supplied inside an Agent's isolated preset group.
557
+ * @param agent Agent whose composition is queried.
558
+ * @param name Cordis service name.
559
+ * @returns The service, or undefined.
681
560
  */
682
561
  serviceFor<K extends string & keyof Context>(agent: { ctx: Context }, name: K): Context[K] | undefined
683
562
 
684
- /**
685
- * Re-link one agent to a different preset's standing composition.
686
- *
687
- * Only valid while the agent has produced nothing: swapping tools mid
688
- * conversation would leave logged tool calls the new composition cannot
689
- * make. The CALLER owns that check — this method does not read session
690
- * history.
691
- *
692
- * The swap is a parent re-link, not an unmount: standing mounts are shared
693
- * and permanent, so the old composition stays for its other agents and the
694
- * new one is ensured BEFORE the link moves. An unknown or unusable preset
695
- * therefore throws with the agent exactly as it was — there is no torn-down
696
- * state to restore. The re-link runs through the binding this roster kept
697
- * from the agent's mount — dsh-scope's only re-link authority. An agent
698
- * that never composed one has nothing to re-link: the switch is then the
699
- * agent's first bind, exactly a mount. A committed re-link emits
700
- * `tools/change` because changing the parent scope changes the Agent's
701
- * resolved tool set without adding or removing registry entries.
702
- * @param agentCtx - the agent's scope context.
703
- * @param id - the preset to compose the agent from instead.
704
- * @returns the preset now installed.
705
- * @throws when the preset is unknown or its composition is unusable.
563
+ /** Rebind a blank Agent; the caller owns the blank-session check.
564
+ * @param ctx Agent context.
565
+ * @param id Requested preset.
566
+ * @returns The bound identity.
706
567
  */
707
- async recompose(agentCtx: Context, id: string): Promise<AgentPreset>
568
+ async recompose(ctx: Context, id: string): Promise<AgentPreset>
708
569
 
709
- /**
710
- * Compose a blank session's agent from a different preset and record it.
711
- * @param agent - the session's live agent, resolved from the wire identity.
712
- * @param agentPreset - the preset to compose the agent from instead.
713
- * @returns the preset id that was recorded.
714
- * @throws {RemoteError} with `gateway/bad-request`, `agent-preset/locked`,
715
- * `agent-preset/not-found`, or `agent-preset/invalid` when refused.
570
+ /** Select a preset before a session starts its first turn.
571
+ * @param agent Target Agent.
572
+ * @param agentPreset Requested identity.
573
+ * @returns Committed preset identity.
716
574
  */
717
575
  @Remote('select') async select(agent: Agent, agentPreset: string): Promise<string>
718
576
 
719
- /**
720
- * The standing scope key of one preset, for a host reader with no agent.
721
- *
722
- * A cold transcript read resolves tool presenters against the composition
723
- * the session recorded, and the standing mount makes that possible without
724
- * resuming anything: ensuring the mount composes plugins but starts no
725
- * agent, no session, and no turn.
726
- * @param id - the preset id, or `undefined` for {@link defaultId}.
727
- * @returns the standing scope key readers pass as a registry view scope.
728
- * @throws when the preset is unknown or its composition is unusable.
577
+ /** Read current registrations for cold transcript presentation.
578
+ * @param id Preset identity or the default.
579
+ * @returns A revision lease; dispose it after the scoped read completes.
580
+ */
581
+ async acquireScope(id?: string): Promise<{ key: ScopeKey } & AsyncDisposable>
582
+
583
+ /** Read plugin rows without creating an Agent.
584
+ * @returns Current declaration metadata and activation states.
729
585
  */
730
- async standingKeyFor(id?: string): Promise<ScopeKey>
586
+ compositionInventory(): Promise<AgentPresetComposition[]>
731
587
  ```
732
588
 
733
589
  Types: [ScopeKey](scope.zh.md)
734
590
 
735
- Source: [`packages/preset/agent-presets/src/index.ts`](../../packages/preset/agent-presets/src/index.ts)
591
+ Source: [`packages/preset/agent-preset-registry/src/index.ts`](../../packages/preset/agent-preset-registry/src/index.ts)
736
592
 
737
593
  <a id="ctxagents--agentregistry"></a>
738
594
 
@@ -1261,5 +1117,5 @@ One session committed a different agent preset to its durable log. Consumers inv
1261
1117
  'agent-preset/selected'(sessionId: SessionId, agentPreset: string): void
1262
1118
  ```
1263
1119
 
1264
- Source: [`packages/preset/agent-presets/src/types.ts`](../../packages/preset/agent-presets/src/types.ts)
1120
+ Source: [`packages/preset/agent-preset-registry/src/types.ts`](../../packages/preset/agent-preset-registry/src/types.ts)
1265
1121
  <!-- END GENERATED cordis-surface -->
@@ -1,6 +1,25 @@
1
- # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
2
- # side as of the last confirmed-consistent state. Both languages carry equal authority;
3
- # after editing either side, bring the other along and re-record with:
1
+ # Bilingual-pair consistency record for credentials.md (docs/i18n/README.md): per heading
2
+ # section, a hash of its English and Chinese blocks outside code blocks and generated regions.
3
+ # After editing either side, bring the other along and re-record with:
4
4
  # pnpm run verify-translation-pairing --write docs/subsystems/credentials.md
5
- credentials.md: 5ae53a19140f423e1c52334c40f25fca7d3ed754
6
- credentials.zh.md: b6d5d8eb3960edd68a96a32a41c591e61f2c8b5e
5
+ /user-credentials:
6
+ en: 4589c745baf092c7
7
+ zh: 3a782e6a06825201
8
+ /user-credentials/identity:
9
+ en: aba5a25c34e229cc
10
+ zh: 96493f925f60b533
11
+ /user-credentials/resolution:
12
+ en: baaab4bca76bea6b
13
+ zh: 54ccdc03ffd44f63
14
+ /user-credentials/description:
15
+ en: 17573160805d3014
16
+ zh: 36a058a96f45df23
17
+ /user-credentials/change-commits:
18
+ en: 464315a953330eb2
19
+ zh: d9815591f3abc2cb
20
+ /user-credentials/embedded-platform-credentials:
21
+ en: 4f15fa7684abd4cc
22
+ zh: 9f2cde11303e9e02
23
+ /user-credentials/cordis-api/deepseek-account-events/deepseek-account-signed-out-emit:
24
+ en: 314e5b36f51b2c64
25
+ zh: 0e1cb3fe5adf5ecd
@@ -53,6 +53,14 @@ interface CredentialInfo {
53
53
 
54
54
  `credentials/reference-updated (ref)` fires after a committed change to a provider-managed source — a `set`, an `unset`, or an external edit observed in storage. Ambient process-environment changes are not observable and never emit. Consumers do not need the event (they re-resolve per operation); it exists for configuration surfaces refreshing a "configured" badge.
55
55
 
56
+ ## Embedded Platform credentials
57
+
58
+ PlatformSession is a Host-only snapshot from getPlatformSession: origin names the configured Platform issuer and token contains its stored account credential. userId repeats the stable account ID from the most recent successful getProfile, and is null until one succeeds or when that profile carries no ID. The snapshot reuses that ID without issuing a profile request of its own, so an unknown ID leaves userId null instead of delaying the caller; a profile read whose stable ID first becomes available or changes notifies watch subscribers, which lets identity consumers re-read the snapshot. Consumers key persistent browser storage by origin and userId and fall back to temporary storage for null. Signed-out accounts and credentials changed during the credential read return no snapshot; a mismatched issuer fails. Native consumers own document invalidation when credentials change. This snapshot is excluded from account-controller RPC, AccountView, and AccountDetails.
59
+
60
+ AccountDetails.balance projects recharge wallets in value and promotional wallets in bonusWallets, with independent currency and decimal balance strings. Failed queries contain no wallet arrays.
61
+
62
+ Bonus notification queries return an AccountBonusBatch with the current Platform account id and eligible orders in server order. AccountBonusNotification retains the server message and expiry without projecting credentials. Acknowledgment carries the expected account id and order id; the Host refuses it after an account change. Both notification operations use the initiating UI language through x-client-locale, without a language query parameter.
63
+
56
64
  <!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
57
65
 
58
66
  <a id="cordis-surface"></a>
@@ -253,6 +261,111 @@ Host service backing the generated `ctx.remote.credentials` namespace. It carrie
253
261
 
254
262
  Source: [`packages/api/settings-controller/src/credentials.ts`](../../packages/api/settings-controller/src/credentials.ts)
255
263
 
264
+ <a id="ctxdeepseekaccount--deepseekaccount-abstract-seam"></a>
265
+
266
+ ### `ctx.deepseekAccount` — `DeepSeekAccount` (abstract seam)
267
+
268
+ Account operations; only Host consumers can obtain a request credential.
269
+
270
+ ```ts cordis-catalog
271
+ /**
272
+ * Read stored-account presence and the latest login attempt.
273
+ * @returns a snapshot without credentials or PKCE secrets.
274
+ */
275
+ abstract getState(): Promise<AccountView>
276
+
277
+ /**
278
+ * Query Platform profile independently of wallet balances.
279
+ * A ready result whose stable profile ID first becomes available or changes notifies watch
280
+ * consumers, so identity consumers re-read getPlatformSession; repeated IDs stay silent.
281
+ * @param client - identity of the requesting UI for this call.
282
+ * @returns profile outcome, or null if signed out or the grant changed during the query.
283
+ */
284
+ abstract getProfile(client: AccountClientMetadata): Promise<AccountDetails['profile'] | null>
285
+
286
+ /**
287
+ * Query Platform recharge and bonus wallet balances independently of profile data.
288
+ * @param client - identity of the requesting UI for this call.
289
+ * @returns balance outcome, or null if signed out or the grant changed during the query.
290
+ */
291
+ abstract getBalance(client: AccountClientMetadata): Promise<AccountDetails['balance'] | null>
292
+
293
+ /**
294
+ * Query the granted bonuses Platform has not yet recorded as displayed.
295
+ * @param client - identity of the requesting UI for this call; its language selects the server-authored message.
296
+ * @returns bonuses with their account, or null if signed out or the grant changed during the query.
297
+ */
298
+ abstract getUnnotifiedBonuses(client: AccountClientMetadata): Promise<AccountBonusBatch | null>
299
+
300
+ /**
301
+ * Record one displayed bonus as notified for the account it belongs to.
302
+ * @param accountId - account the notification was read for; a different current account is never acknowledged.
303
+ * @param orderId - granted bonus order the user saw.
304
+ * @param client - identity of the requesting UI for this call.
305
+ * @returns true once Platform records the acknowledgement; false if signed out or the account changed.
306
+ */
307
+ abstract ackBonusNotified(accountId: AccountUserId, orderId: AccountBonusOrderId, client: AccountClientMetadata): Promise<boolean>
308
+
309
+ /**
310
+ * Join an active attempt or start browser authorization.
311
+ * @param client - identity of the requesting UI; a new attempt captures it, and joining retains the original attempt's identity.
312
+ * @param callbackOrigin - browser-accessible loopback HTTP origin, including any SSH local port.
313
+ * @param loginSource - initiating UI, used to return from a failed exchange.
314
+ * @returns the initial snapshot without waiting for browser approval.
315
+ */
316
+ abstract startSignIn(client: AccountClientMetadata, callbackOrigin: string, loginSource: 'web' | 'desktop'): Promise<AccountView>
317
+
318
+ /**
319
+ * Cancel only the named attempt; committing attempts settle before returning.
320
+ * @param id - attempt identity from this Host.
321
+ * @returns state after cancellation or an already-started commit.
322
+ */
323
+ abstract cancelSignIn(id: SignInAttemptId): Promise<AccountView>
324
+
325
+ /**
326
+ * Remove the local grant while retaining API keys; the provider revokes it in the background.
327
+ * @param client - identity of the requesting UI, captured for the background revocation retries.
328
+ * @returns the signed-out state after local removal; remote failures never restore the grant.
329
+ */
330
+ abstract signOut(client: AccountClientMetadata): Promise<AccountView>
331
+
332
+ /**
333
+ * Subscribe to snapshots including a complete initial state.
334
+ * @param signal - subscription lifetime; ending it never cancels login.
335
+ * @returns complete snapshots as account state changes.
336
+ */
337
+ abstract watch(signal: AbortSignal): AsyncIterable<AccountView>
338
+
339
+ /**
340
+ * Resolve a credential only for the inference origin allowed by the provider.
341
+ * @param url - actual request destination or API base URL.
342
+ * @returns stored token, or undefined for other origins or a signed-out account.
343
+ */
344
+ abstract resolveToken(url: string): Promise<string | undefined>
345
+
346
+ /**
347
+ * Remove an inference-rejected token only while it still matches the stored login.
348
+ * @param token - token captured by the rejected inference request.
349
+ * @returns after matching credentials are removed and the expiry notification is emitted.
350
+ */
351
+ abstract rejectToken(token: string): Promise<void>
352
+
353
+ /**
354
+ * Read credentials for the configured Platform origin, bound to their issuing environment, and
355
+ * pair them with the account ID from the last successful profile read; no profile request is made.
356
+ * @returns a Host-only snapshot, or null while signed out or when the credential changed during the read.
357
+ */
358
+ abstract getPlatformSession(): Promise<PlatformSession | null>
359
+
360
+ /**
361
+ * Read existing login identity without creating a device or returning credentials.
362
+ * @returns optional device/account identifiers and the provider's OS version string.
363
+ */
364
+ abstract getDeviceIdentity(): Promise<{ deviceId?: string; userId?: AccountUserId; osVersion: string }>
365
+ ```
366
+
367
+ Source: [`packages/credentials/deepseek-account/src/index.ts`](../../packages/credentials/deepseek-account/src/index.ts)
368
+
256
369
  <a id="authorization-events"></a>
257
370
 
258
371
  ### `authorization/*` events
@@ -307,7 +420,7 @@ Source: [`packages/credentials/credentials/src/types.ts`](../../packages/credent
307
420
 
308
421
  #### `credentials/reference-updated` — emit
309
422
 
310
- Committed change to a provider-managed credential source: a `set`, an `unset`, or an external edit observed in storage. Ambient process-environment changes are not observable and never emit. Listener failures are contained and logged — a sync throw and an async rejection alike — without changing the committed operation's outcome, except `INVARIANT`-coded failures, which rethrow after every listener ran; that rethrow reaches the emitter only from synchronous listeners, so invariant checks on this event must not be async functions.
423
+ Committed change to a provider-managed credential source: a `set`, an `unset`, or an external edit observed in storage. Ambient process-environment changes are not observable and never emit. Listener failures are contained and logged — a sync throw and an async rejection alike — without changing the committed operation's outcome.
311
424
 
312
425
  ```ts cordis-catalog
313
426
  /**
@@ -315,10 +428,7 @@ Committed change to a provider-managed credential source: a `set`, an `unset`, o
315
428
  * `unset`, or an external edit observed in storage. Ambient
316
429
  * process-environment changes are not observable and never emit. Listener
317
430
  * failures are contained and logged — a sync throw and an async rejection
318
- * alike — without changing the committed operation's outcome, except
319
- * `INVARIANT`-coded failures, which rethrow after every listener ran;
320
- * that rethrow reaches the emitter only from synchronous listeners, so
321
- * invariant checks on this event must not be async functions.
431
+ * alike — without changing the committed operation's outcome.
322
432
  * @param ref - the reference whose stored value changed.
323
433
  * @mode emit
324
434
  */
@@ -326,4 +436,57 @@ Committed change to a provider-managed credential source: a `set`, an `unset`, o
326
436
  ```
327
437
 
328
438
  Source: [`packages/credentials/credentials/src/types.ts`](../../packages/credentials/credentials/src/types.ts)
439
+
440
+ <a id="deepseek-account-events"></a>
441
+
442
+ ### `deepseek-account/*` events
443
+
444
+ <a id="deepseek-accountmodel-sign-in-required--emit"></a>
445
+
446
+ #### `deepseek-account/model-sign-in-required` — emit
447
+
448
+ An account model request requires the user to sign in.
449
+
450
+ ```ts cordis-catalog
451
+ /** An account model request requires the user to sign in.
452
+ * @mode emit
453
+ */
454
+ 'deepseek-account/model-sign-in-required'(): void
455
+ ```
456
+
457
+ Source: [`packages/credentials/deepseek-account/src/types.ts`](../../packages/credentials/deepseek-account/src/types.ts)
458
+
459
+ <a id="deepseek-accountsession-expired--emit"></a>
460
+
461
+ #### `deepseek-account/session-expired` — emit
462
+
463
+ Server rejection removed the current account credential; this notification is not replayed.
464
+
465
+ ```ts cordis-catalog
466
+ /** Server rejection removed the current account credential; this notification is not replayed.
467
+ * @mode emit
468
+ */
469
+ 'deepseek-account/session-expired'(): void
470
+ ```
471
+
472
+ Source: [`packages/credentials/deepseek-account/src/types.ts`](../../packages/credentials/deepseek-account/src/types.ts)
473
+
474
+ <a id="deepseek-accountsigned-out--emit"></a>
475
+
476
+ #### `deepseek-account/signed-out` — emit
477
+
478
+ Local grant removal has completed.
479
+
480
+ ```ts cordis-catalog
481
+ /** Local grant removal has completed.
482
+ * @mode emit
483
+ */
484
+ 'deepseek-account/signed-out'(): void
485
+ ```
486
+
487
+ Source: [`packages/credentials/deepseek-account/src/index.ts`](../../packages/credentials/deepseek-account/src/index.ts)
329
488
  <!-- END GENERATED cordis-surface -->
489
+
490
+ The account Service Definition exposes getState, getProfile, getBalance, getUnnotifiedBonuses, ackBonusNotified, startSignIn, cancelSignIn, signOut, watch, and Host-only resolveToken and getPlatformSession. The platform provider implements it with an AuthorizationFlow and a private GrantRecord. AccountView distinguishes stored presence from server validation; attempt IDs bind cancellation to one local flow. See [the account package](../../packages/credentials/deepseek-account/README.md).
491
+
492
+ `AccountClientMetadata` carries `version` from the caller’s `DSH_CLIENT_VERSION`, its active UI `locale`, and `timezoneOffsetSeconds` sampled when the operation begins. The offset is local time minus UTC in seconds: UTC+8 is `28800`. It contains no credentials. Login attempts retain their initiating metadata through exchange and cancellation; sign-out retains its metadata for revocation retries.