dsh-plugin-dev-kb 1.3.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (631) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.en.md +6 -6
  3. package/README.md +13 -8
  4. package/kb/INDEX.md +25 -21
  5. package/kb/README.md +6 -4
  6. package/kb/extra/AGENTS.md +14 -12
  7. package/kb/extra/agent-lifecycle.md +91 -0
  8. package/kb/extra/agent-lifecycle.zh.md +93 -0
  9. package/kb/extra/api-gateway.md +172 -0
  10. package/kb/extra/api-gateway.zh.md +178 -0
  11. package/kb/extra/architecture.md +165 -0
  12. package/kb/extra/architecture.zh.md +169 -0
  13. package/kb/extra/capability-seams.md +714 -0
  14. package/kb/extra/capability-seams.zh.md +716 -0
  15. package/kb/extra/cli-help.md +203 -0
  16. package/kb/extra/cli-help.zh.md +205 -0
  17. package/kb/extra/config-catalog.md +4801 -0
  18. package/kb/extra/config-catalog.zh.md +4803 -0
  19. package/kb/extra/cookbook/adding-a-package.md +170 -0
  20. package/kb/extra/cookbook/adding-a-package.zh.md +170 -0
  21. package/kb/extra/cookbook/adding-a-plugin-preview.md +52 -0
  22. package/kb/extra/cookbook/adding-a-plugin-preview.zh.md +52 -0
  23. package/kb/extra/cookbook/adding-a-remote-api.md +2 -2
  24. package/kb/extra/cookbook/adding-a-remote-api.zh.md +2 -2
  25. package/kb/extra/cookbook/adding-a-session-format-version.md +51 -7
  26. package/kb/extra/cookbook/adding-a-session-format-version.zh.md +51 -7
  27. package/kb/extra/cookbook/adding-a-settings-card.md +72 -0
  28. package/kb/extra/cookbook/adding-a-settings-card.zh.md +72 -0
  29. package/kb/extra/cookbook/adding-a-tool.md +101 -0
  30. package/kb/extra/cookbook/adding-a-tool.zh.md +103 -0
  31. package/kb/extra/cookbook/adding-an-llm-adapter.md +43 -0
  32. package/kb/extra/cookbook/adding-an-llm-adapter.zh.md +43 -0
  33. package/kb/extra/cookbook/extension-cookbook.md +132 -0
  34. package/kb/extra/cookbook/extension-cookbook.zh.md +136 -0
  35. package/kb/extra/cookbook/reviewing-persistence-type-changes.md +122 -0
  36. package/kb/extra/cookbook/reviewing-persistence-type-changes.zh.md +122 -0
  37. package/kb/extra/cordis-api/context.md +364 -0
  38. package/kb/extra/cordis-api/context.zh.md +366 -0
  39. package/kb/extra/cordis-api/events.md +207 -0
  40. package/kb/extra/cordis-api/events.zh.md +209 -0
  41. package/kb/extra/cordis-api/fiber.md +375 -0
  42. package/kb/extra/cordis-api/fiber.zh.md +377 -0
  43. package/kb/extra/cordis-api/inherited.md +38 -0
  44. package/kb/extra/cordis-api/registry.md +152 -0
  45. package/kb/extra/cordis-api/registry.zh.md +154 -0
  46. package/kb/extra/cordis-api/service.md +102 -0
  47. package/kb/extra/cordis-api/service.zh.md +104 -0
  48. package/kb/extra/cordis-tutorial/01-first-plugin.md +95 -0
  49. package/kb/extra/cordis-tutorial/01-first-plugin.zh.md +95 -0
  50. package/kb/extra/cordis-tutorial/02-lifecycle-and-effects.md +98 -0
  51. package/kb/extra/cordis-tutorial/02-lifecycle-and-effects.zh.md +98 -0
  52. package/kb/extra/cordis-tutorial/03-services.md +98 -0
  53. package/kb/extra/cordis-tutorial/03-services.zh.md +98 -0
  54. package/kb/extra/cordis-tutorial/04-events.md +144 -0
  55. package/kb/extra/cordis-tutorial/04-events.zh.md +144 -0
  56. package/kb/extra/cordis-tutorial/05-config.md +111 -0
  57. package/kb/extra/cordis-tutorial/05-config.zh.md +111 -0
  58. package/kb/extra/cordis-tutorial/06-composition-and-hmr.md +113 -0
  59. package/kb/extra/cordis-tutorial/06-composition-and-hmr.zh.md +113 -0
  60. package/kb/extra/cordis-tutorial/07-into-the-harness.md +108 -0
  61. package/kb/extra/cordis-tutorial/07-into-the-harness.zh.md +108 -0
  62. package/kb/extra/cordis-tutorial/index.md +60 -0
  63. package/kb/extra/cordis-tutorial/index.zh.md +62 -0
  64. package/kb/extra/deepseek-llm-api-wire-extensions.md +22 -23
  65. package/kb/extra/deepseek-llm-api-wire-extensions.zh.md +21 -22
  66. package/kb/extra/defensive-patterns/README.md +25 -0
  67. package/kb/extra/defensive-patterns/README.zh.md +27 -0
  68. package/kb/extra/defensive-patterns/client-components.md +493 -0
  69. package/kb/extra/defensive-patterns/client-components.zh.md +495 -0
  70. package/kb/extra/defensive-patterns/conversation-and-session.md +316 -0
  71. package/kb/extra/defensive-patterns/conversation-and-session.zh.md +316 -0
  72. package/kb/extra/defensive-patterns/general.md +222 -0
  73. package/kb/extra/defensive-patterns/general.zh.md +252 -0
  74. package/kb/extra/defensive-patterns/package-surface.md +231 -0
  75. package/kb/extra/defensive-patterns/package-surface.zh.md +231 -0
  76. package/kb/extra/defensive-patterns/remote-and-api.md +115 -0
  77. package/kb/extra/defensive-patterns/remote-and-api.zh.md +115 -0
  78. package/kb/extra/development.md +55 -18
  79. package/kb/extra/development.zh.md +56 -18
  80. package/kb/extra/event-producer-consumer.md +90 -68
  81. package/kb/extra/event-producer-consumer.zh.md +91 -69
  82. package/kb/extra/experimental-persistence-catalog.md +17 -0
  83. package/kb/extra/experimental-persistence-catalog.zh.md +17 -0
  84. package/kb/extra/glossary.md +2 -1
  85. package/kb/extra/glossary.zh.md +2 -1
  86. package/kb/extra/i18n/README.md +15 -7
  87. package/kb/extra/i18n/README.zh.md +15 -7
  88. package/kb/extra/i18n/style-samples.md +2 -2
  89. package/kb/extra/i18n/terminology.md +5 -4
  90. package/kb/extra/i18n/translation-prompt.md +2 -2
  91. package/kb/extra/module-graph.md +759 -432
  92. package/kb/extra/module-graph.zh.md +759 -432
  93. package/kb/extra/persistence-catalog.md +9140 -0
  94. package/kb/extra/persistence-catalog.zh.md +9142 -0
  95. package/kb/extra/persistence-changes/2026-09-11-initial.md +280 -0
  96. package/kb/extra/persistence-changes/2026-09-11-initial.zh.md +280 -0
  97. package/kb/extra/persistence-changes/2026-09-12-auto-review-error-metadata.md +52 -0
  98. package/kb/extra/persistence-changes/2026-09-12-auto-review-error-metadata.zh.md +52 -0
  99. package/kb/extra/persistence-changes/2026-09-13-working-directory.md +48 -0
  100. package/kb/extra/persistence-changes/2026-09-13-working-directory.zh.md +48 -0
  101. package/kb/extra/persistence-changes/2026-09-14-image-offload.md +96 -0
  102. package/kb/extra/persistence-changes/2026-09-14-image-offload.zh.md +96 -0
  103. package/kb/extra/persistence-changes/2026-09-14-workspace-changes-event.md +48 -0
  104. package/kb/extra/persistence-changes/2026-09-14-workspace-changes-event.zh.md +48 -0
  105. package/kb/extra/persistence-changes/2026-09-16-session-format-v4.md +120 -0
  106. package/kb/extra/persistence-changes/2026-09-16-session-format-v4.zh.md +120 -0
  107. package/kb/extra/persistence-changes/2026-09-18-schedule-optional-title.md +48 -0
  108. package/kb/extra/persistence-changes/2026-09-18-schedule-optional-title.zh.md +48 -0
  109. package/kb/extra/persistence-changes/2026-09-19-external-subagent-catalog.md +48 -0
  110. package/kb/extra/persistence-changes/2026-09-19-external-subagent-catalog.zh.md +48 -0
  111. package/kb/extra/persistence-changes/2026-09-20-unknown-child-catalog.md +48 -0
  112. package/kb/extra/persistence-changes/2026-09-20-unknown-child-catalog.zh.md +48 -0
  113. package/kb/extra/persistence-changes/2026-09-21-user-question-reply.md +60 -0
  114. package/kb/extra/persistence-changes/2026-09-21-user-question-reply.zh.md +60 -0
  115. package/kb/extra/persistence-changes/2026-09-30-job-session-lifecycle.md +52 -0
  116. package/kb/extra/persistence-changes/2026-09-30-job-session-lifecycle.zh.md +52 -0
  117. package/kb/extra/persistence-changes/2026-10-05-ptc-operation-metadata.md +48 -0
  118. package/kb/extra/persistence-changes/2026-10-05-ptc-operation-metadata.zh.md +48 -0
  119. package/kb/extra/persistence-changes/2026-10-05-working-directory-attribution.md +60 -0
  120. package/kb/extra/persistence-changes/2026-10-05-working-directory-attribution.zh.md +60 -0
  121. package/kb/extra/persistence-changes/2026-10-07-title-reasoning-effort.md +48 -0
  122. package/kb/extra/persistence-changes/2026-10-07-title-reasoning-effort.zh.md +48 -0
  123. package/kb/extra/persistence-changes/2026-10-13-deepseek-search-thinking.md +48 -0
  124. package/kb/extra/persistence-changes/2026-10-13-deepseek-search-thinking.zh.md +48 -0
  125. package/kb/extra/persistence-changes/2026-10-13-user-rpc-principal.md +60 -0
  126. package/kb/extra/persistence-changes/2026-10-13-user-rpc-principal.zh.md +60 -0
  127. package/kb/extra/persistence-changes/README.md +90 -0
  128. package/kb/extra/persistence-changes/README.zh.md +90 -0
  129. package/kb/extra/persistence-changes/historical-formats/README.md +75 -0
  130. package/kb/extra/persistence-changes/historical-formats/README.zh.md +75 -0
  131. package/kb/extra/persistence-changes/historical-formats/v0.md +5105 -0
  132. package/kb/extra/persistence-changes/historical-formats/v0.zh.md +5105 -0
  133. package/kb/extra/persistence-changes/historical-formats/v1.md +5107 -0
  134. package/kb/extra/persistence-changes/historical-formats/v1.zh.md +5107 -0
  135. package/kb/extra/persistence-changes/historical-formats/v2.md +5362 -0
  136. package/kb/extra/persistence-changes/historical-formats/v2.zh.md +5362 -0
  137. package/kb/extra/persistence-changes/historical-formats/v3.md +5634 -0
  138. package/kb/extra/persistence-changes/historical-formats/v3.zh.md +5634 -0
  139. package/kb/extra/persistence-changes/releases/README.md +103 -0
  140. package/kb/extra/persistence-changes/releases/README.zh.md +103 -0
  141. package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.1.md +201 -0
  142. package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.1.zh.md +201 -0
  143. package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.2.md +261 -0
  144. package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.2.zh.md +261 -0
  145. package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.3.md +126 -0
  146. package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.3.zh.md +126 -0
  147. package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.4.md +75 -0
  148. package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.4.zh.md +75 -0
  149. package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.5.md +75 -0
  150. package/kb/extra/persistence-changes/releases/dsh-v0.0.1-rc.5.zh.md +75 -0
  151. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.1.md +75 -0
  152. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.1.zh.md +75 -0
  153. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.2.md +75 -0
  154. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.2.zh.md +75 -0
  155. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.3.md +75 -0
  156. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.3.zh.md +75 -0
  157. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.5.md +75 -0
  158. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.5.zh.md +75 -0
  159. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.6.md +75 -0
  160. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.6.zh.md +75 -0
  161. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.7.md +82 -0
  162. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.7.zh.md +82 -0
  163. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.8.md +110 -0
  164. package/kb/extra/persistence-changes/releases/dsh-v0.1.0-rc.8.zh.md +110 -0
  165. package/kb/extra/persistence-changes/releases/dsh-v0.1.1-rc.1.md +82 -0
  166. package/kb/extra/persistence-changes/releases/dsh-v0.1.1-rc.1.zh.md +82 -0
  167. package/kb/extra/persistence-changes/releases/dsh-v0.1.1-rc.2.md +119 -0
  168. package/kb/extra/persistence-changes/releases/dsh-v0.1.1-rc.2.zh.md +119 -0
  169. package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.1.md +295 -0
  170. package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.1.zh.md +295 -0
  171. package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.2.md +286 -0
  172. package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.2.zh.md +286 -0
  173. package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.3.md +75 -0
  174. package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.3.zh.md +75 -0
  175. package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.4.md +95 -0
  176. package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.4.zh.md +95 -0
  177. package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.5.md +75 -0
  178. package/kb/extra/persistence-changes/releases/dsh-v0.1.2-alpha.5.zh.md +75 -0
  179. package/kb/extra/persistence-changes/releases/dsh-v0.1.2-rc.1.md +75 -0
  180. package/kb/extra/persistence-changes/releases/dsh-v0.1.2-rc.1.zh.md +75 -0
  181. package/kb/extra/persistence-changes/releases/dsh-v0.1.3-alpha.1.md +154 -0
  182. package/kb/extra/persistence-changes/releases/dsh-v0.1.3-alpha.1.zh.md +154 -0
  183. package/kb/extra/persistence-changes/releases/dsh-v0.1.3-alpha.2.md +86 -0
  184. package/kb/extra/persistence-changes/releases/dsh-v0.1.3-alpha.2.zh.md +86 -0
  185. package/kb/extra/persistence-changes/releases/dsh-v0.1.5-alpha.1.md +139 -0
  186. package/kb/extra/persistence-changes/releases/dsh-v0.1.5-alpha.1.zh.md +139 -0
  187. package/kb/extra/persistence-changes/releases/dsh-v0.1.5-alpha.2.md +95 -0
  188. package/kb/extra/persistence-changes/releases/dsh-v0.1.5-alpha.2.zh.md +95 -0
  189. package/kb/extra/persistence-changes/releases/dsh-v0.1.5-rc.1.md +75 -0
  190. package/kb/extra/persistence-changes/releases/dsh-v0.1.5-rc.1.zh.md +75 -0
  191. package/kb/extra/persistence-changes/releases/dsh-v0.1.5-rc.2.md +75 -0
  192. package/kb/extra/persistence-changes/releases/dsh-v0.1.5-rc.2.zh.md +75 -0
  193. package/kb/extra/rescope.md +1 -1
  194. package/kb/extra/rescope.zh.md +1 -1
  195. package/kb/extra/session-format-status.md +24 -8
  196. package/kb/extra/session-format-status.zh.md +24 -8
  197. package/kb/extra/subsystems/README.md +76 -0
  198. package/kb/extra/subsystems/README.zh.md +76 -0
  199. package/kb/extra/subsystems/agent-team.md +61 -37
  200. package/kb/extra/subsystems/agent-team.zh.md +61 -37
  201. package/kb/extra/subsystems/approval.md +170 -0
  202. package/kb/extra/subsystems/approval.zh.md +170 -0
  203. package/kb/extra/subsystems/attachment.md +19 -9
  204. package/kb/extra/subsystems/attachment.zh.md +19 -9
  205. package/kb/extra/subsystems/boot.md +447 -0
  206. package/kb/extra/subsystems/boot.zh.md +447 -0
  207. package/kb/extra/subsystems/browser-use.md +67 -0
  208. package/kb/extra/subsystems/browser-use.zh.md +67 -0
  209. package/kb/extra/subsystems/claude-code-mods.md +146 -0
  210. package/kb/extra/subsystems/claude-code-mods.zh.md +146 -0
  211. package/kb/extra/subsystems/client-modules.md +198 -0
  212. package/kb/extra/subsystems/client-modules.zh.md +198 -0
  213. package/kb/extra/subsystems/client-resources.md +92 -0
  214. package/kb/extra/subsystems/client-resources.zh.md +92 -0
  215. package/kb/extra/subsystems/commands.md +223 -0
  216. package/kb/extra/subsystems/commands.zh.md +223 -0
  217. package/kb/extra/subsystems/compaction.md +284 -0
  218. package/kb/extra/subsystems/compaction.zh.md +284 -0
  219. package/kb/extra/subsystems/computer-use.md +59 -0
  220. package/kb/extra/subsystems/computer-use.zh.md +59 -0
  221. package/kb/extra/subsystems/conversation.md +301 -0
  222. package/kb/extra/subsystems/conversation.zh.md +303 -0
  223. package/kb/extra/subsystems/core.md +1113 -0
  224. package/kb/extra/subsystems/core.zh.md +1125 -0
  225. package/kb/extra/subsystems/credentials.md +493 -0
  226. package/kb/extra/subsystems/credentials.zh.md +493 -0
  227. package/kb/extra/subsystems/deliverables.md +178 -0
  228. package/kb/extra/subsystems/deliverables.zh.md +178 -0
  229. package/kb/extra/subsystems/extensions.md +6 -4
  230. package/kb/extra/subsystems/extensions.zh.md +6 -4
  231. package/kb/extra/subsystems/feedback.md +4 -4
  232. package/kb/extra/subsystems/feedback.zh.md +4 -4
  233. package/kb/extra/subsystems/filesystem.md +530 -0
  234. package/kb/extra/subsystems/filesystem.zh.md +530 -0
  235. package/kb/extra/subsystems/goal.md +313 -0
  236. package/kb/extra/subsystems/goal.zh.md +313 -0
  237. package/kb/extra/subsystems/jobs.md +554 -0
  238. package/kb/extra/subsystems/jobs.zh.md +554 -0
  239. package/kb/extra/subsystems/llm-streaming.md +1196 -0
  240. package/kb/extra/subsystems/llm-streaming.zh.md +1202 -0
  241. package/kb/extra/subsystems/lsp.md +202 -0
  242. package/kb/extra/subsystems/lsp.zh.md +202 -0
  243. package/kb/extra/subsystems/mcp.md +139 -0
  244. package/kb/extra/subsystems/mcp.zh.md +139 -0
  245. package/kb/extra/subsystems/office-to-pdf.md +87 -0
  246. package/kb/extra/subsystems/office-to-pdf.zh.md +87 -0
  247. package/kb/extra/subsystems/otel.md +44 -0
  248. package/kb/extra/subsystems/otel.zh.md +44 -0
  249. package/kb/extra/subsystems/permission-presets.md +167 -0
  250. package/kb/extra/subsystems/permission-presets.zh.md +167 -0
  251. package/kb/extra/subsystems/persistence.md +418 -0
  252. package/kb/extra/subsystems/persistence.zh.md +418 -0
  253. package/kb/extra/subsystems/plan.md +87 -0
  254. package/kb/extra/subsystems/plan.zh.md +87 -0
  255. package/kb/extra/subsystems/product-telemetry.md +81 -0
  256. package/kb/extra/subsystems/product-telemetry.zh.md +81 -0
  257. package/kb/extra/subsystems/ptc-runtime.md +250 -0
  258. package/kb/extra/subsystems/ptc-runtime.zh.md +250 -0
  259. package/kb/extra/subsystems/sandbox.md +221 -0
  260. package/kb/extra/subsystems/sandbox.zh.md +221 -0
  261. package/kb/extra/subsystems/schedule.md +550 -0
  262. package/kb/extra/subsystems/schedule.zh.md +550 -0
  263. package/kb/extra/subsystems/scope.md +59 -0
  264. package/kb/extra/subsystems/scope.zh.md +61 -0
  265. package/kb/extra/subsystems/session-projection.md +356 -0
  266. package/kb/extra/subsystems/session-projection.zh.md +356 -0
  267. package/kb/extra/subsystems/session-query.md +511 -0
  268. package/kb/extra/subsystems/session-query.zh.md +511 -0
  269. package/kb/extra/subsystems/session-reference.md +224 -0
  270. package/kb/extra/subsystems/session-reference.zh.md +224 -0
  271. package/kb/extra/subsystems/session-telemetry.md +212 -0
  272. package/kb/extra/subsystems/session-telemetry.zh.md +212 -0
  273. package/kb/extra/subsystems/session-title.md +213 -0
  274. package/kb/extra/subsystems/session-title.zh.md +213 -0
  275. package/kb/extra/subsystems/session.md +1339 -0
  276. package/kb/extra/subsystems/session.zh.md +1343 -0
  277. package/kb/extra/subsystems/settings.md +155 -0
  278. package/kb/extra/subsystems/settings.zh.md +155 -0
  279. package/kb/extra/subsystems/shell.md +314 -0
  280. package/kb/extra/subsystems/shell.zh.md +314 -0
  281. package/kb/extra/subsystems/sidebar-right.md +160 -0
  282. package/kb/extra/subsystems/sidebar-right.zh.md +160 -0
  283. package/kb/extra/subsystems/skills.md +352 -0
  284. package/kb/extra/subsystems/skills.zh.md +352 -0
  285. package/kb/extra/subsystems/slots.md +200 -0
  286. package/kb/extra/subsystems/slots.zh.md +204 -0
  287. package/kb/extra/subsystems/spill.md +124 -0
  288. package/kb/extra/subsystems/spill.zh.md +124 -0
  289. package/kb/extra/subsystems/ssh.md +146 -0
  290. package/kb/extra/subsystems/ssh.zh.md +146 -0
  291. package/kb/extra/subsystems/storage.md +259 -0
  292. package/kb/extra/subsystems/storage.zh.md +259 -0
  293. package/kb/extra/subsystems/subagent.md +686 -0
  294. package/kb/extra/subsystems/subagent.zh.md +688 -0
  295. package/kb/extra/subsystems/subprocess.md +321 -0
  296. package/kb/extra/subsystems/subprocess.zh.md +321 -0
  297. package/kb/extra/subsystems/system-prompt.md +254 -0
  298. package/kb/extra/subsystems/system-prompt.zh.md +254 -0
  299. package/kb/extra/subsystems/terminal.md +184 -0
  300. package/kb/extra/subsystems/terminal.zh.md +184 -0
  301. package/kb/extra/subsystems/todo.md +3 -3
  302. package/kb/extra/subsystems/todo.zh.md +3 -3
  303. package/kb/extra/subsystems/token-meter.md +106 -0
  304. package/kb/extra/subsystems/token-meter.zh.md +106 -0
  305. package/kb/extra/subsystems/tools.md +747 -0
  306. package/kb/extra/subsystems/tools.zh.md +747 -0
  307. package/kb/extra/subsystems/translation.md +103 -0
  308. package/kb/extra/subsystems/translation.zh.md +103 -0
  309. package/kb/extra/subsystems/typert.md +690 -0
  310. package/kb/extra/subsystems/typert.zh.md +690 -0
  311. package/kb/extra/subsystems/user-questions.md +307 -0
  312. package/kb/extra/subsystems/user-questions.zh.md +307 -0
  313. package/kb/extra/subsystems/voice-input.md +164 -0
  314. package/kb/extra/subsystems/voice-input.zh.md +164 -0
  315. package/kb/extra/subsystems/web-client.md +100 -0
  316. package/kb/extra/subsystems/web-client.zh.md +100 -0
  317. package/kb/extra/subsystems/web-server.md +302 -0
  318. package/kb/extra/subsystems/web-server.zh.md +302 -0
  319. package/kb/extra/subsystems/web.md +206 -0
  320. package/kb/extra/subsystems/web.zh.md +206 -0
  321. package/kb/extra/subsystems/webhook.md +4 -4
  322. package/kb/extra/subsystems/webhook.zh.md +2 -2
  323. package/kb/extra/subsystems/workflow.md +278 -0
  324. package/kb/extra/subsystems/workflow.zh.md +278 -0
  325. package/kb/extra/subsystems/working-directory.md +64 -0
  326. package/kb/extra/subsystems/working-directory.zh.md +64 -0
  327. package/kb/extra/subsystems/workspace.md +647 -0
  328. package/kb/extra/subsystems/workspace.zh.md +647 -0
  329. package/kb/extra/subsystems/worktrees.md +76 -0
  330. package/kb/extra/subsystems/worktrees.zh.md +76 -0
  331. package/kb/extra/testing.md +4 -4
  332. package/kb/extra/testing.zh.md +4 -4
  333. package/kb/extra/tool-catalog.md +2824 -0
  334. package/kb/extra/tool-catalog.zh.md +2832 -0
  335. package/kb/extra/tool-execution-pipeline.md +65 -0
  336. package/kb/extra/tool-execution-pipeline.zh.md +67 -0
  337. package/kb/extra/ui-radius.md +117 -0
  338. package/kb/extra/ui-radius.zh.md +117 -0
  339. package/kb/extra/upgrade-guide/v0.1.7-rc.2/schedule-optional-bundle/guide.md +22 -0
  340. package/kb/extra/upgrade-guide/v0.1.7-rc.2/schedule-optional-bundle/guide.zh.md +22 -0
  341. package/kb/extra/upgrade-guide/v0.1.7-rc.2/transcript-view-legacy-normal/guide.md +25 -0
  342. package/kb/extra/upgrade-guide/v0.1.7-rc.2/transcript-view-legacy-normal/guide.zh.md +25 -0
  343. package/kb/extra/upgrade-guide/v0.2.0-rc.2/account-sign-in-errors/guide.md +18 -0
  344. package/kb/extra/upgrade-guide/v0.2.0-rc.2/account-sign-in-errors/guide.zh.md +18 -0
  345. package/kb/extra/upgrade-guide/v0.2.0-rc.2/bundled-python-tests/guide.md +18 -0
  346. package/kb/extra/upgrade-guide/v0.2.0-rc.2/bundled-python-tests/guide.zh.md +18 -0
  347. package/kb/extra/upgrade-guide/v0.2.0-rc.2/primary-runtime-python-aliases/guide.md +18 -0
  348. package/kb/extra/upgrade-guide/v0.2.0-rc.2/primary-runtime-python-aliases/guide.zh.md +18 -0
  349. package/kb/extra/upgrade-guide/v0.2.0-rc.2/remove-runtime-invariants/guide.md +23 -0
  350. package/kb/extra/upgrade-guide/v0.2.0-rc.2/remove-runtime-invariants/guide.zh.md +23 -0
  351. package/kb/extra/upgrade-guide/v0.2.0-rc.2/schedule-bundle-retired/guide.md +22 -0
  352. package/kb/extra/upgrade-guide/v0.2.0-rc.2/schedule-bundle-retired/guide.zh.md +22 -0
  353. package/kb/extra/upgrade-guide/v0.2.0-rc.2/subpath-plugin-display-manifest/guide.md +27 -0
  354. package/kb/extra/upgrade-guide/v0.2.0-rc.2/subpath-plugin-display-manifest/guide.zh.md +27 -0
  355. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/deepseek-model-discovery/guide.md +17 -0
  356. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/deepseek-model-discovery/guide.zh.md +17 -0
  357. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/desktop-test-auth-popup/guide.md +18 -0
  358. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/desktop-test-auth-popup/guide.zh.md +18 -0
  359. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/experimental-package-composition/guide.md +28 -0
  360. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/experimental-package-composition/guide.zh.md +28 -0
  361. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/instruction-home-override/guide.md +20 -0
  362. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/instruction-home-override/guide.zh.md +20 -0
  363. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/job-id-identity/guide.md +18 -0
  364. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/job-id-identity/guide.zh.md +18 -0
  365. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/jsonl-persistence-plugin/guide.md +18 -0
  366. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/jsonl-persistence-plugin/guide.zh.md +18 -0
  367. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/mock-messages-events/guide.md +17 -0
  368. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/mock-messages-events/guide.zh.md +17 -0
  369. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/native-subagent-bundle-tools/guide.md +31 -0
  370. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/native-subagent-bundle-tools/guide.zh.md +31 -0
  371. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/new-session-generations/guide.md +20 -0
  372. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/new-session-generations/guide.zh.md +20 -0
  373. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/plugin-option-placement/guide.md +20 -0
  374. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/plugin-option-placement/guide.zh.md +20 -0
  375. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/python-optional-resources/guide.md +18 -0
  376. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/python-optional-resources/guide.zh.md +18 -0
  377. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/python-ptc-sandbox/guide.md +21 -0
  378. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/python-ptc-sandbox/guide.zh.md +21 -0
  379. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/session-title-adapters/guide.md +18 -0
  380. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/session-title-adapters/guide.zh.md +18 -0
  381. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/session-title-provider-strategy/guide.md +20 -0
  382. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/session-title-provider-strategy/guide.zh.md +20 -0
  383. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/ssh-helper-launch/guide.md +19 -0
  384. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/ssh-helper-launch/guide.zh.md +19 -0
  385. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/subagent-activations/guide.md +59 -0
  386. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/subagent-activations/guide.zh.md +59 -0
  387. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/subagent-preset-composition/guide.md +21 -0
  388. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/subagent-preset-composition/guide.zh.md +21 -0
  389. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/team-direct-inbox/guide.md +21 -0
  390. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/team-direct-inbox/guide.zh.md +21 -0
  391. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/terminal-command-labels/guide.md +18 -0
  392. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/terminal-command-labels/guide.zh.md +18 -0
  393. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/tool-presentation-mode/guide.md +21 -0
  394. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/tool-presentation-mode/guide.zh.md +21 -0
  395. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/web-listener-trust-config/guide.md +36 -0
  396. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/web-listener-trust-config/guide.zh.md +36 -0
  397. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/working-directory/guide.md +25 -0
  398. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/working-directory/guide.zh.md +25 -0
  399. package/kb/extra/upgrade-guide/v0.2.1-alpha.2/deepseek-account-identity-watch/guide.md +18 -0
  400. package/kb/extra/upgrade-guide/v0.2.1-alpha.2/deepseek-account-identity-watch/guide.zh.md +18 -0
  401. package/kb/extra/upgrade-guide/v0.2.1-alpha.2/deepseek-account-model-catalog/guide.md +27 -0
  402. package/kb/extra/upgrade-guide/v0.2.1-alpha.2/deepseek-account-model-catalog/guide.zh.md +27 -0
  403. package/kb/extra/upgrade-guide/v0.2.1-alpha.2/desktop-font-size-shortcuts/guide.md +18 -0
  404. package/kb/extra/upgrade-guide/v0.2.1-alpha.2/desktop-font-size-shortcuts/guide.zh.md +18 -0
  405. package/kb/extra/upgrade-guide/v0.2.1-alpha.2/from-default-profile-replaces-target/guide.md +20 -0
  406. package/kb/extra/upgrade-guide/v0.2.1-alpha.2/from-default-profile-replaces-target/guide.zh.md +20 -0
  407. package/kb/extra/upgrade-guide/v0.2.1-alpha.2/operator-connect/guide.md +18 -0
  408. package/kb/extra/upgrade-guide/v0.2.1-alpha.2/operator-connect/guide.zh.md +18 -0
  409. package/kb/extra/upgrade-guide/v0.2.1-alpha.2/pi-ai-azure-provider/guide.md +19 -0
  410. package/kb/extra/upgrade-guide/v0.2.1-alpha.2/pi-ai-azure-provider/guide.zh.md +19 -0
  411. package/kb/extra/upgrade-guide/v0.2.1-alpha.2/pi-ai-model-discovery/guide.md +17 -0
  412. package/kb/extra/upgrade-guide/v0.2.1-alpha.2/pi-ai-model-discovery/guide.zh.md +17 -0
  413. package/kb/extra/upgrade-guide/v0.2.1-alpha.2/plugin-install-over-installed/guide.md +20 -0
  414. package/kb/extra/upgrade-guide/v0.2.1-alpha.2/plugin-install-over-installed/guide.zh.md +20 -0
  415. package/kb/extra/upgrade-guide/v0.2.1-alpha.2/sdk-minimal-image-compaction/guide.md +32 -0
  416. package/kb/extra/upgrade-guide/v0.2.1-alpha.2/sdk-minimal-image-compaction/guide.zh.md +32 -0
  417. package/kb/extra/upgrade-guide/v0.2.1-alpha.2/stored-credentials-precedence/guide.md +25 -0
  418. package/kb/extra/upgrade-guide/v0.2.1-alpha.2/stored-credentials-precedence/guide.zh.md +25 -0
  419. package/kb/extra/upgrade-guide/v0.2.1-alpha.3/plugin-engines-dsh/guide.md +21 -0
  420. package/kb/extra/upgrade-guide/v0.2.1-alpha.3/plugin-engines-dsh/guide.zh.md +21 -0
  421. package/kb/extra/upgrade-guide/v0.2.1-alpha.4/account-notification-fields/guide.md +18 -0
  422. package/kb/extra/upgrade-guide/v0.2.1-alpha.4/account-notification-fields/guide.zh.md +18 -0
  423. package/kb/extra/web-styling.md +12 -3
  424. package/kb/extra/web-styling.zh.md +12 -3
  425. package/kb/meta/search-index.json +2690 -404
  426. package/kb/meta/site-pages.txt +188 -188
  427. package/kb/meta/source.json +7 -6
  428. package/kb/meta/topics.md +10 -6
  429. package/kb/site/develop/basic/config.md +1 -0
  430. package/kb/site/develop/basic/index.md +1 -0
  431. package/kb/site/develop/basic/publish.md +12 -3
  432. package/kb/site/develop/basic/tool.md +1 -0
  433. package/kb/site/develop/cordis-tutorial/01-first-plugin.md +1 -0
  434. package/kb/site/develop/cordis-tutorial/02-lifecycle-and-effects.md +1 -0
  435. package/kb/site/develop/cordis-tutorial/03-services.md +1 -0
  436. package/kb/site/develop/cordis-tutorial/04-events.md +1 -0
  437. package/kb/site/develop/cordis-tutorial/05-config.md +28 -0
  438. package/kb/site/develop/cordis-tutorial/06-composition-and-hmr.md +3 -2
  439. package/kb/site/develop/cordis-tutorial/07-into-the-harness.md +1 -0
  440. package/kb/site/develop/cordis-tutorial/index.md +1 -0
  441. package/kb/site/develop/framework/events.md +1 -0
  442. package/kb/site/develop/framework/index.md +2 -1
  443. package/kb/site/develop/framework/service.md +1 -0
  444. package/kb/site/develop/practice/dynamic-cordis.md +9 -8
  445. package/kb/site/develop/practice/index.md +1 -0
  446. package/kb/site/develop/practice/llm-adapter.md +2 -1
  447. package/kb/site/en/develop/basic/config.md +1 -0
  448. package/kb/site/en/develop/basic/index.md +1 -0
  449. package/kb/site/en/develop/basic/publish.md +12 -3
  450. package/kb/site/en/develop/basic/tool.md +1 -0
  451. package/kb/site/en/develop/cordis-tutorial/01-first-plugin.md +1 -0
  452. package/kb/site/en/develop/cordis-tutorial/02-lifecycle-and-effects.md +1 -0
  453. package/kb/site/en/develop/cordis-tutorial/03-services.md +1 -0
  454. package/kb/site/en/develop/cordis-tutorial/04-events.md +1 -0
  455. package/kb/site/en/develop/cordis-tutorial/05-config.md +28 -0
  456. package/kb/site/en/develop/cordis-tutorial/06-composition-and-hmr.md +3 -2
  457. package/kb/site/en/develop/cordis-tutorial/07-into-the-harness.md +1 -0
  458. package/kb/site/en/develop/cordis-tutorial/index.md +1 -0
  459. package/kb/site/en/develop/framework/events.md +1 -0
  460. package/kb/site/en/develop/framework/index.md +2 -1
  461. package/kb/site/en/develop/framework/service.md +1 -0
  462. package/kb/site/en/develop/practice/dynamic-cordis.md +9 -8
  463. package/kb/site/en/develop/practice/index.md +1 -0
  464. package/kb/site/en/develop/practice/llm-adapter.md +2 -1
  465. package/kb/site/en/guide/github-review.md +8 -10
  466. package/kb/site/en/guide/mcp-memory.md +1 -0
  467. package/kb/site/en/guide/network-proxy.md +2 -1
  468. package/kb/site/en/guide/plugin-market.md +151 -0
  469. package/kb/site/en/guide/providers-custom-form.png +0 -0
  470. package/kb/site/en/guide/providers-models-page.png +0 -0
  471. package/kb/site/en/guide/providers.md +121 -83
  472. package/kb/site/en/guide/public-deployments.md +40 -0
  473. package/kb/site/en/guide/python-sdk.md +49 -29
  474. package/kb/site/en/guide/quickstart.md +2 -0
  475. package/kb/site/en/guide/schedule.md +70 -11
  476. package/kb/site/en/reference/agent-lifecycle.md +1 -0
  477. package/kb/site/en/reference/api-gateway.md +22 -13
  478. package/kb/site/en/reference/capability-seams.md +242 -77
  479. package/kb/site/en/reference/config-catalog.md +2102 -904
  480. package/kb/site/en/reference/cookbook/adding-a-package.md +57 -3
  481. package/kb/site/en/reference/cookbook/adding-a-settings-card.md +35 -64
  482. package/kb/site/en/reference/cookbook/adding-a-tool.md +4 -3
  483. package/kb/site/en/reference/cookbook/adding-an-llm-adapter.md +1 -0
  484. package/kb/site/en/reference/cookbook/extension-cookbook.md +6 -5
  485. package/kb/site/en/reference/cordis-api/context.md +1 -0
  486. package/kb/site/en/reference/cordis-api/events.md +1 -0
  487. package/kb/site/en/reference/cordis-api/fiber.md +4 -3
  488. package/kb/site/en/reference/cordis-api/inherited.md +16 -16
  489. package/kb/site/en/reference/cordis-api/registry.md +1 -0
  490. package/kb/site/en/reference/cordis-api/service.md +1 -0
  491. package/kb/site/en/reference/cordis-primer.md +1 -0
  492. package/kb/site/en/reference/experimental-persistence-catalog.md +20 -0
  493. package/kb/site/en/reference/index.md +27 -21
  494. package/kb/site/en/reference/persistence-catalog.md +8055 -62
  495. package/kb/site/en/reference/subsystems/approval.md +2 -1
  496. package/kb/site/en/reference/subsystems/client-modules.md +37 -15
  497. package/kb/site/en/reference/subsystems/client-resources.md +3 -1
  498. package/kb/site/en/reference/subsystems/commands.md +6 -1
  499. package/kb/site/en/reference/subsystems/compaction.md +50 -3
  500. package/kb/site/en/reference/subsystems/conversation.md +50 -6
  501. package/kb/site/en/reference/subsystems/core.md +100 -258
  502. package/kb/site/en/reference/subsystems/credentials.md +178 -13
  503. package/kb/site/en/reference/subsystems/filesystem.md +11 -0
  504. package/kb/site/en/reference/subsystems/goal.md +2 -1
  505. package/kb/site/en/reference/subsystems/index.md +20 -6
  506. package/kb/site/en/reference/subsystems/jobs.md +397 -132
  507. package/kb/site/en/reference/subsystems/llm-streaming.md +157 -50
  508. package/kb/site/en/reference/subsystems/lsp.md +1 -0
  509. package/kb/site/en/reference/subsystems/permission-presets.md +66 -29
  510. package/kb/site/en/reference/subsystems/persistence.md +6 -3
  511. package/kb/site/en/reference/subsystems/plan.md +3 -2
  512. package/kb/site/en/reference/subsystems/ptc-runtime.md +254 -0
  513. package/kb/site/en/reference/subsystems/sandbox.md +7 -5
  514. package/kb/site/en/reference/subsystems/schedule.md +392 -33
  515. package/kb/site/en/reference/subsystems/scope.md +2 -1
  516. package/kb/site/en/reference/subsystems/session-projection.md +22 -19
  517. package/kb/site/en/reference/subsystems/session-query.md +3 -0
  518. package/kb/site/en/reference/subsystems/session-reference.md +8 -6
  519. package/kb/site/en/reference/subsystems/session-telemetry.md +7 -4
  520. package/kb/site/en/reference/subsystems/session-title.md +20 -10
  521. package/kb/site/en/reference/subsystems/session.md +254 -91
  522. package/kb/site/en/reference/subsystems/settings.md +43 -292
  523. package/kb/site/en/reference/subsystems/shell.md +37 -28
  524. package/kb/site/en/reference/subsystems/sidebar-right.md +25 -12
  525. package/kb/site/en/reference/subsystems/skills.md +5 -6
  526. package/kb/site/en/reference/subsystems/slots.md +88 -70
  527. package/kb/site/en/reference/subsystems/spill.md +4 -3
  528. package/kb/site/en/reference/subsystems/storage.md +2 -2
  529. package/kb/site/en/reference/subsystems/subagent.md +207 -293
  530. package/kb/site/en/reference/subsystems/subprocess.md +17 -18
  531. package/kb/site/en/reference/subsystems/system-prompt.md +36 -3
  532. package/kb/site/en/reference/subsystems/terminal.md +1 -0
  533. package/kb/site/en/reference/subsystems/token-meter.md +1 -0
  534. package/kb/site/en/reference/subsystems/tools.md +42 -14
  535. package/kb/site/en/reference/subsystems/typert.md +362 -14
  536. package/kb/site/en/reference/subsystems/user-questions.md +131 -1
  537. package/kb/site/en/reference/subsystems/web-client.md +15 -9
  538. package/kb/site/en/reference/subsystems/web-server.md +157 -8
  539. package/kb/site/en/reference/subsystems/web.md +3 -2
  540. package/kb/site/en/reference/subsystems/workflow.md +10 -9
  541. package/kb/site/en/reference/subsystems/workspace.md +290 -42
  542. package/kb/site/en/reference/tool-catalog.md +908 -352
  543. package/kb/site/en/reference/tool-execution-pipeline.md +7 -3
  544. package/kb/site/guide/github-review.md +8 -10
  545. package/kb/site/guide/mcp-memory.md +1 -0
  546. package/kb/site/guide/network-proxy.md +2 -1
  547. package/kb/site/guide/plugin-market.md +151 -0
  548. package/kb/site/guide/providers-custom-form.zh.png +0 -0
  549. package/kb/site/guide/providers-models-page.zh.png +0 -0
  550. package/kb/site/guide/providers.md +132 -94
  551. package/kb/site/guide/public-deployments.md +40 -0
  552. package/kb/site/guide/python-sdk.md +49 -29
  553. package/kb/site/guide/quickstart.md +2 -0
  554. package/kb/site/guide/schedule.md +70 -11
  555. package/kb/site/reference/agent-lifecycle.md +1 -0
  556. package/kb/site/reference/api-gateway.md +28 -13
  557. package/kb/site/reference/capability-seams.md +242 -77
  558. package/kb/site/reference/config-catalog.md +2105 -906
  559. package/kb/site/reference/cookbook/adding-a-package.md +55 -3
  560. package/kb/site/reference/cookbook/adding-a-settings-card.md +35 -64
  561. package/kb/site/reference/cookbook/adding-a-tool.md +4 -3
  562. package/kb/site/reference/cookbook/adding-an-llm-adapter.md +1 -0
  563. package/kb/site/reference/cookbook/extension-cookbook.md +6 -5
  564. package/kb/site/reference/cordis-api/context.md +1 -0
  565. package/kb/site/reference/cordis-api/events.md +1 -0
  566. package/kb/site/reference/cordis-api/fiber.md +4 -3
  567. package/kb/site/reference/cordis-api/inherited.md +16 -16
  568. package/kb/site/reference/cordis-api/registry.md +1 -0
  569. package/kb/site/reference/cordis-api/service.md +1 -0
  570. package/kb/site/reference/cordis-primer.md +1 -0
  571. package/kb/site/reference/experimental-persistence-catalog.md +20 -0
  572. package/kb/site/reference/index.md +27 -21
  573. package/kb/site/reference/persistence-catalog.md +8061 -68
  574. package/kb/site/reference/subsystems/approval.md +2 -1
  575. package/kb/site/reference/subsystems/client-modules.md +37 -15
  576. package/kb/site/reference/subsystems/client-resources.md +3 -1
  577. package/kb/site/reference/subsystems/commands.md +6 -1
  578. package/kb/site/reference/subsystems/compaction.md +50 -3
  579. package/kb/site/reference/subsystems/conversation.md +51 -5
  580. package/kb/site/reference/subsystems/core.md +102 -258
  581. package/kb/site/reference/subsystems/credentials.md +178 -13
  582. package/kb/site/reference/subsystems/filesystem.md +11 -0
  583. package/kb/site/reference/subsystems/goal.md +2 -1
  584. package/kb/site/reference/subsystems/index.md +20 -6
  585. package/kb/site/reference/subsystems/jobs.md +396 -131
  586. package/kb/site/reference/subsystems/llm-streaming.md +157 -50
  587. package/kb/site/reference/subsystems/lsp.md +1 -0
  588. package/kb/site/reference/subsystems/permission-presets.md +66 -29
  589. package/kb/site/reference/subsystems/persistence.md +6 -3
  590. package/kb/site/reference/subsystems/plan.md +3 -2
  591. package/kb/site/reference/subsystems/ptc-runtime.md +254 -0
  592. package/kb/site/reference/subsystems/sandbox.md +7 -5
  593. package/kb/site/reference/subsystems/schedule.md +392 -33
  594. package/kb/site/reference/subsystems/scope.md +4 -1
  595. package/kb/site/reference/subsystems/session-projection.md +22 -19
  596. package/kb/site/reference/subsystems/session-query.md +3 -0
  597. package/kb/site/reference/subsystems/session-reference.md +8 -6
  598. package/kb/site/reference/subsystems/session-telemetry.md +7 -4
  599. package/kb/site/reference/subsystems/session-title.md +20 -10
  600. package/kb/site/reference/subsystems/session.md +254 -91
  601. package/kb/site/reference/subsystems/settings.md +43 -292
  602. package/kb/site/reference/subsystems/shell.md +37 -28
  603. package/kb/site/reference/subsystems/sidebar-right.md +25 -12
  604. package/kb/site/reference/subsystems/skills.md +5 -6
  605. package/kb/site/reference/subsystems/slots.md +92 -70
  606. package/kb/site/reference/subsystems/spill.md +3 -2
  607. package/kb/site/reference/subsystems/storage.md +2 -2
  608. package/kb/site/reference/subsystems/subagent.md +208 -296
  609. package/kb/site/reference/subsystems/subprocess.md +17 -18
  610. package/kb/site/reference/subsystems/system-prompt.md +36 -3
  611. package/kb/site/reference/subsystems/terminal.md +1 -0
  612. package/kb/site/reference/subsystems/token-meter.md +1 -0
  613. package/kb/site/reference/subsystems/tools.md +42 -14
  614. package/kb/site/reference/subsystems/typert.md +362 -14
  615. package/kb/site/reference/subsystems/user-questions.md +132 -2
  616. package/kb/site/reference/subsystems/web-client.md +15 -9
  617. package/kb/site/reference/subsystems/web-server.md +157 -8
  618. package/kb/site/reference/subsystems/web.md +3 -2
  619. package/kb/site/reference/subsystems/workflow.md +10 -9
  620. package/kb/site/reference/subsystems/workspace.md +290 -42
  621. package/kb/site/reference/tool-catalog.md +862 -306
  622. package/kb/site/reference/tool-execution-pipeline.md +7 -3
  623. package/package.json +2 -2
  624. package/skills/dsh-dev-sandbox.md +67 -0
  625. package/skills/dsh-plugin-dev-kb.md +5 -4
  626. package/kb/extra/defensive-patterns.md +0 -33
  627. package/kb/extra/defensive-patterns.zh.md +0 -35
  628. package/kb/site/en/reference/subsystems/code-runtime.md +0 -198
  629. package/kb/site/en/reference/subsystems/invariants.md +0 -91
  630. package/kb/site/reference/subsystems/code-runtime.md +0 -198
  631. package/kb/site/reference/subsystems/invariants.md +0 -91
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  editSource: "docs/user/guide/providers.md"
3
+ rawMarkdownPath: "en/guide/providers.md"
3
4
  ---
4
5
 
5
6
  # Configure models
@@ -10,21 +11,25 @@ This guide assumes you started the Web UI through the [root README](https://gith
10
11
 
11
12
  Open **Settings → Models**. The DeepSeek card exposes one API-key field; enter the key and save it.
12
13
 
13
- ![The Models page: the DeepSeek card, with Add provider and Add a custom provider below it](./providers-models-page.png)
14
+ ![The Models page: the DeepSeek card, with Add model provider below it](./providers-models-page.png)
14
15
 
15
16
  Keys are write-only. The page receives a redacted descriptor after saving, never the literal secret. The key is stored in `$DSH_HOME/.credentials.yaml`, while settings retain only its credential reference.
16
17
 
17
- ## Add a built-in provider
18
+ ## Add a third-party provider
18
19
 
19
- Choose **Add provider** and pick a provider dsh ships with; the list shows provider ids such as `anthropic`, `openai`, `moonshotai` for Kimi, or `zai` for GLM. Enter its API key and save. The installed catalog supplies the endpoint, protocol, and model list.
20
+ Choose **Add model provider**. The card opens on **Third-party model provider**: pick a provider dsh ships with — the list shows provider ids such as `anthropic`, `openai`, `moonshotai` for Kimi, or `zai` for GLM — enter its API key, and save. The installed catalog supplies the endpoint, protocol, and model list.
20
21
 
21
- Providers that sign in with OAuth, such as Codex, are not supported here yet.
22
+ The authentication **?** explains saved-credential priority and environment fallbacks. Leave the key blank to use a saved credential or try the listed environment variables. A green hint identifies a detected environment variable. A yellow hint means no credential variable was detected; enter an API key or configure the listed variable. An unconfirmed hint means the status read failed. Detection does not validate the credential or test the connection. Provider-managed credential files, including AWS profiles and Google application-default credentials, are outside this check. Providers without native key authentication, such as `openai-codex`, show no key field unless the profile explicitly names a credential reference.
22
23
 
23
- ## Add a custom provider
24
+ A saved credential uses the placeholder **Leave blank to use saved credentials**, with no status text below the input. Environment fallback uses **Leave blank to use env as auth** and one detection hint while the input is empty. A nonempty input shows no authentication status text. Address configuration variables appear under **Base URL** and do not count as credentials.
24
25
 
25
- Choose **Add a custom provider** for a company gateway, self-hosted server, or provider absent from the installed catalog. Supply a lowercase Provider ID, base URL, API protocol, credential, and at least one model. The **API protocol** must be the one your gateway speaks, and the form offers three: `openai-completions` for OpenAI Chat Completions, `openai-responses` for the OpenAI Responses API, and `anthropic-messages` for the Anthropic Messages API. A provider speaks one protocol, so a gateway that serves two needs two providers.
26
+ A nonempty key input has an eye button. Select **Show secret** to check what you typed, and **Hide secret** to mask it again. Changing the input masks it again. Stored credentials remain write-only.
26
27
 
27
- ![The custom provider form: Provider ID, display name, base URL, API protocol, and API key](./providers-custom-form.png)
28
+ ## Add a custom model API
29
+
30
+ Switch the card to **Custom model API** for a relay, a company gateway, a self-hosted server, or any provider absent from the installed catalog. Supply a lowercase Provider ID, base URL, API protocol, credential, and at least one model. The **API protocol** must be the one your gateway speaks, and the picker offers three: OpenAI Chat Completions, OpenAI Responses, and Anthropic Messages, stored in the active profile's `cordis.patch.yml` as `openai-completions`, `openai-responses`, and `anthropic-messages`. A provider speaks one protocol, so a gateway that serves two needs two providers.
31
+
32
+ ![The custom model API form: Provider ID, display name, base URL, API protocol, and API key](./providers-custom-form.png)
28
33
 
29
34
  The Provider ID is permanent because requests, saved sessions, model defaults, and credential references use it. To rename a provider, add a new provider and delete the old one. The display name, base URL, protocol, credential, and models remain editable.
30
35
 
@@ -42,81 +47,112 @@ If a saved default names a provider that was deleted, the composer displays **Se
42
47
 
43
48
  ## Advanced configuration
44
49
 
45
- The generated [plugin configuration catalog](../reference/config-catalog.md) lists every supported field and default for every plugin; [`dsh-llm-pi-ai`](../reference/config-catalog.md#deepseek-aidsh-llm-pi-ai) is the provider section this page configures. The [`dsh-llm-pi-ai`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/llm/llm-pi-ai/README.md) and [`dsh-llm-deepseek`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/llm/llm-deepseek/README.md) references own direct `settings.yaml` configuration, catalog resolution, reasoning controls, credentials, and adapter errors.
50
+ The generated [plugin configuration catalog](../reference/config-catalog.md) lists every supported field and default for every plugin; [`dsh-llm-pi-ai`](../reference/config-catalog.md#deepseek-aidsh-llm-pi-ai) is the provider section this page configures. The [`dsh-llm-pi-ai`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/llm/llm-pi-ai/README.md) and [`dsh-llm-deepseek`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/llm/llm-deepseek/README.md) references own direct `cordis.patch.yml` configuration, catalog resolution, reasoning controls, credentials, and adapter errors.
46
51
 
47
- ::: tip The form is deliberately small
48
- The Models page exposes only what a route needs to exist: the API key, display name, base URL, API protocol, and for each model its id, display name, context window, and max output tokens. Every other field — reasoning effort levels, image input, request-compatibility switches, headers, timeouts, retry policy — is set in `$DSH_HOME/settings.yaml`, the same document the page writes. Edit it directly, or, when the browser runs on the same machine as the server, open it with **Open configuration file** in the Settings header; the adapters re-read it on the next request, so nothing needs a restart. The subsections below cover the fields most gateways need.
52
+ ::: tip Additional settings
53
+ The Models page exposes the API key, display name, base URL, API protocol, and each model's id, display name, context window, max output tokens, and input types, plus the reasoning levels of a model on a custom model API provider. Configure the reasoning levels of a built-in provider's models, request-compatibility switches, headers, timeouts, and retry policy in `$DSH_HOME/profiles/<profile>/cordis.patch.yml`, the same document the page writes. Edit it directly, or, when the browser runs on the same machine as the server, open it with **Open configuration file** in the Settings header; the adapters re-read it on the next request, so nothing needs a restart. The subsections below cover the fields most gateways need.
54
+
55
+ For the standard Web UI launch with `dsh web`, `<profile>` is `web`, so the path is `$DSH_HOME/profiles/web/cordis.patch.yml`. If you launch a custom profile, use the name selected at startup instead.
49
56
  :::
50
57
 
51
58
  ### Image input
52
59
 
53
- A model you enter by hand is treated as text-only until it says otherwise, because nothing can ask an endpoint which modalities it accepts. Attaching an image to such a model is refused before it is sent, naming the model.
60
+ In **Settings → Models**, edit the provider, open **Customized settings**, and expand the model's **Model options**. **Input types** occupies its own row below the capacity fields. Select **Image** for a model that accepts images, and save. **Text** starts selected for a new custom model with no inherited image capability. At least one type must remain selected; select Image before clearing Text for an image-only model.
61
+
62
+ The checkboxes save `input` for pi-ai models and `inputModalities` for the direct DeepSeek adapter. You can also edit the model in `$DSH_HOME/profiles/<profile>/cordis.patch.yml`; for example, this custom pi-ai provider declares one text-only model and one vision model:
54
63
 
55
- A vision model on a custom provider therefore needs one line. The form has no field for it; add `input` to the model in `$DSH_HOME/settings.yaml`:
64
+ These examples show config fields inside a profile patch. A Cordis config override replaces the complete entry config; preserve other providers and fields when editing an existing override.
56
65
 
57
66
  ```yaml
58
- llm-pi-ai:
59
- providers:
60
- my-gateway:
61
- apiKeyEnv: GATEWAY_API_KEY
62
- api: openai-completions
63
- baseURL: https://gateway.example/v1
64
- models:
65
- - id: legacy-chat
66
- - id: vision-preview
67
- input: [text, image]
67
+ - id: llm-pi-ai
68
+ config:
69
+ providers:
70
+ my-gateway:
71
+ apiKeyEnv: GATEWAY_API_KEY
72
+ api: openai-completions
73
+ baseURL: https://gateway.example/v1
74
+ models:
75
+ - id: legacy-chat
76
+ - id: vision-preview
77
+ input: [text, image]
68
78
  ```
69
79
 
70
- `input` accepts `text` and `image`, and applies to that model alone, so one route can serve both kinds. Omitting it — or writing an empty list, which means the same thing — keeps whatever the installed catalog records for that model, and falls back to the route's `defaultInput` for a model the catalog does not describe.
80
+ Pi-ai's `input` accepts `text` and `image` and applies to that model alone. An explicit nonempty selection takes priority. An omitted or empty `input` inherits the installed catalog's input types, then the route's `defaultInput`, which defaults to `[text]`. The checkboxes display these inherited values without saving an override when you merely open the row.
81
+
82
+ DeepSeek treats an omitted `inputModalities` as text-only and rejects an empty list. Clearing Image also removes that model's `imagePixelBudget` and `imageMaxBytes`, because DeepSeek rejects image limits on a text-only model. Set those limits again if you later enable images and need custom limits.
83
+
84
+ To restore inheritance after editing the checkboxes, remove the model's `input` or `inputModalities` field from `cordis.patch.yml`. **Restore defaults** removes the entire model-catalog override, including other model edits, so use it only when you want to restore the whole catalog.
71
85
 
72
86
  If every model you entered by hand takes images, set the fallback once on the route instead of on each of them:
73
87
 
74
88
  ```yaml
75
- llm-pi-ai:
76
- providers:
77
- vision-gateway:
78
- apiKeyEnv: GATEWAY_API_KEY
79
- api: openai-completions
80
- baseURL: https://vision.example/v1
81
- defaultInput: [text, image]
82
- models:
83
- - id: first-model
84
- - id: second-model
89
+ - id: llm-pi-ai
90
+ config:
91
+ providers:
92
+ vision-gateway:
93
+ apiKeyEnv: GATEWAY_API_KEY
94
+ api: openai-completions
95
+ baseURL: https://vision.example/v1
96
+ defaultInput: [text, image]
97
+ models:
98
+ - id: first-model
99
+ - id: second-model
85
100
  ```
86
101
 
87
- `defaultInput` is a fallback, not an override, and defaults to `[text]`: on a built-in provider it answers only for models its catalog does not describe, so it never removes images from a catalog model that has them. Narrow one of those with that model's own `input`. A built-in provider has no `models` list to put it in, so write it under `modelOverrides`, keyed by model id:
102
+ `defaultInput` is a fallback, not an override, and defaults to `[text]`: on a built-in provider it answers only for models its catalog does not describe, so it never removes images from a catalog model that has them. Narrow one of those with that model's own `input`. When a built-in provider has no explicit `models` list, write it under `modelOverrides`, keyed by model id:
88
103
 
89
104
  ```yaml
90
- llm-pi-ai:
91
- providers:
92
- anthropic:
93
- modelOverrides:
94
- claude-sonnet-4-5:
95
- input: [text]
105
+ - id: llm-pi-ai
106
+ config:
107
+ providers:
108
+ anthropic:
109
+ modelOverrides:
110
+ claude-sonnet-4-5:
111
+ input: [text]
96
112
  ```
97
113
 
98
- Every list must name at least one modality except a model's own, where an empty list means the same as omitting it. An unknown modality is refused wherever it is written.
114
+ In pi-ai configuration, every list must name at least one modality except a model's own `input`, where an empty list means the same as omitting it. An unknown modality is refused wherever it is written.
99
115
 
100
116
  Both fields state a claim about your endpoint rather than checking it. A model that declares images its endpoint does not serve is not caught here; the provider rejects the request instead.
101
117
 
118
+ ### DeepSeek account models
119
+
120
+ A signed-in DeepSeek account lists its models from the account service, so the Models page offers no model editor for it. Adjust a single model with `modelOverrides` in `$DSH_HOME/profiles/<profile>/cordis.patch.yml`; the fields match a DeepSeek `models` entry, and unset fields keep the listed values:
121
+
122
+ ```yaml
123
+ - id: llm-deepseek-account
124
+ config:
125
+ modelOverrides:
126
+ deepseek-flash:
127
+ contextWindow: 524288
128
+ maxTokens: 131072
129
+ ```
130
+
131
+ A model that needs a newer DeepSeek Harness fails with `CLIENT_UPGRADE_REQUIRED`, which names the version to install. The [account provider reference](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/llm/llm-deepseek-account/README.md) owns the listing, fallback, and gating rules.
132
+
102
133
  ### Reasoning effort
103
134
 
104
- The model picker offers an **Effort** menu for a model that declares reasoning levels. A built-in provider's models inherit their levels from the installed catalog. A model you enter by hand declares none, so the Effort entry does not appear in the menu and the endpoint's own default decides whether the model thinks. Declare the levels with `reasoningEfforts` in `$DSH_HOME/settings.yaml`:
135
+ The model picker offers an **Effort** menu for a model that declares reasoning levels. A built-in provider's models inherit their levels from the installed catalog, and DeepSeek's models keep the adapter's levels. A model you enter by hand declares none until you add them, so until then the Effort entry does not appear in the menu and the endpoint's own default decides whether the model thinks.
136
+
137
+ On a custom model API provider, declare the levels in **Settings → Models**: edit the provider, open **Customized settings**, expand the model's **Model options**, and turn on **Reasoning levels**. The rows start with off, low, medium, and high. Each row pairs a level with the **API value** sent for it, which defaults to the level name; change it only where the model provider's API documentation spells the level differently. Add or delete rows to match what the endpoint supports, keep at least one level besides off, and save. Turning the switch off removes the declaration.
138
+
139
+ The page writes `reasoningEfforts` in `$DSH_HOME/profiles/<profile>/cordis.patch.yml`, where you can also declare the levels directly:
105
140
 
106
141
  ```yaml
107
- llm-pi-ai:
108
- providers:
109
- my-gateway:
110
- apiKeyEnv: GATEWAY_API_KEY
111
- api: openai-completions
112
- baseURL: https://gateway.example/v1
113
- reasoning: high
114
- models:
115
- - id: my-reasoner
116
- reasoningEfforts:
117
- off:
118
- high: high
119
- max: max
142
+ - id: llm-pi-ai
143
+ config:
144
+ providers:
145
+ my-gateway:
146
+ apiKeyEnv: GATEWAY_API_KEY
147
+ api: openai-completions
148
+ baseURL: https://gateway.example/v1
149
+ reasoning: high
150
+ models:
151
+ - id: my-reasoner
152
+ reasoningEfforts:
153
+ off:
154
+ high: high
155
+ max: max
120
156
  ```
121
157
 
122
158
  Each key is a level the menu offers, and its value is the spelling sent on the wire as `reasoning_effort`, so `max: xhigh` renames a level for a gateway with its own vocabulary. Only `off` may stay empty, because for most endpoints not thinking is the parameter's absence. The route's `reasoning` is the level used while a session has picked none; choosing an effort in the picker saves it, with the model, as the default for new sessions.
@@ -124,51 +160,53 @@ Each key is a level the menu offers, and its value is the spelling sent on the w
124
160
  An `off` left empty sends nothing, which only stops a model that thinks on request; an `off` given a value sends that value as `reasoning_effort` instead. A model that thinks unless told not to — DeepSeek V4 behind an OpenAI-compatible gateway, for example — needs `compat.thinkingFormat: deepseek`, which makes `off` send `thinking: {type: disabled}` and every other level send `thinking: {type: enabled}` beside the effort:
125
161
 
126
162
  ```yaml
127
- models:
128
- - id: deepseek-v4-pro
129
- compat:
130
- thinkingFormat: deepseek
131
- reasoningEfforts:
132
- off:
133
- high: high
134
- max: max
163
+ models:
164
+ - id: deepseek-v4-pro
165
+ compat:
166
+ thinkingFormat: deepseek
167
+ reasoningEfforts:
168
+ off:
169
+ high: high
170
+ max: max
135
171
  ```
136
172
 
137
173
  A built-in provider's model whose gateway does not reason loses its levels with `reasoningEfforts: false` under `modelOverrides`; selecting an effort for it is then refused as `UNSUPPORTED_REASONING_EFFORT`. DeepSeek's own route needs none of this: its models already offer `off`, `low`, `high`, and `max`, and `llm-deepseek.reasoningEffort` sets the default the picker starts from:
138
174
 
139
175
  ```yaml
140
- llm-deepseek:
141
- reasoningEffort: max
176
+ - id: llm-deepseek
177
+ config:
178
+ reasoningEffort: max
142
179
  ```
143
180
 
144
181
  ### Request compatibility
145
182
 
146
183
  A gateway can hold a working key at a reachable address and still refuse every request. pi-ai decides the shape of a request — which role carries the system prompt, which field caps the output, how a thinking level travels — from the endpoint's URL, and an address it does not recognize is addressed as though it were OpenAI itself. Most OpenAI-compatible gateways refuse at least one thing OpenAI accepts.
147
184
 
148
- Two account for most of it. A model that declares reasoning has its system prompt sent as `role: "developer"`, which many gateways reject outright, and the output cap is sent as `max_completion_tokens`, which a server that only knows `max_tokens` refuses. The form has no field for either; correct them on the route in `$DSH_HOME/settings.yaml`:
185
+ Two account for most of it. A model that declares reasoning has its system prompt sent as `role: "developer"`, which many gateways reject outright, and the output cap is sent as `max_completion_tokens`, which a server that only knows `max_tokens` refuses. The form has no field for either; correct them on the route in `$DSH_HOME/profiles/<profile>/cordis.patch.yml`:
149
186
 
150
187
  ```yaml
151
- llm-pi-ai:
152
- providers:
153
- my-gateway:
154
- apiKeyEnv: GATEWAY_API_KEY
155
- api: openai-completions
156
- baseURL: https://gateway.example/v1
157
- compat:
158
- supportsDeveloperRole: false
159
- maxTokensField: max_tokens
160
- models:
161
- - id: my-model
188
+ - id: llm-pi-ai
189
+ config:
190
+ providers:
191
+ my-gateway:
192
+ apiKeyEnv: GATEWAY_API_KEY
193
+ api: openai-completions
194
+ baseURL: https://gateway.example/v1
195
+ compat:
196
+ supportsDeveloperRole: false
197
+ maxTokensField: max_tokens
198
+ models:
199
+ - id: my-model
162
200
  ```
163
201
 
164
202
  A route's `compat` is the default for its models, and a model's own wins field by field, so one model can be corrected without restating the route:
165
203
 
166
204
  ```yaml
167
- models:
168
- - id: my-model
169
- - id: my-reasoner
170
- compat:
171
- thinkingFormat: deepseek
205
+ models:
206
+ - id: my-model
207
+ - id: my-reasoner
208
+ compat:
209
+ thinkingFormat: deepseek
172
210
  ```
173
211
 
174
212
  What neither sets keeps the installed catalog's value for that model, and what the catalog does not describe falls to pi-ai's detection. Give every switch you name a value: a key left empty (`supportsDeveloperRole:`) is refused rather than ignored, because an empty value would erase what the catalog knows while saying nothing in its place. A name no protocol accepts is refused too, and the message lists the ones that are available.
@@ -185,7 +223,7 @@ Every switch, its accepted values, and the protocols that take it are listed und
185
223
  - **Fetching available models reports neither a `data` array nor a `models` object** — The endpoint's listing is in a format discovery does not read. Enter the models by hand.
186
224
  - **The gateway refuses every request although the key and URL are right** — Its request shape differs from OpenAI's. Start with `compat.supportsDeveloperRole: false` and `compat.maxTokensField: max_tokens` on the route.
187
225
  - **Only reasoning models fail** — pi-ai sends their system prompt as the `developer` role, which the gateway rejects. Set `compat.supportsDeveloperRole: false`.
188
- - **The Effort menu does not appear for a model you entered by hand** — It declares no levels. Add `reasoningEfforts` to the model in `settings.yaml`.
226
+ - **The Effort menu does not appear for a model you entered by hand** — It declares no levels. On a custom model API provider, turn on **Reasoning levels** in the model's **Model options**; elsewhere, add `reasoningEfforts` to the model in `cordis.patch.yml`.
189
227
  - **`off` does not stop a DeepSeek model from thinking** — An empty `off` sends no reasoning field at all, and an endpoint that thinks by default keeps thinking. Set `compat.thinkingFormat: deepseek` on the model or the route.
190
228
  - **A compat switch is refused as having no value** — A key written with nothing after the colon. Give it a value, or remove the key to keep the installed catalog's.
191
229
  - **An image is refused before sending** — The model declares no image modality. Give a custom provider's model `input: [text, image]`; on DeepSeek's own route, select an image-capable entry from the configured catalog (`deepseek-flash` by default) and confirm that your gateway serves that model with image input.
@@ -0,0 +1,40 @@
1
+ ---
2
+ editSource: "docs/user/guide/public-deployments.md"
3
+ rawMarkdownPath: "en/guide/public-deployments.md"
4
+ ---
5
+
6
+ # Publish the Web UI behind a reverse proxy
7
+
8
+ `dsh --profile web` serves the GUI on a loopback port, so a browser on another machine cannot reach it, and the process knows nothing about the address you do use. A reverse proxy in front of it owns that external leg — the public host name, TLS, and the path prefix it strips before forwarding to the listener — and `--public-url` tells DSH which address browsers use:
9
+
10
+ ```sh
11
+ dsh --profile web --public-url https://app.example/ui/ --trusted-host app.example
12
+ ```
13
+
14
+ ## What `--public-url` advertises
15
+
16
+ `--public-url` accepts an `http://` or `https://` root with an optional mount prefix and normalizes it to end in `/`. It supplies the printed and opened startup URL, `DSH_WEB_URL`, and the Web GUI URL in the agent's runtime context. The webserver keeps serving origin-root routes and never learns the mount. The `publicUrl` config field publishes the same advertisement.
17
+
18
+ ## What the proxy must do
19
+
20
+ - **Preserve the browser-facing `Host`.** The fence compares the received `Host` against the accepted authorities, so the proxy forwards it unchanged instead of rewriting it to the listener's address.
21
+ - **Strip the mount prefix.** The listener answers origin-root routes, so a request for `/ui/api/...` must arrive as `/api/...`.
22
+ - **Forward upgrades.** Every request and WebSocket upgrade the page opens must reach the listener with its `Upgrade` and `Connection` headers intact; TLS terminates on the proxy's external leg when it serves HTTPS.
23
+ - **Rewrite cookie scope.** A backend serving plain HTTP issues host-only `Path=/` cookies without `Secure`; the proxy then rewrites `Path` to the mount (`/ui/`) and adds `Secure` on its HTTPS leg. A backend listener serving its own TLS already marks the cookie `Secure`, so the proxy only rewrites `Path`.
24
+ - **Redirect the bare mount.** `/ui/` is the only entry: it alone exchanges the launch token for the session cookie, and it or `/ui/index.html` serves the document to a browser that already holds that cookie, because the served document resolves URLs against its own directory. A request to `/ui` must arrive as `/ui/`, and the stripped backend cannot reconstruct that external path.
25
+
26
+ ## Trust the authority browsers use
27
+
28
+ The fence accepts loopback, the listener's own bind address, and every authority `--trusted-host` names. A browser that reaches the deployment under any other authority gets 403 for every API call, however correct the proxy is, so name the browser-visible authority with `--trusted-host`; advertising it with `--public-url` is display only and does not admit it. An entry without a port matches any port, which suits a tunnel that binds a different one each time. The fence only admits the request; the launch token in the printed URL and the signed session cookie authenticate it. TLS, wherever it terminates, changes none of this: the certificate identifies the server to the browser, not the browser to the server.
29
+
30
+ Neither the advertised URL nor the fence protects the listening port itself, so restrict the port to the trusted proxy or network.
31
+
32
+ ## Secure the external leg
33
+
34
+ Terminate TLS at the proxy, on the listener itself, or on both; `--public-url` remains an advertisement. An `http://` browser-facing root exposes the launch token in plaintext. An `https://` proxy root protects the browser-to-proxy leg; encryption between proxy and listener depends on the listener's TLS configuration.
35
+
36
+ To terminate on the listener, pass `--tls-cert` and `--tls-key`, each a path resolved against the process working directory: the certificate file holds the full chain and the key file an unencrypted PEM private key. DSH never obtains, renews, or watches certificates, and the carrier reads the files once, so replace them and reload the listener or restart the process to change them; startup fails on a missing or invalid pair and never falls back to HTTP. The browser applies its own trust store and name checks, so the certificate must cover the hostname or IP you open. The default port stays 3080. Native TLS needs no proxy, but proxy deployments and `--public-url` remain supported independently. A TLS listener marks session cookies `Secure`; keep the public browser-facing leg HTTPS so browsers can return those cookies.
37
+
38
+ The printed URL carries a process credential, so share it only with intended users.
39
+
40
+ The [Web app reference](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/bundle/web-app/README.md#public-deployments) documents the `--public-url`, `--trusted-host`, and `--tls-cert`/`--tls-key` command-line options. In the Web profile, `publicUrl` configures the `web-runtime` row, `trustedHosts` configures the [Connection row](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/client/connection/README.md), and `tls` configures the [webserver row](../reference/subsystems/web-server.md#config).
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  editSource: "docs/user/guide/python-sdk.md"
3
+ rawMarkdownPath: "en/guide/python-sdk.md"
3
4
  ---
4
5
 
5
6
  # Get started with the Python SDK
@@ -16,9 +17,14 @@ This tutorial installs the published Python SDK, runs the shipped standalone min
16
17
 
17
18
  ## Install the SDK
18
19
 
19
- ### Linux and macOS
20
+ <div>
21
+ <a id="linux-and-macos"></a>
22
+ <a id="windows-powershell"></a>
23
+ </div>
20
24
 
21
- ```sh
25
+ ::: code-group
26
+
27
+ ```sh [Linux/macOS]
22
28
  git clone https://github.com/deepseek-ai/deepseek-harness.git
23
29
  cd deepseek-harness
24
30
  python -m venv .venv
@@ -26,9 +32,7 @@ python -m venv .venv
26
32
  python -m pip install deepseek-harness-sdk
27
33
  ```
28
34
 
29
- ### Windows PowerShell
30
-
31
- ```powershell
35
+ ```powershell [Windows PowerShell]
32
36
  git clone https://github.com/deepseek-ai/deepseek-harness.git
33
37
  Set-Location deepseek-harness
34
38
  py -3.10 -m venv .venv
@@ -36,31 +40,43 @@ py -3.10 -m venv .venv
36
40
  python -m pip install deepseek-harness-sdk
37
41
  ```
38
42
 
43
+ :::
44
+
39
45
  The installation includes a matching native runtime wheel and the `dsh` command. Normal SDK execution needs no system Node.js. Repository contributors who build the artifacts should use the [Python contributor workflow](https://github.com/deepseek-ai/deepseek-harness/blob/master/python/development.md).
40
46
 
41
47
  ## Run the checked-in example
42
48
 
43
49
  Export the credential and, when needed, a compatible proxy endpoint:
44
50
 
45
- ### Linux and macOS
51
+ <div>
52
+ <a id="linux-and-macos-1"></a>
53
+ <a id="windows-powershell-1"></a>
54
+ </div>
55
+
56
+ ::: code-group
46
57
 
47
- ```sh
58
+ ```sh [Linux/macOS]
48
59
  export DEEPSEEK_API_KEY=sk-your-key-here
49
60
  # export DEEPSEEK_BASE_URL=http://127.0.0.1:8000/v1
50
61
  ```
51
62
 
52
- ### Windows PowerShell
53
-
54
- ```powershell
63
+ ```powershell [Windows PowerShell]
55
64
  $env:DEEPSEEK_API_KEY = "sk-your-key-here"
56
65
  # $env:DEEPSEEK_BASE_URL = "http://127.0.0.1:8000/v1"
57
66
  ```
58
67
 
68
+ :::
69
+
59
70
  Run one task with explicit workspace and home paths:
60
71
 
61
- ### Linux and macOS
72
+ <div>
73
+ <a id="linux-and-macos-2"></a>
74
+ <a id="windows-powershell-2"></a>
75
+ </div>
76
+
77
+ ::: code-group
62
78
 
63
- ```sh
79
+ ```sh [Linux/macOS]
64
80
  python python/sdk/examples/minimal.py \
65
81
  --workspace /absolute/path/to/disposable-workspace \
66
82
  --dsh-home /absolute/path/to/example-dsh-home \
@@ -68,9 +84,7 @@ python python/sdk/examples/minimal.py \
68
84
  "Inspect the repository and fix the failing tests."
69
85
  ```
70
86
 
71
- ### Windows PowerShell
72
-
73
- ```powershell
87
+ ```powershell [Windows PowerShell]
74
88
  python python/sdk/examples/minimal.py `
75
89
  --workspace C:\work\disposable-workspace `
76
90
  --dsh-home C:\work\example-dsh-home `
@@ -78,6 +92,8 @@ python python/sdk/examples/minimal.py `
78
92
  "Inspect the repository and fix the failing tests."
79
93
  ```
80
94
 
95
+ :::
96
+
81
97
  The script prints the final assistant response. The selected home receives the generated `sdk-minimal` profile, installed plugins, and uncompressed JSONL session logs under `sessions/`. The example and SDK never silently read `~/.dsh`.
82
98
 
83
99
  ## Use the SDK in your program
@@ -111,22 +127,27 @@ The SDK starts the bundled `dsh --profile sdk-minimal` process lazily and reuses
111
127
 
112
128
  Use `dsh plugin` for dependencies and bundle layers that should persist in this home:
113
129
 
114
- ### Linux and macOS
130
+ <div>
131
+ <a id="linux-and-macos-3"></a>
132
+ <a id="windows-powershell-3"></a>
133
+ </div>
134
+
135
+ ::: code-group
115
136
 
116
- ```sh
137
+ ```sh [Linux/macOS]
117
138
  export DSH_HOME=/absolute/path/to/example-dsh-home
118
139
  dsh --profile sdk-minimal --dump-default-config >/dev/null
119
140
  dsh plugin --profile sdk-minimal add file:/absolute/path/to/my-plugin-bundle
120
141
  ```
121
142
 
122
- ### Windows PowerShell
123
-
124
- ```powershell
143
+ ```powershell [Windows PowerShell]
125
144
  $env:DSH_HOME = "C:\work\example-dsh-home"
126
145
  dsh --profile sdk-minimal --dump-default-config | Out-Null
127
146
  dsh plugin --profile sdk-minimal add file:C:/work/my-plugin-bundle
128
147
  ```
129
148
 
149
+ :::
150
+
130
151
  The first command initializes the shipped standalone profile. The second forwards package management to `pnpm`, then records any installed package that exports a `dsh.bundle` layer. Install `pnpm` only for this management command; launching the installed SDK does not need it. Edit `$DSH_HOME/profiles/sdk-minimal/cordis.patch.yml` for persistent row changes, or pass patch files from Python for per-launch changes.
131
152
 
132
153
  Another `profile` is valid when it includes `@deepseek-ai/dsh-sdk-app` or another JSON-RPC server row. Missing server rows, unresolved plugins, and invalid patches fail during startup instead of falling back to another composition.
@@ -134,19 +155,15 @@ Another `profile` is valid when it includes `@deepseek-ai/dsh-sdk-app` or anothe
134
155
  <a id="opt-in-to-str_replace_editor"></a>
135
156
  ### Opt in to `str_replace_editor`
136
157
 
137
- The bundled runtime includes `str_replace_editor`, but `sdk-minimal` omits it from the default Cordis tree. To use it, save this configuration as `editor.patch.yml`; `insert` adds both the editor and the filesystem provider that the minimal profile lacks:
158
+ The bundled runtime includes `str_replace_editor`, but `sdk-minimal` omits it from the default Cordis tree. To use it, save this configuration as `editor.patch.yml`; `insert` adds the editor using the existing filesystem provider:
138
159
 
139
160
  ```yaml
140
161
  - insert:
141
- - id: fs-local
142
- name: '@deepseek-ai/dsh-fs-local'
143
- config:
144
- cwd: !!js process.cwd()
145
162
  - id: tool-str-replace-editor
146
163
  name: '@deepseek-ai/dsh-tool-str-replace-editor'
147
164
  ```
148
165
 
149
- Pass `patches=("/absolute/path/to/editor.patch.yml",)` when constructing `DeepSeekHarness(profile="sdk-minimal", ...)`, or put the patch in `$DSH_HOME/profiles/sdk-minimal/cordis.patch.yml` for persistent configuration. On the next runtime launch, model requests include `str_replace_editor` beside the persistent shell. The local filesystem provider uses the runtime working directory for relative paths; like the minimal shell, it does not confine access to that directory. For the standard `sdk` profile, insert only the editor row so it uses the existing filesystem provider and policies.
166
+ Pass `patches=("/absolute/path/to/editor.patch.yml",)` when constructing `DeepSeekHarness(profile="sdk-minimal", ...)`, or put the patch in `$DSH_HOME/profiles/sdk-minimal/cordis.patch.yml` for persistent configuration. On the next runtime launch, model requests include `str_replace_editor` beside the default tools. The local filesystem provider uses the runtime working directory for relative paths; like the minimal shell, it does not confine access to that directory. The same patch works with the standard `sdk` profile.
150
167
 
151
168
  ## Understand the minimal profile
152
169
 
@@ -154,12 +171,15 @@ Pass `patches=("/absolute/path/to/editor.patch.yml",)` when constructing `DeepSe
154
171
  |---|---|
155
172
  | System prompt | `DSH_SYSTEM_PROMPT`, falling back to `You are a helpful software engineer assistant.` |
156
173
  | Model in `minimal.py` | `--model`, then `DSH_MODEL`, then `deepseek-v4-flash` |
157
- | Model-facing tool | Persistent `bash` on Linux/macOS or `pwsh` on Windows |
174
+ | Model-facing tools | Persistent `bash` on Linux/macOS or `pwsh` on Windows, `read_image`, and `working_directory` |
158
175
  | Shell timeout | 300 seconds |
159
- | Runtime context and compaction | Absent |
176
+ | Optional runtime context | Absent |
177
+ | Context compaction | Automatic; summarizes older history through an additional model request |
160
178
  | Session persistence | Uncompressed JSONL under `<dsh_home>/sessions` |
161
179
 
162
- The profile's sole bundle inserts the complete tree over an empty root and does not include `dsh-base`; later base-profile tools therefore cannot appear implicitly. It contains the SDK protocol, one environment-configured DeepSeek adapter, local execution, and persistence, while filesystem tools, settings, managed credentials, telemetry, Web tools, subagents, local instruction discovery, and compaction are absent. It pins `danger-full-access`, so the platform-selected persistent shell can modify any path visible to the runtime; use a disposable checkout or container.
180
+ The profile's sole bundle inserts the complete tree over an empty root and does not include `dsh-base`; later base-profile tools therefore cannot appear implicitly. It contains the SDK protocol, one environment-configured DeepSeek adapter, local execution, and persistence, while text file tools, settings, managed credentials, OTel telemetry, Web tools, subagents, and local instruction discovery are absent. The [DeepSeek session-log contributor](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session/session-log-deepseek/README.md) uploads unaccepted log events with DeepSeek requests by default, at most `maxBytes` (8 MiB) per request; set `session-log-deepseek.enabled: false` in a profile patch to disable it. It pins `danger-full-access`, so the platform-selected persistent shell can modify any path visible to the runtime; use a disposable checkout or container.
181
+
182
+ Image reading requires an image-capable route. Automatic compaction preserves the complete Session log; see the [bundle reference](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/bundle/sdk-minimal/README.md) for model and storage effects. SDK prompt text does not execute `/compact` or other slash commands.
163
183
 
164
184
  The installed wheel still packages the full `web` profile and frontend assets. Run `dsh web` against an explicit `DSH_HOME` when a Python SDK deployment also needs the browser application; `web` is a separate CLI application and cannot serve a Python SDK client.
165
185
 
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  editSource: "docs/user/guide/index.md"
3
+ rawMarkdownPath: "en/guide/quickstart.md"
3
4
  ---
4
5
 
5
6
  # Use the Web UI
@@ -28,5 +29,6 @@ The agent can read and edit workspace files, run commands, delegate work, and ma
28
29
 
29
30
  - [Configure models](./providers.md)
30
31
  - [Use the Python SDK](./python-sdk.md)
32
+ - [Publish the Web UI behind a reverse proxy](./public-deployments.md)
31
33
  - [Use other CLI modes](https://github.com/deepseek-ai/deepseek-harness/blob/master/apps/cli/README.md)
32
34
  - [Develop a plugin](../develop/basic/index.md)