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
@@ -84,6 +84,8 @@ interface InvocationDescriptor {
84
84
  readonly method: string
85
85
  /** Service member invoked when the exported method name is an alias. */
86
86
  readonly implementation?: string
87
+ /** Absent for unary calls; stream calls validate and deliver every yielded item. */
88
+ readonly mode?: 'stream'
87
89
  /** Receiver selection mode. */
88
90
  readonly invocation:
89
91
  | { readonly kind: 'direct' }
@@ -95,7 +97,7 @@ interface InvocationDescriptor {
95
97
  }
96
98
  /** Optional consuming-Context projection for one direct lookup parameter. */
97
99
  readonly scope?: {
98
- /** Context kind whose Client binder supplies the identity. */
100
+ /** Context kind whose Client adapter supplies the identity. */
99
101
  readonly context: string
100
102
  /** Lookup parameter wire field replaced by the Context identity. */
101
103
  readonly wire: string
@@ -107,7 +109,7 @@ interface InvocationDescriptor {
107
109
  /** Reserved final Host method parameter. */
108
110
  readonly parameter: 'signal'
109
111
  }
110
- /** Codec for the resolved method result. */
112
+ /** Codec for the unary result or each yielded stream item. */
111
113
  readonly result: TypertCodec
112
114
  /** Source declaration used only for diagnostics. */
113
115
  readonly sourceLocation?: InvocationSourceLocation
@@ -137,7 +139,7 @@ interface TypertRemoteNamespaceMap {}
137
139
 
138
140
  ## Host Gateway
139
141
 
140
- Connection decodes its carrier envelope before calling `ctx.typertGateway`. The request carries exact named wire fields and the carrier's cancellation signal separately; infrastructure and boundary failures use the Gateway's in-process error taxonomy, ordinary exceptions are folded by the RPC adapter into the transport's `internal` error code, and existing RPC errors carried by lookup policy through `TypertLookupFailure` are returned unchanged.
142
+ Connection decodes its carrier envelope before calling `ctx.typertGateway`. The request carries exact named wire fields and the carrier's cancellation signal separately; infrastructure and boundary failures ride `TypertGatewayError`, whose `gateway/*` codes are ordinary `RemoteError` codes, so the RPC adapter passes every structurally identified `RemoteError` through with its code and details intact and folds only unrecognized exceptions into `gateway/internal`.
141
143
 
142
144
  ```ts type-equiv
143
145
  /** One Remote method request after a carrier has decoded its envelope. */
@@ -156,35 +158,53 @@ interface InvokeRemoteRequest {
156
158
  ```ts type-equiv
157
159
  /** Stable infrastructure and boundary failures emitted before or after business execution. */
158
160
  type TypertGatewayErrorCode =
159
- | 'ambiguous-endpoint'
160
- | 'arguments-invalid'
161
- | 'binding-invalid'
162
- | 'context-failed'
163
- | 'context-not-found'
164
- | 'context-unavailable'
165
- | 'definition-unavailable'
166
- | 'input-invalid'
167
- | 'invocation-unavailable'
168
- | 'lookup-failed'
169
- | 'lookup-not-found'
170
- | 'lookup-unavailable'
171
- | 'method-unavailable'
172
- | 'provider-mismatch'
173
- | 'result-invalid'
174
- | 'service-unavailable'
175
- | 'signature-invalid'
161
+ | 'gateway/ambiguous-endpoint'
162
+ | 'gateway/arguments-invalid'
163
+ | 'gateway/binding-invalid'
164
+ | 'gateway/context-failed'
165
+ | 'gateway/context-not-found'
166
+ | 'gateway/context-unavailable'
167
+ | 'gateway/definition-unavailable'
168
+ | 'gateway/input-invalid'
169
+ | 'gateway/invocation-unavailable'
170
+ | 'gateway/lookup-failed'
171
+ | 'gateway/lookup-not-found'
172
+ | 'gateway/lookup-unavailable'
173
+ | 'gateway/method-unavailable'
174
+ | 'gateway/provider-mismatch'
175
+ | 'gateway/result-invalid'
176
+ | 'gateway/service-unavailable'
177
+ | 'gateway/signature-invalid'
176
178
  ```
177
179
 
178
180
  ```ts type-equiv
179
181
  /** Host dispatcher consumed by Connection adapters. */
180
182
  interface TypertGateway {
183
+ /** Carrier adapter shared by WebSocket and in-process transports. */
184
+ readonly wireStream: TypertGatewayWireStream
185
+ /**
186
+ * Register the application-selected forwarded-event source.
187
+ * @param source - stream factory installed by the Remote assembly.
188
+ * @param host - stable Host facts included in each Client generation's opening frame.
189
+ * @returns disposer removing this exact source and cancelling its active streams.
190
+ */
191
+ registerRemoteEvents(
192
+ source: TypertRemoteEventSource,
193
+ host: RemoteEventHostInfo,
194
+ ): () => Promise<void>
181
195
  /**
182
196
  * Invoke one live Remote method without assuming a carrier or response envelope.
183
197
  * @param request - decoded endpoint and named wire arguments.
184
- * @returns the validated business result.
198
+ * @returns the business result without output decoding.
185
199
  * @throws {@link TypertGatewayError} for dispatch, provider, or boundary failures; lookup-policy and business errors retain identity.
186
200
  */
187
201
  invoke(request: InvokeRemoteRequest): Promise<unknown>
202
+ /**
203
+ * Open one live stream Remote method without assuming a physical carrier.
204
+ * @param request - decoded endpoint and named wire arguments.
205
+ * @returns a cancellation-aware iterable over the business results.
206
+ */
207
+ stream(request: InvokeRemoteRequest): Promise<AsyncIterable<unknown>>
188
208
  }
189
209
  ```
190
210
 
@@ -202,26 +222,15 @@ interface TypertClientRemote extends TypertRemoteNamespaceMap {
202
222
  */
203
223
  $mount(contribution: TypertRemoteContribution): Promise<TypertDisposer>
204
224
  /**
205
- * Subscribe to one forwarded Host event; delivery is one-way, in registration
206
- * order, and isolates a throwing listener from the rest.
225
+ * Subscribe to one forwarded Host event. Notifications run in registration
226
+ * order and isolate failures; scoped waterfalls return, delegate through
227
+ * `next()`, or reject the Host dispatch.
207
228
  * @template Event - forwarded event name selected by the Host assembly.
208
229
  * @param event - forwarded Host event name, unchanged on the wire.
209
- * @param listener - receives the Host's argument list as declared by Cordis `Events`.
230
+ * @param listener - receives the Client projection of the Cordis `Events` declaration.
210
231
  * @returns disposer owned by the calling fiber.
211
232
  */
212
- $on<Event extends TypertRemoteEvent>(event: Event, listener: Events[Event]): () => void
213
- /**
214
- * Hand one decoded forwarded frame to the subscription table. The carrier
215
- * owning the Host frame sink calls this; a consumer subscribes with
216
- * {@link TypertClientRemote.$on} and never calls it.
217
- *
218
- * `event` is a plain string because this is the wire boundary: the name is
219
- * whatever the Host assembly's allowlist selected, and one nobody subscribed
220
- * to is dropped silently.
221
- * @param event - forwarded Host event name, exactly as the Host emitted it.
222
- * @param args - the Host argument list, already JSON-decoded.
223
- */
224
- $dispatch(event: string, args: readonly unknown[]): void
233
+ $on<Event extends TypertRemoteEvent>(event: Event, listener: TypertClientEventListener<Event>): () => void
225
234
  }
226
235
  ```
227
236
 
@@ -231,24 +240,7 @@ interface TypertClientRemote extends TypertRemoteNamespaceMap {
231
240
 
232
241
  ## Cordis API
233
242
 
234
- 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).
235
-
236
- <a id="ctxapiproxy--apiproxy"></a>
237
-
238
- ### `ctx.apiProxy` — `ApiProxy`
239
-
240
- Root interface of the unified API. New client-request domain = one new file pair + one field here + one map row.
241
-
242
- ```ts cordis-catalog
243
- /**
244
- * Response entry for server requests; not a domain method.
245
- * @param message - Client response carrying the server request's rpcId.
246
- * @returns Transport receipt for the response delivery.
247
- */
248
- respond(message: ClientResponse): Promise<RpcReceipt>
249
- ```
250
-
251
- Source: [`packages/host/apiproxy/src/api/index.ts:22`](../../packages/host/apiproxy/src/api/index.ts)
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`) — 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).
252
244
 
253
245
  <a id="ctxtypert--typertregistry"></a>
254
246
 
@@ -314,7 +306,7 @@ toJSONSchema(key: string, params?: z.core.ToJSONSchemaParams): z.core.JSONSchema
314
306
 
315
307
  Types: [TypertContribution](invariants.md) · [TypertFace](invariants.md) · [TypertPackageFilter](invariants.md) · [TypertPackageRecord](invariants.md) · [TypertSchemaFilter](invariants.md) · [TypertSchemaRecord](invariants.md)
316
308
 
317
- Source: [`packages/typert/registry/src/service.ts:446`](../../packages/typert/registry/src/service.ts)
309
+ Source: [`packages/typert/registry/src/service.ts`](../../packages/typert/registry/src/service.ts)
318
310
 
319
311
  <a id="ctxtypertgateway--typertgatewayservice"></a>
320
312
 
@@ -323,14 +315,29 @@ Source: [`packages/typert/registry/src/service.ts:446`](../../packages/typert/re
323
315
  Resolve strict generated definitions or conservative SRC markers against current Cordis Services and Typert providers.
324
316
 
325
317
  ```ts cordis-catalog
318
+ /**
319
+ * Register the sole application-selected forwarded-event source.
320
+ * @param source - stream factory installed by the Remote assembly.
321
+ * @param host - stable Host facts included in each Client generation's opening frame.
322
+ * @returns disposer removing this source and cancelling its active streams.
323
+ */
324
+ registerRemoteEvents( source: TypertRemoteEventSource, host: RemoteEventHostInfo, ): () => Promise<void>
325
+
326
326
  /**
327
327
  * Invoke one live Remote method through strict generated reflection or SRC markers.
328
328
  * @param request - decoded endpoint and exact named wire arguments.
329
- * @returns the validated business result.
329
+ * @returns the business result without output decoding.
330
330
  * @throws {@link TypertGatewayError} for dispatch, provider, or boundary failures; lookup-policy and business errors retain identity.
331
331
  */
332
332
  async invoke(request: InvokeRemoteRequest): Promise<unknown>
333
+
334
+ /**
335
+ * Open one live stream Remote method without assuming a physical carrier.
336
+ * @param request - decoded endpoint and named wire arguments.
337
+ * @returns a cancellation-aware iterable over the business results.
338
+ */
339
+ async stream(request: InvokeRemoteRequest): Promise<AsyncIterable<unknown>>
333
340
  ```
334
341
 
335
- Source: [`packages/api/gateway/src/index.ts:90`](../../packages/api/gateway/src/index.ts)
342
+ Source: [`packages/api/gateway/src/index.ts`](../../packages/api/gateway/src/index.ts)
336
343
  <!-- END GENERATED cordis-surface -->
@@ -2,7 +2,7 @@
2
2
 
3
3
  [English](typert.md) | 中文
4
4
 
5
- 以下类型由生成的 Remote 产物、Host Gateway 与消费方 API assembly 共用。[Typert Gateway Agent Note](../../.agents/notes/implemented/architecture/2026-08-02-typert-remote-method-calls.md) 负责架构与传输决策;本页记录 [`dsh-typert-protocol`](../../packages/typert/protocol/src/types.ts) 和 [`dsh-api-gateway`](../../packages/api/gateway/src/types.ts) 中公共约定的字面定义。
5
+ 以下类型由生成的 Remote 产物、Host Gateway 与消费方 API assembly 共用。[Typert Gateway Agent Note](../../.agents/notes/implemented/architecture/2026-08-02-typert-remote-method-calls.zh.md) 负责架构与传输决策;本页记录 [`dsh-typert-protocol`](../../packages/typert/protocol/src/types.ts) 和 [`dsh-api-gateway`](../../packages/api/gateway/src/types.ts) 中公共约定的字面定义。
6
6
 
7
7
  ## Lookup 与上下文声明
8
8
 
@@ -84,6 +84,8 @@ interface InvocationDescriptor {
84
84
  readonly method: string
85
85
  /** Service member invoked when the exported method name is an alias. */
86
86
  readonly implementation?: string
87
+ /** Absent for unary calls; stream calls validate and deliver every yielded item. */
88
+ readonly mode?: 'stream'
87
89
  /** Receiver selection mode. */
88
90
  readonly invocation:
89
91
  | { readonly kind: 'direct' }
@@ -95,7 +97,7 @@ interface InvocationDescriptor {
95
97
  }
96
98
  /** Optional consuming-Context projection for one direct lookup parameter. */
97
99
  readonly scope?: {
98
- /** Context kind whose Client binder supplies the identity. */
100
+ /** Context kind whose Client adapter supplies the identity. */
99
101
  readonly context: string
100
102
  /** Lookup parameter wire field replaced by the Context identity. */
101
103
  readonly wire: string
@@ -107,7 +109,7 @@ interface InvocationDescriptor {
107
109
  /** Reserved final Host method parameter. */
108
110
  readonly parameter: 'signal'
109
111
  }
110
- /** Codec for the resolved method result. */
112
+ /** Codec for the unary result or each yielded stream item. */
111
113
  readonly result: TypertCodec
112
114
  /** Source declaration used only for diagnostics. */
113
115
  readonly sourceLocation?: InvocationSourceLocation
@@ -137,7 +139,7 @@ interface TypertRemoteNamespaceMap {}
137
139
 
138
140
  ## Host Gateway
139
141
 
140
- Connection 会先解码 carrier envelope,再调用 `ctx.typertGateway`。请求将精确的具名 wire 字段与 carrier 的取消 signal 分开携带;基础设施与边界失败使用 Gateway 的进程内错误分类体系,普通异常由 RPC 适配器归并为传输层的 `internal` 错误码,lookup 策略通过 `TypertLookupFailure` 携带的既有 RPC error 则原样返回。
142
+ Connection 会先解码 carrier envelope,再调用 `ctx.typertGateway`。请求将精确的具名 wire 字段与 carrier 的取消 signal 分开携带;基础设施与边界失败由 `TypertGatewayError` 承载,其 `gateway/*` 码就是普通的 `RemoteError` 码,因此 RPC 适配器会把每个经结构识别的 `RemoteError` 连同其 code details 原样放行,只把无法识别的异常归并为 `gateway/internal`。
141
143
 
142
144
  ```ts type-equiv
143
145
  /** One Remote method request after a carrier has decoded its envelope. */
@@ -156,35 +158,53 @@ interface InvokeRemoteRequest {
156
158
  ```ts type-equiv
157
159
  /** Stable infrastructure and boundary failures emitted before or after business execution. */
158
160
  type TypertGatewayErrorCode =
159
- | 'ambiguous-endpoint'
160
- | 'arguments-invalid'
161
- | 'binding-invalid'
162
- | 'context-failed'
163
- | 'context-not-found'
164
- | 'context-unavailable'
165
- | 'definition-unavailable'
166
- | 'input-invalid'
167
- | 'invocation-unavailable'
168
- | 'lookup-failed'
169
- | 'lookup-not-found'
170
- | 'lookup-unavailable'
171
- | 'method-unavailable'
172
- | 'provider-mismatch'
173
- | 'result-invalid'
174
- | 'service-unavailable'
175
- | 'signature-invalid'
161
+ | 'gateway/ambiguous-endpoint'
162
+ | 'gateway/arguments-invalid'
163
+ | 'gateway/binding-invalid'
164
+ | 'gateway/context-failed'
165
+ | 'gateway/context-not-found'
166
+ | 'gateway/context-unavailable'
167
+ | 'gateway/definition-unavailable'
168
+ | 'gateway/input-invalid'
169
+ | 'gateway/invocation-unavailable'
170
+ | 'gateway/lookup-failed'
171
+ | 'gateway/lookup-not-found'
172
+ | 'gateway/lookup-unavailable'
173
+ | 'gateway/method-unavailable'
174
+ | 'gateway/provider-mismatch'
175
+ | 'gateway/result-invalid'
176
+ | 'gateway/service-unavailable'
177
+ | 'gateway/signature-invalid'
176
178
  ```
177
179
 
178
180
  ```ts type-equiv
179
181
  /** Host dispatcher consumed by Connection adapters. */
180
182
  interface TypertGateway {
183
+ /** Carrier adapter shared by WebSocket and in-process transports. */
184
+ readonly wireStream: TypertGatewayWireStream
185
+ /**
186
+ * Register the application-selected forwarded-event source.
187
+ * @param source - stream factory installed by the Remote assembly.
188
+ * @param host - stable Host facts included in each Client generation's opening frame.
189
+ * @returns disposer removing this exact source and cancelling its active streams.
190
+ */
191
+ registerRemoteEvents(
192
+ source: TypertRemoteEventSource,
193
+ host: RemoteEventHostInfo,
194
+ ): () => Promise<void>
181
195
  /**
182
196
  * Invoke one live Remote method without assuming a carrier or response envelope.
183
197
  * @param request - decoded endpoint and named wire arguments.
184
- * @returns the validated business result.
198
+ * @returns the business result without output decoding.
185
199
  * @throws {@link TypertGatewayError} for dispatch, provider, or boundary failures; lookup-policy and business errors retain identity.
186
200
  */
187
201
  invoke(request: InvokeRemoteRequest): Promise<unknown>
202
+ /**
203
+ * Open one live stream Remote method without assuming a physical carrier.
204
+ * @param request - decoded endpoint and named wire arguments.
205
+ * @returns a cancellation-aware iterable over the business results.
206
+ */
207
+ stream(request: InvokeRemoteRequest): Promise<AsyncIterable<unknown>>
188
208
  }
189
209
  ```
190
210
 
@@ -202,26 +222,15 @@ interface TypertClientRemote extends TypertRemoteNamespaceMap {
202
222
  */
203
223
  $mount(contribution: TypertRemoteContribution): Promise<TypertDisposer>
204
224
  /**
205
- * Subscribe to one forwarded Host event; delivery is one-way, in registration
206
- * order, and isolates a throwing listener from the rest.
225
+ * Subscribe to one forwarded Host event. Notifications run in registration
226
+ * order and isolate failures; scoped waterfalls return, delegate through
227
+ * `next()`, or reject the Host dispatch.
207
228
  * @template Event - forwarded event name selected by the Host assembly.
208
229
  * @param event - forwarded Host event name, unchanged on the wire.
209
- * @param listener - receives the Host's argument list as declared by Cordis `Events`.
230
+ * @param listener - receives the Client projection of the Cordis `Events` declaration.
210
231
  * @returns disposer owned by the calling fiber.
211
232
  */
212
- $on<Event extends TypertRemoteEvent>(event: Event, listener: Events[Event]): () => void
213
- /**
214
- * Hand one decoded forwarded frame to the subscription table. The carrier
215
- * owning the Host frame sink calls this; a consumer subscribes with
216
- * {@link TypertClientRemote.$on} and never calls it.
217
- *
218
- * `event` is a plain string because this is the wire boundary: the name is
219
- * whatever the Host assembly's allowlist selected, and one nobody subscribed
220
- * to is dropped silently.
221
- * @param event - forwarded Host event name, exactly as the Host emitted it.
222
- * @param args - the Host argument list, already JSON-decoded.
223
- */
224
- $dispatch(event: string, args: readonly unknown[]): void
233
+ $on<Event extends TypertRemoteEvent>(event: Event, listener: TypertClientEventListener<Event>): () => void
225
234
  }
226
235
  ```
227
236
 
@@ -231,24 +240,7 @@ interface TypertClientRemote extends TypertRemoteNamespaceMap {
231
240
 
232
241
  ## Cordis API
233
242
 
234
- 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).
235
-
236
- <a id="ctxapiproxy--apiproxy"></a>
237
-
238
- ### `ctx.apiProxy` — `ApiProxy`
239
-
240
- Root interface of the unified API. New client-request domain = one new file pair + one field here + one map row.
241
-
242
- ```ts cordis-catalog
243
- /**
244
- * Response entry for server requests; not a domain method.
245
- * @param message - Client response carrying the server request's rpcId.
246
- * @returns Transport receipt for the response delivery.
247
- */
248
- respond(message: ClientResponse): Promise<RpcReceipt>
249
- ```
250
-
251
- Source: [`packages/host/apiproxy/src/api/index.ts:22`](../../packages/host/apiproxy/src/api/index.ts)
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`) — 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).
252
244
 
253
245
  <a id="ctxtypert--typertregistry"></a>
254
246
 
@@ -312,9 +304,9 @@ listPackages(filter: TypertPackageFilter = {}): TypertPackageRecord[]
312
304
  toJSONSchema(key: string, params?: z.core.ToJSONSchemaParams): z.core.JSONSchema.BaseSchema
313
305
  ```
314
306
 
315
- Types: [TypertContribution](invariants.md) · [TypertFace](invariants.md) · [TypertPackageFilter](invariants.md) · [TypertPackageRecord](invariants.md) · [TypertSchemaFilter](invariants.md) · [TypertSchemaRecord](invariants.md)
307
+ Types: [TypertContribution](invariants.zh.md) · [TypertFace](invariants.zh.md) · [TypertPackageFilter](invariants.zh.md) · [TypertPackageRecord](invariants.zh.md) · [TypertSchemaFilter](invariants.zh.md) · [TypertSchemaRecord](invariants.zh.md)
316
308
 
317
- Source: [`packages/typert/registry/src/service.ts:446`](../../packages/typert/registry/src/service.ts)
309
+ Source: [`packages/typert/registry/src/service.ts`](../../packages/typert/registry/src/service.ts)
318
310
 
319
311
  <a id="ctxtypertgateway--typertgatewayservice"></a>
320
312
 
@@ -323,14 +315,29 @@ Source: [`packages/typert/registry/src/service.ts:446`](../../packages/typert/re
323
315
  Resolve strict generated definitions or conservative SRC markers against current Cordis Services and Typert providers.
324
316
 
325
317
  ```ts cordis-catalog
318
+ /**
319
+ * Register the sole application-selected forwarded-event source.
320
+ * @param source - stream factory installed by the Remote assembly.
321
+ * @param host - stable Host facts included in each Client generation's opening frame.
322
+ * @returns disposer removing this source and cancelling its active streams.
323
+ */
324
+ registerRemoteEvents( source: TypertRemoteEventSource, host: RemoteEventHostInfo, ): () => Promise<void>
325
+
326
326
  /**
327
327
  * Invoke one live Remote method through strict generated reflection or SRC markers.
328
328
  * @param request - decoded endpoint and exact named wire arguments.
329
- * @returns the validated business result.
329
+ * @returns the business result without output decoding.
330
330
  * @throws {@link TypertGatewayError} for dispatch, provider, or boundary failures; lookup-policy and business errors retain identity.
331
331
  */
332
332
  async invoke(request: InvokeRemoteRequest): Promise<unknown>
333
+
334
+ /**
335
+ * Open one live stream Remote method without assuming a physical carrier.
336
+ * @param request - decoded endpoint and named wire arguments.
337
+ * @returns a cancellation-aware iterable over the business results.
338
+ */
339
+ async stream(request: InvokeRemoteRequest): Promise<AsyncIterable<unknown>>
333
340
  ```
334
341
 
335
- Source: [`packages/api/gateway/src/index.ts:90`](../../packages/api/gateway/src/index.ts)
342
+ Source: [`packages/api/gateway/src/index.ts`](../../packages/api/gateway/src/index.ts)
336
343
  <!-- 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/user-questions.md
5
- user-questions.md: 65bf9b9bbfb3f1e1e1ebb2c2854a6b986057dd40
6
- user-questions.zh.md: ed5aa122322a5b87ec93227bfae2df524e4d8bad
5
+ user-questions.md: fbbfb1435586c7191e47a6eaa5b1783c9f172d48
6
+ user-questions.zh.md: 054ca06cd3c8a85cb35d99658c325848ea780cb5
@@ -2,7 +2,7 @@
2
2
 
3
3
  English | [中文](user-questions.zh.md)
4
4
 
5
- The user-questions seam of [dsh-user-questions](../../packages/interaction/user-questions). It is the provider-neutral vocabulary a tool or permission plugin uses when it needs the human to answer before the agent can continue. UI surfaces provide the active `UserQuestionProvider`; the host runtime relays requests to its connected client.
5
+ The user-questions seam of [dsh-user-questions](../../packages/interaction/user-questions). It is the provider-neutral vocabulary a tool or permission plugin uses when it needs the human to answer before the agent can continue. Agent-scoped waterfall listeners compose the available UI surfaces, including listeners relayed to a connected client.
6
6
 
7
7
  Source: [`packages/interaction/user-questions/src/index.ts`](../../packages/interaction/user-questions/src/index.ts)
8
8
 
@@ -74,14 +74,7 @@ interface AskUserQuestionItem {
74
74
 
75
75
  ```ts type-equiv
76
76
  /** Request for a human answer. */
77
- interface AskUserQuestionRequest {
78
- /** Questions to display. */
79
- questions: AskUserQuestionItem[]
80
- /** Exact live calling agent, when the request came from an agent tool call. */
81
- agent?: Agent
82
- /** Abort signal for the owning tool/step. */
83
- signal?: AbortSignal
84
- }
77
+ interface AskUserQuestionRequest extends AskUserQuestionRequestEvent {}
85
78
  ```
86
79
 
87
80
  ## Answer
@@ -108,17 +101,6 @@ interface AskUserQuestionAnswer {
108
101
  }
109
102
  ```
110
103
 
111
- ## Provider
112
-
113
- Only one provider may be active in a context. Provider registration is effect-bound so HMR/disposal removes the active UI.
114
-
115
- ```ts type-equiv
116
- /** UI-side provider for user questions. */
117
- interface UserQuestionProvider {
118
- ask(request: AskUserQuestionRequest): Promise<AskUserQuestionAnswer>
119
- }
120
- ```
121
-
122
104
  ## Errors
123
105
 
124
106
  `UserQuestionError` extends `HarnessError`, so `ctx.tools.execute()` preserves `{ name, code }` for model-facing tool failures such as `EMPTY_QUESTIONS`, `NO_PROVIDER`, `ASK_ABORTED`, or UI-side cancellation.
@@ -139,25 +121,17 @@ class UserQuestionError extends HarnessError {
139
121
 
140
122
  ## Cordis API
141
123
 
142
- 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).
124
+ 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).
143
125
 
144
126
  <a id="ctxuserquestions--userquestionservice"></a>
145
127
 
146
128
  ### `ctx.userQuestions` — `UserQuestionService`
147
129
 
148
- `ctx.userQuestions`: one active UI provider plus an `ask()` API.
130
+ `ctx.userQuestions`: validation plus the scoped answerer waterfall.
149
131
 
150
132
  ```ts cordis-catalog
151
133
  /**
152
- * Register the UI provider. Only one provider may be active in a context.
153
- *
154
- * @param provider UI-side implementation that collects answers.
155
- * @returns Disposer that unregisters this provider.
156
- */
157
- registerProvider(provider: UserQuestionProvider): () => void
158
-
159
- /**
160
- * Ask the active UI provider and wait for the user's answer.
134
+ * Ask the scoped answerer waterfall and wait for the user's answer.
161
135
  *
162
136
  * When a caller supplies an agent, human interaction is valid only for the
163
137
  * exact live runtime root. Runtime ownership, not durable session lineage,
@@ -167,12 +141,38 @@ registerProvider(provider: UserQuestionProvider): () => void
167
141
  *
168
142
  * @param request Questions, owner agent, and abort signal.
169
143
  * @returns The answer chosen or typed by the human.
170
- * @throws {UserQuestionError} code `CALLER_NOT_LIVE` when a supplied
171
- * agent is not the registry's exact live instance, or `DELEGATED_CALLER`
172
- * when that live agent is owned by another agent.
144
+ * @throws {UserQuestionError} code `ASK_ABORTED` when the supplied signal
145
+ * is already or becomes aborted, `CALLER_NOT_LIVE` when a supplied agent
146
+ * is not the registry's exact live instance, or `DELEGATED_CALLER` when
147
+ * that live agent is owned by another agent.
173
148
  */
174
149
  async ask(request: AskUserQuestionRequest): Promise<AskUserQuestionAnswer>
175
150
  ```
176
151
 
177
- Source: [`packages/interaction/user-questions/src/index.ts:51`](../../packages/interaction/user-questions/src/index.ts)
152
+ Source: [`packages/interaction/user-questions/src/index.ts`](../../packages/interaction/user-questions/src/index.ts)
153
+
154
+ <a id="user-questions-events"></a>
155
+
156
+ ### `user-questions/*` events
157
+
158
+ <a id="user-questionsrequest--waterfall"></a>
159
+
160
+ #### `user-questions/request` — waterfall
161
+
162
+ Ask composed answerers for structured user input. Return an answer to claim the request or call `next()` to delegate. Scope-filtered dispatch (`@deepseek-ai/dsh-scope`): agent-scoped listeners receive only that agent.
163
+
164
+ ```ts cordis-catalog
165
+ /**
166
+ * Ask composed answerers for structured user input. Return an answer to
167
+ * claim the request or call `next()` to delegate. Scope-filtered dispatch
168
+ * (`@deepseek-ai/dsh-scope`): agent-scoped listeners receive only that agent.
169
+ * @param request - pending user-question request.
170
+ * @mode waterfall
171
+ */
172
+ 'user-questions/request'( this: Scoped<Agent>, request: AskUserQuestionRequestEvent, next: () => Promise<AskUserQuestionAnswer>, ): Promise<AskUserQuestionAnswer>
173
+ ```
174
+
175
+ Types: [Agent](core.md) · [Scoped](scope.md)
176
+
177
+ Source: [`packages/interaction/user-questions/src/types.ts`](../../packages/interaction/user-questions/src/types.ts)
178
178
  <!-- END GENERATED cordis-surface -->