@qqbrowser/qbot-dsh 0.0.11 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. package/lib/bin.js +1 -1
  2. package/lib/{dump-config-BD79jvHi.js → dump-config-xQTUTTDD.js} +1 -1
  3. package/lib/{plugin-B3Ecl7VN.js → plugin-DNAeLZbb.js} +1 -1
  4. package/lib/profile-boot-BkordgJK.js +1 -0
  5. package/node_modules/@deepseek-ai/cordis-plugin-hmr/lib/index.js +2 -2
  6. package/node_modules/@deepseek-ai/dsh-agent/lib/index.js +1 -1
  7. package/node_modules/@deepseek-ai/dsh-agent/package.json +1 -1
  8. package/node_modules/@deepseek-ai/dsh-agent-default-model/package.json +1 -1
  9. package/node_modules/@deepseek-ai/dsh-agent-instructions/lib/index.js +3 -3
  10. package/node_modules/@deepseek-ai/dsh-agent-instructions/package.json +1 -1
  11. package/node_modules/@deepseek-ai/dsh-agent-loop/package.json +1 -1
  12. package/node_modules/@deepseek-ai/dsh-agent-presets/package.json +1 -1
  13. package/node_modules/@deepseek-ai/dsh-agent-tool-presentation/package.json +1 -1
  14. package/node_modules/@deepseek-ai/dsh-anonymous-user-id/package.json +1 -1
  15. package/node_modules/@deepseek-ai/dsh-api-gateway/package.json +1 -1
  16. package/node_modules/@deepseek-ai/dsh-api-remotes/lib/client.js +2 -2
  17. package/node_modules/@deepseek-ai/dsh-api-remotes/package.json +1 -1
  18. package/node_modules/@deepseek-ai/dsh-app-boot/lib/index.js +12 -12
  19. package/node_modules/@deepseek-ai/dsh-app-boot/package.json +1 -1
  20. package/node_modules/@deepseek-ai/dsh-atomic-write/package.json +1 -1
  21. package/node_modules/@deepseek-ai/dsh-attachment/package.json +1 -1
  22. package/node_modules/@deepseek-ai/dsh-attachment-local/lib/index.js +1 -1
  23. package/node_modules/@deepseek-ai/dsh-attachment-local/package.json +1 -1
  24. package/node_modules/@deepseek-ai/dsh-base/cordis.patch.yml +3 -3
  25. package/node_modules/@deepseek-ai/dsh-base/package.json +1 -1
  26. package/node_modules/@deepseek-ai/dsh-bash-local/lib/index.js +1 -1
  27. package/node_modules/@deepseek-ai/dsh-bash-local/package.json +1 -1
  28. package/node_modules/@deepseek-ai/dsh-bash-sandbox/package.json +1 -1
  29. package/node_modules/@deepseek-ai/dsh-brand/package.json +1 -1
  30. package/node_modules/@deepseek-ai/dsh-client-connection/lib/client.js +6 -6
  31. package/node_modules/@deepseek-ai/dsh-client-connection/lib/index.js +2 -2
  32. package/node_modules/@deepseek-ai/dsh-client-connection/package.json +1 -1
  33. package/node_modules/@deepseek-ai/dsh-client-hmr/lib/client.js +1 -1
  34. package/node_modules/@deepseek-ai/dsh-client-hmr/package.json +1 -1
  35. package/node_modules/@deepseek-ai/dsh-client-locale/lib/client.js +1 -1
  36. package/node_modules/@deepseek-ai/dsh-client-locale/package.json +1 -1
  37. package/node_modules/@deepseek-ai/dsh-client-modules/package.json +1 -1
  38. package/node_modules/@deepseek-ai/dsh-client-runtime/lib/client.js +2 -2
  39. package/node_modules/@deepseek-ai/dsh-client-runtime/package.json +1 -1
  40. package/node_modules/@deepseek-ai/dsh-client-schema-form/package.json +1 -1
  41. package/node_modules/@deepseek-ai/dsh-client-ui-agent-preset/lib/client.js +1 -1
  42. package/node_modules/@deepseek-ai/dsh-client-ui-agent-preset/package.json +1 -1
  43. package/node_modules/@deepseek-ai/dsh-client-ui-attachment/package.json +1 -1
  44. package/node_modules/@deepseek-ai/dsh-client-ui-commands/lib/client.js +1 -1
  45. package/node_modules/@deepseek-ai/dsh-client-ui-commands/package.json +1 -1
  46. package/node_modules/@deepseek-ai/dsh-client-ui-conversation/lib/client.js +6 -6
  47. package/node_modules/@deepseek-ai/dsh-client-ui-conversation/package.json +1 -1
  48. package/node_modules/@deepseek-ai/dsh-client-ui-cordis/lib/client.js +1 -1
  49. package/node_modules/@deepseek-ai/dsh-client-ui-cordis/package.json +1 -1
  50. package/node_modules/@deepseek-ai/dsh-client-ui-deliverables/lib/client.js +1 -1
  51. package/node_modules/@deepseek-ai/dsh-client-ui-deliverables/package.json +1 -1
  52. package/node_modules/@deepseek-ai/dsh-client-ui-directory-picker-browse/lib/client.js +1 -1
  53. package/node_modules/@deepseek-ai/dsh-client-ui-directory-picker-browse/package.json +1 -1
  54. package/node_modules/@deepseek-ai/dsh-client-ui-directory-picker-native/package.json +1 -1
  55. package/node_modules/@deepseek-ai/dsh-client-ui-goal/lib/client.js +1 -1
  56. package/node_modules/@deepseek-ai/dsh-client-ui-goal/package.json +1 -1
  57. package/node_modules/@deepseek-ai/dsh-client-ui-input-trigger/lib/client.js +1 -1
  58. package/node_modules/@deepseek-ai/dsh-client-ui-input-trigger/package.json +1 -1
  59. package/node_modules/@deepseek-ai/dsh-client-ui-jobs/lib/client.js +1 -1
  60. package/node_modules/@deepseek-ai/dsh-client-ui-jobs/package.json +1 -1
  61. package/node_modules/@deepseek-ai/dsh-client-ui-layout/lib/client.js +1 -1
  62. package/node_modules/@deepseek-ai/dsh-client-ui-layout/package.json +1 -1
  63. package/node_modules/@deepseek-ai/dsh-client-ui-message-feedback/lib/client.js +1 -1
  64. package/node_modules/@deepseek-ai/dsh-client-ui-message-feedback/package.json +1 -1
  65. package/node_modules/@deepseek-ai/dsh-client-ui-model-selection/lib/client.js +1 -1
  66. package/node_modules/@deepseek-ai/dsh-client-ui-model-selection/package.json +1 -1
  67. package/node_modules/@deepseek-ai/dsh-client-ui-permission-presets/lib/client.js +1 -1
  68. package/node_modules/@deepseek-ai/dsh-client-ui-permission-presets/package.json +1 -1
  69. package/node_modules/@deepseek-ai/dsh-client-ui-plan/lib/client.js +1 -1
  70. package/node_modules/@deepseek-ai/dsh-client-ui-plan/package.json +1 -1
  71. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/lib/index.js +11 -11
  72. package/node_modules/@deepseek-ai/dsh-client-ui-primitives/package.json +1 -1
  73. package/node_modules/@deepseek-ai/dsh-client-ui-settings/package.json +1 -1
  74. package/node_modules/@deepseek-ai/dsh-client-ui-settings-general/lib/client.js +1 -1
  75. package/node_modules/@deepseek-ai/dsh-client-ui-settings-general/package.json +1 -1
  76. package/node_modules/@deepseek-ai/dsh-client-ui-settings-models/lib/client.js +1 -1
  77. package/node_modules/@deepseek-ai/dsh-client-ui-settings-models/package.json +1 -1
  78. package/node_modules/@deepseek-ai/dsh-client-ui-settings-plugin-inventory/lib/client.js +1 -1
  79. package/node_modules/@deepseek-ai/dsh-client-ui-settings-plugin-inventory/package.json +1 -1
  80. package/node_modules/@deepseek-ai/dsh-client-ui-settings-plugins/lib/client.js +1 -1
  81. package/node_modules/@deepseek-ai/dsh-client-ui-settings-plugins/package.json +1 -1
  82. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar/lib/client.js +1 -1
  83. package/node_modules/@deepseek-ai/dsh-client-ui-sidebar/package.json +1 -1
  84. package/node_modules/@deepseek-ai/dsh-client-ui-skill/lib/client.js +1 -1
  85. package/node_modules/@deepseek-ai/dsh-client-ui-skill/package.json +1 -1
  86. package/node_modules/@deepseek-ai/dsh-client-ui-slots/lib/index.js +1 -1
  87. package/node_modules/@deepseek-ai/dsh-client-ui-slots/package.json +1 -1
  88. package/node_modules/@deepseek-ai/dsh-client-ui-subagent/lib/client.js +1 -1
  89. package/node_modules/@deepseek-ai/dsh-client-ui-subagent/package.json +1 -1
  90. package/node_modules/@deepseek-ai/dsh-client-ui-theme/lib/client.js +1 -1
  91. package/node_modules/@deepseek-ai/dsh-client-ui-theme/package.json +1 -1
  92. package/node_modules/@deepseek-ai/dsh-client-ui-tool/lib/client.js +1 -1
  93. package/node_modules/@deepseek-ai/dsh-client-ui-tool/package.json +1 -1
  94. package/node_modules/@deepseek-ai/dsh-client-ui-trajectory/lib/client.js +13 -13
  95. package/node_modules/@deepseek-ai/dsh-client-ui-trajectory/package.json +1 -1
  96. package/node_modules/@deepseek-ai/dsh-client-ui-user-questions/lib/client.js +1 -1
  97. package/node_modules/@deepseek-ai/dsh-client-ui-user-questions/package.json +1 -1
  98. package/node_modules/@deepseek-ai/dsh-client-ui-workflow-run/lib/client.js +1 -1
  99. package/node_modules/@deepseek-ai/dsh-client-ui-workflow-run/package.json +1 -1
  100. package/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/client.js +1 -1
  101. package/node_modules/@deepseek-ai/dsh-client-ui-workspace/package.json +1 -1
  102. package/node_modules/@deepseek-ai/dsh-client-web/package.json +1 -1
  103. package/node_modules/@deepseek-ai/dsh-client-web-react/lib/index.js +1 -1
  104. package/node_modules/@deepseek-ai/dsh-client-web-react/package.json +1 -1
  105. package/node_modules/@deepseek-ai/dsh-cmdline/package.json +1 -1
  106. package/node_modules/@deepseek-ai/dsh-code-runtime/package.json +1 -1
  107. package/node_modules/@deepseek-ai/dsh-code-runtime-worker-thread/lib/index.js +2 -2
  108. package/node_modules/@deepseek-ai/dsh-code-runtime-worker-thread/lib/worker.cjs +4 -2
  109. package/node_modules/@deepseek-ai/dsh-code-runtime-worker-thread/package.json +1 -1
  110. package/node_modules/@deepseek-ai/dsh-command-compact/package.json +1 -1
  111. package/node_modules/@deepseek-ai/dsh-command-feedback/package.json +1 -1
  112. package/node_modules/@deepseek-ai/dsh-command-goal/package.json +1 -1
  113. package/node_modules/@deepseek-ai/dsh-commands/package.json +1 -1
  114. package/node_modules/@deepseek-ai/dsh-compaction/package.json +1 -1
  115. package/node_modules/@deepseek-ai/dsh-compaction-basic/lib/index.js +1 -1
  116. package/node_modules/@deepseek-ai/dsh-compaction-basic/package.json +1 -1
  117. package/node_modules/@deepseek-ai/dsh-compaction-tool-result-pruner/package.json +1 -1
  118. package/node_modules/@deepseek-ai/dsh-content-review/package.json +1 -1
  119. package/node_modules/@deepseek-ai/dsh-cordis-client-runner/lib/client.js +7 -7
  120. package/node_modules/@deepseek-ai/dsh-cordis-client-runner/package.json +1 -1
  121. package/node_modules/@deepseek-ai/dsh-cordis-host-runner/package.json +1 -1
  122. package/node_modules/@deepseek-ai/dsh-credentials/package.json +1 -1
  123. package/node_modules/@deepseek-ai/dsh-credentials-local/package.json +1 -1
  124. package/node_modules/@deepseek-ai/dsh-fs/package.json +1 -1
  125. package/node_modules/@deepseek-ai/dsh-fs-local/lib/index.js +4 -4
  126. package/node_modules/@deepseek-ai/dsh-fs-local/package.json +1 -1
  127. package/node_modules/@deepseek-ai/dsh-fs-observation-policy/package.json +1 -1
  128. package/node_modules/@deepseek-ai/dsh-fs-sandbox/package.json +1 -1
  129. package/node_modules/@deepseek-ai/dsh-goal/package.json +1 -1
  130. package/node_modules/@deepseek-ai/dsh-goal-round-driver/package.json +1 -1
  131. package/node_modules/@deepseek-ai/dsh-headless/package.json +1 -1
  132. package/node_modules/@deepseek-ai/dsh-home-paths/lib/index.js +1 -1
  133. package/node_modules/@deepseek-ai/dsh-home-paths/package.json +1 -1
  134. package/node_modules/@deepseek-ai/dsh-home-quarantine-macos/lib/index.js +1 -1
  135. package/node_modules/@deepseek-ai/dsh-home-quarantine-macos/package.json +1 -1
  136. package/node_modules/@deepseek-ai/dsh-host-apiproxy/lib/index.js +4 -4
  137. package/node_modules/@deepseek-ai/dsh-host-apiproxy/package.json +1 -1
  138. package/node_modules/@deepseek-ai/dsh-host-directory-picker/package.json +1 -1
  139. package/node_modules/@deepseek-ai/dsh-host-directory-picker-auto/package.json +1 -1
  140. package/node_modules/@deepseek-ai/dsh-host-directory-picker-browse/package.json +1 -1
  141. package/node_modules/@deepseek-ai/dsh-host-directory-picker-native/lib/worker.cjs +9 -7
  142. package/node_modules/@deepseek-ai/dsh-host-directory-picker-native/package.json +1 -1
  143. package/node_modules/@deepseek-ai/dsh-host-frontend-static/package.json +1 -1
  144. package/node_modules/@deepseek-ai/dsh-host-plugin-inventory/package.json +1 -1
  145. package/node_modules/@deepseek-ai/dsh-host-webserver/package.json +1 -1
  146. package/node_modules/@deepseek-ai/dsh-invariants/package.json +1 -1
  147. package/node_modules/@deepseek-ai/dsh-jobs/package.json +1 -1
  148. package/node_modules/@deepseek-ai/dsh-jobs-local/package.json +1 -1
  149. package/node_modules/@deepseek-ai/dsh-launch-environment/package.json +1 -1
  150. package/node_modules/@deepseek-ai/dsh-llm/lib/invariant.js +1 -1
  151. package/node_modules/@deepseek-ai/dsh-llm/package.json +1 -1
  152. package/node_modules/@deepseek-ai/dsh-llm-deepseek/lib/index.js +1 -1
  153. package/node_modules/@deepseek-ai/dsh-llm-deepseek/package.json +1 -1
  154. package/node_modules/@deepseek-ai/dsh-llm-gateway-openai/lib/index.js +1 -1
  155. package/node_modules/@deepseek-ai/dsh-llm-gateway-openai/package.json +1 -1
  156. package/node_modules/@deepseek-ai/dsh-llm-pi-ai/lib/index.js +1 -1
  157. package/node_modules/@deepseek-ai/dsh-llm-pi-ai/package.json +1 -1
  158. package/node_modules/@deepseek-ai/dsh-llm-retry/package.json +1 -1
  159. package/node_modules/@deepseek-ai/dsh-mcp-client/lib/index.js +2 -2
  160. package/node_modules/@deepseek-ai/dsh-mcp-client/package.json +1 -1
  161. package/node_modules/@deepseek-ai/dsh-message-feedback/package.json +1 -1
  162. package/node_modules/@deepseek-ai/dsh-native-command/package.json +1 -1
  163. package/node_modules/@deepseek-ai/dsh-output-retention/lib/index.js +1 -1
  164. package/node_modules/@deepseek-ai/dsh-output-retention/package.json +1 -1
  165. package/node_modules/@deepseek-ai/dsh-permission-presets/lib/index.js +1 -1
  166. package/node_modules/@deepseek-ai/dsh-permission-presets/package.json +1 -1
  167. package/node_modules/@deepseek-ai/dsh-persona/package.json +1 -1
  168. package/node_modules/@deepseek-ai/dsh-plan-mode/package.json +1 -1
  169. package/node_modules/@deepseek-ai/dsh-pwsh-local/lib/index.js +1 -1
  170. package/node_modules/@deepseek-ai/dsh-pwsh-local/package.json +1 -1
  171. package/node_modules/@deepseek-ai/dsh-pwsh-sandbox/package.json +1 -1
  172. package/node_modules/@deepseek-ai/dsh-qb-auth/lib/index.js +3 -3
  173. package/node_modules/@deepseek-ai/dsh-qb-auth/package.json +1 -1
  174. package/node_modules/@deepseek-ai/dsh-repeat-tool-reminder/package.json +1 -1
  175. package/node_modules/@deepseek-ai/dsh-sandbox/package.json +1 -1
  176. package/node_modules/@deepseek-ai/dsh-sandbox-local/package.json +1 -1
  177. package/node_modules/@deepseek-ai/dsh-sandbox-policy/package.json +1 -1
  178. package/node_modules/@deepseek-ai/dsh-sandbox-windows-acl/lib/index.js +1 -1
  179. package/node_modules/@deepseek-ai/dsh-sandbox-windows-acl/lib/runner.js +1 -1
  180. package/node_modules/@deepseek-ai/dsh-sandbox-windows-acl/lib/types-D2_FQYSK.js +1 -0
  181. package/node_modules/@deepseek-ai/dsh-sandbox-windows-acl/package.json +1 -1
  182. package/node_modules/@deepseek-ai/dsh-schedule/lib/index.js +1 -1
  183. package/node_modules/@deepseek-ai/dsh-schedule/package.json +1 -1
  184. package/node_modules/@deepseek-ai/dsh-scope/package.json +1 -1
  185. package/node_modules/@deepseek-ai/dsh-session/lib/index.js +1 -1
  186. package/node_modules/@deepseek-ai/dsh-session/lib/invariant.js +1 -1
  187. package/node_modules/@deepseek-ai/dsh-session/package.json +1 -1
  188. package/node_modules/@deepseek-ai/dsh-session-checkpoint-policy/package.json +1 -1
  189. package/node_modules/@deepseek-ai/dsh-session-log-export/lib/client.js +1 -1
  190. package/node_modules/@deepseek-ai/dsh-session-log-export/package.json +1 -1
  191. package/node_modules/@deepseek-ai/dsh-session-persistence/lib/index.js +1 -1
  192. package/node_modules/@deepseek-ai/dsh-session-persistence/package.json +1 -1
  193. package/node_modules/@deepseek-ai/dsh-session-persistence-jsonl/lib/index.js +1 -1
  194. package/node_modules/@deepseek-ai/dsh-session-persistence-jsonl/package.json +1 -1
  195. package/node_modules/@deepseek-ai/dsh-session-projection/package.json +1 -1
  196. package/node_modules/@deepseek-ai/dsh-session-projection-cache/package.json +1 -1
  197. package/node_modules/@deepseek-ai/dsh-session-query/package.json +1 -1
  198. package/node_modules/@deepseek-ai/dsh-session-query-sqlite/package.json +1 -1
  199. package/node_modules/@deepseek-ai/dsh-session-reference/lib/index.js +4 -4
  200. package/node_modules/@deepseek-ai/dsh-session-reference/package.json +1 -1
  201. package/node_modules/@deepseek-ai/dsh-session-stats/package.json +1 -1
  202. package/node_modules/@deepseek-ai/dsh-session-telemetry/package.json +1 -1
  203. package/node_modules/@deepseek-ai/dsh-session-telemetry-otel/package.json +1 -1
  204. package/node_modules/@deepseek-ai/dsh-session-title/lib/index.js +2 -2
  205. package/node_modules/@deepseek-ai/dsh-session-title/package.json +1 -1
  206. package/node_modules/@deepseek-ai/dsh-session-title-first-prompt-llm/package.json +1 -1
  207. package/node_modules/@deepseek-ai/dsh-session-title-llm/lib/index.js +3 -3
  208. package/node_modules/@deepseek-ai/dsh-session-title-llm/package.json +1 -1
  209. package/node_modules/@deepseek-ai/dsh-settings/lib/invariant.js +1 -1
  210. package/node_modules/@deepseek-ai/dsh-settings/package.json +1 -1
  211. package/node_modules/@deepseek-ai/dsh-settings-file/package.json +1 -1
  212. package/node_modules/@deepseek-ai/dsh-shell/package.json +1 -1
  213. package/node_modules/@deepseek-ai/dsh-shell-env/package.json +1 -1
  214. package/node_modules/@deepseek-ai/dsh-skill/package.json +1 -1
  215. package/node_modules/@deepseek-ai/dsh-skill-badge/package.json +1 -1
  216. package/node_modules/@deepseek-ai/dsh-skill-filesystem/lib/index.js +1 -1
  217. package/node_modules/@deepseek-ai/dsh-skill-filesystem/package.json +1 -1
  218. package/node_modules/@deepseek-ai/dsh-spill/package.json +1 -1
  219. package/node_modules/@deepseek-ai/dsh-spill-local/lib/index.js +1 -1
  220. package/node_modules/@deepseek-ai/dsh-spill-local/package.json +1 -1
  221. package/node_modules/@deepseek-ai/dsh-spill-policy/lib/index.js +2 -2
  222. package/node_modules/@deepseek-ai/dsh-spill-policy/package.json +1 -1
  223. package/node_modules/@deepseek-ai/dsh-storage/package.json +1 -1
  224. package/node_modules/@deepseek-ai/dsh-storage-domain/lib/invariant.js +1 -1
  225. package/node_modules/@deepseek-ai/dsh-storage-domain/package.json +1 -1
  226. package/node_modules/@deepseek-ai/dsh-storage-json/package.json +1 -1
  227. package/node_modules/@deepseek-ai/dsh-subagent/lib/index.js +1 -1
  228. package/node_modules/@deepseek-ai/dsh-subagent/package.json +1 -1
  229. package/node_modules/@deepseek-ai/dsh-subagent-fork-in-process/package.json +1 -1
  230. package/node_modules/@deepseek-ai/dsh-subagent-in-process-driver/package.json +1 -1
  231. package/node_modules/@deepseek-ai/dsh-subagent-spawn-in-process/package.json +1 -1
  232. package/node_modules/@deepseek-ai/dsh-subprocess/package.json +1 -1
  233. package/node_modules/@deepseek-ai/dsh-subprocess-local/package.json +1 -1
  234. package/node_modules/@deepseek-ai/dsh-system-prompt/package.json +1 -1
  235. package/node_modules/@deepseek-ai/dsh-terminal/package.json +1 -1
  236. package/node_modules/@deepseek-ai/dsh-terminal-bash/lib/index.js +2 -2
  237. package/node_modules/@deepseek-ai/dsh-terminal-bash/package.json +1 -1
  238. package/node_modules/@deepseek-ai/dsh-time-context/lib/index.js +1 -1
  239. package/node_modules/@deepseek-ai/dsh-time-context/lib/invariant.js +1 -1
  240. package/node_modules/@deepseek-ai/dsh-time-context/package.json +1 -1
  241. package/node_modules/@deepseek-ai/dsh-timeout/package.json +1 -1
  242. package/node_modules/@deepseek-ai/dsh-tmux-context/package.json +1 -1
  243. package/node_modules/@deepseek-ai/dsh-token-meter/lib/index.js +1 -1
  244. package/node_modules/@deepseek-ai/dsh-token-meter/package.json +1 -1
  245. package/node_modules/@deepseek-ai/dsh-tool-ask-user/package.json +1 -1
  246. package/node_modules/@deepseek-ai/dsh-tool-bash/package.json +1 -1
  247. package/node_modules/@deepseek-ai/dsh-tool-bash-persistent/package.json +1 -1
  248. package/node_modules/@deepseek-ai/dsh-tool-call-timeout-policy/package.json +1 -1
  249. package/node_modules/@deepseek-ai/dsh-tool-cordis/package.json +1 -1
  250. package/node_modules/@deepseek-ai/dsh-tool-fs/lib/index.js +2 -2
  251. package/node_modules/@deepseek-ai/dsh-tool-fs/package.json +1 -1
  252. package/node_modules/@deepseek-ai/dsh-tool-fs-search/lib/index.js +1 -1
  253. package/node_modules/@deepseek-ai/dsh-tool-fs-search/package.json +1 -1
  254. package/node_modules/@deepseek-ai/dsh-tool-goal/package.json +1 -1
  255. package/node_modules/@deepseek-ai/dsh-tool-jobs/package.json +1 -1
  256. package/node_modules/@deepseek-ai/dsh-tool-pwsh/package.json +1 -1
  257. package/node_modules/@deepseek-ai/dsh-tool-ralph/lib/index.js +1 -1
  258. package/node_modules/@deepseek-ai/dsh-tool-ralph/package.json +1 -1
  259. package/node_modules/@deepseek-ai/dsh-tool-skill/package.json +1 -1
  260. package/node_modules/@deepseek-ai/dsh-tool-str-replace-editor/lib/index.js +6 -6
  261. package/node_modules/@deepseek-ai/dsh-tool-str-replace-editor/package.json +1 -1
  262. package/node_modules/@deepseek-ai/dsh-tool-subagent/package.json +1 -1
  263. package/node_modules/@deepseek-ai/dsh-tool-subagent-control/package.json +1 -1
  264. package/node_modules/@deepseek-ai/dsh-tool-subagent-report/package.json +1 -1
  265. package/node_modules/@deepseek-ai/dsh-tool-todo/package.json +1 -1
  266. package/node_modules/@deepseek-ai/dsh-tool-web/package.json +1 -1
  267. package/node_modules/@deepseek-ai/dsh-tool-workflow/lib/index.js +2 -2
  268. package/node_modules/@deepseek-ai/dsh-tool-workflow/package.json +1 -1
  269. package/node_modules/@deepseek-ai/dsh-tools/lib/index.js +26 -26
  270. package/node_modules/@deepseek-ai/dsh-tools/package.json +1 -1
  271. package/node_modules/@deepseek-ai/dsh-typert-loader/package.json +1 -1
  272. package/node_modules/@deepseek-ai/dsh-typert-protocol/package.json +1 -1
  273. package/node_modules/@deepseek-ai/dsh-typert-registry/package.json +1 -1
  274. package/node_modules/@deepseek-ai/dsh-user-approval/package.json +1 -1
  275. package/node_modules/@deepseek-ai/dsh-user-questions/package.json +1 -1
  276. package/node_modules/@deepseek-ai/dsh-web/lib/index.js +1 -1
  277. package/node_modules/@deepseek-ai/dsh-web/package.json +1 -1
  278. package/node_modules/@deepseek-ai/dsh-web-app/package.json +1 -1
  279. package/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/{index-Dqw48FrP.js → index-BQQQ5Qt-.js} +2 -2
  280. package/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/langs/cpp-DddhVWhK.js +1 -0
  281. package/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/langs/{php-D-uCvoST.js → php-9bx0az3O.js} +1 -1
  282. package/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/langs/{ruby-DEItuUFs.js → ruby-HDLHRjSL.js} +1 -1
  283. package/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/langs/swift-C2oV4EkX.js +1 -0
  284. package/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/{vendor-Cjbwl5VI.js → vendor-CeMKrCZm.js} +24 -24
  285. package/node_modules/@deepseek-ai/dsh-web-frontend/dist/index.html +2 -2
  286. package/node_modules/@deepseek-ai/dsh-web-frontend/package.json +1 -1
  287. package/node_modules/@deepseek-ai/dsh-web-search-deepseek/LICENSE +21 -0
  288. package/node_modules/@deepseek-ai/dsh-web-search-deepseek/lib/index.js +1 -0
  289. package/node_modules/@deepseek-ai/dsh-web-search-deepseek/lib/invariant.js +1 -0
  290. package/node_modules/@deepseek-ai/dsh-web-search-deepseek/package.json +1 -0
  291. package/node_modules/@deepseek-ai/dsh-web-search-dsh/lib/index.js +1 -1
  292. package/node_modules/@deepseek-ai/dsh-web-search-dsh/package.json +1 -1
  293. package/node_modules/@deepseek-ai/dsh-workflow/package.json +1 -1
  294. package/node_modules/@deepseek-ai/dsh-workflow-worker-thread/lib/index.js +2 -2
  295. package/node_modules/@deepseek-ai/dsh-workflow-worker-thread/lib/worker.cjs +3 -4
  296. package/node_modules/@deepseek-ai/dsh-workflow-worker-thread/package.json +1 -1
  297. package/node_modules/@deepseek-ai/dsh-workspace/lib/invariant.js +1 -1
  298. package/node_modules/@deepseek-ai/dsh-workspace/package.json +1 -1
  299. package/package.json +1 -1
  300. package/lib/profile-boot-_PCyp_wB.js +0 -1
  301. package/node_modules/@deepseek-ai/dsh-sandbox-windows-acl/lib/types-BjBvdldw.js +0 -1
  302. package/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/langs/cpp-DIPi6g--.js +0 -1
  303. package/node_modules/@deepseek-ai/dsh-web-frontend/dist/assets/langs/swift-D82vCrfD.js +0 -1
  304. /package/lib/{profile-boot-B71dQloK.js → profile-boot-DDo03lXi.js} +0 -0
@@ -1 +1 @@
1
- var Y=Object.defineProperty;var o=(e,t)=>Y(e,"name",{value:t,configurable:!0});import{Service as G}from"@deepseek-ai/cordis";import{scopeTarget as K}from"@deepseek-ai/dsh-scope";import{assertObjectJsonSchema as Z}from"@deepseek-ai/dsh-tools";import{HarnessError as J,boundContextSummary as X,createUserMessage as y,errorChain as g}from"@deepseek-ai/dsh-llm";import{randomUUID as A}from"node:crypto";import{foldConsumedWork as Q}from"@deepseek-ai/dsh-agent";import{Session as ee,SessionId as te,snapshotJsonValue as se}from"@deepseek-ai/dsh-session";import{z as p}from"zod";import{accessSync as ne,constants as ie,statSync as re}from"node:fs";import{isAbsolute as oe,resolve as ae}from"node:path";var u=class extends J{static{o(this,"SubagentError")}constructor(e,t,s){super(e,t,s),this.name="SubagentError"}};function T(e){const t=e.options.subagentDepth;if(t!==void 0&&(!Number.isSafeInteger(t)||t<0||Object.is(t,-0)))throw new TypeError("agent subagentDepth must be a non-negative safe integer");return Math.max(e.session.header.delegationDepth??0,t??0)}o(T,"delegationDepthOf");function S(e){if(e!==void 0&&(typeof e!="number"||!Number.isSafeInteger(e)||e<0||Object.is(e,-0)))throw new TypeError("subagent maxDepth must be a non-negative safe integer")}o(S,"assertSubagentMaxDepth");var C=class{static{o(this,"AssistantOutputFold")}message;partial=[];push(e){if(e.type==="assistant/message"){const t=e.data.message.content;t.length>0&&(this.message=t)}else e.type==="assistant/chunk"&&e.data.chunk.type==="text-delta"&&this.pushText(e.data.chunk.text)}pushText(e){e.length>0&&this.partial.push(e)}collect(){if(this.message!==void 0)return this.message;const e=this.partial.join("");return e.length>0?[{type:"text",text:e}]:void 0}};function P(e){const t=new C;for(const s of e)t.push(s);return t.collect()}o(P,"finalAssistantOutput");function de(e){return e}o(de,"SubagentRunId");function ce(e,t){return(s,n,i)=>{const a=i===void 0?[s,n]:[t(i),s,n];for(const r of e.events.dispatch("emit",a))try{const c=r(n);Promise.resolve(c).catch(l=>{e.logger.warn(`subagent: ${s} listener rejected: ${k(l)}`)})}catch(c){e.logger.warn(`subagent: ${s} listener threw: ${k(c)}`)}}}o(ce,"createLifecycleEmitter");function le(e,t,s,n){const i={runId:A(),provider:t,id:n.id,local:n.localAgent!==void 0};return n.result.then(a=>{e("subagent/end",{...i,stopReason:a.stopReason,...a.output.length===0?{}:{lastAssistantMessage:a.output}},s)},()=>{e("subagent/end",{...i,stopReason:"error"},s)}),e("subagent/start",i,s),n}o(le,"observeRun");function ue(e,t,s,n){const i={runId:A(),provider:t,id:s,local:!0};let a=0,r={stopReason:"completed"};const c=o(l=>l===void 0?r:{stopReason:"error"},"terminal");return{start:o(l=>{a=l.session.events.length,e("subagent/start",i,n)},"start"),capture:o(l=>{const d=l.session.events.slice(a),h=P(d);r={stopReason:he(d),...h===void 0?{}:{output:h}}},"capture"),terminal:c,settle:o(l=>{const{stopReason:d,output:h}=c(l);e("subagent/end",{...i,stopReason:d,...h===void 0?{}:{lastAssistantMessage:h}},n)},"settle")}}o(ue,"createActivationObserver");function he(e){const{end:t,droppedUnrun:s}=Q(e);switch(t?.data.reason.kind){case"max-tokens":return"max-tokens";case"aborted":case"interrupted":return"aborted";case"error":return"error";case"blocked":return"refusal";case void 0:case"completed":return s?"aborted":"completed";default:return"error"}}o(he,"epochStopReason");function k(e){try{return e instanceof Error?`${e.name}: ${e.message}`:String(e)}catch{return"<unrenderable thrown value>"}}o(k,"renderThrown");const pe=2,$=["version","mode","provider","label"],ge=new Set($),fe=new Set([...$,"agentProvider","agentModel","persona","toolFilter"]),be=new Set(["allow","deny"]);function N(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}o(N,"isRecord");function D(e,t,s){const n=Object.keys(e).find(i=>!t.has(i));if(n!==void 0)throw new Error(`persisted subagent descriptor ${s} has unknown field "${n}"`)}o(D,"assertKnownKeys");function m(e,t){if(!Object.hasOwn(e,t))return;const s=e[t];if(typeof s!="string")throw new Error(`persisted subagent descriptor ${t} must be a string`);return s}o(m,"optionalString");function L(e,t){if(!Object.hasOwn(e,t))return;const s=e[t];if(!Array.isArray(s))throw new Error(`persisted subagent descriptor toolFilter.${t} must be an array of strings`);const n=s;if(n.some(i=>typeof i!="string"))throw new Error(`persisted subagent descriptor toolFilter.${t} must be an array of strings`);return n}o(L,"optionalStringArray");function we(e){if(!N(e))throw new Error("persisted subagent descriptor toolFilter must be an object");D(e,be,"toolFilter");const t=L(e,"allow"),s=L(e,"deny");if(t===void 0&&s===void 0)throw new Error("persisted subagent descriptor toolFilter must declare allow and/or deny");return{...t!==void 0?{allow:t}:{},...s!==void 0?{deny:s}:{}}}o(we,"parseToolFilter");function me(e){if(!N(e))throw new Error("persisted subagent descriptor payload must be an object");const t=e.version;if(typeof t!="number")throw new Error("persisted subagent descriptor version must be a number");if(t!==2)return;const s=e.mode;if(s!=="one-shot"&&s!=="continuable")throw new Error('persisted subagent descriptor mode must be "one-shot" or "continuable"');D(e,s==="one-shot"?ge:fe,"payload");const n=e.provider;if(typeof n!="string")throw new Error("persisted subagent descriptor provider must be a string");if(s==="one-shot"){const d=m(e,"label");return{version:2,mode:s,provider:n,...d!==void 0?{label:d}:{}}}const i=e.label;if(typeof i!="string")throw new Error("persisted subagent descriptor label must be a string");const a=m(e,"agentProvider"),r=m(e,"agentModel"),c=m(e,"persona"),l=Object.hasOwn(e,"toolFilter")?we(e.toolFilter):void 0;return{version:2,mode:s,provider:n,label:i,...a!==void 0?{agentProvider:a}:{},...r!==void 0?{agentModel:r}:{},...c!==void 0?{persona:c}:{},...l!==void 0?{toolFilter:l}:{}}}o(me,"parseSubagentDescriptor");function E(e){const t=se(e.mode==="one-shot"?{version:2,mode:e.mode,provider:e.provider,...e.label!==void 0?{label:e.label}:{}}:{version:2,mode:e.mode,provider:e.provider,label:e.label,...e.agentProvider!==void 0?{agentProvider:e.agentProvider}:{},...e.agentModel!==void 0?{agentModel:e.agentModel}:{},...e.persona!==void 0?{persona:e.persona}:{},...e.toolFilter!==void 0?{toolFilter:e.toolFilter}:{}});if(t===void 0)throw new Error("subagent descriptor is not losslessly JSON-serializable");return t}o(E,"snapshotSubagentDescriptor");function I(e){const t=e.find(s=>s.type==="subagent/descriptor");if(t!==void 0)return me(t.data)}o(I,"foldSubagentDescriptor");var x=class extends Error{static{o(this,"SubagentDepthError")}attemptedDepth;maxDepth;constructor(e,t){super(`subagent depth ${e} exceeds maxDepth ${t}`),this.attemptedDepth=e,this.maxDepth=t,this.name="SubagentDepthError"}};function _(e,t){const s=T(e)+1;if(!Number.isSafeInteger(s))throw new RangeError("subagent child depth exceeds the safe-integer range");if(t!==void 0&&s>t)throw new x(s,t);return s}o(_,"resolveChildDepth");function M(e,t,s){const n=e.options.provider,i=e.options.model,a=e.options.maxTokens;return{...n!==void 0?{provider:n}:{},...i!==void 0?{model:i}:{},...a!==void 0?{maxTokens:a}:{},...t,subagentDepth:s}}o(M,"resolveChildAgentOptions");function F(e,t,s){const n=e.session.header,i=e.ctx.get("agentPresets")?.composedPreset(e.ctx);return{...n.cwd!==void 0?{cwd:n.cwd}:{},...i===void 0?{}:{agentPreset:i},parentSession:n.id,origin:"subagent",delegationDepth:t,...s>0?{seedLength:s}:{}}}o(F,"childSessionMeta");const ve="You are a delegated subagent: your permission scope was fixed when you were started and cannot be widened from inside this session — operations that require approval are rejected automatically. When the task needs access beyond that scope, do not retry the denied operation; state the limitation in your reply so the delegating agent can handle it.";function U(e,t,s){e.get("agentPresets")?.composeFrom(e,t.ctx),e.systemPrompt.context({name:"subagent:delegation",order:120,text:ve}),s.persona!==void 0&&e.systemPrompt.section({name:"deployment:persona",order:0,text:s.persona}),s.toolFilter!==void 0&&e.tools.restrict(s.toolFilter)}o(U,"applyChildComposition");function j(e){return{sandboxMode:e.ctx.get("sandboxPolicy")?.overrideOf(e.session),approvalPolicy:e.ctx.get("approval")===void 0?void 0:"never"}}o(j,"captureDelegatedPolicyOverrides");function z(e,t){t.sandboxMode!==void 0&&e.append("sandbox/mode",{mode:t.sandboxMode,source:"delegation"}),t.approvalPolicy!==void 0&&e.append("approval/policy",{policy:t.approvalPolicy,source:"delegation"})}o(z,"appendDelegatedPolicyOverrides");function V(e,t,s){const n=ee.create(e,t);return n.append("subagent/descriptor",s),[...n.events]}o(V,"seedDescriptorTurn");function v(e){return e.disposal}o(v,"disposalOf");function ye(e,t){const s=`Background subagent ${e}`;switch(t){case"completed":return`${s} finished and will do no further work unless you send it more.`;case"aborted":return`${s} was stopped before it finished.`;case"max-tokens":return`${s} ran out of room before it finished.`;case"refusal":return`${s} declined the task.`;case"error":return`${s} failed before it finished.`;default:return`${s} ended abnormally (${String(t)}) before it finished.`}}o(ye,"settlementSummary");var Ae=class{static{o(this,"ChildLock")}tails=new Map;run(e,t){const s=(this.tails.get(e)??Promise.resolve()).then(t,t),n=s.then(()=>{},()=>{});return this.tails.set(e,n),n.then(()=>{this.tails.get(e)===n&&this.tails.delete(e)}),s}},Se=class{static{o(this,"SubagentContinuationManager")}ctx;host;setupRegistry;activations=new Map;materializations=new Set;locks=new Ae;ownerCtx;closingScopes=new Map;draining=!1;constructor(e,t,s){this.ctx=e,this.host=t,this.setupRegistry=s;const n=e.plugin(o(function(){},"activationOwner"));this.ownerCtx=n.ctx,e.on("agent/disposed",({agent:i})=>{this.closingScopes.delete(i)}),e.effect(function*(){yield n.dispose,yield()=>this.drain()}.bind(this),"subagents.continuations()")}async startContinuable(e){const t=e.request,s=t.parent;this.assertAdmitting(s),this.requirePersistence(),S(t.maxDepth);const n=te(A()),i=_(s,t.maxDepth),a=t.agentOptions?.provider??s.options.provider,r=t.agentOptions?.model??s.options.model,c=E({mode:"continuable",provider:e.provider,label:e.label,...a!==void 0?{agentProvider:a}:{},...r!==void 0?{agentModel:r}:{},...t.persona!==void 0?{persona:t.persona}:{},...t.toolFilter!==void 0?{toolFilter:t.toolFilter}:{}}),l=j(s),d=await this.host.prepareContinuable(e.provider,{sessionId:n,parent:s,signal:e.signal});e.signal.throwIfAborted(),this.assertAdmitting(s);const h=d.seed?.length??0,f=V(n,d.seed,c);return{childId:n,messageId:await this.locks.run(n,async()=>{const w=await this.materialize({childId:n,provider:e.provider,parent:s,create:{seed:f,meta:F(s,i,h),delegatedPolicies:l},agentOptions:M(s,t.agentOptions,i),composition:{persona:t.persona,toolFilter:t.toolFilter},signal:e.signal});return this.submitMaterialized(w,t.prompt,{kind:"user"},s,e.signal)})}}async followup(e,t,s,n){for(this.assertAdmitting(e);;){const i=await this.locks.run(t,async()=>{const a=this.activations.get(t);return a===void 0?this.coldResume(e,t,s,n):a.disposal!==void 0?a.disposal.then(()=>{},()=>{}):this.submitAdmitted(a,s,n.source,e,n.signal)});if(i!==void 0)return i;this.assertAdmitting(e),n.signal.throwIfAborted()}}interrupt(e,t){if(t.kind==="ancestor"){const n=t.agent;if(this.ctx.agents.get(n.id)!==n)throw new u(`interrupting "${e}" requires the exact live ancestor agent`,"UNAUTHORIZED");if(n.id===e)throw new u(`agent "${n.id}" cannot interrupt itself`,"UNAUTHORIZED")}const s=this.activations.get(e);if(s!==void 0){if(t.kind==="user"){if(s.handle.agent.session.header.parentSession!==t.parentSessionId)throw new u(`subagent "${e}" belongs to another parent session`,"UNAUTHORIZED")}else if(!s.ancestry.has(t.agent))throw new u(`subagent "${e}" is not a live descendant of agent "${t.agent.id}"`,"UNAUTHORIZED");s.disposal===void 0&&s.handle.agent.cancel(t.kind==="user"?{kind:"user"}:{kind:"parent"},{keepInbox:!0})}}async reportFrom(e,t,s){s.signal.throwIfAborted(),this.assertAdmitting(e);const n=this.authorizeReporter(e),i=this.resolveReportParent(e);return this.deliverReport(n,i,t,s.delivery)}authorizeReporter(e){const t=this.activations.get(e.id);if(t===void 0||t.handle.agent!==e)throw new u(`agent "${e.id}" is not a live continuable subagent and cannot report`,"UNAUTHORIZED");if(t.disposal!==void 0)throw new u(`subagent "${e.id}" activation is being disposed; the report was not delivered`,"ACTIVATION_CLOSING");return t}resolveReportParent(e){const t=e.session.header.parentSession,s=t===void 0?void 0:this.ctx.agents.get(t);if(s===void 0)throw new u("direct parent is not live; report was not delivered","PARENT_UNAVAILABLE");return s}deliverReport(e,t,s,n){const i=y({content:[{type:"text",text:`Background subagent ${e.childId} reported:`},...s],source:{kind:"subagent-report",form:"relay",senderSessionId:e.childId}});return n==="wakeup"?this.sendWaking(t,i,()=>{this.sendReport(t,i,n)}):this.sendReport(t,i,n),i.id}sendWaking(e,t,s){const n=this.activations.get(e.id);n!==void 0&&n.handle.agent===e?this.admitWaking(n,t.id,s):s()}sendReport(e,t,s){try{s==="wakeup"?e.followup(t):e.inject(t)}catch(n){throw new u("direct parent is not live; report was not delivered","PARENT_UNAVAILABLE",{cause:n})}}async drain(){this.draining=!0,await Promise.all([...this.materializations].map(s=>s.settled));const e=new Set;for(const s of this.activations.values())for(const n of s.ownedChildren)e.add(n);const t=[...this.activations.values()].filter(s=>!e.has(s.childId));await this.disposeRoots(t,"activation(s)")}async drainDescendants(e){const t=new Set(e.filter(r=>this.ctx.agents.get(r.id)===r));if(t.size===0)return;for(const r of t)this.closingMembers(r).add(r);const s=[];for(const r of this.activations.values()){const c=this.liveLineage(r.handle.agent),l=[...t].filter(d=>r.handle.agent!==d&&r.ancestry.has(d));if(l.length!==0){s.push(r);for(const d of l){const h=this.closingMembers(d);h.add(r.handle.agent);for(const f of c)h.add(f)}}}const n=[...this.materializations].filter(r=>{const c=[...t].filter(l=>r.lineage.includes(l));for(const l of c){const d=this.closingMembers(l);for(const h of r.lineage)d.add(h)}return c.length>0}),i=new Set;for(const r of s)for(const c of r.ownedChildren)i.add(c);const a=s.filter(r=>!i.has(r.childId));for(const r of s)this.dispose(r).catch(()=>{});await Promise.all(n.map(r=>r.settled)),await this.disposeRoots(a,"scoped activation(s)")}async disposeRoots(e,t){const s=(await Promise.all(e.map(async n=>{try{await this.dispose(n);return}catch(i){return i}}))).filter(n=>n!==void 0);if(s.length>0)throw new u(`continuable subagent teardown failed for ${s.length} ${t}: `+s.map(n=>g(n)).join("; "),"ACTIVATION_TEARDOWN_FAILED")}closingMembers(e){const t=this.closingScopes.get(e);if(t!==void 0)return t;const s=new Set;return this.closingScopes.set(e,s),s}liveLineage(e){const t=[e],s=new Set([e.id]);let n=e.session.header.parentSession;for(;n!==void 0;){const i=this.ctx.agents.get(n);if(i===void 0||s.has(i.id))break;t.push(i),s.add(i.id),n=i.session.header.parentSession}return t}closingTeardownFor(e){if(this.draining)return"manager";const t=this.liveLineage(e);for(const[s,n]of this.closingScopes)if(n.has(e)||t.includes(s))return s}assertAdmitting(e){const t=this.closingTeardownFor(e);if(t!==void 0)throw new u(t==="manager"?"continuable subagents are draining; the operation was not admitted":`continuable subagents below parent "${t.id}" are draining; the operation was not admitted`,"DRAINING")}stateOf(e){return e.handle.agent.status==="running"||e.accepted.size>0?"running":e.ownedChildren.size>0?"waiting":"settled"}async coldResume(e,t,s,n){const i=this.requirePersistence();let a;try{a=await i.inspect(t,n.signal)}catch(l){throw n.signal.throwIfAborted(),new u(`subagent "${t}" is unavailable`,"NOT_RESUMABLE",{cause:l})}n.signal.throwIfAborted(),this.assertAdmitting(e),this.authorizeLineage(e,t,a.meta.parentSession);const r=I(a.events.slice(a.meta.seedLength??0));if(r===void 0||r.mode!=="continuable")throw new u(`subagent "${t}" has no supported continuation state and cannot be resumed; do not retry send_message with this id`,"NOT_RESUMABLE");let c;try{c=await this.materialize({childId:t,provider:r.provider,parent:e,agentOptions:{...r.agentProvider!==void 0?{provider:r.agentProvider}:{},...r.agentModel!==void 0?{model:r.agentModel}:{}},composition:{persona:r.persona,toolFilter:r.toolFilter},signal:n.signal})}catch(l){throw n.signal.throwIfAborted(),l instanceof u?l:new u(`subagent "${t}" is unavailable`,"NOT_RESUMABLE",{cause:l})}return this.submitMaterialized(c,s,n.source,e,n.signal)}async submitMaterialized(e,t,s,n,i){try{return this.submitAdmitted(e,t,s,n,i)}catch(a){throw await this.dispose(e).catch(()=>{}),a}}materialize(e){this.assertAdmitting(e.parent);const t=Promise.withResolvers(),s=this.liveLineage(e.parent),n={lineage:s,settled:t.promise};return this.materializations.add(n),this.materializeTracked(e,s).finally(()=>{this.materializations.delete(n),t.resolve()})}async materializeTracked(e,t){const{childId:s,provider:n,parent:i,create:a}=e;e.signal.throwIfAborted();const r=o(h=>(a!==void 0&&z(h.agent.session,a.delegatedPolicies),U(h,i,e.composition),this.setupRegistry.apply(h)),"setup"),c=this.host.observeActivation(n,s,i),l=a===void 0?await this.ownerCtx.agents.resume({resumeSessionId:s,agentOptions:e.agentOptions,signal:e.signal,setup:r}):await this.ownerCtx.agents.create({sessionId:s,meta:a.meta,seed:a.seed,agentOptions:e.agentOptions,signal:e.signal,setup:r}),d={childId:s,parentSession:i.id,provider:n,handle:l,ancestry:new WeakSet([l.agent,...t]),ownedChildren:new Set,observer:c,disposal:void 0,accepted:new Set,announced:!1,poke:Promise.withResolvers()};this.activations.set(s,d);try{e.signal.throwIfAborted(),this.assertAdmitting(i),this.acquireOwnership(i,s),l.agent.ctx.on("agent/inbox/claimed",({message:h})=>{d.accepted.delete(h.id)&&this.wake(d)}),l.agent.ctx.on("agent/inbox/discarded",({message:h})=>{d.accepted.delete(h.id)&&this.wake(d)}),c.start(l.agent)}catch(h){throw await this.rollbackUnpublished(d).catch(()=>{}),h}return this.watchSettlement(d),d}rollbackUnpublished(e){return e.disposal??=(async()=>{try{await e.handle.dispose()}finally{this.activations.delete(e.childId),this.releaseOwnership(e.childId)}})()}acquireOwnership(e,t){const s=this.activations.get(e.id);if(s!==void 0){if(s.disposal!==void 0)throw new u(`subagent parent "${e.id}" is being disposed; the child was not established`,"ACTIVATION_CLOSING");s.ownedChildren.add(t)}}releaseOwnership(e){for(const t of this.activations.values())t.ownedChildren.delete(e)&&this.wake(t)}wake(e){e.poke.resolve(),e.poke=Promise.withResolvers()}submit(e,t,s,n){this.acquireOwnership(n,e.childId);const i=y({content:t,source:s}),a=this.admitWaking(e,i.id,()=>{e.handle.agent.followup(i)});return e.announced=!0,a}admitWaking(e,t,s){e.accepted.add(t);try{s()}catch(n){throw e.accepted.delete(t),n}return this.wake(e),t}submitAdmitted(e,t,s,n,i){if(i.throwIfAborted(),this.assertAdmitting(n),v(e)!==void 0)throw new u(`subagent "${e.childId}" activation is being disposed; the message was not accepted`,"ACTIVATION_CLOSING");return this.authorizeLineage(n,e.childId,e.handle.agent.session.header.parentSession),this.submit(e,t,s,n)}authorizeLineage(e,t,s){if(this.ctx.agents.get(e.id)!==e)throw new u(`subagent "${t}" delivery requires the exact live parent agent`,"UNAUTHORIZED");if(s!==e.id)throw new u(`subagent "${t}" belongs to another parent session`,"UNAUTHORIZED")}watchSettlement(e){(async()=>{for(;v(e)===void 0;){const t=e.poke.promise;if(await Promise.race([e.handle.agent.whenIdle(),t]),v(e)!==void 0)return;const s=await this.locks.run(e.childId,()=>v(e)!==void 0||this.stateOf(e)!=="settled"?Promise.resolve({settling:!1}):Promise.resolve({settling:!0,done:this.dispose(e)}));if(!s.settling){e.handle.agent.status!=="running"&&await t;continue}try{await s.done}catch(n){this.ctx.logger.warn(`subagent "${e.childId}" activation teardown failed: ${g(n)}`)}return}})()}dispose(e){const t=e.disposal;if(t!==void 0)return t;const s=Promise.withResolvers();return e.disposal=s.promise,this.finishDisposal(e).then(s.resolve,s.reject),s.promise}async finishDisposal(e){this.wake(e);const{childId:t}=e;e.handle.agent.cancel({kind:"parent"});const s=e.handle.agent.whenIdle(),n=[...e.ownedChildren].map(r=>this.activations.get(r)).filter(r=>r!==void 0).map(r=>this.dispose(r)),i=[];try{const r=(await Promise.all(n.map(async c=>{try{await c;return}catch(l){return l}}))).filter(c=>c!==void 0);r.length>0&&i.push(new u(`subagent "${t}" child teardown failed: ${r.map(c=>g(c)).join("; ")}`,"ACTIVATION_TEARDOWN_FAILED")),await s,await this.flushFinalState(e),e.observer.capture(e.handle.agent)}catch(r){i.push(new u(`subagent "${t}" activation teardown failed: ${g(r)}`,"ACTIVATION_TEARDOWN_FAILED",{cause:r}))}try{await e.handle.dispose()}catch(r){i.push(new u(`subagent "${t}" activation handle disposal failed: ${g(r)}`,"ACTIVATION_TEARDOWN_FAILED",{cause:r}))}let a;if(i.length===1?a=i[0]:i.length>1&&(a=new u(`subagent "${t}" activation teardown failed at ${i.length} boundaries: `+i.map(r=>g(r)).join("; "),"ACTIVATION_TEARDOWN_FAILED",{cause:new AggregateError(i)})),this.activations.delete(t),this.notifySettlement(e,e.observer.terminal(a)),this.releaseOwnership(t),e.observer.settle(a),a!==void 0)throw a}notifySettlement(e,t){if(e.announced)try{const s=this.ctx.agents.get(e.parentSession);if(s===void 0)return;const n=ye(e.childId,t.stopReason),i=y({content:[{type:"text",text:n},...t.output===void 0?[{type:"text",text:"It left no closing message."}]:[{type:"text",text:"Its closing message:"},...t.output]],source:{kind:"subagent-settled",form:"notice",summary:X(n),senderSessionId:e.childId}});if(this.closingTeardownFor(s)!==void 0){s.inject(i);return}this.sendWaking(s,i,()=>{s.status==="idle"?s.followup(i):s.steer(i)})}catch(s){this.ctx.logger.warn(`subagent "${e.childId}" settlement notice was not delivered to its parent: `+g(s))}}async flushFinalState(e){const t=e.handle.agent;try{await t.ctx.sessions.flush(t.session)}catch(s){this.ctx.logger.warn(`subagent "${e.childId}" best-effort final session flush failed; the persisted state may be unavailable or stale on resume: ${g(s)}`)}}requirePersistence(){const e=this.ctx.get("sessionPersistence");if(e===void 0)throw new u("continuable subagents require session persistence (load a dsh-session-persistence backend)","PERSISTENCE_UNAVAILABLE");return e}};function Ee(e){return e.removed}o(Ee,"isRemoved");var Ie=class{static{o(this,"SubagentActivationSetupRegistry")}registrations=new Set;byChild=new Map;register(e){const t={contribution:e,removed:!1,installations:new Set};return this.registrations.add(t),()=>{t.removed||(t.removed=!0,this.registrations.delete(t),this.releaseAll([...t.installations],"contribution removal"))}}apply(e){const t={installations:[],invalidated:!1};try{for(const s of[...this.registrations]){if(s.removed)continue;const n={registration:s,childCtx:e,dispose:s.contribution(e),released:!1,transaction:t};s.installations.add(n),t.installations.push(n);let i=this.byChild.get(e);i===void 0&&(i=new Set,this.byChild.set(e,i)),i.add(n),Ee(s)&&this.release(n)}}catch(s){try{this.releaseAll([...t.installations],"setup rollback")}catch{}throw s}return e.effect(()=>()=>{this.releaseChild(e)},"subagents.activationSetup()"),{commit:o(()=>{if(t.invalidated)throw new u("a continuable-subagent setup contribution was revoked while this child was being built; the child was not established","ACTIVATION_SETUP_REVOKED");for(const s of t.installations)s.transaction=void 0},"commit")}}releaseChild(e){const t=this.byChild.get(e)??[];this.releaseAll([...t],"child scope disposal")}releaseAll(e,t){const s=[];for(const n of e)try{this.release(n)}catch(i){s.push(i)}if(s.length!==0)throw new u(`continuable-subagent setup ${t} failed to release ${s.length} installation(s): `+s.map(n=>g(n)).join("; "),"ACTIVATION_SETUP_RELEASE_FAILED")}release(e){if(e.released)return;e.released=!0,e.registration.installations.delete(e);const t=this.byChild.get(e.childCtx);t!==void 0&&(t.delete(e),t.size===0&&this.byChild.delete(e.childCtx)),e.transaction!==void 0&&(e.transaction.invalidated=!0),e.dispose()}};const Oe=4;async function Re(e,t,s){const n=await B(e,s);return(await q([...n.corpus.values()].filter(i=>i.header.parentSession===t&&i.header.origin==="subagent").sort(W),n,s)).filter(i=>i!==void 0)}o(Re,"listChildren");async function Te(e,t,s){const n=await B(e,s),i=Ce(n.corpus,t),a=await q(i.map(c=>c.record),n,s),r=[];return i.forEach((c,l)=>{const d=a[l];d!==void 0&&r.push({...d,parentId:c.parentId,depth:c.depth})}),r}o(Te,"listDescendants");async function B(e,t){const s=e.get("sessionProjections");if(s===void 0)throw new u("listing subagents requires the sessionProjections registry (load @deepseek-ai/dsh-session-projection)","SUBAGENT_CONTROL_PROJECTIONS_UNAVAILABLE");const n=e.get("sessions");if(n===void 0)throw new u("listing subagents requires the session store (load @deepseek-ai/dsh-session)","SUBAGENT_CONTROL_SESSION_STORE_UNAVAILABLE");b(t);const i=e.get("sessionPersistence"),a=e.get("sessionProjectionCache");let r=[];if(i!==void 0){try{r=await i.list(t)}catch(d){throw b(t),d}b(t)}const c=new Map;for(const d of r)c.set(d.id,{header:d,live:void 0});for(const d of n.list())c.set(d.header.id,{header:d.header,live:d});const l=new Set;for(const d of c.values())d.header.origin==="subagent"&&d.header.parentSession!==void 0&&l.add(d.header.parentSession);return{projections:s,persistence:i,cache:a,corpus:c,subagentParents:l}}o(B,"prepareListing");async function q(e,t,s){const{projections:n,persistence:i,cache:a,subagentParents:r}=t,c=Array.from({length:e.length}),l=[];if(e.forEach((d,h)=>{const f=d.header.id;if(d.live===void 0){l.push({index:h,header:d.header});return}let w;try{w=n.snapshot(d.live).values.subagent}catch{c[h]={kind:"diagnostic",id:f,reason:"corrupt"};return}w!=null&&(c[h]=O(f,w,"running",r.has(f)))}),i!==void 0&&l.length>0){const d=[...l];await Promise.all(Array.from({length:Math.min(Oe,d.length)},async()=>{for(let h=d.shift();h!==void 0;h=d.shift())c[h.index]=await Pe(i,n,a,h.header,r.has(h.header.id),s)}))}return b(s),c}o(q,"resolveCandidateRows");function Ce(e,t){const s=new Map;for(const r of e.values()){const c=r.header.parentSession;if(c===void 0)continue;const l=s.get(c);l===void 0?s.set(c,[r]):l.push(r)}for(const r of s.values())r.sort(W);const n=[],i=(s.get(t)??[]).map(r=>({record:r,parentId:t,depth:1})).reverse(),a=new Set([t]);for(;i.length>0;){const r=i.pop(),c=r.record.header.id;if(a.has(c))continue;a.add(c),r.record.header.origin==="subagent"&&n.push(r);const l=s.get(c)??[];for(const d of[...l].reverse())i.push({record:d,parentId:c,depth:r.depth+1})}return n}o(Ce,"descendantCandidates");function W(e,t){return e.header.createdAt-t.header.createdAt||e.header.id.localeCompare(t.header.id)}o(W,"compareCorpusRecords");async function Pe(e,t,s,n,i,a){const r=n.id;if(s!==void 0){let d;try{d=s.cachedSnapshot(n)?.values.subagent}catch{d=void 0}if(d!=null&&d.seq>=(n.seedLength??0))return O(r,d,"inactive",i)}b(a);let c;try{c=await e.inspect(r,a)}catch{return b(a),{kind:"diagnostic",id:r,reason:"unavailable"}}if(b(a),!$e(c.meta,n))return{kind:"diagnostic",id:r,reason:"corrupt"};let l;try{l=t.restore({},c.events,0).snapshot.values.subagent}catch{return{kind:"diagnostic",id:r,reason:"corrupt"}}return l==null?{kind:"diagnostic",id:r,reason:"corrupt"}:O(r,l,"inactive",i)}o(Pe,"resolveColdIdentity");function O(e,t,s,n){return t.mode==="one-shot"?{kind:"child",id:e,mode:"one-shot",...t.label!==void 0?{label:t.label}:{},activity:s,hasChildren:n}:{kind:"child",id:e,mode:"continuable",label:t.label,activity:s,hasChildren:n}}o(O,"childRow");const ke=["version","id","createdAt","cwd","parentSession","seedLength","delegationDepth"];function $e(e,t){return ke.every(s=>e[s]===t[s])}o($e,"sameLifecycle");function b(e){if(e?.aborted)throw new u("subagent listing was cancelled","CANCELLED")}o(b,"assertListingNotCancelled");const Ne={key:"subagentTiming",schema:p.object({settledMs:p.number().int().nonnegative(),active:p.object({since:p.number().int().nonnegative(),through:p.number().int().nonnegative()}).strict().optional()}).strict(),init:o(()=>({descriptorSeen:!1,settledMs:0}),"init"),apply:o((e,t)=>{if(t.type==="turn/start")return e.descriptorSeen?{...e,active:{since:t.time,through:t.time}}:{...e,pendingTurnStart:t.time};if(t.type==="subagent/descriptor"){const s=e.active?.since??e.pendingTurnStart;return{descriptorSeen:!0,settledMs:0,...s===void 0?{}:{active:{since:s,through:t.time}}}}if(t.type==="turn/end"){if(!e.descriptorSeen){if(e.pendingTurnStart===void 0)return e;const{pendingTurnStart:i,...a}=e;return a}if(e.active===void 0)return e;const{active:s,...n}=e;return{...n,settledMs:e.settledMs+Math.max(0,t.time-s.since)}}return e.active===void 0?e:{...e,active:{...e.active,through:t.time}}},"apply"),view:o(e=>({settledMs:e.settledMs,...e.active===void 0?{}:{active:e.active}}),"view"),stateVersion:2},De=p.discriminatedUnion("mode",[p.object({mode:p.literal("one-shot"),label:p.string().optional(),seq:p.number().int().nonnegative()}).strict(),p.object({mode:p.literal("continuable"),label:p.string(),seq:p.number().int().nonnegative()}).strict()]).nullable();function Le(e){let t;try{t=I([e])}catch{t=void 0}if(t!==void 0)return t.mode==="one-shot"?{mode:"one-shot",...t.label!==void 0?{label:t.label}:{},seq:e.seq}:{mode:"continuable",label:t.label,seq:e.seq}}o(Le,"descriptorIdentity");const xe={key:"subagent",schema:De,init:o(()=>({}),"init"),apply:o((e,t)=>{if(t.type!=="subagent/descriptor")return e;const s=Le(t);return s===void 0?{}:{identity:s}},"apply"),view:o(e=>e.identity??null,"view"),stateVersion:2},_e=Object.freeze({outputSchema:!1,depthLimit:!1,toolFilter:!1,persona:!1});function Me(e,t,s){if(!Number.isFinite(s)||s<=0)throw new Error(`${e}: ${t} must be a positive finite number`)}o(Me,"assertPositiveFinite");function Fe(e){try{return re(e).isDirectory()?(ne(e,ie.X_OK),!0):!1}catch{return!1}}o(Fe,"isEnterableDirectory");function R(e,t,s){if(!oe(s))throw new Error(`${e}: ${t} must be an absolute path: ${s}`);if(!Fe(s))throw new Error(`${e}: ${t} is not an accessible directory: ${s}`);return s}o(R,"assertUsableCwd");function Ue(e,t){if(t!==void 0){if(t==="")throw new Error(`${e}: config cwd must not be empty — omit the key to inherit the parent session cwd`);return R(e,"config cwd",ae(t))}}o(Ue,"validateConfiguredCwd");function je(e,t,s){if(t!==void 0)return t;if(s===void 0)throw new Error(`${e}: no working directory for the child — configure \`cwd\` or delegate from a parent session that has one`);return R(e,"parent session cwd",s)}o(je,"resolveChildCwd");function ze(e){return e instanceof Error?e:new Error(String(e))}o(ze,"toError");async function Ve(e){try{const t=await e.attempt();return e.cancelled()?{output:e.collectOutput(),stopReason:"aborted"}:t}catch(t){if(e.cancelled())return{output:e.collectOutput(),stopReason:"aborted"};try{e.onError?.(ze(t),"error")}catch{}return{output:e.collectOutput(),stopReason:"error"}}finally{e.signal.removeEventListener("abort",e.onAbort)}}o(Ve,"settleRunResult");function Be(e){let t;return{id:e.id,localAgent:void 0,result:e.result,dispose(){return t!==void 0||(e.signal.removeEventListener("abort",e.onAbort),e.requestCancel(),t=e.teardown()),t}}}o(Be,"subprocessRunHandle");function qe(e){return e.filter(t=>t.type==="text").map(t=>t.text).join("")}o(qe,"finalText");function We(e){switch(e.stopReason){case"completed":return{status:"completed",output:qe(e.output)};case"aborted":return{status:"killed"};case"error":case"max-tokens":case"refusal":return{status:"failed",detail:e.stopReason};default:return{status:"failed",detail:String(e.stopReason)}}}o(We,"runOutcome");async function He(e){let t;try{t=We(await e.result)}catch(s){t={status:"failed",detail:String(s)}}try{await e.dispose()}catch(s){return{status:"failed",detail:`${t.detail===void 0?"":`${t.detail}; `}dispose failed: ${String(s)}`}}return t}o(He,"settleRun");var H=class extends G{static{o(this,"SubagentRuntime")}providers=new Map;continuations;setupRegistry=new Ie;emitLifecycle;constructor(e){super(e,"subagents"),this.emitLifecycle=ce(this.ctx,t=>K(this,t)),e.inject(["agents"],t=>{const s=new Se(t,{prepareContinuable:o((n,i)=>this.prepareContinuable(n,i),"prepareContinuable"),observeActivation:o((n,i,a)=>this.observeActivation(n,i,a),"observeActivation")},this.setupRegistry);this.continuations=s,t.effect(()=>()=>{this.continuations===s&&(this.continuations=void 0)},"subagents.continuationBinding()")}),e.inject(["sessionProjections"],t=>{t.sessionProjections.register(Ne),t.sessionProjections.register(xe)})}async startContinuable(e){return this.requireContinuations().startContinuable(e)}async followup(e,t,s,n){return this.requireContinuations().followup(e,t,s,n)}interrupt(e,t){this.continuations?.interrupt(e,t)}async reportFrom(e,t,s){return this.requireContinuations().reportFrom(e,t,s)}registerContinuableSetup(e){return this.ctx.effect(()=>this.setupRegistry.register(e),"subagents.registerContinuableSetup()")}async drainContinuableDescendants(e){const t=this.continuations;t!==void 0&&await t.drainDescendants(e)}listChildren(e,t){return Re(this.ctx,e,t)}listDescendants(e,t){return Te(this.ctx,e,t)}registerProvider(e){const t=e.name;return this.ctx.effect(function*(){if(this.providers.has(t))throw new u(`a subagent provider named "${t}" is already registered`,"DUPLICATE_PROVIDER");this.providers.set(t,e),yield()=>{this.providers.delete(t),this.emitLifecycle("subagent/provider-removed",t)},this.ctx.emit("subagent/provider-added",e)}.bind(this),"subagents.registerProvider()")}getProvider(e){return this.providers.get(e)}list(){return[...this.providers.keys()]}async start(e,t){const s=this.expectProvider(e);this.assertCapabilities(s,t),S(t.maxDepth),t.outputSchema!==void 0&&Z(t.outputSchema);const n=E({mode:"one-shot",provider:e,...t.label!==void 0?{label:t.label}:{}}),i={...t,descriptor:n};return le(this.emitLifecycle,e,t.parent,await s.start(i))}async prepareContinuable(e,t){const s=this.expectProvider(e);if(s.prepareContinuable===void 0)throw new u(`subagent provider "${s.name}" does not support continuable children (no prepareContinuable capability)`,"UNSUPPORTED_CAPABILITY");return s.prepareContinuable(t)}expectProvider(e){const t=this.providers.get(e);if(t===void 0)throw new u(`no subagent provider registered for "${e}"`,"NO_PROVIDER");return t}requireContinuations(){if(this.continuations===void 0)throw new u("continuable subagents require the agents service","CONTINUATION_UNAVAILABLE");return this.continuations}observeActivation(e,t,s){return ue(this.emitLifecycle,e,t,s)}assertCapabilities(e,t){const s=[{when:t.outputSchema!==void 0,cap:"outputSchema"},{when:t.maxDepth!==void 0,cap:"depthLimit"},{when:t.toolFilter!==void 0,cap:"toolFilter"},{when:t.persona!==void 0,cap:"persona"}];for(const{when:n,cap:i}of s)if(n&&!e.capabilities[i])throw new u(`subagent provider "${e.name}" does not support the "${i}" capability`,"UNSUPPORTED_CAPABILITY")}};export{C as AssistantOutputFold,_e as NO_START_CAPABILITIES,pe as SUBAGENT_DESCRIPTOR_VERSION,x as SubagentDepthError,u as SubagentError,de as SubagentRunId,H as SubagentRuntime,H as default,z as appendDelegatedPolicyOverrides,U as applyChildComposition,Me as assertPositiveFinite,S as assertSubagentMaxDepth,R as assertUsableCwd,j as captureDelegatedPolicyOverrides,F as childSessionMeta,T as delegationDepthOf,P as finalAssistantOutput,I as foldSubagentDescriptor,M as resolveChildAgentOptions,je as resolveChildCwd,_ as resolveChildDepth,V as seedDescriptorTurn,He as settleRun,Ve as settleRunResult,E as snapshotSubagentDescriptor,Be as subprocessRunHandle,Ue as validateConfiguredCwd};
1
+ var Y=Object.defineProperty;var o=(e,t)=>Y(e,"name",{value:t,configurable:!0});import{Service as G}from"@deepseek-ai/cordis";import{scopeTarget as K}from"@deepseek-ai/dsh-scope";import{assertObjectJsonSchema as Z}from"@deepseek-ai/dsh-tools";import{HarnessError as J,boundContextSummary as X,createUserMessage as y,errorChain as g}from"@deepseek-ai/dsh-llm";import{randomUUID as A}from"node:crypto";import{foldConsumedWork as Q}from"@deepseek-ai/dsh-agent";import{Session as ee,SessionId as te,snapshotJsonValue as se}from"@deepseek-ai/dsh-session";import{z as p}from"zod";import{accessSync as ne,constants as ie,statSync as re}from"node:fs";import{isAbsolute as oe,resolve as ae}from"node:path";var u=class extends J{static{o(this,"SubagentError")}constructor(e,t,s){super(e,t,s),this.name="SubagentError"}};function T(e){const t=e.options.subagentDepth;if(t!==void 0&&(!Number.isSafeInteger(t)||t<0||Object.is(t,-0)))throw new TypeError("agent subagentDepth must be a non-negative safe integer");return Math.max(e.session.header.delegationDepth??0,t??0)}o(T,"delegationDepthOf");function S(e){if(e!==void 0&&(typeof e!="number"||!Number.isSafeInteger(e)||e<0||Object.is(e,-0)))throw new TypeError("subagent maxDepth must be a non-negative safe integer")}o(S,"assertSubagentMaxDepth");var C=class{static{o(this,"AssistantOutputFold")}message;partial=[];push(e){if(e.type==="assistant/message"){const t=e.data.message.content;t.length>0&&(this.message=t)}else e.type==="assistant/chunk"&&e.data.chunk.type==="text-delta"&&this.pushText(e.data.chunk.text)}pushText(e){e.length>0&&this.partial.push(e)}collect(){if(this.message!==void 0)return this.message;const e=this.partial.join("");return e.length>0?[{type:"text",text:e}]:void 0}};function P(e){const t=new C;for(const s of e)t.push(s);return t.collect()}o(P,"finalAssistantOutput");function de(e){return e}o(de,"SubagentRunId");function ce(e,t){return(s,n,i)=>{const a=i===void 0?[s,n]:[t(i),s,n];for(const r of e.events.dispatch("emit",a))try{const c=r(n);Promise.resolve(c).catch(l=>{e.logger.warn(`subagent: ${s} listener rejected: ${k(l)}`)})}catch(c){e.logger.warn(`subagent: ${s} listener threw: ${k(c)}`)}}}o(ce,"createLifecycleEmitter");function le(e,t,s,n){const i={runId:A(),provider:t,id:n.id,local:n.localAgent!==void 0};return n.result.then(a=>{e("subagent/end",{...i,stopReason:a.stopReason,...a.output.length===0?{}:{lastAssistantMessage:a.output}},s)},()=>{e("subagent/end",{...i,stopReason:"error"},s)}),e("subagent/start",i,s),n}o(le,"observeRun");function ue(e,t,s,n){const i={runId:A(),provider:t,id:s,local:!0};let a=0,r={stopReason:"completed"};const c=o(l=>l===void 0?r:{stopReason:"error"},"terminal");return{start:o(l=>{a=l.session.events.length,e("subagent/start",i,n)},"start"),capture:o(l=>{const d=l.session.events.slice(a),h=P(d);r={stopReason:he(d),...h===void 0?{}:{output:h}}},"capture"),terminal:c,settle:o(l=>{const{stopReason:d,output:h}=c(l);e("subagent/end",{...i,stopReason:d,...h===void 0?{}:{lastAssistantMessage:h}},n)},"settle")}}o(ue,"createActivationObserver");function he(e){const{end:t,droppedUnrun:s}=Q(e);switch(t?.data.reason.kind){case"max-tokens":return"max-tokens";case"aborted":case"interrupted":return"aborted";case"error":return"error";case"blocked":return"refusal";case void 0:case"completed":return s?"aborted":"completed";default:return"error"}}o(he,"epochStopReason");function k(e){try{return e instanceof Error?`${e.name}: ${e.message}`:String(e)}catch{return"<unrenderable thrown value>"}}o(k,"renderThrown");const pe=2,$=["version","mode","provider","label"],ge=new Set($),fe=new Set([...$,"agentProvider","agentModel","persona","toolFilter"]),be=new Set(["allow","deny"]);function N(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}o(N,"isRecord");function D(e,t,s){const n=Object.keys(e).find(i=>!t.has(i));if(n!==void 0)throw new Error(`persisted subagent descriptor ${s} has unknown field "${n}"`)}o(D,"assertKnownKeys");function m(e,t){if(!Object.hasOwn(e,t))return;const s=e[t];if(typeof s!="string")throw new Error(`persisted subagent descriptor ${t} must be a string`);return s}o(m,"optionalString");function L(e,t){if(!Object.hasOwn(e,t))return;const s=e[t];if(!Array.isArray(s))throw new Error(`persisted subagent descriptor toolFilter.${t} must be an array of strings`);const n=s;if(n.some(i=>typeof i!="string"))throw new Error(`persisted subagent descriptor toolFilter.${t} must be an array of strings`);return n}o(L,"optionalStringArray");function we(e){if(!N(e))throw new Error("persisted subagent descriptor toolFilter must be an object");D(e,be,"toolFilter");const t=L(e,"allow"),s=L(e,"deny");if(t===void 0&&s===void 0)throw new Error("persisted subagent descriptor toolFilter must declare allow and/or deny");return{...t!==void 0?{allow:t}:{},...s!==void 0?{deny:s}:{}}}o(we,"parseToolFilter");function me(e){if(!N(e))throw new Error("persisted subagent descriptor payload must be an object");const t=e.version;if(typeof t!="number")throw new Error("persisted subagent descriptor version must be a number");if(t!==2)return;const s=e.mode;if(s!=="one-shot"&&s!=="continuable")throw new Error('persisted subagent descriptor mode must be "one-shot" or "continuable"');D(e,s==="one-shot"?ge:fe,"payload");const n=e.provider;if(typeof n!="string")throw new Error("persisted subagent descriptor provider must be a string");if(s==="one-shot"){const d=m(e,"label");return{version:2,mode:s,provider:n,...d!==void 0?{label:d}:{}}}const i=e.label;if(typeof i!="string")throw new Error("persisted subagent descriptor label must be a string");const a=m(e,"agentProvider"),r=m(e,"agentModel"),c=m(e,"persona"),l=Object.hasOwn(e,"toolFilter")?we(e.toolFilter):void 0;return{version:2,mode:s,provider:n,label:i,...a!==void 0?{agentProvider:a}:{},...r!==void 0?{agentModel:r}:{},...c!==void 0?{persona:c}:{},...l!==void 0?{toolFilter:l}:{}}}o(me,"parseSubagentDescriptor");function E(e){const t=e.mode==="one-shot"?{version:2,mode:e.mode,provider:e.provider,...e.label!==void 0?{label:e.label}:{}}:{version:2,mode:e.mode,provider:e.provider,label:e.label,...e.agentProvider!==void 0?{agentProvider:e.agentProvider}:{},...e.agentModel!==void 0?{agentModel:e.agentModel}:{},...e.persona!==void 0?{persona:e.persona}:{},...e.toolFilter!==void 0?{toolFilter:e.toolFilter}:{}},s=se(t);if(s===void 0)throw new Error("subagent descriptor is not losslessly JSON-serializable");return s}o(E,"snapshotSubagentDescriptor");function I(e){const t=e.find(s=>s.type==="subagent/descriptor");if(t!==void 0)return me(t.data)}o(I,"foldSubagentDescriptor");var x=class extends Error{static{o(this,"SubagentDepthError")}attemptedDepth;maxDepth;constructor(e,t){super(`subagent depth ${e} exceeds maxDepth ${t}`),this.attemptedDepth=e,this.maxDepth=t,this.name="SubagentDepthError"}};function _(e,t){const s=T(e)+1;if(!Number.isSafeInteger(s))throw new RangeError("subagent child depth exceeds the safe-integer range");if(t!==void 0&&s>t)throw new x(s,t);return s}o(_,"resolveChildDepth");function M(e,t,s){const n=e.options.provider,i=e.options.model,a=e.options.maxTokens;return{...n!==void 0?{provider:n}:{},...i!==void 0?{model:i}:{},...a!==void 0?{maxTokens:a}:{},...t,subagentDepth:s}}o(M,"resolveChildAgentOptions");function F(e,t,s){const n=e.session.header,i=e.ctx.get("agentPresets")?.composedPreset(e.ctx);return{...n.cwd!==void 0?{cwd:n.cwd}:{},...i===void 0?{}:{agentPreset:i},parentSession:n.id,origin:"subagent",delegationDepth:t,...s>0?{seedLength:s}:{}}}o(F,"childSessionMeta");const ve="You are a delegated subagent: your permission scope was fixed when you were started and cannot be widened from inside this session — operations that require approval are rejected automatically. When the task needs access beyond that scope, do not retry the denied operation; state the limitation in your reply so the delegating agent can handle it.";function U(e,t,s){e.get("agentPresets")?.composeFrom(e,t.ctx),e.systemPrompt.context({name:"subagent:delegation",order:120,text:ve}),s.persona!==void 0&&e.systemPrompt.section({name:"deployment:persona",order:0,text:s.persona}),s.toolFilter!==void 0&&e.tools.restrict(s.toolFilter)}o(U,"applyChildComposition");function j(e){return{sandboxMode:e.ctx.get("sandboxPolicy")?.overrideOf(e.session),approvalPolicy:e.ctx.get("approval")===void 0?void 0:"never"}}o(j,"captureDelegatedPolicyOverrides");function z(e,t){t.sandboxMode!==void 0&&e.append("sandbox/mode",{mode:t.sandboxMode,source:"delegation"}),t.approvalPolicy!==void 0&&e.append("approval/policy",{policy:t.approvalPolicy,source:"delegation"})}o(z,"appendDelegatedPolicyOverrides");function V(e,t,s){const n=ee.create(e,t);return n.append("subagent/descriptor",s),[...n.events]}o(V,"seedDescriptorTurn");function v(e){return e.disposal}o(v,"disposalOf");function ye(e,t){const s=`Background subagent ${e}`;switch(t){case"completed":return`${s} finished and will do no further work unless you send it more.`;case"aborted":return`${s} was stopped before it finished.`;case"max-tokens":return`${s} ran out of room before it finished.`;case"refusal":return`${s} declined the task.`;case"error":return`${s} failed before it finished.`;default:return`${s} ended abnormally (${String(t)}) before it finished.`}}o(ye,"settlementSummary");var Ae=class{static{o(this,"ChildLock")}tails=new Map;run(e,t){const s=(this.tails.get(e)??Promise.resolve()).then(t,t),n=s.then(()=>{},()=>{});return this.tails.set(e,n),n.then(()=>{this.tails.get(e)===n&&this.tails.delete(e)}),s}},Se=class{static{o(this,"SubagentContinuationManager")}ctx;host;setupRegistry;activations=new Map;materializations=new Set;locks=new Ae;ownerCtx;closingScopes=new Map;draining=!1;constructor(e,t,s){this.ctx=e,this.host=t,this.setupRegistry=s;const n=e.plugin(o(function(){},"activationOwner"));this.ownerCtx=n.ctx,e.on("agent/disposed",({agent:i})=>{this.closingScopes.delete(i)}),e.effect(function*(){yield n.dispose,yield()=>this.drain()}.bind(this),"subagents.continuations()")}async startContinuable(e){const t=e.request,s=t.parent;this.assertAdmitting(s),this.requirePersistence(),S(t.maxDepth);const n=te(A()),i=_(s,t.maxDepth),a=t.agentOptions?.provider??s.options.provider,r=t.agentOptions?.model??s.options.model,c=E({mode:"continuable",provider:e.provider,label:e.label,...a!==void 0?{agentProvider:a}:{},...r!==void 0?{agentModel:r}:{},...t.persona!==void 0?{persona:t.persona}:{},...t.toolFilter!==void 0?{toolFilter:t.toolFilter}:{}}),l=j(s),d=await this.host.prepareContinuable(e.provider,{sessionId:n,parent:s,signal:e.signal});e.signal.throwIfAborted(),this.assertAdmitting(s);const h=d.seed?.length??0,f=V(n,d.seed,c);return{childId:n,messageId:await this.locks.run(n,async()=>{const w=await this.materialize({childId:n,provider:e.provider,parent:s,create:{seed:f,meta:F(s,i,h),delegatedPolicies:l},agentOptions:M(s,t.agentOptions,i),composition:{persona:t.persona,toolFilter:t.toolFilter},signal:e.signal});return this.submitMaterialized(w,t.prompt,{kind:"user"},s,e.signal)})}}async followup(e,t,s,n){for(this.assertAdmitting(e);;){const i=await this.locks.run(t,async()=>{const a=this.activations.get(t);return a===void 0?this.coldResume(e,t,s,n):a.disposal!==void 0?a.disposal.then(()=>{},()=>{}):this.submitAdmitted(a,s,n.source,e,n.signal)});if(i!==void 0)return i;this.assertAdmitting(e),n.signal.throwIfAborted()}}interrupt(e,t){if(t.kind==="ancestor"){const n=t.agent;if(this.ctx.agents.get(n.id)!==n)throw new u(`interrupting "${e}" requires the exact live ancestor agent`,"UNAUTHORIZED");if(n.id===e)throw new u(`agent "${n.id}" cannot interrupt itself`,"UNAUTHORIZED")}const s=this.activations.get(e);if(s!==void 0){if(t.kind==="user"){if(s.handle.agent.session.header.parentSession!==t.parentSessionId)throw new u(`subagent "${e}" belongs to another parent session`,"UNAUTHORIZED")}else if(!s.ancestry.has(t.agent))throw new u(`subagent "${e}" is not a live descendant of agent "${t.agent.id}"`,"UNAUTHORIZED");s.disposal===void 0&&s.handle.agent.cancel(t.kind==="user"?{kind:"user"}:{kind:"parent"},{keepInbox:!0})}}async reportFrom(e,t,s){s.signal.throwIfAborted(),this.assertAdmitting(e);const n=this.authorizeReporter(e),i=this.resolveReportParent(e);return this.deliverReport(n,i,t,s.delivery)}authorizeReporter(e){const t=this.activations.get(e.id);if(t===void 0||t.handle.agent!==e)throw new u(`agent "${e.id}" is not a live continuable subagent and cannot report`,"UNAUTHORIZED");if(t.disposal!==void 0)throw new u(`subagent "${e.id}" activation is being disposed; the report was not delivered`,"ACTIVATION_CLOSING");return t}resolveReportParent(e){const t=e.session.header.parentSession,s=t===void 0?void 0:this.ctx.agents.get(t);if(s===void 0)throw new u("direct parent is not live; report was not delivered","PARENT_UNAVAILABLE");return s}deliverReport(e,t,s,n){const i=y({content:[{type:"text",text:`Background subagent ${e.childId} reported:`},...s],source:{kind:"subagent-report",form:"relay",senderSessionId:e.childId}});return n==="wakeup"?this.sendWaking(t,i,()=>{this.sendReport(t,i,n)}):this.sendReport(t,i,n),i.id}sendWaking(e,t,s){const n=this.activations.get(e.id);n!==void 0&&n.handle.agent===e?this.admitWaking(n,t.id,s):s()}sendReport(e,t,s){try{s==="wakeup"?e.followup(t):e.inject(t)}catch(n){throw new u("direct parent is not live; report was not delivered","PARENT_UNAVAILABLE",{cause:n})}}async drain(){this.draining=!0,await Promise.all([...this.materializations].map(s=>s.settled));const e=new Set;for(const s of this.activations.values())for(const n of s.ownedChildren)e.add(n);const t=[...this.activations.values()].filter(s=>!e.has(s.childId));await this.disposeRoots(t,"activation(s)")}async drainDescendants(e){const t=new Set(e.filter(r=>this.ctx.agents.get(r.id)===r));if(t.size===0)return;for(const r of t)this.closingMembers(r).add(r);const s=[];for(const r of this.activations.values()){const c=this.liveLineage(r.handle.agent),l=[...t].filter(d=>r.handle.agent!==d&&r.ancestry.has(d));if(l.length!==0){s.push(r);for(const d of l){const h=this.closingMembers(d);h.add(r.handle.agent);for(const f of c)h.add(f)}}}const n=[...this.materializations].filter(r=>{const c=[...t].filter(l=>r.lineage.includes(l));for(const l of c){const d=this.closingMembers(l);for(const h of r.lineage)d.add(h)}return c.length>0}),i=new Set;for(const r of s)for(const c of r.ownedChildren)i.add(c);const a=s.filter(r=>!i.has(r.childId));for(const r of s)this.dispose(r).catch(()=>{});await Promise.all(n.map(r=>r.settled)),await this.disposeRoots(a,"scoped activation(s)")}async disposeRoots(e,t){const s=(await Promise.all(e.map(async n=>{try{await this.dispose(n);return}catch(i){return i}}))).filter(n=>n!==void 0);if(s.length>0)throw new u(`continuable subagent teardown failed for ${s.length} ${t}: `+s.map(n=>g(n)).join("; "),"ACTIVATION_TEARDOWN_FAILED")}closingMembers(e){const t=this.closingScopes.get(e);if(t!==void 0)return t;const s=new Set;return this.closingScopes.set(e,s),s}liveLineage(e){const t=[e],s=new Set([e.id]);let n=e.session.header.parentSession;for(;n!==void 0;){const i=this.ctx.agents.get(n);if(i===void 0||s.has(i.id))break;t.push(i),s.add(i.id),n=i.session.header.parentSession}return t}closingTeardownFor(e){if(this.draining)return"manager";const t=this.liveLineage(e);for(const[s,n]of this.closingScopes)if(n.has(e)||t.includes(s))return s}assertAdmitting(e){const t=this.closingTeardownFor(e);if(t!==void 0)throw new u(t==="manager"?"continuable subagents are draining; the operation was not admitted":`continuable subagents below parent "${t.id}" are draining; the operation was not admitted`,"DRAINING")}stateOf(e){return e.handle.agent.status==="running"||e.accepted.size>0?"running":e.ownedChildren.size>0?"waiting":"settled"}async coldResume(e,t,s,n){const i=this.requirePersistence();let a;try{a=await i.inspect(t,n.signal)}catch(l){throw n.signal.throwIfAborted(),new u(`subagent "${t}" is unavailable`,"NOT_RESUMABLE",{cause:l})}n.signal.throwIfAborted(),this.assertAdmitting(e),this.authorizeLineage(e,t,a.meta.parentSession);const r=I(a.events.slice(a.meta.seedLength??0));if(r===void 0||r.mode!=="continuable")throw new u(`subagent "${t}" has no supported continuation state and cannot be resumed; do not retry send_message with this id`,"NOT_RESUMABLE");let c;try{c=await this.materialize({childId:t,provider:r.provider,parent:e,agentOptions:{...r.agentProvider!==void 0?{provider:r.agentProvider}:{},...r.agentModel!==void 0?{model:r.agentModel}:{}},composition:{persona:r.persona,toolFilter:r.toolFilter},signal:n.signal})}catch(l){throw n.signal.throwIfAborted(),l instanceof u?l:new u(`subagent "${t}" is unavailable`,"NOT_RESUMABLE",{cause:l})}return this.submitMaterialized(c,s,n.source,e,n.signal)}async submitMaterialized(e,t,s,n,i){try{return this.submitAdmitted(e,t,s,n,i)}catch(a){throw await this.dispose(e).catch(()=>{}),a}}materialize(e){this.assertAdmitting(e.parent);const t=Promise.withResolvers(),s=this.liveLineage(e.parent),n={lineage:s,settled:t.promise};return this.materializations.add(n),this.materializeTracked(e,s).finally(()=>{this.materializations.delete(n),t.resolve()})}async materializeTracked(e,t){const{childId:s,provider:n,parent:i,create:a}=e;e.signal.throwIfAborted();const r=o(h=>(a!==void 0&&z(h.agent.session,a.delegatedPolicies),U(h,i,e.composition),this.setupRegistry.apply(h)),"setup"),c=this.host.observeActivation(n,s,i),l=a===void 0?await this.ownerCtx.agents.resume({resumeSessionId:s,agentOptions:e.agentOptions,signal:e.signal,setup:r}):await this.ownerCtx.agents.create({sessionId:s,meta:a.meta,seed:a.seed,agentOptions:e.agentOptions,signal:e.signal,setup:r}),d={childId:s,parentSession:i.id,provider:n,handle:l,ancestry:new WeakSet([l.agent,...t]),ownedChildren:new Set,observer:c,disposal:void 0,accepted:new Set,announced:!1,poke:Promise.withResolvers()};this.activations.set(s,d);try{e.signal.throwIfAborted(),this.assertAdmitting(i),this.acquireOwnership(i,s),l.agent.ctx.on("agent/inbox/claimed",({message:h})=>{d.accepted.delete(h.id)&&this.wake(d)}),l.agent.ctx.on("agent/inbox/discarded",({message:h})=>{d.accepted.delete(h.id)&&this.wake(d)}),c.start(l.agent)}catch(h){throw await this.rollbackUnpublished(d).catch(()=>{}),h}return this.watchSettlement(d),d}rollbackUnpublished(e){return e.disposal??=(async()=>{try{await e.handle.dispose()}finally{this.activations.delete(e.childId),this.releaseOwnership(e.childId)}})()}acquireOwnership(e,t){const s=this.activations.get(e.id);if(s!==void 0){if(s.disposal!==void 0)throw new u(`subagent parent "${e.id}" is being disposed; the child was not established`,"ACTIVATION_CLOSING");s.ownedChildren.add(t)}}releaseOwnership(e){for(const t of this.activations.values())t.ownedChildren.delete(e)&&this.wake(t)}wake(e){e.poke.resolve(),e.poke=Promise.withResolvers()}submit(e,t,s,n){this.acquireOwnership(n,e.childId);const i=y({content:t,source:s}),a=this.admitWaking(e,i.id,()=>{e.handle.agent.followup(i)});return e.announced=!0,a}admitWaking(e,t,s){e.accepted.add(t);try{s()}catch(n){throw e.accepted.delete(t),n}return this.wake(e),t}submitAdmitted(e,t,s,n,i){if(i.throwIfAborted(),this.assertAdmitting(n),v(e)!==void 0)throw new u(`subagent "${e.childId}" activation is being disposed; the message was not accepted`,"ACTIVATION_CLOSING");return this.authorizeLineage(n,e.childId,e.handle.agent.session.header.parentSession),this.submit(e,t,s,n)}authorizeLineage(e,t,s){if(this.ctx.agents.get(e.id)!==e)throw new u(`subagent "${t}" delivery requires the exact live parent agent`,"UNAUTHORIZED");if(s!==e.id)throw new u(`subagent "${t}" belongs to another parent session`,"UNAUTHORIZED")}watchSettlement(e){(async()=>{for(;v(e)===void 0;){const t=e.poke.promise;if(await Promise.race([e.handle.agent.whenIdle(),t]),v(e)!==void 0)return;const s=await this.locks.run(e.childId,()=>v(e)!==void 0||this.stateOf(e)!=="settled"?Promise.resolve({settling:!1}):Promise.resolve({settling:!0,done:this.dispose(e)}));if(!s.settling){e.handle.agent.status!=="running"&&await t;continue}try{await s.done}catch(n){this.ctx.logger.warn(`subagent "${e.childId}" activation teardown failed: ${g(n)}`)}return}})()}dispose(e){const t=e.disposal;if(t!==void 0)return t;const s=Promise.withResolvers();return e.disposal=s.promise,this.finishDisposal(e).then(s.resolve,s.reject),s.promise}async finishDisposal(e){this.wake(e);const{childId:t}=e;e.handle.agent.cancel({kind:"parent"});const s=e.handle.agent.whenIdle(),n=[...e.ownedChildren].map(r=>this.activations.get(r)).filter(r=>r!==void 0).map(r=>this.dispose(r)),i=[];try{const r=(await Promise.all(n.map(async c=>{try{await c;return}catch(l){return l}}))).filter(c=>c!==void 0);r.length>0&&i.push(new u(`subagent "${t}" child teardown failed: ${r.map(c=>g(c)).join("; ")}`,"ACTIVATION_TEARDOWN_FAILED")),await s,await this.flushFinalState(e),e.observer.capture(e.handle.agent)}catch(r){i.push(new u(`subagent "${t}" activation teardown failed: ${g(r)}`,"ACTIVATION_TEARDOWN_FAILED",{cause:r}))}try{await e.handle.dispose()}catch(r){i.push(new u(`subagent "${t}" activation handle disposal failed: ${g(r)}`,"ACTIVATION_TEARDOWN_FAILED",{cause:r}))}let a;if(i.length===1?a=i[0]:i.length>1&&(a=new u(`subagent "${t}" activation teardown failed at ${i.length} boundaries: `+i.map(r=>g(r)).join("; "),"ACTIVATION_TEARDOWN_FAILED",{cause:new AggregateError(i)})),this.activations.delete(t),this.notifySettlement(e,e.observer.terminal(a)),this.releaseOwnership(t),e.observer.settle(a),a!==void 0)throw a}notifySettlement(e,t){if(e.announced)try{const s=this.ctx.agents.get(e.parentSession);if(s===void 0)return;const n=ye(e.childId,t.stopReason),i=y({content:[{type:"text",text:n},...t.output===void 0?[{type:"text",text:"It left no closing message."}]:[{type:"text",text:"Its closing message:"},...t.output]],source:{kind:"subagent-settled",form:"notice",summary:X(n),senderSessionId:e.childId}});if(this.closingTeardownFor(s)!==void 0){s.inject(i);return}this.sendWaking(s,i,()=>{s.status==="idle"?s.followup(i):s.steer(i)})}catch(s){this.ctx.logger.warn(`subagent "${e.childId}" settlement notice was not delivered to its parent: `+g(s))}}async flushFinalState(e){const t=e.handle.agent;try{await t.ctx.sessions.flush(t.session)}catch(s){this.ctx.logger.warn(`subagent "${e.childId}" best-effort final session flush failed; the persisted state may be unavailable or stale on resume: ${g(s)}`)}}requirePersistence(){const e=this.ctx.get("sessionPersistence");if(e===void 0)throw new u("continuable subagents require session persistence (load a dsh-session-persistence backend)","PERSISTENCE_UNAVAILABLE");return e}};function Ee(e){return e.removed}o(Ee,"isRemoved");var Ie=class{static{o(this,"SubagentActivationSetupRegistry")}registrations=new Set;byChild=new Map;register(e){const t={contribution:e,removed:!1,installations:new Set};return this.registrations.add(t),()=>{t.removed||(t.removed=!0,this.registrations.delete(t),this.releaseAll([...t.installations],"contribution removal"))}}apply(e){const t={installations:[],invalidated:!1};try{for(const s of[...this.registrations]){if(s.removed)continue;const n={registration:s,childCtx:e,dispose:s.contribution(e),released:!1,transaction:t};s.installations.add(n),t.installations.push(n);let i=this.byChild.get(e);i===void 0&&(i=new Set,this.byChild.set(e,i)),i.add(n),Ee(s)&&this.release(n)}}catch(s){try{this.releaseAll([...t.installations],"setup rollback")}catch{}throw s}return e.effect(()=>()=>{this.releaseChild(e)},"subagents.activationSetup()"),{commit:o(()=>{if(t.invalidated)throw new u("a continuable-subagent setup contribution was revoked while this child was being built; the child was not established","ACTIVATION_SETUP_REVOKED");for(const s of t.installations)s.transaction=void 0},"commit")}}releaseChild(e){const t=this.byChild.get(e)??[];this.releaseAll([...t],"child scope disposal")}releaseAll(e,t){const s=[];for(const n of e)try{this.release(n)}catch(i){s.push(i)}if(s.length!==0)throw new u(`continuable-subagent setup ${t} failed to release ${s.length} installation(s): `+s.map(n=>g(n)).join("; "),"ACTIVATION_SETUP_RELEASE_FAILED")}release(e){if(e.released)return;e.released=!0,e.registration.installations.delete(e);const t=this.byChild.get(e.childCtx);t!==void 0&&(t.delete(e),t.size===0&&this.byChild.delete(e.childCtx)),e.transaction!==void 0&&(e.transaction.invalidated=!0),e.dispose()}};const Oe=4;async function Re(e,t,s){const n=await B(e,s);return(await q([...n.corpus.values()].filter(i=>i.header.parentSession===t&&i.header.origin==="subagent").sort(W),n,s)).filter(i=>i!==void 0)}o(Re,"listChildren");async function Te(e,t,s){const n=await B(e,s),i=Ce(n.corpus,t),a=await q(i.map(c=>c.record),n,s),r=[];return i.forEach((c,l)=>{const d=a[l];d!==void 0&&r.push({...d,parentId:c.parentId,depth:c.depth})}),r}o(Te,"listDescendants");async function B(e,t){const s=e.get("sessionProjections");if(s===void 0)throw new u("listing subagents requires the sessionProjections registry (load @deepseek-ai/dsh-session-projection)","SUBAGENT_CONTROL_PROJECTIONS_UNAVAILABLE");const n=e.get("sessions");if(n===void 0)throw new u("listing subagents requires the session store (load @deepseek-ai/dsh-session)","SUBAGENT_CONTROL_SESSION_STORE_UNAVAILABLE");b(t);const i=e.get("sessionPersistence"),a=e.get("sessionProjectionCache");let r=[];if(i!==void 0){try{r=await i.list(t)}catch(d){throw b(t),d}b(t)}const c=new Map;for(const d of r)c.set(d.id,{header:d,live:void 0});for(const d of n.list())c.set(d.header.id,{header:d.header,live:d});const l=new Set;for(const d of c.values())d.header.origin==="subagent"&&d.header.parentSession!==void 0&&l.add(d.header.parentSession);return{projections:s,persistence:i,cache:a,corpus:c,subagentParents:l}}o(B,"prepareListing");async function q(e,t,s){const{projections:n,persistence:i,cache:a,subagentParents:r}=t,c=Array.from({length:e.length}),l=[];if(e.forEach((d,h)=>{const f=d.header.id;if(d.live===void 0){l.push({index:h,header:d.header});return}let w;try{w=n.snapshot(d.live).values.subagent}catch{c[h]={kind:"diagnostic",id:f,reason:"corrupt"};return}w!=null&&(c[h]=O(f,w,"running",r.has(f)))}),i!==void 0&&l.length>0){const d=[...l];await Promise.all(Array.from({length:Math.min(Oe,d.length)},async()=>{for(let h=d.shift();h!==void 0;h=d.shift())c[h.index]=await Pe(i,n,a,h.header,r.has(h.header.id),s)}))}return b(s),c}o(q,"resolveCandidateRows");function Ce(e,t){const s=new Map;for(const r of e.values()){const c=r.header.parentSession;if(c===void 0)continue;const l=s.get(c);l===void 0?s.set(c,[r]):l.push(r)}for(const r of s.values())r.sort(W);const n=[],i=(s.get(t)??[]).map(r=>({record:r,parentId:t,depth:1})).reverse(),a=new Set([t]);for(;i.length>0;){const r=i.pop(),c=r.record.header.id;if(a.has(c))continue;a.add(c),r.record.header.origin==="subagent"&&n.push(r);const l=s.get(c)??[];for(const d of[...l].reverse())i.push({record:d,parentId:c,depth:r.depth+1})}return n}o(Ce,"descendantCandidates");function W(e,t){return e.header.createdAt-t.header.createdAt||e.header.id.localeCompare(t.header.id)}o(W,"compareCorpusRecords");async function Pe(e,t,s,n,i,a){const r=n.id;if(s!==void 0){let d;try{d=s.cachedSnapshot(n)?.values.subagent}catch{d=void 0}if(d!=null&&d.seq>=(n.seedLength??0))return O(r,d,"inactive",i)}b(a);let c;try{c=await e.inspect(r,a)}catch{return b(a),{kind:"diagnostic",id:r,reason:"unavailable"}}if(b(a),!$e(c.meta,n))return{kind:"diagnostic",id:r,reason:"corrupt"};let l;try{l=t.restore({},c.events,0).snapshot.values.subagent}catch{return{kind:"diagnostic",id:r,reason:"corrupt"}}return l==null?{kind:"diagnostic",id:r,reason:"corrupt"}:O(r,l,"inactive",i)}o(Pe,"resolveColdIdentity");function O(e,t,s,n){return t.mode==="one-shot"?{kind:"child",id:e,mode:"one-shot",...t.label!==void 0?{label:t.label}:{},activity:s,hasChildren:n}:{kind:"child",id:e,mode:"continuable",label:t.label,activity:s,hasChildren:n}}o(O,"childRow");const ke=["version","id","createdAt","cwd","parentSession","seedLength","delegationDepth"];function $e(e,t){return ke.every(s=>e[s]===t[s])}o($e,"sameLifecycle");function b(e){if(e?.aborted)throw new u("subagent listing was cancelled","CANCELLED")}o(b,"assertListingNotCancelled");const Ne={key:"subagentTiming",schema:p.object({settledMs:p.number().int().nonnegative(),active:p.object({since:p.number().int().nonnegative(),through:p.number().int().nonnegative()}).strict().optional()}).strict(),init:o(()=>({descriptorSeen:!1,settledMs:0}),"init"),apply:o((e,t)=>{if(t.type==="turn/start")return e.descriptorSeen?{...e,active:{since:t.time,through:t.time}}:{...e,pendingTurnStart:t.time};if(t.type==="subagent/descriptor"){const s=e.active?.since??e.pendingTurnStart;return{descriptorSeen:!0,settledMs:0,...s===void 0?{}:{active:{since:s,through:t.time}}}}if(t.type==="turn/end"){if(!e.descriptorSeen){if(e.pendingTurnStart===void 0)return e;const{pendingTurnStart:i,...a}=e;return a}if(e.active===void 0)return e;const{active:s,...n}=e;return{...n,settledMs:e.settledMs+Math.max(0,t.time-s.since)}}return e.active===void 0?e:{...e,active:{...e.active,through:t.time}}},"apply"),view:o(e=>({settledMs:e.settledMs,...e.active===void 0?{}:{active:e.active}}),"view"),stateVersion:2},De=p.discriminatedUnion("mode",[p.object({mode:p.literal("one-shot"),label:p.string().optional(),seq:p.number().int().nonnegative()}).strict(),p.object({mode:p.literal("continuable"),label:p.string(),seq:p.number().int().nonnegative()}).strict()]).nullable();function Le(e){let t;try{t=I([e])}catch{t=void 0}if(t!==void 0)return t.mode==="one-shot"?{mode:"one-shot",...t.label!==void 0?{label:t.label}:{},seq:e.seq}:{mode:"continuable",label:t.label,seq:e.seq}}o(Le,"descriptorIdentity");const xe={key:"subagent",schema:De,init:o(()=>({}),"init"),apply:o((e,t)=>{if(t.type!=="subagent/descriptor")return e;const s=Le(t);return s===void 0?{}:{identity:s}},"apply"),view:o(e=>e.identity??null,"view"),stateVersion:2},_e=Object.freeze({outputSchema:!1,depthLimit:!1,toolFilter:!1,persona:!1});function Me(e,t,s){if(!Number.isFinite(s)||s<=0)throw new Error(`${e}: ${t} must be a positive finite number`)}o(Me,"assertPositiveFinite");function Fe(e){try{return re(e).isDirectory()?(ne(e,ie.X_OK),!0):!1}catch{return!1}}o(Fe,"isEnterableDirectory");function R(e,t,s){if(!oe(s))throw new Error(`${e}: ${t} must be an absolute path: ${s}`);if(!Fe(s))throw new Error(`${e}: ${t} is not an accessible directory: ${s}`);return s}o(R,"assertUsableCwd");function Ue(e,t){if(t!==void 0){if(t==="")throw new Error(`${e}: config cwd must not be empty — omit the key to inherit the parent session cwd`);return R(e,"config cwd",ae(t))}}o(Ue,"validateConfiguredCwd");function je(e,t,s){if(t!==void 0)return t;if(s===void 0)throw new Error(`${e}: no working directory for the child — configure \`cwd\` or delegate from a parent session that has one`);return R(e,"parent session cwd",s)}o(je,"resolveChildCwd");function ze(e){return e instanceof Error?e:new Error(String(e))}o(ze,"toError");async function Ve(e){try{const t=await e.attempt();return e.cancelled()?{output:e.collectOutput(),stopReason:"aborted"}:t}catch(t){if(e.cancelled())return{output:e.collectOutput(),stopReason:"aborted"};try{e.onError?.(ze(t),"error")}catch{}return{output:e.collectOutput(),stopReason:"error"}}finally{e.signal.removeEventListener("abort",e.onAbort)}}o(Ve,"settleRunResult");function Be(e){let t;return{id:e.id,localAgent:void 0,result:e.result,dispose(){return t!==void 0||(e.signal.removeEventListener("abort",e.onAbort),e.requestCancel(),t=e.teardown()),t}}}o(Be,"subprocessRunHandle");function qe(e){return e.filter(t=>t.type==="text").map(t=>t.text).join("")}o(qe,"finalText");function We(e){switch(e.stopReason){case"completed":return{status:"completed",output:qe(e.output)};case"aborted":return{status:"killed"};case"error":case"max-tokens":case"refusal":return{status:"failed",detail:e.stopReason};default:return{status:"failed",detail:String(e.stopReason)}}}o(We,"runOutcome");async function He(e){let t;try{t=We(await e.result)}catch(s){t={status:"failed",detail:String(s)}}try{await e.dispose()}catch(s){return{status:"failed",detail:`${t.detail===void 0?"":`${t.detail}; `}dispose failed: ${String(s)}`}}return t}o(He,"settleRun");var H=class extends G{static{o(this,"SubagentRuntime")}providers=new Map;continuations;setupRegistry=new Ie;emitLifecycle;constructor(e){super(e,"subagents"),this.emitLifecycle=ce(this.ctx,t=>K(this,t)),e.inject(["agents"],t=>{const s=new Se(t,{prepareContinuable:o((n,i)=>this.prepareContinuable(n,i),"prepareContinuable"),observeActivation:o((n,i,a)=>this.observeActivation(n,i,a),"observeActivation")},this.setupRegistry);this.continuations=s,t.effect(()=>()=>{this.continuations===s&&(this.continuations=void 0)},"subagents.continuationBinding()")}),e.inject(["sessionProjections"],t=>{t.sessionProjections.register(Ne),t.sessionProjections.register(xe)})}async startContinuable(e){return this.requireContinuations().startContinuable(e)}async followup(e,t,s,n){return this.requireContinuations().followup(e,t,s,n)}interrupt(e,t){this.continuations?.interrupt(e,t)}async reportFrom(e,t,s){return this.requireContinuations().reportFrom(e,t,s)}registerContinuableSetup(e){return this.ctx.effect(()=>this.setupRegistry.register(e),"subagents.registerContinuableSetup()")}async drainContinuableDescendants(e){const t=this.continuations;t!==void 0&&await t.drainDescendants(e)}listChildren(e,t){return Re(this.ctx,e,t)}listDescendants(e,t){return Te(this.ctx,e,t)}registerProvider(e){const t=e.name;return this.ctx.effect(function*(){if(this.providers.has(t))throw new u(`a subagent provider named "${t}" is already registered`,"DUPLICATE_PROVIDER");this.providers.set(t,e),yield()=>{this.providers.delete(t),this.emitLifecycle("subagent/provider-removed",t)},this.ctx.emit("subagent/provider-added",e)}.bind(this),"subagents.registerProvider()")}getProvider(e){return this.providers.get(e)}list(){return[...this.providers.keys()]}async start(e,t){const s=this.expectProvider(e);this.assertCapabilities(s,t),S(t.maxDepth),t.outputSchema!==void 0&&Z(t.outputSchema);const n=E({mode:"one-shot",provider:e,...t.label!==void 0?{label:t.label}:{}}),i={...t,descriptor:n};return le(this.emitLifecycle,e,t.parent,await s.start(i))}async prepareContinuable(e,t){const s=this.expectProvider(e);if(s.prepareContinuable===void 0)throw new u(`subagent provider "${s.name}" does not support continuable children (no prepareContinuable capability)`,"UNSUPPORTED_CAPABILITY");return s.prepareContinuable(t)}expectProvider(e){const t=this.providers.get(e);if(t===void 0)throw new u(`no subagent provider registered for "${e}"`,"NO_PROVIDER");return t}requireContinuations(){if(this.continuations===void 0)throw new u("continuable subagents require the agents service","CONTINUATION_UNAVAILABLE");return this.continuations}observeActivation(e,t,s){return ue(this.emitLifecycle,e,t,s)}assertCapabilities(e,t){const s=[{when:t.outputSchema!==void 0,cap:"outputSchema"},{when:t.maxDepth!==void 0,cap:"depthLimit"},{when:t.toolFilter!==void 0,cap:"toolFilter"},{when:t.persona!==void 0,cap:"persona"}];for(const{when:n,cap:i}of s)if(n&&!e.capabilities[i])throw new u(`subagent provider "${e.name}" does not support the "${i}" capability`,"UNSUPPORTED_CAPABILITY")}};export{C as AssistantOutputFold,_e as NO_START_CAPABILITIES,pe as SUBAGENT_DESCRIPTOR_VERSION,x as SubagentDepthError,u as SubagentError,de as SubagentRunId,H as SubagentRuntime,H as default,z as appendDelegatedPolicyOverrides,U as applyChildComposition,Me as assertPositiveFinite,S as assertSubagentMaxDepth,R as assertUsableCwd,j as captureDelegatedPolicyOverrides,F as childSessionMeta,T as delegationDepthOf,P as finalAssistantOutput,I as foldSubagentDescriptor,M as resolveChildAgentOptions,je as resolveChildCwd,_ as resolveChildDepth,V as seedDescriptorTurn,He as settleRun,Ve as settleRunResult,E as snapshotSubagentDescriptor,Be as subprocessRunHandle,Ue as validateConfiguredCwd};
@@ -1 +1 @@
1
- {"name":"@deepseek-ai/dsh-subagent","version":"0.0.11","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./client":{"types":"./lib/types/client.d.ts","default":"./lib/types/client.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","dependencies":{"zod":"^4.4.3"},"peerDependencies":{"@deepseek-ai/dsh-agent-presets":"^0.0.11","@deepseek-ai/dsh-brand":"^0.0.11","@deepseek-ai/dsh-invariants":"^0.0.11","@deepseek-ai/dsh-llm":"^0.0.11","@deepseek-ai/dsh-sandbox":"^0.0.11","@deepseek-ai/dsh-scope":"^0.0.11","@deepseek-ai/dsh-sandbox-policy":"^0.0.11","@deepseek-ai/dsh-session":"^0.0.11","@deepseek-ai/dsh-session-persistence":"^0.0.11","@deepseek-ai/dsh-session-projection":"^0.0.11","@deepseek-ai/dsh-session-projection-cache":"^0.0.11","@deepseek-ai/dsh-agent":"^0.0.11","@deepseek-ai/dsh-jobs":"^0.0.11","@deepseek-ai/dsh-user-approval":"^0.0.11","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-tools":"^0.0.11"},"peerDependenciesMeta":{"@deepseek-ai/dsh-agent-presets":{"optional":true},"@deepseek-ai/dsh-sandbox":{"optional":true},"@deepseek-ai/dsh-sandbox-policy":{"optional":true},"@deepseek-ai/dsh-session-persistence":{"optional":true},"@deepseek-ai/dsh-session-projection":{"optional":true},"@deepseek-ai/dsh-session-projection-cache":{"optional":true},"@deepseek-ai/dsh-jobs":{"optional":true},"@deepseek-ai/dsh-user-approval":{"optional":true}}}
1
+ {"name":"@deepseek-ai/dsh-subagent","version":"0.0.13","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./client":{"types":"./lib/types/client.d.ts","default":"./lib/types/client.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","dependencies":{"zod":"^4.4.3"},"peerDependencies":{"@deepseek-ai/dsh-agent":"^0.0.13","@deepseek-ai/dsh-brand":"^0.0.13","@deepseek-ai/dsh-invariants":"^0.0.13","@deepseek-ai/dsh-agent-presets":"^0.0.13","@deepseek-ai/dsh-llm":"^0.0.13","@deepseek-ai/dsh-sandbox":"^0.0.13","@deepseek-ai/dsh-sandbox-policy":"^0.0.13","@deepseek-ai/dsh-scope":"^0.0.13","@deepseek-ai/dsh-session-persistence":"^0.0.13","@deepseek-ai/dsh-session-projection":"^0.0.13","@deepseek-ai/dsh-session-projection-cache":"^0.0.13","@deepseek-ai/dsh-jobs":"^0.0.13","@deepseek-ai/dsh-session":"^0.0.13","@deepseek-ai/dsh-tools":"^0.0.13","@deepseek-ai/dsh-user-approval":"^0.0.13","@deepseek-ai/cordis":"^4.0.1"},"peerDependenciesMeta":{"@deepseek-ai/dsh-agent-presets":{"optional":true},"@deepseek-ai/dsh-sandbox":{"optional":true},"@deepseek-ai/dsh-sandbox-policy":{"optional":true},"@deepseek-ai/dsh-session-persistence":{"optional":true},"@deepseek-ai/dsh-session-projection":{"optional":true},"@deepseek-ai/dsh-session-projection-cache":{"optional":true},"@deepseek-ai/dsh-jobs":{"optional":true},"@deepseek-ai/dsh-user-approval":{"optional":true}}}
@@ -1 +1 @@
1
- {"name":"@deepseek-ai/dsh-subagent-fork-in-process","version":"0.0.11","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-invariants":"^0.0.11","@deepseek-ai/dsh-session":"^0.0.11","@deepseek-ai/dsh-subagent":"^0.0.11","@deepseek-ai/dsh-subagent-in-process-driver":"^0.0.11","@deepseek-ai/dsh-agent":"^0.0.11","@deepseek-ai/cordis":"^4.0.1"},"dependencies":{"@deepseek-ai/schemastery":"^3.18.1"}}
1
+ {"name":"@deepseek-ai/dsh-subagent-fork-in-process","version":"0.0.13","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-session":"^0.0.13","@deepseek-ai/dsh-subagent":"^0.0.13","@deepseek-ai/dsh-agent":"^0.0.13","@deepseek-ai/dsh-subagent-in-process-driver":"^0.0.13","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-invariants":"^0.0.13"},"dependencies":{"@deepseek-ai/schemastery":"^3.18.1"}}
@@ -1 +1 @@
1
- {"name":"@deepseek-ai/dsh-subagent-in-process-driver","version":"0.0.11","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-invariants":"^0.0.11","@deepseek-ai/dsh-llm":"^0.0.11","@deepseek-ai/dsh-agent":"^0.0.11","@deepseek-ai/dsh-session":"^0.0.11","@deepseek-ai/dsh-system-prompt":"^0.0.11","@deepseek-ai/dsh-tools":"^0.0.11","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-subagent":"^0.0.11"}}
1
+ {"name":"@deepseek-ai/dsh-subagent-in-process-driver","version":"0.0.13","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-agent":"^0.0.13","@deepseek-ai/dsh-llm":"^0.0.13","@deepseek-ai/dsh-system-prompt":"^0.0.13","@deepseek-ai/dsh-subagent":"^0.0.13","@deepseek-ai/dsh-session":"^0.0.13","@deepseek-ai/dsh-tools":"^0.0.13","@deepseek-ai/dsh-invariants":"^0.0.13","@deepseek-ai/cordis":"^4.0.1"}}
@@ -1 +1 @@
1
- {"name":"@deepseek-ai/dsh-subagent-spawn-in-process","version":"0.0.11","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-subagent":"^0.0.11","@deepseek-ai/dsh-invariants":"^0.0.11","@deepseek-ai/dsh-subagent-in-process-driver":"^0.0.11","@deepseek-ai/cordis":"^4.0.1"},"dependencies":{"@deepseek-ai/schemastery":"^3.18.1"}}
1
+ {"name":"@deepseek-ai/dsh-subagent-spawn-in-process","version":"0.0.13","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-invariants":"^0.0.13","@deepseek-ai/dsh-subagent":"^0.0.13","@deepseek-ai/dsh-subagent-in-process-driver":"^0.0.13","@deepseek-ai/cordis":"^4.0.1"},"dependencies":{"@deepseek-ai/schemastery":"^3.18.1"}}
@@ -1 +1 @@
1
- {"name":"@deepseek-ai/dsh-subprocess","version":"0.0.11","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-invariants":"^0.0.11","@deepseek-ai/cordis":"^4.0.1"}}
1
+ {"name":"@deepseek-ai/dsh-subprocess","version":"0.0.13","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-invariants":"^0.0.13","@deepseek-ai/cordis":"^4.0.1"}}
@@ -1 +1 @@
1
- {"name":"@deepseek-ai/dsh-subprocess-local","version":"0.0.11","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-invariants":"^0.0.11","@deepseek-ai/dsh-subprocess":"^0.0.11","@deepseek-ai/dsh-timeout":"^0.0.11","@deepseek-ai/cordis":"^4.0.1"},"dependencies":{"node-pty":"^1.1.0"}}
1
+ {"name":"@deepseek-ai/dsh-subprocess-local","version":"0.0.13","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-invariants":"^0.0.13","@deepseek-ai/dsh-timeout":"^0.0.13","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-subprocess":"^0.0.13"},"dependencies":{"node-pty":"^1.1.0"}}
@@ -1 +1 @@
1
- {"name":"@deepseek-ai/dsh-system-prompt","version":"0.0.11","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-invariants":"^0.0.11","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-scope":"^0.0.11","@deepseek-ai/dsh-llm":"^0.0.11"},"dependencies":{"@deepseek-ai/schemastery":"^3.18.1"}}
1
+ {"name":"@deepseek-ai/dsh-system-prompt","version":"0.0.13","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-llm":"^0.0.13","@deepseek-ai/dsh-invariants":"^0.0.13","@deepseek-ai/dsh-scope":"^0.0.13","@deepseek-ai/cordis":"^4.0.1"},"dependencies":{"@deepseek-ai/schemastery":"^3.18.1"}}
@@ -1 +1 @@
1
- {"name":"@deepseek-ai/dsh-terminal","version":"0.0.11","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-agent":"^0.0.11","@deepseek-ai/dsh-brand":"^0.0.11","@deepseek-ai/dsh-invariants":"^0.0.11","@deepseek-ai/cordis":"^4.0.1"}}
1
+ {"name":"@deepseek-ai/dsh-terminal","version":"0.0.13","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-agent":"^0.0.13","@deepseek-ai/dsh-invariants":"^0.0.13","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-brand":"^0.0.13"}}
@@ -1,10 +1,10 @@
1
- var T=Object.defineProperty;var o=(t,e)=>T(t,"name",{value:e,configurable:!0});import{TerminalBackendCleanupError as y,TerminalError as P}from"@deepseek-ai/dsh-terminal";import{effectiveSandboxMode as E}from"@deepseek-ai/dsh-sandbox-policy";import l from"@deepseek-ai/schemastery";import{Buffer as p}from"node:buffer";const A=l.object({backendType:l.string().default("shell"),shellPath:l.string().default("/bin/bash"),shellArgs:l.array(l.string()).default(["--noprofile","--norc","-i"]),rows:l.number().default(40),cols:l.number().default(160),scrollbackLines:l.number().default(1e4),scrollbackMaxBytes:l.number().default(4*1024*1024),maxReadBytes:l.number().default(256*1024),pollIntervalMs:l.number().default(50),exactProbeAfterMs:l.number().default(150),idleSilenceMs:l.number().default(3e3),handoffGraceMs:l.number().default(500),timeoutMs:l.number().default(3e4),disposeGraceMs:l.number().default(3e3)});function S(t){const e=t;if(e.backendType.length===0)throw new Error("terminal-bash: backendType must be non-empty");if(e.shellPath.length===0)throw new Error("terminal-bash: shellPath must be non-empty");for(const[i,s]of Object.entries(e))if(typeof s=="number"&&(!Number.isSafeInteger(s)||s<=0))throw new Error(`terminal-bash: ${i} must be a positive safe integer`);if(e.maxReadBytes>e.scrollbackMaxBytes)throw new Error("terminal-bash: maxReadBytes must not exceed scrollbackMaxBytes");if(e.handoffGraceMs<e.pollIntervalMs)throw new Error("terminal-bash: handoffGraceMs must be at least pollIntervalMs so one readiness poll runs inside the grace window")}o(S,"validateConfig");const g="dsh> ";var R=class{static{o(this,"TerminalSanitizer")}maxPendingBytes;pending="";discardMode;discardOscEscape=!1;trailingCarriageReturn=!1;trackingPromptTail=!1;constructor(t){this.maxPendingBytes=t}push(t){this.pending+=this.discardPrefix(t);let e="",i=!1,s=this.trackingPromptTail,n="",r=0;const h=o(a=>{e+=a,this.trackingPromptTail&&(n+=a)},"appendText");for(;r<this.pending.length;){const a=this.pending.indexOf("\x1B",r);if(a<0){h(this.pending.slice(r)),r=this.pending.length;break}if(h(this.pending.slice(r,a)),a+1>=this.pending.length){r=a;break}const d=this.pending[a+1];if(d==="]"){const c=this.pending.indexOf("\x07",a+2),u=this.pending.indexOf("\x1B\\",a+2);let f=-1;if(c>=0&&u>=0?f=Math.min(c+1,u+2):c>=0?f=c+1:u>=0&&(f=u+2),f<0){r=a;break}const x=this.pending[f-1]==="\x07"?1:2;this.pending.slice(a+2,f-x).startsWith("133;D;")&&(i=!0,this.trackingPromptTail=!0,s=!0,n=""),r=f;continue}if(d==="["){let c=a+2;for(;c<this.pending.length;){const u=this.pending.charCodeAt(c);if(u>=64&&u<=126)break;c+=1}if(c>=this.pending.length){r=a;break}r=c+1;continue}r=a+2}return this.pending=this.pending.slice(r),this.enforcePendingBound(),{text:this.normalizeText(e),prompt:i,...s?{promptTail:n}:{}}}flush(){const t=this.pending.startsWith("\x1B")?"":this.pending;this.pending="",this.discardMode=void 0,this.discardOscEscape=!1,this.trackingPromptTail=!1;const e=this.normalizeText(t);return this.trailingCarriageReturn?(this.trailingCarriageReturn=!1,`${e}
1
+ var T=Object.defineProperty;var o=(t,e)=>T(t,"name",{value:e,configurable:!0});import{TerminalBackendCleanupError as y,TerminalError as P}from"@deepseek-ai/dsh-terminal";import{effectiveSandboxMode as E}from"@deepseek-ai/dsh-sandbox-policy";import l from"@deepseek-ai/schemastery";import{Buffer as p}from"node:buffer";const A=l.object({backendType:l.string().default("shell"),shellPath:l.string().default("/bin/bash"),shellArgs:l.array(l.string()).default(["--noprofile","--norc","-i"]),rows:l.number().default(40),cols:l.number().default(160),scrollbackLines:l.number().default(1e4),scrollbackMaxBytes:l.number().default(4194304),maxReadBytes:l.number().default(262144),pollIntervalMs:l.number().default(50),exactProbeAfterMs:l.number().default(150),idleSilenceMs:l.number().default(3e3),handoffGraceMs:l.number().default(500),timeoutMs:l.number().default(3e4),disposeGraceMs:l.number().default(3e3)});function S(t){const e=t;if(e.backendType.length===0)throw new Error("terminal-bash: backendType must be non-empty");if(e.shellPath.length===0)throw new Error("terminal-bash: shellPath must be non-empty");for(const[i,s]of Object.entries(e))if(typeof s=="number"&&(!Number.isSafeInteger(s)||s<=0))throw new Error(`terminal-bash: ${i} must be a positive safe integer`);if(e.maxReadBytes>e.scrollbackMaxBytes)throw new Error("terminal-bash: maxReadBytes must not exceed scrollbackMaxBytes");if(e.handoffGraceMs<e.pollIntervalMs)throw new Error("terminal-bash: handoffGraceMs must be at least pollIntervalMs so one readiness poll runs inside the grace window")}o(S,"validateConfig");const g="dsh> ";var R=class{static{o(this,"TerminalSanitizer")}maxPendingBytes;pending="";discardMode;discardOscEscape=!1;trailingCarriageReturn=!1;trackingPromptTail=!1;constructor(t){this.maxPendingBytes=t}push(t){this.pending+=this.discardPrefix(t);let e="",i=!1,s=this.trackingPromptTail,n="",r=0;const h=o(a=>{e+=a,this.trackingPromptTail&&(n+=a)},"appendText");for(;r<this.pending.length;){const a=this.pending.indexOf("\x1B",r);if(a<0){h(this.pending.slice(r)),r=this.pending.length;break}if(h(this.pending.slice(r,a)),a+1>=this.pending.length){r=a;break}const d=this.pending[a+1];if(d==="]"){const c=this.pending.indexOf("\x07",a+2),u=this.pending.indexOf("\x1B\\",a+2);let f=-1;if(c>=0&&u>=0?f=Math.min(c+1,u+2):c>=0?f=c+1:u>=0&&(f=u+2),f<0){r=a;break}const x=this.pending[f-1]==="\x07"?1:2;this.pending.slice(a+2,f-x).startsWith("133;D;")&&(i=!0,this.trackingPromptTail=!0,s=!0,n=""),r=f;continue}if(d==="["){let c=a+2;for(;c<this.pending.length;){const u=this.pending.charCodeAt(c);if(u>=64&&u<=126)break;c+=1}if(c>=this.pending.length){r=a;break}r=c+1;continue}r=a+2}return this.pending=this.pending.slice(r),this.enforcePendingBound(),{text:this.normalizeText(e),prompt:i,...s?{promptTail:n}:{}}}flush(){const t=this.pending.startsWith("\x1B")?"":this.pending;this.pending="",this.discardMode=void 0,this.discardOscEscape=!1,this.trackingPromptTail=!1;const e=this.normalizeText(t);return this.trailingCarriageReturn?(this.trailingCarriageReturn=!1,`${e}
2
2
  `):e}normalizeText(t){let e=this.trailingCarriageReturn?`\r${t}`:t;return this.trailingCarriageReturn=!1,e.endsWith("\r")&&(e=e.slice(0,-1),this.trailingCarriageReturn=!0),M(e)}enforcePendingBound(){p.byteLength(this.pending)<=this.maxPendingBytes||(this.discardMode=this.pending[1]==="]"?"osc":"csi",this.pending="")}discardPrefix(t){if(this.discardMode===void 0)return t;if(this.discardMode==="csi"){for(let i=0;i<t.length;i+=1){const s=t.charCodeAt(i);if(s>=64&&s<=126)return this.discardMode=void 0,t.slice(i+1)}return""}let e=0;if(this.discardOscEscape&&(this.discardOscEscape=!1,t.startsWith("\\")))return this.discardMode=void 0,t.slice(1);for(;e<t.length;){if(t[e]==="\x07")return this.discardMode=void 0,t.slice(e+1);if(t[e]==="\x1B"){if(t[e+1]==="\\")return this.discardMode=void 0,t.slice(e+2);e+1===t.length&&(this.discardOscEscape=!0)}e+=1}return""}};function M(t){return t.replaceAll(`\r
3
3
  `,`
4
4
  `).replaceAll("\r",`
5
5
  `).replaceAll("\x07","")}o(M,"normalizeTerminalText");function m(t,e){if(p.byteLength(t)<=e)return{text:t,truncated:!1};const i=Array.from(t);let s=0,n=i.length;for(;n>0;){const r=p.byteLength(i[n-1]);if(s+r>e)break;s+=r,n-=1}return{text:i.slice(n).join(""),truncated:!0}}o(m,"utf8Tail");var v=class{static{o(this,"BoundedTextBuffer")}maxBytes;maxLines;value="";dropped=!1;constructor(t,e){this.maxBytes=t,this.maxLines=e}append(t){if(t.length===0)return;if(this.value+=t,this.maxLines!==void 0){const i=this.value.split(`
6
6
  `);i.length>this.maxLines&&(this.value=i.slice(i.length-this.maxLines).join(`
7
- `),this.dropped=!0)}const e=m(this.value,this.maxBytes);this.value=e.text,this.dropped||=e.truncated}consume(){const t=this.value,e=this.dropped;return this.value="",this.dropped=!1,{delta:t,truncated:e}}snapshot(){return{text:this.value,truncated:this.dropped}}},O=class{static{o(this,"LocalSendOperation")}startedAt;onCancel;output;promise;finished=!1;cancellationRequested=!1;initialForegroundLeftWait;initialForegroundPgid;constructor(t,e,i){this.startedAt=e,this.onCancel=i,this.output=new v(t),this.promise=Promise.withResolvers(),this.initialForegroundLeftWait=!0}get done(){return this.promise.promise}get settled(){return this.finished}get cancelRequested(){return this.cancellationRequested}append(t){this.finished||this.output.append(t)}settle(t,e,i){if(this.finished)return;this.finished=!0;const s=this.output.snapshot();this.promise.resolve({viewport:s.text,waitReason:t,sessionStatus:e,truncated:s.truncated||i})}fail(t){this.finished||(this.finished=!0,this.promise.reject(t))}readOutput(){return this.output.consume()}setInitialForeground(t){this.initialForegroundPgid=t?.processGroupId,this.initialForegroundLeftWait=t?.inputWaiting!==!0}acceptsStdinWait(t,e){return t!==this.initialForegroundPgid?e:(e||(this.initialForegroundLeftWait=!0),e&&this.initialForegroundLeftWait)}cancel(){return this.finished?!1:(this.cancellationRequested=!0,this.onCancel(),!0)}},B=class{static{o(this,"LocalPtySession")}terminal;config;motd="";pid;decoder=new TextDecoder;sanitizer;scrollback;outputEnded=Promise.withResolvers();completion;statusValue={kind:"running"};active;activeTimer;activeDeadlineTimer;activeAbort;interrupting;activeWrite;pollingReady;polling=!1;promptSeen=!1;promptTextSeen=!1;promptTail="";shellPgid;initializing=!1;lastOutputAt=Date.now();closing=!1;closePromise;transportFailure;constructor(t,e){this.terminal=t,this.config=e,this.pid=t.pid,this.sanitizer=new R(e.maxReadBytes),this.scrollback=new v(e.scrollbackMaxBytes,e.scrollbackLines),t.output.on("data",this.onTerminalData),t.output.once("end",this.onTerminalEnd),t.output.once("error",this.onTerminalError),this.completion=t.done.then(i=>this.onExit(i),i=>{this.onTransportFailure(i)})}async initialize(t){this.initializing=!0;try{const e=await this.startSend({text:"",submit:!1,...t!==void 0?{signal:t}:{}}).done;if(e.waitReason==="session_exit")throw new Error("PTY shell exited during startup");if(e.waitReason==="timeout")throw new Error("PTY shell did not reach readiness before startup timeout");this.motd=e.viewport}catch(e){throw t?.throwIfAborted(),e}finally{this.initializing=!1}}startSend(t){if(this.closing)throw new Error("PTY session is closing");if(this.statusValue.kind==="exited")throw new Error("PTY session has exited");if(this.active!==void 0)throw new P(`PTY session already has an active send${this.activeWrite!==void 0?" or draining provider write":this.interrupting!==void 0?" or draining foreground interrupt":""}`,"SEND_ACTIVE");if(t.signal?.aborted===!0)throw new Error("PTY send aborted before write");const e=new O(this.config.maxReadBytes,Date.now(),()=>{this.interrupt(e)});if(this.active=e,this.resetReadinessEvidence(),t.signal!==void 0){const i=o(()=>{e.cancel()},"onAbort");t.signal.addEventListener("abort",i,{once:!0}),this.activeAbort=()=>t.signal?.removeEventListener("abort",i)}return this.activeDeadlineTimer=setTimeout(()=>{this.active===e&&this.settleActive("timeout",this.activeWrite!==void 0||this.interrupting===e)},this.config.timeoutMs),this.beginSend(e,t),e}async beginSend(t,e){let i;try{i=await this.terminal.inspectForeground()}catch(s){this.active===t&&!this.closing&&this.interrupting!==t&&this.failActive(s);return}try{if(this.active!==t||this.closing||this.interrupting===t)return;t.setInitialForeground(i);const s=`${e.text}${e.submit?"\r":""}`;if(s.length>0&&!t.cancelRequested){this.resetReadinessEvidence();const n=this.terminal.write(s);this.activeWrite=n.then(()=>!0,()=>!1);try{await n}finally{this.activeWrite=void 0}}if(t.cancelRequested)return;if(this.active===t&&t.settled){this.clearActive();return}this.active===t&&!this.closing&&(this.pollingReady=t,this.schedulePoll(t))}catch(s){this.active===t&&!this.closing&&(t.settled?this.clearActive():this.failActive(s))}}resetReadinessEvidence(){this.lastOutputAt=Date.now(),this.promptSeen=!1,this.promptTextSeen=!1,this.promptTail=""}read(t){const e=this.scrollback.snapshot(),i=e.text.split(`
7
+ `),this.dropped=!0)}const e=m(this.value,this.maxBytes);this.value=e.text,this.dropped||=e.truncated}consume(){const t=this.value,e=this.dropped;return this.value="",this.dropped=!1,{delta:t,truncated:e}}snapshot(){return{text:this.value,truncated:this.dropped}}},O=class{static{o(this,"LocalSendOperation")}startedAt;onCancel;output;promise;finished=!1;cancellationRequested=!1;initialForegroundLeftWait;initialForegroundPgid;constructor(t,e,i){this.startedAt=e,this.onCancel=i,this.output=new v(t),this.promise=Promise.withResolvers(),this.initialForegroundLeftWait=!0}get done(){return this.promise.promise}get settled(){return this.finished}get cancelRequested(){return this.cancellationRequested}append(t){this.finished||this.output.append(t)}settle(t,e,i){if(this.finished)return;this.finished=!0;const s=this.output.snapshot();this.promise.resolve({viewport:s.text,waitReason:t,sessionStatus:e,truncated:s.truncated||i})}fail(t){this.finished||(this.finished=!0,this.promise.reject(t))}readOutput(){return this.output.consume()}setInitialForeground(t){this.initialForegroundPgid=t?.processGroupId,this.initialForegroundLeftWait=t?.inputWaiting!==!0}acceptsStdinWait(t,e){return t!==this.initialForegroundPgid?e:(e||(this.initialForegroundLeftWait=!0),e&&this.initialForegroundLeftWait)}cancel(){return this.finished?!1:(this.cancellationRequested=!0,this.onCancel(),!0)}},B=class{static{o(this,"LocalPtySession")}terminal;config;motd="";pid;decoder=new TextDecoder;sanitizer;scrollback;outputEnded=Promise.withResolvers();completion;statusValue={kind:"running"};active;activeTimer;activeDeadlineTimer;activeAbort;interrupting;activeWrite;pollingReady;polling=!1;promptSeen=!1;promptTextSeen=!1;promptTail="";shellPgid;initializing=!1;lastOutputAt=Date.now();closing=!1;closePromise;transportFailure;constructor(t,e){this.terminal=t,this.config=e,this.pid=t.pid,this.sanitizer=new R(e.maxReadBytes),this.scrollback=new v(e.scrollbackMaxBytes,e.scrollbackLines),t.output.on("data",this.onTerminalData),t.output.once("end",this.onTerminalEnd),t.output.once("error",this.onTerminalError),this.completion=t.done.then(i=>this.onExit(i),i=>{this.onTransportFailure(i)})}async initialize(t){this.initializing=!0;try{const e=await this.startSend({text:"",submit:!1,...t!==void 0?{signal:t}:{}}).done;if(e.waitReason==="session_exit")throw new Error("PTY shell exited during startup");if(e.waitReason==="timeout")throw new Error("PTY shell did not reach readiness before startup timeout");this.motd=e.viewport}catch(e){throw t?.throwIfAborted(),e}finally{this.initializing=!1}}startSend(t){if(this.closing)throw new Error("PTY session is closing");if(this.statusValue.kind==="exited")throw new Error("PTY session has exited");if(this.active!==void 0){const i=this.activeWrite!==void 0?" or draining provider write":this.interrupting!==void 0?" or draining foreground interrupt":"";throw new P(`PTY session already has an active send${i}`,"SEND_ACTIVE")}if(t.signal?.aborted===!0)throw new Error("PTY send aborted before write");const e=new O(this.config.maxReadBytes,Date.now(),()=>{this.interrupt(e)});if(this.active=e,this.resetReadinessEvidence(),t.signal!==void 0){const i=o(()=>{e.cancel()},"onAbort");t.signal.addEventListener("abort",i,{once:!0}),this.activeAbort=()=>t.signal?.removeEventListener("abort",i)}return this.activeDeadlineTimer=setTimeout(()=>{this.active===e&&this.settleActive("timeout",this.activeWrite!==void 0||this.interrupting===e)},this.config.timeoutMs),this.beginSend(e,t),e}async beginSend(t,e){let i;try{i=await this.terminal.inspectForeground()}catch(s){this.active===t&&!this.closing&&this.interrupting!==t&&this.failActive(s);return}try{if(this.active!==t||this.closing||this.interrupting===t)return;t.setInitialForeground(i);const s=`${e.text}${e.submit?"\r":""}`;if(s.length>0&&!t.cancelRequested){this.resetReadinessEvidence();const n=this.terminal.write(s);this.activeWrite=n.then(()=>!0,()=>!1);try{await n}finally{this.activeWrite=void 0}}if(t.cancelRequested)return;if(this.active===t&&t.settled){this.clearActive();return}this.active===t&&!this.closing&&(this.pollingReady=t,this.schedulePoll(t))}catch(s){this.active===t&&!this.closing&&(t.settled?this.clearActive():this.failActive(s))}}resetReadinessEvidence(){this.lastOutputAt=Date.now(),this.promptSeen=!1,this.promptTextSeen=!1,this.promptTail=""}read(t){const e=this.scrollback.snapshot(),i=e.text.split(`
8
8
  `),s=e.text.length===0?0:i.length,n=t.offset??0,r=t.count??500;if(!Number.isSafeInteger(n)||n<0)throw new Error("PTY read offset must be a non-negative safe integer");if(!Number.isSafeInteger(r)||r<=0)throw new Error("PTY read count must be a positive safe integer");if(n>=s)return{text:"",totalLines:s,lineBegin:n,lineEnd:n,truncated:e.truncated};const h=s-n,a=Math.max(0,h-r),d=m(i.slice(a,h).join(`
9
9
  `),this.config.maxReadBytes),c=d.text.length===0?0:d.text.split(`
10
10
  `).length;return{text:d.text,totalLines:s,lineBegin:n,lineEnd:n+c,truncated:e.truncated||d.truncated}}async signal(t){if(this.closing)throw new Error("PTY session is closing");return{delivered:!0,targetPgid:await this.terminal.signalForeground(t)}}status(){return this.statusValue}close(t){if(this.closing=!0,this.closePromise!==void 0)return this.closePromise;const e=this.closeOnce(t).catch(i=>{throw this.closePromise=void 0,this.failActive(i),i});return this.closePromise=e,e}onTerminalData=o(t=>{const e=typeof t=="string"?p.from(t,"utf8"):t;this.onData(this.decoder.decode(e,{stream:!0}))},"onTerminalData");onTerminalEnd=o(()=>{this.onData(this.decoder.decode()),this.appendOutput(this.sanitizer.flush()),this.outputEnded.resolve()},"onTerminalEnd");onTerminalError=o(t=>{this.onTransportFailure(t),this.outputEnded.resolve()},"onTerminalError");onData(t){const e=this.sanitizer.push(t);if(this.appendOutput(e.text),e.prompt&&(this.promptSeen=!0,this.promptTail="",this.lastOutputAt=Date.now()),this.promptSeen&&e.promptTail!==void 0){const i=Math.max(0,6-this.promptTail.length);this.promptTail+=e.promptTail.slice(0,i),e.promptTail.length>i&&(this.promptTail=`${g}\0`),this.promptTextSeen=this.promptTail===g}}async onExit(t){await this.outputEnded.promise,this.transportFailure===void 0&&(this.statusValue={kind:"exited",exitCode:t.exitCode,signal:t.signal},this.settleActive("session_exit"))}onTransportFailure(t){const e=t instanceof Error?t:new Error(String(t));this.transportFailure??=e,this.statusValue={kind:"exited",exitCode:null,signal:null},this.failActive(e),this.terminal.terminate().catch(()=>{})}appendOutput(t){t.length!==0&&(this.lastOutputAt=Date.now(),this.scrollback.append(t),this.active?.append(t))}schedulePoll(t,e=this.config.pollIntervalMs){this.active!==t||this.interrupting===t||this.polling||(this.activeTimer!==void 0&&clearTimeout(this.activeTimer),this.activeTimer=setTimeout(()=>{this.activeTimer=void 0,this.pollReadiness(t)},e))}async pollReadiness(t){if(!(this.active!==t||this.polling)){this.polling=!0;try{if(this.statusValue.kind==="exited"){this.settleActive("session_exit");return}const e=await this.terminal.inspectForeground();if(this.active!==t||this.closing||this.interrupting===t)return;const i=Date.now()-this.lastOutputAt;if(this.promptSeen&&e!==void 0&&this.shellPgid===void 0&&(this.shellPgid=e.processGroupId),this.promptSeen&&this.promptTextSeen&&i>=this.config.pollIntervalMs&&e?.processGroupId===this.shellPgid){this.settleActive("stdin_read");return}const s=Date.now()-t.startedAt,n=!this.initializing||this.scrollback.snapshot().text.length>0,r=n&&e!==void 0&&t.acceptsStdinWait(e.processGroupId,e.inputWaiting);if(s>=this.config.exactProbeAfterMs&&r){this.settleActive("stdin_read");return}const h=this.promptSeen?this.config.handoffGraceMs:0;n&&i>=this.config.idleSilenceMs+h&&this.settleActive("inferred_idle")}catch(e){this.active===t&&!this.closing&&this.interrupting!==t&&this.failActive(e)}finally{this.polling=!1;const e=this.active;e!==void 0&&this.pollingReady===e&&this.schedulePoll(e)}}}settleActive(t,e=!1){const i=this.active;if(i===void 0)return;const s=this.scrollback.snapshot().truncated;e?(this.stopPolling(),this.activeAbort?.(),this.activeAbort=void 0):this.clearActive(),i.settle(t,this.statusValue,s)}stopPolling(){this.stopReadinessPolling(),this.activeDeadlineTimer!==void 0&&clearTimeout(this.activeDeadlineTimer),this.activeDeadlineTimer=void 0}stopReadinessPolling(){this.activeTimer!==void 0&&clearTimeout(this.activeTimer),this.activeTimer=void 0,this.pollingReady=void 0}clearActive(){const t=this.active;this.stopPolling(),this.activeAbort?.(),this.activeAbort=void 0,this.interrupting===t&&(this.interrupting=void 0),this.pollingReady=void 0,this.active=void 0}failActive(t){const e=this.active;e!==void 0&&(this.clearActive(),e.fail(t))}interrupt(t){this.active===t&&(this.interrupting=t,this.stopReadinessPolling(),this.interruptOnce(t))}async interruptOnce(t){try{const e=this.activeWrite;if(e!==void 0&&!await e)return;await this.terminal.signalForeground("SIGINT")}catch(e){this.active===t&&!this.closing&&this.onTransportFailure(e);return}finally{this.interrupting===t&&(this.interrupting=void 0)}this.active===t&&t.settled?this.clearActive():this.active===t&&!this.closing&&(this.pollingReady=t,this.schedulePoll(t,0))}async closeOnce(t){this.stopPolling();try{await this.terminal.terminate()}catch(e){throw new Error(`PTY cleanup failed (${t})`,{cause:e})}if(this.settleActive("session_exit"),await this.completion,this.terminal.output.off("data",this.onTerminalData),this.terminal.output.off("end",this.onTerminalEnd),this.terminal.output.off("error",this.onTerminalError),this.transportFailure!==void 0)throw this.transportFailure}};const D="terminal-bash",I=["terminals","sandboxPolicy","subprocess"],b=new WeakMap;function L(t,e){const i=b.get(e);if(i!==void 0){i.pty=t.terminals,i.sandboxPolicy=t.sandboxPolicy;return}const s={pty:t.terminals,sandboxPolicy:t.sandboxPolicy};b.set(e,s),e.ctx.on("internal/dispatch",(n,r,h)=>{if(r!=="session/event")return;const[a,d]=h;if(a!==e.session||d.type!=="sandbox/mode")return;const c=E(a.events)??s.sandboxPolicy.defaultMode;if(!(d.data.mode===c||!s.pty.hasOwnerActivity(e)))throw new Error(`cannot change sandbox mode from "${c}" to "${d.data.mode}" while persistent terminal sessions are open or being created; wait for creation to settle and close them first`)},{global:!0})}o(L,"ensureSandboxModeFence");function F(t){return{TERM:"dumb",PAGER:"cat",GIT_PAGER:"cat",PS1:g,PROMPT_COMMAND:'printf "\\033]133;D;%s\\007" "$?"',BASH_SILENCE_DEPRECATION_WARNING:"1",DSH_SHELL:"1",DSH_SESSION_ID:t.owner.id,DSH_PTY_SESSION_ID:t.sessionId}}o(F,"childEnvironment");function k(t,e,i){const s=[e.shellPath,...e.shellArgs];if(i.mode==="danger-full-access")return s;const n=t.get("sandbox");if(n===void 0)throw new Error(`terminal-bash: sandbox mode "${i.mode}" requires a ctx.sandbox provider in the execution world`);return n.confine(s,{...i,mode:i.mode}).argv}o(k,"spawnArgv");async function W(t,e){if(e===void 0){await t.initialize(e);return}const i=Promise.withResolvers(),s=o(()=>{i.reject(e.reason)},"onAbort");e.addEventListener("abort",s,{once:!0});try{e.throwIfAborted(),await Promise.race([t.initialize(e),i.promise])}finally{e.removeEventListener("abort",s)}}o(W,"initializeSession");var w=class{static{o(this,"BashTerminalBackend")}ctx;config;spawnTerminal;createSession;type;constructor(t,e,i=n=>t.subprocess.spawnTerminal(n),s=(n,r)=>new B(n,r)){this.ctx=t,this.config=e,this.spawnTerminal=i,this.createSession=s,this.type=e.backendType}async spawn(t){t.signal?.throwIfAborted(),L(this.ctx,t.owner);const e=this.ctx.sandboxPolicy.resolve({session:t.owner.session}),i=k(this.ctx,this.config,e);if(i[0]===void 0)throw new Error("terminal-bash: sandbox returned empty argv");const s=await this.spawnTerminal({argv:i,cwd:t.cwd??e.workspaceRoot,env:F(t),rows:this.config.rows,cols:this.config.cols,graceMs:this.config.disposeGraceMs,signal:t.signal}),n=this.createSession(s,this.config);try{return await W(n,t.signal),n}catch(r){try{await n.close("PTY startup failed")}catch(h){throw new y(r,h)}throw r}}};function C(t,e){S(e),t.terminals.registerBackend(new w(t,e))}o(C,"apply");export{w as BashTerminalBackend,A as Config,C as apply,I as inject,D as name};
@@ -1 +1 @@
1
- {"name":"@deepseek-ai/dsh-terminal-bash","version":"0.0.11","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-invariants":"^0.0.11","@deepseek-ai/dsh-agent":"^0.0.11","@deepseek-ai/dsh-terminal":"^0.0.11","@deepseek-ai/dsh-sandbox":"^0.0.11","@deepseek-ai/dsh-session":"^0.0.11","@deepseek-ai/dsh-sandbox-policy":"^0.0.11","@deepseek-ai/dsh-subprocess":"^0.0.11","@deepseek-ai/cordis":"^4.0.1"},"dependencies":{"@deepseek-ai/schemastery":"^3.18.1"}}
1
+ {"name":"@deepseek-ai/dsh-terminal-bash","version":"0.0.13","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-invariants":"^0.0.13","@deepseek-ai/dsh-agent":"^0.0.13","@deepseek-ai/dsh-session":"^0.0.13","@deepseek-ai/dsh-sandbox-policy":"^0.0.13","@deepseek-ai/dsh-subprocess":"^0.0.13","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-terminal":"^0.0.13","@deepseek-ai/dsh-sandbox":"^0.0.13"},"dependencies":{"@deepseek-ai/schemastery":"^3.18.1"}}
@@ -1,3 +1,3 @@
1
- var A=Object.defineProperty;var o=(e,t)=>A(e,"name",{value:t,configurable:!0});import{createRequire as $}from"node:module";import a from"@deepseek-ai/schemastery";import"@deepseek-ai/cordis";function ie(e){return e}o(ie,"MessageId");function k(e){const t=new WeakSet,n=[{kind:"visit",node:e}];for(;n.length>0;){const r=n.pop();if(r===void 0)continue;if(r.kind==="property"){n.push({kind:"visit",node:r.source[r.key]});continue}const s=r.node;if(s===null||typeof s!="object"||s instanceof AbortSignal||t.has(s))continue;t.add(s),Object.freeze(s);const i=Object.keys(s);for(let m=i.length-1;m>=0;m--){const d=i[m];d!==void 0&&n.push({kind:"property",source:s,key:d})}}return e}o(k,"deepFreeze");function I(e){return k(structuredClone(e))}o(I,"freezeMessage");function _(e){return I({...e,id:crypto.randomUUID()})}o(_,"createMessage");function Z(e){return _({...e,role:"user"})}o(Z,"createUserMessage");const b=2147483647,R="EMPTY_RESPONSE";new RegExp(String.raw`(?:^|[^a-z0-9])context[\s_-](?:length|window)[\s_-]`+String.raw`(?:exceed(?:ed|s)?|overflow(?:ed)?|limit[\s_-]exceeded)(?:$|[^a-z0-9])`,"i"),new RegExp(String.raw`\b(?:request|prompt|input|messages?)\s+(?:is\s+|are\s+)?`+String.raw`too\s+(?:large|long)\s+for\s+(?:(?:this|the)\s+)?`+String.raw`(?:model(?:'s)?\s+)?context(?:\s+window)?\b`,"i"),new RegExp(String.raw`\b(?:input|prompt|request|messages?)\b.{0,40}`+String.raw`\b(?:exceed(?:s|ed)?|overflows?|is\s+larger\s+than)\b.{0,40}`+String.raw`\b(?:the\s+)?(?:model(?:'s)?\s+)?context(?:\s+(?:length|window))?\b`,"i");const O=2,N=500,z=1e4,D=.1,j=Object.freeze([R,"RATE_LIMIT","SERVER","TIMEOUT","TRANSPORT"]),v=a.object({initialDelayMs:a.number().max(b).default(N),maxDelayMs:a.number().max(b).default(z),jitterRatio:a.number().min(0).max(1).default(D)}),L=a.object({mode:a.const("normal").required(),maxRetries:a.number().step(1).min(0).max(Number.MAX_SAFE_INTEGER).default(O),retryableCodes:a.array(a.string()).default([...j]),backoff:v}),U=a.object({mode:a.const("always").required(),backoff:v});a.union([L,U]);const{version:ae}=$(import.meta.url)("../package.json");function q(e,t){const n=JSON.stringify(e)??String(e);throw new Error(`unreachable variant${t?` in ${t}`:""}: ${n}`)}o(q,"assertNever");const C=/^[A-Za-z][A-Za-z0-9_+.-]*(?:\/[A-Za-z0-9_+.-]+)+$/;function F(e){const t=e.source,n=t.kind==="user"&&"rpcId"in t&&typeof t.rpcId=="string"&&"clientTimeZone"in t&&typeof t.clientTimeZone=="string"?t.clientTimeZone:void 0;if(n===void 0)return;if(n!=="UTC"&&!C.test(n))throw new TypeError(`browser time zone must be canonical UTC or IANA Area/Location: ${JSON.stringify(n)}`);let r;try{r=new Intl.DateTimeFormat("en-US",{timeZone:n}).resolvedOptions().timeZone}catch(s){throw new TypeError(`browser time zone is unsupported: ${JSON.stringify(n)}`,{cause:s})}if(r!==n)throw new TypeError(`browser time zone must be canonical: ${JSON.stringify(n)}`);return n}o(F,"browserTimeZone");function P(e){const t=[...new Set(e.flatMap(s=>{const i=F(s);return i===void 0?[]:[i]}))].sort(),[n,...r]=t;return n===void 0?{kind:"missing"}:r.length===0?{kind:"resolved",timeZone:n}:{kind:"mixed",timeZones:t}}o(P,"deriveBrowserTimeZoneContext");function B(e){switch(e.kind){case"resolved":return`Browser time zone for this request: ${e.timeZone}. Interpret otherwise-unqualified dates and times in this zone.`;case"mixed":return`Browser time zone for this request: mixed ${JSON.stringify(e.timeZones)}. Ask the user to clarify otherwise-unqualified dates and times.`;case"missing":return"Browser time zone for this request: unavailable. Ask the user to clarify otherwise-unqualified dates and times.";default:return q(e,"BrowserTimeZoneContext")}}o(B,"renderBrowserTimeZoneContext");function E(e){return new Intl.DateTimeFormat("en-US",{...e===void 0?{}:{timeZone:e},year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hourCycle:"h23",timeZoneName:"longOffset"})}o(E,"createTimestampFormatter");function J(e,t,n){const r=Object.fromEntries(t.formatToParts(e).map(i=>[i.type,i.value])),s=r.timeZoneName.replace(/^GMT$/,"GMT+00:00").slice(3);return`${r.year}-${r.month}-${r.day}T${r.hour}:${r.minute}:${r.second}${s}[${n}]`}o(J,"formatTimestamp");const w="time-context",Y=["agents"],X=a.object({timeZone:a.string(),refreshIntervalMs:a.number()});function G(e){let t=Math.floor(Math.max(0,e)/1e3);const n=Math.floor(t/86400);t%=86400;const r=Math.floor(t/3600);t%=3600;const s=Math.floor(t/60);t%=60;const i=[];return n>0&&i.push(`${n}d`),r>0&&i.push(`${r}h`),s>0&&i.push(`${s}m`),i.push(`${t}s`),i.join(" ")}o(G,"formatDuration");function V(e){for(const t of[...e.session.events].reverse())switch(t.type){case"user/message":case"assistant/message":case"tool/result":return t.time;default:break}}o(V,"precedingMessageTime");function W(e,t){for(const n of[...e.session.events].reverse()){if(n.type==="turn/start"&&n.data.turn===t)return;if(n.type==="user/message"&&n.data.source.kind==="plugin"&&n.data.source.plugin==="time-context")return n.time}}o(W,"precedingStepContextTime");function H(e){for(const t of[...e.session.events].reverse())if(t.type==="user/message"&&t.data.source.kind==="plugin"&&t.data.source.plugin==="time-context")return t.time}o(H,"latestInjectionTime");function K(e,t,n){const r=e.session.events.findLastIndex(s=>s.type==="turn/start"&&s.data.turn===t);return[...r<0?[]:e.session.events.slice(r+1).flatMap(s=>s.type==="user/message"?[s.data]:[]),...n]}o(K,"requestMessages");function Q(e,t,n,r,s,i,m){const d=r===void 0?"unavailable":G(e-r),c=n===1?"model-visible message":"step context",u=B(m);return`Time sampled while preparing turn ${t}, step ${n}: ${J(e,s,i)}
1
+ var A=Object.defineProperty;var o=(e,t)=>A(e,"name",{value:t,configurable:!0});import{createRequire as $}from"node:module";import a from"@deepseek-ai/schemastery";import"@deepseek-ai/cordis";function ie(e){return e}o(ie,"MessageId");function k(e){const t=new WeakSet,n=[{kind:"visit",node:e}];for(;n.length>0;){const r=n.pop();if(r===void 0)continue;if(r.kind==="property"){n.push({kind:"visit",node:r.source[r.key]});continue}const s=r.node;if(s===null||typeof s!="object"||s instanceof AbortSignal||t.has(s))continue;t.add(s),Object.freeze(s);const i=Object.keys(s);for(let m=i.length-1;m>=0;m--){const d=i[m];d!==void 0&&n.push({kind:"property",source:s,key:d})}}return e}o(k,"deepFreeze");function I(e){return k(structuredClone(e))}o(I,"freezeMessage");function _(e){return I({...e,id:crypto.randomUUID()})}o(_,"createMessage");function Z(e){return _({...e,role:"user"})}o(Z,"createUserMessage");const b=2147483647,R="EMPTY_RESPONSE";new RegExp(String.raw`(?:^|[^a-z0-9])context[\s_-](?:length|window)[\s_-]`+String.raw`(?:exceed(?:ed|s)?|overflow(?:ed)?|limit[\s_-]exceeded)(?:$|[^a-z0-9])`,"i"),new RegExp(String.raw`\b(?:request|prompt|input|messages?)\s+(?:is\s+|are\s+)?`+String.raw`too\s+(?:large|long)\s+for\s+(?:(?:this|the)\s+)?`+String.raw`(?:model(?:'s)?\s+)?context(?:\s+window)?\b`,"i"),new RegExp(String.raw`\b(?:input|prompt|request|messages?)\b.{0,40}`+String.raw`\b(?:exceed(?:s|ed)?|overflows?|is\s+larger\s+than)\b.{0,40}`+String.raw`\b(?:the\s+)?(?:model(?:'s)?\s+)?context(?:\s+(?:length|window))?\b`,"i");const O=2,N=500,z=1e4,D=.1,j=Object.freeze([R,"RATE_LIMIT","SERVER","TIMEOUT","TRANSPORT"]),v=a.object({initialDelayMs:a.number().max(b).default(N),maxDelayMs:a.number().max(b).default(z),jitterRatio:a.number().min(0).max(1).default(D)}),L=a.object({mode:a.const("normal").required(),maxRetries:a.number().step(1).min(0).max(Number.MAX_SAFE_INTEGER).default(O),retryableCodes:a.array(a.string()).default([...j]),backoff:v}),U=a.object({mode:a.const("always").required(),backoff:v});a.union([L,U]);const{version:ae}=$(import.meta.url)("../package.json");function q(e,t){const n=JSON.stringify(e)??String(e);throw new Error(`unreachable variant${t?` in ${t}`:""}: ${n}`)}o(q,"assertNever");const C=/^[A-Za-z][A-Za-z0-9_+.-]*(?:\/[A-Za-z0-9_+.-]+)+$/;function F(e){const t=e.source,n=t.kind==="user"&&"rpcId"in t&&typeof t.rpcId=="string"&&"clientTimeZone"in t&&typeof t.clientTimeZone=="string"?t.clientTimeZone:void 0;if(n===void 0)return;if(n!=="UTC"&&!C.test(n))throw new TypeError(`browser time zone must be canonical UTC or IANA Area/Location: ${JSON.stringify(n)}`);let r;try{r=new Intl.DateTimeFormat("en-US",{timeZone:n}).resolvedOptions().timeZone}catch(s){throw new TypeError(`browser time zone is unsupported: ${JSON.stringify(n)}`,{cause:s})}if(r!==n)throw new TypeError(`browser time zone must be canonical: ${JSON.stringify(n)}`);return n}o(F,"browserTimeZone");function P(e){const t=[...new Set(e.flatMap(s=>{const i=F(s);return i===void 0?[]:[i]}))].sort(),[n,...r]=t;return n===void 0?{kind:"missing"}:r.length===0?{kind:"resolved",timeZone:n}:{kind:"mixed",timeZones:t}}o(P,"deriveBrowserTimeZoneContext");function B(e){switch(e.kind){case"resolved":return`Browser time zone for this request: ${e.timeZone}. Interpret otherwise-unqualified dates and times in this zone.`;case"mixed":return`Browser time zone for this request: mixed ${JSON.stringify(e.timeZones)}. Ask the user to clarify otherwise-unqualified dates and times.`;case"missing":return"Browser time zone for this request: unavailable. Ask the user to clarify otherwise-unqualified dates and times.";default:return q(e,"BrowserTimeZoneContext")}}o(B,"renderBrowserTimeZoneContext");function E(e){return new Intl.DateTimeFormat("en-US",{...e===void 0?{}:{timeZone:e},year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hourCycle:"h23",timeZoneName:"longOffset"})}o(E,"createTimestampFormatter");function J(e,t,n){const r=Object.fromEntries(t.formatToParts(e).map(i=>[i.type,i.value])),s=r.timeZoneName.replace(/^GMT$/,"GMT+00:00").slice(3);return`${r.year}-${r.month}-${r.day}T${r.hour}:${r.minute}:${r.second}${s}[${n}]`}o(J,"formatTimestamp");const w="time-context",Y=["agents"],X=a.object({timeZone:a.string(),refreshIntervalMs:a.number()});function G(e){let t=Math.floor(Math.max(0,e)/1e3);const n=Math.floor(t/86400);t%=86400;const r=Math.floor(t/3600);t%=3600;const s=Math.floor(t/60);t%=60;const i=[];return n>0&&i.push(`${n}d`),r>0&&i.push(`${r}h`),s>0&&i.push(`${s}m`),i.push(`${t}s`),i.join(" ")}o(G,"formatDuration");function V(e){for(const t of[...e.session.events].reverse())switch(t.type){case"user/message":case"assistant/message":case"tool/result":return t.time}}o(V,"precedingMessageTime");function W(e,t){for(const n of[...e.session.events].reverse()){if(n.type==="turn/start"&&n.data.turn===t)return;if(n.type==="user/message"&&n.data.source.kind==="plugin"&&n.data.source.plugin==="time-context")return n.time}}o(W,"precedingStepContextTime");function H(e){for(const t of[...e.session.events].reverse())if(t.type==="user/message"&&t.data.source.kind==="plugin"&&t.data.source.plugin==="time-context")return t.time}o(H,"latestInjectionTime");function K(e,t,n){const r=e.session.events.findLastIndex(s=>s.type==="turn/start"&&s.data.turn===t);return[...r<0?[]:e.session.events.slice(r+1).flatMap(s=>s.type==="user/message"?[s.data]:[]),...n]}o(K,"requestMessages");function Q(e,t,n,r,s,i,m){const d=r===void 0?"unavailable":G(e-r),c=n===1?"model-visible message":"step context",u=B(m);return`Time sampled while preparing turn ${t}, step ${n}: ${J(e,s,i)}
2
2
  ${u}
3
3
  Elapsed since the preceding ${c}: ${d}.`}o(Q,"renderText");function ee(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new TypeError(`time-context: refreshIntervalMs must be a non-negative safe integer, got ${String(e)}`)}o(ee,"validateRefreshInterval");function te(e,t){const n=t.timeZone,r=t.refreshIntervalMs;ee(r);let s;try{s=E(n)}catch(c){const u=n===void 0?"time-context: failed to resolve the system time zone":`time-context: invalid IANA timeZone ${JSON.stringify(n)}`;throw new Error(u,{cause:c})}const i=s.resolvedOptions().timeZone,m=new Map([[i,s]]),d=o(c=>{const u=m.get(c);if(u!==void 0)return u;const f=E(c);return m.set(c,f),f},"formatterFor");e.on("agent/pre-step",async({agent:c,turn:u,step:f,signal:S},x)=>{const l=await x();if(l.kind==="reject"||S.aborted)return l;const p=Date.now();if(r!==void 0&&r>0){const h=H(c);if(h!==void 0&&p>=h&&p-h<r)return l}const M=f===1?V(c):W(c,u),g=P(K(c,u,l.messages)),y=g.kind==="resolved"?g.timeZone:i,T=Q(p,u,f,M,d(y),y,g);return{kind:"enter",messages:[...l.messages,Z({content:[{type:"text",text:T}],source:{kind:"plugin",plugin:w,form:"snapshot",sections:[{name:w,text:T}]}})]}},{prepend:!0})}o(te,"apply");export{X as Config,te as apply,Y as inject,w as name};
@@ -1 +1 @@
1
- var $=Object.defineProperty;var i=(n,s)=>$(n,"name",{value:s,configurable:!0});import{createRequire as N}from"node:module";import"@deepseek-ai/cordis";import a from"@deepseek-ai/schemastery";const E=2147483647,R="EMPTY_RESPONSE";new RegExp(String.raw`(?:^|[^a-z0-9])context[\s_-](?:length|window)[\s_-]`+String.raw`(?:exceed(?:ed|s)?|overflow(?:ed)?|limit[\s_-]exceeded)(?:$|[^a-z0-9])`,"i"),new RegExp(String.raw`\b(?:request|prompt|input|messages?)\s+(?:is\s+|are\s+)?`+String.raw`too\s+(?:large|long)\s+for\s+(?:(?:this|the)\s+)?`+String.raw`(?:model(?:'s)?\s+)?context(?:\s+window)?\b`,"i"),new RegExp(String.raw`\b(?:input|prompt|request|messages?)\b.{0,40}`+String.raw`\b(?:exceed(?:s|ed)?|overflows?|is\s+larger\s+than)\b.{0,40}`+String.raw`\b(?:the\s+)?(?:model(?:'s)?\s+)?context(?:\s+(?:length|window))?\b`,"i");const I=2,O=500,M=1e4,Z=.1,q=Object.freeze([R,"RATE_LIMIT","SERVER","TIMEOUT","TRANSPORT"]),v=a.object({initialDelayMs:a.number().max(E).default(O),maxDelayMs:a.number().max(E).default(M),jitterRatio:a.number().min(0).max(1).default(Z)}),z=a.object({mode:a.const("normal").required(),maxRetries:a.number().step(1).min(0).max(Number.MAX_SAFE_INTEGER).default(I),retryableCodes:a.array(a.string()).default([...q]),backoff:v}),D=a.object({mode:a.const("always").required(),backoff:v});a.union([z,D]);const{version:se}=N(import.meta.url)("../package.json");function j(n,s){const e=JSON.stringify(n)??String(n);throw new Error(`unreachable variant${s?` in ${s}`:""}: ${e}`)}i(j,"assertNever");const C=/^[A-Za-z][A-Za-z0-9_+.-]*(?:\/[A-Za-z0-9_+.-]+)+$/;function L(n){const s=n.source,e=s.kind==="user"&&"rpcId"in s&&typeof s.rpcId=="string"&&"clientTimeZone"in s&&typeof s.clientTimeZone=="string"?s.clientTimeZone:void 0;if(e===void 0)return;if(e!=="UTC"&&!C.test(e))throw new TypeError(`browser time zone must be canonical UTC or IANA Area/Location: ${JSON.stringify(e)}`);let t;try{t=new Intl.DateTimeFormat("en-US",{timeZone:e}).resolvedOptions().timeZone}catch(r){throw new TypeError(`browser time zone is unsupported: ${JSON.stringify(e)}`,{cause:r})}if(t!==e)throw new TypeError(`browser time zone must be canonical: ${JSON.stringify(e)}`);return e}i(L,"browserTimeZone");function P(n){const s=[...new Set(n.flatMap(r=>{const o=L(r);return o===void 0?[]:[o]}))].sort(),[e,...t]=s;return e===void 0?{kind:"missing"}:t.length===0?{kind:"resolved",timeZone:e}:{kind:"mixed",timeZones:s}}i(P,"deriveBrowserTimeZoneContext");function U(n){switch(n.kind){case"resolved":return`Browser time zone for this request: ${n.timeZone}. Interpret otherwise-unqualified dates and times in this zone.`;case"mixed":return`Browser time zone for this request: mixed ${JSON.stringify(n.timeZones)}. Ask the user to clarify otherwise-unqualified dates and times.`;case"missing":return"Browser time zone for this request: unavailable. Ask the user to clarify otherwise-unqualified dates and times.";default:return j(n,"BrowserTimeZoneContext")}}i(U,"renderBrowserTimeZoneContext");function F(n){return new Intl.DateTimeFormat("en-US",{...n===void 0?{}:{timeZone:n},year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hourCycle:"h23",timeZoneName:"longOffset"})}i(F,"createTimestampFormatter");function B(n,s,e){const t=Object.fromEntries(s.formatToParts(n).map(o=>[o.type,o.value])),r=t.timeZoneName.replace(/^GMT$/,"GMT+00:00").slice(3);return`${t.year}-${t.month}-${t.day}T${t.hour}:${t.minute}:${t.second}${r}[${e}]`}i(B,"formatTimestamp");const J="@deepseek-ai/dsh-time-context",b="time-context",Y=new RegExp("^Time sampled while preparing turn (\\d+), step (\\d+): (\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:Z|[+-]\\d{2}:\\d{2})\\[[^\\]]+\\])\\n(Browser time zone for this request: .+)\\nElapsed since the preceding (model-visible message|step context): (?:unavailable|(?:(?:\\d+d )?(?:\\d+h )?(?:\\d+m )?\\d+s))\\.$"),G="time-context-invariant",X=["invariants"];function V(n,s){let e,t,r=!1;for(const o of n)switch(o.type){case"turn/start":e=o.data.turn,t=void 0,r=!1;break;case"step/start":t=o.data.step,r=!1;break;case"request/header":r=!0;break;case"step/end":t=void 0,r=!1;break;case"turn/end":e=void 0,t=void 0,r=!1;break;default:break}return e===void 0&&s("time-context reading must be appended inside an open turn"),t===void 0&&s("time-context reading must follow step/start"),r&&s("time-context reading must precede request/header"),{turn:e,step:t}}i(V,"preparationPosition");function K(n,s){const e=n.findLastIndex(t=>t.type==="turn/start"&&t.data.turn===s);return n.slice(e+1).flatMap(t=>t.type==="user/message"?[t.data]:[])}i(K,"requestMessages");function S(n,s,e){const t=s.data.content[0],r=typeof t=="object"&&t!==null?t:void 0,o=r?.text;(s.data.content.length!==1||r===void 0||Object.keys(r).length!==2||r.type!=="text"||typeof o!="string")&&e("time-context messages must contain exactly one text block");const c=Y.exec(o);c===null&&e("time-context message does not match the durable reading format");const u=Number(c[1]),d=Number(c[2]);(!Number.isSafeInteger(u)||u<1||!Number.isSafeInteger(d)||d<1)&&e("time-context turn and step must be positive safe integers");const l=V(n,e);(u!==l.turn||d!==l.step)&&e(`time-context reading names turn ${u}/step ${d}, expected turn ${l.turn}/step ${l.step}`);const m=s.data.source;(m.kind!=="plugin"||m.plugin!==b)&&e("time-context source must retain package ownership");const p="sections"in m?m.sections:void 0,w=Array.isArray(p)?p[0]:void 0,f=typeof w=="object"&&w!==null?w:void 0;(Object.keys(m).length!==4||m.form!=="snapshot"||!Array.isArray(p)||p.length!==1||f===void 0||Object.keys(f).length!==2||f.name!==b||f.text!==o)&&e("time-context source must carry only the exact snapshot text, not request authority");const _=c[4],g=P(K(n,u));_!==U(g)&&e("time-context browser-zone text does not match current-turn user messages");const y=c[5];d===1!=(y==="model-visible message")&&e(`time-context step ${d} uses the wrong elapsed-time baseline ${JSON.stringify(y)}`);const h=c[3];h===void 0&&e("time-context reading omitted its rendered timestamp");const x=Date.parse(h.replace(/\[[^\]]+\]$/,""));if((!Number.isFinite(x)||!Number.isSafeInteger(s.time)||s.time<x)&&e("time-context rendered timestamp must parse and not postdate its durable event"),g.kind==="resolved"){let T;try{T=B(x,F(g.timeZone),g.timeZone)}catch(k){e(`time-context browser zone cannot format its durable timestamp: ${String(k)}`)}h!==T&&e("time-context rendered timestamp does not match the unique browser zone")}}i(S,"validateReading");function A(n,s){for(const[e,t]of n.events.entries())t.type!=="user/message"||t.data.source.kind!=="plugin"||t.data.source.plugin!==b||S(n.events.slice(0,e),t,s)}i(A,"validateSession");const H=Object.assign((n,s)=>{for(const e of n.sessions.list())A(e,s);n.on("session/created",e=>{A(e,s)},{global:!0}),n.on("internal/dispatch",(e,t,r)=>{if(t!=="session/event")return;const[o,c]=r;c.type!=="user/message"||c.data.source.kind!=="plugin"||c.data.source.plugin!==b||S(o.events,c,s)},{global:!0})},{inject:["sessions"]}),Q=i(n=>Promise.resolve(n.invariants.register(J,H)),"apply");export{Q as apply,X as inject,G as name};
1
+ var $=Object.defineProperty;var i=(n,s)=>$(n,"name",{value:s,configurable:!0});import{createRequire as N}from"node:module";import"@deepseek-ai/cordis";import a from"@deepseek-ai/schemastery";const E=2147483647,R="EMPTY_RESPONSE";new RegExp(String.raw`(?:^|[^a-z0-9])context[\s_-](?:length|window)[\s_-]`+String.raw`(?:exceed(?:ed|s)?|overflow(?:ed)?|limit[\s_-]exceeded)(?:$|[^a-z0-9])`,"i"),new RegExp(String.raw`\b(?:request|prompt|input|messages?)\s+(?:is\s+|are\s+)?`+String.raw`too\s+(?:large|long)\s+for\s+(?:(?:this|the)\s+)?`+String.raw`(?:model(?:'s)?\s+)?context(?:\s+window)?\b`,"i"),new RegExp(String.raw`\b(?:input|prompt|request|messages?)\b.{0,40}`+String.raw`\b(?:exceed(?:s|ed)?|overflows?|is\s+larger\s+than)\b.{0,40}`+String.raw`\b(?:the\s+)?(?:model(?:'s)?\s+)?context(?:\s+(?:length|window))?\b`,"i");const I=2,O=500,M=1e4,Z=.1,q=Object.freeze([R,"RATE_LIMIT","SERVER","TIMEOUT","TRANSPORT"]),v=a.object({initialDelayMs:a.number().max(E).default(O),maxDelayMs:a.number().max(E).default(M),jitterRatio:a.number().min(0).max(1).default(Z)}),z=a.object({mode:a.const("normal").required(),maxRetries:a.number().step(1).min(0).max(Number.MAX_SAFE_INTEGER).default(I),retryableCodes:a.array(a.string()).default([...q]),backoff:v}),D=a.object({mode:a.const("always").required(),backoff:v});a.union([z,D]);const{version:se}=N(import.meta.url)("../package.json");function j(n,s){const e=JSON.stringify(n)??String(n);throw new Error(`unreachable variant${s?` in ${s}`:""}: ${e}`)}i(j,"assertNever");const C=/^[A-Za-z][A-Za-z0-9_+.-]*(?:\/[A-Za-z0-9_+.-]+)+$/;function L(n){const s=n.source,e=s.kind==="user"&&"rpcId"in s&&typeof s.rpcId=="string"&&"clientTimeZone"in s&&typeof s.clientTimeZone=="string"?s.clientTimeZone:void 0;if(e===void 0)return;if(e!=="UTC"&&!C.test(e))throw new TypeError(`browser time zone must be canonical UTC or IANA Area/Location: ${JSON.stringify(e)}`);let t;try{t=new Intl.DateTimeFormat("en-US",{timeZone:e}).resolvedOptions().timeZone}catch(r){throw new TypeError(`browser time zone is unsupported: ${JSON.stringify(e)}`,{cause:r})}if(t!==e)throw new TypeError(`browser time zone must be canonical: ${JSON.stringify(e)}`);return e}i(L,"browserTimeZone");function P(n){const s=[...new Set(n.flatMap(r=>{const o=L(r);return o===void 0?[]:[o]}))].sort(),[e,...t]=s;return e===void 0?{kind:"missing"}:t.length===0?{kind:"resolved",timeZone:e}:{kind:"mixed",timeZones:s}}i(P,"deriveBrowserTimeZoneContext");function U(n){switch(n.kind){case"resolved":return`Browser time zone for this request: ${n.timeZone}. Interpret otherwise-unqualified dates and times in this zone.`;case"mixed":return`Browser time zone for this request: mixed ${JSON.stringify(n.timeZones)}. Ask the user to clarify otherwise-unqualified dates and times.`;case"missing":return"Browser time zone for this request: unavailable. Ask the user to clarify otherwise-unqualified dates and times.";default:return j(n,"BrowserTimeZoneContext")}}i(U,"renderBrowserTimeZoneContext");function F(n){return new Intl.DateTimeFormat("en-US",{...n===void 0?{}:{timeZone:n},year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hourCycle:"h23",timeZoneName:"longOffset"})}i(F,"createTimestampFormatter");function B(n,s,e){const t=Object.fromEntries(s.formatToParts(n).map(o=>[o.type,o.value])),r=t.timeZoneName.replace(/^GMT$/,"GMT+00:00").slice(3);return`${t.year}-${t.month}-${t.day}T${t.hour}:${t.minute}:${t.second}${r}[${e}]`}i(B,"formatTimestamp");const J="@deepseek-ai/dsh-time-context",b="time-context",Y=new RegExp("^Time sampled while preparing turn (\\d+), step (\\d+): (\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:Z|[+-]\\d{2}:\\d{2})\\[[^\\]]+\\])\\n(Browser time zone for this request: .+)\\nElapsed since the preceding (model-visible message|step context): (?:unavailable|(?:(?:\\d+d )?(?:\\d+h )?(?:\\d+m )?\\d+s))\\.$"),G="time-context-invariant",X=["invariants"];function V(n,s){let e,t,r=!1;for(const o of n)switch(o.type){case"turn/start":e=o.data.turn,t=void 0,r=!1;break;case"step/start":t=o.data.step,r=!1;break;case"request/header":r=!0;break;case"step/end":t=void 0,r=!1;break;case"turn/end":e=void 0,t=void 0,r=!1}return e===void 0&&s("time-context reading must be appended inside an open turn"),t===void 0&&s("time-context reading must follow step/start"),r&&s("time-context reading must precede request/header"),{turn:e,step:t}}i(V,"preparationPosition");function K(n,s){const e=n.findLastIndex(t=>t.type==="turn/start"&&t.data.turn===s);return n.slice(e+1).flatMap(t=>t.type==="user/message"?[t.data]:[])}i(K,"requestMessages");function S(n,s,e){const t=s.data.content[0],r=typeof t=="object"&&t!==null?t:void 0,o=r?.text;(s.data.content.length!==1||r===void 0||Object.keys(r).length!==2||r.type!=="text"||typeof o!="string")&&e("time-context messages must contain exactly one text block");const c=Y.exec(o);c===null&&e("time-context message does not match the durable reading format");const u=Number(c[1]),d=Number(c[2]);(!Number.isSafeInteger(u)||u<1||!Number.isSafeInteger(d)||d<1)&&e("time-context turn and step must be positive safe integers");const l=V(n,e);(u!==l.turn||d!==l.step)&&e(`time-context reading names turn ${u}/step ${d}, expected turn ${l.turn}/step ${l.step}`);const m=s.data.source;(m.kind!=="plugin"||m.plugin!==b)&&e("time-context source must retain package ownership");const p="sections"in m?m.sections:void 0,w=Array.isArray(p)?p[0]:void 0,f=typeof w=="object"&&w!==null?w:void 0;(Object.keys(m).length!==4||m.form!=="snapshot"||!Array.isArray(p)||p.length!==1||f===void 0||Object.keys(f).length!==2||f.name!==b||f.text!==o)&&e("time-context source must carry only the exact snapshot text, not request authority");const _=c[4],g=P(K(n,u));_!==U(g)&&e("time-context browser-zone text does not match current-turn user messages");const y=c[5];d===1!=(y==="model-visible message")&&e(`time-context step ${d} uses the wrong elapsed-time baseline ${JSON.stringify(y)}`);const h=c[3];h===void 0&&e("time-context reading omitted its rendered timestamp");const x=Date.parse(h.replace(/\[[^\]]+\]$/,""));if((!Number.isFinite(x)||!Number.isSafeInteger(s.time)||s.time<x)&&e("time-context rendered timestamp must parse and not postdate its durable event"),g.kind==="resolved"){let T;try{T=B(x,F(g.timeZone),g.timeZone)}catch(k){e(`time-context browser zone cannot format its durable timestamp: ${String(k)}`)}h!==T&&e("time-context rendered timestamp does not match the unique browser zone")}}i(S,"validateReading");function A(n,s){for(const[e,t]of n.events.entries())t.type!=="user/message"||t.data.source.kind!=="plugin"||t.data.source.plugin!==b||S(n.events.slice(0,e),t,s)}i(A,"validateSession");const H=Object.assign((n,s)=>{for(const e of n.sessions.list())A(e,s);n.on("session/created",e=>{A(e,s)},{global:!0}),n.on("internal/dispatch",(e,t,r)=>{if(t!=="session/event")return;const[o,c]=r;c.type!=="user/message"||c.data.source.kind!=="plugin"||c.data.source.plugin!==b||S(o.events,c,s)},{global:!0})},{inject:["sessions"]}),Q=i(n=>Promise.resolve(n.invariants.register(J,H)),"apply");export{Q as apply,X as inject,G as name};
@@ -1 +1 @@
1
- {"name":"@deepseek-ai/dsh-time-context","version":"0.0.11","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","dependencies":{"@deepseek-ai/schemastery":"^3.18.1"},"peerDependencies":{"@deepseek-ai/dsh-invariants":"^0.0.11","@deepseek-ai/dsh-session":"^0.0.11","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-agent":"^0.0.11"}}
1
+ {"name":"@deepseek-ai/dsh-time-context","version":"0.0.13","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","dependencies":{"@deepseek-ai/schemastery":"^3.18.1"},"peerDependencies":{"@deepseek-ai/dsh-agent":"^0.0.13","@deepseek-ai/dsh-session":"^0.0.13","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-invariants":"^0.0.13"}}
@@ -1 +1 @@
1
- {"name":"@deepseek-ai/dsh-timeout","version":"0.0.11","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-invariants":"^0.0.11"}}
1
+ {"name":"@deepseek-ai/dsh-timeout","version":"0.0.13","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-invariants":"^0.0.13","@deepseek-ai/cordis":"^4.0.1"}}
@@ -1 +1 @@
1
- {"name":"@deepseek-ai/dsh-tmux-context","version":"0.0.11","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","dependencies":{"@deepseek-ai/schemastery":"^3.18.1"},"peerDependencies":{"@deepseek-ai/dsh-shell":"^0.0.11","@deepseek-ai/dsh-session":"^0.0.11","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-invariants":"^0.0.11","@deepseek-ai/dsh-agent":"^0.0.11"}}
1
+ {"name":"@deepseek-ai/dsh-tmux-context","version":"0.0.13","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","dependencies":{"@deepseek-ai/schemastery":"^3.18.1"},"peerDependencies":{"@deepseek-ai/dsh-agent":"^0.0.13","@deepseek-ai/dsh-shell":"^0.0.13","@deepseek-ai/dsh-invariants":"^0.0.13","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-session":"^0.0.13"}}
@@ -1 +1 @@
1
- var x=Object.defineProperty;var c=(e,s)=>x(e,"name",{value:s,configurable:!0});import{Service as R}from"@deepseek-ai/cordis";import W from"@deepseek-ai/schemastery";import{BlockAssembler as j,deepFreeze as M}from"@deepseek-ai/dsh-llm";import{canonicalHeader as T,deriveEventMessage as y,headerEquals as I,isSurfaceEvent as q}from"@deepseek-ai/dsh-session";import{z as u}from"zod";const l=4,h=4;function f(e){let s=0;for(const t of e)switch(t.type){case"text":case"reasoning":s+=Math.ceil(t.text.length/l)+h;break;case"tool-call":s+=Math.ceil(t.name.length/l)+Math.ceil(t.arguments.length/l)+h;break;case"tool-result":s+=f(t.content)+h;break;default:s+=h+Math.ceil(JSON.stringify(t).length/l)}return s}c(f,"estimateContent");function m(e){return f(e.content)+4}c(m,"estimateMessage");function b(e){return e?.system===void 0?0:Math.ceil(e.system.length/l)+4}c(b,"estimateSystemTokens");function S(e){return e?.tools===void 0||e.tools.length===0?0:Math.ceil(JSON.stringify(e.tools).length/l)+h}c(S,"estimateToolsTokens");function g(e){return b(e)+S(e)}c(g,"estimateHeader");function E(e,s){if(s.type==="compaction/summary"||s.type==="compaction/prune"){const{shadowedRange:a,shadowedTokenCount:r}=s.data;return{deltaTokens:0,claim:{start:a.start,end:a.end,tokens:r}}}if(!q(s))return{deltaTokens:0,claim:void 0};const t=y(s),n=t===null?0:m(t),o=s.surfaceOp;if(o==="append")return{deltaTokens:n,claim:void 0};if(e===void 0)return{deltaTokens:0,claim:void 0};if(e.start!==o.start||e.end!==o.end)throw new Error(`token surface: replace at seq ${s.seq} over range ${o.start}-${o.end} has no adjacent shadow price (armed claim covers ${e.start}-${e.end})`);return{deltaTokens:n-e.tokens,claim:void 0}}c(E,"foldSurfaceProjection");const P={key:"contextBreakdown",schema:u.object({systemTokens:u.number().int().nonnegative(),toolsTokens:u.number().int().nonnegative(),messageTokens:u.number().int().nonnegative()}).strict(),init:c(()=>({systemTokens:0,toolsTokens:0,messageTokens:0}),"init"),apply:c((e,s)=>{const t=E(e.claim,s);let n=e.systemTokens,o=e.toolsTokens;if(s.type==="request/header"){const a=T(s.data.header);n=b(a),o=S(a)}return n===e.systemTokens&&o===e.toolsTokens&&t.deltaTokens===0&&t.claim===void 0&&e.claim===void 0?e:{systemTokens:n,toolsTokens:o,messageTokens:e.messageTokens+t.deltaTokens,...t.claim===void 0?{}:{claim:t.claim}}},"apply"),view:c(({systemTokens:e,toolsTokens:s,messageTokens:t})=>({systemTokens:e,toolsTokens:s,messageTokens:t}),"view"),stateVersion:2},_=c(()=>({uncachedInputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0}),"zeroBuckets"),C=c(e=>({uncachedInputTokens:e.inputTokens,outputTokens:e.outputTokens,cacheReadTokens:e.cacheReadTokens??0,cacheWriteTokens:e.cacheWriteTokens??0}),"bucketsFrom"),O=c((e,s)=>e.uncachedInputTokens===s.uncachedInputTokens&&e.outputTokens===s.outputTokens&&e.cacheReadTokens===s.cacheReadTokens&&e.cacheWriteTokens===s.cacheWriteTokens,"bucketsEqual"),A=c((e,s,t)=>({uncachedInputTokens:e.uncachedInputTokens-(s?.uncachedInputTokens??0)+t.uncachedInputTokens,outputTokens:e.outputTokens-(s?.outputTokens??0)+t.outputTokens,cacheReadTokens:e.cacheReadTokens-(s?.cacheReadTokens??0)+t.cacheReadTokens,cacheWriteTokens:e.cacheWriteTokens-(s?.cacheWriteTokens??0)+t.cacheWriteTokens}),"addReplacing"),z=u.object({uncachedInputTokens:u.number().int().nonnegative(),outputTokens:u.number().int().nonnegative(),cacheReadTokens:u.number().int().nonnegative(),cacheWriteTokens:u.number().int().nonnegative()}).strict(),B=u.object({pressureTokens:u.number().int().nonnegative().optional(),projectedTokens:u.number().int().nonnegative().optional(),contextWindow:u.number().int().positive().optional()}).strict(),D=c(e=>e.inputTokens+(e.cacheReadTokens??0)+(e.cacheWriteTokens??0),"pressureFrom"),H=c(e=>e.type==="assistant/chunk"&&e.data.chunk.type==="usage"?e.data.chunk.usage:e.type==="assistant/message"?e.data.usage:void 0,"usageOf"),V={key:"tokenUsage",schema:z,init:c(()=>({totals:_(),last:null}),"init"),apply:c((e,s)=>{let t,n,o;if(s.type==="assistant/chunk"&&s.data.chunk.type==="usage")({turn:t,step:n}=s.data),o=s.data.chunk.usage;else if(s.type==="assistant/message"&&s.data.usage!==void 0)({turn:t,step:n,usage:o}=s.data);else return e;const a=C(o),r=e.last!==null&&e.last.turn===t&&e.last.step===n?e.last.buckets:void 0;return r!==void 0&&O(r,a)?e:{totals:A(e.totals,r,a),last:{turn:t,step:n,buckets:a}}},"apply"),view:c(e=>e.totals,"view"),stateVersion:1},F={key:"contextPressure",schema:B,init:c(()=>({surfaceTokens:0}),"init"),apply:c((e,s)=>{const t=E(e.claim,s);let n=e;if(s.type==="request/context"){const i=s.data.contextWindow;if(i!==e.contextWindow)if(i!==void 0)n={...n,contextWindow:i};else{const{contextWindow:k,...d}=n;n=d}}const o=H(s);if(o!==void 0){const i=D(o);(i!==n.pressureTokens||n.sampledSurfaceTokens!==n.surfaceTokens)&&(n={...n,pressureTokens:i,sampledSurfaceTokens:n.surfaceTokens})}if(t.deltaTokens!==0&&(n={...n,surfaceTokens:n.surfaceTokens+t.deltaTokens}),e.claim===void 0&&t.claim===void 0)return n;const{claim:a,...r}=n;return t.claim===void 0?r:{...r,claim:t.claim}},"apply"),view:c(({contextWindow:e,pressureTokens:s,surfaceTokens:t,sampledSurfaceTokens:n})=>({...e===void 0?{}:{contextWindow:e},...s===void 0?{}:{pressureTokens:s},...s===void 0||n===void 0?{}:{projectedTokens:Math.max(0,s+t-n)}}),"view"),stateVersion:4};function K(e,s){const t=y(s),n=t===null?0:m(t),o=s.surfaceOp;if(o==="append")return{tokens:n,nodes:[...e,{seq:s.seq,tokens:n}],deltaTokens:n};const a=e.findIndex(d=>d.seq===o.start),r=e.findIndex(d=>d.seq===o.end);if(a===-1||r===-1||a>r)throw new Error(`token surface: replace at seq ${s.seq} has invalid current range ${o.start}-${o.end}`);const i=e.slice(a,r+1).reduce((d,p)=>d+p.tokens,0),k=[...e];return k.splice(a,r-a+1,{seq:s.seq,tokens:n}),{tokens:n,nodes:k,deltaTokens:n-i}}c(K,"foldSurfaceTokens");function N(e){return e.inputTokens+(e.cacheReadTokens??0)+(e.cacheWriteTokens??0)+e.outputTokens}c(N,"usageTokens");function J(e,s){return e===void 0||s===void 0?e===s:I(e,s)}c(J,"optionalHeaderEquals");function U(e){for(const s of Object.keys(e))throw new Error(`TokenMeterConfig: unknown key "${s}" (no settings are supported)`)}c(U,"validateConfigKeys");var $=class extends R{static{c(this,"TokenMeter")}static Config=W.object({});states=new WeakMap;constructor(e,s={}){super(e,"tokenMeter"),U(s),e.inject(["sessionProjections"],t=>{t.sessionProjections.register(V),t.sessionProjections.register(F),t.sessionProjections.register(P)}),e.on("session/event",t=>{this.states.has(t)&&this._sync(t)})}measure(e,s){const t=this._sync(e),n=s===void 0?t.header:T(s),o=t.anchor;let a,r;return o!==void 0&&J(o.header,n)?(a=o.baseline,r=t.surfaceTokens-o.surfaceTokens):n===void 0&&t.surfaceTokens===0?(a={kind:"none",tokens:0},r=0):(a={kind:"estimated",tokens:g(n)+t.surfaceTokens},r=0),M(structuredClone({logRevision:t.consumedEvents,baseline:a,surfaceDeltaTokens:r,totalTokens:Math.max(0,a.tokens+r),surfaceTokens:t.surfaceTokens,nodes:t.surface}))}estimateMessage(e){return m(e)}_sync(e){let s=this.states.get(e);for(s===void 0&&(s={consumedEvents:0,header:void 0,surface:[],surfaceTokens:0,stepStart:void 0,anchor:void 0},this.states.set(e,s));s.consumedEvents<e.events.length;){const t=e.events[s.consumedEvents];this._foldEvent(e,s,t),s.consumedEvents+=1}return s}_foldEvent(e,s,t){let n=s.header,o=s.stepStart,a=s.anchor;switch(t.type){case"request/header":n=T(t.data.header);break;case"step/start":if(s.stepStart!==void 0)throw new Error(`token meter: step/start at seq ${t.seq} arrived before turn ${s.stepStart.turn}/step ${s.stepStart.step} ended`);o={...t.data,surfaceTokens:s.surfaceTokens};break;case"step/end":if(s.stepStart===void 0||s.stepStart.turn!==t.data.turn||s.stepStart.step!==t.data.step)throw new Error(`token meter: step/end at seq ${t.seq} has no matching step/start event`);o=void 0;break;default:break}const r=q(t)?K(s.surface,t):void 0;if(t.type==="assistant/message"){const i=s.stepStart;if(i===void 0||i.turn!==t.data.turn||i.step!==t.data.step)throw new Error(`token meter: assistant/message at seq ${t.seq} has no matching step/start event`);const k=r.tokens;if(t.data.usage!==void 0&&n!==void 0){const d=this._estimateProviderAssistant(e,t,k),p=i.surfaceTokens+d,w=N(t.data.usage),v=g(n)+p;a={header:n,surfaceTokens:p,baseline:w>=v?{kind:"usage",tokens:w,usage:t.data.usage}:{kind:"estimated",tokens:v}}}else{const d=i.surfaceTokens+k;a={header:n,surfaceTokens:d,baseline:{kind:"estimated",tokens:g(n)+d}}}}s.header=n,s.stepStart=o,r!==void 0&&(s.surface=r.nodes,s.surfaceTokens+=r.deltaTokens),s.anchor=a}_estimateProviderAssistant(e,s,t){const n=s.sourceEventSeqs;if(n===void 0)return t;const o=new j,a=new Set;for(const i of n){if(i>=s.seq)throw new Error(`token meter: assistant/message at seq ${s.seq} source seq ${i} is not earlier`);if(a.has(i))throw new Error(`token meter: assistant/message at seq ${s.seq} repeats source seq ${i}`);a.add(i);const k=e.events[i];if(k.type!=="assistant/chunk")throw new Error(`token meter: assistant/message at seq ${s.seq} source seq ${i} is not assistant/chunk`);if(k.data.turn!==s.data.turn||k.data.step!==s.data.step)throw new Error(`token meter: assistant/message at seq ${s.seq} source seq ${i} belongs to another step`);o.push(k.data.chunk)}const r=o.blocks();return r.length===0?0:f(r)+4}};export{$ as TokenMeter,$ as default};
1
+ var x=Object.defineProperty;var c=(e,s)=>x(e,"name",{value:s,configurable:!0});import{Service as R}from"@deepseek-ai/cordis";import W from"@deepseek-ai/schemastery";import{BlockAssembler as j,deepFreeze as M}from"@deepseek-ai/dsh-llm";import{canonicalHeader as T,deriveEventMessage as y,headerEquals as I,isSurfaceEvent as q}from"@deepseek-ai/dsh-session";import{z as u}from"zod";const l=4,h=4;function f(e){let s=0;for(const t of e)switch(t.type){case"text":case"reasoning":s+=Math.ceil(t.text.length/l)+h;break;case"tool-call":s+=Math.ceil(t.name.length/l)+Math.ceil(t.arguments.length/l)+h;break;case"tool-result":s+=f(t.content)+h;break;default:s+=h+Math.ceil(JSON.stringify(t).length/l)}return s}c(f,"estimateContent");function m(e){return f(e.content)+4}c(m,"estimateMessage");function b(e){return e?.system===void 0?0:Math.ceil(e.system.length/l)+4}c(b,"estimateSystemTokens");function S(e){return e?.tools===void 0||e.tools.length===0?0:Math.ceil(JSON.stringify(e.tools).length/l)+h}c(S,"estimateToolsTokens");function g(e){return b(e)+S(e)}c(g,"estimateHeader");function E(e,s){if(s.type==="compaction/summary"||s.type==="compaction/prune"){const{shadowedRange:a,shadowedTokenCount:r}=s.data;return{deltaTokens:0,claim:{start:a.start,end:a.end,tokens:r}}}if(!q(s))return{deltaTokens:0,claim:void 0};const t=y(s),n=t===null?0:m(t),o=s.surfaceOp;if(o==="append")return{deltaTokens:n,claim:void 0};if(e===void 0)return{deltaTokens:0,claim:void 0};if(e.start!==o.start||e.end!==o.end)throw new Error(`token surface: replace at seq ${s.seq} over range ${o.start}-${o.end} has no adjacent shadow price (armed claim covers ${e.start}-${e.end})`);return{deltaTokens:n-e.tokens,claim:void 0}}c(E,"foldSurfaceProjection");const P={key:"contextBreakdown",schema:u.object({systemTokens:u.number().int().nonnegative(),toolsTokens:u.number().int().nonnegative(),messageTokens:u.number().int().nonnegative()}).strict(),init:c(()=>({systemTokens:0,toolsTokens:0,messageTokens:0}),"init"),apply:c((e,s)=>{const t=E(e.claim,s);let n=e.systemTokens,o=e.toolsTokens;if(s.type==="request/header"){const a=T(s.data.header);n=b(a),o=S(a)}return n===e.systemTokens&&o===e.toolsTokens&&t.deltaTokens===0&&t.claim===void 0&&e.claim===void 0?e:{systemTokens:n,toolsTokens:o,messageTokens:e.messageTokens+t.deltaTokens,...t.claim===void 0?{}:{claim:t.claim}}},"apply"),view:c(({systemTokens:e,toolsTokens:s,messageTokens:t})=>({systemTokens:e,toolsTokens:s,messageTokens:t}),"view"),stateVersion:2},_=c(()=>({uncachedInputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0}),"zeroBuckets"),C=c(e=>({uncachedInputTokens:e.inputTokens,outputTokens:e.outputTokens,cacheReadTokens:e.cacheReadTokens??0,cacheWriteTokens:e.cacheWriteTokens??0}),"bucketsFrom"),O=c((e,s)=>e.uncachedInputTokens===s.uncachedInputTokens&&e.outputTokens===s.outputTokens&&e.cacheReadTokens===s.cacheReadTokens&&e.cacheWriteTokens===s.cacheWriteTokens,"bucketsEqual"),A=c((e,s,t)=>({uncachedInputTokens:e.uncachedInputTokens-(s?.uncachedInputTokens??0)+t.uncachedInputTokens,outputTokens:e.outputTokens-(s?.outputTokens??0)+t.outputTokens,cacheReadTokens:e.cacheReadTokens-(s?.cacheReadTokens??0)+t.cacheReadTokens,cacheWriteTokens:e.cacheWriteTokens-(s?.cacheWriteTokens??0)+t.cacheWriteTokens}),"addReplacing"),z=u.object({uncachedInputTokens:u.number().int().nonnegative(),outputTokens:u.number().int().nonnegative(),cacheReadTokens:u.number().int().nonnegative(),cacheWriteTokens:u.number().int().nonnegative()}).strict(),B=u.object({pressureTokens:u.number().int().nonnegative().optional(),projectedTokens:u.number().int().nonnegative().optional(),contextWindow:u.number().int().positive().optional()}).strict(),D=c(e=>e.inputTokens+(e.cacheReadTokens??0)+(e.cacheWriteTokens??0),"pressureFrom"),H=c(e=>e.type==="assistant/chunk"&&e.data.chunk.type==="usage"?e.data.chunk.usage:e.type==="assistant/message"?e.data.usage:void 0,"usageOf"),V={key:"tokenUsage",schema:z,init:c(()=>({totals:_(),last:null}),"init"),apply:c((e,s)=>{let t,n,o;if(s.type==="assistant/chunk"&&s.data.chunk.type==="usage")({turn:t,step:n}=s.data),o=s.data.chunk.usage;else if(s.type==="assistant/message"&&s.data.usage!==void 0)({turn:t,step:n,usage:o}=s.data);else return e;const a=C(o),r=e.last!==null&&e.last.turn===t&&e.last.step===n?e.last.buckets:void 0;return r!==void 0&&O(r,a)?e:{totals:A(e.totals,r,a),last:{turn:t,step:n,buckets:a}}},"apply"),view:c(e=>e.totals,"view"),stateVersion:1},F={key:"contextPressure",schema:B,init:c(()=>({surfaceTokens:0}),"init"),apply:c((e,s)=>{const t=E(e.claim,s);let n=e;if(s.type==="request/context"){const i=s.data.contextWindow;if(i!==e.contextWindow)if(i!==void 0)n={...n,contextWindow:i};else{const{contextWindow:k,...d}=n;n=d}}const o=H(s);if(o!==void 0){const i=D(o);(i!==n.pressureTokens||n.sampledSurfaceTokens!==n.surfaceTokens)&&(n={...n,pressureTokens:i,sampledSurfaceTokens:n.surfaceTokens})}if(t.deltaTokens!==0&&(n={...n,surfaceTokens:n.surfaceTokens+t.deltaTokens}),e.claim===void 0&&t.claim===void 0)return n;const{claim:a,...r}=n;return t.claim===void 0?r:{...r,claim:t.claim}},"apply"),view:c(({contextWindow:e,pressureTokens:s,surfaceTokens:t,sampledSurfaceTokens:n})=>({...e===void 0?{}:{contextWindow:e},...s===void 0?{}:{pressureTokens:s},...s===void 0||n===void 0?{}:{projectedTokens:Math.max(0,s+t-n)}}),"view"),stateVersion:4};function K(e,s){const t=y(s),n=t===null?0:m(t),o=s.surfaceOp;if(o==="append")return{tokens:n,nodes:[...e,{seq:s.seq,tokens:n}],deltaTokens:n};const a=e.findIndex(d=>d.seq===o.start),r=e.findIndex(d=>d.seq===o.end);if(a===-1||r===-1||a>r)throw new Error(`token surface: replace at seq ${s.seq} has invalid current range ${o.start}-${o.end}`);const i=e.slice(a,r+1).reduce((d,p)=>d+p.tokens,0),k=[...e];return k.splice(a,r-a+1,{seq:s.seq,tokens:n}),{tokens:n,nodes:k,deltaTokens:n-i}}c(K,"foldSurfaceTokens");function N(e){return e.inputTokens+(e.cacheReadTokens??0)+(e.cacheWriteTokens??0)+e.outputTokens}c(N,"usageTokens");function J(e,s){return e===void 0||s===void 0?e===s:I(e,s)}c(J,"optionalHeaderEquals");function U(e){for(const s of Object.keys(e))throw new Error(`TokenMeterConfig: unknown key "${s}" (no settings are supported)`)}c(U,"validateConfigKeys");var $=class extends R{static{c(this,"TokenMeter")}static Config=W.object({});states=new WeakMap;constructor(e,s={}){super(e,"tokenMeter"),U(s),e.inject(["sessionProjections"],t=>{t.sessionProjections.register(V),t.sessionProjections.register(F),t.sessionProjections.register(P)}),e.on("session/event",t=>{this.states.has(t)&&this._sync(t)})}measure(e,s){const t=this._sync(e),n=s===void 0?t.header:T(s),o=t.anchor;let a,r;return o!==void 0&&J(o.header,n)?(a=o.baseline,r=t.surfaceTokens-o.surfaceTokens):n===void 0&&t.surfaceTokens===0?(a={kind:"none",tokens:0},r=0):(a={kind:"estimated",tokens:g(n)+t.surfaceTokens},r=0),M(structuredClone({logRevision:t.consumedEvents,baseline:a,surfaceDeltaTokens:r,totalTokens:Math.max(0,a.tokens+r),surfaceTokens:t.surfaceTokens,nodes:t.surface}))}estimateMessage(e){return m(e)}_sync(e){let s=this.states.get(e);for(s===void 0&&(s={consumedEvents:0,header:void 0,surface:[],surfaceTokens:0,stepStart:void 0,anchor:void 0},this.states.set(e,s));s.consumedEvents<e.events.length;){const t=e.events[s.consumedEvents];this._foldEvent(e,s,t),s.consumedEvents+=1}return s}_foldEvent(e,s,t){let n=s.header,o=s.stepStart,a=s.anchor;switch(t.type){case"request/header":n=T(t.data.header);break;case"step/start":if(s.stepStart!==void 0)throw new Error(`token meter: step/start at seq ${t.seq} arrived before turn ${s.stepStart.turn}/step ${s.stepStart.step} ended`);o={...t.data,surfaceTokens:s.surfaceTokens};break;case"step/end":if(s.stepStart===void 0||s.stepStart.turn!==t.data.turn||s.stepStart.step!==t.data.step)throw new Error(`token meter: step/end at seq ${t.seq} has no matching step/start event`);o=void 0}const r=q(t)?K(s.surface,t):void 0;if(t.type==="assistant/message"){const i=s.stepStart;if(i===void 0||i.turn!==t.data.turn||i.step!==t.data.step)throw new Error(`token meter: assistant/message at seq ${t.seq} has no matching step/start event`);const k=r.tokens;if(t.data.usage!==void 0&&n!==void 0){const d=this._estimateProviderAssistant(e,t,k),p=i.surfaceTokens+d,w=N(t.data.usage),v=g(n)+p;a={header:n,surfaceTokens:p,baseline:w>=v?{kind:"usage",tokens:w,usage:t.data.usage}:{kind:"estimated",tokens:v}}}else{const d=i.surfaceTokens+k;a={header:n,surfaceTokens:d,baseline:{kind:"estimated",tokens:g(n)+d}}}}s.header=n,s.stepStart=o,r!==void 0&&(s.surface=r.nodes,s.surfaceTokens+=r.deltaTokens),s.anchor=a}_estimateProviderAssistant(e,s,t){const n=s.sourceEventSeqs;if(n===void 0)return t;const o=new j,a=new Set;for(const i of n){if(i>=s.seq)throw new Error(`token meter: assistant/message at seq ${s.seq} source seq ${i} is not earlier`);if(a.has(i))throw new Error(`token meter: assistant/message at seq ${s.seq} repeats source seq ${i}`);a.add(i);const k=e.events[i];if(k.type!=="assistant/chunk")throw new Error(`token meter: assistant/message at seq ${s.seq} source seq ${i} is not assistant/chunk`);if(k.data.turn!==s.data.turn||k.data.step!==s.data.step)throw new Error(`token meter: assistant/message at seq ${s.seq} source seq ${i} belongs to another step`);o.push(k.data.chunk)}const r=o.blocks();return r.length===0?0:f(r)+4}};export{$ as TokenMeter,$ as default};
@@ -1 +1 @@
1
- {"name":"@deepseek-ai/dsh-token-meter","version":"0.0.11","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./client":{"types":"./lib/types/client.d.ts","default":"./lib/types/client.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-invariants":"^0.0.11","@deepseek-ai/dsh-session-projection":"^0.0.11","@deepseek-ai/dsh-compaction":"^0.0.11","@deepseek-ai/dsh-llm":"^0.0.11","@deepseek-ai/dsh-session":"^0.0.11","@deepseek-ai/cordis":"^4.0.1"},"dependencies":{"zod":"^4.4.3","@deepseek-ai/schemastery":"^3.18.1"}}
1
+ {"name":"@deepseek-ai/dsh-token-meter","version":"0.0.13","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./client":{"types":"./lib/types/client.d.ts","default":"./lib/types/client.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-compaction":"^0.0.13","@deepseek-ai/dsh-invariants":"^0.0.13","@deepseek-ai/dsh-llm":"^0.0.13","@deepseek-ai/dsh-session":"^0.0.13","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-session-projection":"^0.0.13"},"dependencies":{"zod":"^4.4.3","@deepseek-ai/schemastery":"^3.18.1"}}
@@ -1 +1 @@
1
- {"name":"@deepseek-ai/dsh-tool-ask-user","version":"0.0.11","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-invariants":"^0.0.11","@deepseek-ai/dsh-tools":"^0.0.11","@deepseek-ai/dsh-user-questions":"^0.0.11","@deepseek-ai/dsh-agent":"^0.0.11","@deepseek-ai/cordis":"^4.0.1"}}
1
+ {"name":"@deepseek-ai/dsh-tool-ask-user","version":"0.0.13","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-agent":"^0.0.13","@deepseek-ai/dsh-invariants":"^0.0.13","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-user-questions":"^0.0.13","@deepseek-ai/dsh-tools":"^0.0.13"}}
@@ -1 +1 @@
1
- {"name":"@deepseek-ai/dsh-tool-bash","version":"0.0.11","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-agent":"^0.0.11","@deepseek-ai/dsh-shell":"^0.0.11","@deepseek-ai/dsh-shell-env":"^0.0.11","@deepseek-ai/dsh-invariants":"^0.0.11","@deepseek-ai/dsh-llm":"^0.0.11","@deepseek-ai/dsh-sandbox":"^0.0.11","@deepseek-ai/dsh-sandbox-policy":"^0.0.11","@deepseek-ai/dsh-system-prompt":"^0.0.11","@deepseek-ai/dsh-tools":"^0.0.11","@deepseek-ai/dsh-jobs":"^0.0.11","@deepseek-ai/dsh-user-approval":"^0.0.11","@deepseek-ai/cordis":"^4.0.1"},"dependencies":{"@deepseek-ai/schemastery":"^3.18.1"}}
1
+ {"name":"@deepseek-ai/dsh-tool-bash","version":"0.0.13","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-agent":"^0.0.13","@deepseek-ai/dsh-shell":"^0.0.13","@deepseek-ai/dsh-shell-env":"^0.0.13","@deepseek-ai/dsh-invariants":"^0.0.13","@deepseek-ai/dsh-sandbox-policy":"^0.0.13","@deepseek-ai/dsh-system-prompt":"^0.0.13","@deepseek-ai/dsh-llm":"^0.0.13","@deepseek-ai/dsh-sandbox":"^0.0.13","@deepseek-ai/dsh-jobs":"^0.0.13","@deepseek-ai/dsh-tools":"^0.0.13","@deepseek-ai/dsh-user-approval":"^0.0.13","@deepseek-ai/cordis":"^4.0.1"},"dependencies":{"@deepseek-ai/schemastery":"^3.18.1"}}
@@ -1 +1 @@
1
- {"name":"@deepseek-ai/dsh-tool-bash-persistent","version":"0.0.11","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-agent":"^0.0.11","@deepseek-ai/dsh-terminal":"^0.0.11","@deepseek-ai/dsh-invariants":"^0.0.11","@deepseek-ai/dsh-tools":"^0.0.11","@deepseek-ai/dsh-timeout":"^0.0.11","@deepseek-ai/cordis":"^4.0.1"},"dependencies":{"@deepseek-ai/schemastery":"^3.18.1"}}
1
+ {"name":"@deepseek-ai/dsh-tool-bash-persistent","version":"0.0.13","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-agent":"^0.0.13","@deepseek-ai/dsh-terminal":"^0.0.13","@deepseek-ai/dsh-tools":"^0.0.13","@deepseek-ai/dsh-timeout":"^0.0.13","@deepseek-ai/dsh-invariants":"^0.0.13","@deepseek-ai/cordis":"^4.0.1"},"dependencies":{"@deepseek-ai/schemastery":"^3.18.1"}}
@@ -1 +1 @@
1
- {"name":"@deepseek-ai/dsh-tool-call-timeout-policy","version":"0.0.11","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-invariants":"^0.0.11","@deepseek-ai/dsh-llm":"^0.0.11","@deepseek-ai/dsh-timeout":"^0.0.11","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-tools":"^0.0.11"}}
1
+ {"name":"@deepseek-ai/dsh-tool-call-timeout-policy","version":"0.0.13","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-invariants":"^0.0.13","@deepseek-ai/dsh-timeout":"^0.0.13","@deepseek-ai/dsh-llm":"^0.0.13","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-tools":"^0.0.13"}}
@@ -1 +1 @@
1
- {"name":"@deepseek-ai/dsh-tool-cordis","version":"0.0.11","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-cordis-host-runner":"^0.0.11","@deepseek-ai/dsh-invariants":"^0.0.11","@deepseek-ai/dsh-llm":"^0.0.11","@deepseek-ai/dsh-scope":"^0.0.11","@deepseek-ai/dsh-session":"^0.0.11","@deepseek-ai/dsh-agent":"^0.0.11","@deepseek-ai/dsh-tools":"^0.0.11","@deepseek-ai/dsh-system-prompt":"^0.0.11","@deepseek-ai/cordis":"^4.0.1"}}
1
+ {"name":"@deepseek-ai/dsh-tool-cordis","version":"0.0.13","publishConfig":{"access":"public"},"type":"module","main":"lib/index.js","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","peerDependencies":{"@deepseek-ai/dsh-agent":"^0.0.13","@deepseek-ai/dsh-cordis-host-runner":"^0.0.13","@deepseek-ai/dsh-llm":"^0.0.13","@deepseek-ai/dsh-scope":"^0.0.13","@deepseek-ai/dsh-system-prompt":"^0.0.13","@deepseek-ai/dsh-tools":"^0.0.13","@deepseek-ai/dsh-session":"^0.0.13","@deepseek-ai/dsh-invariants":"^0.0.13","@deepseek-ai/cordis":"^4.0.1"}}