@qqbrowser/qbot-dsh 0.0.11 → 0.0.12

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 (304) hide show
  1. package/lib/bin.js +1 -1
  2. package/lib/{dump-config-BD79jvHi.js → dump-config-xQTUTTDD.js} +1 -1
  3. package/lib/{plugin-B3Ecl7VN.js → plugin-DNAeLZbb.js} +1 -1
  4. package/lib/profile-boot-BkordgJK.js +1 -0
  5. package/node_modules/@deepseek-ai/cordis-plugin-group/package.json +1 -1
  6. package/node_modules/@deepseek-ai/cordis-plugin-hmr/lib/index.js +2 -2
  7. package/node_modules/@deepseek-ai/dsh-agent/lib/index.js +1 -1
  8. package/node_modules/@deepseek-ai/dsh-agent/package.json +1 -1
  9. package/node_modules/@deepseek-ai/dsh-agent-default-model/package.json +1 -1
  10. package/node_modules/@deepseek-ai/dsh-agent-instructions/lib/index.js +3 -3
  11. package/node_modules/@deepseek-ai/dsh-agent-instructions/package.json +1 -1
  12. package/node_modules/@deepseek-ai/dsh-agent-loop/package.json +1 -1
  13. package/node_modules/@deepseek-ai/dsh-agent-presets/package.json +1 -1
  14. package/node_modules/@deepseek-ai/dsh-agent-tool-presentation/package.json +1 -1
  15. package/node_modules/@deepseek-ai/dsh-anonymous-user-id/package.json +1 -1
  16. package/node_modules/@deepseek-ai/dsh-api-gateway/package.json +1 -1
  17. package/node_modules/@deepseek-ai/dsh-api-remotes/lib/client.js +2 -2
  18. package/node_modules/@deepseek-ai/dsh-api-remotes/package.json +1 -1
  19. package/node_modules/@deepseek-ai/dsh-app-boot/lib/index.js +12 -12
  20. package/node_modules/@deepseek-ai/dsh-app-boot/package.json +1 -1
  21. package/node_modules/@deepseek-ai/dsh-atomic-write/package.json +1 -1
  22. package/node_modules/@deepseek-ai/dsh-attachment/package.json +1 -1
  23. package/node_modules/@deepseek-ai/dsh-attachment-local/lib/index.js +1 -1
  24. package/node_modules/@deepseek-ai/dsh-attachment-local/package.json +1 -1
  25. package/node_modules/@deepseek-ai/dsh-base/cordis.patch.yml +2 -2
  26. package/node_modules/@deepseek-ai/dsh-base/package.json +1 -1
  27. package/node_modules/@deepseek-ai/dsh-bash-local/lib/index.js +1 -1
  28. package/node_modules/@deepseek-ai/dsh-bash-local/package.json +1 -1
  29. package/node_modules/@deepseek-ai/dsh-bash-sandbox/package.json +1 -1
  30. package/node_modules/@deepseek-ai/dsh-brand/package.json +1 -1
  31. package/node_modules/@deepseek-ai/dsh-client-connection/lib/client.js +6 -6
  32. package/node_modules/@deepseek-ai/dsh-client-connection/lib/index.js +2 -2
  33. package/node_modules/@deepseek-ai/dsh-client-connection/package.json +1 -1
  34. package/node_modules/@deepseek-ai/dsh-client-hmr/lib/client.js +1 -1
  35. package/node_modules/@deepseek-ai/dsh-client-hmr/package.json +1 -1
  36. package/node_modules/@deepseek-ai/dsh-client-locale/lib/client.js +1 -1
  37. package/node_modules/@deepseek-ai/dsh-client-locale/package.json +1 -1
  38. package/node_modules/@deepseek-ai/dsh-client-modules/package.json +1 -1
  39. package/node_modules/@deepseek-ai/dsh-client-runtime/lib/client.js +2 -2
  40. package/node_modules/@deepseek-ai/dsh-client-runtime/package.json +1 -1
  41. package/node_modules/@deepseek-ai/dsh-client-schema-form/package.json +1 -1
  42. package/node_modules/@deepseek-ai/dsh-client-ui-agent-preset/lib/client.js +1 -1
  43. package/node_modules/@deepseek-ai/dsh-client-ui-agent-preset/package.json +1 -1
  44. package/node_modules/@deepseek-ai/dsh-client-ui-attachment/package.json +1 -1
  45. package/node_modules/@deepseek-ai/dsh-client-ui-commands/lib/client.js +1 -1
  46. package/node_modules/@deepseek-ai/dsh-client-ui-commands/package.json +1 -1
  47. package/node_modules/@deepseek-ai/dsh-client-ui-conversation/lib/client.js +6 -6
  48. package/node_modules/@deepseek-ai/dsh-client-ui-conversation/package.json +1 -1
  49. package/node_modules/@deepseek-ai/dsh-client-ui-cordis/lib/client.js +1 -1
  50. package/node_modules/@deepseek-ai/dsh-client-ui-cordis/package.json +1 -1
  51. package/node_modules/@deepseek-ai/dsh-client-ui-deliverables/lib/client.js +1 -1
  52. package/node_modules/@deepseek-ai/dsh-client-ui-deliverables/package.json +1 -1
  53. package/node_modules/@deepseek-ai/dsh-client-ui-directory-picker-browse/lib/client.js +1 -1
  54. package/node_modules/@deepseek-ai/dsh-client-ui-directory-picker-browse/package.json +1 -1
  55. package/node_modules/@deepseek-ai/dsh-client-ui-directory-picker-native/package.json +1 -1
  56. package/node_modules/@deepseek-ai/dsh-client-ui-goal/lib/client.js +1 -1
  57. package/node_modules/@deepseek-ai/dsh-client-ui-goal/package.json +1 -1
  58. package/node_modules/@deepseek-ai/dsh-client-ui-input-trigger/lib/client.js +1 -1
  59. package/node_modules/@deepseek-ai/dsh-client-ui-input-trigger/package.json +1 -1
  60. package/node_modules/@deepseek-ai/dsh-client-ui-jobs/lib/client.js +1 -1
  61. package/node_modules/@deepseek-ai/dsh-client-ui-jobs/package.json +1 -1
  62. package/node_modules/@deepseek-ai/dsh-client-ui-layout/lib/client.js +1 -1
  63. package/node_modules/@deepseek-ai/dsh-client-ui-layout/package.json +1 -1
  64. package/node_modules/@deepseek-ai/dsh-client-ui-message-feedback/lib/client.js +1 -1
  65. package/node_modules/@deepseek-ai/dsh-client-ui-message-feedback/package.json +1 -1
  66. package/node_modules/@deepseek-ai/dsh-client-ui-model-selection/lib/client.js +1 -1
  67. package/node_modules/@deepseek-ai/dsh-client-ui-model-selection/package.json +1 -1
  68. package/node_modules/@deepseek-ai/dsh-client-ui-permission-presets/lib/client.js +1 -1
  69. package/node_modules/@deepseek-ai/dsh-client-ui-permission-presets/package.json +1 -1
  70. package/node_modules/@deepseek-ai/dsh-client-ui-plan/lib/client.js +1 -1
  71. package/node_modules/@deepseek-ai/dsh-client-ui-plan/package.json +1 -1
  72. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/index.js +11 -11
  73. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/package.json +1 -1
  74. package/node_modules/@deepseek-ai/dsh-client-ui-settings/package.json +1 -1
  75. package/node_modules/@deepseek-ai/dsh-client-ui-settings-general/lib/client.js +1 -1
  76. package/node_modules/@deepseek-ai/dsh-client-ui-settings-general/package.json +1 -1
  77. package/node_modules/@deepseek-ai/dsh-client-ui-settings-models/lib/client.js +1 -1
  78. package/node_modules/@deepseek-ai/dsh-client-ui-settings-models/package.json +1 -1
  79. package/node_modules/@deepseek-ai/dsh-client-ui-settings-plugin-inventory/lib/client.js +1 -1
  80. package/node_modules/@deepseek-ai/dsh-client-ui-settings-plugin-inventory/package.json +1 -1
  81. package/node_modules/@deepseek-ai/dsh-client-ui-settings-plugins/lib/client.js +1 -1
  82. package/node_modules/@deepseek-ai/dsh-client-ui-settings-plugins/package.json +1 -1
  83. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar/lib/client.js +1 -1
  84. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar/package.json +1 -1
  85. package/node_modules/@deepseek-ai/dsh-client-ui-skill/lib/client.js +1 -1
  86. package/node_modules/@deepseek-ai/dsh-client-ui-skill/package.json +1 -1
  87. package/node_modules/@deepseek-ai/dsh-client-ui-slots/lib/index.js +1 -1
  88. package/node_modules/@deepseek-ai/dsh-client-ui-slots/package.json +1 -1
  89. package/node_modules/@deepseek-ai/dsh-client-ui-subagent/lib/client.js +1 -1
  90. package/node_modules/@deepseek-ai/dsh-client-ui-subagent/package.json +1 -1
  91. package/node_modules/@deepseek-ai/dsh-client-ui-theme/lib/client.js +1 -1
  92. package/node_modules/@deepseek-ai/dsh-client-ui-theme/package.json +1 -1
  93. package/node_modules/@deepseek-ai/dsh-client-ui-tool/lib/client.js +1 -1
  94. package/node_modules/@deepseek-ai/dsh-client-ui-tool/package.json +1 -1
  95. package/node_modules/@deepseek-ai/dsh-client-ui-trajectory/lib/client.js +13 -13
  96. package/node_modules/@deepseek-ai/dsh-client-ui-trajectory/package.json +1 -1
  97. package/node_modules/@deepseek-ai/dsh-client-ui-user-questions/lib/client.js +1 -1
  98. package/node_modules/@deepseek-ai/dsh-client-ui-user-questions/package.json +1 -1
  99. package/node_modules/@deepseek-ai/dsh-client-ui-workflow-run/lib/client.js +1 -1
  100. package/node_modules/@deepseek-ai/dsh-client-ui-workflow-run/package.json +1 -1
  101. package/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/client.js +1 -1
  102. package/node_modules/@deepseek-ai/dsh-client-ui-workspace/package.json +1 -1
  103. package/node_modules/@deepseek-ai/dsh-client-web/package.json +1 -1
  104. package/node_modules/@deepseek-ai/dsh-client-web-react/lib/index.js +1 -1
  105. package/node_modules/@deepseek-ai/dsh-client-web-react/package.json +1 -1
  106. package/node_modules/@deepseek-ai/dsh-cmdline/package.json +1 -1
  107. package/node_modules/@deepseek-ai/dsh-code-runtime/package.json +1 -1
  108. package/node_modules/@deepseek-ai/dsh-code-runtime-worker-thread/lib/index.js +2 -2
  109. package/node_modules/@deepseek-ai/dsh-code-runtime-worker-thread/lib/worker.cjs +4 -2
  110. package/node_modules/@deepseek-ai/dsh-code-runtime-worker-thread/package.json +1 -1
  111. package/node_modules/@deepseek-ai/dsh-command-compact/package.json +1 -1
  112. package/node_modules/@deepseek-ai/dsh-command-feedback/package.json +1 -1
  113. package/node_modules/@deepseek-ai/dsh-command-goal/package.json +1 -1
  114. package/node_modules/@deepseek-ai/dsh-commands/package.json +1 -1
  115. package/node_modules/@deepseek-ai/dsh-compaction/package.json +1 -1
  116. package/node_modules/@deepseek-ai/dsh-compaction-basic/lib/index.js +1 -1
  117. package/node_modules/@deepseek-ai/dsh-compaction-basic/package.json +1 -1
  118. package/node_modules/@deepseek-ai/dsh-compaction-tool-result-pruner/package.json +1 -1
  119. package/node_modules/@deepseek-ai/dsh-content-review/package.json +1 -1
  120. package/node_modules/@deepseek-ai/dsh-cordis-client-runner/lib/client.js +7 -7
  121. package/node_modules/@deepseek-ai/dsh-cordis-client-runner/package.json +1 -1
  122. package/node_modules/@deepseek-ai/dsh-cordis-host-runner/package.json +1 -1
  123. package/node_modules/@deepseek-ai/dsh-credentials/package.json +1 -1
  124. package/node_modules/@deepseek-ai/dsh-credentials-local/package.json +1 -1
  125. package/node_modules/@deepseek-ai/dsh-fs/package.json +1 -1
  126. package/node_modules/@deepseek-ai/dsh-fs-local/lib/index.js +4 -4
  127. package/node_modules/@deepseek-ai/dsh-fs-local/package.json +1 -1
  128. package/node_modules/@deepseek-ai/dsh-fs-observation-policy/package.json +1 -1
  129. package/node_modules/@deepseek-ai/dsh-fs-sandbox/package.json +1 -1
  130. package/node_modules/@deepseek-ai/dsh-goal/package.json +1 -1
  131. package/node_modules/@deepseek-ai/dsh-goal-round-driver/package.json +1 -1
  132. package/node_modules/@deepseek-ai/dsh-headless/package.json +1 -1
  133. package/node_modules/@deepseek-ai/dsh-home-paths/lib/index.js +1 -1
  134. package/node_modules/@deepseek-ai/dsh-home-paths/package.json +1 -1
  135. package/node_modules/@deepseek-ai/dsh-home-quarantine-macos/package.json +1 -1
  136. package/node_modules/@deepseek-ai/dsh-host-apiproxy/lib/index.js +4 -4
  137. package/node_modules/@deepseek-ai/dsh-host-apiproxy/package.json +1 -1
  138. package/node_modules/@deepseek-ai/dsh-host-directory-picker/package.json +1 -1
  139. package/node_modules/@deepseek-ai/dsh-host-directory-picker-auto/package.json +1 -1
  140. package/node_modules/@deepseek-ai/dsh-host-directory-picker-browse/package.json +1 -1
  141. package/node_modules/@deepseek-ai/dsh-host-directory-picker-native/lib/worker.cjs +9 -7
  142. package/node_modules/@deepseek-ai/dsh-host-directory-picker-native/package.json +1 -1
  143. package/node_modules/@deepseek-ai/dsh-host-frontend-static/package.json +1 -1
  144. package/node_modules/@deepseek-ai/dsh-host-plugin-inventory/package.json +1 -1
  145. package/node_modules/@deepseek-ai/dsh-host-webserver/package.json +1 -1
  146. package/node_modules/@deepseek-ai/dsh-invariants/package.json +1 -1
  147. package/node_modules/@deepseek-ai/dsh-jobs/package.json +1 -1
  148. package/node_modules/@deepseek-ai/dsh-jobs-local/package.json +1 -1
  149. package/node_modules/@deepseek-ai/dsh-launch-environment/package.json +1 -1
  150. package/node_modules/@deepseek-ai/dsh-llm/lib/invariant.js +1 -1
  151. package/node_modules/@deepseek-ai/dsh-llm/package.json +1 -1
  152. package/node_modules/@deepseek-ai/dsh-llm-deepseek/lib/index.js +1 -1
  153. package/node_modules/@deepseek-ai/dsh-llm-deepseek/package.json +1 -1
  154. package/node_modules/@deepseek-ai/dsh-llm-gateway-openai/lib/index.js +1 -1
  155. package/node_modules/@deepseek-ai/dsh-llm-gateway-openai/package.json +1 -1
  156. package/node_modules/@deepseek-ai/dsh-llm-pi-ai/lib/index.js +1 -1
  157. package/node_modules/@deepseek-ai/dsh-llm-pi-ai/package.json +1 -1
  158. package/node_modules/@deepseek-ai/dsh-llm-retry/package.json +1 -1
  159. package/node_modules/@deepseek-ai/dsh-mcp-client/lib/index.js +2 -2
  160. package/node_modules/@deepseek-ai/dsh-mcp-client/package.json +1 -1
  161. package/node_modules/@deepseek-ai/dsh-message-feedback/package.json +1 -1
  162. package/node_modules/@deepseek-ai/dsh-native-command/package.json +1 -1
  163. package/node_modules/@deepseek-ai/dsh-output-retention/lib/index.js +1 -1
  164. package/node_modules/@deepseek-ai/dsh-output-retention/package.json +1 -1
  165. package/node_modules/@deepseek-ai/dsh-permission-presets/lib/index.js +1 -1
  166. package/node_modules/@deepseek-ai/dsh-permission-presets/package.json +1 -1
  167. package/node_modules/@deepseek-ai/dsh-persona/package.json +1 -1
  168. package/node_modules/@deepseek-ai/dsh-plan-mode/package.json +1 -1
  169. package/node_modules/@deepseek-ai/dsh-pwsh-local/lib/index.js +1 -1
  170. package/node_modules/@deepseek-ai/dsh-pwsh-local/package.json +1 -1
  171. package/node_modules/@deepseek-ai/dsh-pwsh-sandbox/package.json +1 -1
  172. package/node_modules/@deepseek-ai/dsh-qb-auth/lib/index.js +3 -3
  173. package/node_modules/@deepseek-ai/dsh-qb-auth/package.json +1 -1
  174. package/node_modules/@deepseek-ai/dsh-repeat-tool-reminder/package.json +1 -1
  175. package/node_modules/@deepseek-ai/dsh-sandbox/package.json +1 -1
  176. package/node_modules/@deepseek-ai/dsh-sandbox-local/package.json +1 -1
  177. package/node_modules/@deepseek-ai/dsh-sandbox-policy/package.json +1 -1
  178. package/node_modules/@deepseek-ai/dsh-sandbox-windows-acl/lib/index.js +1 -1
  179. package/node_modules/@deepseek-ai/dsh-sandbox-windows-acl/lib/runner.js +1 -1
  180. package/node_modules/@deepseek-ai/dsh-sandbox-windows-acl/lib/types-D2_FQYSK.js +1 -0
  181. package/node_modules/@deepseek-ai/dsh-sandbox-windows-acl/package.json +1 -1
  182. package/node_modules/@deepseek-ai/dsh-schedule/lib/index.js +1 -1
  183. package/node_modules/@deepseek-ai/dsh-schedule/package.json +1 -1
  184. package/node_modules/@deepseek-ai/dsh-scope/package.json +1 -1
  185. package/node_modules/@deepseek-ai/dsh-session/lib/index.js +1 -1
  186. package/node_modules/@deepseek-ai/dsh-session/lib/invariant.js +1 -1
  187. package/node_modules/@deepseek-ai/dsh-session/package.json +1 -1
  188. package/node_modules/@deepseek-ai/dsh-session-checkpoint-policy/package.json +1 -1
  189. package/node_modules/@deepseek-ai/dsh-session-log-export/lib/client.js +1 -1
  190. package/node_modules/@deepseek-ai/dsh-session-log-export/package.json +1 -1
  191. package/node_modules/@deepseek-ai/dsh-session-persistence/lib/index.js +1 -1
  192. package/node_modules/@deepseek-ai/dsh-session-persistence/package.json +1 -1
  193. package/node_modules/@deepseek-ai/dsh-session-persistence-jsonl/lib/index.js +1 -1
  194. package/node_modules/@deepseek-ai/dsh-session-persistence-jsonl/package.json +1 -1
  195. package/node_modules/@deepseek-ai/dsh-session-projection/package.json +1 -1
  196. package/node_modules/@deepseek-ai/dsh-session-projection-cache/package.json +1 -1
  197. package/node_modules/@deepseek-ai/dsh-session-query/package.json +1 -1
  198. package/node_modules/@deepseek-ai/dsh-session-query-sqlite/package.json +1 -1
  199. package/node_modules/@deepseek-ai/dsh-session-reference/lib/index.js +4 -4
  200. package/node_modules/@deepseek-ai/dsh-session-reference/package.json +1 -1
  201. package/node_modules/@deepseek-ai/dsh-session-stats/package.json +1 -1
  202. package/node_modules/@deepseek-ai/dsh-session-telemetry/package.json +1 -1
  203. package/node_modules/@deepseek-ai/dsh-session-telemetry-otel/package.json +1 -1
  204. package/node_modules/@deepseek-ai/dsh-session-title/lib/index.js +2 -2
  205. package/node_modules/@deepseek-ai/dsh-session-title/package.json +1 -1
  206. package/node_modules/@deepseek-ai/dsh-session-title-first-prompt-llm/package.json +1 -1
  207. package/node_modules/@deepseek-ai/dsh-session-title-llm/lib/index.js +3 -3
  208. package/node_modules/@deepseek-ai/dsh-session-title-llm/package.json +1 -1
  209. package/node_modules/@deepseek-ai/dsh-settings/lib/invariant.js +1 -1
  210. package/node_modules/@deepseek-ai/dsh-settings/package.json +1 -1
  211. package/node_modules/@deepseek-ai/dsh-settings-file/package.json +1 -1
  212. package/node_modules/@deepseek-ai/dsh-shell/package.json +1 -1
  213. package/node_modules/@deepseek-ai/dsh-shell-env/package.json +1 -1
  214. package/node_modules/@deepseek-ai/dsh-skill/package.json +1 -1
  215. package/node_modules/@deepseek-ai/dsh-skill-badge/package.json +1 -1
  216. package/node_modules/@deepseek-ai/dsh-skill-filesystem/lib/index.js +1 -1
  217. package/node_modules/@deepseek-ai/dsh-skill-filesystem/package.json +1 -1
  218. package/node_modules/@deepseek-ai/dsh-spill/package.json +1 -1
  219. package/node_modules/@deepseek-ai/dsh-spill-local/lib/index.js +1 -1
  220. package/node_modules/@deepseek-ai/dsh-spill-local/package.json +1 -1
  221. package/node_modules/@deepseek-ai/dsh-spill-policy/lib/index.js +2 -2
  222. package/node_modules/@deepseek-ai/dsh-spill-policy/package.json +1 -1
  223. package/node_modules/@deepseek-ai/dsh-storage/package.json +1 -1
  224. package/node_modules/@deepseek-ai/dsh-storage-domain/lib/invariant.js +1 -1
  225. package/node_modules/@deepseek-ai/dsh-storage-domain/package.json +1 -1
  226. package/node_modules/@deepseek-ai/dsh-storage-json/package.json +1 -1
  227. package/node_modules/@deepseek-ai/dsh-subagent/lib/index.js +1 -1
  228. package/node_modules/@deepseek-ai/dsh-subagent/package.json +1 -1
  229. package/node_modules/@deepseek-ai/dsh-subagent-fork-in-process/package.json +1 -1
  230. package/node_modules/@deepseek-ai/dsh-subagent-in-process-driver/package.json +1 -1
  231. package/node_modules/@deepseek-ai/dsh-subagent-spawn-in-process/package.json +1 -1
  232. package/node_modules/@deepseek-ai/dsh-subprocess/package.json +1 -1
  233. package/node_modules/@deepseek-ai/dsh-subprocess-local/package.json +1 -1
  234. package/node_modules/@deepseek-ai/dsh-system-prompt/package.json +1 -1
  235. package/node_modules/@deepseek-ai/dsh-terminal/package.json +1 -1
  236. package/node_modules/@deepseek-ai/dsh-terminal-bash/lib/index.js +2 -2
  237. package/node_modules/@deepseek-ai/dsh-terminal-bash/package.json +1 -1
  238. package/node_modules/@deepseek-ai/dsh-time-context/lib/index.js +1 -1
  239. package/node_modules/@deepseek-ai/dsh-time-context/lib/invariant.js +1 -1
  240. package/node_modules/@deepseek-ai/dsh-time-context/package.json +1 -1
  241. package/node_modules/@deepseek-ai/dsh-timeout/package.json +1 -1
  242. package/node_modules/@deepseek-ai/dsh-tmux-context/package.json +1 -1
  243. package/node_modules/@deepseek-ai/dsh-token-meter/lib/index.js +1 -1
  244. package/node_modules/@deepseek-ai/dsh-token-meter/package.json +1 -1
  245. package/node_modules/@deepseek-ai/dsh-tool-ask-user/package.json +1 -1
  246. package/node_modules/@deepseek-ai/dsh-tool-bash/package.json +1 -1
  247. package/node_modules/@deepseek-ai/dsh-tool-bash-persistent/package.json +1 -1
  248. package/node_modules/@deepseek-ai/dsh-tool-call-timeout-policy/package.json +1 -1
  249. package/node_modules/@deepseek-ai/dsh-tool-cordis/package.json +1 -1
  250. package/node_modules/@deepseek-ai/dsh-tool-fs/lib/index.js +2 -2
  251. package/node_modules/@deepseek-ai/dsh-tool-fs/package.json +1 -1
  252. package/node_modules/@deepseek-ai/dsh-tool-fs-search/lib/index.js +1 -1
  253. package/node_modules/@deepseek-ai/dsh-tool-fs-search/package.json +1 -1
  254. package/node_modules/@deepseek-ai/dsh-tool-goal/package.json +1 -1
  255. package/node_modules/@deepseek-ai/dsh-tool-jobs/package.json +1 -1
  256. package/node_modules/@deepseek-ai/dsh-tool-pwsh/package.json +1 -1
  257. package/node_modules/@deepseek-ai/dsh-tool-ralph/lib/index.js +1 -1
  258. package/node_modules/@deepseek-ai/dsh-tool-ralph/package.json +1 -1
  259. package/node_modules/@deepseek-ai/dsh-tool-skill/package.json +1 -1
  260. package/node_modules/@deepseek-ai/dsh-tool-str-replace-editor/lib/index.js +6 -6
  261. package/node_modules/@deepseek-ai/dsh-tool-str-replace-editor/package.json +1 -1
  262. package/node_modules/@deepseek-ai/dsh-tool-subagent/package.json +1 -1
  263. package/node_modules/@deepseek-ai/dsh-tool-subagent-control/package.json +1 -1
  264. package/node_modules/@deepseek-ai/dsh-tool-subagent-report/package.json +1 -1
  265. package/node_modules/@deepseek-ai/dsh-tool-todo/package.json +1 -1
  266. package/node_modules/@deepseek-ai/dsh-tool-web/package.json +1 -1
  267. package/node_modules/@deepseek-ai/dsh-tool-workflow/lib/index.js +2 -2
  268. package/node_modules/@deepseek-ai/dsh-tool-workflow/package.json +1 -1
  269. package/node_modules/@deepseek-ai/dsh-tools/lib/index.js +26 -26
  270. package/node_modules/@deepseek-ai/dsh-tools/package.json +1 -1
  271. package/node_modules/@deepseek-ai/dsh-typert-loader/package.json +1 -1
  272. package/node_modules/@deepseek-ai/dsh-typert-protocol/package.json +1 -1
  273. package/node_modules/@deepseek-ai/dsh-typert-registry/package.json +1 -1
  274. package/node_modules/@deepseek-ai/dsh-user-approval/package.json +1 -1
  275. package/node_modules/@deepseek-ai/dsh-user-questions/package.json +1 -1
  276. package/node_modules/@deepseek-ai/dsh-web/lib/index.js +1 -1
  277. package/node_modules/@deepseek-ai/dsh-web/package.json +1 -1
  278. package/node_modules/@deepseek-ai/dsh-web-app/package.json +1 -1
  279. package/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/{index-Dqw48FrP.js → index-BQQQ5Qt-.js} +2 -2
  280. package/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/langs/cpp-DddhVWhK.js +1 -0
  281. package/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/langs/{php-D-uCvoST.js → php-9bx0az3O.js} +1 -1
  282. package/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/langs/{ruby-DEItuUFs.js → ruby-HDLHRjSL.js} +1 -1
  283. package/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/langs/swift-C2oV4EkX.js +1 -0
  284. package/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/{vendor-Cjbwl5VI.js → vendor-CeMKrCZm.js} +24 -24
  285. package/node_modules/@deepseek-ai/dsh-web-frontend/dist/index.html +2 -2
  286. package/node_modules/@deepseek-ai/dsh-web-frontend/package.json +1 -1
  287. package/node_modules/@deepseek-ai/dsh-web-search-deepseek/LICENSE +21 -0
  288. package/node_modules/@deepseek-ai/dsh-web-search-deepseek/lib/index.js +1 -0
  289. package/node_modules/@deepseek-ai/dsh-web-search-deepseek/lib/invariant.js +1 -0
  290. package/node_modules/@deepseek-ai/dsh-web-search-deepseek/package.json +1 -0
  291. package/node_modules/@deepseek-ai/dsh-web-search-dsh/lib/index.js +1 -1
  292. package/node_modules/@deepseek-ai/dsh-web-search-dsh/package.json +1 -1
  293. package/node_modules/@deepseek-ai/dsh-workflow/package.json +1 -1
  294. package/node_modules/@deepseek-ai/dsh-workflow-worker-thread/lib/index.js +2 -2
  295. package/node_modules/@deepseek-ai/dsh-workflow-worker-thread/lib/worker.cjs +3 -4
  296. package/node_modules/@deepseek-ai/dsh-workflow-worker-thread/package.json +1 -1
  297. package/node_modules/@deepseek-ai/dsh-workspace/lib/invariant.js +1 -1
  298. package/node_modules/@deepseek-ai/dsh-workspace/package.json +1 -1
  299. package/package.json +1 -1
  300. package/lib/profile-boot-_PCyp_wB.js +0 -1
  301. package/node_modules/@deepseek-ai/dsh-sandbox-windows-acl/lib/types-BjBvdldw.js +0 -1
  302. package/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/langs/cpp-DIPi6g--.js +0 -1
  303. package/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/langs/swift-D82vCrfD.js +0 -1
  304. /package/lib/{profile-boot-B71dQloK.js → profile-boot-DDo03lXi.js} +0 -0
@@ -1,11 +1,11 @@
1
- var rs=Object.defineProperty;var a=(t,s)=>rs(t,"name",{value:s,configurable:!0});import{Service as as}from"@deepseek-ai/cordis";import ie from"@deepseek-ai/schemastery";import{randomUUID as V}from"node:crypto";import{mkdir as is,stat as cs}from"node:fs/promises";import{dirname as ds,extname as ls}from"node:path";import{installModelSelection as ps}from"@deepseek-ai/dsh-agent";import{AttachmentError as K}from"@deepseek-ai/dsh-attachment";import{ReasoningEffortId as us,contentHasImage as We,createUserMessage as ms,errorChain as gs,freezeMessage as hs}from"@deepseek-ai/dsh-llm";import{isAppendSurfaceEvent as fs,isJsonValue as vs}from"@deepseek-ai/dsh-session";import{SessionQueryError as Ie}from"@deepseek-ai/dsh-session-query";import{SubagentError as W}from"@deepseek-ai/dsh-subagent";import{isUserInvocable as bs}from"@deepseek-ai/dsh-skill";import{WorkspaceId as G,WorkspaceMoveInvalidError as ys,WorkspaceOrderInvalidError as ws,WorkspaceUnknownSessionError as Ss,workspaceDomainState as ks,workspaceRecord as Is}from"@deepseek-ai/dsh-workspace";import{InvalidPresetIdError as js,PresetExistsError as Ps,PresetMountError as Es,PresetNotWritableError as Ge,SETTINGS_NAMESPACE as As,UnknownPresetError as He,resolveSessionPreset as z}from"@deepseek-ai/dsh-agent-presets";import{Zip as Rs,ZipDeflate as Ms}from"fflate";import{GoalError as Us}from"@deepseek-ai/dsh-goal";import{SettingsConflictError as Cs,settingsNamespace as Ls}from"@deepseek-ai/dsh-settings";import{credentialRef as je}from"@deepseek-ai/dsh-credentials";import{SessionTitleInvalidError as Ts}from"@deepseek-ai/dsh-session-title";import{z as e}from"zod";import{UserQuestionError as ce}from"@deepseek-ai/dsh-user-questions";import{DirectoryPickerError as Ns}from"@deepseek-ai/dsh-host-directory-picker";import{API_REMOTE_FORWARDED_EVENTS as Ds,ApiRemoteSessionNotFound as de,ApiRemoteSubagentSessionOwnership as H,apiRemoteSubagentOwnershipError as $s,createApiRemoteAgentResolver as Os,hasApiRemoteSubagentOwner as _s,inspectApiRemoteSession as Vs}from"@deepseek-ai/dsh-api-remotes";import{release as Bs}from"node:os";import{runNativeCommand as Fs}from"@deepseek-ai/dsh-native-command";function zs(t){return{sessionQuery:t.get("sessionQuery"),sessionPersistence:t.get("sessionPersistence"),attachments:t.get("attachments"),sessions:t.get("sessions")}}a(zs,"sessionLogExportDeps");async function Ze(t,s,i){i?.throwIfAborted();const l=t.sessions;if(l===void 0)return;const m=l.get(s);m!==void 0&&(await l.flush(m),i?.throwIfAborted())}a(Ze,"flushLiveSessionLog");const Qs={"image/png":"png","image/jpeg":"jpg","image/webp":"webp","image/gif":"gif"};function Ws(t){return`media/${String(t.attachmentId)}.${Qs[t.mediaType]}`}a(Ws,"mediaEntryPath");function le(t,s){if(!Array.isArray(t))return;const i=[];for(const l of t)i.push(l);for(;i.length>0;){const l=i.pop();if(typeof l!="object"||l===null||Array.isArray(l))continue;const m=l;if(m.type==="image"&&typeof m.attachment=="object"&&m.attachment!==null){const b=m.attachment;s.set(String(b.attachmentId),b)}if(Array.isArray(m.content))for(const b of m.content)i.push(b)}}a(le,"collectImageRefs");function Gs(t,s){const i=t.data;if(typeof i!="object"||i===null)return;const l=i;if(le(l.content,s),l.message!==void 0&&le(l.message.content,s),l.inserted!==void 0)for(const m of l.inserted)le(m.content,s);l.chunk?.type==="block-end"&&le([l.chunk.block],s)}a(Gs,"collectEventImageRefs");function Hs(t){const s=new Map;for(const i of t.split(`
2
- `)){if(i==="")continue;let l;try{l=JSON.parse(i)}catch{continue}Gs(l,s)}return s}a(Hs,"imageRefsInArtifact");function xe(t){return t.replace(/[^A-Za-z0-9_-]/g,"_")}a(xe,"safeSessionIdSegment");function Zs(t){return`dsh-session-${xe(t)}.zip`}a(Zs,"sessionLogZipFilename");async function*xs(t,s,i,l,m){const b=new Map,f=a(w=>{for(const[I,A]of Hs(w))b.set(I,A)},"rememberMedia");if(f(s.content),yield{path:s.filename,content:s.content},l){const w=new Set([i]),I=a(async function*(R){for(const C of R){m?.throwIfAborted();const M=C.session.header.id;if(w.has(M))continue;w.add(M),await Ze(t,M,m);const T=await t.sessionPersistence.readRaw(M,m);if(m?.throwIfAborted(),T===void 0)throw new Error(`subagent "${M}" has no stored log artifact`);f(T.content),yield{path:`subagents/${xe(M)}/${T.filename}`,content:T.content},yield*I(C.descendants)}},"collect"),A=await t.sessionQuery.traceSession(i,m);m?.throwIfAborted(),yield*I(A.descendants)}for(const w of b.values()){m?.throwIfAborted();const I=await t.attachments.readImage(w,m);m?.throwIfAborted(),yield{path:Ws(w),data:I.data}}}a(xs,"sessionLogZipEntries");const Js=65536,Ys=65536,Ks=65536;var Xs=class{static{a(this,"ResponseCapacityGate")}releasePending;async wait(t,s){s.throwIfAborted(),!(t.desiredSize===null||t.desiredSize>0)&&(await new Promise(i=>{const l=a(()=>{this.releasePending=void 0,s.removeEventListener("abort",l),i()},"release");this.releasePending=l,s.addEventListener("abort",l,{once:!0})}),s.throwIfAborted())}pulled(){this.releasePending?.()}};async function qs(t,s,i,l,m){let b=0;do{m.throwIfAborted();const f=Math.min(b+Ys,s.byteLength),w=f>=s.byteLength;t.push(s.subarray(b,f),w),b=f,await l.wait(i,m)}while(b<s.byteLength)}a(qs,"pushBinaryChunks");async function en(t,s,i,l,m){const b=new TextEncoder;let f=0,w;do{m.throwIfAborted();let I=Math.min(f+Js,s.length);if(I<s.length&&I-f>1){const A=s.charCodeAt(I-1);A>=55296&&A<=56319&&(I-=1)}w=I>=s.length,t.push(b.encode(s.slice(f,I)),w),f=I,await l.wait(i,m)}while(!w)}a(en,"pushArtifactChunks");function tn(t,s,i,l,m,b){const f=new AbortController,w=AbortSignal.any([b,f.signal]);let I,A=!1;const R=new Xs,C=a(()=>{I===void 0||A||(A=!0,I.terminate())},"terminateZip");return new ReadableStream({start(M){const T=new Rs((U,N,ne)=>{if(U){M.error(U);return}N.byteLength>0&&M.enqueue(N),ne&&M.close()});I=T,(async()=>{try{for await(const U of xs(t,s,i,l,w)){const N=new Ms(U.path,{level:m});T.add(N),"content"in U?await en(N,U.content,M,R,w):await qs(N,U.data,M,R,w)}T.end()}catch(U){C(),M.error(U instanceof Error?U:new Error(String(U)))}})()},pull(){R.pulled()},cancel(M){f.abort(M instanceof Error?M:new Error("session log export stream cancelled")),C()}},{highWaterMark:Ks,size:a(M=>M.byteLength,"size")})}a(tn,"streamSessionLogZip");function Je(t,s){let i=0,l=0;for(const m of t){if(i===s)return t.slice(0,l);i++,l+=m.length}return t}a(Je,"truncateUnicodeCodePoints");const k=e.string().min(1),Ye=e.string().min(1),O=e.string().min(1),Ke=e.object({type:e.string(),seq:e.number().int().nonnegative(),time:e.number(),data:e.unknown(),sourceEventSeqs:e.array(e.number()).optional(),surfaceOp:e.unknown().optional(),ignorable:e.literal(!0).optional()}),sn=e.object({sessionId:k,updatedAt:e.number(),running:e.boolean(),blank:e.boolean(),parentSessionId:k.optional(),origin:e.literal("subagent").optional(),cwd:e.string().optional(),agentPreset:e.string().optional(),projections:e.lazy(()=>Pe).optional()}),nn=e.object({cursor:e.string().optional()}),on=e.object({items:e.array(sn)}),rn=e.object({query:e.string().trim().min(1).max(500).refine(t=>!t.includes("\0"),{message:"search query must not contain NUL"})}),an=e.object({sessionId:k,snippet:e.string().refine(t=>Je(t,240)===t,{message:"search snippet must contain at most 240 Unicode code points"})}),cn=e.object({items:e.array(an).max(20),hasMore:e.boolean()}),dn=e.object({workspaceId:O.optional(),cwd:e.string().optional(),sessionId:k.optional(),agentPreset:e.string().optional()}).refine(t=>t.workspaceId===void 0||t.cwd===void 0,{message:"session.create accepts workspaceId or cwd, not both"}),ln=e.object({sessionId:k,agentPreset:e.string().optional()}),pn=e.object({sessionId:k,title:e.string()}),un=e.object({title:e.string().min(1),seq:e.number().int().nonnegative()}),mn=e.object({sessionId:k,atSeq:e.number().int().nonnegative().optional()}),gn=e.object({sessionId:k}),hn=e.object({sessionId:k,beforeSeq:e.number().int().nonnegative().optional(),maxMessages:e.number().int().positive().optional()}),Xe=e.object({provider:e.string().min(1),model:e.string().min(1),reasoningEffort:e.string().min(1).optional()}),fn=e.object({id:e.string().min(1),name:e.string().min(1),description:e.string().optional()}),vn=e.object({efforts:e.array(fn).min(1),defaultEffort:e.string().min(1).optional()}),bn=e.object({id:e.string().min(1),name:e.string().min(1),description:e.string().optional(),reasoning:vn.optional()}),qe=e.object({id:e.string().min(1),name:e.string().min(1),models:e.array(bn)}),et=e.object({id:e.string().min(1),name:e.string().min(1),message:e.string()}),tt=e.discriminatedUnion("for",[e.object({for:e.literal("call"),view:e.looseObject({card:e.string()})}),e.object({for:e.literal("result"),view:e.looseObject({card:e.string()})})]),st=e.object({event:Ke,view:tt.optional()}),Pe=e.object({asOfSeq:e.number().int().min(-1),values:e.record(e.string(),e.unknown())}),yn=e.object({blank:e.boolean(),lastPromptAt:e.number().nullable()}),wn=e.object({maxImageBytes:e.number().int().positive(),maxImagesPerMessage:e.number().int().positive(),maxMessageImageBytes:e.number().int().positive(),maxImagePixels:e.number().int().positive(),mediaTypes:e.array(e.string())}),Sn=e.object({events:e.array(st),hasMore:e.boolean(),projections:Pe.optional()}),kn=e.object({sessionId:k}),In=e.object({current:Xe,routable:e.boolean(),groups:e.array(qe),failures:e.array(et)}),jn=e.object({sessionId:k,provider:e.string().min(1),model:e.string().min(1),reasoningEffort:e.string().min(1).optional()}),Pn=e.object({selected:Xe}),Ee=e.looseObject({type:e.string()}),nt=e.union([e.literal("image/png"),e.literal("image/jpeg"),e.literal("image/webp"),e.literal("image/gif")]),En=e.discriminatedUnion("type",[e.object({type:e.literal("text"),text:e.string()}),e.object({type:e.literal("image"),mediaType:nt,data:e.string(),name:e.string().optional()})]),An=e.object({sessionId:k,mode:e.union([e.literal("queue"),e.literal("steer")]),content:e.array(En),clientTimeZone:e.string().optional()}),Rn=e.object({accepted:e.literal(!0),command:e.object({kind:e.literal("success"),text:e.string().optional()}).optional()}),ot=e.string().min(1),Mn=e.object({attachmentId:ot,mediaType:nt,bytes:e.number().int().positive(),width:e.number().int().positive(),height:e.number().int().positive(),name:e.string().optional()}),Un=e.object({sessionId:k,attachmentId:ot}),Cn=e.object({attachment:Mn,data:e.string()}),Ln=e.object({sessionId:k,itemId:Ye,action:e.discriminatedUnion("kind",[e.object({kind:e.literal("edit"),content:e.array(Ee)}),e.object({kind:e.literal("remove")}),e.object({kind:e.literal("steer")})])}),Tn=e.object({accepted:e.literal(!0)}),Nn=e.object({sessionId:k}),Dn=e.object({accepted:e.literal(!0)}),Ae=e.string().min(1),$n=e.object({sessionId:k,approvalId:Ae,outcome:e.union([e.literal("allowed-once"),e.literal("rejected")])}),On=e.object({answers:e.array(e.object({id:e.string(),selected:e.array(e.string()),custom:e.string().optional()}))}),_n=e.object({sessionId:k,answer:On});function Vn(t){return t}a(Vn,"RpcId");const Bn=new Set([".html",".htm",".xhtml",".svg"]);function Fn(t){const s=t.replace(/LSHandlerPreferredVersions\s*=\s*\{[^}]*\};/g,""),i=/\{[^{}]*LSHandlerURLScheme\s*=\s*"?https"?;[^{}]*\}/.exec(s)?.[0];if(i!==void 0)return/LSHandlerRoleAll\s*=\s*"?([\w.-]+)"?;/.exec(i)?.[1]}a(Fn,"macBundleForHttps");async function zn(t,s,i,l,m){if(i==="darwin"){let b;try{const{stdout:f}=await l("defaults",["read","com.apple.LaunchServices/com.apple.launchservices.secure"],s);b=Fn(f)}catch{return!1}return b===void 0?!1:(await l("open",["-b",b,t],s),!0)}if(i==="linux"){const b=m.BROWSER;return b===void 0||b===""?!1:(await l(b,[t],s),!0)}return!1}a(zn,"openInBrowser");function Qn(t){return`'${t.replace(/'/g,"''")}'`}a(Qn,"powershellLiteral");function pe(t){return t!==void 0&&t!==""}a(pe,"present");function rt(t){const s=t.env??process.env;return pe(s.WSL_DISTRO_NAME)||pe(s.WSL_INTEROP)?!0:(t.osRelease??Bs()).toLowerCase().includes("microsoft")}a(rt,"isWsl");async function at(t,s,i){await i("powershell.exe",["-NoProfile","-Command",`Invoke-Item -LiteralPath ${Qn(t)}`],s)}a(at,"openWindowsPath");async function Wn(t,s,i){const l=await i("wslpath",["-w",t],s);s.throwIfAborted();const m=l.stdout.replace(/[\r\n]+$/,"");if(m==="")throw new Error("wslpath returned no Windows path");await at(m,s,i)}a(Wn,"openWslPath");async function it(t,s,i,l={}){const m=l.platform??process.platform,b=l.run??Fs,f=l.env??process.env,w=m==="linux"&&rt(l);if(!(!w&&i==="default"&&Bn.has(ls(t).toLowerCase())&&await zn(t,s,m,b,f))){if(m==="darwin"){await b("open",i==="text-editor"?["-t",t]:[t],s);return}if(m==="win32"){await at(t,s,b);return}if(m==="linux"){if(w){await Wn(t,s,b);return}await b("xdg-open",[t],s);return}throw new Error(`native path opener is unsupported on ${m}`)}}a(it,"openNativePathWithIntent");function Gn(t={}){const s=t.platform??process.platform;if(s==="darwin"||s==="win32")return!0;if(s!=="linux")return!1;const i=t.env??process.env;return rt(t)||pe(i.DISPLAY)||pe(i.WAYLAND_DISPLAY)}a(Gn,"canOpenNativePath");function Hn(t,s,i={}){return it(t,s,"default",i)}a(Hn,"openNativePath");function Zn(t,s,i={}){return it(t,s,"text-editor",i)}a(Zn,"openNativeTextFile");const xn=50,Jn=["agent-loop","shell","locale","permission","ui-conversation","ui-theme","web-search-deepseek"],ct=100,dt=16,Yn=1024,lt=new Set(["user/message","assistant/message"]);function Kn(t){const s=Buffer.from(t,"base64");if(t.length===0||s.toString("base64")!==t)throw new K("Image upload is not canonical base64.","INVALID_IMAGE_BASE64");return new Uint8Array(s)}a(Kn,"decodeBase64");async function Xn(t,s){if(s.every(f=>f.type==="text"))return s.map(f=>({type:"text",text:f.text}));const i=t.attachments.imageLimits;if(s.filter(f=>f.type==="image").length>i.maxImagesPerMessage)throw new K("Prompt exceeds the configured image-count limit.","TOO_MANY_IMAGES");const l=s.map(f=>f.type==="text"?f:{part:f,data:Kn(f.data)}),m=l.filter(f=>"data"in f);if(m.reduce((f,w)=>f+w.data.byteLength,0)>i.maxMessageImageBytes)throw new K("Prompt exceeds the configured aggregate image-byte limit.","IMAGES_TOO_LARGE");for(const f of m)await t.attachments.validateImage({data:f.data,mediaType:f.part.mediaType,...f.part.name===void 0?{}:{name:f.part.name}});const b=[];for(const f of l){if(!("data"in f)){b.push({type:"text",text:f.text});continue}const w=await t.attachments.saveImage({data:f.data,mediaType:f.part.mediaType,...f.part.name===void 0?{}:{name:f.part.name}});b.push({type:"image",attachment:w})}return b}a(Xn,"durablePromptContent");function X(t,s){if(Array.isArray(t))for(const i of t){if(typeof i!="object"||i===null||Array.isArray(i))continue;const l=i;if(l.type==="image"&&typeof l.attachment=="object"&&l.attachment!==null){const m=l.attachment;if(s(m))return m}if(l.type==="tool-result"){const m=X(l.content,s);if(m!==void 0)return m}}}a(X,"imageBlockIn");function qn(t,s){const i=t.data,l=X(i.content,s);if(l!==void 0)return l;if(i.message!==void 0){const m=X(i.message.content,s);if(m!==void 0)return m}if(i.inserted!==void 0)for(const m of i.inserted){const b=X(m.content,s);if(b!==void 0)return b}if(t.type==="assistant/chunk"&&i.chunk?.type==="block-end")return X([i.chunk.block],s)}a(qn,"imageInEvent");function eo(t){return t.some(s=>We(s.content))}a(eo,"messagesHaveImage");function to(t,s){for(const i of t){const l=qn(i,m=>String(m.attachmentId)===s);if(l!==void 0)return l}}a(to,"referencedImage");const so=new Set(["ui-onboarding",As]),pt=/^[A-Za-z][A-Za-z0-9_+.-]*(?:\/[A-Za-z0-9_+.-]+)+$/;function ut(t){if(!(t.length===0||t.trim()!==t||t!=="UTC"&&!pt.test(t)))try{const s=new Intl.DateTimeFormat("en-US",{timeZone:t}).resolvedOptions().timeZone;return s!=="UTC"&&!pt.test(s)?void 0:s}catch{return}}a(ut,"canonicalClientTimeZone");function _(t){return t.aborted}a(_,"isAborted");function no(t,s,i){const l=s===void 0?[...t]:t.filter(f=>f.seq<s);let m=0,b=0;for(let f=l.length-1;f>=0;f--){const w=l[f];if(!lt.has(w.type)||!fs(w))continue;m++;const I=w.sourceEventSeqs,A=I!==void 0&&I.length>0?Math.min(w.seq,...I):w.seq;if(m>=i){b=A;break}}return{events:l.filter(f=>f.seq>=b),hasMore:b>0}}a(no,"paginate");function j(t,s){return{rpcId:t.rpcId,result:{ok:!0,value:s}}}a(j,"ok");async function mt(t){const s=await Promise.all(t.llm.listProviders().map(async i=>{try{const l=await t.llm.listModels(i.id),m=await Promise.all(l.map(async b=>{const f=await t.llm.resolveModelInfo(i.id,b.id),w=f.reasoning===void 0?void 0:{efforts:f.reasoning.efforts.map(I=>({id:I.id,name:I.name,...I.description===void 0?{}:{description:I.description}})),...f.reasoning.defaultEffort===void 0?{}:{defaultEffort:f.reasoning.defaultEffort}};return{id:b.id,name:b.name,...b.description===void 0?{}:{description:b.description},...w===void 0?{}:{reasoning:w}}}));return{kind:"group",group:{id:i.id,name:i.name,models:m}}}catch(l){return{kind:"failure",failure:{id:i.id,name:i.name,message:l instanceof Error?l.message:String(l)}}}}));return{groups:s.flatMap(i=>i.kind==="group"?[i.group]:[]).filter(i=>i.models.length>0),failures:s.flatMap(i=>i.kind==="failure"?[i.failure]:[])}}a(mt,"buildModelCatalog");function g(t,s){return{rpcId:t.rpcId,result:{ok:!1,error:s}}}a(g,"err");function gt(t,s){if(s instanceof He)return g(t,{code:"agent-preset-not-found",message:s.message,details:{agentPreset:s.presetId,available:[...s.available]}});if(s instanceof Es)return g(t,{code:"agent-preset-invalid",message:s.message,details:{agentPreset:s.presetId,reason:s.reason}})}a(gt,"presetFailure");var ht=class{static{a(this,"FrameQueue")}buffer=[];waiter;done=!1;push(t){this.done||(this.buffer.push(t),this.waiter?.())}end(){this.done=!0,this.waiter?.()}async*iterate(t,s){const i=a(()=>{this.end()},"onAbort");t.addEventListener("abort",i,{once:!0});try{for(;;){for(;this.buffer.length>0;)yield this.buffer.shift();if(this.done||t.aborted)return;await new Promise(l=>{this.waiter=l}),this.waiter=void 0}}finally{t.removeEventListener("abort",i),s()}}};function L(t){return{rpcId:V(),payload:t}}a(L,"frame");function oo(t,s){for(const[i,l]of s.entries())if(!vs(l))throw new Error(`forwarded host event "${t}" argument ${i} is not lossless JSON data`);return s}a(oo,"assertJsonArgs");function ft(t,s){t.push(L({type:"session/subscribed",sessionId:s.id,lastSeq:s.seq-1}))}a(ft,"subscribeSession");function ue(t){return t.map(s=>({id:s.id,kind:s.kind,label:s.label,status:s.status,...s.detail===void 0?{}:{detail:s.detail},startedAt:s.startedAt,...s.finishedAt===void 0?{}:{finishedAt:s.finishedAt}}))}a(ue,"jobViews");function vt(t){return!t.events.some(s=>s.type==="turn/start")}a(vt,"sessionBlank");function bt(t,s){const i=t.blank&&s.type!=="turn/start",l=s.type==="user/message"&&s.data.source.kind==="user"?s.time:t.lastPromptAt;return i===t.blank&&l===t.lastPromptAt?t:{blank:i,lastPromptAt:l}}a(bt,"applySessionListMetadata");function yt(t){let s={blank:!0,lastPromptAt:null};for(const i of t)s=bt(s,i);return s}a(yt,"sessionListMetadata");function wt(t,s){return Math.max(t.createdAt,s?.lastPromptAt??0)}a(wt,"sessionListUpdatedAt");function Re(t,s=[]){const i=z({header:t,events:s});return{...t.parentSession===void 0?{}:{parentSessionId:t.parentSession},...t.origin===void 0?{}:{origin:t.origin},...t.cwd===void 0?{}:{cwd:t.cwd},...i===void 0?{}:{agentPreset:i}}}a(Re,"sessionListFields");function ro(t,s){const i=yt(t.events);return{sessionId:t.id,updatedAt:wt(t.header,i),running:s,blank:i.blank,...Re(t.header,t.events)}}a(ro,"summarize");async function ao(t,s,i,l,m){if(l===0)return;m?.throwIfAborted();const b=s.locate(i);if(b===void 0)return;m?.throwIfAborted();let f;try{f=(await cs(b.path)).size}catch{m?.throwIfAborted();return}if(!(f>l))try{const{events:w}=await s.readFrom(i.id,0,m);return m?.throwIfAborted(),yt(w)}catch(w){m?.throwIfAborted(),t.logger.warn(`session.list: blank probe for "${i.id}" failed (serving it as visible): ${String(w)}`);return}}a(ao,"probeColdSessionMetadata");async function io(t,s,i,l,m,b){const f=l?.blank===!1?void 0:await ao(t,s,i,m,b);return{sessionId:i.id,updatedAt:wt(i,f??l),running:!1,blank:l?.blank===!1?!1:f?.blank??!1,...Re(i)}}a(io,"summarizeCold");function St(t){return t instanceof Ns?{code:t.code,message:t.message,details:{path:t.path}}:{code:"internal",message:t instanceof Error?t.message:String(t),details:{}}}a(St,"directoryError");function kt(t){return{rpcId:t.rpcId,payload:{type:"approval/requested",sessionId:t.sessionId,approvalId:t.approvalId,toolName:t.toolName,...t.callId===void 0?{}:{callId:t.callId},...t.reason===void 0?{}:{reason:t.reason}}}}a(kt,"requestedFrame");function co(t,s){if(t.sessionId!==s.sessionId)return!1;const i=t.answer.answers;return i.length!==s.questions.length?!1:i.every((l,m)=>{const b=s.questions[m];if(l.id!==b.id||new Set(l.selected).size!==l.selected.length)return!1;const f=l.custom?.trim();if(f!==void 0&&f===""||b.multiSelect!==!0&&(f!==void 0&&l.selected.length>0||l.selected.length>1))return!1;const w=new Set(b.options?.map(I=>I.label)??[]);return l.selected.every(I=>w.has(I))})}a(co,"matchesQuestions");function It(t,s,i,l){try{if(s.type==="tool/call"){const{name:m,arguments:b}=s.data,f=t.tools.get(m,l)?.presentCall?.(JSON.parse(b));return f===void 0?void 0:{for:"call",view:f}}if(s.type==="tool/result"){const{message:m,meta:b}=s.data,[f]=m.content,w=m.source.callId,I=i(w);if(I===void 0)return;const A=t.tools.get(I.name,l)?.presentResult?.(I.args,{content:f.content,isError:f.isError===!0,...b===void 0?{}:{meta:b}});return A===void 0?void 0:{for:"result",view:A}}}catch(m){console.error(`api-proxy: presenter failed for ${s.type}, falling back to generic: ${String(m)}`)}}a(It,"viewFor");function jt(t,s){for(let i=t.length-1;i>=0;i--){const l=t[i];if(l.type!=="tool/call")continue;const m=l.data;if(m.callId===s)try{return{name:m.name,args:JSON.parse(m.arguments)}}catch{return}}}a(jt,"backscanArgs");function Pt(t,s,i,l,m){const b=no(s,i,l??xn);return{events:b.events.map(f=>{const w=It(t,f,I=>jt(b.events,I),m);return{event:f,...w===void 0?{}:{view:w}}}),hasMore:b.hasMore}}a(Pt,"historyPage");function Et(t,s){const i=t.get("sessionProjections");if(i!==void 0)return i.snapshot(s)}a(Et,"projectionsFor");function At(t,s,i){try{const l=i!==void 0?t.get("sessionProjections")?.snapshot(i):t.get("sessionProjectionCache")?.cachedSnapshot(s);return l!==void 0&&Object.keys(l.values).length>0?l:void 0}catch(l){t.logger.warn(`session.list: projection column for "${s.id}" failed (serving the row without it): ${String(l)}`);return}}a(At,"listProjectionsFor");function Rt(t,s){const i=t.get("sessionProjections");if(i!==void 0)return i.restore({},s,0).snapshot}a(Rt,"detachedProjectionsFor");function Mt(t,s,i){try{return i()}catch(l){t.logger.warn(`subagent.history: projections for "${s}" failed (serving the page without them): ${String(l)}`);return}}a(Mt,"subagentHistoryProjections");function lo(t,s,i){const l=t.payload.childSessionId;if(i.aborted)return g(t,{code:"cancelled",message:"subagent prompt was cancelled",details:{}});if(s instanceof W)switch(s.code){case"NOT_RESUMABLE":return g(t,{code:"subagent-not-resumable",message:"subagent cannot be resumed",details:{childSessionId:l}});case"UNAUTHORIZED":return g(t,{code:"subagent-unauthorized",message:"subagent does not belong to this parent",details:{childSessionId:l}});case"DRAINING":case"ACTIVATION_CLOSING":case"CONTINUATION_UNAVAILABLE":case"PERSISTENCE_UNAVAILABLE":return g(t,{code:"subagent-delivery-unavailable",message:"subagent follow-up is temporarily unavailable",details:{childSessionId:l}});default:break}return g(t,{code:"internal",message:"subagent prompt failed",details:{}})}a(lo,"subagentPromptError");function Ut(){return{code:"internal",message:"subagent catalog is unavailable: this deployment does not mount the sessionProjections registry (load @deepseek-ai/dsh-session-projection)",details:{}}}a(Ut,"projectionsUnavailableError");async function Ct(t,s,i){const{parentSessionId:l,childSessionId:m,mode:b}=s;try{const f=(await t.subagents.listChildren(l,i)).find(w=>w.id===m);return f===void 0||f.kind==="child"&&f.mode!==b?{error:{code:"subagent-not-found",message:`session "${m}" is not a ${b} direct child of "${l}"`,details:{parentSessionId:l,childSessionId:m}}}:f.kind==="diagnostic"?{error:{code:"subagent-catalog-diagnostic",message:`subagent "${m}" is ${f.reason}`,details:{parentSessionId:l,childSessionId:m,reason:f.reason}}}:{entry:f}}catch(f){return i?.aborted||f instanceof W&&f.code==="CANCELLED"?{error:{code:"cancelled",message:"subagent catalog read was cancelled",details:{}}}:f instanceof W&&f.code==="SUBAGENT_CONTROL_PROJECTIONS_UNAVAILABLE"?{error:Ut()}:{error:{code:"internal",message:"subagent catalog read failed",details:{}}}}}a(Ct,"catalogChild");function me(t){return{code:"agent-preset-not-found",message:"this deployment composes no agent presets",details:{agentPreset:t,available:[]}}}a(me,"noRoster");function ge(t,s){return s instanceof He?{code:"agent-preset-not-found",message:s.message,details:{agentPreset:s.presetId,available:[...s.available]}}:s instanceof Ge?{code:"agent-preset-read-only",message:s.message,details:{agentPreset:t,reason:s.message}}:s instanceof js||s instanceof Ps?{code:"agent-preset-invalid",message:s.message,details:{agentPreset:t,reason:s.message}}:{code:"internal",message:`agent preset "${t}": ${String(s)}`,details:{}}}a(ge,"presetError");var Lt=class extends Error{static{a(this,"AgentPresetConflict")}sessionId;requestedPreset;existingPreset;constructor(t,s,i){super(i===void 0?`session "${t}" records no agent preset, so it cannot be adopted under one; a deployment composing no roster records none on any session — `:`session "${t}" already runs agent preset ${JSON.stringify(i)}; requested ${JSON.stringify(s)}. A session's preset is fixed at creation.`),this.sessionId=t,this.requestedPreset=s,this.existingPreset=i}},Me=class extends Error{static{a(this,"SessionCwdConflict")}sessionId;requestedCwd;existingCwd;constructor(t,s,i){super(`session "${t}" already exists with cwd ${JSON.stringify(i)}; requested ${JSON.stringify(s)}`),this.sessionId=t,this.requestedCwd=s,this.existingCwd=i}},Tt=class extends Error{static{a(this,"WorkspaceNameConflictError")}workspaceName;constructor(t){super(`workspace name '${t}' is already in use`),this.workspaceName=t,this.name="WorkspaceNameConflictError"}};function he(t,s){return g(t,{code:"workspace-not-found",message:`workspace "${s}" not found`,details:{workspaceId:s}})}a(he,"workspaceNotFound");function q(t){return{workspaceId:t.id,path:t.path,title:t.title,sessionIds:[...t.sessionIds],createdAt:t.createdAt,updatedAt:t.updatedAt}}a(q,"workspaceView");function po(t,s){const i=Is.parse(s);return{workspaceId:t,path:i.path,title:i.title,sessionIds:[...i.sessionIds],createdAt:i.createdAt,updatedAt:i.updatedAt}}a(po,"changedWorkspaceView");function Nt(t,s){const i=s.sessionExportCompressionLevel??6,l=s.coldBlankProbeMaxBytes??1024,m=a(()=>{const{provider:n,model:o}=s.defaultModelSelection();return{provider:n,model:o}},"agentOptions"),b=new WeakMap,f=new Map,w=new Map;let I=Promise.resolve();const A=new Map,R=new Map,C=new Set,M=new WeakMap;function T(n,o){const r=(M.get(n)??Promise.resolve()).then(o);return M.set(n,r.then(()=>{},()=>{})),r}a(T,"serializeImageAdmission");function U(n){const o=b.get(n);if(o!==void 0)return o;let r;const c={get current(){if(r!==void 0)return r;const d=n.session.requestHeader()?.config;return d===void 0?s.defaultModelSelection():{provider:d.provider,model:d.model,...d.reasoningEffort===void 0?{}:{reasoningEffort:d.reasoningEffort}}},set current(d){r=d},assembled:void 0};return ps(n.ctx,c),b.set(n,c),c}a(U,"selectionFor");function N(n){const o=n.agent;if(o===void 0)throw new Error("api-proxy: agent setup has no scoped agent");U(o)}a(N,"installSelection");function ne(n,o,r){if(!(o===void 0||o===r))throw new Lt(n,o,r)}a(ne,"assertPresetUnchanged");async function oe(n){const o=t.get("agentPresets");if(o===void 0)return{setup:a(c=>(N(c),Promise.resolve()),"setup")};const r=(await o.resolve(n)).id;return{agentPreset:r,setup:a(async c=>{N(c),await o.mount(c,r)},"setup")}}a(oe,"composeAgent");const B=a((n,o)=>_s(t,n,o),"hasSubagentOwner"),ve=a(n=>$s(n),"subagentOwnershipError"),be=a(n=>Vs(t,n),"inspectServable"),F=Os(t,{agentOptions:m,setup:a(async({meta:n,events:o})=>(await oe(z({header:n,events:o}))).setup,"setup")});function re(n){const o=L(n);for(const r of C)r.push(o)}a(re,"broadcast"),t.inject(["sessionProjections"],n=>{n.sessionProjections.onChanged((o,r,c,d)=>{re({type:"session/projection",sessionId:o.id,key:r,value:c,seq:d})})}),t.inject(["sessionProjections"],n=>{n.sessionProjections.register({key:"sessionListMetadata",schema:yn,init:a(()=>({blank:!0,lastPromptAt:null}),"init"),apply:bt,view:a(o=>o,"view"),stateVersion:1})}),t.inject(["sessionProjections","attachments"],n=>{n.sessionProjections.register({key:"imageLimits",schema:wn,init:a(()=>null,"init"),apply:a(o=>o,"apply"),view:a(()=>n.attachments.imageLimits,"view"),stateVersion:1})});const Te=a((n,o)=>{const r=a(c=>{const d=c==="next-turn"?n.inbox.nextTurn:n.inbox.nextStep;return o?.target===c?d.toSpliced(o.start,o.removedCount??0,...o.inserted):d},"project");return[...r("next-turn").map(c=>({id:c.id,placement:"queued",message:c})),...r("next-step").map(c=>({id:c.id,placement:c.source.kind==="user"?"steering":"context",message:c}))]},"queueItems");t.on("session/event",(n,o)=>{if(o.type!=="agent/inbox/spliced")return;const r=t.agents.get(n.id);r?.session===n&&re({type:"session/queue",sessionId:n.id,items:Te(r,o.data)})});function ae(n,o){A.delete(n.rpcId),n.signal!==void 0&&n.onAbort!==void 0&&n.signal.removeEventListener("abort",n.onAbort),re({type:"question/resolved",sessionId:n.sessionId,questionRpcId:n.rpcId,outcome:o})}a(ae,"claimQuestion");const Zt=t.userQuestions.registerProvider({ask(n){const o=n.agent?.id;return o===void 0?Promise.reject(new ce("web user interaction requires an agent-owned session","ASK_MISSING_AGENT")):new Promise((r,c)=>{const d=V(),u={rpcId:d,sessionId:o,questions:n.questions,resolve:r,reject:c,...n.signal===void 0?{}:{signal:n.signal}},p=a(()=>{ae(u,"cancelled"),c(new ce("ask_user_question was aborted before the user answered","ASK_ABORTED"))},"onAbort");u.onAbort=p,A.set(d,u),n.signal?.addEventListener("abort",p,{once:!0});const h={rpcId:d,payload:{type:"question/requested",sessionId:o,questions:n.questions}};for(const v of C)v.push(h)})}});t.effect(()=>()=>{Zt();for(const n of[...A.values()])ae(n,"cancelled"),n.reject(new ce("web user-questions provider was disposed","ASK_ABORTED"))},"api-proxy: user-questions provider"),t.get("approval")!==void 0&&(t.effect(()=>()=>{for(const n of[...R.values()])n.resolve("cancelled")},"api-proxy: approval registry teardown"),t.on("approval/request",(n,o)=>{if(n.signal?.aborted===!0)return Promise.resolve("cancelled");const r=n.agent.session.events,c=new Set;for(const h of R.values())c.add(h.approvalId);const d=new Set;let u;for(let h=r.length-1;h>=0;h-=1){const v=r[h];if(v.type==="approval/decided")d.add(v.data.id);else if(v.type==="approval/asked"){if(d.has(v.data.id)||c.has(v.data.id)||(n.callId??null)!==(v.data.callId??null))continue;u=v.data.id;break}}if(u===void 0)return o();const p=u;return new Promise(h=>{const v=a(P=>{R.delete(E.rpcId)&&(n.signal?.removeEventListener("abort",y),re({type:"approval/resolved",sessionId:E.sessionId,approvalId:p,outcome:P}),h(P))},"settle"),y=a(()=>{v("cancelled")},"onAbort"),E={rpcId:V(),sessionId:n.agent.session.id,approvalId:p,toolName:n.toolName,...n.callId===void 0?{}:{callId:n.callId},...n.reason===void 0?{}:{reason:n.reason},resolve:v};R.set(E.rpcId,E),n.signal?.addEventListener("abort",y,{once:!0});const S=kt(E);for(const P of C)P.push(S)})}));async function Ne(n){const o=t.sessions.get(n);if(o!==void 0)return{id:o.id,header:o.header,events:[...o.events]};const r=await be(n);return{id:r.meta.id,header:r.meta,events:r.events}}a(Ne,"readSessionState");async function xt(n){const o=t.workspaceRegistry.list(),r=o.find(d=>d.sessionIds.includes(n.id));if(r!==void 0||n.header.origin!=="subagent")return r;const c=await t.sessionQuery.traceSession(n.id);for(const d of c.ancestors){const u=o.find(p=>p.sessionIds.includes(d.header.id));if(u!==void 0)return u}}a(xt,"forkWorkspace");async function Jt(n){const o=t.sessions.get(n);if(o!==void 0)return{kind:"attached",session:o};const r=await be(n);return{kind:"detached",header:r.meta,events:r.events}}a(Jt,"historySourceFor");function Yt(n){return n.kind==="detached"?{header:n.header,events:n.events}:{header:n.session.header,events:n.session.events}}a(Yt,"sourceSession");function Kt(n,o){if(n.kind==="detached"){const d=o?Rt(t,n.events):void 0;return{events:n.events,...d===void 0?{}:{projections:d}}}const r=[...n.session.events],c=o?Et(t,n.session):void 0;return{events:r,...c===void 0?{}:{projections:c}}}a(Kt,"historyCutOf");async function De(n,o){const r=t.get("agents")?.get(n);if(r!==void 0)return r;const c=t.get("agentPresets");if(c!==void 0)try{return await c.standingKeyFor(z(o))}catch{return}}a(De,"presenterScopeFor");async function Xt(n,o,r,c){let d=w.get(n);d===void 0&&(d=(async()=>{const p=t.sessions.get(n),h=t.agents.get(n);if(p!==void 0&&B(p,h))throw new H(n);if(h!==void 0)return h;const v=r?t.get("sessionPersistence"):void 0,y=v===void 0?void 0:(await v.list()).find(S=>S.id===n);if(v!==void 0&&y!==void 0){const S=await v.inspect(n);if(B({header:S.meta},void 0))throw new H(n);if(S.meta.cwd!==o)throw new Me(n,o,S.meta.cwd);const P=z({header:S.meta,events:S.events});return ne(n,c,P),(await t.agents.resume({resumeSessionId:n,agentOptions:m(),setup:(await oe(P)).setup})).agent}try{await is(o,{recursive:!0})}catch(S){throw new Error(`failed to ensure project directory "${o}": ${String(S)}`,{cause:S})}const E=await oe(c);return(await t.agents.create({sessionId:n,agentOptions:m(),meta:{cwd:o,...E.agentPreset===void 0?{}:{agentPreset:E.agentPreset}},setup:E.setup})).agent})().catch(p=>{const h=t.agents.get(n);if(h!==void 0){if(B(h.session,h))throw new H(n);return h}const v=t.sessions.get(n);throw v!==void 0&&B(v,void 0)?new H(n):p}).finally(()=>{w.delete(n)}),w.set(n,d));const u=await d;if(B(u.session,u))throw new H(n);if(ne(n,c,z(u.session)),u.session.header.cwd!==o)throw new Me(n,o,u.session.header.cwd);return u}a(Xt,"ensureSession");function qt(n){const o=I.then(async()=>{const r=await t.workspaceRegistry.resolveByPath(n);return r!==void 0?{workspace:r,created:!1}:{workspace:await t.workspaceRegistry.create(n),created:!0}});return I=o.then(()=>{},()=>{}),o}a(qt,"ensureWorkspace");async function $e(n){n?.throwIfAborted();const o=a(u=>{const p=t.agents.get(u.id),h=At(t,u.header,u);return{...ro(u,p?.status==="running"),...h===void 0?{}:{projections:h}}},"summarizeAttached"),r=t.sessions.list().map(o);n?.throwIfAborted();const c=new Set(r.map(u=>u.sessionId)),d=t.get("sessionPersistence");if(d!==void 0){const u=(await d.list(n)).filter(p=>!c.has(p.id)&&p.cwd!==void 0);n?.throwIfAborted();for(let p=0;p<u.length;p+=dt){n?.throwIfAborted();const h=u.slice(p,p+dt),v=await Promise.allSettled(h.map(async P=>{const $=At(t,P,void 0),Q=await io(t,d,P,$?.values.sessionListMetadata,l,n),J=t.sessions.get(P.id);return J!==void 0?o(J):{...Q,...$===void 0?{}:{projections:$}}})),y=[];let E=!1,S;for(const P of v)P.status==="fulfilled"?y.push(P.value):E||(E=!0,S=P.reason);if(E)throw S;n?.throwIfAborted(),r.push(...y)}}return r.sort((u,p)=>p.updatedAt-u.updatedAt),r}a($e,"listVisibleSessionSummaries");function Oe(n){const o=t.get("agentPresets")?.serviceFor(n,"goals")??t.get("goals");return o===void 0?{error:{code:"internal",message:"goal service is absent: neither this session's agent preset nor the host composition mounts @deepseek-ai/dsh-goal",details:{}}}:o}a(Oe,"goalServiceFor");function _e(n,o){const r=o instanceof Us?{goalCode:o.code}:{};return g(n,{code:"internal",message:String(o),details:r})}a(_e,"goalError");async function x(n,o){const r=await F(n.payload.sessionId);if("error"in r)return g(n,r.error);const c=Oe(r.agent);if("error"in c)return g(n,c.error);try{const d=o(c,r.agent);return j(n,{ref:{id:d.id,revision:d.revision}})}catch(d){return _e(n,d)}}a(x,"mutateGoal");function Ve(n){const o=t.get("llm");return o===void 0||o.listProviders().some(r=>r.id===n)}a(Ve,"routeServed");async function es(n,o){const r=await F(o);if("error"in r)return{refused:g(n,r.error)};const c=r.agent,d=U(c).current;return Ve(d.provider)?{agent:c}:{refused:g(n,{code:"model-unavailable",message:`no adapter serves provider "${d.provider}"; select a model for this session`,details:{provider:d.provider,model:d.model}})}}a(es,"turnAgentFor");function ye(){return{code:"internal",message:"settings service is absent: this deployment does not mount a settings provider (e.g. @deepseek-ai/dsh-settings-file) in its composition",details:{}}}a(ye,"settingsAbsent");async function Be(n,o,r,c){try{return await c(o,r),j(n,{opened:!0})}catch(d){return r.aborted?g(n,{code:"cancelled",message:"path open was aborted",details:{}}):g(n,{code:"internal",message:`path open failed: ${d instanceof Error?d.message:String(d)}`,details:{}})}}a(Be,"openTarget");function Fe(n,o,r){return Be(n,o,r,s.openPath??((c,d)=>Hn(c,d)))}a(Fe,"openPath");function ts(n,o,r){return Be(n,o,r,s.openTextFile??((c,d)=>Zn(c,d)))}a(ts,"openTextFile");function we(){return s.canOpenPath!==void 0?s.canOpenPath():s.openPath!==void 0||Gn()}a(we,"canOpenPaths");function Se(){return{code:"internal",message:"credentials service is absent: this deployment does not mount a credential provider (e.g. @deepseek-ai/dsh-credentials-local) in its composition",details:{}}}a(Se,"credentialsAbsent");function ze(n){return{ns:String(n.ns),schema:n.schema,value:n.value,...n.base===void 0?{}:{base:n.base},...n.user===void 0?{}:{user:n.user},applies:n.applies,secrets:(n.secrets??[]).map(o=>({path:[...o.path],set:o.set})),revision:n.revision}}a(ze,"namespaceView");function ss(){return new Set(t.llm.listConfigurableProviders().map(n=>n.settingsNs))}a(ss,"modelProviderNamespaces");function Qe(){const n=ss();for(const o of Jn)n.add(o);for(const o of so)n.add(o);return n}a(Qe,"exposedNamespaces");function ns(n,o){return g(n,{code:"settings-not-exposed",message:`settings namespace "${o}" is not exposed to configuration clients`,details:{ns:o}})}a(ns,"notExposed");async function ke(n,o,r,c,d){const u=t.get("settings");if(u===void 0)return g(n,ye());const p=a(y=>y instanceof Cs?g(n,{code:"settings-conflict",message:y.message,details:{ns:o,expected:y.expected,actual:y.actual}}):g(n,{code:"settings-rejected",message:y instanceof Error?y.message:String(y),details:{ns:o}}),"rejected");let h;try{h=Ls(o)}catch(y){return p(y)}if(!Qe().has(o))return ns(n,o);try{r==="update"?await u.update(h,c,d):r==="replace"?await u.replace(h,c,d):await u.mutate(h,c,d)}catch(y){return p(y)}const v=u.describe({redactSecrets:!0}).find(y=>y.ns===h);return v===void 0?g(n,{code:"internal",message:`settings namespace "${o}" was disposed after the ${r}`,details:{}}):j(n,ze(v))}return a(ke,"settingsWrite"),{sessions:{async list(n){return j(n,{items:await $e()})},async search(n,o){const r=a(()=>g(n,{code:"cancelled",message:"session search was aborted",details:{}}),"cancelled");if(_(o))return r();const c=t.get("sessionQuery");if(c===void 0)return g(n,{code:"internal",message:"session search is unavailable: this deployment does not mount @deepseek-ai/dsh-session-query",details:{}});try{const d=await $e(o);if(_(o))return r();if(d.length===0)return j(n,{items:[],hasMore:!1});const u=new Set(d.map(P=>P.sessionId)),p=[],h=new Set,v=new Set;let y,E=0,S=20;for(;p.length<=20;){if(_(o))return r();if(E>=ct)throw new Error(`session search provider exceeded the ${ct}-call work budget`);E++;const P=y,$=S;let Q;try{Q=await c.searchSessions({query:n.payload.query,eventFilters:[{kind:"type",values:["user/message","assistant/message"]},{kind:"surface",values:["current"]}],limit:$,...P===void 0?{}:{cursor:P}},{signal:o})}catch(D){if(_(o))return r();if(P===void 0&&D instanceof Ie&&D.code==="SESSION_QUERY_INVALID_LIMIT"&&$>1){S=Math.max(1,Math.floor($/2));continue}if(P!==void 0&&D instanceof Ie&&D.code==="SESSION_QUERY_STALE_CURSOR"){p.length=0,h.clear(),v.clear(),y=void 0;continue}throw D}if(_(o))return r();const J=Q.items.length;if(J>$)throw new Error(`session search provider returned ${J} items; maximum is ${$}`);for(const D of Q.items){if(p.length>20||!u.has(D.header.id)||D.bestMatch.sessionId!==D.header.id||D.bestMatch.surface!=="current"||!lt.has(D.bestMatch.type)||h.has(D.header.id))continue;const os=Je(D.bestMatch.snippet,240);h.add(D.header.id),p.push({sessionId:D.header.id,snippet:os})}const Y=Q.nextCursor;if(Y!==void 0){if(v.has(Y))throw new Error("session search provider repeated a continuation cursor");v.add(Y)}if(p.length>20||Y===void 0)break;y=Y}return j(n,{items:p.slice(0,20),hasMore:p.length>20})}catch(d){return _(o)||d instanceof Ie&&d.code==="SESSION_QUERY_ABORTED"?r():g(n,{code:"internal",message:`session search failed: ${String(d)}`,details:{}})}},async create(n){const o=n.payload.sessionId??`session-${V()}`;let r;if(n.payload.workspaceId!==void 0&&(r=t.workspaceRegistry.get(G(n.payload.workspaceId)),r===void 0))return g(n,{code:"workspace-not-found",message:`workspace "${n.payload.workspaceId}" not found`,details:{workspaceId:n.payload.workspaceId}});const c=r?.path??n.payload.cwd??s.cwd,d=n.payload.agentPreset;try{await Xt(o,c,n.payload.sessionId!==void 0,d)}catch(h){if(h instanceof Lt)return g(n,{code:"agent-preset-conflict",message:h.message,details:{sessionId:h.sessionId,requestedPreset:h.requestedPreset,...h.existingPreset===void 0?{}:{existingPreset:h.existingPreset}}});const v=gt(n,h);return v!==void 0?v:h instanceof Me?g(n,{code:"session-conflict",message:h.message,details:{sessionId:h.sessionId,requestedCwd:h.requestedCwd,...h.existingCwd===void 0?{}:{existingCwd:h.existingCwd}}}):h instanceof H?g(n,ve(h.sessionId)):g(n,{code:"internal",message:`failed to create session "${o}": ${String(h)}`,details:{}})}if(r!==void 0)try{await r.attachSession(o)}catch(h){return g(n,{code:"workspace-attach-failed",message:`session "${o}" was created but could not attach to workspace "${r.id}": ${String(h)}`,details:{sessionId:o,workspaceId:r.id}})}const u=t.agents.get(o),p=u===void 0?void 0:z(u.session);return j(n,{sessionId:o,...p===void 0?{}:{agentPreset:p}})},async history(n){const{sessionId:o,beforeSeq:r,maxMessages:c}=n.payload;try{const d=await Jt(o),u=await De(o,Yt(d)),p=Kt(d,r===void 0),h=Pt(t,p.events,r,c,u);return j(n,{events:h.events,hasMore:h.hasMore,...p.projections===void 0?{}:{projections:p.projections}})}catch(d){return d instanceof de?g(n,{code:"session-not-found",message:d.message,details:{sessionId:o}}):g(n,{code:"internal",message:`history unavailable for session "${o}": ${String(d)}`,details:{}})}},async models(n){const{sessionId:o}=n.payload,r=await F(o);if("error"in r)return g(n,r.error);const c=U(r.agent).current,{groups:d,failures:u}=await mt(t),p=Ve(c.provider);return j(n,{current:{...c},routable:p,groups:d,failures:u})},async selectModel(n){const{sessionId:o,provider:r,model:c,reasoningEffort:d}=n.payload,u=await F(o);return"error"in u?g(n,u.error):T(u.agent,async()=>{try{const p=await t.llm.resolveCallConfig({provider:r,model:c,...d===void 0?{}:{reasoningEffort:us(d)}});if([...u.agent.inbox.nextTurn,...u.agent.inbox.nextStep].some(v=>We(v.content))||eo(u.agent.session.deriveMessages())){const v=await t.llm.resolveModelInfo(p.provider,p.model);if(v.inputModalities!==void 0&&!v.inputModalities.includes("image"))return g(n,{code:"model-unavailable",message:`Model "${p.model}" does not accept image input, but this session already contains images; select an image-capable model.`,details:{provider:r,model:c}})}const h={provider:p.provider,model:p.model,...p.reasoningEffort===void 0?{}:{reasoningEffort:p.reasoningEffort}};U(u.agent).current=h;try{await s.saveDefaultModelSelection?.(h)}catch(v){t.logger.warn(`api-proxy: the model switch applies to this session but was not saved as the default: ${String(v)}`)}return j(n,{selected:{...h}})}catch(p){return g(n,{code:"model-unavailable",message:p instanceof Error?p.message:String(p),details:{provider:r,model:c}})}})},async rename(n){const{sessionId:o,title:r}=n.payload,c=await F(o);if("error"in c)return g(n,c.error);const d=t.get("sessionTitle");if(d===void 0)return g(n,{code:"internal",message:"renaming is unavailable: this deployment mounts no session-title service",details:{}});try{const u=d.rename(c.agent.session,r);return j(n,{title:u.title,seq:u.eventSeq})}catch(u){return u instanceof Ts?g(n,{code:"title-invalid",message:u.message,details:{sessionId:o}}):g(n,{code:"internal",message:`failed to rename session "${o}": ${String(u)}`,details:{}})}},async fork(n){const{sessionId:o,atSeq:r}=n.payload;let c;try{c=await Ne(o)}catch(S){return S instanceof de?g(n,{code:"session-not-found",message:S.message,details:{sessionId:o}}):g(n,{code:"internal",message:`fork source unavailable for session "${o}": ${String(S)}`,details:{}})}const d=c.events,u=d.at(-1)?.seq??-1,p=(r===void 0?void 0:d.find(S=>S.type==="turn/end"&&S.seq>=r))??(r===void 0||r>u?d.findLast(S=>S.type==="turn/end"):void 0);if(p===void 0)return g(n,{code:"fork-unavailable",message:r!==void 0&&r<=u?`session "${o}" has not completed the turn containing event ${String(r)}`:`session "${o}" has no completed turn to fork from`,details:{sessionId:o}});let h=p.seq+1;for(;h<d.length&&d[h]?.type!=="turn/start";)h++;let v;try{v=await xt(c)}catch(S){return g(n,{code:"internal",message:`failed to resolve fork workspace for session "${o}": ${String(S)}`,details:{}})}const y=`session-${V()}`,E=await oe(z(c));try{await t.agents.create({sessionId:y,seed:d.slice(0,h),meta:{...c.header.cwd===void 0?{}:{cwd:c.header.cwd},parentSession:c.id,seedLength:h,...E.agentPreset===void 0?{}:{agentPreset:E.agentPreset}},agentOptions:m(),setup:E.setup})}catch(S){return g(n,{code:"internal",message:`failed to fork session "${o}": ${String(S)}`,details:{}})}if(v!==void 0)try{await v.attachSession(y)}catch(S){return g(n,{code:"workspace-attach-failed",message:`session "${y}" was forked but could not attach to workspace "${v.id}": ${String(S)}`,details:{sessionId:y,workspaceId:v.id}})}return j(n,{sessionId:y})},async prompt(n){const{sessionId:o,mode:r,content:c,clientTimeZone:d}=n.payload,u=d===void 0?void 0:ut(d);if(d!==void 0&&u===void 0)return g(n,{code:"invalid-time-zone",message:"clientTimeZone must be UTC or a valid IANA Area/Location name",details:{value:d}});const p=await es(n,o);if("refused"in p)return p.refused;const h=p.agent,v={kind:"user",rpcId:n.rpcId,...u===void 0?{}:{clientTimeZone:u}},y=c.some(S=>S.type==="image"),E=a(async()=>{try{if(y){const P=U(h).current,$=await t.llm.resolveModelInfo(P.provider,P.model);if($.inputModalities!==void 0&&!$.inputModalities.includes("image"))return g(n,{code:"attachment-error",message:`Model "${P.model}" does not support image input.`,details:{reason:"MODEL_DOES_NOT_SUPPORT_IMAGES"}})}const S=ms({content:await Xn(t,c),source:v});r==="steer"?h.steer(S):h.followup(S)}catch(S){return S instanceof K?g(n,{code:"attachment-error",message:S.message,details:{reason:S.code}}):g(n,{code:"agent-busy",message:"prompt rejected",details:{reason:String(S)}})}return j(n,{accepted:!0})},"admit");return y?T(h,E):E()},async attachment(n){const{sessionId:o,attachmentId:r}=n.payload;let c;try{c=await Ne(o)}catch(u){return u instanceof de?g(n,{code:"session-not-found",message:u.message,details:{sessionId:o}}):g(n,{code:"internal",message:`attachment authorization unavailable for session "${o}": ${String(u)}`,details:{}})}const d=to(c.events,String(r));if(d===void 0)return g(n,{code:"attachment-error",message:"Image is not referenced by this session.",details:{reason:"ATTACHMENT_NOT_REFERENCED"}});try{const u=await t.attachments.readImage(d);return j(n,{attachment:u.ref,data:Buffer.from(u.data).toString("base64")})}catch(u){return u instanceof K?g(n,{code:"attachment-error",message:u.message,details:{reason:u.code}}):g(n,{code:"internal",message:"Unable to read image attachment.",details:{}})}},updateQueue(n){const{sessionId:o,itemId:r,action:c}=n.payload;if(c.kind==="edit"&&c.content.some(h=>h.type!=="text"))return Promise.resolve(g(n,{code:"attachment-error",message:"queue edits accept text content only",details:{reason:"QUEUE_EDIT_NON_TEXT"}}));const d=t.agents.get(o);if(d!==void 0&&B(d.session,d))return Promise.resolve(g(n,ve(o)));if(d===void 0)return Promise.resolve(g(n,{code:"queue-item-not-found",message:"queued item is no longer pending",details:{itemId:r}}));const u=d.inbox.nextTurn.some(h=>h.id===r)?"next-turn":d.inbox.nextStep.some(h=>h.id===r)?"next-step":void 0,p=u===void 0?void 0:(u==="next-turn"?d.inbox.nextTurn:d.inbox.nextStep).find(h=>h.id===r);return u===void 0||p===void 0?Promise.resolve(g(n,{code:"queue-item-not-found",message:"queued item is no longer pending",details:{itemId:r}})):c.kind==="steer"&&(u!=="next-turn"||d.status!=="running")?Promise.resolve(g(n,{code:"steer-unavailable",message:"current turn no longer accepts steering",details:{itemId:r}})):(c.kind==="edit"?d.inbox.replace(r,hs({...p,content:c.content})):(d.inbox.remove(r),c.kind==="steer"&&d.steer(p)),Promise.resolve(j(n,{accepted:!0})))},cancel(n){const{sessionId:o}=n.payload,r=t.agents.get(o);return r===void 0?Promise.resolve(g(n,{code:"session-not-found",message:`session "${o}" not found (not attached)`,details:{sessionId:o}})):B(r.session,r)?Promise.resolve(g(n,ve(o))):(r.cancel({kind:"user"},{keepInbox:!0}),Promise.resolve(j(n,{accepted:!0})))}},subagents:{async list(n,o){try{return j(n,{entries:(await t.subagents.listChildren(n.payload.parentSessionId,o)).map(r=>r.kind==="child"?{...r,activity:t.agents.get(r.id)?.status==="running"?"running":"inactive"}:r),parentAvailable:t.agents.get(n.payload.parentSessionId)!==void 0})}catch(r){return o?.aborted||r instanceof W&&r.code==="CANCELLED"?g(n,{code:"cancelled",message:"subagent catalog read was cancelled",details:{}}):r instanceof W&&r.code==="SUBAGENT_CONTROL_PROJECTIONS_UNAVAILABLE"?g(n,Ut()):g(n,{code:"internal",message:"subagent catalog read failed",details:{}})}},async history(n,o){const{parentSessionId:r,childSessionId:c,mode:d,beforeSeq:u,maxMessages:p}=n.payload,h=await Ct(t,{parentSessionId:r,childSessionId:c,mode:d},o);if(h.error!==void 0)return g(n,h.error);let v,y,E;const S=t.sessions.get(c);if(S!==void 0)v=S.header,y=[...S.events],E=u===void 0?Mt(t,c,()=>Et(t,S)):void 0;else try{const P=await be(c);v=P.meta,y=P.events,E=u===void 0?Mt(t,c,()=>Rt(t,P.events)):void 0}catch(P){return o?.aborted?g(n,{code:"cancelled",message:"subagent history read was cancelled",details:{}}):P instanceof de?g(n,{code:"subagent-not-found",message:"subagent disappeared during history read",details:{parentSessionId:r,childSessionId:c}}):g(n,{code:"internal",message:"subagent history read failed",details:{}})}return o?.aborted?g(n,{code:"cancelled",message:"subagent history read was cancelled",details:{}}):v.parentSession!==r?g(n,{code:"subagent-unauthorized",message:"subagent parent changed during history read",details:{childSessionId:c}}):j(n,{...Pt(t,y,u,p),...E===void 0?{}:{projections:E}})},async prompt(n,o){const{parentSessionId:r,childSessionId:c,content:d,clientTimeZone:u}=n.payload,p=u===void 0?void 0:ut(u);if(u!==void 0&&p===void 0)return g(n,{code:"invalid-time-zone",message:"clientTimeZone must be UTC or a valid IANA Area/Location name",details:{value:u}});const h=t.agents.get(r);if(h===void 0)return g(n,{code:"subagent-parent-unavailable",message:`parent session "${r}" is not live`,details:{parentSessionId:r}});const v=await Ct(t,{parentSessionId:r,childSessionId:c,mode:"continuable"},o);if(v.error!==void 0)return g(n,v.error);try{return j(n,{messageId:await t.subagents.followup(h,c,d,{source:{kind:"user",rpcId:n.rpcId,...p===void 0?{}:{clientTimeZone:p}},signal:o})})}catch(y){return lo(n,y,o)}},interrupt(n){const{parentSessionId:o,childSessionId:r}=n.payload;try{t.subagents.interrupt(r,{kind:"user",parentSessionId:o})}catch(c){return c instanceof W&&c.code==="UNAUTHORIZED"?Promise.resolve(g(n,{code:"subagent-unauthorized",message:"subagent does not belong to this parent",details:{childSessionId:r}})):Promise.resolve(g(n,{code:"internal",message:"subagent interrupt failed",details:{}}))}return Promise.resolve(j(n,{accepted:!0}))}},workspace:{list(n){return Promise.resolve(j(n,{items:t.workspaceRegistry.list().map(q),archivedSessionIds:[...t.workspaceRegistry.archivedSessionIds]}))},async create(n){const{path:o}=n.payload;try{const{workspace:r,created:c}=await qt(o);return j(n,{workspace:q(r),created:c})}catch(r){return g(n,{code:"workspace-invalid-path",message:`cannot create a workspace at "${o}": ${r instanceof Error?r.message:String(r)}`,details:{path:o}})}},async rename(n){const{payload:o}=n,r=t.workspaceRegistry.get(G(o.workspaceId));if(r===void 0)return he(n,o.workspaceId);const c=o.title.trim(),d=I.then(async()=>{if(c!==r.title){if(t.workspaceRegistry.list().some(u=>u.id!==r.id&&u.title===c))throw new Tt(c);await r.setTitle(c)}});I=d.then(()=>{},()=>{});try{await d}catch(u){if(u instanceof Tt)return g(n,{code:"workspace-name-conflict",message:u.message,details:{name:u.workspaceName}});throw u}return j(n,{workspace:q(r)})},async delete(n){const{workspaceId:o}=n.payload,r=I.then(()=>t.workspaceRegistry.delete(G(o)));return I=r.then(()=>{},()=>{}),await r?j(n,{deleted:!0}):he(n,o)},async insertBefore(n){const{workspaceId:o,beforeWorkspaceId:r}=n.payload;try{return j(n,{workspaceIds:[...await t.workspaceRegistry.insertBefore(G(o),r===void 0?void 0:G(r))]})}catch(c){if(!(c instanceof ws))throw c;return he(n,c.workspaceId)}},async insertSessionBefore(n){const{payload:o}=n,r=t.workspaceRegistry.get(G(o.workspaceId));if(r===void 0)return he(n,o.workspaceId);try{await r.insertSessionBefore(o.sessionId,o.beforeSessionId)}catch(c){if(!(c instanceof ys))throw c;return g(n,{code:"workspace-move-invalid",message:c.message,details:{workspaceId:o.workspaceId,sessionId:o.sessionId,...o.beforeSessionId===void 0?{}:{beforeSessionId:o.beforeSessionId}}})}return j(n,{workspace:q(r)})},async archiveSession(n){const{sessionId:o}=n.payload;try{await t.workspaceRegistry.archiveSession(o)}catch(r){if(!(r instanceof Ss))throw r;return g(n,{code:"session-not-found",message:r.message,details:{sessionId:o}})}return j(n,{archivedSessionIds:[...t.workspaceRegistry.archivedSessionIds]})}},host:{describe(n){const o=s.defaultModelSelection();return Promise.resolve(j(n,{version:"0.0.1",cwd:s.cwd,provider:o.provider,model:o.model,attachedSessions:t.agents.list().length,canOpenPath:we()}))},async pickDirectory(n,o){const r=t.directoryPicker.capability();if(r.kind!=="native")return g(n,{code:"directory-picker-unavailable",message:`host.pickDirectory needs the native capability; the composed picker serves "${r.kind}"`,details:{capability:r.kind}});try{return j(n,{path:await r.pick(o)})}catch(c){return o.aborted?g(n,{code:"cancelled",message:"directory picker was aborted",details:{}}):g(n,{code:"internal",message:`directory picker failed: ${c instanceof Error?c.message:String(c)}`,details:{}})}},async listDirectory(n,o){const r=t.directoryPicker.capability();if(r.kind!=="browse")return g(n,{code:"directory-picker-unavailable",message:`host.listDirectory needs the browse capability; the composed picker serves "${r.kind}"`,details:{capability:r.kind}});try{return j(n,await r.list(n.payload.path,o))}catch(c){return o.aborted?g(n,{code:"cancelled",message:"directory listing was aborted",details:{}}):g(n,St(c))}},async createDirectory(n){const o=t.directoryPicker.capability();if(o.kind!=="browse")return g(n,{code:"directory-picker-unavailable",message:`host.createDirectory needs the browse capability; the composed picker serves "${o.kind}"`,details:{capability:o.kind}});try{return j(n,{path:await o.createDirectory(n.payload.path,n.payload.name)})}catch(r){return g(n,St(r))}},async openPath(n,o){return Fe(n,n.payload.path,o)}},goals:{async create(n){const{objective:o,maxGoalRounds:r}=n.payload;return x(n,(c,d)=>c.create(d,{objective:o,...r!==void 0?{maxGoalRounds:r}:{}}))},async edit(n){const{ref:o,objective:r,maxGoalRounds:c}=n.payload;return x(n,(d,u)=>d.edit(u,o,{...r!==void 0?{objective:r}:{},...c!==void 0?{maxGoalRounds:c}:{}}))},async pause(n){return x(n,(o,r)=>o.pause(r,n.payload.ref))},async resume(n){return x(n,(o,r)=>o.resume(r,n.payload.ref))},async complete(n){return x(n,(o,r)=>o.complete(r,n.payload.ref))},async clear(n){const o=await F(n.payload.sessionId);if("error"in o)return g(n,o.error);const r=Oe(o.agent);if("error"in r)return g(n,r.error);try{return r.clear(o.agent,n.payload.ref),j(n,{cleared:!0})}catch(c){return _e(n,c)}}},agentPresets:{async list(n){const o=t.get("agentPresets");if(o===void 0)return j(n,{presets:[],authorable:!1,hasDocument:!1});const r=o.defaultId;return j(n,{presets:(await o.list()).map(c=>({id:c.id,trust:c.trust,isDefault:c.id===r,...c.name===void 0?{}:{name:c.name},...c.description===void 0?{}:{description:c.description},...c.broken===void 0?{}:{broken:c.broken}})),authorable:o.authorable,hasDocument:we()})},async select(n){const{sessionId:o,agentPreset:r}=n.payload,c=t.get("agentPresets");if(c===void 0)return g(n,{code:"agent-preset-not-found",message:"this deployment composes no agent presets",details:{agentPreset:r,available:[]}});const d=await F(o);if("error"in d)return g(n,d.error);const{agent:u}=d,p=a(async()=>{if(!vt(u.session))return g(n,{code:"agent-preset-locked",message:`session "${o}" has already started; its agent preset is fixed`,details:{sessionId:o,agentPreset:r}});try{const v=await c.recompose(u.ctx,r);return u.session.append("agent-preset/selected",{agentPreset:v.id}),j(n,{agentPreset:v.id})}catch(v){const y=gt(n,v);return y!==void 0?y:g(n,{code:"internal",message:`failed to select agent preset "${r}": ${String(v)}`,details:{}})}},"swap"),h=(f.get(o)??Promise.resolve()).then(p);f.set(o,h.catch(()=>{}));try{return await h}finally{f.get(o)===h&&f.delete(o)}},async read(n){const{agentPreset:o}=n.payload,r=t.get("agentPresets");if(r===void 0)return g(n,me(o));try{const c=await r.resolve(o);return j(n,{agentPreset:c.id,trust:c.trust,content:await r.read(c.id),...c.name===void 0?{}:{name:c.name},...c.description===void 0?{}:{description:c.description}})}catch(c){return g(n,ge(o,c))}},async copy(n){const{from:o,agentPreset:r,name:c}=n.payload,d=t.get("agentPresets");if(d===void 0)return g(n,me(r));try{return await d.copy(o,r,c),j(n,{agentPreset:r})}catch(u){return g(n,ge(r,u))}},async openDocument(n,o){const{agentPreset:r}=n.payload,c=t.get("agentPresets");if(c===void 0)return g(n,me(r));try{const d=await c.resolve(r);if(d.trust!=="user")throw new Ge(d.id,"it ships with the deployment");const u=ds(d.path);return we()?await Fe(n,u,o):j(n,{opened:!1,path:u})}catch(d){return g(n,ge(r,d))}},async remove(n){const{agentPreset:o}=n.payload,r=t.get("agentPresets");if(r===void 0)return g(n,me(o));try{return await r.remove(o),j(n,{})}catch(c){return g(n,ge(o,c))}}},skills:{async list(n){const{sessionId:o}=n.payload,r=t.sessions.get(o);if(r===void 0)return g(n,{code:"session-not-found",message:`session "${o}" not found (not attached)`,details:{sessionId:o}});if(r.header.cwd===void 0)return g(n,{code:"internal",message:`session "${o}" has no project cwd`,details:{}});const c=r.header.cwd,d=t.agents.get(o),u=t.get("agentPresets"),p=(d===void 0?void 0:u?.serviceFor(d,"skills"))??t.get("skills");if(p===void 0)return g(n,{code:"internal",message:"skill registry is absent: neither this session's agent preset nor the host composition mounts @deepseek-ai/dsh-skill",details:{}});const h=await De(o,r);try{return j(n,{skills:(await p.list({cwd:c,scope:h})).filter(bs).map(v=>({name:v.name,description:v.description,...v.whenToUse===void 0?{}:{whenToUse:v.whenToUse},modelInvocable:v.invocation.modelInvocable}))})}catch(v){return g(n,{code:"internal",message:`skill listing failed: ${String(v)}`,details:{}})}}},settings:{describe(n){const o=t.get("settings");if(o===void 0)return Promise.resolve(g(n,ye()));const r=Qe();return Promise.resolve(j(n,{writable:o.writable,hasDocument:o.documentPath!==void 0,namespaces:o.describe({redactSecrets:!0}).filter(c=>r.has(String(c.ns))).map(ze)}))},async openDocument(n,o){const r=t.get("settings");if(r===void 0)return g(n,ye());if(_(o))return g(n,{code:"cancelled",message:"settings document open was aborted",details:{}});let c;try{c=await r.prepareDocument()}catch(d){return _(o)?g(n,{code:"cancelled",message:"settings document preparation was aborted",details:{}}):g(n,{code:"internal",message:`settings document preparation failed: ${d instanceof Error?d.message:String(d)}`,details:{}})}return c===void 0?g(n,{code:"internal",message:"settings provider has no local document to open",details:{}}):_(o)?g(n,{code:"cancelled",message:"settings document open was aborted",details:{}}):ts(n,c,o)},update:a(n=>ke(n,n.payload.ns,"update",n.payload.patch,n.payload.expectedRevision),"update"),replace:a(n=>ke(n,n.payload.ns,"replace",n.payload.section,n.payload.expectedRevision),"replace"),mutate:a(n=>ke(n,n.payload.ns,"mutate",n.payload.ops,n.payload.expectedRevision),"mutate")},credentials:{async describe(n){const o=t.get("credentials");if(o===void 0)return g(n,Se());const r=await Promise.all(n.payload.refs.map(async c=>{const d=await o.describe(je(c));return[c,{configured:d.configured,...d.source===void 0?{}:{source:d.source},writable:d.writable}]}));return j(n,{credentials:Object.fromEntries(r)})},async set(n){const o=t.get("credentials");if(o===void 0)return g(n,Se());const{ref:r,value:c}=n.payload;try{await o.set(je(r),c)}catch(d){return g(n,{code:"credential-rejected",message:d instanceof Error?d.message:String(d),details:{ref:r}})}return j(n,{})},async unset(n){const o=t.get("credentials");if(o===void 0)return g(n,Se());const{ref:r}=n.payload;try{await o.unset(je(r))}catch(c){return g(n,{code:"credential-rejected",message:c instanceof Error?c.message:String(c),details:{ref:r}})}return j(n,{})}},llm:{providers(n){const o=t.llm.listProviders(),r=new Set(o.map(p=>p.id)),c=t.llm.listConfigurableProviders(),d=new Set(c.map(p=>p.provider)),u=c.map(p=>({provider:p.provider,displayName:p.displayName,settingsNs:p.settingsNs,settingsPath:[...p.settingsPath],active:r.has(p.provider),...p.declared===void 0?{}:{declared:p.declared}}));for(const p of o)d.has(p.id)||u.push({provider:p.id,displayName:p.name,settingsNs:"",settingsPath:[],active:!0});return Promise.resolve(j(n,{providers:u}))},async models(n){return j(n,await mt(t))},async discoverModels(n,o){const{settingsNs:r,provider:c,baseURL:d,api:u,apiKey:p}=n.payload;try{return j(n,{models:await t.llm.discoverModels(r,{...c===void 0?{}:{provider:c},...d===void 0?{}:{baseURL:d},...u===void 0?{}:{api:u},...p===void 0?{}:{apiKey:p},...o===void 0?{}:{signal:o}})})}catch(h){return g(n,{code:"model-discovery-failed",message:h instanceof Error?h.message:String(h),details:{settingsNs:r,...d===void 0?{}:{baseURL:d}}})}}},events:{mux(n,o){const r=new ht;C.add(r);for(const p of t.sessions.list())ft(r,p);for(const p of A.values())r.push({rpcId:p.rpcId,payload:{type:"question/requested",sessionId:p.sessionId,questions:p.questions}});for(const p of R.values())r.push(kt(p));for(const p of t.sessions.list()){const h=t.agents.get(p.id);h?.session===p&&h.inbox.hasPending&&r.push(L({type:"session/queue",sessionId:p.id,items:Te(h)}))}const c=t.get("jobs");if(c!==void 0)for(const p of t.sessions.list()){const h=ue(c.list(t.agents.get(p.id)));h.length>0&&r.push(L({type:"session/jobs",sessionId:p.id,jobs:h}))}const d=new Map,u=[t.on("session/event",(p,h)=>{if(h.type==="tool/call"){const y=h.data;try{let E=d.get(p.id);E===void 0&&d.set(p.id,E=new Map),E.set(y.callId,{name:y.name,args:JSON.parse(y.arguments)})}catch{}}else h.type==="turn/end"&&d.delete(p.id);const v=It(t,h,y=>d.get(p.id)?.get(y)??jt(p.events,y),t.agents.get(p.id));r.push(L({type:"session/event",sessionId:p.id,event:h,...v===void 0?{}:{view:v}}))}),t.on("session/created",p=>{ft(r,p);const h=c===void 0?[]:ue(c.list(t.agents.get(p.id)));h.length>0&&r.push(L({type:"session/jobs",sessionId:p.id,jobs:h}))}),t.on("session/disposed",p=>{d.delete(p.id)}),...c===void 0?[]:[c.onJobsChanged(p=>{if(p!==void 0){r.push(L({type:"session/jobs",sessionId:p.id,jobs:ue(c.list(p))}));return}for(const h of t.sessions.list())r.push(L({type:"session/jobs",sessionId:h.id,jobs:ue(c.list(t.agents.get(h.id)))}))})]];return r.iterate(o,()=>{C.delete(r);for(const p of u)p()})},host(n,o){const r=new ht,c=t.workspaceRegistry.list(),d=new Set(c.map(v=>String(v.id)));let u=c.map(v=>v.id),p=t.workspaceRegistry.archivedSessionIds;const h=[t.on("session/created",v=>{r.push(L({type:"host/session-added",sessionId:v.id,blank:vt(v),...Re(v.header,v.events)}))}),t.on("session/disposed",v=>{r.push(L({type:"host/session-removed",sessionId:v.id}))}),t.on("agent/status",({agent:v,status:y})=>{r.push(L({type:"host/session-status",sessionId:v.id,running:y==="running"}))}),t.on("agent/error",({agent:v,error:y})=>{r.push(L({type:"host/agent-error",sessionId:v.id,message:gs(y)}))}),t.on("domain/changed",v=>{if(v.domain==="workspace"){if(v.table===""){if(v.operation!=="put")return;const y=ks.parse(v.value),E=y.workspaceIds.length===u.length&&y.workspaceIds.every(S=>d.has(String(S)))&&y.workspaceIds.some((S,P)=>S!==u[P]);for(const S of y.workspaceIds){if(d.has(S))continue;const P=t.workspaceRegistry.get(S);if(P===void 0)throw new Error(`committed workspace registry references missing workspace "${S}"`);d.add(S),r.push(L({type:"host/workspace-changed",workspace:q(P)}))}u=[...y.workspaceIds],E&&r.push(L({type:"host/workspace-order-changed",workspaceIds:[...y.workspaceIds]})),(y.archivedSessionIds.length!==p.length||y.archivedSessionIds.some((S,P)=>S!==p[P]))&&(p=y.archivedSessionIds,r.push(L({type:"host/archived-sessions-changed",archivedSessionIds:[...y.archivedSessionIds]})));return}if(v.table==="workspaces"){if(v.operation==="deleted"){if(!d.delete(v.key))return;r.push(L({type:"host/workspace-removed",workspaceId:v.key}));return}d.has(v.key)&&r.push(L({type:"host/workspace-changed",workspace:po(v.key,v.value)}))}}}),...Ds.map(v=>t.on(v,((...y)=>{r.push(L({type:"host/remote-event",event:v,args:oo(v,y)}))})))];return r.iterate(o,()=>{for(const v of h)v()})}},downloads:{async sessionLog(n,o){const r=zs(t);if(r.sessionQuery===void 0||r.sessionPersistence===void 0||r.attachments===void 0)return new Response("session log export is unavailable: missing session-query, session-persistence, or attachments service",{status:500});if(!r.sessionPersistence.supportsRawArtifacts)return new Response("session log export is unavailable: the persistence backend does not expose per-session raw artifacts",{status:501});const c={sessionQuery:r.sessionQuery,sessionPersistence:r.sessionPersistence,attachments:r.attachments,sessions:r.sessions};let d;try{await Ze(r,n.sessionId,o),d=await r.sessionPersistence.readRaw(n.sessionId,o),o.throwIfAborted()}catch{return o.throwIfAborted(),new Response("session log export failed to prepare the stored artifact",{status:500})}return d===void 0?new Response("session not found",{status:404}):new Response(tn(c,d,n.sessionId,n.includeDescendants===!0,i,o),{headers:{"content-type":"application/zip","content-disposition":`attachment; filename="${Zs(n.sessionId)}"`}})}},respond(n){const o=R.get(n.rpcId);if(o!==void 0){if(!n.result.ok)return Promise.resolve({accepted:!1,reason:"bad-response"});const u=$n.safeParse(n.result.value);return!u.success||u.data.approvalId!==o.approvalId||u.data.sessionId!==o.sessionId?Promise.resolve({accepted:!1,reason:"bad-response"}):(o.resolve(u.data.outcome),Promise.resolve({accepted:!0}))}const r=A.get(n.rpcId);if(r===void 0)return Promise.resolve({accepted:!1,reason:"not-pending"});if(!n.result.ok)return n.result.error.code!=="cancelled"?Promise.resolve({accepted:!1,reason:"bad-response"}):(ae(r,"cancelled"),r.reject(new ce("the user cancelled ask_user_question","ASK_CANCELLED")),Promise.resolve({accepted:!0}));const c=_n.safeParse(n.result.value);if(!c.success)return Promise.resolve({accepted:!1,reason:"bad-response"});const d={sessionId:c.data.sessionId,answer:{answers:c.data.answer.answers.map(u=>({id:u.id,selected:u.selected,...u.custom===void 0?{}:{custom:u.custom}}))}};return co(d,r)?(ae(r,"answered"),r.resolve(d.answer),Promise.resolve({accepted:!0})):Promise.resolve({accepted:!1,reason:"bad-response"})}}}a(Nt,"createApiProxy");const uo=e.object({sessionId:k,includeDescendants:e.union([e.literal("true"),e.literal("false")]).optional()}).transform(t=>({sessionId:t.sessionId,...t.includeDescendants==="true"?{includeDescendants:!0}:{}})),ee=e.string(),Ue=e.discriminatedUnion("code",[e.object({code:e.literal("bad-request"),message:e.string(),details:e.object({issues:e.array(e.custom())})}),e.object({code:e.literal("cancelled"),message:e.string(),details:e.object({})}),e.object({code:e.literal("session-not-found"),message:e.string(),details:e.object({sessionId:e.string()})}),e.object({code:e.literal("model-unavailable"),message:e.string(),details:e.object({provider:e.string(),model:e.string()})}),e.object({code:e.literal("session-conflict"),message:e.string(),details:e.object({sessionId:e.string(),requestedCwd:e.string(),existingCwd:e.string().optional()})}),e.object({code:e.literal("invalid-time-zone"),message:e.string(),details:e.object({value:e.string()})}),e.object({code:e.literal("workspace-attach-failed"),message:e.string(),details:e.object({sessionId:e.string(),workspaceId:e.string()})}),e.object({code:e.literal("workspace-not-found"),message:e.string(),details:e.object({workspaceId:e.string()})}),e.object({code:e.literal("workspace-invalid-path"),message:e.string(),details:e.object({path:e.string()})}),e.object({code:e.literal("workspace-name-conflict"),message:e.string(),details:e.object({name:e.string()})}),e.object({code:e.literal("workspace-move-invalid"),message:e.string(),details:e.object({workspaceId:e.string(),sessionId:e.string(),beforeSessionId:e.string().optional()})}),e.object({code:e.literal("directory-unreadable"),message:e.string(),details:e.object({path:e.string()})}),e.object({code:e.literal("directory-exists"),message:e.string(),details:e.object({path:e.string()})}),e.object({code:e.literal("directory-create-failed"),message:e.string(),details:e.object({path:e.string()})}),e.object({code:e.literal("directory-picker-unavailable"),message:e.string(),details:e.object({capability:e.string()})}),e.object({code:e.literal("agent-preset-read-only"),message:e.string(),details:e.object({agentPreset:e.string(),reason:e.string()})}),e.object({code:e.literal("agent-preset-locked"),message:e.string(),details:e.object({sessionId:e.string(),agentPreset:e.string()})}),e.object({code:e.literal("agent-preset-conflict"),message:e.string(),details:e.object({sessionId:e.string(),requestedPreset:e.string(),existingPreset:e.string().optional()})}),e.object({code:e.literal("agent-preset-not-found"),message:e.string(),details:e.object({agentPreset:e.string(),available:e.array(e.string())})}),e.object({code:e.literal("agent-preset-invalid"),message:e.string(),details:e.object({agentPreset:e.string(),reason:e.string()})}),e.object({code:e.literal("agent-busy"),message:e.string(),details:e.object({reason:e.string()})}),e.object({code:e.literal("attachment-error"),message:e.string(),details:e.object({reason:e.string()})}),e.object({code:e.literal("queue-item-not-found"),message:e.string(),details:e.object({itemId:e.string()})}),e.object({code:e.literal("steer-unavailable"),message:e.string(),details:e.object({itemId:e.string()})}),e.object({code:e.literal("command-error"),message:e.string(),details:e.object({})}),e.object({code:e.literal("unknown-command"),message:e.string(),details:e.object({})}),e.object({code:e.literal("settings-rejected"),message:e.string(),details:e.object({ns:e.string()})}),e.object({code:e.literal("settings-not-exposed"),message:e.string(),details:e.object({ns:e.string()})}),e.object({code:e.literal("settings-conflict"),message:e.string(),details:e.object({ns:e.string(),expected:e.number(),actual:e.number()})}),e.object({code:e.literal("credential-rejected"),message:e.string(),details:e.object({ref:e.string()})}),e.object({code:e.literal("model-discovery-failed"),message:e.string(),details:e.object({settingsNs:e.string(),baseURL:e.string().optional()})}),e.object({code:e.literal("title-invalid"),message:e.string(),details:e.object({sessionId:e.string()})}),e.object({code:e.literal("fork-unavailable"),message:e.string(),details:e.object({sessionId:e.string()})}),e.object({code:e.literal("subagent-parent-unavailable"),message:e.string(),details:e.object({parentSessionId:e.string()})}),e.object({code:e.literal("subagent-not-found"),message:e.string(),details:e.object({parentSessionId:e.string(),childSessionId:e.string()})}),e.object({code:e.literal("subagent-catalog-diagnostic"),message:e.string(),details:e.object({parentSessionId:e.string(),childSessionId:e.string(),reason:e.union([e.literal("corrupt"),e.literal("unsupported"),e.literal("unavailable")])})}),e.object({code:e.literal("subagent-not-resumable"),message:e.string(),details:e.object({childSessionId:e.string()})}),e.object({code:e.literal("subagent-unauthorized"),message:e.string(),details:e.object({childSessionId:e.string()})}),e.object({code:e.literal("subagent-delivery-unavailable"),message:e.string(),details:e.object({childSessionId:e.string()})}),e.object({code:e.literal("internal"),message:e.string(),details:e.object({})})]);function Dt(t){return e.union([e.object({ok:e.literal(!0),value:t}),e.object({ok:e.literal(!1),error:Ue})])}a(Dt,"rpcResultSchema");const $t=e.object({type:e.literal("client-request"),rpcId:ee,method:e.string(),payload:e.unknown()}),Ot=e.object({type:e.literal("server-response"),rpcId:ee,result:Dt(e.unknown().optional())}),_t=e.object({type:e.literal("server-request"),rpcId:ee,method:e.string(),payload:e.unknown()}),Vt=e.object({type:e.literal("client-response"),rpcId:ee,result:Dt(e.unknown().optional())});e.discriminatedUnion("type",[$t,Ot,_t,Vt]);const mo=e.union([e.object({accepted:e.literal(!0)}),e.object({accepted:e.literal(!1),reason:e.union([e.literal("not-pending"),e.literal("bad-response")])})]),go=e.object({}),ho=e.object({version:e.string(),cwd:e.string(),provider:e.string().optional(),model:e.string().optional(),attachedSessions:e.number().int().nonnegative(),canOpenPath:e.boolean()}),fo=e.object({}),vo=e.object({path:e.string().nullable()}),Bt=e.object({name:e.string(),path:e.string(),hidden:e.boolean()}),bo=e.object({path:e.string().optional()}),yo=e.object({path:e.string(),home:e.string(),crumbs:e.array(Bt),entries:e.array(Bt),truncated:e.boolean()}),wo=e.object({path:e.string(),name:e.string()}).refine(t=>t.name.trim()!==""&&t.name!=="."&&t.name!==".."&&!/[/\\]/.test(t.name),{message:"host.createDirectory requires a single non-blank path segment name"}),So=e.object({path:e.string()}),ko=e.object({path:e.string().min(1)}),Io=e.object({opened:e.literal(!0)}),te=e.object({workspaceId:O,path:e.string(),title:e.string(),sessionIds:e.array(k),createdAt:e.string(),updatedAt:e.string()}),jo=e.object({}),Po=e.object({items:e.array(te),archivedSessionIds:e.array(k)}),Eo=e.object({path:e.string()}),Ao=e.object({workspace:te,created:e.boolean()}),Ro=e.object({workspaceId:O,title:e.string()}).refine(t=>t.title.trim()!=="",{message:"workspace.rename requires a non-blank title"}),Mo=e.object({workspace:te}),Uo=e.object({workspaceId:O}),Co=e.object({deleted:e.literal(!0)}),Lo=e.object({workspaceId:O,beforeWorkspaceId:O.optional()}),To=e.object({workspaceIds:e.array(O)}),No=e.object({workspaceId:O,sessionId:k,beforeSessionId:k.optional()}),Do=e.object({workspace:te}),$o=e.object({sessionId:k}),Oo=e.object({archivedSessionIds:e.array(k)}),_o=e.object({name:e.string().min(1),description:e.string(),whenToUse:e.string().optional(),modelInvocable:e.boolean()}),Vo=e.object({sessionId:k}),Bo=e.object({skills:e.array(_o)}),Fo=e.object({id:e.string().min(1),trust:e.union([e.literal("system"),e.literal("user")]),isDefault:e.boolean(),name:e.string().optional(),description:e.string().optional(),broken:e.string().min(1).optional()}),zo=e.object({}),Qo=e.object({presets:e.array(Fo),authorable:e.boolean(),hasDocument:e.boolean()}),Wo=e.object({sessionId:k,agentPreset:e.string().min(1)}),Go=e.object({agentPreset:e.string()}),Ho=e.object({agentPreset:e.string().min(1)}),Zo=e.object({agentPreset:e.string(),trust:e.union([e.literal("system"),e.literal("user")]),content:e.string(),name:e.string().optional(),description:e.string().optional()}),xo=e.object({from:e.string().min(1),agentPreset:e.string().min(1),name:e.string().optional()}),Jo=e.object({agentPreset:e.string()}),Yo=e.object({agentPreset:e.string().min(1)}),Ko=e.union([e.object({opened:e.literal(!0)}),e.object({opened:e.literal(!1),path:e.string()})]),Xo=e.object({agentPreset:e.string().min(1)}),qo=e.object({}),Z=e.object({id:e.string(),revision:e.number().int().positive()}),se=e.object({ref:Z}),er=e.object({sessionId:e.string(),objective:e.string().min(1),maxGoalRounds:e.number().int().positive().optional()}),tr=se,sr=e.object({sessionId:e.string(),ref:Z,objective:e.string().min(1).optional(),maxGoalRounds:e.number().int().positive().optional()}).refine(t=>t.objective!==void 0||t.maxGoalRounds!==void 0,{message:"goal.edit requires objective or maxGoalRounds"}),nr=se,or=e.object({sessionId:e.string(),ref:Z}),rr=se,ar=e.object({sessionId:e.string(),ref:Z}),ir=se,cr=e.object({sessionId:e.string(),ref:Z}),dr=se,lr=e.object({sessionId:e.string(),ref:Z}),pr=e.object({cleared:e.literal(!0)}),ur=e.object({path:e.array(e.string()),set:e.boolean()}),fe=e.object({ns:e.string().min(1),schema:e.unknown(),value:e.unknown(),base:e.unknown().optional(),user:e.unknown().optional(),applies:e.union([e.literal("live"),e.literal("restart")]),secrets:e.array(ur),revision:e.number()}),mr=e.object({}),gr=e.object({writable:e.boolean(),hasDocument:e.boolean(),namespaces:e.array(fe)}),hr=e.object({}),fr=e.object({opened:e.literal(!0)}),vr=e.object({ns:e.string().min(1),patch:e.record(e.string(),e.unknown()),expectedRevision:e.number().optional()}),br=fe,yr=e.object({ns:e.string().min(1),section:e.record(e.string(),e.unknown()),expectedRevision:e.number().optional()}),wr=e.discriminatedUnion("op",[e.object({op:e.literal("set"),path:e.array(e.string()),value:e.unknown()}),e.object({op:e.literal("unset"),path:e.array(e.string())})]),Sr=e.object({ns:e.string().min(1),ops:e.array(wr),expectedRevision:e.number().optional()}),kr=fe,Ir=fe,Ce=e.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/),jr=e.object({configured:e.boolean(),source:e.string().optional(),writable:e.boolean()}),Pr=e.object({refs:e.array(Ce).max(64)}),Er=e.object({credentials:e.record(e.string(),jr)}),Ar=e.object({ref:Ce,value:e.string().min(1)}),Rr=e.object({}),Mr=e.object({ref:Ce}),Ur=e.object({}),Cr=e.object({provider:e.string().min(1),displayName:e.string().min(1),settingsNs:e.string(),settingsPath:e.array(e.string()),active:e.boolean(),declared:e.boolean().optional()}),Lr=e.object({}),Tr=e.object({providers:e.array(Cr)}),Nr=e.object({}),Dr=e.object({groups:e.array(qe),failures:e.array(et)}),$r=e.object({id:e.string().min(1),name:e.string().min(1).optional(),contextWindow:e.number().int().positive().optional(),maxTokens:e.number().int().positive().optional()}),Or=e.object({settingsNs:e.string().min(1),provider:e.string().min(1).optional(),baseURL:e.string().min(1).optional(),api:e.string().min(1).optional(),apiKey:e.string().min(1).optional()}),_r=e.object({models:e.array($r)}),Vr=e.union([e.object({kind:e.literal("child"),id:k,mode:e.literal("one-shot"),activity:e.union([e.literal("running"),e.literal("inactive")]),hasChildren:e.boolean(),label:e.string().optional()}),e.object({kind:e.literal("child"),id:k,mode:e.literal("continuable"),activity:e.union([e.literal("running"),e.literal("inactive")]),hasChildren:e.boolean(),label:e.string()}),e.object({kind:e.literal("diagnostic"),id:k,reason:e.union([e.literal("corrupt"),e.literal("unsupported"),e.literal("unavailable")])})]),Br=e.object({parentSessionId:k}),Fr=e.object({entries:e.array(Vr),parentAvailable:e.boolean()}),zr=e.object({parentSessionId:k,childSessionId:k,mode:e.union([e.literal("one-shot"),e.literal("continuable")]),beforeSeq:e.number().int().nonnegative().optional(),maxMessages:e.number().int().positive().optional()}),Qr=e.object({events:e.array(st),hasMore:e.boolean(),projections:Pe.optional()}),Wr=e.object({parentSessionId:k,childSessionId:k,mode:e.literal("continuable"),content:e.array(Ee),clientTimeZone:e.string().optional()}),Gr=e.object({parentSessionId:k,childSessionId:k,mode:e.literal("continuable")}),Hr=e.object({accepted:e.literal(!0)}),Zr=e.string(),xr=e.object({messageId:Zr}),Ft={"session.list":{schema:nn,invoke:a((t,s)=>t.sessions.list(s),"invoke")},"session.search":{schema:rn,invoke:a((t,s,i)=>t.sessions.search(s,i),"invoke")},"session.create":{schema:dn,invoke:a((t,s)=>t.sessions.create(s),"invoke")},"session.history":{schema:hn,invoke:a((t,s)=>t.sessions.history(s),"invoke")},"session.models":{schema:kn,invoke:a((t,s)=>t.sessions.models(s),"invoke")},"session.selectModel":{schema:jn,invoke:a((t,s)=>t.sessions.selectModel(s),"invoke")},"session.rename":{schema:pn,invoke:a((t,s)=>t.sessions.rename(s),"invoke")},"session.fork":{schema:mn,invoke:a((t,s)=>t.sessions.fork(s),"invoke")},"session.prompt":{schema:An,invoke:a((t,s)=>t.sessions.prompt(s),"invoke")},"session.attachment":{schema:Un,invoke:a((t,s)=>t.sessions.attachment(s),"invoke")},"session.updateQueue":{schema:Ln,invoke:a((t,s)=>t.sessions.updateQueue(s),"invoke")},"session.cancel":{schema:Nn,invoke:a((t,s)=>t.sessions.cancel(s),"invoke")},"subagent.list":{schema:Br,invoke:a((t,s,i)=>t.subagents.list(s,i),"invoke")},"subagent.history":{schema:zr,invoke:a((t,s,i)=>t.subagents.history(s,i),"invoke")},"subagent.prompt":{schema:Wr,invoke:a((t,s,i)=>t.subagents.prompt(s,i),"invoke")},"subagent.interrupt":{schema:Gr,invoke:a((t,s)=>t.subagents.interrupt(s),"invoke")},"host.describe":{schema:go,invoke:a((t,s)=>t.host.describe(s),"invoke")},"host.pickDirectory":{schema:fo,invoke:a((t,s,i)=>t.host.pickDirectory(s,i),"invoke")},"host.listDirectory":{schema:bo,invoke:a((t,s,i)=>t.host.listDirectory(s,i),"invoke")},"host.createDirectory":{schema:wo,invoke:a((t,s)=>t.host.createDirectory(s),"invoke")},"host.openPath":{schema:ko,invoke:a((t,s,i)=>t.host.openPath(s,i),"invoke")},"workspace.list":{schema:jo,invoke:a((t,s)=>t.workspace.list(s),"invoke")},"workspace.create":{schema:Eo,invoke:a((t,s)=>t.workspace.create(s),"invoke")},"workspace.rename":{schema:Ro,invoke:a((t,s)=>t.workspace.rename(s),"invoke")},"workspace.delete":{schema:Uo,invoke:a((t,s)=>t.workspace.delete(s),"invoke")},"workspace.insertBefore":{schema:Lo,invoke:a((t,s)=>t.workspace.insertBefore(s),"invoke")},"workspace.insertSessionBefore":{schema:No,invoke:a((t,s)=>t.workspace.insertSessionBefore(s),"invoke")},"workspace.archiveSession":{schema:$o,invoke:a((t,s)=>t.workspace.archiveSession(s),"invoke")},"skill.list":{schema:Vo,invoke:a((t,s)=>t.skills.list(s),"invoke")},"agentPreset.list":{schema:zo,invoke:a((t,s)=>t.agentPresets.list(s),"invoke")},"agentPreset.select":{schema:Wo,invoke:a((t,s)=>t.agentPresets.select(s),"invoke")},"agentPreset.read":{schema:Ho,invoke:a((t,s)=>t.agentPresets.read(s),"invoke")},"agentPreset.copy":{schema:xo,invoke:a((t,s)=>t.agentPresets.copy(s),"invoke")},"agentPreset.openDocument":{schema:Yo,invoke:a((t,s,i)=>t.agentPresets.openDocument(s,i),"invoke")},"agentPreset.remove":{schema:Xo,invoke:a((t,s)=>t.agentPresets.remove(s),"invoke")},"goal.create":{schema:er,invoke:a((t,s)=>t.goals.create(s),"invoke")},"goal.edit":{schema:sr,invoke:a((t,s)=>t.goals.edit(s),"invoke")},"goal.pause":{schema:or,invoke:a((t,s)=>t.goals.pause(s),"invoke")},"goal.resume":{schema:ar,invoke:a((t,s)=>t.goals.resume(s),"invoke")},"goal.complete":{schema:cr,invoke:a((t,s)=>t.goals.complete(s),"invoke")},"goal.clear":{schema:lr,invoke:a((t,s)=>t.goals.clear(s),"invoke")},"settings.describe":{schema:mr,invoke:a((t,s)=>t.settings.describe(s),"invoke")},"settings.openDocument":{schema:hr,invoke:a((t,s,i)=>t.settings.openDocument(s,i),"invoke")},"settings.update":{schema:vr,invoke:a((t,s)=>t.settings.update(s),"invoke")},"settings.replace":{schema:yr,invoke:a((t,s)=>t.settings.replace(s),"invoke")},"settings.mutate":{schema:Sr,invoke:a((t,s)=>t.settings.mutate(s),"invoke")},"credentials.describe":{schema:Pr,invoke:a((t,s)=>t.credentials.describe(s),"invoke")},"credentials.set":{schema:Ar,invoke:a((t,s)=>t.credentials.set(s),"invoke")},"credentials.unset":{schema:Mr,invoke:a((t,s)=>t.credentials.unset(s),"invoke")},"llm.providers":{schema:Lr,invoke:a((t,s)=>t.llm.providers(s),"invoke")},"llm.models":{schema:Nr,invoke:a((t,s)=>t.llm.models(s),"invoke")},"llm.discoverModels":{schema:Or,invoke:a((t,s,i)=>t.llm.discoverModels(s,i),"invoke")}};function Jr(t){return Object.hasOwn(Ft,t)?t:void 0}a(Jr,"methodFor");const Yr="invalid-request";function Le(t,s){const i={type:"server-response",rpcId:t,result:{ok:!1,error:s}};return Response.json(i)}a(Le,"errorResponse");function Kr(t){const s={type:"server-response",rpcId:t.rpcId,result:t.result};return Response.json(s)}a(Kr,"fullResponse");async function Xr(t,s,i,l){const m=Ft[s],b=m.schema.safeParse(i.payload);if(!b.success)return Le(i.rpcId,{code:"bad-request",message:`invalid payload for ${s}`,details:{issues:b.error.issues}});try{return Kr(await m.invoke(t,{rpcId:i.rpcId,payload:b.data},l))}catch(f){return new Response(`handler failure: ${String(f)}`,{status:500})}}a(Xr,"handleUnary");function zt(t){return{type:"server-request",rpcId:t.rpcId,method:t.payload.type,payload:t.payload}}a(zt,"fullFrame");function Qt(t){const s=new TextEncoder,i=new ReadableStream({async start(l){try{l.enqueue(s.encode(`: connected
1
+ var rs=Object.defineProperty;var a=(t,s)=>rs(t,"name",{value:s,configurable:!0});import{Service as as}from"@deepseek-ai/cordis";import ie from"@deepseek-ai/schemastery";import{randomUUID as B}from"node:crypto";import{mkdir as is,stat as cs}from"node:fs/promises";import{dirname as ds,extname as ls}from"node:path";import{installModelSelection as ps}from"@deepseek-ai/dsh-agent";import{AttachmentError as K}from"@deepseek-ai/dsh-attachment";import{ReasoningEffortId as us,contentHasImage as We,createUserMessage as ms,errorChain as gs,freezeMessage as hs}from"@deepseek-ai/dsh-llm";import{isAppendSurfaceEvent as fs,isJsonValue as vs}from"@deepseek-ai/dsh-session";import{SessionQueryError as Ie}from"@deepseek-ai/dsh-session-query";import{SubagentError as W}from"@deepseek-ai/dsh-subagent";import{isUserInvocable as bs}from"@deepseek-ai/dsh-skill";import{WorkspaceId as G,WorkspaceMoveInvalidError as ys,WorkspaceOrderInvalidError as ws,WorkspaceUnknownSessionError as Ss,workspaceDomainState as ks,workspaceRecord as Is}from"@deepseek-ai/dsh-workspace";import{InvalidPresetIdError as js,PresetExistsError as Ps,PresetMountError as Es,PresetNotWritableError as Ge,SETTINGS_NAMESPACE as As,UnknownPresetError as He,resolveSessionPreset as Q}from"@deepseek-ai/dsh-agent-presets";import{Zip as Rs,ZipDeflate as Ms}from"fflate";import{GoalError as Us}from"@deepseek-ai/dsh-goal";import{SettingsConflictError as Cs,settingsNamespace as Ls}from"@deepseek-ai/dsh-settings";import{credentialRef as je}from"@deepseek-ai/dsh-credentials";import{SessionTitleInvalidError as Ts}from"@deepseek-ai/dsh-session-title";import{z as e}from"zod";import{UserQuestionError as ce}from"@deepseek-ai/dsh-user-questions";import{DirectoryPickerError as Ns}from"@deepseek-ai/dsh-host-directory-picker";import{API_REMOTE_FORWARDED_EVENTS as Ds,ApiRemoteSessionNotFound as de,ApiRemoteSubagentSessionOwnership as H,apiRemoteSubagentOwnershipError as $s,createApiRemoteAgentResolver as Os,hasApiRemoteSubagentOwner as _s,inspectApiRemoteSession as Vs}from"@deepseek-ai/dsh-api-remotes";import{release as Bs}from"node:os";import{runNativeCommand as Fs}from"@deepseek-ai/dsh-native-command";function zs(t){return{sessionQuery:t.get("sessionQuery"),sessionPersistence:t.get("sessionPersistence"),attachments:t.get("attachments"),sessions:t.get("sessions")}}a(zs,"sessionLogExportDeps");async function Ze(t,s,i){i?.throwIfAborted();const l=t.sessions;if(l===void 0)return;const m=l.get(s);m!==void 0&&(await l.flush(m),i?.throwIfAborted())}a(Ze,"flushLiveSessionLog");const Qs={"image/png":"png","image/jpeg":"jpg","image/webp":"webp","image/gif":"gif"};function Ws(t){return`media/${String(t.attachmentId)}.${Qs[t.mediaType]}`}a(Ws,"mediaEntryPath");function le(t,s){if(!Array.isArray(t))return;const i=[];for(const l of t)i.push(l);for(;i.length>0;){const l=i.pop();if(typeof l!="object"||l===null||Array.isArray(l))continue;const m=l;if(m.type==="image"&&typeof m.attachment=="object"&&m.attachment!==null){const b=m.attachment;s.set(String(b.attachmentId),b)}if(Array.isArray(m.content))for(const b of m.content)i.push(b)}}a(le,"collectImageRefs");function Gs(t,s){const i=t.data;if(typeof i!="object"||i===null)return;const l=i;if(le(l.content,s),l.message!==void 0&&le(l.message.content,s),l.inserted!==void 0)for(const m of l.inserted)le(m.content,s);l.chunk?.type==="block-end"&&le([l.chunk.block],s)}a(Gs,"collectEventImageRefs");function Hs(t){const s=new Map;for(const i of t.split(`
2
+ `)){if(i==="")continue;let l;try{l=JSON.parse(i)}catch{continue}Gs(l,s)}return s}a(Hs,"imageRefsInArtifact");function xe(t){return t.replace(/[^A-Za-z0-9_-]/g,"_")}a(xe,"safeSessionIdSegment");function Zs(t){return`dsh-session-${xe(t)}.zip`}a(Zs,"sessionLogZipFilename");async function*xs(t,s,i,l,m){const b=new Map,f=a(w=>{for(const[I,A]of Hs(w))b.set(I,A)},"rememberMedia");if(f(s.content),yield{path:s.filename,content:s.content},l){const w=new Set([i]),I=a(async function*(R){for(const C of R){m?.throwIfAborted();const M=C.session.header.id;if(w.has(M))continue;w.add(M),await Ze(t,M,m);const T=await t.sessionPersistence.readRaw(M,m);if(m?.throwIfAborted(),T===void 0)throw new Error(`subagent "${M}" has no stored log artifact`);f(T.content),yield{path:`subagents/${xe(M)}/${T.filename}`,content:T.content},yield*I(C.descendants)}},"collect"),A=await t.sessionQuery.traceSession(i,m);m?.throwIfAborted(),yield*I(A.descendants)}for(const w of b.values()){m?.throwIfAborted();const I=await t.attachments.readImage(w,m);m?.throwIfAborted(),yield{path:Ws(w),data:I.data}}}a(xs,"sessionLogZipEntries");const Js=65536,Ys=65536,Ks=65536;var Xs=class{static{a(this,"ResponseCapacityGate")}releasePending;async wait(t,s){s.throwIfAborted(),!(t.desiredSize===null||t.desiredSize>0)&&(await new Promise(i=>{const l=a(()=>{this.releasePending=void 0,s.removeEventListener("abort",l),i()},"release");this.releasePending=l,s.addEventListener("abort",l,{once:!0})}),s.throwIfAborted())}pulled(){this.releasePending?.()}};async function qs(t,s,i,l,m){let b=0;do{m.throwIfAborted();const f=Math.min(b+Ys,s.byteLength),w=f>=s.byteLength;t.push(s.subarray(b,f),w),b=f,await l.wait(i,m)}while(b<s.byteLength)}a(qs,"pushBinaryChunks");async function en(t,s,i,l,m){const b=new TextEncoder;let f=0,w;do{m.throwIfAborted();let I=Math.min(f+Js,s.length);if(I<s.length&&I-f>1){const A=s.charCodeAt(I-1);A>=55296&&A<=56319&&(I-=1)}w=I>=s.length,t.push(b.encode(s.slice(f,I)),w),f=I,await l.wait(i,m)}while(!w)}a(en,"pushArtifactChunks");function tn(t,s,i,l,m,b){const f=new AbortController,w=AbortSignal.any([b,f.signal]);let I,A=!1;const R=new Xs,C=a(()=>{I===void 0||A||(A=!0,I.terminate())},"terminateZip");return new ReadableStream({start(M){const T=new Rs((U,N,ne)=>{if(U){M.error(U);return}N.byteLength>0&&M.enqueue(N),ne&&M.close()});I=T,(async()=>{try{for await(const U of xs(t,s,i,l,w)){const N=new Ms(U.path,{level:m});T.add(N),"content"in U?await en(N,U.content,M,R,w):await qs(N,U.data,M,R,w)}T.end()}catch(U){C(),M.error(U instanceof Error?U:new Error(String(U)))}})()},pull(){R.pulled()},cancel(M){f.abort(M instanceof Error?M:new Error("session log export stream cancelled")),C()}},{highWaterMark:Ks,size:a(M=>M.byteLength,"size")})}a(tn,"streamSessionLogZip");function Je(t,s){let i=0,l=0;for(const m of t){if(i===s)return t.slice(0,l);i++,l+=m.length}return t}a(Je,"truncateUnicodeCodePoints");const k=e.string().min(1),Ye=e.string().min(1),O=e.string().min(1),Ke=e.object({type:e.string(),seq:e.number().int().nonnegative(),time:e.number(),data:e.unknown(),sourceEventSeqs:e.array(e.number()).optional(),surfaceOp:e.unknown().optional(),ignorable:e.literal(!0).optional()}),sn=e.object({sessionId:k,updatedAt:e.number(),running:e.boolean(),blank:e.boolean(),parentSessionId:k.optional(),origin:e.literal("subagent").optional(),cwd:e.string().optional(),agentPreset:e.string().optional(),projections:e.lazy(()=>Pe).optional()}),nn=e.object({cursor:e.string().optional()}),on=e.object({items:e.array(sn)}),rn=e.object({query:e.string().trim().min(1).max(500).refine(t=>!t.includes("\0"),{message:"search query must not contain NUL"})}),an=e.object({sessionId:k,snippet:e.string().refine(t=>Je(t,240)===t,{message:"search snippet must contain at most 240 Unicode code points"})}),cn=e.object({items:e.array(an).max(20),hasMore:e.boolean()}),dn=e.object({workspaceId:O.optional(),cwd:e.string().optional(),sessionId:k.optional(),agentPreset:e.string().optional()}).refine(t=>t.workspaceId===void 0||t.cwd===void 0,{message:"session.create accepts workspaceId or cwd, not both"}),ln=e.object({sessionId:k,agentPreset:e.string().optional()}),pn=e.object({sessionId:k,title:e.string()}),un=e.object({title:e.string().min(1),seq:e.number().int().nonnegative()}),mn=e.object({sessionId:k,atSeq:e.number().int().nonnegative().optional()}),gn=e.object({sessionId:k}),hn=e.object({sessionId:k,beforeSeq:e.number().int().nonnegative().optional(),maxMessages:e.number().int().positive().optional()}),Xe=e.object({provider:e.string().min(1),model:e.string().min(1),reasoningEffort:e.string().min(1).optional()}),fn=e.object({id:e.string().min(1),name:e.string().min(1),description:e.string().optional()}),vn=e.object({efforts:e.array(fn).min(1),defaultEffort:e.string().min(1).optional()}),bn=e.object({id:e.string().min(1),name:e.string().min(1),description:e.string().optional(),reasoning:vn.optional()}),qe=e.object({id:e.string().min(1),name:e.string().min(1),models:e.array(bn)}),et=e.object({id:e.string().min(1),name:e.string().min(1),message:e.string()}),tt=e.discriminatedUnion("for",[e.object({for:e.literal("call"),view:e.looseObject({card:e.string()})}),e.object({for:e.literal("result"),view:e.looseObject({card:e.string()})})]),st=e.object({event:Ke,view:tt.optional()}),Pe=e.object({asOfSeq:e.number().int().min(-1),values:e.record(e.string(),e.unknown())}),yn=e.object({blank:e.boolean(),lastPromptAt:e.number().nullable()}),wn=e.object({maxImageBytes:e.number().int().positive(),maxImagesPerMessage:e.number().int().positive(),maxMessageImageBytes:e.number().int().positive(),maxImagePixels:e.number().int().positive(),mediaTypes:e.array(e.string())}),Sn=e.object({events:e.array(st),hasMore:e.boolean(),projections:Pe.optional()}),kn=e.object({sessionId:k}),In=e.object({current:Xe,routable:e.boolean(),groups:e.array(qe),failures:e.array(et)}),jn=e.object({sessionId:k,provider:e.string().min(1),model:e.string().min(1),reasoningEffort:e.string().min(1).optional()}),Pn=e.object({selected:Xe}),Ee=e.looseObject({type:e.string()}),nt=e.union([e.literal("image/png"),e.literal("image/jpeg"),e.literal("image/webp"),e.literal("image/gif")]),En=e.discriminatedUnion("type",[e.object({type:e.literal("text"),text:e.string()}),e.object({type:e.literal("image"),mediaType:nt,data:e.string(),name:e.string().optional()})]),An=e.object({sessionId:k,mode:e.union([e.literal("queue"),e.literal("steer")]),content:e.array(En),clientTimeZone:e.string().optional()}),Rn=e.object({accepted:e.literal(!0),command:e.object({kind:e.literal("success"),text:e.string().optional()}).optional()}),ot=e.string().min(1),Mn=e.object({attachmentId:ot,mediaType:nt,bytes:e.number().int().positive(),width:e.number().int().positive(),height:e.number().int().positive(),name:e.string().optional()}),Un=e.object({sessionId:k,attachmentId:ot}),Cn=e.object({attachment:Mn,data:e.string()}),Ln=e.object({sessionId:k,itemId:Ye,action:e.discriminatedUnion("kind",[e.object({kind:e.literal("edit"),content:e.array(Ee)}),e.object({kind:e.literal("remove")}),e.object({kind:e.literal("steer")})])}),Tn=e.object({accepted:e.literal(!0)}),Nn=e.object({sessionId:k}),Dn=e.object({accepted:e.literal(!0)}),Ae=e.string().min(1),$n=e.object({sessionId:k,approvalId:Ae,outcome:e.union([e.literal("allowed-once"),e.literal("rejected")])}),On=e.object({answers:e.array(e.object({id:e.string(),selected:e.array(e.string()),custom:e.string().optional()}))}),_n=e.object({sessionId:k,answer:On});function Vn(t){return t}a(Vn,"RpcId");const Bn=new Set([".html",".htm",".xhtml",".svg"]);function Fn(t){const s=t.replace(/LSHandlerPreferredVersions\s*=\s*\{[^}]*\};/g,""),i=/\{[^{}]*LSHandlerURLScheme\s*=\s*"?https"?;[^{}]*\}/.exec(s)?.[0];if(i!==void 0)return/LSHandlerRoleAll\s*=\s*"?([\w.-]+)"?;/.exec(i)?.[1]}a(Fn,"macBundleForHttps");async function zn(t,s,i,l,m){if(i==="darwin"){let b;try{const{stdout:f}=await l("defaults",["read","com.apple.LaunchServices/com.apple.launchservices.secure"],s);b=Fn(f)}catch{return!1}return b===void 0?!1:(await l("open",["-b",b,t],s),!0)}if(i==="linux"){const b=m.BROWSER;return b===void 0||b===""?!1:(await l(b,[t],s),!0)}return!1}a(zn,"openInBrowser");function Qn(t){return`'${t.replace(/'/g,"''")}'`}a(Qn,"powershellLiteral");function pe(t){return t!==void 0&&t!==""}a(pe,"present");function rt(t){const s=t.env??process.env;return pe(s.WSL_DISTRO_NAME)||pe(s.WSL_INTEROP)?!0:(t.osRelease??Bs()).toLowerCase().includes("microsoft")}a(rt,"isWsl");async function at(t,s,i){await i("powershell.exe",["-NoProfile","-Command",`Invoke-Item -LiteralPath ${Qn(t)}`],s)}a(at,"openWindowsPath");async function Wn(t,s,i){const l=await i("wslpath",["-w",t],s);s.throwIfAborted();const m=l.stdout.replace(/[\r\n]+$/,"");if(m==="")throw new Error("wslpath returned no Windows path");await at(m,s,i)}a(Wn,"openWslPath");async function it(t,s,i,l={}){const m=l.platform??process.platform,b=l.run??Fs,f=l.env??process.env,w=m==="linux"&&rt(l);if(!(!w&&i==="default"&&Bn.has(ls(t).toLowerCase())&&await zn(t,s,m,b,f))){if(m==="darwin"){await b("open",i==="text-editor"?["-t",t]:[t],s);return}if(m==="win32"){await at(t,s,b);return}if(m==="linux"){if(w){await Wn(t,s,b);return}await b("xdg-open",[t],s);return}throw new Error(`native path opener is unsupported on ${m}`)}}a(it,"openNativePathWithIntent");function Gn(t={}){const s=t.platform??process.platform;if(s==="darwin"||s==="win32")return!0;if(s!=="linux")return!1;const i=t.env??process.env;return rt(t)||pe(i.DISPLAY)||pe(i.WAYLAND_DISPLAY)}a(Gn,"canOpenNativePath");function Hn(t,s,i={}){return it(t,s,"default",i)}a(Hn,"openNativePath");function Zn(t,s,i={}){return it(t,s,"text-editor",i)}a(Zn,"openNativeTextFile");const xn=50,Jn=["agent-loop","shell","locale","permission","ui-conversation","ui-theme","web-search-deepseek"],ct=100,dt=16,Yn=1024,lt=new Set(["user/message","assistant/message"]);function Kn(t){const s=Buffer.from(t,"base64");if(t.length===0||s.toString("base64")!==t)throw new K("Image upload is not canonical base64.","INVALID_IMAGE_BASE64");return new Uint8Array(s)}a(Kn,"decodeBase64");async function Xn(t,s){if(s.every(f=>f.type==="text"))return s.map(f=>({type:"text",text:f.text}));const i=t.attachments.imageLimits;if(s.filter(f=>f.type==="image").length>i.maxImagesPerMessage)throw new K("Prompt exceeds the configured image-count limit.","TOO_MANY_IMAGES");const l=s.map(f=>f.type==="text"?f:{part:f,data:Kn(f.data)}),m=l.filter(f=>"data"in f);if(m.reduce((f,w)=>f+w.data.byteLength,0)>i.maxMessageImageBytes)throw new K("Prompt exceeds the configured aggregate image-byte limit.","IMAGES_TOO_LARGE");for(const f of m)await t.attachments.validateImage({data:f.data,mediaType:f.part.mediaType,...f.part.name===void 0?{}:{name:f.part.name}});const b=[];for(const f of l){if(!("data"in f)){b.push({type:"text",text:f.text});continue}const w=await t.attachments.saveImage({data:f.data,mediaType:f.part.mediaType,...f.part.name===void 0?{}:{name:f.part.name}});b.push({type:"image",attachment:w})}return b}a(Xn,"durablePromptContent");function X(t,s){if(Array.isArray(t))for(const i of t){if(typeof i!="object"||i===null||Array.isArray(i))continue;const l=i;if(l.type==="image"&&typeof l.attachment=="object"&&l.attachment!==null){const m=l.attachment;if(s(m))return m}if(l.type==="tool-result"){const m=X(l.content,s);if(m!==void 0)return m}}}a(X,"imageBlockIn");function qn(t,s){const i=t.data,l=X(i.content,s);if(l!==void 0)return l;if(i.message!==void 0){const m=X(i.message.content,s);if(m!==void 0)return m}if(i.inserted!==void 0)for(const m of i.inserted){const b=X(m.content,s);if(b!==void 0)return b}if(t.type==="assistant/chunk"&&i.chunk?.type==="block-end")return X([i.chunk.block],s)}a(qn,"imageInEvent");function eo(t){return t.some(s=>We(s.content))}a(eo,"messagesHaveImage");function to(t,s){for(const i of t){const l=qn(i,m=>String(m.attachmentId)===s);if(l!==void 0)return l}}a(to,"referencedImage");const so=new Set(["ui-onboarding",As]),pt=/^[A-Za-z][A-Za-z0-9_+.-]*(?:\/[A-Za-z0-9_+.-]+)+$/;function ut(t){if(!(t.length===0||t.trim()!==t||t!=="UTC"&&!pt.test(t)))try{const s=new Intl.DateTimeFormat("en-US",{timeZone:t}).resolvedOptions().timeZone;return s!=="UTC"&&!pt.test(s)?void 0:s}catch{return}}a(ut,"canonicalClientTimeZone");function V(t){return t.aborted}a(V,"isAborted");function no(t,s,i){const l=s===void 0?[...t]:t.filter(f=>f.seq<s);let m=0,b=0;for(let f=l.length-1;f>=0;f--){const w=l[f];if(!lt.has(w.type)||!fs(w))continue;m++;const I=w.sourceEventSeqs,A=I!==void 0&&I.length>0?Math.min(w.seq,...I):w.seq;if(m>=i){b=A;break}}return{events:l.filter(f=>f.seq>=b),hasMore:b>0}}a(no,"paginate");function j(t,s){return{rpcId:t.rpcId,result:{ok:!0,value:s}}}a(j,"ok");async function mt(t){const s=await Promise.all(t.llm.listProviders().map(async i=>{try{const l=await t.llm.listModels(i.id),m=await Promise.all(l.map(async b=>{const f=await t.llm.resolveModelInfo(i.id,b.id),w=f.reasoning===void 0?void 0:{efforts:f.reasoning.efforts.map(I=>({id:I.id,name:I.name,...I.description===void 0?{}:{description:I.description}})),...f.reasoning.defaultEffort===void 0?{}:{defaultEffort:f.reasoning.defaultEffort}};return{id:b.id,name:b.name,...b.description===void 0?{}:{description:b.description},...w===void 0?{}:{reasoning:w}}}));return{kind:"group",group:{id:i.id,name:i.name,models:m}}}catch(l){return{kind:"failure",failure:{id:i.id,name:i.name,message:l instanceof Error?l.message:String(l)}}}}));return{groups:s.flatMap(i=>i.kind==="group"?[i.group]:[]).filter(i=>i.models.length>0),failures:s.flatMap(i=>i.kind==="failure"?[i.failure]:[])}}a(mt,"buildModelCatalog");function g(t,s){return{rpcId:t.rpcId,result:{ok:!1,error:s}}}a(g,"err");function gt(t,s){if(s instanceof He)return g(t,{code:"agent-preset-not-found",message:s.message,details:{agentPreset:s.presetId,available:[...s.available]}});if(s instanceof Es)return g(t,{code:"agent-preset-invalid",message:s.message,details:{agentPreset:s.presetId,reason:s.reason}})}a(gt,"presetFailure");var ht=class{static{a(this,"FrameQueue")}buffer=[];waiter;done=!1;push(t){this.done||(this.buffer.push(t),this.waiter?.())}end(){this.done=!0,this.waiter?.()}async*iterate(t,s){const i=a(()=>{this.end()},"onAbort");t.addEventListener("abort",i,{once:!0});try{for(;;){for(;this.buffer.length>0;)yield this.buffer.shift();if(this.done||t.aborted)return;await new Promise(l=>{this.waiter=l}),this.waiter=void 0}}finally{t.removeEventListener("abort",i),s()}}};function L(t){return{rpcId:B(),payload:t}}a(L,"frame");function oo(t,s){for(const[i,l]of s.entries())if(!vs(l))throw new Error(`forwarded host event "${t}" argument ${i} is not lossless JSON data`);return s}a(oo,"assertJsonArgs");function ft(t,s){t.push(L({type:"session/subscribed",sessionId:s.id,lastSeq:s.seq-1}))}a(ft,"subscribeSession");function ue(t){return t.map(s=>({id:s.id,kind:s.kind,label:s.label,status:s.status,...s.detail===void 0?{}:{detail:s.detail},startedAt:s.startedAt,...s.finishedAt===void 0?{}:{finishedAt:s.finishedAt}}))}a(ue,"jobViews");function vt(t){return!t.events.some(s=>s.type==="turn/start")}a(vt,"sessionBlank");function bt(t,s){const i=t.blank&&s.type!=="turn/start",l=s.type==="user/message"&&s.data.source.kind==="user"?s.time:t.lastPromptAt;return i===t.blank&&l===t.lastPromptAt?t:{blank:i,lastPromptAt:l}}a(bt,"applySessionListMetadata");function yt(t){let s={blank:!0,lastPromptAt:null};for(const i of t)s=bt(s,i);return s}a(yt,"sessionListMetadata");function wt(t,s){return Math.max(t.createdAt,s?.lastPromptAt??0)}a(wt,"sessionListUpdatedAt");function Re(t,s=[]){const i=Q({header:t,events:s});return{...t.parentSession===void 0?{}:{parentSessionId:t.parentSession},...t.origin===void 0?{}:{origin:t.origin},...t.cwd===void 0?{}:{cwd:t.cwd},...i===void 0?{}:{agentPreset:i}}}a(Re,"sessionListFields");function ro(t,s){const i=yt(t.events);return{sessionId:t.id,updatedAt:wt(t.header,i),running:s,blank:i.blank,...Re(t.header,t.events)}}a(ro,"summarize");async function ao(t,s,i,l,m){if(l===0)return;m?.throwIfAborted();const b=s.locate(i);if(b===void 0)return;m?.throwIfAborted();let f;try{f=(await cs(b.path)).size}catch{m?.throwIfAborted();return}if(!(f>l))try{const{events:w}=await s.readFrom(i.id,0,m);return m?.throwIfAborted(),yt(w)}catch(w){m?.throwIfAborted(),t.logger.warn(`session.list: blank probe for "${i.id}" failed (serving it as visible): ${String(w)}`);return}}a(ao,"probeColdSessionMetadata");async function io(t,s,i,l,m,b){const f=l?.blank===!1?void 0:await ao(t,s,i,m,b);return{sessionId:i.id,updatedAt:wt(i,f??l),running:!1,blank:l?.blank===!1?!1:f?.blank??!1,...Re(i)}}a(io,"summarizeCold");function St(t){return t instanceof Ns?{code:t.code,message:t.message,details:{path:t.path}}:{code:"internal",message:t instanceof Error?t.message:String(t),details:{}}}a(St,"directoryError");function kt(t){return{rpcId:t.rpcId,payload:{type:"approval/requested",sessionId:t.sessionId,approvalId:t.approvalId,toolName:t.toolName,...t.callId===void 0?{}:{callId:t.callId},...t.reason===void 0?{}:{reason:t.reason}}}}a(kt,"requestedFrame");function co(t,s){if(t.sessionId!==s.sessionId)return!1;const i=t.answer.answers;return i.length!==s.questions.length?!1:i.every((l,m)=>{const b=s.questions[m];if(l.id!==b.id||new Set(l.selected).size!==l.selected.length)return!1;const f=l.custom?.trim();if(f!==void 0&&f===""||b.multiSelect!==!0&&(f!==void 0&&l.selected.length>0||l.selected.length>1))return!1;const w=new Set(b.options?.map(I=>I.label)??[]);return l.selected.every(I=>w.has(I))})}a(co,"matchesQuestions");function It(t,s,i,l){try{if(s.type==="tool/call"){const{name:m,arguments:b}=s.data,f=t.tools.get(m,l)?.presentCall?.(JSON.parse(b));return f===void 0?void 0:{for:"call",view:f}}if(s.type==="tool/result"){const{message:m,meta:b}=s.data,[f]=m.content,w=m.source.callId,I=i(w);if(I===void 0)return;const A=t.tools.get(I.name,l)?.presentResult?.(I.args,{content:f.content,isError:f.isError===!0,...b===void 0?{}:{meta:b}});return A===void 0?void 0:{for:"result",view:A}}}catch(m){console.error(`api-proxy: presenter failed for ${s.type}, falling back to generic: ${String(m)}`)}}a(It,"viewFor");function jt(t,s){for(let i=t.length-1;i>=0;i--){const l=t[i];if(l.type!=="tool/call")continue;const m=l.data;if(m.callId===s)try{return{name:m.name,args:JSON.parse(m.arguments)}}catch{return}}}a(jt,"backscanArgs");function Pt(t,s,i,l,m){const b=no(s,i,l??xn);return{events:b.events.map(f=>{const w=It(t,f,I=>jt(b.events,I),m);return{event:f,...w===void 0?{}:{view:w}}}),hasMore:b.hasMore}}a(Pt,"historyPage");function Et(t,s){const i=t.get("sessionProjections");if(i!==void 0)return i.snapshot(s)}a(Et,"projectionsFor");function At(t,s,i){try{const l=i!==void 0?t.get("sessionProjections")?.snapshot(i):t.get("sessionProjectionCache")?.cachedSnapshot(s);return l!==void 0&&Object.keys(l.values).length>0?l:void 0}catch(l){t.logger.warn(`session.list: projection column for "${s.id}" failed (serving the row without it): ${String(l)}`);return}}a(At,"listProjectionsFor");function Rt(t,s){const i=t.get("sessionProjections");if(i!==void 0)return i.restore({},s,0).snapshot}a(Rt,"detachedProjectionsFor");function Mt(t,s,i){try{return i()}catch(l){t.logger.warn(`subagent.history: projections for "${s}" failed (serving the page without them): ${String(l)}`);return}}a(Mt,"subagentHistoryProjections");function lo(t,s,i){const l=t.payload.childSessionId;if(i.aborted)return g(t,{code:"cancelled",message:"subagent prompt was cancelled",details:{}});if(s instanceof W)switch(s.code){case"NOT_RESUMABLE":return g(t,{code:"subagent-not-resumable",message:"subagent cannot be resumed",details:{childSessionId:l}});case"UNAUTHORIZED":return g(t,{code:"subagent-unauthorized",message:"subagent does not belong to this parent",details:{childSessionId:l}});case"DRAINING":case"ACTIVATION_CLOSING":case"CONTINUATION_UNAVAILABLE":case"PERSISTENCE_UNAVAILABLE":return g(t,{code:"subagent-delivery-unavailable",message:"subagent follow-up is temporarily unavailable",details:{childSessionId:l}})}return g(t,{code:"internal",message:"subagent prompt failed",details:{}})}a(lo,"subagentPromptError");function Ut(){return{code:"internal",message:"subagent catalog is unavailable: this deployment does not mount the sessionProjections registry (load @deepseek-ai/dsh-session-projection)",details:{}}}a(Ut,"projectionsUnavailableError");async function Ct(t,s,i){const{parentSessionId:l,childSessionId:m,mode:b}=s;try{const f=(await t.subagents.listChildren(l,i)).find(w=>w.id===m);return f===void 0||f.kind==="child"&&f.mode!==b?{error:{code:"subagent-not-found",message:`session "${m}" is not a ${b} direct child of "${l}"`,details:{parentSessionId:l,childSessionId:m}}}:f.kind==="diagnostic"?{error:{code:"subagent-catalog-diagnostic",message:`subagent "${m}" is ${f.reason}`,details:{parentSessionId:l,childSessionId:m,reason:f.reason}}}:{entry:f}}catch(f){return i?.aborted||f instanceof W&&f.code==="CANCELLED"?{error:{code:"cancelled",message:"subagent catalog read was cancelled",details:{}}}:f instanceof W&&f.code==="SUBAGENT_CONTROL_PROJECTIONS_UNAVAILABLE"?{error:Ut()}:{error:{code:"internal",message:"subagent catalog read failed",details:{}}}}}a(Ct,"catalogChild");function me(t){return{code:"agent-preset-not-found",message:"this deployment composes no agent presets",details:{agentPreset:t,available:[]}}}a(me,"noRoster");function ge(t,s){return s instanceof He?{code:"agent-preset-not-found",message:s.message,details:{agentPreset:s.presetId,available:[...s.available]}}:s instanceof Ge?{code:"agent-preset-read-only",message:s.message,details:{agentPreset:t,reason:s.message}}:s instanceof js||s instanceof Ps?{code:"agent-preset-invalid",message:s.message,details:{agentPreset:t,reason:s.message}}:{code:"internal",message:`agent preset "${t}": ${String(s)}`,details:{}}}a(ge,"presetError");var Lt=class extends Error{static{a(this,"AgentPresetConflict")}sessionId;requestedPreset;existingPreset;constructor(t,s,i){super(i===void 0?`session "${t}" records no agent preset, so it cannot be adopted under one; a deployment composing no roster records none on any session — `:`session "${t}" already runs agent preset ${JSON.stringify(i)}; requested ${JSON.stringify(s)}. A session's preset is fixed at creation.`),this.sessionId=t,this.requestedPreset=s,this.existingPreset=i}},Me=class extends Error{static{a(this,"SessionCwdConflict")}sessionId;requestedCwd;existingCwd;constructor(t,s,i){super(`session "${t}" already exists with cwd ${JSON.stringify(i)}; requested ${JSON.stringify(s)}`),this.sessionId=t,this.requestedCwd=s,this.existingCwd=i}},Tt=class extends Error{static{a(this,"WorkspaceNameConflictError")}workspaceName;constructor(t){super(`workspace name '${t}' is already in use`),this.workspaceName=t,this.name="WorkspaceNameConflictError"}};function he(t,s){return g(t,{code:"workspace-not-found",message:`workspace "${s}" not found`,details:{workspaceId:s}})}a(he,"workspaceNotFound");function q(t){return{workspaceId:t.id,path:t.path,title:t.title,sessionIds:[...t.sessionIds],createdAt:t.createdAt,updatedAt:t.updatedAt}}a(q,"workspaceView");function po(t,s){const i=Is.parse(s);return{workspaceId:t,path:i.path,title:i.title,sessionIds:[...i.sessionIds],createdAt:i.createdAt,updatedAt:i.updatedAt}}a(po,"changedWorkspaceView");function Nt(t,s){const i=s.sessionExportCompressionLevel??6,l=s.coldBlankProbeMaxBytes??1024,m=a(()=>{const{provider:n,model:o}=s.defaultModelSelection();return{provider:n,model:o}},"agentOptions"),b=new WeakMap,f=new Map,w=new Map;let I=Promise.resolve();const A=new Map,R=new Map,C=new Set,M=new WeakMap;function T(n,o){const r=(M.get(n)??Promise.resolve()).then(o);return M.set(n,r.then(()=>{},()=>{})),r}a(T,"serializeImageAdmission");function U(n){const o=b.get(n);if(o!==void 0)return o;let r;const c={get current(){if(r!==void 0)return r;const d=n.session.requestHeader()?.config;return d===void 0?s.defaultModelSelection():{provider:d.provider,model:d.model,...d.reasoningEffort===void 0?{}:{reasoningEffort:d.reasoningEffort}}},set current(d){r=d},assembled:void 0};return ps(n.ctx,c),b.set(n,c),c}a(U,"selectionFor");function N(n){const o=n.agent;if(o===void 0)throw new Error("api-proxy: agent setup has no scoped agent");U(o)}a(N,"installSelection");function ne(n,o,r){if(!(o===void 0||o===r))throw new Lt(n,o,r)}a(ne,"assertPresetUnchanged");async function oe(n){const o=t.get("agentPresets");if(o===void 0)return{setup:a(c=>(N(c),Promise.resolve()),"setup")};const r=(await o.resolve(n)).id;return{agentPreset:r,setup:a(async c=>{N(c),await o.mount(c,r)},"setup")}}a(oe,"composeAgent");const F=a((n,o)=>_s(t,n,o),"hasSubagentOwner"),ve=a(n=>$s(n),"subagentOwnershipError"),be=a(n=>Vs(t,n),"inspectServable"),z=Os(t,{agentOptions:m,setup:a(async({meta:n,events:o})=>(await oe(Q({header:n,events:o}))).setup,"setup")});function re(n){const o=L(n);for(const r of C)r.push(o)}a(re,"broadcast"),t.inject(["sessionProjections"],n=>{n.sessionProjections.onChanged((o,r,c,d)=>{re({type:"session/projection",sessionId:o.id,key:r,value:c,seq:d})})}),t.inject(["sessionProjections"],n=>{n.sessionProjections.register({key:"sessionListMetadata",schema:yn,init:a(()=>({blank:!0,lastPromptAt:null}),"init"),apply:bt,view:a(o=>o,"view"),stateVersion:1})}),t.inject(["sessionProjections","attachments"],n=>{n.sessionProjections.register({key:"imageLimits",schema:wn,init:a(()=>null,"init"),apply:a(o=>o,"apply"),view:a(()=>n.attachments.imageLimits,"view"),stateVersion:1})});const Te=a((n,o)=>{const r=a(c=>{const d=c==="next-turn"?n.inbox.nextTurn:n.inbox.nextStep;return o?.target===c?d.toSpliced(o.start,o.removedCount??0,...o.inserted):d},"project");return[...r("next-turn").map(c=>({id:c.id,placement:"queued",message:c})),...r("next-step").map(c=>({id:c.id,placement:c.source.kind==="user"?"steering":"context",message:c}))]},"queueItems");t.on("session/event",(n,o)=>{if(o.type!=="agent/inbox/spliced")return;const r=t.agents.get(n.id);r?.session===n&&re({type:"session/queue",sessionId:n.id,items:Te(r,o.data)})});function ae(n,o){A.delete(n.rpcId),n.signal!==void 0&&n.onAbort!==void 0&&n.signal.removeEventListener("abort",n.onAbort),re({type:"question/resolved",sessionId:n.sessionId,questionRpcId:n.rpcId,outcome:o})}a(ae,"claimQuestion");const Zt=t.userQuestions.registerProvider({ask(n){const o=n.agent?.id;return o===void 0?Promise.reject(new ce("web user interaction requires an agent-owned session","ASK_MISSING_AGENT")):new Promise((r,c)=>{const d=B(),u={rpcId:d,sessionId:o,questions:n.questions,resolve:r,reject:c,...n.signal===void 0?{}:{signal:n.signal}},p=a(()=>{ae(u,"cancelled"),c(new ce("ask_user_question was aborted before the user answered","ASK_ABORTED"))},"onAbort");u.onAbort=p,A.set(d,u),n.signal?.addEventListener("abort",p,{once:!0});const h={rpcId:d,payload:{type:"question/requested",sessionId:o,questions:n.questions}};for(const v of C)v.push(h)})}});t.effect(()=>()=>{Zt();for(const n of[...A.values()])ae(n,"cancelled"),n.reject(new ce("web user-questions provider was disposed","ASK_ABORTED"))},"api-proxy: user-questions provider"),t.get("approval")!==void 0&&(t.effect(()=>()=>{for(const n of[...R.values()])n.resolve("cancelled")},"api-proxy: approval registry teardown"),t.on("approval/request",(n,o)=>{if(n.signal?.aborted===!0)return Promise.resolve("cancelled");const r=n.agent.session.events,c=new Set;for(const h of R.values())c.add(h.approvalId);const d=new Set;let u;for(let h=r.length-1;h>=0;h-=1){const v=r[h];if(v.type==="approval/decided")d.add(v.data.id);else if(v.type==="approval/asked"){if(d.has(v.data.id)||c.has(v.data.id)||(n.callId??null)!==(v.data.callId??null))continue;u=v.data.id;break}}if(u===void 0)return o();const p=u;return new Promise(h=>{const v=a(P=>{R.delete(E.rpcId)&&(n.signal?.removeEventListener("abort",y),re({type:"approval/resolved",sessionId:E.sessionId,approvalId:p,outcome:P}),h(P))},"settle"),y=a(()=>{v("cancelled")},"onAbort"),E={rpcId:B(),sessionId:n.agent.session.id,approvalId:p,toolName:n.toolName,...n.callId===void 0?{}:{callId:n.callId},...n.reason===void 0?{}:{reason:n.reason},resolve:v};R.set(E.rpcId,E),n.signal?.addEventListener("abort",y,{once:!0});const S=kt(E);for(const P of C)P.push(S)})}));async function Ne(n){const o=t.sessions.get(n);if(o!==void 0)return{id:o.id,header:o.header,events:[...o.events]};const r=await be(n);return{id:r.meta.id,header:r.meta,events:r.events}}a(Ne,"readSessionState");async function xt(n){const o=t.workspaceRegistry.list(),r=o.find(d=>d.sessionIds.includes(n.id));if(r!==void 0||n.header.origin!=="subagent")return r;const c=await t.sessionQuery.traceSession(n.id);for(const d of c.ancestors){const u=o.find(p=>p.sessionIds.includes(d.header.id));if(u!==void 0)return u}}a(xt,"forkWorkspace");async function Jt(n){const o=t.sessions.get(n);if(o!==void 0)return{kind:"attached",session:o};const r=await be(n);return{kind:"detached",header:r.meta,events:r.events}}a(Jt,"historySourceFor");function Yt(n){return n.kind==="detached"?{header:n.header,events:n.events}:{header:n.session.header,events:n.session.events}}a(Yt,"sourceSession");function Kt(n,o){if(n.kind==="detached"){const d=o?Rt(t,n.events):void 0;return{events:n.events,...d===void 0?{}:{projections:d}}}const r=[...n.session.events],c=o?Et(t,n.session):void 0;return{events:r,...c===void 0?{}:{projections:c}}}a(Kt,"historyCutOf");async function De(n,o){const r=t.get("agents")?.get(n);if(r!==void 0)return r;const c=t.get("agentPresets");if(c!==void 0)try{return await c.standingKeyFor(Q(o))}catch{return}}a(De,"presenterScopeFor");async function Xt(n,o,r,c){let d=w.get(n);d===void 0&&(d=(async()=>{const p=t.sessions.get(n),h=t.agents.get(n);if(p!==void 0&&F(p,h))throw new H(n);if(h!==void 0)return h;const v=r?t.get("sessionPersistence"):void 0,y=v===void 0?void 0:(await v.list()).find(S=>S.id===n);if(v!==void 0&&y!==void 0){const S=await v.inspect(n);if(F({header:S.meta},void 0))throw new H(n);if(S.meta.cwd!==o)throw new Me(n,o,S.meta.cwd);const P=Q({header:S.meta,events:S.events});return ne(n,c,P),(await t.agents.resume({resumeSessionId:n,agentOptions:m(),setup:(await oe(P)).setup})).agent}try{await is(o,{recursive:!0})}catch(S){throw new Error(`failed to ensure project directory "${o}": ${String(S)}`,{cause:S})}const E=await oe(c);return(await t.agents.create({sessionId:n,agentOptions:m(),meta:{cwd:o,...E.agentPreset===void 0?{}:{agentPreset:E.agentPreset}},setup:E.setup})).agent})().catch(p=>{const h=t.agents.get(n);if(h!==void 0){if(F(h.session,h))throw new H(n);return h}const v=t.sessions.get(n);throw v!==void 0&&F(v,void 0)?new H(n):p}).finally(()=>{w.delete(n)}),w.set(n,d));const u=await d;if(F(u.session,u))throw new H(n);if(ne(n,c,Q(u.session)),u.session.header.cwd!==o)throw new Me(n,o,u.session.header.cwd);return u}a(Xt,"ensureSession");function qt(n){const o=I.then(async()=>{const r=await t.workspaceRegistry.resolveByPath(n);return r!==void 0?{workspace:r,created:!1}:{workspace:await t.workspaceRegistry.create(n),created:!0}});return I=o.then(()=>{},()=>{}),o}a(qt,"ensureWorkspace");async function $e(n){n?.throwIfAborted();const o=a(u=>{const p=t.agents.get(u.id),h=At(t,u.header,u);return{...ro(u,p?.status==="running"),...h===void 0?{}:{projections:h}}},"summarizeAttached"),r=t.sessions.list().map(o);n?.throwIfAborted();const c=new Set(r.map(u=>u.sessionId)),d=t.get("sessionPersistence");if(d!==void 0){const u=(await d.list(n)).filter(p=>!c.has(p.id)&&p.cwd!==void 0);n?.throwIfAborted();for(let p=0;p<u.length;p+=dt){n?.throwIfAborted();const h=u.slice(p,p+dt),v=await Promise.allSettled(h.map(async P=>{const $=At(t,P,void 0),_=await io(t,d,P,$?.values.sessionListMetadata,l,n),J=t.sessions.get(P.id);return J!==void 0?o(J):{..._,...$===void 0?{}:{projections:$}}})),y=[];let E=!1,S;for(const P of v)P.status==="fulfilled"?y.push(P.value):E||(E=!0,S=P.reason);if(E)throw S;n?.throwIfAborted(),r.push(...y)}}return r.sort((u,p)=>p.updatedAt-u.updatedAt),r}a($e,"listVisibleSessionSummaries");function Oe(n){const o=t.get("agentPresets")?.serviceFor(n,"goals")??t.get("goals");return o===void 0?{error:{code:"internal",message:"goal service is absent: neither this session's agent preset nor the host composition mounts @deepseek-ai/dsh-goal",details:{}}}:o}a(Oe,"goalServiceFor");function _e(n,o){const r=o instanceof Us?{goalCode:o.code}:{};return g(n,{code:"internal",message:String(o),details:r})}a(_e,"goalError");async function x(n,o){const r=await z(n.payload.sessionId);if("error"in r)return g(n,r.error);const c=Oe(r.agent);if("error"in c)return g(n,c.error);try{const d=o(c,r.agent);return j(n,{ref:{id:d.id,revision:d.revision}})}catch(d){return _e(n,d)}}a(x,"mutateGoal");function Ve(n){const o=t.get("llm");return o===void 0||o.listProviders().some(r=>r.id===n)}a(Ve,"routeServed");async function es(n,o){const r=await z(o);if("error"in r)return{refused:g(n,r.error)};const c=r.agent,d=U(c).current;return Ve(d.provider)?{agent:c}:{refused:g(n,{code:"model-unavailable",message:`no adapter serves provider "${d.provider}"; select a model for this session`,details:{provider:d.provider,model:d.model}})}}a(es,"turnAgentFor");function ye(){return{code:"internal",message:"settings service is absent: this deployment does not mount a settings provider (e.g. @deepseek-ai/dsh-settings-file) in its composition",details:{}}}a(ye,"settingsAbsent");async function Be(n,o,r,c){try{return await c(o,r),j(n,{opened:!0})}catch(d){return r.aborted?g(n,{code:"cancelled",message:"path open was aborted",details:{}}):g(n,{code:"internal",message:`path open failed: ${d instanceof Error?d.message:String(d)}`,details:{}})}}a(Be,"openTarget");function Fe(n,o,r){return Be(n,o,r,s.openPath??((c,d)=>Hn(c,d)))}a(Fe,"openPath");function ts(n,o,r){return Be(n,o,r,s.openTextFile??((c,d)=>Zn(c,d)))}a(ts,"openTextFile");function we(){return s.canOpenPath!==void 0?s.canOpenPath():s.openPath!==void 0||Gn()}a(we,"canOpenPaths");function Se(){return{code:"internal",message:"credentials service is absent: this deployment does not mount a credential provider (e.g. @deepseek-ai/dsh-credentials-local) in its composition",details:{}}}a(Se,"credentialsAbsent");function ze(n){return{ns:String(n.ns),schema:n.schema,value:n.value,...n.base===void 0?{}:{base:n.base},...n.user===void 0?{}:{user:n.user},applies:n.applies,secrets:(n.secrets??[]).map(o=>({path:[...o.path],set:o.set})),revision:n.revision}}a(ze,"namespaceView");function ss(){return new Set(t.llm.listConfigurableProviders().map(n=>n.settingsNs))}a(ss,"modelProviderNamespaces");function Qe(){const n=ss();for(const o of Jn)n.add(o);for(const o of so)n.add(o);return n}a(Qe,"exposedNamespaces");function ns(n,o){return g(n,{code:"settings-not-exposed",message:`settings namespace "${o}" is not exposed to configuration clients`,details:{ns:o}})}a(ns,"notExposed");async function ke(n,o,r,c,d){const u=t.get("settings");if(u===void 0)return g(n,ye());const p=a(y=>y instanceof Cs?g(n,{code:"settings-conflict",message:y.message,details:{ns:o,expected:y.expected,actual:y.actual}}):g(n,{code:"settings-rejected",message:y instanceof Error?y.message:String(y),details:{ns:o}}),"rejected");let h;try{h=Ls(o)}catch(y){return p(y)}if(!Qe().has(o))return ns(n,o);try{r==="update"?await u.update(h,c,d):r==="replace"?await u.replace(h,c,d):await u.mutate(h,c,d)}catch(y){return p(y)}const v=u.describe({redactSecrets:!0}).find(y=>y.ns===h);return v===void 0?g(n,{code:"internal",message:`settings namespace "${o}" was disposed after the ${r}`,details:{}}):j(n,ze(v))}return a(ke,"settingsWrite"),{sessions:{async list(n){return j(n,{items:await $e()})},async search(n,o){const r=a(()=>g(n,{code:"cancelled",message:"session search was aborted",details:{}}),"cancelled");if(V(o))return r();const c=t.get("sessionQuery");if(c===void 0)return g(n,{code:"internal",message:"session search is unavailable: this deployment does not mount @deepseek-ai/dsh-session-query",details:{}});try{const d=await $e(o);if(V(o))return r();if(d.length===0)return j(n,{items:[],hasMore:!1});const u=new Set(d.map(P=>P.sessionId)),p=[],h=new Set,v=new Set;let y,E=0,S=20;for(;p.length<=20;){if(V(o))return r();if(E>=ct)throw new Error(`session search provider exceeded the ${ct}-call work budget`);E++;const P=y,$=S;let _;try{_=await c.searchSessions({query:n.payload.query,eventFilters:[{kind:"type",values:["user/message","assistant/message"]},{kind:"surface",values:["current"]}],limit:$,...P===void 0?{}:{cursor:P}},{signal:o})}catch(D){if(V(o))return r();if(P===void 0&&D instanceof Ie&&D.code==="SESSION_QUERY_INVALID_LIMIT"&&$>1){S=Math.max(1,Math.floor($/2));continue}if(P!==void 0&&D instanceof Ie&&D.code==="SESSION_QUERY_STALE_CURSOR"){p.length=0,h.clear(),v.clear(),y=void 0;continue}throw D}if(V(o))return r();const J=_.items.length;if(J>$)throw new Error(`session search provider returned ${J} items; maximum is ${$}`);for(const D of _.items){if(p.length>20||!u.has(D.header.id)||D.bestMatch.sessionId!==D.header.id||D.bestMatch.surface!=="current"||!lt.has(D.bestMatch.type)||h.has(D.header.id))continue;const os=Je(D.bestMatch.snippet,240);h.add(D.header.id),p.push({sessionId:D.header.id,snippet:os})}const Y=_.nextCursor;if(Y!==void 0){if(v.has(Y))throw new Error("session search provider repeated a continuation cursor");v.add(Y)}if(p.length>20||Y===void 0)break;y=Y}return j(n,{items:p.slice(0,20),hasMore:p.length>20})}catch(d){return V(o)||d instanceof Ie&&d.code==="SESSION_QUERY_ABORTED"?r():g(n,{code:"internal",message:`session search failed: ${String(d)}`,details:{}})}},async create(n){const o=n.payload.sessionId??`session-${B()}`;let r;if(n.payload.workspaceId!==void 0&&(r=t.workspaceRegistry.get(G(n.payload.workspaceId)),r===void 0))return g(n,{code:"workspace-not-found",message:`workspace "${n.payload.workspaceId}" not found`,details:{workspaceId:n.payload.workspaceId}});const c=r?.path??n.payload.cwd??s.cwd,d=n.payload.agentPreset;try{await Xt(o,c,n.payload.sessionId!==void 0,d)}catch(h){if(h instanceof Lt)return g(n,{code:"agent-preset-conflict",message:h.message,details:{sessionId:h.sessionId,requestedPreset:h.requestedPreset,...h.existingPreset===void 0?{}:{existingPreset:h.existingPreset}}});const v=gt(n,h);return v!==void 0?v:h instanceof Me?g(n,{code:"session-conflict",message:h.message,details:{sessionId:h.sessionId,requestedCwd:h.requestedCwd,...h.existingCwd===void 0?{}:{existingCwd:h.existingCwd}}}):h instanceof H?g(n,ve(h.sessionId)):g(n,{code:"internal",message:`failed to create session "${o}": ${String(h)}`,details:{}})}if(r!==void 0)try{await r.attachSession(o)}catch(h){return g(n,{code:"workspace-attach-failed",message:`session "${o}" was created but could not attach to workspace "${r.id}": ${String(h)}`,details:{sessionId:o,workspaceId:r.id}})}const u=t.agents.get(o),p=u===void 0?void 0:Q(u.session);return j(n,{sessionId:o,...p===void 0?{}:{agentPreset:p}})},async history(n){const{sessionId:o,beforeSeq:r,maxMessages:c}=n.payload;try{const d=await Jt(o),u=await De(o,Yt(d)),p=Kt(d,r===void 0),h=Pt(t,p.events,r,c,u);return j(n,{events:h.events,hasMore:h.hasMore,...p.projections===void 0?{}:{projections:p.projections}})}catch(d){return d instanceof de?g(n,{code:"session-not-found",message:d.message,details:{sessionId:o}}):g(n,{code:"internal",message:`history unavailable for session "${o}": ${String(d)}`,details:{}})}},async models(n){const{sessionId:o}=n.payload,r=await z(o);if("error"in r)return g(n,r.error);const c=U(r.agent).current,{groups:d,failures:u}=await mt(t),p=Ve(c.provider);return j(n,{current:{...c},routable:p,groups:d,failures:u})},async selectModel(n){const{sessionId:o,provider:r,model:c,reasoningEffort:d}=n.payload,u=await z(o);return"error"in u?g(n,u.error):T(u.agent,async()=>{try{const p=await t.llm.resolveCallConfig({provider:r,model:c,...d===void 0?{}:{reasoningEffort:us(d)}});if([...u.agent.inbox.nextTurn,...u.agent.inbox.nextStep].some(v=>We(v.content))||eo(u.agent.session.deriveMessages())){const v=await t.llm.resolveModelInfo(p.provider,p.model);if(v.inputModalities!==void 0&&!v.inputModalities.includes("image"))return g(n,{code:"model-unavailable",message:`Model "${p.model}" does not accept image input, but this session already contains images; select an image-capable model.`,details:{provider:r,model:c}})}const h={provider:p.provider,model:p.model,...p.reasoningEffort===void 0?{}:{reasoningEffort:p.reasoningEffort}};U(u.agent).current=h;try{await s.saveDefaultModelSelection?.(h)}catch(v){t.logger.warn(`api-proxy: the model switch applies to this session but was not saved as the default: ${String(v)}`)}return j(n,{selected:{...h}})}catch(p){return g(n,{code:"model-unavailable",message:p instanceof Error?p.message:String(p),details:{provider:r,model:c}})}})},async rename(n){const{sessionId:o,title:r}=n.payload,c=await z(o);if("error"in c)return g(n,c.error);const d=t.get("sessionTitle");if(d===void 0)return g(n,{code:"internal",message:"renaming is unavailable: this deployment mounts no session-title service",details:{}});try{const u=d.rename(c.agent.session,r);return j(n,{title:u.title,seq:u.eventSeq})}catch(u){return u instanceof Ts?g(n,{code:"title-invalid",message:u.message,details:{sessionId:o}}):g(n,{code:"internal",message:`failed to rename session "${o}": ${String(u)}`,details:{}})}},async fork(n){const{sessionId:o,atSeq:r}=n.payload;let c;try{c=await Ne(o)}catch(S){return S instanceof de?g(n,{code:"session-not-found",message:S.message,details:{sessionId:o}}):g(n,{code:"internal",message:`fork source unavailable for session "${o}": ${String(S)}`,details:{}})}const d=c.events,u=d.at(-1)?.seq??-1,p=(r===void 0?void 0:d.find(S=>S.type==="turn/end"&&S.seq>=r))??(r===void 0||r>u?d.findLast(S=>S.type==="turn/end"):void 0);if(p===void 0)return g(n,{code:"fork-unavailable",message:r!==void 0&&r<=u?`session "${o}" has not completed the turn containing event ${String(r)}`:`session "${o}" has no completed turn to fork from`,details:{sessionId:o}});let h=p.seq+1;for(;h<d.length&&d[h]?.type!=="turn/start";)h++;let v;try{v=await xt(c)}catch(S){return g(n,{code:"internal",message:`failed to resolve fork workspace for session "${o}": ${String(S)}`,details:{}})}const y=`session-${B()}`,E=await oe(Q(c));try{await t.agents.create({sessionId:y,seed:d.slice(0,h),meta:{...c.header.cwd===void 0?{}:{cwd:c.header.cwd},parentSession:c.id,seedLength:h,...E.agentPreset===void 0?{}:{agentPreset:E.agentPreset}},agentOptions:m(),setup:E.setup})}catch(S){return g(n,{code:"internal",message:`failed to fork session "${o}": ${String(S)}`,details:{}})}if(v!==void 0)try{await v.attachSession(y)}catch(S){return g(n,{code:"workspace-attach-failed",message:`session "${y}" was forked but could not attach to workspace "${v.id}": ${String(S)}`,details:{sessionId:y,workspaceId:v.id}})}return j(n,{sessionId:y})},async prompt(n){const{sessionId:o,mode:r,content:c,clientTimeZone:d}=n.payload,u=d===void 0?void 0:ut(d);if(d!==void 0&&u===void 0)return g(n,{code:"invalid-time-zone",message:"clientTimeZone must be UTC or a valid IANA Area/Location name",details:{value:d}});const p=await es(n,o);if("refused"in p)return p.refused;const h=p.agent,v={kind:"user",rpcId:n.rpcId,...u===void 0?{}:{clientTimeZone:u}},y=c.some(S=>S.type==="image"),E=a(async()=>{try{if(y){const $=U(h).current,_=await t.llm.resolveModelInfo($.provider,$.model);if(_.inputModalities!==void 0&&!_.inputModalities.includes("image"))return g(n,{code:"attachment-error",message:`Model "${$.model}" does not support image input.`,details:{reason:"MODEL_DOES_NOT_SUPPORT_IMAGES"}})}const S=await Xn(t,c),P=ms({content:S,source:v});r==="steer"?h.steer(P):h.followup(P)}catch(S){return S instanceof K?g(n,{code:"attachment-error",message:S.message,details:{reason:S.code}}):g(n,{code:"agent-busy",message:"prompt rejected",details:{reason:String(S)}})}return j(n,{accepted:!0})},"admit");return y?T(h,E):E()},async attachment(n){const{sessionId:o,attachmentId:r}=n.payload;let c;try{c=await Ne(o)}catch(u){return u instanceof de?g(n,{code:"session-not-found",message:u.message,details:{sessionId:o}}):g(n,{code:"internal",message:`attachment authorization unavailable for session "${o}": ${String(u)}`,details:{}})}const d=to(c.events,String(r));if(d===void 0)return g(n,{code:"attachment-error",message:"Image is not referenced by this session.",details:{reason:"ATTACHMENT_NOT_REFERENCED"}});try{const u=await t.attachments.readImage(d);return j(n,{attachment:u.ref,data:Buffer.from(u.data).toString("base64")})}catch(u){return u instanceof K?g(n,{code:"attachment-error",message:u.message,details:{reason:u.code}}):g(n,{code:"internal",message:"Unable to read image attachment.",details:{}})}},updateQueue(n){const{sessionId:o,itemId:r,action:c}=n.payload;if(c.kind==="edit"&&c.content.some(h=>h.type!=="text"))return Promise.resolve(g(n,{code:"attachment-error",message:"queue edits accept text content only",details:{reason:"QUEUE_EDIT_NON_TEXT"}}));const d=t.agents.get(o);if(d!==void 0&&F(d.session,d))return Promise.resolve(g(n,ve(o)));if(d===void 0)return Promise.resolve(g(n,{code:"queue-item-not-found",message:"queued item is no longer pending",details:{itemId:r}}));const u=d.inbox.nextTurn.some(h=>h.id===r)?"next-turn":d.inbox.nextStep.some(h=>h.id===r)?"next-step":void 0,p=u===void 0?void 0:(u==="next-turn"?d.inbox.nextTurn:d.inbox.nextStep).find(h=>h.id===r);return u===void 0||p===void 0?Promise.resolve(g(n,{code:"queue-item-not-found",message:"queued item is no longer pending",details:{itemId:r}})):c.kind==="steer"&&(u!=="next-turn"||d.status!=="running")?Promise.resolve(g(n,{code:"steer-unavailable",message:"current turn no longer accepts steering",details:{itemId:r}})):(c.kind==="edit"?d.inbox.replace(r,hs({...p,content:c.content})):(d.inbox.remove(r),c.kind==="steer"&&d.steer(p)),Promise.resolve(j(n,{accepted:!0})))},cancel(n){const{sessionId:o}=n.payload,r=t.agents.get(o);return r===void 0?Promise.resolve(g(n,{code:"session-not-found",message:`session "${o}" not found (not attached)`,details:{sessionId:o}})):F(r.session,r)?Promise.resolve(g(n,ve(o))):(r.cancel({kind:"user"},{keepInbox:!0}),Promise.resolve(j(n,{accepted:!0})))}},subagents:{async list(n,o){try{return j(n,{entries:(await t.subagents.listChildren(n.payload.parentSessionId,o)).map(r=>r.kind==="child"?{...r,activity:t.agents.get(r.id)?.status==="running"?"running":"inactive"}:r),parentAvailable:t.agents.get(n.payload.parentSessionId)!==void 0})}catch(r){return o?.aborted||r instanceof W&&r.code==="CANCELLED"?g(n,{code:"cancelled",message:"subagent catalog read was cancelled",details:{}}):r instanceof W&&r.code==="SUBAGENT_CONTROL_PROJECTIONS_UNAVAILABLE"?g(n,Ut()):g(n,{code:"internal",message:"subagent catalog read failed",details:{}})}},async history(n,o){const{parentSessionId:r,childSessionId:c,mode:d,beforeSeq:u,maxMessages:p}=n.payload,h=await Ct(t,{parentSessionId:r,childSessionId:c,mode:d},o);if(h.error!==void 0)return g(n,h.error);let v,y,E;const S=t.sessions.get(c);if(S!==void 0)v=S.header,y=[...S.events],E=u===void 0?Mt(t,c,()=>Et(t,S)):void 0;else try{const P=await be(c);v=P.meta,y=P.events,E=u===void 0?Mt(t,c,()=>Rt(t,P.events)):void 0}catch(P){return o?.aborted?g(n,{code:"cancelled",message:"subagent history read was cancelled",details:{}}):P instanceof de?g(n,{code:"subagent-not-found",message:"subagent disappeared during history read",details:{parentSessionId:r,childSessionId:c}}):g(n,{code:"internal",message:"subagent history read failed",details:{}})}return o?.aborted?g(n,{code:"cancelled",message:"subagent history read was cancelled",details:{}}):v.parentSession!==r?g(n,{code:"subagent-unauthorized",message:"subagent parent changed during history read",details:{childSessionId:c}}):j(n,{...Pt(t,y,u,p),...E===void 0?{}:{projections:E}})},async prompt(n,o){const{parentSessionId:r,childSessionId:c,content:d,clientTimeZone:u}=n.payload,p=u===void 0?void 0:ut(u);if(u!==void 0&&p===void 0)return g(n,{code:"invalid-time-zone",message:"clientTimeZone must be UTC or a valid IANA Area/Location name",details:{value:u}});const h=t.agents.get(r);if(h===void 0)return g(n,{code:"subagent-parent-unavailable",message:`parent session "${r}" is not live`,details:{parentSessionId:r}});const v=await Ct(t,{parentSessionId:r,childSessionId:c,mode:"continuable"},o);if(v.error!==void 0)return g(n,v.error);try{return j(n,{messageId:await t.subagents.followup(h,c,d,{source:{kind:"user",rpcId:n.rpcId,...p===void 0?{}:{clientTimeZone:p}},signal:o})})}catch(y){return lo(n,y,o)}},interrupt(n){const{parentSessionId:o,childSessionId:r}=n.payload;try{t.subagents.interrupt(r,{kind:"user",parentSessionId:o})}catch(c){return c instanceof W&&c.code==="UNAUTHORIZED"?Promise.resolve(g(n,{code:"subagent-unauthorized",message:"subagent does not belong to this parent",details:{childSessionId:r}})):Promise.resolve(g(n,{code:"internal",message:"subagent interrupt failed",details:{}}))}return Promise.resolve(j(n,{accepted:!0}))}},workspace:{list(n){return Promise.resolve(j(n,{items:t.workspaceRegistry.list().map(q),archivedSessionIds:[...t.workspaceRegistry.archivedSessionIds]}))},async create(n){const{path:o}=n.payload;try{const{workspace:r,created:c}=await qt(o);return j(n,{workspace:q(r),created:c})}catch(r){return g(n,{code:"workspace-invalid-path",message:`cannot create a workspace at "${o}": ${r instanceof Error?r.message:String(r)}`,details:{path:o}})}},async rename(n){const{payload:o}=n,r=t.workspaceRegistry.get(G(o.workspaceId));if(r===void 0)return he(n,o.workspaceId);const c=o.title.trim(),d=I.then(async()=>{if(c!==r.title){if(t.workspaceRegistry.list().some(u=>u.id!==r.id&&u.title===c))throw new Tt(c);await r.setTitle(c)}});I=d.then(()=>{},()=>{});try{await d}catch(u){if(u instanceof Tt)return g(n,{code:"workspace-name-conflict",message:u.message,details:{name:u.workspaceName}});throw u}return j(n,{workspace:q(r)})},async delete(n){const{workspaceId:o}=n.payload,r=I.then(()=>t.workspaceRegistry.delete(G(o)));return I=r.then(()=>{},()=>{}),await r?j(n,{deleted:!0}):he(n,o)},async insertBefore(n){const{workspaceId:o,beforeWorkspaceId:r}=n.payload;try{return j(n,{workspaceIds:[...await t.workspaceRegistry.insertBefore(G(o),r===void 0?void 0:G(r))]})}catch(c){if(!(c instanceof ws))throw c;return he(n,c.workspaceId)}},async insertSessionBefore(n){const{payload:o}=n,r=t.workspaceRegistry.get(G(o.workspaceId));if(r===void 0)return he(n,o.workspaceId);try{await r.insertSessionBefore(o.sessionId,o.beforeSessionId)}catch(c){if(!(c instanceof ys))throw c;return g(n,{code:"workspace-move-invalid",message:c.message,details:{workspaceId:o.workspaceId,sessionId:o.sessionId,...o.beforeSessionId===void 0?{}:{beforeSessionId:o.beforeSessionId}}})}return j(n,{workspace:q(r)})},async archiveSession(n){const{sessionId:o}=n.payload;try{await t.workspaceRegistry.archiveSession(o)}catch(r){if(!(r instanceof Ss))throw r;return g(n,{code:"session-not-found",message:r.message,details:{sessionId:o}})}return j(n,{archivedSessionIds:[...t.workspaceRegistry.archivedSessionIds]})}},host:{describe(n){const o=s.defaultModelSelection();return Promise.resolve(j(n,{version:"0.0.1",cwd:s.cwd,provider:o.provider,model:o.model,attachedSessions:t.agents.list().length,canOpenPath:we()}))},async pickDirectory(n,o){const r=t.directoryPicker.capability();if(r.kind!=="native")return g(n,{code:"directory-picker-unavailable",message:`host.pickDirectory needs the native capability; the composed picker serves "${r.kind}"`,details:{capability:r.kind}});try{return j(n,{path:await r.pick(o)})}catch(c){return o.aborted?g(n,{code:"cancelled",message:"directory picker was aborted",details:{}}):g(n,{code:"internal",message:`directory picker failed: ${c instanceof Error?c.message:String(c)}`,details:{}})}},async listDirectory(n,o){const r=t.directoryPicker.capability();if(r.kind!=="browse")return g(n,{code:"directory-picker-unavailable",message:`host.listDirectory needs the browse capability; the composed picker serves "${r.kind}"`,details:{capability:r.kind}});try{return j(n,await r.list(n.payload.path,o))}catch(c){return o.aborted?g(n,{code:"cancelled",message:"directory listing was aborted",details:{}}):g(n,St(c))}},async createDirectory(n){const o=t.directoryPicker.capability();if(o.kind!=="browse")return g(n,{code:"directory-picker-unavailable",message:`host.createDirectory needs the browse capability; the composed picker serves "${o.kind}"`,details:{capability:o.kind}});try{return j(n,{path:await o.createDirectory(n.payload.path,n.payload.name)})}catch(r){return g(n,St(r))}},async openPath(n,o){return Fe(n,n.payload.path,o)}},goals:{async create(n){const{objective:o,maxGoalRounds:r}=n.payload;return x(n,(c,d)=>c.create(d,{objective:o,...r!==void 0?{maxGoalRounds:r}:{}}))},async edit(n){const{ref:o,objective:r,maxGoalRounds:c}=n.payload;return x(n,(d,u)=>d.edit(u,o,{...r!==void 0?{objective:r}:{},...c!==void 0?{maxGoalRounds:c}:{}}))},async pause(n){return x(n,(o,r)=>o.pause(r,n.payload.ref))},async resume(n){return x(n,(o,r)=>o.resume(r,n.payload.ref))},async complete(n){return x(n,(o,r)=>o.complete(r,n.payload.ref))},async clear(n){const o=await z(n.payload.sessionId);if("error"in o)return g(n,o.error);const r=Oe(o.agent);if("error"in r)return g(n,r.error);try{return r.clear(o.agent,n.payload.ref),j(n,{cleared:!0})}catch(c){return _e(n,c)}}},agentPresets:{async list(n){const o=t.get("agentPresets");if(o===void 0)return j(n,{presets:[],authorable:!1,hasDocument:!1});const r=o.defaultId;return j(n,{presets:(await o.list()).map(c=>({id:c.id,trust:c.trust,isDefault:c.id===r,...c.name===void 0?{}:{name:c.name},...c.description===void 0?{}:{description:c.description},...c.broken===void 0?{}:{broken:c.broken}})),authorable:o.authorable,hasDocument:we()})},async select(n){const{sessionId:o,agentPreset:r}=n.payload,c=t.get("agentPresets");if(c===void 0)return g(n,{code:"agent-preset-not-found",message:"this deployment composes no agent presets",details:{agentPreset:r,available:[]}});const d=await z(o);if("error"in d)return g(n,d.error);const{agent:u}=d,p=a(async()=>{if(!vt(u.session))return g(n,{code:"agent-preset-locked",message:`session "${o}" has already started; its agent preset is fixed`,details:{sessionId:o,agentPreset:r}});try{const v=await c.recompose(u.ctx,r);return u.session.append("agent-preset/selected",{agentPreset:v.id}),j(n,{agentPreset:v.id})}catch(v){const y=gt(n,v);return y!==void 0?y:g(n,{code:"internal",message:`failed to select agent preset "${r}": ${String(v)}`,details:{}})}},"swap"),h=(f.get(o)??Promise.resolve()).then(p);f.set(o,h.catch(()=>{}));try{return await h}finally{f.get(o)===h&&f.delete(o)}},async read(n){const{agentPreset:o}=n.payload,r=t.get("agentPresets");if(r===void 0)return g(n,me(o));try{const c=await r.resolve(o);return j(n,{agentPreset:c.id,trust:c.trust,content:await r.read(c.id),...c.name===void 0?{}:{name:c.name},...c.description===void 0?{}:{description:c.description}})}catch(c){return g(n,ge(o,c))}},async copy(n){const{from:o,agentPreset:r,name:c}=n.payload,d=t.get("agentPresets");if(d===void 0)return g(n,me(r));try{return await d.copy(o,r,c),j(n,{agentPreset:r})}catch(u){return g(n,ge(r,u))}},async openDocument(n,o){const{agentPreset:r}=n.payload,c=t.get("agentPresets");if(c===void 0)return g(n,me(r));try{const d=await c.resolve(r);if(d.trust!=="user")throw new Ge(d.id,"it ships with the deployment");const u=ds(d.path);return we()?await Fe(n,u,o):j(n,{opened:!1,path:u})}catch(d){return g(n,ge(r,d))}},async remove(n){const{agentPreset:o}=n.payload,r=t.get("agentPresets");if(r===void 0)return g(n,me(o));try{return await r.remove(o),j(n,{})}catch(c){return g(n,ge(o,c))}}},skills:{async list(n){const{sessionId:o}=n.payload,r=t.sessions.get(o);if(r===void 0)return g(n,{code:"session-not-found",message:`session "${o}" not found (not attached)`,details:{sessionId:o}});if(r.header.cwd===void 0)return g(n,{code:"internal",message:`session "${o}" has no project cwd`,details:{}});const c=r.header.cwd,d=t.agents.get(o),u=t.get("agentPresets"),p=(d===void 0?void 0:u?.serviceFor(d,"skills"))??t.get("skills");if(p===void 0)return g(n,{code:"internal",message:"skill registry is absent: neither this session's agent preset nor the host composition mounts @deepseek-ai/dsh-skill",details:{}});const h=await De(o,r);try{return j(n,{skills:(await p.list({cwd:c,scope:h})).filter(bs).map(v=>({name:v.name,description:v.description,...v.whenToUse===void 0?{}:{whenToUse:v.whenToUse},modelInvocable:v.invocation.modelInvocable}))})}catch(v){return g(n,{code:"internal",message:`skill listing failed: ${String(v)}`,details:{}})}}},settings:{describe(n){const o=t.get("settings");if(o===void 0)return Promise.resolve(g(n,ye()));const r=Qe();return Promise.resolve(j(n,{writable:o.writable,hasDocument:o.documentPath!==void 0,namespaces:o.describe({redactSecrets:!0}).filter(c=>r.has(String(c.ns))).map(ze)}))},async openDocument(n,o){const r=t.get("settings");if(r===void 0)return g(n,ye());if(V(o))return g(n,{code:"cancelled",message:"settings document open was aborted",details:{}});let c;try{c=await r.prepareDocument()}catch(d){return V(o)?g(n,{code:"cancelled",message:"settings document preparation was aborted",details:{}}):g(n,{code:"internal",message:`settings document preparation failed: ${d instanceof Error?d.message:String(d)}`,details:{}})}return c===void 0?g(n,{code:"internal",message:"settings provider has no local document to open",details:{}}):V(o)?g(n,{code:"cancelled",message:"settings document open was aborted",details:{}}):ts(n,c,o)},update:a(n=>ke(n,n.payload.ns,"update",n.payload.patch,n.payload.expectedRevision),"update"),replace:a(n=>ke(n,n.payload.ns,"replace",n.payload.section,n.payload.expectedRevision),"replace"),mutate:a(n=>ke(n,n.payload.ns,"mutate",n.payload.ops,n.payload.expectedRevision),"mutate")},credentials:{async describe(n){const o=t.get("credentials");if(o===void 0)return g(n,Se());const r=await Promise.all(n.payload.refs.map(async c=>{const d=await o.describe(je(c));return[c,{configured:d.configured,...d.source===void 0?{}:{source:d.source},writable:d.writable}]}));return j(n,{credentials:Object.fromEntries(r)})},async set(n){const o=t.get("credentials");if(o===void 0)return g(n,Se());const{ref:r,value:c}=n.payload;try{await o.set(je(r),c)}catch(d){return g(n,{code:"credential-rejected",message:d instanceof Error?d.message:String(d),details:{ref:r}})}return j(n,{})},async unset(n){const o=t.get("credentials");if(o===void 0)return g(n,Se());const{ref:r}=n.payload;try{await o.unset(je(r))}catch(c){return g(n,{code:"credential-rejected",message:c instanceof Error?c.message:String(c),details:{ref:r}})}return j(n,{})}},llm:{providers(n){const o=t.llm.listProviders(),r=new Set(o.map(p=>p.id)),c=t.llm.listConfigurableProviders(),d=new Set(c.map(p=>p.provider)),u=c.map(p=>({provider:p.provider,displayName:p.displayName,settingsNs:p.settingsNs,settingsPath:[...p.settingsPath],active:r.has(p.provider),...p.declared===void 0?{}:{declared:p.declared}}));for(const p of o)d.has(p.id)||u.push({provider:p.id,displayName:p.name,settingsNs:"",settingsPath:[],active:!0});return Promise.resolve(j(n,{providers:u}))},async models(n){return j(n,await mt(t))},async discoverModels(n,o){const{settingsNs:r,provider:c,baseURL:d,api:u,apiKey:p}=n.payload;try{return j(n,{models:await t.llm.discoverModels(r,{...c===void 0?{}:{provider:c},...d===void 0?{}:{baseURL:d},...u===void 0?{}:{api:u},...p===void 0?{}:{apiKey:p},...o===void 0?{}:{signal:o}})})}catch(h){return g(n,{code:"model-discovery-failed",message:h instanceof Error?h.message:String(h),details:{settingsNs:r,...d===void 0?{}:{baseURL:d}}})}}},events:{mux(n,o){const r=new ht;C.add(r);for(const p of t.sessions.list())ft(r,p);for(const p of A.values())r.push({rpcId:p.rpcId,payload:{type:"question/requested",sessionId:p.sessionId,questions:p.questions}});for(const p of R.values())r.push(kt(p));for(const p of t.sessions.list()){const h=t.agents.get(p.id);h?.session===p&&h.inbox.hasPending&&r.push(L({type:"session/queue",sessionId:p.id,items:Te(h)}))}const c=t.get("jobs");if(c!==void 0)for(const p of t.sessions.list()){const h=ue(c.list(t.agents.get(p.id)));h.length>0&&r.push(L({type:"session/jobs",sessionId:p.id,jobs:h}))}const d=new Map,u=[t.on("session/event",(p,h)=>{if(h.type==="tool/call"){const y=h.data;try{let E=d.get(p.id);E===void 0&&d.set(p.id,E=new Map),E.set(y.callId,{name:y.name,args:JSON.parse(y.arguments)})}catch{}}else h.type==="turn/end"&&d.delete(p.id);const v=It(t,h,y=>d.get(p.id)?.get(y)??jt(p.events,y),t.agents.get(p.id));r.push(L({type:"session/event",sessionId:p.id,event:h,...v===void 0?{}:{view:v}}))}),t.on("session/created",p=>{ft(r,p);const h=c===void 0?[]:ue(c.list(t.agents.get(p.id)));h.length>0&&r.push(L({type:"session/jobs",sessionId:p.id,jobs:h}))}),t.on("session/disposed",p=>{d.delete(p.id)}),...c===void 0?[]:[c.onJobsChanged(p=>{if(p!==void 0){r.push(L({type:"session/jobs",sessionId:p.id,jobs:ue(c.list(p))}));return}for(const h of t.sessions.list())r.push(L({type:"session/jobs",sessionId:h.id,jobs:ue(c.list(t.agents.get(h.id)))}))})]];return r.iterate(o,()=>{C.delete(r);for(const p of u)p()})},host(n,o){const r=new ht,c=t.workspaceRegistry.list(),d=new Set(c.map(v=>String(v.id)));let u=c.map(v=>v.id),p=t.workspaceRegistry.archivedSessionIds;const h=[t.on("session/created",v=>{r.push(L({type:"host/session-added",sessionId:v.id,blank:vt(v),...Re(v.header,v.events)}))}),t.on("session/disposed",v=>{r.push(L({type:"host/session-removed",sessionId:v.id}))}),t.on("agent/status",({agent:v,status:y})=>{r.push(L({type:"host/session-status",sessionId:v.id,running:y==="running"}))}),t.on("agent/error",({agent:v,error:y})=>{r.push(L({type:"host/agent-error",sessionId:v.id,message:gs(y)}))}),t.on("domain/changed",v=>{if(v.domain==="workspace"){if(v.table===""){if(v.operation!=="put")return;const y=ks.parse(v.value),E=y.workspaceIds.length===u.length&&y.workspaceIds.every(S=>d.has(String(S)))&&y.workspaceIds.some((S,P)=>S!==u[P]);for(const S of y.workspaceIds){if(d.has(S))continue;const P=t.workspaceRegistry.get(S);if(P===void 0)throw new Error(`committed workspace registry references missing workspace "${S}"`);d.add(S),r.push(L({type:"host/workspace-changed",workspace:q(P)}))}u=[...y.workspaceIds],E&&r.push(L({type:"host/workspace-order-changed",workspaceIds:[...y.workspaceIds]})),(y.archivedSessionIds.length!==p.length||y.archivedSessionIds.some((S,P)=>S!==p[P]))&&(p=y.archivedSessionIds,r.push(L({type:"host/archived-sessions-changed",archivedSessionIds:[...y.archivedSessionIds]})));return}if(v.table==="workspaces"){if(v.operation==="deleted"){if(!d.delete(v.key))return;r.push(L({type:"host/workspace-removed",workspaceId:v.key}));return}d.has(v.key)&&r.push(L({type:"host/workspace-changed",workspace:po(v.key,v.value)}))}}}),...Ds.map(v=>t.on(v,((...y)=>{r.push(L({type:"host/remote-event",event:v,args:oo(v,y)}))})))];return r.iterate(o,()=>{for(const v of h)v()})}},downloads:{async sessionLog(n,o){const r=zs(t);if(r.sessionQuery===void 0||r.sessionPersistence===void 0||r.attachments===void 0)return new Response("session log export is unavailable: missing session-query, session-persistence, or attachments service",{status:500});if(!r.sessionPersistence.supportsRawArtifacts)return new Response("session log export is unavailable: the persistence backend does not expose per-session raw artifacts",{status:501});const c={sessionQuery:r.sessionQuery,sessionPersistence:r.sessionPersistence,attachments:r.attachments,sessions:r.sessions};let d;try{await Ze(r,n.sessionId,o),d=await r.sessionPersistence.readRaw(n.sessionId,o),o.throwIfAborted()}catch{return o.throwIfAborted(),new Response("session log export failed to prepare the stored artifact",{status:500})}return d===void 0?new Response("session not found",{status:404}):new Response(tn(c,d,n.sessionId,n.includeDescendants===!0,i,o),{headers:{"content-type":"application/zip","content-disposition":`attachment; filename="${Zs(n.sessionId)}"`}})}},respond(n){const o=R.get(n.rpcId);if(o!==void 0){if(!n.result.ok)return Promise.resolve({accepted:!1,reason:"bad-response"});const u=$n.safeParse(n.result.value);return!u.success||u.data.approvalId!==o.approvalId||u.data.sessionId!==o.sessionId?Promise.resolve({accepted:!1,reason:"bad-response"}):(o.resolve(u.data.outcome),Promise.resolve({accepted:!0}))}const r=A.get(n.rpcId);if(r===void 0)return Promise.resolve({accepted:!1,reason:"not-pending"});if(!n.result.ok)return n.result.error.code!=="cancelled"?Promise.resolve({accepted:!1,reason:"bad-response"}):(ae(r,"cancelled"),r.reject(new ce("the user cancelled ask_user_question","ASK_CANCELLED")),Promise.resolve({accepted:!0}));const c=_n.safeParse(n.result.value);if(!c.success)return Promise.resolve({accepted:!1,reason:"bad-response"});const d={sessionId:c.data.sessionId,answer:{answers:c.data.answer.answers.map(u=>({id:u.id,selected:u.selected,...u.custom===void 0?{}:{custom:u.custom}}))}};return co(d,r)?(ae(r,"answered"),r.resolve(d.answer),Promise.resolve({accepted:!0})):Promise.resolve({accepted:!1,reason:"bad-response"})}}}a(Nt,"createApiProxy");const uo=e.object({sessionId:k,includeDescendants:e.union([e.literal("true"),e.literal("false")]).optional()}).transform(t=>({sessionId:t.sessionId,...t.includeDescendants==="true"?{includeDescendants:!0}:{}})),ee=e.string(),Ue=e.discriminatedUnion("code",[e.object({code:e.literal("bad-request"),message:e.string(),details:e.object({issues:e.array(e.custom())})}),e.object({code:e.literal("cancelled"),message:e.string(),details:e.object({})}),e.object({code:e.literal("session-not-found"),message:e.string(),details:e.object({sessionId:e.string()})}),e.object({code:e.literal("model-unavailable"),message:e.string(),details:e.object({provider:e.string(),model:e.string()})}),e.object({code:e.literal("session-conflict"),message:e.string(),details:e.object({sessionId:e.string(),requestedCwd:e.string(),existingCwd:e.string().optional()})}),e.object({code:e.literal("invalid-time-zone"),message:e.string(),details:e.object({value:e.string()})}),e.object({code:e.literal("workspace-attach-failed"),message:e.string(),details:e.object({sessionId:e.string(),workspaceId:e.string()})}),e.object({code:e.literal("workspace-not-found"),message:e.string(),details:e.object({workspaceId:e.string()})}),e.object({code:e.literal("workspace-invalid-path"),message:e.string(),details:e.object({path:e.string()})}),e.object({code:e.literal("workspace-name-conflict"),message:e.string(),details:e.object({name:e.string()})}),e.object({code:e.literal("workspace-move-invalid"),message:e.string(),details:e.object({workspaceId:e.string(),sessionId:e.string(),beforeSessionId:e.string().optional()})}),e.object({code:e.literal("directory-unreadable"),message:e.string(),details:e.object({path:e.string()})}),e.object({code:e.literal("directory-exists"),message:e.string(),details:e.object({path:e.string()})}),e.object({code:e.literal("directory-create-failed"),message:e.string(),details:e.object({path:e.string()})}),e.object({code:e.literal("directory-picker-unavailable"),message:e.string(),details:e.object({capability:e.string()})}),e.object({code:e.literal("agent-preset-read-only"),message:e.string(),details:e.object({agentPreset:e.string(),reason:e.string()})}),e.object({code:e.literal("agent-preset-locked"),message:e.string(),details:e.object({sessionId:e.string(),agentPreset:e.string()})}),e.object({code:e.literal("agent-preset-conflict"),message:e.string(),details:e.object({sessionId:e.string(),requestedPreset:e.string(),existingPreset:e.string().optional()})}),e.object({code:e.literal("agent-preset-not-found"),message:e.string(),details:e.object({agentPreset:e.string(),available:e.array(e.string())})}),e.object({code:e.literal("agent-preset-invalid"),message:e.string(),details:e.object({agentPreset:e.string(),reason:e.string()})}),e.object({code:e.literal("agent-busy"),message:e.string(),details:e.object({reason:e.string()})}),e.object({code:e.literal("attachment-error"),message:e.string(),details:e.object({reason:e.string()})}),e.object({code:e.literal("queue-item-not-found"),message:e.string(),details:e.object({itemId:e.string()})}),e.object({code:e.literal("steer-unavailable"),message:e.string(),details:e.object({itemId:e.string()})}),e.object({code:e.literal("command-error"),message:e.string(),details:e.object({})}),e.object({code:e.literal("unknown-command"),message:e.string(),details:e.object({})}),e.object({code:e.literal("settings-rejected"),message:e.string(),details:e.object({ns:e.string()})}),e.object({code:e.literal("settings-not-exposed"),message:e.string(),details:e.object({ns:e.string()})}),e.object({code:e.literal("settings-conflict"),message:e.string(),details:e.object({ns:e.string(),expected:e.number(),actual:e.number()})}),e.object({code:e.literal("credential-rejected"),message:e.string(),details:e.object({ref:e.string()})}),e.object({code:e.literal("model-discovery-failed"),message:e.string(),details:e.object({settingsNs:e.string(),baseURL:e.string().optional()})}),e.object({code:e.literal("title-invalid"),message:e.string(),details:e.object({sessionId:e.string()})}),e.object({code:e.literal("fork-unavailable"),message:e.string(),details:e.object({sessionId:e.string()})}),e.object({code:e.literal("subagent-parent-unavailable"),message:e.string(),details:e.object({parentSessionId:e.string()})}),e.object({code:e.literal("subagent-not-found"),message:e.string(),details:e.object({parentSessionId:e.string(),childSessionId:e.string()})}),e.object({code:e.literal("subagent-catalog-diagnostic"),message:e.string(),details:e.object({parentSessionId:e.string(),childSessionId:e.string(),reason:e.union([e.literal("corrupt"),e.literal("unsupported"),e.literal("unavailable")])})}),e.object({code:e.literal("subagent-not-resumable"),message:e.string(),details:e.object({childSessionId:e.string()})}),e.object({code:e.literal("subagent-unauthorized"),message:e.string(),details:e.object({childSessionId:e.string()})}),e.object({code:e.literal("subagent-delivery-unavailable"),message:e.string(),details:e.object({childSessionId:e.string()})}),e.object({code:e.literal("internal"),message:e.string(),details:e.object({})})]);function Dt(t){return e.union([e.object({ok:e.literal(!0),value:t}),e.object({ok:e.literal(!1),error:Ue})])}a(Dt,"rpcResultSchema");const $t=e.object({type:e.literal("client-request"),rpcId:ee,method:e.string(),payload:e.unknown()}),Ot=e.object({type:e.literal("server-response"),rpcId:ee,result:Dt(e.unknown().optional())}),_t=e.object({type:e.literal("server-request"),rpcId:ee,method:e.string(),payload:e.unknown()}),Vt=e.object({type:e.literal("client-response"),rpcId:ee,result:Dt(e.unknown().optional())});e.discriminatedUnion("type",[$t,Ot,_t,Vt]);const mo=e.union([e.object({accepted:e.literal(!0)}),e.object({accepted:e.literal(!1),reason:e.union([e.literal("not-pending"),e.literal("bad-response")])})]),go=e.object({}),ho=e.object({version:e.string(),cwd:e.string(),provider:e.string().optional(),model:e.string().optional(),attachedSessions:e.number().int().nonnegative(),canOpenPath:e.boolean()}),fo=e.object({}),vo=e.object({path:e.string().nullable()}),Bt=e.object({name:e.string(),path:e.string(),hidden:e.boolean()}),bo=e.object({path:e.string().optional()}),yo=e.object({path:e.string(),home:e.string(),crumbs:e.array(Bt),entries:e.array(Bt),truncated:e.boolean()}),wo=e.object({path:e.string(),name:e.string()}).refine(t=>t.name.trim()!==""&&t.name!=="."&&t.name!==".."&&!/[/\\]/.test(t.name),{message:"host.createDirectory requires a single non-blank path segment name"}),So=e.object({path:e.string()}),ko=e.object({path:e.string().min(1)}),Io=e.object({opened:e.literal(!0)}),te=e.object({workspaceId:O,path:e.string(),title:e.string(),sessionIds:e.array(k),createdAt:e.string(),updatedAt:e.string()}),jo=e.object({}),Po=e.object({items:e.array(te),archivedSessionIds:e.array(k)}),Eo=e.object({path:e.string()}),Ao=e.object({workspace:te,created:e.boolean()}),Ro=e.object({workspaceId:O,title:e.string()}).refine(t=>t.title.trim()!=="",{message:"workspace.rename requires a non-blank title"}),Mo=e.object({workspace:te}),Uo=e.object({workspaceId:O}),Co=e.object({deleted:e.literal(!0)}),Lo=e.object({workspaceId:O,beforeWorkspaceId:O.optional()}),To=e.object({workspaceIds:e.array(O)}),No=e.object({workspaceId:O,sessionId:k,beforeSessionId:k.optional()}),Do=e.object({workspace:te}),$o=e.object({sessionId:k}),Oo=e.object({archivedSessionIds:e.array(k)}),_o=e.object({name:e.string().min(1),description:e.string(),whenToUse:e.string().optional(),modelInvocable:e.boolean()}),Vo=e.object({sessionId:k}),Bo=e.object({skills:e.array(_o)}),Fo=e.object({id:e.string().min(1),trust:e.union([e.literal("system"),e.literal("user")]),isDefault:e.boolean(),name:e.string().optional(),description:e.string().optional(),broken:e.string().min(1).optional()}),zo=e.object({}),Qo=e.object({presets:e.array(Fo),authorable:e.boolean(),hasDocument:e.boolean()}),Wo=e.object({sessionId:k,agentPreset:e.string().min(1)}),Go=e.object({agentPreset:e.string()}),Ho=e.object({agentPreset:e.string().min(1)}),Zo=e.object({agentPreset:e.string(),trust:e.union([e.literal("system"),e.literal("user")]),content:e.string(),name:e.string().optional(),description:e.string().optional()}),xo=e.object({from:e.string().min(1),agentPreset:e.string().min(1),name:e.string().optional()}),Jo=e.object({agentPreset:e.string()}),Yo=e.object({agentPreset:e.string().min(1)}),Ko=e.union([e.object({opened:e.literal(!0)}),e.object({opened:e.literal(!1),path:e.string()})]),Xo=e.object({agentPreset:e.string().min(1)}),qo=e.object({}),Z=e.object({id:e.string(),revision:e.number().int().positive()}),se=e.object({ref:Z}),er=e.object({sessionId:e.string(),objective:e.string().min(1),maxGoalRounds:e.number().int().positive().optional()}),tr=se,sr=e.object({sessionId:e.string(),ref:Z,objective:e.string().min(1).optional(),maxGoalRounds:e.number().int().positive().optional()}).refine(t=>t.objective!==void 0||t.maxGoalRounds!==void 0,{message:"goal.edit requires objective or maxGoalRounds"}),nr=se,or=e.object({sessionId:e.string(),ref:Z}),rr=se,ar=e.object({sessionId:e.string(),ref:Z}),ir=se,cr=e.object({sessionId:e.string(),ref:Z}),dr=se,lr=e.object({sessionId:e.string(),ref:Z}),pr=e.object({cleared:e.literal(!0)}),ur=e.object({path:e.array(e.string()),set:e.boolean()}),fe=e.object({ns:e.string().min(1),schema:e.unknown(),value:e.unknown(),base:e.unknown().optional(),user:e.unknown().optional(),applies:e.union([e.literal("live"),e.literal("restart")]),secrets:e.array(ur),revision:e.number()}),mr=e.object({}),gr=e.object({writable:e.boolean(),hasDocument:e.boolean(),namespaces:e.array(fe)}),hr=e.object({}),fr=e.object({opened:e.literal(!0)}),vr=e.object({ns:e.string().min(1),patch:e.record(e.string(),e.unknown()),expectedRevision:e.number().optional()}),br=fe,yr=e.object({ns:e.string().min(1),section:e.record(e.string(),e.unknown()),expectedRevision:e.number().optional()}),wr=e.discriminatedUnion("op",[e.object({op:e.literal("set"),path:e.array(e.string()),value:e.unknown()}),e.object({op:e.literal("unset"),path:e.array(e.string())})]),Sr=e.object({ns:e.string().min(1),ops:e.array(wr),expectedRevision:e.number().optional()}),kr=fe,Ir=fe,Ce=e.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/),jr=e.object({configured:e.boolean(),source:e.string().optional(),writable:e.boolean()}),Pr=e.object({refs:e.array(Ce).max(64)}),Er=e.object({credentials:e.record(e.string(),jr)}),Ar=e.object({ref:Ce,value:e.string().min(1)}),Rr=e.object({}),Mr=e.object({ref:Ce}),Ur=e.object({}),Cr=e.object({provider:e.string().min(1),displayName:e.string().min(1),settingsNs:e.string(),settingsPath:e.array(e.string()),active:e.boolean(),declared:e.boolean().optional()}),Lr=e.object({}),Tr=e.object({providers:e.array(Cr)}),Nr=e.object({}),Dr=e.object({groups:e.array(qe),failures:e.array(et)}),$r=e.object({id:e.string().min(1),name:e.string().min(1).optional(),contextWindow:e.number().int().positive().optional(),maxTokens:e.number().int().positive().optional()}),Or=e.object({settingsNs:e.string().min(1),provider:e.string().min(1).optional(),baseURL:e.string().min(1).optional(),api:e.string().min(1).optional(),apiKey:e.string().min(1).optional()}),_r=e.object({models:e.array($r)}),Vr=e.union([e.object({kind:e.literal("child"),id:k,mode:e.literal("one-shot"),activity:e.union([e.literal("running"),e.literal("inactive")]),hasChildren:e.boolean(),label:e.string().optional()}),e.object({kind:e.literal("child"),id:k,mode:e.literal("continuable"),activity:e.union([e.literal("running"),e.literal("inactive")]),hasChildren:e.boolean(),label:e.string()}),e.object({kind:e.literal("diagnostic"),id:k,reason:e.union([e.literal("corrupt"),e.literal("unsupported"),e.literal("unavailable")])})]),Br=e.object({parentSessionId:k}),Fr=e.object({entries:e.array(Vr),parentAvailable:e.boolean()}),zr=e.object({parentSessionId:k,childSessionId:k,mode:e.union([e.literal("one-shot"),e.literal("continuable")]),beforeSeq:e.number().int().nonnegative().optional(),maxMessages:e.number().int().positive().optional()}),Qr=e.object({events:e.array(st),hasMore:e.boolean(),projections:Pe.optional()}),Wr=e.object({parentSessionId:k,childSessionId:k,mode:e.literal("continuable"),content:e.array(Ee),clientTimeZone:e.string().optional()}),Gr=e.object({parentSessionId:k,childSessionId:k,mode:e.literal("continuable")}),Hr=e.object({accepted:e.literal(!0)}),Zr=e.string(),xr=e.object({messageId:Zr}),Ft={"session.list":{schema:nn,invoke:a((t,s)=>t.sessions.list(s),"invoke")},"session.search":{schema:rn,invoke:a((t,s,i)=>t.sessions.search(s,i),"invoke")},"session.create":{schema:dn,invoke:a((t,s)=>t.sessions.create(s),"invoke")},"session.history":{schema:hn,invoke:a((t,s)=>t.sessions.history(s),"invoke")},"session.models":{schema:kn,invoke:a((t,s)=>t.sessions.models(s),"invoke")},"session.selectModel":{schema:jn,invoke:a((t,s)=>t.sessions.selectModel(s),"invoke")},"session.rename":{schema:pn,invoke:a((t,s)=>t.sessions.rename(s),"invoke")},"session.fork":{schema:mn,invoke:a((t,s)=>t.sessions.fork(s),"invoke")},"session.prompt":{schema:An,invoke:a((t,s)=>t.sessions.prompt(s),"invoke")},"session.attachment":{schema:Un,invoke:a((t,s)=>t.sessions.attachment(s),"invoke")},"session.updateQueue":{schema:Ln,invoke:a((t,s)=>t.sessions.updateQueue(s),"invoke")},"session.cancel":{schema:Nn,invoke:a((t,s)=>t.sessions.cancel(s),"invoke")},"subagent.list":{schema:Br,invoke:a((t,s,i)=>t.subagents.list(s,i),"invoke")},"subagent.history":{schema:zr,invoke:a((t,s,i)=>t.subagents.history(s,i),"invoke")},"subagent.prompt":{schema:Wr,invoke:a((t,s,i)=>t.subagents.prompt(s,i),"invoke")},"subagent.interrupt":{schema:Gr,invoke:a((t,s)=>t.subagents.interrupt(s),"invoke")},"host.describe":{schema:go,invoke:a((t,s)=>t.host.describe(s),"invoke")},"host.pickDirectory":{schema:fo,invoke:a((t,s,i)=>t.host.pickDirectory(s,i),"invoke")},"host.listDirectory":{schema:bo,invoke:a((t,s,i)=>t.host.listDirectory(s,i),"invoke")},"host.createDirectory":{schema:wo,invoke:a((t,s)=>t.host.createDirectory(s),"invoke")},"host.openPath":{schema:ko,invoke:a((t,s,i)=>t.host.openPath(s,i),"invoke")},"workspace.list":{schema:jo,invoke:a((t,s)=>t.workspace.list(s),"invoke")},"workspace.create":{schema:Eo,invoke:a((t,s)=>t.workspace.create(s),"invoke")},"workspace.rename":{schema:Ro,invoke:a((t,s)=>t.workspace.rename(s),"invoke")},"workspace.delete":{schema:Uo,invoke:a((t,s)=>t.workspace.delete(s),"invoke")},"workspace.insertBefore":{schema:Lo,invoke:a((t,s)=>t.workspace.insertBefore(s),"invoke")},"workspace.insertSessionBefore":{schema:No,invoke:a((t,s)=>t.workspace.insertSessionBefore(s),"invoke")},"workspace.archiveSession":{schema:$o,invoke:a((t,s)=>t.workspace.archiveSession(s),"invoke")},"skill.list":{schema:Vo,invoke:a((t,s)=>t.skills.list(s),"invoke")},"agentPreset.list":{schema:zo,invoke:a((t,s)=>t.agentPresets.list(s),"invoke")},"agentPreset.select":{schema:Wo,invoke:a((t,s)=>t.agentPresets.select(s),"invoke")},"agentPreset.read":{schema:Ho,invoke:a((t,s)=>t.agentPresets.read(s),"invoke")},"agentPreset.copy":{schema:xo,invoke:a((t,s)=>t.agentPresets.copy(s),"invoke")},"agentPreset.openDocument":{schema:Yo,invoke:a((t,s,i)=>t.agentPresets.openDocument(s,i),"invoke")},"agentPreset.remove":{schema:Xo,invoke:a((t,s)=>t.agentPresets.remove(s),"invoke")},"goal.create":{schema:er,invoke:a((t,s)=>t.goals.create(s),"invoke")},"goal.edit":{schema:sr,invoke:a((t,s)=>t.goals.edit(s),"invoke")},"goal.pause":{schema:or,invoke:a((t,s)=>t.goals.pause(s),"invoke")},"goal.resume":{schema:ar,invoke:a((t,s)=>t.goals.resume(s),"invoke")},"goal.complete":{schema:cr,invoke:a((t,s)=>t.goals.complete(s),"invoke")},"goal.clear":{schema:lr,invoke:a((t,s)=>t.goals.clear(s),"invoke")},"settings.describe":{schema:mr,invoke:a((t,s)=>t.settings.describe(s),"invoke")},"settings.openDocument":{schema:hr,invoke:a((t,s,i)=>t.settings.openDocument(s,i),"invoke")},"settings.update":{schema:vr,invoke:a((t,s)=>t.settings.update(s),"invoke")},"settings.replace":{schema:yr,invoke:a((t,s)=>t.settings.replace(s),"invoke")},"settings.mutate":{schema:Sr,invoke:a((t,s)=>t.settings.mutate(s),"invoke")},"credentials.describe":{schema:Pr,invoke:a((t,s)=>t.credentials.describe(s),"invoke")},"credentials.set":{schema:Ar,invoke:a((t,s)=>t.credentials.set(s),"invoke")},"credentials.unset":{schema:Mr,invoke:a((t,s)=>t.credentials.unset(s),"invoke")},"llm.providers":{schema:Lr,invoke:a((t,s)=>t.llm.providers(s),"invoke")},"llm.models":{schema:Nr,invoke:a((t,s)=>t.llm.models(s),"invoke")},"llm.discoverModels":{schema:Or,invoke:a((t,s,i)=>t.llm.discoverModels(s,i),"invoke")}};function Jr(t){return Object.hasOwn(Ft,t)?t:void 0}a(Jr,"methodFor");const Yr="invalid-request";function Le(t,s){const i={type:"server-response",rpcId:t,result:{ok:!1,error:s}};return Response.json(i)}a(Le,"errorResponse");function Kr(t){const s={type:"server-response",rpcId:t.rpcId,result:t.result};return Response.json(s)}a(Kr,"fullResponse");async function Xr(t,s,i,l){const m=Ft[s],b=m.schema.safeParse(i.payload);if(!b.success)return Le(i.rpcId,{code:"bad-request",message:`invalid payload for ${s}`,details:{issues:b.error.issues}});try{return Kr(await m.invoke(t,{rpcId:i.rpcId,payload:b.data},l))}catch(f){return new Response(`handler failure: ${String(f)}`,{status:500})}}a(Xr,"handleUnary");function zt(t){return{type:"server-request",rpcId:t.rpcId,method:t.payload.type,payload:t.payload}}a(zt,"fullFrame");function Qt(t){const s=new TextEncoder,i=new ReadableStream({async start(l){try{l.enqueue(s.encode(`: connected
3
3
 
4
4
  `));for await(const m of t)l.enqueue(s.encode(`data: ${JSON.stringify(zt(m))}
5
5
 
6
- `))}catch(m){const b={type:"stream/error",error:{code:"internal",message:String(m),details:{}}};try{l.enqueue(s.encode(`data: ${JSON.stringify(zt({rpcId:V(),payload:b}))}
6
+ `))}catch(m){const b={type:"stream/error",error:{code:"internal",message:String(m),details:{}}};try{l.enqueue(s.encode(`data: ${JSON.stringify(zt({rpcId:B(),payload:b}))}
7
7
 
8
- `))}catch{}}finally{try{l.close()}catch{}}}});return new Response(i,{headers:{"content-type":"text/event-stream","cache-control":"no-cache"}})}a(Qt,"sseResponse");function qr(t){return{async fetch(s,i){const l=s instanceof Request?s:new Request(s,i),m=new URL(l.url),b=m.pathname;if(b==="/api/events.mux"&&l.method==="GET")return Qt(t.events.mux({rpcId:V(),payload:{}},l.signal));if(b==="/api/events.host"&&l.method==="GET")return Qt(t.events.host({rpcId:V(),payload:{}},l.signal));if(b==="/api/session.export"&&(l.method==="GET"||l.method==="HEAD")){const R=uo.safeParse(Object.fromEntries(m.searchParams));if(!R.success)return new Response("missing or invalid sessionId query parameter",{status:400});const C=await t.downloads.sessionLog(R.data,l.signal);return l.method==="GET"?C:(await C.body?.cancel(),new Response(null,{status:C.status,headers:C.headers}))}if(l.method!=="POST"||!b.startsWith("/api/"))return new Response("not found",{status:404});if(l.headers.get("content-type")?.split(";",1)[0]?.trim().toLowerCase()!=="application/json")return new Response("content type must be application/json",{status:415});let f;try{f=await l.json()}catch{return new Response("body is not JSON",{status:400})}if(b==="/api/respond"){const R=Vt.safeParse(f);return R.success?Response.json(await t.respond(R.data)):Response.json({accepted:!1,reason:"bad-response"})}const w=Jr(b.slice(5));if(w===void 0)return new Response("not found",{status:404});const I=$t.safeParse(f);if(!I.success){const R=f?.rpcId;return Le(typeof R=="string"?R:Yr,{code:"bad-request",message:"invalid client-request message",details:{issues:I.error.issues}})}const A=I.data;return A.method!==w?Le(A.rpcId,{code:"bad-request",message:`method "${A.method}" does not match path "${w}"`,details:{issues:[]}}):Xr(t,w,A,l.signal)}}}a(qr,"toFetchHandler");const ea=e.string().min(1),ta=e.object({id:ea,kind:e.string().min(1),label:e.string().min(1),status:e.union([e.literal("running"),e.literal("stopping"),e.literal("completed"),e.literal("killed"),e.literal("failed")]),detail:e.string().optional(),startedAt:e.number().int().nonnegative(),finishedAt:e.number().int().nonnegative().optional()}),sa=e.object({id:e.string(),question:e.string(),header:e.string().optional(),detail:e.string().optional(),options:e.array(e.object({label:e.string(),description:e.string().optional()})).optional(),multiSelect:e.boolean().optional(),intent:e.discriminatedUnion("kind",[e.object({kind:e.literal("plan-review"),approve:e.string()})]).optional()}),na=e.object({id:e.string().min(1),role:e.union([e.literal("system"),e.literal("user"),e.literal("assistant")]),content:e.array(Ee),source:e.looseObject({kind:e.string()})}),oa=e.discriminatedUnion("type",[e.object({type:e.literal("session/event"),sessionId:k,event:Ke,view:tt.optional()}),e.object({type:e.literal("session/subscribed"),sessionId:k,lastSeq:e.number().int()}),e.object({type:e.literal("approval/requested"),sessionId:k,approvalId:Ae,toolName:e.string(),callId:e.string().optional(),reason:e.string().optional()}),e.object({type:e.literal("approval/resolved"),sessionId:k,approvalId:Ae,outcome:e.union([e.literal("allowed-once"),e.literal("rejected"),e.literal("cancelled"),e.literal("unavailable")])}),e.object({type:e.literal("question/requested"),sessionId:k,questions:e.array(sa).min(1)}),e.object({type:e.literal("question/resolved"),sessionId:k,questionRpcId:ee,outcome:e.union([e.literal("answered"),e.literal("cancelled")])}),e.object({type:e.literal("session/queue"),sessionId:k,items:e.array(e.object({id:Ye,placement:e.union([e.literal("queued"),e.literal("steering"),e.literal("context")]),message:na}))}),e.object({type:e.literal("session/jobs"),sessionId:k,jobs:e.array(ta)}),e.object({type:e.literal("session/projection"),sessionId:k,key:e.string().min(1),value:e.unknown(),seq:e.number().int().nonnegative()}),e.object({type:e.literal("stream/error"),error:Ue})]),ra=e.discriminatedUnion("type",[e.object({type:e.literal("host/session-added"),sessionId:k,blank:e.boolean(),parentSessionId:k.optional(),origin:e.literal("subagent").optional(),cwd:e.string().optional(),agentPreset:e.string().optional()}),e.object({type:e.literal("host/session-removed"),sessionId:k}),e.object({type:e.literal("host/session-status"),sessionId:k,running:e.boolean()}),e.object({type:e.literal("host/agent-error"),sessionId:k,message:e.string()}),e.object({type:e.literal("host/workspace-changed"),workspace:te}),e.object({type:e.literal("host/workspace-removed"),workspaceId:O}),e.object({type:e.literal("host/workspace-order-changed"),workspaceIds:e.array(O)}),e.object({type:e.literal("host/archived-sessions-changed"),archivedSessionIds:e.array(k)}),e.object({type:e.literal("host/remote-event"),event:e.string().min(1),args:e.array(e.unknown())}),e.object({type:e.literal("stream/error"),error:Ue})]),aa={"session.list":on,"session.search":cn,"session.create":ln,"session.history":Sn,"session.models":In,"session.selectModel":Pn,"session.rename":un,"session.fork":gn,"session.prompt":Rn,"session.attachment":Cn,"session.updateQueue":Tn,"session.cancel":Dn,"subagent.list":Fr,"subagent.history":Qr,"subagent.prompt":xr,"subagent.interrupt":Hr,"host.describe":ho,"host.pickDirectory":vo,"host.listDirectory":yo,"host.createDirectory":So,"host.openPath":Io,"workspace.list":Po,"workspace.create":Ao,"workspace.rename":Mo,"workspace.delete":Co,"workspace.insertBefore":To,"workspace.insertSessionBefore":Do,"workspace.archiveSession":Oo,"skill.list":Bo,"agentPreset.list":Qo,"agentPreset.select":Go,"agentPreset.read":Zo,"agentPreset.copy":Jo,"agentPreset.openDocument":Ko,"agentPreset.remove":qo,"goal.create":tr,"goal.edit":nr,"goal.pause":rr,"goal.resume":ir,"goal.complete":dr,"goal.clear":pr,"settings.describe":gr,"settings.openDocument":fr,"settings.update":br,"settings.replace":Ir,"settings.mutate":kr,"credentials.describe":Er,"credentials.set":Rr,"credentials.unset":Ur,"llm.providers":Tr,"llm.models":Dr,"llm.discoverModels":_r},ia=3e4,ca="http://dsh.internal";var Wt=class{static{a(this,"AbstractApiClient")}timeoutMs;envelopeBatch=[];flushScheduled=!1;envelopeListeners=new Set;constructor(t=ia){this.timeoutMs=t}subscribeEnvelopes(t){return this.envelopeListeners.add(t),()=>{this.envelopeListeners.delete(t)}}onEnvelope(t){this.envelopeListeners.size!==0&&(this.envelopeBatch.push(t),!this.flushScheduled&&(this.flushScheduled=!0,queueMicrotask(()=>{this.flushScheduled=!1;const s=this.envelopeBatch;this.envelopeBatch=[];for(const i of this.envelopeListeners)try{i(s)}catch(l){console.error("[apiproxy] envelope listener threw:",l)}})))}resolveBase(){const t=globalThis.location;return t?.origin!==void 0&&t.origin!=="null"?t.origin:ca}mintRpcId(){return crypto.randomUUID()}async postJson(t,s,i,l="default"){const m=l==="default"?i===void 0?AbortSignal.timeout(this.timeoutMs):AbortSignal.any([AbortSignal.timeout(this.timeoutMs),i]):i,b=await this.doFetch(new URL(t,this.resolveBase()),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(s),...m===void 0?{}:{signal:m}});if(!b.ok)throw new Error(`transport failure for ${t}: HTTP ${b.status}`);return b}async callUnary(t,s,i,l="default"){const m={type:"client-request",rpcId:this.mintRpcId(),method:t,payload:s};this.onEnvelope(m);const b=await this.postJson(`/api/${t}`,m,i,l),f=Ot.parse(await b.json());if(this.onEnvelope(f),f.rpcId!==m.rpcId)throw new Error(`rpcId mismatch for ${t}: sent ${m.rpcId}, got ${f.rpcId}`);if(!f.result.ok)return{rpcId:f.rpcId,result:f.result};const w=aa[t].parse(f.result.value);return{rpcId:f.rpcId,result:{ok:!0,value:w}}}openMux(t,s,i){return this.readSse("/api/events.mux",s,oa,i)}openHost(t,s,i){return this.readSse("/api/events.host",s,ra,i)}async*readSse(t,s,i,l){const m=await this.doFetch(new URL(t,this.resolveBase()),{signal:s});if(!m.ok||m.body===null)throw new Error(`transport failure for ${t}: HTTP ${m.status}`);l?.();const b=m.body.getReader(),f=new TextDecoder;let w="";try{for(;;){const{done:I,value:A}=await b.read();if(I)return;w+=f.decode(A,{stream:!0});let R;for(;(R=w.indexOf(`
8
+ `))}catch{}}finally{try{l.close()}catch{}}}});return new Response(i,{headers:{"content-type":"text/event-stream","cache-control":"no-cache"}})}a(Qt,"sseResponse");function qr(t){return{async fetch(s,i){const l=s instanceof Request?s:new Request(s,i),m=new URL(l.url),b=m.pathname;if(b==="/api/events.mux"&&l.method==="GET")return Qt(t.events.mux({rpcId:B(),payload:{}},l.signal));if(b==="/api/events.host"&&l.method==="GET")return Qt(t.events.host({rpcId:B(),payload:{}},l.signal));if(b==="/api/session.export"&&(l.method==="GET"||l.method==="HEAD")){const R=uo.safeParse(Object.fromEntries(m.searchParams));if(!R.success)return new Response("missing or invalid sessionId query parameter",{status:400});const C=await t.downloads.sessionLog(R.data,l.signal);return l.method==="GET"?C:(await C.body?.cancel(),new Response(null,{status:C.status,headers:C.headers}))}if(l.method!=="POST"||!b.startsWith("/api/"))return new Response("not found",{status:404});if(l.headers.get("content-type")?.split(";",1)[0]?.trim().toLowerCase()!=="application/json")return new Response("content type must be application/json",{status:415});let f;try{f=await l.json()}catch{return new Response("body is not JSON",{status:400})}if(b==="/api/respond"){const R=Vt.safeParse(f);return R.success?Response.json(await t.respond(R.data)):Response.json({accepted:!1,reason:"bad-response"})}const w=Jr(b.slice(5));if(w===void 0)return new Response("not found",{status:404});const I=$t.safeParse(f);if(!I.success){const R=f?.rpcId;return Le(typeof R=="string"?R:Yr,{code:"bad-request",message:"invalid client-request message",details:{issues:I.error.issues}})}const A=I.data;return A.method!==w?Le(A.rpcId,{code:"bad-request",message:`method "${A.method}" does not match path "${w}"`,details:{issues:[]}}):Xr(t,w,A,l.signal)}}}a(qr,"toFetchHandler");const ea=e.string().min(1),ta=e.object({id:ea,kind:e.string().min(1),label:e.string().min(1),status:e.union([e.literal("running"),e.literal("stopping"),e.literal("completed"),e.literal("killed"),e.literal("failed")]),detail:e.string().optional(),startedAt:e.number().int().nonnegative(),finishedAt:e.number().int().nonnegative().optional()}),sa=e.object({id:e.string(),question:e.string(),header:e.string().optional(),detail:e.string().optional(),options:e.array(e.object({label:e.string(),description:e.string().optional()})).optional(),multiSelect:e.boolean().optional(),intent:e.discriminatedUnion("kind",[e.object({kind:e.literal("plan-review"),approve:e.string()})]).optional()}),na=e.object({id:e.string().min(1),role:e.union([e.literal("system"),e.literal("user"),e.literal("assistant")]),content:e.array(Ee),source:e.looseObject({kind:e.string()})}),oa=e.discriminatedUnion("type",[e.object({type:e.literal("session/event"),sessionId:k,event:Ke,view:tt.optional()}),e.object({type:e.literal("session/subscribed"),sessionId:k,lastSeq:e.number().int()}),e.object({type:e.literal("approval/requested"),sessionId:k,approvalId:Ae,toolName:e.string(),callId:e.string().optional(),reason:e.string().optional()}),e.object({type:e.literal("approval/resolved"),sessionId:k,approvalId:Ae,outcome:e.union([e.literal("allowed-once"),e.literal("rejected"),e.literal("cancelled"),e.literal("unavailable")])}),e.object({type:e.literal("question/requested"),sessionId:k,questions:e.array(sa).min(1)}),e.object({type:e.literal("question/resolved"),sessionId:k,questionRpcId:ee,outcome:e.union([e.literal("answered"),e.literal("cancelled")])}),e.object({type:e.literal("session/queue"),sessionId:k,items:e.array(e.object({id:Ye,placement:e.union([e.literal("queued"),e.literal("steering"),e.literal("context")]),message:na}))}),e.object({type:e.literal("session/jobs"),sessionId:k,jobs:e.array(ta)}),e.object({type:e.literal("session/projection"),sessionId:k,key:e.string().min(1),value:e.unknown(),seq:e.number().int().nonnegative()}),e.object({type:e.literal("stream/error"),error:Ue})]),ra=e.discriminatedUnion("type",[e.object({type:e.literal("host/session-added"),sessionId:k,blank:e.boolean(),parentSessionId:k.optional(),origin:e.literal("subagent").optional(),cwd:e.string().optional(),agentPreset:e.string().optional()}),e.object({type:e.literal("host/session-removed"),sessionId:k}),e.object({type:e.literal("host/session-status"),sessionId:k,running:e.boolean()}),e.object({type:e.literal("host/agent-error"),sessionId:k,message:e.string()}),e.object({type:e.literal("host/workspace-changed"),workspace:te}),e.object({type:e.literal("host/workspace-removed"),workspaceId:O}),e.object({type:e.literal("host/workspace-order-changed"),workspaceIds:e.array(O)}),e.object({type:e.literal("host/archived-sessions-changed"),archivedSessionIds:e.array(k)}),e.object({type:e.literal("host/remote-event"),event:e.string().min(1),args:e.array(e.unknown())}),e.object({type:e.literal("stream/error"),error:Ue})]),aa={"session.list":on,"session.search":cn,"session.create":ln,"session.history":Sn,"session.models":In,"session.selectModel":Pn,"session.rename":un,"session.fork":gn,"session.prompt":Rn,"session.attachment":Cn,"session.updateQueue":Tn,"session.cancel":Dn,"subagent.list":Fr,"subagent.history":Qr,"subagent.prompt":xr,"subagent.interrupt":Hr,"host.describe":ho,"host.pickDirectory":vo,"host.listDirectory":yo,"host.createDirectory":So,"host.openPath":Io,"workspace.list":Po,"workspace.create":Ao,"workspace.rename":Mo,"workspace.delete":Co,"workspace.insertBefore":To,"workspace.insertSessionBefore":Do,"workspace.archiveSession":Oo,"skill.list":Bo,"agentPreset.list":Qo,"agentPreset.select":Go,"agentPreset.read":Zo,"agentPreset.copy":Jo,"agentPreset.openDocument":Ko,"agentPreset.remove":qo,"goal.create":tr,"goal.edit":nr,"goal.pause":rr,"goal.resume":ir,"goal.complete":dr,"goal.clear":pr,"settings.describe":gr,"settings.openDocument":fr,"settings.update":br,"settings.replace":Ir,"settings.mutate":kr,"credentials.describe":Er,"credentials.set":Rr,"credentials.unset":Ur,"llm.providers":Tr,"llm.models":Dr,"llm.discoverModels":_r},ia=3e4,ca="http://dsh.internal";var Wt=class{static{a(this,"AbstractApiClient")}timeoutMs;envelopeBatch=[];flushScheduled=!1;envelopeListeners=new Set;constructor(t=ia){this.timeoutMs=t}subscribeEnvelopes(t){return this.envelopeListeners.add(t),()=>{this.envelopeListeners.delete(t)}}onEnvelope(t){this.envelopeListeners.size!==0&&(this.envelopeBatch.push(t),!this.flushScheduled&&(this.flushScheduled=!0,queueMicrotask(()=>{this.flushScheduled=!1;const s=this.envelopeBatch;this.envelopeBatch=[];for(const i of this.envelopeListeners)try{i(s)}catch(l){console.error("[apiproxy] envelope listener threw:",l)}})))}resolveBase(){const t=globalThis.location;return t?.origin!==void 0&&t.origin!=="null"?t.origin:ca}mintRpcId(){return crypto.randomUUID()}async postJson(t,s,i,l="default"){const m=l==="default"?i===void 0?AbortSignal.timeout(this.timeoutMs):AbortSignal.any([AbortSignal.timeout(this.timeoutMs),i]):i,b=await this.doFetch(new URL(t,this.resolveBase()),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(s),...m===void 0?{}:{signal:m}});if(!b.ok)throw new Error(`transport failure for ${t}: HTTP ${b.status}`);return b}async callUnary(t,s,i,l="default"){const m={type:"client-request",rpcId:this.mintRpcId(),method:t,payload:s};this.onEnvelope(m);const b=await this.postJson(`/api/${t}`,m,i,l),f=Ot.parse(await b.json());if(this.onEnvelope(f),f.rpcId!==m.rpcId)throw new Error(`rpcId mismatch for ${t}: sent ${m.rpcId}, got ${f.rpcId}`);if(!f.result.ok)return{rpcId:f.rpcId,result:f.result};const w=aa[t].parse(f.result.value);return{rpcId:f.rpcId,result:{ok:!0,value:w}}}openMux(t,s,i){return this.readSse("/api/events.mux",s,oa,i)}openHost(t,s,i){return this.readSse("/api/events.host",s,ra,i)}async*readSse(t,s,i,l){const m=await this.doFetch(new URL(t,this.resolveBase()),{signal:s});if(!m.ok||m.body===null)throw new Error(`transport failure for ${t}: HTTP ${m.status}`);l?.();const b=m.body.getReader(),f=new TextDecoder;let w="";try{for(;;){const{done:I,value:A}=await b.read();if(I)return;w+=f.decode(A,{stream:!0});let R;for(;(R=w.indexOf(`
9
9
 
10
10
  `))!==-1;){const C=w.slice(0,R);w=w.slice(R+2);const M=C.split(`
11
11
  `).filter(N=>N.startsWith("data: ")).map(N=>N.slice(6)).join("");if(M==="")continue;let T,U;try{T=_t.parse(JSON.parse(M)),U=i.parse(T.payload)}catch(N){console.error(`[apiproxy] dropping malformed SSE frame on ${t}:`,N);continue}this.onEnvelope(T),yield{rpcId:T.rpcId,payload:U}}}}finally{await b.cancel().catch(()=>{})}}sessions={list:a((t,s)=>this.callUnary("session.list",t,s),"list"),search:a((t,s)=>this.callUnary("session.search",t,s),"search"),create:a((t,s)=>this.callUnary("session.create",t,s),"create"),history:a((t,s)=>this.callUnary("session.history",t,s),"history"),models:a((t,s)=>this.callUnary("session.models",t,s),"models"),selectModel:a((t,s)=>this.callUnary("session.selectModel",t,s),"selectModel"),rename:a((t,s)=>this.callUnary("session.rename",t,s),"rename"),fork:a((t,s)=>this.callUnary("session.fork",t,s),"fork"),prompt:a((t,s)=>this.callUnary("session.prompt",t,s),"prompt"),attachment:a((t,s)=>this.callUnary("session.attachment",t,s),"attachment"),updateQueue:a((t,s)=>this.callUnary("session.updateQueue",t,s),"updateQueue"),cancel:a((t,s)=>this.callUnary("session.cancel",t,s),"cancel")};subagents={list:a((t,s)=>this.callUnary("subagent.list",t,s),"list"),history:a((t,s)=>this.callUnary("subagent.history",t,s),"history"),prompt:a((t,s)=>this.callUnary("subagent.prompt",t,s),"prompt"),interrupt:a((t,s)=>this.callUnary("subagent.interrupt",t,s),"interrupt")};host={describe:a((t,s)=>this.callUnary("host.describe",t,s),"describe"),pickDirectory:a((t,s)=>this.callUnary("host.pickDirectory",t,s,"caller-signal-only"),"pickDirectory"),listDirectory:a((t,s)=>this.callUnary("host.listDirectory",t,s),"listDirectory"),createDirectory:a((t,s)=>this.callUnary("host.createDirectory",t,s),"createDirectory"),openPath:a((t,s)=>this.callUnary("host.openPath",t,s),"openPath")};workspace={list:a((t,s)=>this.callUnary("workspace.list",t,s),"list"),create:a((t,s)=>this.callUnary("workspace.create",t,s),"create"),rename:a((t,s)=>this.callUnary("workspace.rename",t,s),"rename"),delete:a((t,s)=>this.callUnary("workspace.delete",t,s),"delete"),insertBefore:a((t,s)=>this.callUnary("workspace.insertBefore",t,s),"insertBefore"),insertSessionBefore:a((t,s)=>this.callUnary("workspace.insertSessionBefore",t,s),"insertSessionBefore"),archiveSession:a((t,s)=>this.callUnary("workspace.archiveSession",t,s),"archiveSession")};skills={list:a((t,s)=>this.callUnary("skill.list",t,s),"list")};agentPresets={list:a((t,s)=>this.callUnary("agentPreset.list",t,s),"list"),select:a((t,s)=>this.callUnary("agentPreset.select",t,s),"select"),read:a((t,s)=>this.callUnary("agentPreset.read",t,s),"read"),copy:a((t,s)=>this.callUnary("agentPreset.copy",t,s),"copy"),openDocument:a((t,s)=>this.callUnary("agentPreset.openDocument",t,s),"openDocument"),remove:a((t,s)=>this.callUnary("agentPreset.remove",t,s),"remove")};goals={create:a((t,s)=>this.callUnary("goal.create",t,s),"create"),edit:a((t,s)=>this.callUnary("goal.edit",t,s),"edit"),pause:a((t,s)=>this.callUnary("goal.pause",t,s),"pause"),resume:a((t,s)=>this.callUnary("goal.resume",t,s),"resume"),complete:a((t,s)=>this.callUnary("goal.complete",t,s),"complete"),clear:a((t,s)=>this.callUnary("goal.clear",t,s),"clear")};settings={describe:a((t,s)=>this.callUnary("settings.describe",t,s),"describe"),openDocument:a((t,s)=>this.callUnary("settings.openDocument",t,s),"openDocument"),update:a((t,s)=>this.callUnary("settings.update",t,s),"update"),replace:a((t,s)=>this.callUnary("settings.replace",t,s),"replace"),mutate:a((t,s)=>this.callUnary("settings.mutate",t,s),"mutate")};credentials={describe:a((t,s)=>this.callUnary("credentials.describe",t,s),"describe"),set:a((t,s)=>this.callUnary("credentials.set",t,s),"set"),unset:a((t,s)=>this.callUnary("credentials.unset",t,s),"unset")};llm={providers:a((t,s)=>this.callUnary("llm.providers",t,s),"providers"),models:a((t,s)=>this.callUnary("llm.models",t,s),"models"),discoverModels:a((t,s)=>this.callUnary("llm.discoverModels",t,s),"discoverModels")};events={mux:a((t,s,i)=>this.openMux(t,s,i),"mux"),host:a((t,s,i)=>this.openHost(t,s,i),"host")};async respond(t,s){this.onEnvelope(t);const i=await this.postJson("/api/respond",t,s);return mo.parse(await i.json())}},da=class extends Wt{static{a(this,"InProcessApiClient")}handler;constructor(t,s){super(s),this.handler=t}doFetch(t,s){const i=s?.signal??void 0;return i===void 0?this.handler.fetch(t,s):i.aborted?Promise.reject(Gt(i)):new Promise((l,m)=>{const b=a(()=>{m(Gt(i))},"onAbort");i.addEventListener("abort",b,{once:!0}),this.handler.fetch(t,s).then(l,m).finally(()=>{i.removeEventListener("abort",b)})})}};function Gt(t){const s=t.reason;return s instanceof Error?s:typeof s=="string"?new Error(s):new Error("This operation was aborted")}a(Gt,"abortError");var Ht=class extends as{static{a(this,"ApiProxyService")}static inject=["agentDefaultModel","agents","attachments","directoryPicker","llm","sessions","subagents","sessionQuery","tools","userQuestions","workspaceRegistry"];static Config=ie.object({nativeOpen:ie.boolean(),sessionExportCompressionLevel:ie.number().step(1).min(0).max(9).default(6),coldBlankProbeMaxBytes:ie.natural().default(Yn)});sessions;subagents;workspace;host;goals;skills;agentPresets;settings;credentials;llm;events;downloads;respond;constructor(t,s){super(t,"apiProxy");const i=Nt(t,{defaultModelSelection:a(()=>t.agentDefaultModel.currentSelection(),"defaultModelSelection"),saveDefaultModelSelection:a(l=>t.agentDefaultModel.saveSelection(l),"saveDefaultModelSelection"),cwd:process.cwd(),...s.nativeOpen===void 0?{}:{canOpenPath:a(()=>s.nativeOpen,"canOpenPath")},...s.sessionExportCompressionLevel===void 0?{}:{sessionExportCompressionLevel:s.sessionExportCompressionLevel},...s.coldBlankProbeMaxBytes===void 0?{}:{coldBlankProbeMaxBytes:s.coldBlankProbeMaxBytes}});this.sessions=i.sessions,this.subagents=i.subagents,this.workspace=i.workspace,this.host=i.host,this.goals=i.goals,this.skills=i.skills,this.agentPresets=i.agentPresets,this.settings=i.settings,this.credentials=i.credentials,this.llm=i.llm,this.events=i.events,this.downloads=i.downloads,this.respond=i.respond.bind(i)}};export{Wt as AbstractApiClient,Ht as ApiProxyService,Ht as default,da as InProcessApiClient,Vn as RpcId,Nt as createApiProxy,qr as toFetchHandler};
@@ -1 +1 @@
1
- {"name":"@deepseek-ai/dsh-host-apiproxy","version":"0.0.11","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json","./api":{"types":"./lib/types/api/index.d.ts","default":"./lib/types/api/index.js"},"./api/*":{"types":"./lib/types/api/*.d.ts","default":"./lib/types/api/*.js"},"./client":{"types":"./lib/types/fetch/client.d.ts","default":"./lib/types/fetch/client.js"}},"license":"MIT","dependencies":{"fflate":"^0.8.2","zod":"^4.4.3","@deepseek-ai/dsh-attachment":"^0.0.11","@deepseek-ai/dsh-agent-default-model":"^0.0.11","@deepseek-ai/dsh-agent":"^0.0.11","@deepseek-ai/dsh-api-remotes":"^0.0.11","@deepseek-ai/dsh-commands":"^0.0.11","@deepseek-ai/dsh-brand":"^0.0.11","@deepseek-ai/dsh-credentials":"^0.0.11","@deepseek-ai/dsh-goal":"^0.0.11","@deepseek-ai/dsh-host-directory-picker":"^0.0.11","@deepseek-ai/dsh-llm":"^0.0.11","@deepseek-ai/dsh-session":"^0.0.11","@deepseek-ai/dsh-session-persistence":"^0.0.11","@deepseek-ai/dsh-session-projection":"^0.0.11","@deepseek-ai/dsh-native-command":"^0.0.11","@deepseek-ai/dsh-session-query":"^0.0.11","@deepseek-ai/dsh-session-title":"^0.0.11","@deepseek-ai/dsh-settings":"^0.0.11","@deepseek-ai/dsh-session-projection-cache":"^0.0.11","@deepseek-ai/dsh-skill":"^0.0.11","@deepseek-ai/dsh-subagent":"^0.0.11","@deepseek-ai/dsh-tools":"^0.0.11","@deepseek-ai/dsh-jobs":"^0.0.11","@deepseek-ai/dsh-user-approval":"^0.0.11","@deepseek-ai/dsh-user-questions":"^0.0.11","@deepseek-ai/dsh-workspace":"^0.0.11","@deepseek-ai/schemastery":"^3.18.1"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-cordis-host-runner":"^0.0.11","@deepseek-ai/dsh-invariants":"^0.0.11","@deepseek-ai/dsh-agent-presets":"^0.0.11"}}
1
+ {"name":"@deepseek-ai/dsh-host-apiproxy","version":"0.0.12","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json","./api":{"types":"./lib/types/api/index.d.ts","default":"./lib/types/api/index.js"},"./api/*":{"types":"./lib/types/api/*.d.ts","default":"./lib/types/api/*.js"},"./client":{"types":"./lib/types/fetch/client.d.ts","default":"./lib/types/fetch/client.js"}},"license":"MIT","dependencies":{"fflate":"^0.8.2","zod":"^4.4.3","@deepseek-ai/dsh-attachment":"^0.0.12","@deepseek-ai/dsh-agent-default-model":"^0.0.12","@deepseek-ai/dsh-brand":"^0.0.12","@deepseek-ai/dsh-commands":"^0.0.12","@deepseek-ai/dsh-agent":"^0.0.12","@deepseek-ai/dsh-goal":"^0.0.12","@deepseek-ai/dsh-credentials":"^0.0.12","@deepseek-ai/dsh-host-directory-picker":"^0.0.12","@deepseek-ai/dsh-native-command":"^0.0.12","@deepseek-ai/dsh-llm":"^0.0.12","@deepseek-ai/dsh-session-projection-cache":"^0.0.12","@deepseek-ai/dsh-api-remotes":"^0.0.12","@deepseek-ai/dsh-session-projection":"^0.0.12","@deepseek-ai/dsh-session":"^0.0.12","@deepseek-ai/dsh-session-title":"^0.0.12","@deepseek-ai/dsh-session-persistence":"^0.0.12","@deepseek-ai/dsh-session-query":"^0.0.12","@deepseek-ai/dsh-settings":"^0.0.12","@deepseek-ai/dsh-skill":"^0.0.12","@deepseek-ai/dsh-jobs":"^0.0.12","@deepseek-ai/dsh-tools":"^0.0.12","@deepseek-ai/dsh-subagent":"^0.0.12","@deepseek-ai/dsh-user-approval":"^0.0.12","@deepseek-ai/dsh-user-questions":"^0.0.12","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-workspace":"^0.0.12"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-cordis-host-runner":"^0.0.12","@deepseek-ai/dsh-agent-presets":"^0.0.12","@deepseek-ai/dsh-invariants":"^0.0.12"}}
@@ -1 +1 @@
1
- {"name":"@deepseek-ai/dsh-host-directory-picker","version":"0.0.11","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-invariants":"^0.0.11","@deepseek-ai/cordis":"^4.0.1"}}
1
+ {"name":"@deepseek-ai/dsh-host-directory-picker","version":"0.0.12","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-invariants":"^0.0.12","@deepseek-ai/cordis":"^4.0.1"}}
@@ -1 +1 @@
1
- {"name":"@deepseek-ai/dsh-host-directory-picker-auto","version":"0.0.11","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/cordis-plugin-loader":"^1.0.2","@deepseek-ai/dsh-client-ui-directory-picker-browse":"^0.0.11","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-host-directory-picker-browse":"^0.0.11","@deepseek-ai/dsh-client-ui-directory-picker-native":"^0.0.11","@deepseek-ai/dsh-host-webserver":"^0.0.11","@deepseek-ai/dsh-host-directory-picker-native":"^0.0.11","@deepseek-ai/dsh-invariants":"^0.0.11"}}
1
+ {"name":"@deepseek-ai/dsh-host-directory-picker-auto","version":"0.0.12","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/cordis-plugin-loader":"^1.0.2","@deepseek-ai/dsh-client-ui-directory-picker-browse":"^0.0.12","@deepseek-ai/dsh-host-directory-picker-native":"^0.0.12","@deepseek-ai/dsh-host-webserver":"^0.0.12","@deepseek-ai/dsh-host-directory-picker-browse":"^0.0.12","@deepseek-ai/dsh-client-ui-directory-picker-native":"^0.0.12","@deepseek-ai/dsh-invariants":"^0.0.12"}}
@@ -1 +1 @@
1
- {"name":"@deepseek-ai/dsh-host-directory-picker-browse","version":"0.0.11","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","dependencies":{"@deepseek-ai/dsh-host-directory-picker":"^0.0.11","@deepseek-ai/schemastery":"^3.18.1"},"peerDependencies":{"@deepseek-ai/dsh-invariants":"^0.0.11","@deepseek-ai/cordis":"^4.0.1"}}
1
+ {"name":"@deepseek-ai/dsh-host-directory-picker-browse","version":"0.0.12","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","dependencies":{"@deepseek-ai/dsh-host-directory-picker":"^0.0.12","@deepseek-ai/schemastery":"^3.18.1"},"peerDependencies":{"@deepseek-ai/dsh-invariants":"^0.0.12","@deepseek-ai/cordis":"^4.0.1"}}
@@ -214,19 +214,21 @@ const post = (message) => {
214
214
  process.on("disconnect", () => process.exit(0));
215
215
  (async () => {
216
216
  try {
217
+ const path = runFolderDialog(await loadWin32DialogBindings(), title, (threadId) => {
218
+ post({
219
+ kind: "showing",
220
+ threadId
221
+ });
222
+ });
217
223
  post({
218
224
  kind: "done",
219
- path: runFolderDialog(await loadWin32DialogBindings(), title, (threadId) => {
220
- post({
221
- kind: "showing",
222
- threadId
223
- });
224
- })
225
+ path
225
226
  });
226
227
  } catch (error) {
228
+ const message = error instanceof Error ? error.stack ?? error.message : String(error);
227
229
  post({
228
230
  kind: "error",
229
- message: error instanceof Error ? error.stack ?? error.message : String(error)
231
+ message
230
232
  });
231
233
  }
232
234
  })();