dsh-plugin-guide 0.1.0

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 (374) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE.md +26 -0
  3. package/README.es.md +139 -0
  4. package/README.hi.md +138 -0
  5. package/README.md +165 -0
  6. package/README.pt.md +139 -0
  7. package/README.zh-CN.md +164 -0
  8. package/SKILL.md +69 -0
  9. package/cordis.patch.yml +4 -0
  10. package/guide/links.md +92 -0
  11. package/guide/plugin-dev-guide.md +429 -0
  12. package/guide/quick-reference.es.md +176 -0
  13. package/guide/quick-reference.hi.md +176 -0
  14. package/guide/quick-reference.md +176 -0
  15. package/guide/quick-reference.pt.md +176 -0
  16. package/guide/quick-reference.zh-CN.md +175 -0
  17. package/index.js +58 -0
  18. package/package.json +83 -0
  19. package/references/community-ecosystem.md +201 -0
  20. package/references/community-repo-deep-dive.md +695 -0
  21. package/references/cordis-paper-and-community.md +326 -0
  22. package/references/harness-repo.md +654 -0
  23. package/references/official-docs/AGENTS.md +149 -0
  24. package/references/official-docs/BENCHMARK.md +3 -0
  25. package/references/official-docs/CLAUDE.md +1 -0
  26. package/references/official-docs/CONTRIBUTING.i18n.yaml +6 -0
  27. package/references/official-docs/CONTRIBUTING.md +23 -0
  28. package/references/official-docs/CONTRIBUTING.zh.md +23 -0
  29. package/references/official-docs/LICENSE +21 -0
  30. package/references/official-docs/README.i18n.yaml +6 -0
  31. package/references/official-docs/README.md +35 -0
  32. package/references/official-docs/README.zh.md +74 -0
  33. package/references/official-docs/SNAPSHOT.md +16 -0
  34. package/references/official-docs/THIRD_PARTY_NOTICES.md +192 -0
  35. package/references/official-docs/docs/AGENTS.md +75 -0
  36. package/references/official-docs/docs/agent-lifecycle.i18n.yaml +6 -0
  37. package/references/official-docs/docs/agent-lifecycle.md +82 -0
  38. package/references/official-docs/docs/agent-lifecycle.zh.md +84 -0
  39. package/references/official-docs/docs/api-gateway.i18n.yaml +6 -0
  40. package/references/official-docs/docs/api-gateway.md +164 -0
  41. package/references/official-docs/docs/api-gateway.zh.md +164 -0
  42. package/references/official-docs/docs/architecture.i18n.yaml +6 -0
  43. package/references/official-docs/docs/architecture.md +129 -0
  44. package/references/official-docs/docs/architecture.zh.md +133 -0
  45. package/references/official-docs/docs/capability-seams.i18n.yaml +6 -0
  46. package/references/official-docs/docs/capability-seams.md +471 -0
  47. package/references/official-docs/docs/capability-seams.zh.md +473 -0
  48. package/references/official-docs/docs/config-catalog.i18n.yaml +6 -0
  49. package/references/official-docs/docs/config-catalog.md +3151 -0
  50. package/references/official-docs/docs/config-catalog.zh.md +3152 -0
  51. package/references/official-docs/docs/cookbook/adding-a-conversation-node.i18n.yaml +6 -0
  52. package/references/official-docs/docs/cookbook/adding-a-conversation-node.md +233 -0
  53. package/references/official-docs/docs/cookbook/adding-a-conversation-node.zh.md +233 -0
  54. package/references/official-docs/docs/cookbook/adding-a-package.i18n.yaml +6 -0
  55. package/references/official-docs/docs/cookbook/adding-a-package.md +118 -0
  56. package/references/official-docs/docs/cookbook/adding-a-package.zh.md +118 -0
  57. package/references/official-docs/docs/cookbook/adding-a-tool.i18n.yaml +6 -0
  58. package/references/official-docs/docs/cookbook/adding-a-tool.md +94 -0
  59. package/references/official-docs/docs/cookbook/adding-a-tool.zh.md +96 -0
  60. package/references/official-docs/docs/cookbook/adding-a-vendored-package.i18n.yaml +6 -0
  61. package/references/official-docs/docs/cookbook/adding-a-vendored-package.md +59 -0
  62. package/references/official-docs/docs/cookbook/adding-a-vendored-package.zh.md +59 -0
  63. package/references/official-docs/docs/cookbook/adding-an-llm-adapter.i18n.yaml +6 -0
  64. package/references/official-docs/docs/cookbook/adding-an-llm-adapter.md +43 -0
  65. package/references/official-docs/docs/cookbook/adding-an-llm-adapter.zh.md +43 -0
  66. package/references/official-docs/docs/cookbook/extension-cookbook.i18n.yaml +6 -0
  67. package/references/official-docs/docs/cookbook/extension-cookbook.md +129 -0
  68. package/references/official-docs/docs/cookbook/extension-cookbook.zh.md +131 -0
  69. package/references/official-docs/docs/cookbook/maintaining-dsh-code-review.i18n.yaml +6 -0
  70. package/references/official-docs/docs/cookbook/maintaining-dsh-code-review.md +64 -0
  71. package/references/official-docs/docs/cookbook/maintaining-dsh-code-review.zh.md +64 -0
  72. package/references/official-docs/docs/cookbook/responding-to-pr-review-on-a-stack.i18n.yaml +6 -0
  73. package/references/official-docs/docs/cookbook/responding-to-pr-review-on-a-stack.md +32 -0
  74. package/references/official-docs/docs/cookbook/responding-to-pr-review-on-a-stack.zh.md +32 -0
  75. package/references/official-docs/docs/cordis-api/context.i18n.yaml +6 -0
  76. package/references/official-docs/docs/cordis-api/context.md +364 -0
  77. package/references/official-docs/docs/cordis-api/context.zh.md +366 -0
  78. package/references/official-docs/docs/cordis-api/events.i18n.yaml +6 -0
  79. package/references/official-docs/docs/cordis-api/events.md +207 -0
  80. package/references/official-docs/docs/cordis-api/events.zh.md +209 -0
  81. package/references/official-docs/docs/cordis-api/fiber.i18n.yaml +6 -0
  82. package/references/official-docs/docs/cordis-api/fiber.md +375 -0
  83. package/references/official-docs/docs/cordis-api/fiber.zh.md +377 -0
  84. package/references/official-docs/docs/cordis-api/inherited.md +39 -0
  85. package/references/official-docs/docs/cordis-api/registry.i18n.yaml +6 -0
  86. package/references/official-docs/docs/cordis-api/registry.md +152 -0
  87. package/references/official-docs/docs/cordis-api/registry.zh.md +154 -0
  88. package/references/official-docs/docs/cordis-api/service.i18n.yaml +6 -0
  89. package/references/official-docs/docs/cordis-api/service.md +102 -0
  90. package/references/official-docs/docs/cordis-api/service.zh.md +104 -0
  91. package/references/official-docs/docs/cordis-primer.i18n.yaml +6 -0
  92. package/references/official-docs/docs/cordis-primer.md +44 -0
  93. package/references/official-docs/docs/cordis-primer.zh.md +50 -0
  94. package/references/official-docs/docs/cordis-tutorial/01-first-plugin.i18n.yaml +6 -0
  95. package/references/official-docs/docs/cordis-tutorial/01-first-plugin.md +95 -0
  96. package/references/official-docs/docs/cordis-tutorial/01-first-plugin.zh.md +95 -0
  97. package/references/official-docs/docs/cordis-tutorial/02-lifecycle-and-effects.i18n.yaml +6 -0
  98. package/references/official-docs/docs/cordis-tutorial/02-lifecycle-and-effects.md +98 -0
  99. package/references/official-docs/docs/cordis-tutorial/02-lifecycle-and-effects.zh.md +98 -0
  100. package/references/official-docs/docs/cordis-tutorial/03-services.i18n.yaml +6 -0
  101. package/references/official-docs/docs/cordis-tutorial/03-services.md +98 -0
  102. package/references/official-docs/docs/cordis-tutorial/03-services.zh.md +98 -0
  103. package/references/official-docs/docs/cordis-tutorial/04-events.i18n.yaml +6 -0
  104. package/references/official-docs/docs/cordis-tutorial/04-events.md +144 -0
  105. package/references/official-docs/docs/cordis-tutorial/04-events.zh.md +144 -0
  106. package/references/official-docs/docs/cordis-tutorial/05-config.i18n.yaml +6 -0
  107. package/references/official-docs/docs/cordis-tutorial/05-config.md +84 -0
  108. package/references/official-docs/docs/cordis-tutorial/05-config.zh.md +84 -0
  109. package/references/official-docs/docs/cordis-tutorial/06-composition-and-hmr.i18n.yaml +6 -0
  110. package/references/official-docs/docs/cordis-tutorial/06-composition-and-hmr.md +113 -0
  111. package/references/official-docs/docs/cordis-tutorial/06-composition-and-hmr.zh.md +113 -0
  112. package/references/official-docs/docs/cordis-tutorial/07-into-the-harness.i18n.yaml +6 -0
  113. package/references/official-docs/docs/cordis-tutorial/07-into-the-harness.md +107 -0
  114. package/references/official-docs/docs/cordis-tutorial/07-into-the-harness.zh.md +107 -0
  115. package/references/official-docs/docs/cordis-tutorial/index.i18n.yaml +6 -0
  116. package/references/official-docs/docs/cordis-tutorial/index.md +60 -0
  117. package/references/official-docs/docs/cordis-tutorial/index.zh.md +62 -0
  118. package/references/official-docs/docs/defensive-patterns.i18n.yaml +6 -0
  119. package/references/official-docs/docs/defensive-patterns.md +33 -0
  120. package/references/official-docs/docs/defensive-patterns.zh.md +33 -0
  121. package/references/official-docs/docs/development.i18n.yaml +6 -0
  122. package/references/official-docs/docs/development.md +171 -0
  123. package/references/official-docs/docs/development.zh.md +171 -0
  124. package/references/official-docs/docs/event-producer-consumer.i18n.yaml +6 -0
  125. package/references/official-docs/docs/event-producer-consumer.md +76 -0
  126. package/references/official-docs/docs/event-producer-consumer.zh.md +78 -0
  127. package/references/official-docs/docs/glossary.i18n.yaml +6 -0
  128. package/references/official-docs/docs/glossary.md +45 -0
  129. package/references/official-docs/docs/glossary.zh.md +45 -0
  130. package/references/official-docs/docs/graph-atlas.i18n.yaml +6 -0
  131. package/references/official-docs/docs/graph-atlas.md +24 -0
  132. package/references/official-docs/docs/graph-atlas.zh.md +26 -0
  133. package/references/official-docs/docs/i18n/README.i18n.yaml +6 -0
  134. package/references/official-docs/docs/i18n/README.md +60 -0
  135. package/references/official-docs/docs/i18n/README.zh.md +60 -0
  136. package/references/official-docs/docs/i18n/style-samples.md +87 -0
  137. package/references/official-docs/docs/i18n/terminology.md +214 -0
  138. package/references/official-docs/docs/i18n/translation-prompt.md +263 -0
  139. package/references/official-docs/docs/i18n/translation-rules.i18n.yaml +6 -0
  140. package/references/official-docs/docs/i18n/translation-rules.md +69 -0
  141. package/references/official-docs/docs/i18n/translation-rules.zh.md +69 -0
  142. package/references/official-docs/docs/module-graph.i18n.yaml +6 -0
  143. package/references/official-docs/docs/module-graph.md +1638 -0
  144. package/references/official-docs/docs/module-graph.zh.md +1640 -0
  145. package/references/official-docs/docs/persistence-catalog.i18n.yaml +6 -0
  146. package/references/official-docs/docs/persistence-catalog.md +944 -0
  147. package/references/official-docs/docs/persistence-catalog.zh.md +946 -0
  148. package/references/official-docs/docs/postmortem/0001-acp-default-export-drops-inject.i18n.yaml +6 -0
  149. package/references/official-docs/docs/postmortem/0001-acp-default-export-drops-inject.md +113 -0
  150. package/references/official-docs/docs/postmortem/0001-acp-default-export-drops-inject.zh.md +113 -0
  151. package/references/official-docs/docs/postmortem/0002-js-expression-disabled-filesystem-tools.i18n.yaml +6 -0
  152. package/references/official-docs/docs/postmortem/0002-js-expression-disabled-filesystem-tools.md +47 -0
  153. package/references/official-docs/docs/postmortem/0002-js-expression-disabled-filesystem-tools.zh.md +47 -0
  154. package/references/official-docs/docs/postmortem/0003-web-agent-gui-feedback-loop.i18n.yaml +6 -0
  155. package/references/official-docs/docs/postmortem/0003-web-agent-gui-feedback-loop.md +53 -0
  156. package/references/official-docs/docs/postmortem/0003-web-agent-gui-feedback-loop.zh.md +53 -0
  157. package/references/official-docs/docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.i18n.yaml +6 -0
  158. package/references/official-docs/docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.md +55 -0
  159. package/references/official-docs/docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.zh.md +55 -0
  160. package/references/official-docs/docs/postmortem/README.i18n.yaml +6 -0
  161. package/references/official-docs/docs/postmortem/README.md +18 -0
  162. package/references/official-docs/docs/postmortem/README.zh.md +18 -0
  163. package/references/official-docs/docs/rescope.i18n.yaml +6 -0
  164. package/references/official-docs/docs/rescope.md +53 -0
  165. package/references/official-docs/docs/rescope.zh.md +53 -0
  166. package/references/official-docs/docs/subsystems/README.i18n.yaml +6 -0
  167. package/references/official-docs/docs/subsystems/README.md +55 -0
  168. package/references/official-docs/docs/subsystems/README.zh.md +55 -0
  169. package/references/official-docs/docs/subsystems/approval.i18n.yaml +6 -0
  170. package/references/official-docs/docs/subsystems/approval.md +170 -0
  171. package/references/official-docs/docs/subsystems/approval.zh.md +170 -0
  172. package/references/official-docs/docs/subsystems/attachment.i18n.yaml +6 -0
  173. package/references/official-docs/docs/subsystems/attachment.md +115 -0
  174. package/references/official-docs/docs/subsystems/attachment.zh.md +115 -0
  175. package/references/official-docs/docs/subsystems/client-modules.i18n.yaml +6 -0
  176. package/references/official-docs/docs/subsystems/client-modules.md +118 -0
  177. package/references/official-docs/docs/subsystems/client-modules.zh.md +118 -0
  178. package/references/official-docs/docs/subsystems/code-runtime.i18n.yaml +6 -0
  179. package/references/official-docs/docs/subsystems/code-runtime.md +191 -0
  180. package/references/official-docs/docs/subsystems/code-runtime.zh.md +191 -0
  181. package/references/official-docs/docs/subsystems/commands.i18n.yaml +6 -0
  182. package/references/official-docs/docs/subsystems/commands.md +187 -0
  183. package/references/official-docs/docs/subsystems/commands.zh.md +187 -0
  184. package/references/official-docs/docs/subsystems/compaction.i18n.yaml +6 -0
  185. package/references/official-docs/docs/subsystems/compaction.md +238 -0
  186. package/references/official-docs/docs/subsystems/compaction.zh.md +238 -0
  187. package/references/official-docs/docs/subsystems/core.i18n.yaml +6 -0
  188. package/references/official-docs/docs/subsystems/core.md +1070 -0
  189. package/references/official-docs/docs/subsystems/core.zh.md +1078 -0
  190. package/references/official-docs/docs/subsystems/credentials.i18n.yaml +6 -0
  191. package/references/official-docs/docs/subsystems/credentials.md +133 -0
  192. package/references/official-docs/docs/subsystems/credentials.zh.md +133 -0
  193. package/references/official-docs/docs/subsystems/extensions.i18n.yaml +6 -0
  194. package/references/official-docs/docs/subsystems/extensions.md +364 -0
  195. package/references/official-docs/docs/subsystems/extensions.zh.md +364 -0
  196. package/references/official-docs/docs/subsystems/feedback.i18n.yaml +6 -0
  197. package/references/official-docs/docs/subsystems/feedback.md +266 -0
  198. package/references/official-docs/docs/subsystems/feedback.zh.md +266 -0
  199. package/references/official-docs/docs/subsystems/filesystem.i18n.yaml +6 -0
  200. package/references/official-docs/docs/subsystems/filesystem.md +495 -0
  201. package/references/official-docs/docs/subsystems/filesystem.zh.md +495 -0
  202. package/references/official-docs/docs/subsystems/goal.i18n.yaml +6 -0
  203. package/references/official-docs/docs/subsystems/goal.md +277 -0
  204. package/references/official-docs/docs/subsystems/goal.zh.md +277 -0
  205. package/references/official-docs/docs/subsystems/invariants.i18n.yaml +6 -0
  206. package/references/official-docs/docs/subsystems/invariants.md +88 -0
  207. package/references/official-docs/docs/subsystems/invariants.zh.md +88 -0
  208. package/references/official-docs/docs/subsystems/jobs.i18n.yaml +6 -0
  209. package/references/official-docs/docs/subsystems/jobs.md +290 -0
  210. package/references/official-docs/docs/subsystems/jobs.zh.md +290 -0
  211. package/references/official-docs/docs/subsystems/llm-streaming.i18n.yaml +6 -0
  212. package/references/official-docs/docs/subsystems/llm-streaming.md +888 -0
  213. package/references/official-docs/docs/subsystems/llm-streaming.zh.md +894 -0
  214. package/references/official-docs/docs/subsystems/lsp.i18n.yaml +6 -0
  215. package/references/official-docs/docs/subsystems/lsp.md +202 -0
  216. package/references/official-docs/docs/subsystems/lsp.zh.md +202 -0
  217. package/references/official-docs/docs/subsystems/permission-presets.i18n.yaml +6 -0
  218. package/references/official-docs/docs/subsystems/permission-presets.md +131 -0
  219. package/references/official-docs/docs/subsystems/permission-presets.zh.md +131 -0
  220. package/references/official-docs/docs/subsystems/persistence.i18n.yaml +6 -0
  221. package/references/official-docs/docs/subsystems/persistence.md +385 -0
  222. package/references/official-docs/docs/subsystems/persistence.zh.md +385 -0
  223. package/references/official-docs/docs/subsystems/plan.i18n.yaml +6 -0
  224. package/references/official-docs/docs/subsystems/plan.md +87 -0
  225. package/references/official-docs/docs/subsystems/plan.zh.md +87 -0
  226. package/references/official-docs/docs/subsystems/sandbox.i18n.yaml +6 -0
  227. package/references/official-docs/docs/subsystems/sandbox.md +218 -0
  228. package/references/official-docs/docs/subsystems/sandbox.zh.md +218 -0
  229. package/references/official-docs/docs/subsystems/schedule.i18n.yaml +6 -0
  230. package/references/official-docs/docs/subsystems/schedule.md +186 -0
  231. package/references/official-docs/docs/subsystems/schedule.zh.md +186 -0
  232. package/references/official-docs/docs/subsystems/scope.i18n.yaml +6 -0
  233. package/references/official-docs/docs/subsystems/scope.md +59 -0
  234. package/references/official-docs/docs/subsystems/scope.zh.md +59 -0
  235. package/references/official-docs/docs/subsystems/session-projection.i18n.yaml +6 -0
  236. package/references/official-docs/docs/subsystems/session-projection.md +262 -0
  237. package/references/official-docs/docs/subsystems/session-projection.zh.md +262 -0
  238. package/references/official-docs/docs/subsystems/session-query.i18n.yaml +6 -0
  239. package/references/official-docs/docs/subsystems/session-query.md +495 -0
  240. package/references/official-docs/docs/subsystems/session-query.zh.md +495 -0
  241. package/references/official-docs/docs/subsystems/session-reference.i18n.yaml +6 -0
  242. package/references/official-docs/docs/subsystems/session-reference.md +108 -0
  243. package/references/official-docs/docs/subsystems/session-reference.zh.md +108 -0
  244. package/references/official-docs/docs/subsystems/session-telemetry.i18n.yaml +6 -0
  245. package/references/official-docs/docs/subsystems/session-telemetry.md +194 -0
  246. package/references/official-docs/docs/subsystems/session-telemetry.zh.md +194 -0
  247. package/references/official-docs/docs/subsystems/session-title.i18n.yaml +6 -0
  248. package/references/official-docs/docs/subsystems/session-title.md +204 -0
  249. package/references/official-docs/docs/subsystems/session-title.zh.md +204 -0
  250. package/references/official-docs/docs/subsystems/session.i18n.yaml +6 -0
  251. package/references/official-docs/docs/subsystems/session.md +849 -0
  252. package/references/official-docs/docs/subsystems/session.zh.md +851 -0
  253. package/references/official-docs/docs/subsystems/settings.i18n.yaml +6 -0
  254. package/references/official-docs/docs/subsystems/settings.md +310 -0
  255. package/references/official-docs/docs/subsystems/settings.zh.md +310 -0
  256. package/references/official-docs/docs/subsystems/shell.i18n.yaml +6 -0
  257. package/references/official-docs/docs/subsystems/shell.md +303 -0
  258. package/references/official-docs/docs/subsystems/shell.zh.md +303 -0
  259. package/references/official-docs/docs/subsystems/skills.i18n.yaml +6 -0
  260. package/references/official-docs/docs/subsystems/skills.md +331 -0
  261. package/references/official-docs/docs/subsystems/skills.zh.md +331 -0
  262. package/references/official-docs/docs/subsystems/spill.i18n.yaml +6 -0
  263. package/references/official-docs/docs/subsystems/spill.md +117 -0
  264. package/references/official-docs/docs/subsystems/spill.zh.md +117 -0
  265. package/references/official-docs/docs/subsystems/storage.i18n.yaml +6 -0
  266. package/references/official-docs/docs/subsystems/storage.md +229 -0
  267. package/references/official-docs/docs/subsystems/storage.zh.md +229 -0
  268. package/references/official-docs/docs/subsystems/subagent.i18n.yaml +6 -0
  269. package/references/official-docs/docs/subsystems/subagent.md +734 -0
  270. package/references/official-docs/docs/subsystems/subagent.zh.md +736 -0
  271. package/references/official-docs/docs/subsystems/subprocess.i18n.yaml +6 -0
  272. package/references/official-docs/docs/subsystems/subprocess.md +324 -0
  273. package/references/official-docs/docs/subsystems/subprocess.zh.md +324 -0
  274. package/references/official-docs/docs/subsystems/system-prompt.i18n.yaml +6 -0
  275. package/references/official-docs/docs/subsystems/system-prompt.md +207 -0
  276. package/references/official-docs/docs/subsystems/system-prompt.zh.md +207 -0
  277. package/references/official-docs/docs/subsystems/terminal.i18n.yaml +6 -0
  278. package/references/official-docs/docs/subsystems/terminal.md +184 -0
  279. package/references/official-docs/docs/subsystems/terminal.zh.md +184 -0
  280. package/references/official-docs/docs/subsystems/token-meter.i18n.yaml +6 -0
  281. package/references/official-docs/docs/subsystems/token-meter.md +90 -0
  282. package/references/official-docs/docs/subsystems/token-meter.zh.md +90 -0
  283. package/references/official-docs/docs/subsystems/tools.i18n.yaml +6 -0
  284. package/references/official-docs/docs/subsystems/tools.md +720 -0
  285. package/references/official-docs/docs/subsystems/tools.zh.md +720 -0
  286. package/references/official-docs/docs/subsystems/typert.i18n.yaml +6 -0
  287. package/references/official-docs/docs/subsystems/typert.md +336 -0
  288. package/references/official-docs/docs/subsystems/typert.zh.md +336 -0
  289. package/references/official-docs/docs/subsystems/user-questions.i18n.yaml +6 -0
  290. package/references/official-docs/docs/subsystems/user-questions.md +178 -0
  291. package/references/official-docs/docs/subsystems/user-questions.zh.md +178 -0
  292. package/references/official-docs/docs/subsystems/web-server.i18n.yaml +6 -0
  293. package/references/official-docs/docs/subsystems/web-server.md +108 -0
  294. package/references/official-docs/docs/subsystems/web-server.zh.md +108 -0
  295. package/references/official-docs/docs/subsystems/web.i18n.yaml +6 -0
  296. package/references/official-docs/docs/subsystems/web.md +199 -0
  297. package/references/official-docs/docs/subsystems/web.zh.md +199 -0
  298. package/references/official-docs/docs/subsystems/workflow.i18n.yaml +6 -0
  299. package/references/official-docs/docs/subsystems/workflow.md +278 -0
  300. package/references/official-docs/docs/subsystems/workflow.zh.md +278 -0
  301. package/references/official-docs/docs/subsystems/workspace.i18n.yaml +6 -0
  302. package/references/official-docs/docs/subsystems/workspace.md +228 -0
  303. package/references/official-docs/docs/subsystems/workspace.zh.md +228 -0
  304. package/references/official-docs/docs/testing.i18n.yaml +6 -0
  305. package/references/official-docs/docs/testing.md +49 -0
  306. package/references/official-docs/docs/testing.zh.md +49 -0
  307. package/references/official-docs/docs/tool-catalog.i18n.yaml +6 -0
  308. package/references/official-docs/docs/tool-catalog.md +1873 -0
  309. package/references/official-docs/docs/tool-catalog.zh.md +1878 -0
  310. package/references/official-docs/docs/tool-execution-pipeline.i18n.yaml +6 -0
  311. package/references/official-docs/docs/tool-execution-pipeline.md +62 -0
  312. package/references/official-docs/docs/tool-execution-pipeline.zh.md +64 -0
  313. package/references/official-docs/docs/user/develop/basic/config.i18n.yaml +6 -0
  314. package/references/official-docs/docs/user/develop/basic/config.md +106 -0
  315. package/references/official-docs/docs/user/develop/basic/config.zh.md +106 -0
  316. package/references/official-docs/docs/user/develop/basic/index.i18n.yaml +6 -0
  317. package/references/official-docs/docs/user/develop/basic/index.md +144 -0
  318. package/references/official-docs/docs/user/develop/basic/index.zh.md +144 -0
  319. package/references/official-docs/docs/user/develop/basic/publish.i18n.yaml +6 -0
  320. package/references/official-docs/docs/user/develop/basic/publish.md +183 -0
  321. package/references/official-docs/docs/user/develop/basic/publish.zh.md +183 -0
  322. package/references/official-docs/docs/user/develop/basic/tool.i18n.yaml +6 -0
  323. package/references/official-docs/docs/user/develop/basic/tool.md +52 -0
  324. package/references/official-docs/docs/user/develop/basic/tool.zh.md +52 -0
  325. package/references/official-docs/docs/user/develop/framework/events.i18n.yaml +6 -0
  326. package/references/official-docs/docs/user/develop/framework/events.md +143 -0
  327. package/references/official-docs/docs/user/develop/framework/events.zh.md +143 -0
  328. package/references/official-docs/docs/user/develop/framework/index.i18n.yaml +6 -0
  329. package/references/official-docs/docs/user/develop/framework/index.md +137 -0
  330. package/references/official-docs/docs/user/develop/framework/index.zh.md +137 -0
  331. package/references/official-docs/docs/user/develop/framework/service.i18n.yaml +6 -0
  332. package/references/official-docs/docs/user/develop/framework/service.md +148 -0
  333. package/references/official-docs/docs/user/develop/framework/service.zh.md +150 -0
  334. package/references/official-docs/docs/user/develop/practice/index.i18n.yaml +6 -0
  335. package/references/official-docs/docs/user/develop/practice/index.md +155 -0
  336. package/references/official-docs/docs/user/develop/practice/index.zh.md +155 -0
  337. package/references/official-docs/docs/user/develop/practice/llm-adapter.i18n.yaml +6 -0
  338. package/references/official-docs/docs/user/develop/practice/llm-adapter.md +188 -0
  339. package/references/official-docs/docs/user/develop/practice/llm-adapter.zh.md +188 -0
  340. package/references/official-docs/docs/user/guide/index.i18n.yaml +6 -0
  341. package/references/official-docs/docs/user/guide/index.md +30 -0
  342. package/references/official-docs/docs/user/guide/index.zh.md +30 -0
  343. package/references/official-docs/docs/user/guide/providers-custom-form.png +0 -0
  344. package/references/official-docs/docs/user/guide/providers-custom-form.zh.png +0 -0
  345. package/references/official-docs/docs/user/guide/providers-models-page.png +0 -0
  346. package/references/official-docs/docs/user/guide/providers-models-page.zh.png +0 -0
  347. package/references/official-docs/docs/user/guide/providers.i18n.yaml +6 -0
  348. package/references/official-docs/docs/user/guide/providers.md +98 -0
  349. package/references/official-docs/docs/user/guide/providers.zh.md +98 -0
  350. package/references/official-docs/docs/user/guide/python-sdk.i18n.yaml +6 -0
  351. package/references/official-docs/docs/user/guide/python-sdk.md +104 -0
  352. package/references/official-docs/docs/user/guide/python-sdk.zh.md +104 -0
  353. package/references/official-docs/docs/user/index.i18n.yaml +6 -0
  354. package/references/official-docs/docs/user/index.md +11 -0
  355. package/references/official-docs/docs/user/index.zh.md +11 -0
  356. package/references/official-docs/docs/web-styling.i18n.yaml +6 -0
  357. package/references/official-docs/docs/web-styling.md +25 -0
  358. package/references/official-docs/docs/web-styling.zh.md +25 -0
  359. package/references/official-docs/examples/AGENTS.md +20 -0
  360. package/references/official-docs/packages/AGENTS.md +27 -0
  361. package/references/official-docs/packages/README.md +69 -0
  362. package/references/official-docs/vendor/README.md +60 -0
  363. package/references/official-docs/website-docs.ts +524 -0
  364. package/references/sources.md +137 -0
  365. package/references/upstream-cordis.md +594 -0
  366. package/references/website-pages.md +668 -0
  367. package/scripts/archive-discussions.ps1 +154 -0
  368. package/scripts/download-community-articles.ps1 +188 -0
  369. package/scripts/download-community-repos.ps1 +232 -0
  370. package/scripts/download-sources.ps1 +195 -0
  371. package/scripts/gen-topic-snapshot.ps1 +91 -0
  372. package/scripts/install-skill.ps1 +63 -0
  373. package/scripts/sync-official-docs.ps1 +130 -0
  374. package/scripts/verify-kit.ps1 +191 -0
@@ -0,0 +1,944 @@
1
+ <!-- Generated by scripts/gen-persistence-catalog.ts — do not edit by hand.
2
+ Run `pnpm run gen-persistence-catalog` to regenerate. -->
3
+
4
+ # Session Persistence Event Catalog
5
+
6
+ Every event type that can appear in a session's durable event log: the complete persisted `SessionEvent` envelope and each member of the merge-extensible `SessionEventMap` — the owning vocabulary in `@deepseek-ai/dsh-session` plus every plugin declaration merge into `@deepseek-ai/dsh-session/types` in this repo — with source JSDoc, full payload declaration, surface badge, and declaration site. It complements [session.md](subsystems/session.md) (surface ordering and the `deriveMessages()` projection), [persistence.md](subsystems/persistence.md) (how the log is made durable), and the generated region of [session.md](subsystems/session.md#cordis-surface) (the live bus wiring — a log event is NOT a cordis event; it reaches listeners via the single `session/event` emit).
7
+
8
+ This file is GENERATED from source (`scripts/gen-persistence-catalog.ts`) and verified fresh by `pnpm run verify-persistence-catalog` (part of `doc-sync`) — do not edit it by hand. Declaration blocks retain the source declaration and nested property JSDoc, removing only the indentation imposed by a containing interface/module, and use a `ts persistence-catalog` fence (skipped by doc-typecheck because declarations reference types from their owning modules). Type names in a payload link to the page that documents them. See [the persistence-log-catalog Agent Note](../.agents/notes/archived/process/2026-07-04-persistence-log-catalog.md).
9
+
10
+ The envelope declarations below compose each event's `type`, monotonic `seq`, epoch-ms `time`, `data`, the optional `ignorable` unknown-type skip marker, and the conditional `surfaceOp`/`sourceEventSeqs` fields. **surface** marks a `SurfaceEventType` member: it produces an LLM message and declares how it joins the surface list. **log-only** marks everything else: a durable, replayable record with no derived-history contribution. Every payload is JSON-serializable (enforced at `Session.append`), and the whole format is pinned at `SESSION_FORMAT_VERSION = 0` — pre-release, no compatibility implied ([the version stance](subsystems/persistence.md)). Scope: the packages in this repo; a downstream plugin can merge further event types, which are outside this catalog by construction.
11
+
12
+ ## Event envelope
13
+
14
+ ```ts persistence-catalog
15
+ /** The appendable event-type keys of {@link SessionEventMap}, plugin-merged extensions included. */
16
+ export type SessionEventType = keyof SessionEventMap
17
+
18
+ /**
19
+ * The subset of {@link SessionEventType} values whose events produce LLM
20
+ * messages and are eligible to appear on the ordered surface. Only these
21
+ * event types may carry {@link SurfaceOp} and {@link SessionEvent.sourceEventSeqs}.
22
+ */
23
+ export type SurfaceEventType =
24
+ | 'user/message'
25
+ | 'assistant/message'
26
+ | 'tool/result'
27
+
28
+ /**
29
+ * How a session event entered the ordered surface. Only valid on
30
+ * {@link SurfaceEventType} events.
31
+ *
32
+ * - `'append'`: added to the tail — normal path for user/assistant/tool
33
+ * messages.
34
+ * - `{ op: 'replace', start, end }`: replaces surface nodes from `start`
35
+ * (inclusive) through `end` (inclusive) with this node. Both must exist as
36
+ * surface nodes in the current surface. `start === end` replaces a single
37
+ * node. The node's {@link SessionEvent.sourceEventSeqs} must include every
38
+ * shadowed surface node. Used by compaction; any surface-replacing producer
39
+ * may use it.
40
+ */
41
+ export type SurfaceOp =
42
+ | 'append'
43
+ | { op: 'replace'; start: number; end: number }
44
+
45
+ /**
46
+ * One immutable entry in the session log.
47
+ *
48
+ * A proper discriminated union over `type` (not independent `type`/`data`
49
+ * unions), so `switch (event.type)` narrows `event.data` without casts.
50
+ *
51
+ * The {@link sourceEventSeqs} and {@link surfaceOp} fields are conditional:
52
+ * they only exist on {@link SurfaceEventType} variants (`user/message`,
53
+ * `assistant/message`, `tool/result`).
54
+ * Non-surface events (boundary markers, chunks, usage, errors) never carry
55
+ * surface metadata — the compiler enforces this at `Session.append()`
56
+ * call sites.
57
+ */
58
+ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
59
+ [K in SessionEventType]: {
60
+ type: K
61
+ /** Monotonic sequence number within the session. */
62
+ seq: number
63
+ /** Unix epoch milliseconds. */
64
+ time: number
65
+ data: SessionEventMap[K]
66
+ /**
67
+ * Marks an event a reader may safely skip when it does not recognize
68
+ * `type`. Absent means required: a reader meeting an unrecognized type
69
+ * without this marker MUST refuse to reconstruct the session instead of
70
+ * silently dropping the event, because an unrecognized required event may
71
+ * change how the rest of the log is interpreted. A writer sets `true` only
72
+ * on purely informational records whose loss cannot affect reconstruction;
73
+ * defaulting to required means a forgotten marker over-refuses (an
74
+ * inconvenience) rather than silently resuming a gutted session.
75
+ */
76
+ ignorable?: true
77
+ } & (K extends SurfaceEventType ? {
78
+ /**
79
+ * Seq numbers of earlier events that this event cites as sources
80
+ * (e.g. the `assistant/chunk` seqs that built an `assistant/message`,
81
+ * or the surface nodes shadowed by a compaction replace node). An
82
+ * `assistant/message` may carry a present empty array for a known empty
83
+ * provider stream; when the field is absent, the event does not record which
84
+ * earlier events produced the message.
85
+ */
86
+ sourceEventSeqs?: number[]
87
+ /** How this event entered the surface; absent for non-surface events. */
88
+ surfaceOp?: SurfaceOp
89
+ } : object)
90
+ }[T]
91
+ ```
92
+
93
+ Sources: [`packages/core/session/src/types.ts:336`](../packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:343`](../packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:372`](../packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:404`](../packages/core/session/src/types.ts)
94
+
95
+ ## Events
96
+
97
+ ### `agent/*`
98
+
99
+ <a id="agentinboxspliced--log-only"></a>
100
+
101
+ #### `agent/inbox/spliced` — log-only
102
+
103
+ ```ts persistence-catalog
104
+ /**
105
+ * One normalized mutation of an agent's durable pending-message lists.
106
+ * Live dispatch precedes projection mutation, so synchronous observers may
107
+ * read the pre-splice inbox to recover the removed messages.
108
+ */
109
+ 'agent/inbox/spliced': {
110
+ target: InboxTarget
111
+ start: number
112
+ removedCount?: number
113
+ inserted: UserMessage[]
114
+ outcome?: 'canceled'
115
+ }
116
+ ```
117
+
118
+ Source: [`packages/core/agent/src/types.ts:19`](../packages/core/agent/src/types.ts)
119
+
120
+ ### `agent-preset/*`
121
+
122
+ <a id="agent-presetselected--log-only"></a>
123
+
124
+ #### `agent-preset/selected` — log-only
125
+
126
+ ```ts persistence-catalog
127
+ /**
128
+ * The session's agent preset was chosen after creation, while the session
129
+ * was still blank. Log-only: it records the composition later turns ran
130
+ * under, so a resumed or forked session rebuilds the same one instead of
131
+ * the header's creation-time value.
132
+ */
133
+ 'agent-preset/selected': { agentPreset: string }
134
+ ```
135
+
136
+ Source: [`packages/preset/agent-presets/src/session.ts:26`](../packages/preset/agent-presets/src/session.ts)
137
+
138
+ ### `approval/*`
139
+
140
+ <a id="approvalasked--log-only"></a>
141
+
142
+ #### `approval/asked` — log-only
143
+
144
+ ```ts persistence-catalog
145
+ /**
146
+ * An approval question was put to the answerer chain — log-only audit
147
+ * (like `hook/*`; NOT a surface event, carries no `surfaceOp`). `id` pairs
148
+ * it with the `approval/decided` that always follows; `toolName` is the
149
+ * tool the question is about, `callId` the exact tool call when the asker
150
+ * had one, `reason` the asker's human-readable explanation (e.g. a hook's
151
+ * permission-decision reason).
152
+ */
153
+ 'approval/asked': {
154
+ id: ApprovalRequestId
155
+ toolName: string
156
+ callId?: CallId
157
+ reason?: string
158
+ }
159
+ ```
160
+
161
+ Types: [CallId](subsystems/core.md)
162
+
163
+ Source: [`packages/interaction/user-approval/src/index.ts:44`](../packages/interaction/user-approval/src/index.ts)
164
+
165
+ <a id="approvaldecided--log-only"></a>
166
+
167
+ #### `approval/decided` — log-only
168
+
169
+ ```ts persistence-catalog
170
+ /**
171
+ * The outcome of a prior `approval/asked` (same `id`) — log-only audit.
172
+ * Exactly one per ask, appended when the outcome is known: a decision, a
173
+ * cancellation, or the fail-closed `'unavailable'`.
174
+ */
175
+ 'approval/decided': {
176
+ id: ApprovalRequestId
177
+ outcome: ApprovalOutcome
178
+ }
179
+ ```
180
+
181
+ Source: [`packages/interaction/user-approval/src/index.ts:55`](../packages/interaction/user-approval/src/index.ts)
182
+
183
+ <a id="approvalpolicy--log-only"></a>
184
+
185
+ #### `approval/policy` — log-only
186
+
187
+ ```ts persistence-catalog
188
+ /**
189
+ * The session's approval policy was switched — log-only, durable,
190
+ * replayable, never in the model transcript (the model learns the policy
191
+ * from the runtime-context snapshot and live switch notices). The LAST
192
+ * such event is the session's override ({@link effectiveApprovalPolicy}).
193
+ * `source: 'delegation'` marks an override seeded into a child; an absent
194
+ * source is a runtime switch.
195
+ */
196
+ 'approval/policy': {
197
+ policy: ApprovalPolicy
198
+ /** Marks an override seeded into a child at delegation. */
199
+ source?: 'delegation'
200
+ }
201
+ ```
202
+
203
+ Source: [`packages/interaction/user-approval/src/index.ts:67`](../packages/interaction/user-approval/src/index.ts)
204
+
205
+ ### `assistant/*`
206
+
207
+ <a id="assistantchunk--log-only"></a>
208
+
209
+ #### `assistant/chunk` — log-only
210
+
211
+ ```ts persistence-catalog
212
+ /** Raw stream chunk — token-level replay fidelity. */
213
+ 'assistant/chunk': { turn: number; step: number; chunk: StreamChunk }
214
+ ```
215
+
216
+ Types: [StreamChunk](subsystems/llm-streaming.md)
217
+
218
+ Source: [`packages/core/session/src/types.ts:266`](../packages/core/session/src/types.ts)
219
+
220
+ <a id="assistantmessage--surface"></a>
221
+
222
+ #### `assistant/message` — surface
223
+
224
+ ```ts persistence-catalog
225
+ /**
226
+ * Assembled assistant message for one step (derived history uses this).
227
+ * Carries the step's `usage` when the adapter reported token accounting, so
228
+ * the model output and its accounting travel together (there is no separate
229
+ * usage record). `usage` is absent when the adapter reported none.
230
+ */
231
+ 'assistant/message': { turn: number; step: number; message: AssistantMessage; usage?: TokenUsage }
232
+ ```
233
+
234
+ Types: [TokenUsage](subsystems/llm-streaming.md)
235
+
236
+ Source: [`packages/core/session/src/types.ts:273`](../packages/core/session/src/types.ts)
237
+
238
+ ### `command/*`
239
+
240
+ <a id="commanddone--log-only"></a>
241
+
242
+ #### `command/done` — log-only
243
+
244
+ ```ts persistence-catalog
245
+ /**
246
+ * The paired command settled. `kind`/`text` carry the handler's verbatim
247
+ * outcome (a thrown/aborted handler settles as `kind: 'error'` with the
248
+ * rendered failure). A successful command may identify the earlier
249
+ * authoritative domain event for a richer client-computed presentation.
250
+ */
251
+ 'command/done': {
252
+ commandId: CommandId
253
+ kind: 'success' | 'error'
254
+ text?: string
255
+ sourceEventSeq?: number
256
+ }
257
+ ```
258
+
259
+ Source: [`packages/interaction/commands/src/types.ts:95`](../packages/interaction/commands/src/types.ts)
260
+
261
+ <a id="commandrun--log-only"></a>
262
+
263
+ #### `command/run` — log-only
264
+
265
+ ```ts persistence-catalog
266
+ /**
267
+ * A resolved slash command entered its handler. Log-only (never model
268
+ * surface); paired with `command/done` by `commandId`, mirroring the
269
+ * `tool/call`↔`tool/result` pairing. The payload is structured — `name`
270
+ * and `args` are `parseCommand`'s own split (name and verbatim rawInput,
271
+ * separator whitespace included), so a consumer (a projection unit
272
+ * folding its own command records, a rich command card) never re-parses
273
+ * a line. `args` is absent when the definition sets `recordInput: false`
274
+ * because an authoritative domain event owns the input payload.
275
+ */
276
+ 'command/run': { commandId: CommandId; name: string; args?: string; source: CommandSource }
277
+ ```
278
+
279
+ Source: [`packages/interaction/commands/src/types.ts:88`](../packages/interaction/commands/src/types.ts)
280
+
281
+ ### `compaction/*`
282
+
283
+ <a id="compactionend--log-only"></a>
284
+
285
+ #### `compaction/end` — log-only
286
+
287
+ ```ts persistence-catalog
288
+ /**
289
+ * Marks the end of a compaction — log-only, releases the lock. Its owner
290
+ * matches `compaction/start`; `error` records an unsuccessful attempt.
291
+ */
292
+ 'compaction/end': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; error?: string }
293
+ ```
294
+
295
+ Source: [`packages/compaction/compaction/src/types.ts:71`](../packages/compaction/compaction/src/types.ts)
296
+
297
+ <a id="compactionprune--log-only"></a>
298
+
299
+ #### `compaction/prune` — log-only
300
+
301
+ ```ts persistence-catalog
302
+ /**
303
+ * Shadow price of one model-free prune replacement — log-only, no
304
+ * surfaceOp. The shared shadow-price protocol: a surface `replace` event
305
+ * is priced by the metering event immediately before it (`compaction/summary`
306
+ * for a summarizing compaction, this event for a prune), which states the
307
+ * heuristic token price of the exact replaced range so a pure consumer
308
+ * can subtract it without retaining per-node prices. The replacement MUST
309
+ * be appended synchronously right after this event.
310
+ */
311
+ 'compaction/prune': {
312
+ /** The replaced range's first and last surface-node seqs (a surface-position span, like {@link CompactionResult.shadowedRange}). */
313
+ shadowedRange: { start: number; end: number }
314
+ /** The seqs of all shadowed surface nodes, in surface order. */
315
+ shadowedSeqs: number[]
316
+ /** Heuristic price of the shadowed content under the token-meter's fixed estimator. */
317
+ shadowedTokenCount: number
318
+ }
319
+ ```
320
+
321
+ Source: [`packages/compaction/compaction/src/types.ts:81`](../packages/compaction/compaction/src/types.ts)
322
+
323
+ <a id="compactionstart--log-only"></a>
324
+
325
+ #### `compaction/start` — log-only
326
+
327
+ ```ts persistence-catalog
328
+ /**
329
+ * Marks the start of a compaction — log-only, holds the lock until
330
+ * `compaction/end`. A numbered owner is strictly enclosed by that open turn;
331
+ * `null` identifies a standalone manual transaction between turns.
332
+ */
333
+ 'compaction/start': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null }
334
+ ```
335
+
336
+ Source: [`packages/compaction/compaction/src/types.ts:23`](../packages/compaction/compaction/src/types.ts)
337
+
338
+ <a id="compactionsummary--log-only"></a>
339
+
340
+ #### `compaction/summary` — log-only
341
+
342
+ ```ts persistence-catalog
343
+ /**
344
+ * Completed summary, its inputs, and its model call facts — log-only, no surfaceOp.
345
+ * The summary content is in `data.summary`; the actual surface replacement
346
+ * is performed by the immediately following `user/message` event that
347
+ * shadows the compacted range. That adjacency is contractual — the
348
+ * shadowed pricing fields are the replacement's shadow price, so a
349
+ * consumer may pair a replacement with the metering event directly
350
+ * before it (`compaction/prune` documents the shared protocol).
351
+ */
352
+ 'compaction/summary': {
353
+ compactionId: CompactionId
354
+ sourceCommandId?: CommandId
355
+ summary: ContentBlock[]
356
+ shadowedRange: { start: number; end: number }
357
+ shadowedSeqs: number[]
358
+ shadowedTokenCount: number
359
+ /** The provider route that wrote the summary. */
360
+ provider: string
361
+ /**
362
+ * The model that wrote the summary — the summarize call's envelope,
363
+ * reported by the backend that made the call, logged so the one-shot
364
+ * request is reconstructable from log + code and "which model wrote
365
+ * this summary" has a durable answer (the reconstructability Agent Note).
366
+ */
367
+ model: string
368
+ /** The generation cap the summarize call sent, when one applied. */
369
+ maxTokens?: number
370
+ /** Provider-reported token usage for the summarization request, when emitted. */
371
+ usage?: TokenUsage
372
+ } & (
373
+ | {
374
+ /** Complete provider output before the backend's safe summary projection. */
375
+ rawOutput: ContentBlock[]
376
+ /** Identifies exactly one call through this context's `ctx.llm.stream()`. */
377
+ llmStreamCall: true
378
+ }
379
+ | {
380
+ /** Optional complete output from an unmarked template, remote, or other summarizer. */
381
+ rawOutput?: ContentBlock[]
382
+ /** An unmarked summary does not identify a call through this context's LLM seam. */
383
+ llmStreamCall?: never
384
+ }
385
+ )
386
+ ```
387
+
388
+ Types: [ContentBlock](subsystems/core.md) · [TokenUsage](subsystems/llm-streaming.md)
389
+
390
+ Source: [`packages/compaction/compaction/src/types.ts:33`](../packages/compaction/compaction/src/types.ts)
391
+
392
+ ### `feedback/*`
393
+
394
+ <a id="feedbackrecord--log-only"></a>
395
+
396
+ #### `feedback/record` — log-only
397
+
398
+ ```ts persistence-catalog
399
+ /**
400
+ * One recorded human remark about this session. Log-only and independent
401
+ * of its trigger; it never enters model context or derived history.
402
+ */
403
+ 'feedback/record': { text: string }
404
+ ```
405
+
406
+ Source: [`packages/feedback/command-feedback/src/index.ts:62`](../packages/feedback/command-feedback/src/index.ts)
407
+
408
+ ### `goal/*`
409
+
410
+ <a id="goalchange--log-only"></a>
411
+
412
+ #### `goal/change` — log-only
413
+
414
+ ```ts persistence-catalog
415
+ /**
416
+ * Complete post-mutation goal state or clear tombstone.
417
+ */
418
+ 'goal/change': GoalChangeMeta
419
+ ```
420
+
421
+ Source: [`packages/goal/goal/src/domain.ts:66`](../packages/goal/goal/src/domain.ts)
422
+
423
+ ### `hook/*`
424
+
425
+ <a id="hookinvoked--log-only"></a>
426
+
427
+ #### `hook/invoked` — log-only
428
+
429
+ ```ts persistence-catalog
430
+ /**
431
+ * A hook command was invoked at a hook point — a log-only record (like
432
+ * `compaction/*`; NOT a {@link SurfaceEventType}, carries no `surfaceOp`).
433
+ * `dialect` is the bridge that ran it (`claude`/`codex`), `point`
434
+ * the hook point (`PreToolUse`, `Stop`, …), `matcher` the matcher-group
435
+ * pattern that selected it (absent for match-all), `handlerId` a stable id
436
+ * for the command (so an invoked/result pair correlates). `turn` is the open
437
+ * turn the invocation lives inside.
438
+ */
439
+ 'hook/invoked': {
440
+ turn: number
441
+ point: string
442
+ dialect: HookDialect
443
+ matcher?: string
444
+ handlerId: string
445
+ }
446
+ ```
447
+
448
+ Source: [`packages/hooks/hook-protocol/src/types.ts:19`](../packages/hooks/hook-protocol/src/types.ts)
449
+
450
+ <a id="hookresult--log-only"></a>
451
+
452
+ #### `hook/result` — log-only
453
+
454
+ ```ts persistence-catalog
455
+ /**
456
+ * Log-only outcome paired to `hook/invoked` by `handlerId`. Decision is the
457
+ * parsed permission result, `stop` for `continue:false`, or `pass`; exit code
458
+ * may be absent, stderr is bounded, and duration is wall-clock runtime.
459
+ */
460
+ 'hook/result': {
461
+ turn: number
462
+ point: string
463
+ handlerId: string
464
+ decision: string
465
+ exitCode?: number
466
+ stderrSummary?: string
467
+ durationMs: number
468
+ }
469
+ ```
470
+
471
+ Source: [`packages/hooks/hook-protocol/src/types.ts:31`](../packages/hooks/hook-protocol/src/types.ts)
472
+
473
+ ### `llm/*`
474
+
475
+ <a id="llmretry--log-only"></a>
476
+
477
+ #### `llm/retry` — log-only
478
+
479
+ ```ts persistence-catalog
480
+ /** Durable, non-surface record of one provider-routed retry scheduled after a failed request attempt. */
481
+ 'llm/retry': LlmRetryEventData
482
+ ```
483
+
484
+ Source: [`packages/llm/llm-retry/src/types.ts:9`](../packages/llm/llm-retry/src/types.ts)
485
+
486
+ <a id="llmretry-started--log-only"></a>
487
+
488
+ #### `llm/retry-started` — log-only
489
+
490
+ ```ts persistence-catalog
491
+ /** Durable transition written after a retry wait succeeds and before the next request attempt starts. */
492
+ 'llm/retry-started': LlmRetryStartedEventData
493
+ ```
494
+
495
+ Source: [`packages/llm/llm-retry/src/types.ts:11`](../packages/llm/llm-retry/src/types.ts)
496
+
497
+ ### `permission/*`
498
+
499
+ <a id="permissionpreset--log-only"></a>
500
+
501
+ #### `permission/preset` — log-only
502
+
503
+ ```ts persistence-catalog
504
+ /**
505
+ * Records the selected preset as durable, log-only user intent. The knob
506
+ * events follow in the same turn and control execution; this event stays
507
+ * out of the model transcript and lets {@link effectivePermissionPreset}
508
+ * preserve a selection when bundles match.
509
+ */
510
+ 'permission/preset': { preset: string }
511
+ ```
512
+
513
+ Source: [`packages/interaction/permission-presets/src/index.ts:50`](../packages/interaction/permission-presets/src/index.ts)
514
+
515
+ ### `plan/*`
516
+
517
+ <a id="planmode--log-only"></a>
518
+
519
+ #### `plan/mode` — log-only
520
+
521
+ ```ts persistence-catalog
522
+ /**
523
+ * Whether plan mode is in force from this point on: log-only, non-surface,
524
+ * whole-value replace. The last `plan/mode` wins; a log with none folds to
525
+ * inactive through {@link foldPlanMode}.
526
+ */
527
+ 'plan/mode': { active: boolean }
528
+ ```
529
+
530
+ Source: [`packages/plan/plan-mode/src/index.ts:53`](../packages/plan/plan-mode/src/index.ts)
531
+
532
+ ### `request/*`
533
+
534
+ <a id="requestcontext--log-only"></a>
535
+
536
+ #### `request/context` — log-only
537
+
538
+ ```ts persistence-catalog
539
+ /**
540
+ * Route metadata for the next request, logged only when the route or capacity
541
+ * changes. It does not participate in request reconstruction or header equality.
542
+ */
543
+ 'request/context': RequestContext
544
+ ```
545
+
546
+ Source: [`packages/core/session/src/types.ts:309`](../packages/core/session/src/types.ts)
547
+
548
+ <a id="requestheader--log-only"></a>
549
+
550
+ #### `request/header` — log-only
551
+
552
+ ```ts persistence-catalog
553
+ /**
554
+ * Full header for the next request, appended inside its step before dispatch.
555
+ * It is log-only; the latest snapshot reconstructs the request header.
556
+ */
557
+ 'request/header': { header: EpochHeader; reason: RequestHeaderReason }
558
+ ```
559
+
560
+ Source: [`packages/core/session/src/types.ts:304`](../packages/core/session/src/types.ts)
561
+
562
+ ### `sandbox/*`
563
+
564
+ <a id="sandboxmode--log-only"></a>
565
+
566
+ #### `sandbox/mode` — log-only
567
+
568
+ ```ts persistence-catalog
569
+ /**
570
+ * The session's sandbox mode was switched — log-only (like `approval/*`;
571
+ * NOT a surface event, carries no `surfaceOp`): durable and replayable,
572
+ * never in the model transcript. The LAST such event is the session's
573
+ * override ({@link effectiveSandboxMode}). `source: 'delegation'` marks
574
+ * an override seeded into a child; an absent source is a runtime switch.
575
+ */
576
+ 'sandbox/mode': {
577
+ mode: SandboxMode
578
+ /** Marks an override seeded into a child at delegation. */
579
+ source?: 'delegation'
580
+ }
581
+ ```
582
+
583
+ Source: [`packages/sandbox/sandbox-policy/src/session-mode.ts:33`](../packages/sandbox/sandbox-policy/src/session-mode.ts)
584
+
585
+ ### `schedule/*`
586
+
587
+ <a id="schedulechange--log-only"></a>
588
+
589
+ #### `schedule/change` — log-only
590
+
591
+ ```ts persistence-catalog
592
+ /**
593
+ * Versioned Schedule mutation. The owning package validates the complete
594
+ * session-local transition stream before accepting a candidate event.
595
+ */
596
+ 'schedule/change': ScheduleChange
597
+ ```
598
+
599
+ Types: [ScheduleChange](subsystems/schedule.md)
600
+
601
+ Source: [`packages/schedule/schedule/src/types.ts:219`](../packages/schedule/schedule/src/types.ts)
602
+
603
+ ### `session/*`
604
+
605
+ <a id="sessionend-seed--log-only"></a>
606
+
607
+ #### `session/end-seed` — log-only
608
+
609
+ ```ts persistence-catalog
610
+ /**
611
+ * Marks the end of a constructor seed. Events before it have smaller seq
612
+ * values and came from the seed (resume, fork, or replay); this lifecycle
613
+ * produced none of them. This log-only event is the durable projection of
614
+ * {@link Session.firstLiveSeq}. Its payload is empty — position and `time`
615
+ * carry the meaning.
616
+ *
617
+ * Locate the LAST one in stored history. A seed already ending in one is not
618
+ * re-marked, so reopening an untouched session does not grow its log per
619
+ * pickup and the event need not be at the current `firstLiveSeq`.
620
+ *
621
+ * `Session`'s constructor is the only legitimate writer. The invariant
622
+ * companion deliberately constrains nothing here, so a plugin appending one
623
+ * would silently classify every live bracket before it as seed history.
624
+ *
625
+ * An owner of a standalone open/close bracket (`compaction/start` …
626
+ * `compaction/end`) reads it because seed history and live work are otherwise
627
+ * byte-identical: an unmatched opening marker before this event belongs to
628
+ * an ended lifecycle, whatever ended it. NOT a liveness signal about other
629
+ * writers — a concurrently live session holds its own boundary elsewhere,
630
+ * so tolerating concurrent writers needs a signal beyond the log.
631
+ */
632
+ 'session/end-seed': Record<string, never>
633
+ ```
634
+
635
+ Source: [`packages/core/session/src/types.ts:332`](../packages/core/session/src/types.ts)
636
+
637
+ <a id="sessiontitle--log-only"></a>
638
+
639
+ #### `session/title` — log-only
640
+
641
+ ```ts persistence-catalog
642
+ /**
643
+ * Latest-wins session title snapshot. Log-only: it never enters the model
644
+ * surface or derived history.
645
+ */
646
+ 'session/title': SessionTitleEventData
647
+ ```
648
+
649
+ Types: [SessionTitleEventData](subsystems/session-title.md)
650
+
651
+ Source: [`packages/session/session-title/src/index.ts:100`](../packages/session/session-title/src/index.ts)
652
+
653
+ <a id="sessiontitle-llm-request--log-only"></a>
654
+
655
+ #### `session/title-llm-request` — log-only
656
+
657
+ ```ts persistence-catalog
658
+ /** Log-only pre-dispatch record of one session-title model request. */
659
+ 'session/title-llm-request': SessionTitleLlmRequestEventData
660
+ ```
661
+
662
+ Types: [SessionTitleLlmRequestEventData](subsystems/session-title.md)
663
+
664
+ Source: [`packages/session/session-title-llm/src/index.ts:43`](../packages/session/session-title-llm/src/index.ts)
665
+
666
+ ### `step/*`
667
+
668
+ <a id="stepend--log-only"></a>
669
+
670
+ #### `step/end` — log-only
671
+
672
+ ```ts persistence-catalog
673
+ /** Closes step `step` of turn `turn`. */
674
+ 'step/end': { turn: number; step: number }
675
+ ```
676
+
677
+ Source: [`packages/core/session/src/types.ts:256`](../packages/core/session/src/types.ts)
678
+
679
+ <a id="stepstart--log-only"></a>
680
+
681
+ #### `step/start` — log-only
682
+
683
+ ```ts persistence-catalog
684
+ /** Opens step `step` of turn `turn` — one model call plus the tool executions it requested. */
685
+ 'step/start': { turn: number; step: number }
686
+ ```
687
+
688
+ Source: [`packages/core/session/src/types.ts:254`](../packages/core/session/src/types.ts)
689
+
690
+ ### `subagent/*`
691
+
692
+ <a id="subagentdescriptor--log-only"></a>
693
+
694
+ #### `subagent/descriptor` — log-only
695
+
696
+ ```ts persistence-catalog
697
+ /**
698
+ * Durable identity and lifecycle mode of a session-backed subagent child,
699
+ * appended once by the establishing provider inside the child's initial
700
+ * turn, before its first request. Continuable records also carry their
701
+ * resumable composition. Log-only: it carries no `surfaceOp`, never enters
702
+ * model history, and survives compaction.
703
+ */
704
+ 'subagent/descriptor': SubagentDescriptorData
705
+ ```
706
+
707
+ Source: [`packages/subagent/subagent/src/descriptor.ts:37`](../packages/subagent/subagent/src/descriptor.ts)
708
+
709
+ ### `todo/*`
710
+
711
+ <a id="todowrite--log-only"></a>
712
+
713
+ #### `todo/write` — log-only
714
+
715
+ ```ts persistence-catalog
716
+ /** Whole-list snapshot; latest write wins on replay. Log-only UI state; never derived history. */
717
+ 'todo/write': { todos: TodoItem[] }
718
+ ```
719
+
720
+ Types: [TodoItem](subsystems/session.md)
721
+
722
+ Source: [`packages/core/session/src/types.ts:299`](../packages/core/session/src/types.ts)
723
+
724
+ ### `tool/*`
725
+
726
+ <a id="toolcall--log-only"></a>
727
+
728
+ #### `tool/call` — log-only
729
+
730
+ ```ts persistence-catalog
731
+ /**
732
+ * The model requested one tool invocation: `name` with the raw `arguments`
733
+ * JSON string exactly as the model produced it (unparsed). `callId` pairs the
734
+ * call with its `tool/result`.
735
+ */
736
+ 'tool/call': { turn: number; step: number; callId: CallId; name: string; arguments: string }
737
+ ```
738
+
739
+ Types: [CallId](subsystems/core.md)
740
+
741
+ Source: [`packages/core/session/src/types.ts:279`](../packages/core/session/src/types.ts)
742
+
743
+ <a id="toolcode-dispatch--log-only"></a>
744
+
745
+ #### `tool/code-dispatch` — log-only
746
+
747
+ ```ts persistence-catalog
748
+ /**
749
+ * One bridged sub-dispatch SETTLING: the pairing ids (matching the
750
+ * `tool/code-dispatch-start` with the same `subCallId`), the tool `name`
751
+ * with the same JSON-normalized `arguments`, and the sub-call's complete
752
+ * model-facing outcome in `tool/result`'s own vocabulary
753
+ * (`content` + `isError`), so UIs render a sub-call through the exact
754
+ * code path that renders a native call. Every started sub-call settles
755
+ * with exactly one of these (abort included: the aborted pipeline result
756
+ * is an `isError` outcome).
757
+ * Log-only: `deriveMessages()` ignores it, so sub-calls never re-enter
758
+ * model context; persistence and UIs get every call. Appended inside the
759
+ * parent `run_code`'s execution (the bridge drains in-flight dispatches
760
+ * before returning), so its execution-enclosure relation holds by
761
+ * construction.
762
+ */
763
+ 'tool/code-dispatch': CodeDispatchEventData
764
+ ```
765
+
766
+ Source: [`packages/core/tools/src/types.ts:56`](../packages/core/tools/src/types.ts)
767
+
768
+ <a id="toolcode-dispatch-start--log-only"></a>
769
+
770
+ #### `tool/code-dispatch-start` — log-only
771
+
772
+ ```ts persistence-catalog
773
+ /**
774
+ * One sub-dispatch STARTING inside a `run_code` program: the parent
775
+ * `run_code` call id, the deterministic sub-call id (`<parent>:code:<n>`,
776
+ * numbered in submission order), and the tool `name` with its
777
+ * JSON-normalized `arguments` — the exact value dispatched, normalized
778
+ * BEFORE dispatch, so this append can never fail on payload shape.
779
+ * Appended when the scheduler actually starts the call (not at
780
+ * submission), so a start means the tool body pipeline was entered; a
781
+ * call abandoned in the queue logs nothing. Log-only: `deriveMessages()`
782
+ * ignores it; UIs use it for live per-sub-call running state and pair it
783
+ * with `tool/code-dispatch` by `subCallId` (timing = the two events'
784
+ * `time` fields).
785
+ */
786
+ 'tool/code-dispatch-start': CodeDispatchStartEventData
787
+ ```
788
+
789
+ Source: [`packages/core/tools/src/types.ts:40`](../packages/core/tools/src/types.ts)
790
+
791
+ <a id="toolresult--surface"></a>
792
+
793
+ #### `tool/result` — surface
794
+
795
+ ```ts persistence-catalog
796
+ /**
797
+ * A completed tool call's model-facing result, optional internal failure
798
+ * identity, and optional tool-private `meta` presentation payload. `meta` is
799
+ * opaque to the core (the producing tool owns its shape and reads it back in
800
+ * `presentResult`) but MUST be JSON-serializable: `Session.append`
801
+ * runtime-validates all event data with `isJsonValue`, so a non-serializable
802
+ * `meta` is rejected at the source, and the durable log reproduces the
803
+ * identical card on replay. Absent
804
+ * unless the tool attaches one (e.g. `dsh-tool-fs` carries its result-time
805
+ * contextual diff here).
806
+ */
807
+ 'tool/result': {
808
+ turn: number
809
+ step: number
810
+ message: ToolResultMessage
811
+ error?: { name: string; code: string }
812
+ meta?: JsonValue
813
+ }
814
+ ```
815
+
816
+ Source: [`packages/core/session/src/types.ts:291`](../packages/core/session/src/types.ts)
817
+
818
+ ### `tool-workflow/*`
819
+
820
+ <a id="tool-workflowagent-end--log-only"></a>
821
+
822
+ #### `tool-workflow/agent-end` — log-only
823
+
824
+ ```ts persistence-catalog
825
+ /**
826
+ * Records one member settlement.
827
+ * @param data - run identity, paired member sequence, and outcome.
828
+ */
829
+ 'tool-workflow/agent-end': ToolWorkflowAgentEndData
830
+ ```
831
+
832
+ Source: [`packages/workflow/tool-workflow/src/types.ts:57`](../packages/workflow/tool-workflow/src/types.ts)
833
+
834
+ <a id="tool-workflowagent-start--log-only"></a>
835
+
836
+ #### `tool-workflow/agent-start` — log-only
837
+
838
+ ```ts persistence-catalog
839
+ /**
840
+ * Records one published workflow member.
841
+ * @param data - run identity, member sequence, display identity, and child Session.
842
+ */
843
+ 'tool-workflow/agent-start': ToolWorkflowAgentStartData
844
+ ```
845
+
846
+ Source: [`packages/workflow/tool-workflow/src/types.ts:52`](../packages/workflow/tool-workflow/src/types.ts)
847
+
848
+ <a id="tool-workflowrun-end--log-only"></a>
849
+
850
+ #### `tool-workflow/run-end` — log-only
851
+
852
+ ```ts persistence-catalog
853
+ /**
854
+ * Closes one workflow record after cleanup.
855
+ * @param data - stable run identity and terminal reason.
856
+ */
857
+ 'tool-workflow/run-end': ToolWorkflowRunEndData
858
+ ```
859
+
860
+ Source: [`packages/workflow/tool-workflow/src/types.ts:62`](../packages/workflow/tool-workflow/src/types.ts)
861
+
862
+ <a id="tool-workflowrun-start--log-only"></a>
863
+
864
+ #### `tool-workflow/run-start` — log-only
865
+
866
+ ```ts persistence-catalog
867
+ /**
868
+ * Opens one top-level workflow record.
869
+ * @param data - stable run identity and display name.
870
+ */
871
+ 'tool-workflow/run-start': ToolWorkflowRunStartData
872
+ ```
873
+
874
+ Source: [`packages/workflow/tool-workflow/src/types.ts:47`](../packages/workflow/tool-workflow/src/types.ts)
875
+
876
+ ### `turn/*`
877
+
878
+ <a id="turnend--log-only"></a>
879
+
880
+ #### `turn/end` — log-only
881
+
882
+ ```ts persistence-catalog
883
+ /**
884
+ * Closes turn `turn` with the {@link TurnEndReason} that ended it. A turn
885
+ * with no entered step has no `step/start` or `step/end`. The loop does not await a
886
+ * flush at turn boundaries: `dsh-session-checkpoint-policy` owns the
887
+ * per-request durability checkpoint, and consumers that read storage after
888
+ * `whenIdle()` flush themselves. Success commits the turn; rejection is
889
+ * reported live and does not prevent later work.
890
+ */
891
+ 'turn/end': { turn: number; reason: TurnEndReason }
892
+ ```
893
+
894
+ Types: [TurnEndReason](subsystems/session.md)
895
+
896
+ Source: [`packages/core/session/src/types.ts:252`](../packages/core/session/src/types.ts)
897
+
898
+ <a id="turnstart--log-only"></a>
899
+
900
+ #### `turn/start` — log-only
901
+
902
+ ```ts persistence-catalog
903
+ /**
904
+ * Opens turn `turn` before the loop claims queued input or runs pre-step.
905
+ * Rejection, empty input, cancellation, or failure may close it with no
906
+ * step; otherwise the following identified `user/message` event or batch
907
+ * records the messages entering the step.
908
+ */
909
+ 'turn/start': { turn: number }
910
+ ```
911
+
912
+ Source: [`packages/core/session/src/types.ts:243`](../packages/core/session/src/types.ts)
913
+
914
+ ### `user/*`
915
+
916
+ <a id="usermessage--surface"></a>
917
+
918
+ #### `user/message` — surface
919
+
920
+ ```ts persistence-catalog
921
+ /**
922
+ * A user-role message on the model-visible surface: a direct human prompt
923
+ * (the queued message claimed for this turn), a synthetic `agent.inject()`
924
+ * context (file-change notices, subdir AGENTS.md, skill content, cron
925
+ * notifications, …), or an entered goal continuation round. All three
926
+ * project their `content` verbatim; `source` tells them apart.
927
+ */
928
+ 'user/message': UserMessage
929
+ ```
930
+
931
+ Source: [`packages/core/session/src/types.ts:264`](../packages/core/session/src/types.ts)
932
+
933
+ ### `web/*`
934
+
935
+ <a id="webdeepseek-search-llm-request--log-only"></a>
936
+
937
+ #### `web/deepseek-search-llm-request` — log-only
938
+
939
+ ```ts persistence-catalog
940
+ /** Secret-free auxiliary DeepSeek search request recorded before dispatch. */
941
+ 'web/deepseek-search-llm-request': DeepSeekSearchLlmRequest
942
+ ```
943
+
944
+ Source: [`packages/web/web-search-deepseek/src/provider.ts:83`](../packages/web/web-search-deepseek/src/provider.ts)