@qqbrowser/qbot-dsh 0.1.5 → 0.1.7

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