@toddzheng024/dscode-desktop 0.0.0-stage → 0.7.33

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 (484) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +120 -2
  3. package/THIRD_PARTY_NOTICES.md +30 -0
  4. package/bin/apply_patch +9 -0
  5. package/cordis.patch.yml +433 -0
  6. package/docs/CHANGELOG.md +641 -0
  7. package/docs/account-login.md +44 -0
  8. package/docs/auto-review.md +128 -0
  9. package/docs/browser-use.md +783 -0
  10. package/docs/computer-use.md +81 -0
  11. package/docs/custom-providers.md +88 -0
  12. package/docs/demo.md +76 -0
  13. package/docs/distribution.md +58 -0
  14. package/docs/dscode-ultra.md +75 -0
  15. package/docs/email.md +296 -0
  16. package/docs/exec.md +40 -0
  17. package/docs/hub-distribution.md +190 -0
  18. package/docs/memory.md +121 -0
  19. package/docs/opencode-go.md +61 -0
  20. package/docs/plugin-hub.md +68 -0
  21. package/docs/releases/0.2.0.md +28 -0
  22. package/docs/releases/0.3.0.md +21 -0
  23. package/docs/releases/0.4.0.md +20 -0
  24. package/docs/releases/0.5.0.md +19 -0
  25. package/docs/releases/0.6.0.md +20 -0
  26. package/docs/releases/0.7.0.md +22 -0
  27. package/docs/releases/0.7.1.md +20 -0
  28. package/docs/releases/0.7.10.md +10 -0
  29. package/docs/releases/0.7.11.md +17 -0
  30. package/docs/releases/0.7.12.md +11 -0
  31. package/docs/releases/0.7.13.md +12 -0
  32. package/docs/releases/0.7.14.md +11 -0
  33. package/docs/releases/0.7.15.md +11 -0
  34. package/docs/releases/0.7.16.md +10 -0
  35. package/docs/releases/0.7.17.md +12 -0
  36. package/docs/releases/0.7.18.md +13 -0
  37. package/docs/releases/0.7.19.md +8 -0
  38. package/docs/releases/0.7.2.md +19 -0
  39. package/docs/releases/0.7.20.md +10 -0
  40. package/docs/releases/0.7.21.md +9 -0
  41. package/docs/releases/0.7.22.md +11 -0
  42. package/docs/releases/0.7.23.md +14 -0
  43. package/docs/releases/0.7.24.md +11 -0
  44. package/docs/releases/0.7.25.md +8 -0
  45. package/docs/releases/0.7.26.md +18 -0
  46. package/docs/releases/0.7.27.md +8 -0
  47. package/docs/releases/0.7.28.md +22 -0
  48. package/docs/releases/0.7.29.md +12 -0
  49. package/docs/releases/0.7.3.md +23 -0
  50. package/docs/releases/0.7.30.md +19 -0
  51. package/docs/releases/0.7.31.md +14 -0
  52. package/docs/releases/0.7.32.md +14 -0
  53. package/docs/releases/0.7.33.md +30 -0
  54. package/docs/releases/0.7.4.md +16 -0
  55. package/docs/releases/0.7.5.md +18 -0
  56. package/docs/releases/0.7.6.md +29 -0
  57. package/docs/releases/0.7.7.md +36 -0
  58. package/docs/releases/0.7.8.md +14 -0
  59. package/docs/releases/0.7.9.md +15 -0
  60. package/docs/session-bridge.md +80 -0
  61. package/docs/session-cards.md +53 -0
  62. package/docs/session-communication.md +186 -0
  63. package/docs/session-metrics.md +41 -0
  64. package/docs/skills.md +81 -0
  65. package/docs/triggers.md +338 -0
  66. package/docs/tui-commands.md +204 -0
  67. package/extensions/browser/manifest.json +22 -0
  68. package/extensions/browser/popup.css +6 -0
  69. package/extensions/browser/popup.html +11 -0
  70. package/extensions/browser/popup.mjs +47 -0
  71. package/extensions/browser/protocol.mjs +168 -0
  72. package/extensions/browser/worker.mjs +94 -0
  73. package/icon.svg +7 -0
  74. package/locale/en.json +6 -0
  75. package/locale/zh-cn.json +6 -0
  76. package/node_modules/@deepseek-ai/node-addon-system/LICENSE +21 -0
  77. package/node_modules/@deepseek-ai/node-addon-system/README.i18n.yaml +6 -0
  78. package/node_modules/@deepseek-ai/node-addon-system/README.md +15 -0
  79. package/node_modules/@deepseek-ai/node-addon-system/README.zh.md +15 -0
  80. package/node_modules/@deepseek-ai/node-addon-system/lib/flock.d.ts +13 -0
  81. package/node_modules/@deepseek-ai/node-addon-system/lib/flock.js +51 -0
  82. package/node_modules/@deepseek-ai/node-addon-system/lib/index.d.ts +73 -0
  83. package/node_modules/@deepseek-ai/node-addon-system/lib/index.js +98 -0
  84. package/node_modules/@deepseek-ai/node-addon-system/package.json +45 -0
  85. package/node_modules/@deepseek-ai/node-addon-system/src/flock.c +164 -0
  86. package/node_modules/@deepseek-ai/node-addon-system/src/main.c +298 -0
  87. package/node_modules/@deepseek-ai/node-addon-system-darwin-arm64/LICENSE +28 -0
  88. package/node_modules/@deepseek-ai/node-addon-system-darwin-arm64/README.i18n.yaml +6 -0
  89. package/node_modules/@deepseek-ai/node-addon-system-darwin-arm64/README.md +9 -0
  90. package/node_modules/@deepseek-ai/node-addon-system-darwin-arm64/README.zh.md +9 -0
  91. package/node_modules/@deepseek-ai/node-addon-system-darwin-arm64/bin/system.node +0 -0
  92. package/node_modules/@deepseek-ai/node-addon-system-darwin-arm64/package.json +31 -0
  93. package/node_modules/@deepseek-ai/node-addon-system-darwin-arm64/prebuilds.json +6 -0
  94. package/node_modules/@deepseek-ai/node-addon-system-darwin-x64/LICENSE +28 -0
  95. package/node_modules/@deepseek-ai/node-addon-system-darwin-x64/README.i18n.yaml +6 -0
  96. package/node_modules/@deepseek-ai/node-addon-system-darwin-x64/README.md +9 -0
  97. package/node_modules/@deepseek-ai/node-addon-system-darwin-x64/README.zh.md +9 -0
  98. package/node_modules/@deepseek-ai/node-addon-system-darwin-x64/bin/system.node +0 -0
  99. package/node_modules/@deepseek-ai/node-addon-system-darwin-x64/package.json +31 -0
  100. package/node_modules/@deepseek-ai/node-addon-system-darwin-x64/prebuilds.json +6 -0
  101. package/node_modules/@deepseek-ai/node-addon-system-linux-arm64/LICENSE +28 -0
  102. package/node_modules/@deepseek-ai/node-addon-system-linux-arm64/README.i18n.yaml +6 -0
  103. package/node_modules/@deepseek-ai/node-addon-system-linux-arm64/README.md +11 -0
  104. package/node_modules/@deepseek-ai/node-addon-system-linux-arm64/README.zh.md +11 -0
  105. package/node_modules/@deepseek-ai/node-addon-system-linux-arm64/bin/glibc/system.node +0 -0
  106. package/node_modules/@deepseek-ai/node-addon-system-linux-arm64/bin/landlock-run +0 -0
  107. package/node_modules/@deepseek-ai/node-addon-system-linux-arm64/bin/musl/system.node +0 -0
  108. package/node_modules/@deepseek-ai/node-addon-system-linux-arm64/package.json +31 -0
  109. package/node_modules/@deepseek-ai/node-addon-system-linux-arm64/prebuilds.json +24 -0
  110. package/node_modules/@deepseek-ai/node-addon-system-linux-x64/LICENSE +28 -0
  111. package/node_modules/@deepseek-ai/node-addon-system-linux-x64/README.i18n.yaml +6 -0
  112. package/node_modules/@deepseek-ai/node-addon-system-linux-x64/README.md +11 -0
  113. package/node_modules/@deepseek-ai/node-addon-system-linux-x64/README.zh.md +11 -0
  114. package/node_modules/@deepseek-ai/node-addon-system-linux-x64/bin/glibc/system.node +0 -0
  115. package/node_modules/@deepseek-ai/node-addon-system-linux-x64/bin/landlock-run +0 -0
  116. package/node_modules/@deepseek-ai/node-addon-system-linux-x64/bin/musl/system.node +0 -0
  117. package/node_modules/@deepseek-ai/node-addon-system-linux-x64/package.json +31 -0
  118. package/node_modules/@deepseek-ai/node-addon-system-linux-x64/prebuilds.json +24 -0
  119. package/package.json +156 -4
  120. package/plugins/account/index.mjs +178 -0
  121. package/plugins/account/state.mjs +123 -0
  122. package/plugins/auto-review/audit.mjs +24 -0
  123. package/plugins/auto-review/index.mjs +267 -0
  124. package/plugins/auto-review/policy.mjs +92 -0
  125. package/plugins/browser/SKILL.md +158 -0
  126. package/plugins/browser/access.mjs +143 -0
  127. package/plugins/browser/config.mjs +60 -0
  128. package/plugins/browser/connection.mjs +385 -0
  129. package/plugins/browser/desktop-client.mjs +282 -0
  130. package/plugins/browser/desktop-host.mjs +74 -0
  131. package/plugins/browser/document-identity.mjs +57 -0
  132. package/plugins/browser/extension-relay.mjs +66 -0
  133. package/plugins/browser/files.mjs +32 -0
  134. package/plugins/browser/index.mjs +235 -0
  135. package/plugins/browser/mcp-entry.mjs +18 -0
  136. package/plugins/browser/mcp-tools.mjs +21 -0
  137. package/plugins/browser/presentation.mjs +45 -0
  138. package/plugins/browser/preview.mjs +77 -0
  139. package/plugins/browser/review.mjs +20 -0
  140. package/plugins/browser/screenshots.mjs +35 -0
  141. package/plugins/clipboard-image/clipboard-image.swift +56 -0
  142. package/plugins/clipboard-image/index.mjs +70 -0
  143. package/plugins/code-review/baseline.mjs +143 -0
  144. package/plugins/code-review/git.mjs +163 -0
  145. package/plugins/code-review/index.mjs +236 -0
  146. package/plugins/compaction/engine.mjs +304 -0
  147. package/plugins/compaction/tetris.mjs +65 -0
  148. package/plugins/compaction/threshold.mjs +98 -0
  149. package/plugins/computer-use/DESKTOP-SKILL.md +64 -0
  150. package/plugins/computer-use/desktop-host.mjs +75 -0
  151. package/plugins/computer-use/desktop-skill.mjs +28 -0
  152. package/plugins/computer-use/desktop-upstream.mjs +3 -0
  153. package/plugins/computer-use/index.mjs +37 -0
  154. package/plugins/cordis-config/plain.mjs +31 -0
  155. package/plugins/credentials/index.mjs +73 -0
  156. package/plugins/custom/adapter.mjs +110 -0
  157. package/plugins/custom/config.mjs +85 -0
  158. package/plugins/custom/desktop-client.mjs +150 -0
  159. package/plugins/custom/desktop-host.mjs +78 -0
  160. package/plugins/custom/images.mjs +32 -0
  161. package/plugins/custom/index.mjs +145 -0
  162. package/plugins/custom/wire.mjs +179 -0
  163. package/plugins/desktop/client.mjs +1041 -0
  164. package/plugins/desktop/index.mjs +10 -0
  165. package/plugins/desktop/shell-environment.mjs +9 -0
  166. package/plugins/desktop-workspace/hooks.mjs +29 -0
  167. package/plugins/desktop-workspace/index.mjs +37 -0
  168. package/plugins/dscode/board.mjs +260 -0
  169. package/plugins/dscode/child-target.mjs +11 -0
  170. package/plugins/dscode/control.mjs +17 -0
  171. package/plugins/dscode/desktop-client.mjs +55 -0
  172. package/plugins/dscode/desktop-host.mjs +37 -0
  173. package/plugins/dscode/index.mjs +270 -0
  174. package/plugins/email/cli.mjs +32 -0
  175. package/plugins/email/contacts.mjs +36 -0
  176. package/plugins/email/desktop-client.mjs +117 -0
  177. package/plugins/email/desktop-host.mjs +54 -0
  178. package/plugins/email/desktop-service.mjs +106 -0
  179. package/plugins/email/gmail-oauth.mjs +69 -0
  180. package/plugins/email/gmail-store.mjs +2 -0
  181. package/plugins/email/gmail.mjs +194 -0
  182. package/plugins/email/imap.mjs +136 -0
  183. package/plugins/email/inbox.d.mts +25 -0
  184. package/plugins/email/inbox.mjs +76 -0
  185. package/plugins/email/smtp.mjs +70 -0
  186. package/plugins/email/store.mjs +32 -0
  187. package/plugins/email-tools/index.mjs +46 -0
  188. package/plugins/exec/cli.mjs +64 -0
  189. package/plugins/exec/index.mjs +112 -0
  190. package/plugins/grok/adapter.mjs +114 -0
  191. package/plugins/grok/auth.mjs +76 -0
  192. package/plugins/grok/billing.mjs +146 -0
  193. package/plugins/grok/index.mjs +122 -0
  194. package/plugins/grok/models.mjs +129 -0
  195. package/plugins/grok/status.mjs +28 -0
  196. package/plugins/grok/wire.mjs +268 -0
  197. package/plugins/hub/catalog.mjs +82 -0
  198. package/plugins/hub/desktop-client.mjs +114 -0
  199. package/plugins/hub/desktop-host.mjs +129 -0
  200. package/plugins/i18n/messages.d.mts +21 -0
  201. package/plugins/i18n/messages.mjs +537 -0
  202. package/plugins/jev/approval.mjs +131 -0
  203. package/plugins/jev/client.mjs +74 -0
  204. package/plugins/jev/index.mjs +99 -0
  205. package/plugins/memory/content.mjs +57 -0
  206. package/plugins/memory/desktop-host.mjs +3 -0
  207. package/plugins/memory/index.mjs +168 -0
  208. package/plugins/memory/pipeline.mjs +79 -0
  209. package/plugins/memory/store.mjs +93 -0
  210. package/plugins/message-source/kind.mjs +20 -0
  211. package/plugins/opencode-go/adapter.mjs +96 -0
  212. package/plugins/opencode-go/command.mjs +128 -0
  213. package/plugins/opencode-go/index.mjs +120 -0
  214. package/plugins/opencode-go/models.mjs +58 -0
  215. package/plugins/opencode-go/oauth.mjs +194 -0
  216. package/plugins/opencode-go/search.mjs +86 -0
  217. package/plugins/opencode-go/usage.mjs +119 -0
  218. package/plugins/opencode-go/version.mjs +10 -0
  219. package/plugins/opencode-go/wire.mjs +73 -0
  220. package/plugins/openrouter/adapter.mjs +232 -0
  221. package/plugins/openrouter/index.mjs +123 -0
  222. package/plugins/openrouter/models.mjs +157 -0
  223. package/plugins/openrouter/search.mjs +113 -0
  224. package/plugins/openrouter/wire.mjs +101 -0
  225. package/plugins/providers/catalog.mjs +160 -0
  226. package/plugins/providers/chat-messages.mjs +120 -0
  227. package/plugins/providers/chat-stream.mjs +174 -0
  228. package/plugins/providers/desktop-client.mjs +84 -0
  229. package/plugins/providers/desktop-host.mjs +63 -0
  230. package/plugins/providers/effort.mjs +35 -0
  231. package/plugins/providers/http-errors.mjs +50 -0
  232. package/plugins/providers/openrouter-account.mjs +171 -0
  233. package/plugins/session-bridge/client.mjs +106 -0
  234. package/plugins/session-bridge/communication.mjs +260 -0
  235. package/plugins/session-bridge/index.mjs +68 -0
  236. package/plugins/session-bridge/mailbox.mjs +267 -0
  237. package/plugins/session-bridge/paths.mjs +21 -0
  238. package/plugins/session-bridge/server.mjs +172 -0
  239. package/plugins/session-bridge/tasks.mjs +229 -0
  240. package/plugins/session-cards/content.mjs +64 -0
  241. package/plugins/session-cards/index.mjs +38 -0
  242. package/plugins/session-cards/manager.mjs +140 -0
  243. package/plugins/session-metrics/attribution.mjs +30 -0
  244. package/plugins/session-metrics/balance.mjs +81 -0
  245. package/plugins/session-metrics/desktop-client.mjs +62 -0
  246. package/plugins/session-metrics/desktop-host.mjs +46 -0
  247. package/plugins/session-metrics/index.mjs +96 -0
  248. package/plugins/session-metrics/pricing.mjs +84 -0
  249. package/plugins/session-metrics/rate.mjs +59 -0
  250. package/plugins/session-metrics/store.mjs +75 -0
  251. package/plugins/session-metrics/turns.mjs +134 -0
  252. package/plugins/session-metrics/view.mjs +271 -0
  253. package/plugins/time-marks/desktop-host.mjs +2 -0
  254. package/plugins/time-marks/index.mjs +116 -0
  255. package/plugins/time-marks/marks.mjs +152 -0
  256. package/plugins/triggers/cli.mjs +558 -0
  257. package/plugins/triggers/commands.mjs +143 -0
  258. package/plugins/triggers/config.mjs +264 -0
  259. package/plugins/triggers/desktop-client.mjs +155 -0
  260. package/plugins/triggers/desktop-host.mjs +88 -0
  261. package/plugins/triggers/desktop-management.mjs +97 -0
  262. package/plugins/triggers/desktop-scheduler.mjs +125 -0
  263. package/plugins/triggers/host.mjs +24 -0
  264. package/plugins/triggers/index.mjs +27 -0
  265. package/plugins/triggers/job-cli.mjs +110 -0
  266. package/plugins/triggers/jobs.mjs +156 -0
  267. package/plugins/triggers/launchd.mjs +101 -0
  268. package/plugins/triggers/lease.mjs +24 -0
  269. package/plugins/triggers/log.mjs +104 -0
  270. package/plugins/triggers/management.mjs +181 -0
  271. package/plugins/triggers/options.mjs +117 -0
  272. package/plugins/triggers/overlay.mjs +7 -0
  273. package/plugins/triggers/poll.mjs +65 -0
  274. package/plugins/triggers/run.mjs +157 -0
  275. package/plugins/triggers/schedule.mjs +40 -0
  276. package/plugins/triggers/scheduler-service.mjs +46 -0
  277. package/plugins/triggers/scheduler.mjs +92 -0
  278. package/plugins/triggers/session-run.mjs +125 -0
  279. package/plugins/triggers/session.mjs +48 -0
  280. package/plugins/triggers/source-emit.mjs +19 -0
  281. package/plugins/triggers/source-host.mjs +78 -0
  282. package/plugins/triggers/source-ingress.mjs +70 -0
  283. package/plugins/triggers/source-sandbox.mjs +35 -0
  284. package/plugins/triggers/sources.mjs +45 -0
  285. package/plugins/triggers/spool.mjs +145 -0
  286. package/plugins/triggers/tools.mjs +67 -0
  287. package/plugins/triggers/unattended.mjs +18 -0
  288. package/plugins/tui-tools/composition.mjs +28 -0
  289. package/plugins/tui-tools/desktop-host.mjs +2 -0
  290. package/plugins/tui-tools/doctor-cli.mjs +22 -0
  291. package/plugins/tui-tools/doctor.mjs +148 -0
  292. package/plugins/tui-tools/hook-sources.mjs +113 -0
  293. package/plugins/tui-tools/hooks.mjs +23 -0
  294. package/plugins/tui-tools/index.mjs +268 -0
  295. package/plugins/tui-tools/sandbox-runner.mjs +123 -0
  296. package/plugins/tui-tools/shell.mjs +27 -0
  297. package/plugins/tui-tools/update.mjs +111 -0
  298. package/plugins/tui-tools/workspace-discovery.mjs +129 -0
  299. package/plugins/ultra/policy.mjs +42 -0
  300. package/plugins/worktree-subagent/worktree.mjs +56 -0
  301. package/runtime-sources.json +94 -0
  302. package/vendor/bash/LICENSE +21 -0
  303. package/vendor/bash/index.js +717 -0
  304. package/vendor/bash/types/background.d.ts +50 -0
  305. package/vendor/bash/types/index.d.ts +38 -0
  306. package/vendor/bash/types/render.d.ts +57 -0
  307. package/vendor/command-goal/LICENSE +21 -0
  308. package/vendor/command-goal/index.js +210 -0
  309. package/vendor/command-goal/types/index.d.ts +10 -0
  310. package/vendor/computer-use/LICENSE +21 -0
  311. package/vendor/computer-use/lib/approval-policy.js +12 -0
  312. package/vendor/computer-use/lib/approval-policy.js.map +1 -0
  313. package/vendor/computer-use/lib/artifacts.js +79 -0
  314. package/vendor/computer-use/lib/artifacts.js.map +1 -0
  315. package/vendor/computer-use/lib/backend.js +3 -0
  316. package/vendor/computer-use/lib/backend.js.map +1 -0
  317. package/vendor/computer-use/lib/client.js +369 -0
  318. package/vendor/computer-use/lib/client.js.map +1 -0
  319. package/vendor/computer-use/lib/config.js +159 -0
  320. package/vendor/computer-use/lib/config.js.map +1 -0
  321. package/vendor/computer-use/lib/confirmations.js +99 -0
  322. package/vendor/computer-use/lib/confirmations.js.map +1 -0
  323. package/vendor/computer-use/lib/diff.js +58 -0
  324. package/vendor/computer-use/lib/diff.js.map +1 -0
  325. package/vendor/computer-use/lib/errors.js +22 -0
  326. package/vendor/computer-use/lib/errors.js.map +1 -0
  327. package/vendor/computer-use/lib/exposure.js +244 -0
  328. package/vendor/computer-use/lib/exposure.js.map +1 -0
  329. package/vendor/computer-use/lib/index.js +66 -0
  330. package/vendor/computer-use/lib/index.js.map +1 -0
  331. package/vendor/computer-use/lib/leases.js +262 -0
  332. package/vendor/computer-use/lib/leases.js.map +1 -0
  333. package/vendor/computer-use/lib/providers/macos.js +243 -0
  334. package/vendor/computer-use/lib/providers/macos.js.map +1 -0
  335. package/vendor/computer-use/lib/providers/native-helper.js +726 -0
  336. package/vendor/computer-use/lib/providers/native-helper.js.map +1 -0
  337. package/vendor/computer-use/lib/providers/unsupported.js +51 -0
  338. package/vendor/computer-use/lib/providers/unsupported.js.map +1 -0
  339. package/vendor/computer-use/lib/service.js +608 -0
  340. package/vendor/computer-use/lib/service.js.map +1 -0
  341. package/vendor/computer-use/lib/skill.js +136 -0
  342. package/vendor/computer-use/lib/skill.js.map +1 -0
  343. package/vendor/computer-use/lib/target-resolver.js +180 -0
  344. package/vendor/computer-use/lib/target-resolver.js.map +1 -0
  345. package/vendor/computer-use/lib/tools.js +511 -0
  346. package/vendor/computer-use/lib/tools.js.map +1 -0
  347. package/vendor/computer-use/lib/types/approval-policy.d.ts +13 -0
  348. package/vendor/computer-use/lib/types/approval-policy.d.ts.map +1 -0
  349. package/vendor/computer-use/lib/types/artifacts.d.ts +10 -0
  350. package/vendor/computer-use/lib/types/artifacts.d.ts.map +1 -0
  351. package/vendor/computer-use/lib/types/backend.d.ts +124 -0
  352. package/vendor/computer-use/lib/types/backend.d.ts.map +1 -0
  353. package/vendor/computer-use/lib/types/client/index.d.ts +83 -0
  354. package/vendor/computer-use/lib/types/client/index.d.ts.map +1 -0
  355. package/vendor/computer-use/lib/types/config.d.ts +94 -0
  356. package/vendor/computer-use/lib/types/config.d.ts.map +1 -0
  357. package/vendor/computer-use/lib/types/confirmations.d.ts +23 -0
  358. package/vendor/computer-use/lib/types/confirmations.d.ts.map +1 -0
  359. package/vendor/computer-use/lib/types/diff.d.ts +5 -0
  360. package/vendor/computer-use/lib/types/diff.d.ts.map +1 -0
  361. package/vendor/computer-use/lib/types/errors.d.ts +15 -0
  362. package/vendor/computer-use/lib/types/errors.d.ts.map +1 -0
  363. package/vendor/computer-use/lib/types/exposure.d.ts +30 -0
  364. package/vendor/computer-use/lib/types/exposure.d.ts.map +1 -0
  365. package/vendor/computer-use/lib/types/index.d.ts +21 -0
  366. package/vendor/computer-use/lib/types/index.d.ts.map +1 -0
  367. package/vendor/computer-use/lib/types/leases.d.ts +81 -0
  368. package/vendor/computer-use/lib/types/leases.d.ts.map +1 -0
  369. package/vendor/computer-use/lib/types/providers/macos.d.ts +39 -0
  370. package/vendor/computer-use/lib/types/providers/macos.d.ts.map +1 -0
  371. package/vendor/computer-use/lib/types/providers/native-helper.d.ts +48 -0
  372. package/vendor/computer-use/lib/types/providers/native-helper.d.ts.map +1 -0
  373. package/vendor/computer-use/lib/types/providers/unsupported.d.ts +23 -0
  374. package/vendor/computer-use/lib/types/providers/unsupported.d.ts.map +1 -0
  375. package/vendor/computer-use/lib/types/service.d.ts +58 -0
  376. package/vendor/computer-use/lib/types/service.d.ts.map +1 -0
  377. package/vendor/computer-use/lib/types/skill.d.ts +14 -0
  378. package/vendor/computer-use/lib/types/skill.d.ts.map +1 -0
  379. package/vendor/computer-use/lib/types/target-resolver.d.ts +38 -0
  380. package/vendor/computer-use/lib/types/target-resolver.d.ts.map +1 -0
  381. package/vendor/computer-use/lib/types/tools.d.ts +6 -0
  382. package/vendor/computer-use/lib/types/tools.d.ts.map +1 -0
  383. package/vendor/computer-use/lib/types/types.d.ts +270 -0
  384. package/vendor/computer-use/lib/types/types.d.ts.map +1 -0
  385. package/vendor/computer-use/lib/types/web.d.ts +33 -0
  386. package/vendor/computer-use/lib/types/web.d.ts.map +1 -0
  387. package/vendor/computer-use/lib/types.js +9 -0
  388. package/vendor/computer-use/lib/types.js.map +1 -0
  389. package/vendor/computer-use/lib/web.js +188 -0
  390. package/vendor/computer-use/lib/web.js.map +1 -0
  391. package/vendor/computer-use/native/macos/Sources/Fixture/main.swift +412 -0
  392. package/vendor/computer-use/native/macos/Sources/Helper/CursorImage.swift +11 -0
  393. package/vendor/computer-use/native/macos/Sources/Helper/CursorMotion.swift +67 -0
  394. package/vendor/computer-use/native/macos/Sources/Helper/CursorOverlay.swift +840 -0
  395. package/vendor/computer-use/native/macos/Sources/Helper/TargetedPointer.swift +327 -0
  396. package/vendor/computer-use/native/macos/Sources/Helper/WindowNumberMatcher.swift +29 -0
  397. package/vendor/computer-use/native/macos/Sources/Helper/main.swift +1244 -0
  398. package/vendor/computer-use/native/macos/Sources/Monitor/main.swift +153 -0
  399. package/vendor/computer-use/native/macos/bin/dsh-computer-use-helper +0 -0
  400. package/vendor/computer-use/native/macos/manifest.json +14 -0
  401. package/vendor/persistent/LICENSE +21 -0
  402. package/vendor/persistent/index.js +411 -0
  403. package/vendor/persistent/types/index.d.ts +24 -0
  404. package/vendor/subagent/LICENSE +21 -0
  405. package/vendor/subagent/index.js +694 -0
  406. package/vendor/subagent/invariant.js +52 -0
  407. package/vendor/subagent/model-selection-settings.js +68 -0
  408. package/vendor/subagent/types/index.d.ts +82 -0
  409. package/vendor/subagent/types/invariant.d.ts +16 -0
  410. package/vendor/subagent/types/list-models.d.ts +10 -0
  411. package/vendor/subagent/types/model-selection-settings.d.ts +45 -0
  412. package/vendor/subagent/types/model-selection-state.d.ts +48 -0
  413. package/vendor/subagent/types/model-selection.d.ts +81 -0
  414. package/vendor/subagent-core/LICENSE +21 -0
  415. package/vendor/subagent-core/index.js +3202 -0
  416. package/vendor/subagent-core/invariant.js +76 -0
  417. package/vendor/subagent-core/typert.host.d.ts +3 -0
  418. package/vendor/subagent-core/typert.host.js +978 -0
  419. package/vendor/subagent-core/typert.remote-client.d.ts +25 -0
  420. package/vendor/subagent-core/typert.remote-client.js +114 -0
  421. package/vendor/subagent-core/types/archive-admission.d.ts +16 -0
  422. package/vendor/subagent-core/types/archive-admission.js +151 -0
  423. package/vendor/subagent-core/types/assistant-output.d.ts +48 -0
  424. package/vendor/subagent-core/types/assistant-output.js +73 -0
  425. package/vendor/subagent-core/types/catalog.d.ts +84 -0
  426. package/vendor/subagent-core/types/catalog.js +109 -0
  427. package/vendor/subagent-core/types/child-agent.d.ts +156 -0
  428. package/vendor/subagent-core/types/child-agent.js +213 -0
  429. package/vendor/subagent-core/types/client.d.ts +8 -0
  430. package/vendor/subagent-core/types/client.js +7 -0
  431. package/vendor/subagent-core/types/continuation-activation.d.ts +267 -0
  432. package/vendor/subagent-core/types/continuation-activation.js +700 -0
  433. package/vendor/subagent-core/types/continuation-messages.d.ts +62 -0
  434. package/vendor/subagent-core/types/continuation-messages.js +106 -0
  435. package/vendor/subagent-core/types/continuation.d.ts +124 -0
  436. package/vendor/subagent-core/types/continuation.js +455 -0
  437. package/vendor/subagent-core/types/control-types.d.ts +135 -0
  438. package/vendor/subagent-core/types/control-types.js +8 -0
  439. package/vendor/subagent-core/types/control.d.ts +45 -0
  440. package/vendor/subagent-core/types/control.js +79 -0
  441. package/vendor/subagent-core/types/depth.d.ts +31 -0
  442. package/vendor/subagent-core/types/depth.js +39 -0
  443. package/vendor/subagent-core/types/descriptor.d.ts +144 -0
  444. package/vendor/subagent-core/types/descriptor.js +193 -0
  445. package/vendor/subagent-core/types/error.d.ts +11 -0
  446. package/vendor/subagent-core/types/error.js +14 -0
  447. package/vendor/subagent-core/types/inbox.d.ts +43 -0
  448. package/vendor/subagent-core/types/inbox.js +61 -0
  449. package/vendor/subagent-core/types/index.d.ts +320 -0
  450. package/vendor/subagent-core/types/index.js +475 -0
  451. package/vendor/subagent-core/types/internal.d.ts +58 -0
  452. package/vendor/subagent-core/types/internal.js +58 -0
  453. package/vendor/subagent-core/types/invariant.d.ts +13 -0
  454. package/vendor/subagent-core/types/invariant.js +91 -0
  455. package/vendor/subagent-core/types/lifecycle.d.ts +113 -0
  456. package/vendor/subagent-core/types/lifecycle.js +180 -0
  457. package/vendor/subagent-core/types/list-children.d.ts +36 -0
  458. package/vendor/subagent-core/types/list-children.js +166 -0
  459. package/vendor/subagent-core/types/out-of-process.d.ts +118 -0
  460. package/vendor/subagent-core/types/out-of-process.js +219 -0
  461. package/vendor/subagent-core/types/projection-types.d.ts +82 -0
  462. package/vendor/subagent-core/types/projection-types.js +7 -0
  463. package/vendor/subagent-core/types/projection.d.ts +100 -0
  464. package/vendor/subagent-core/types/projection.js +157 -0
  465. package/vendor/subagent-core/types/run-settlement.d.ts +17 -0
  466. package/vendor/subagent-core/types/run-settlement.js +70 -0
  467. package/vendor/subagent-core/types/types.d.ts +377 -0
  468. package/vendor/subagent-core/types/types.js +19 -0
  469. package/vendor/subagent-driver/LICENSE +21 -0
  470. package/vendor/subagent-driver/index.js +255 -0
  471. package/vendor/subagent-driver/types/index.d.ts +33 -0
  472. package/vendor/subagent-driver/types/structured.d.ts +42 -0
  473. package/vendor/subagent-fork/LICENSE +21 -0
  474. package/vendor/subagent-fork/index.js +61 -0
  475. package/vendor/subagent-fork/types/index.d.ts +20 -0
  476. package/vendor/subagent-spawn/LICENSE +21 -0
  477. package/vendor/subagent-spawn/index.js +45 -0
  478. package/vendor/subagent-spawn/types/index.d.ts +19 -0
  479. package/vendor/terminal/LICENSE +21 -0
  480. package/vendor/terminal/index.js +1093 -0
  481. package/vendor/terminal/types/config.d.ts +82 -0
  482. package/vendor/terminal/types/index.d.ts +36 -0
  483. package/vendor/terminal/types/sanitize.d.ts +47 -0
  484. package/vendor/terminal/types/session.d.ts +87 -0
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Provider-side vocabulary for OUT-OF-PROCESS subagent backends — the pieces
3
+ * that enforce this seam's own contracts around a child in another process:
4
+ * the no-capabilities advertisement, timing-bound validation, child
5
+ * working-directory resolution (config override, else the delegating parent
6
+ * session's workspace), the never-reject result settlement, and the standard
7
+ * run-handle publication. Backends compose these with their own wire drivers;
8
+ * the process machinery itself (spawn, env scrub, managed-range teardown)
9
+ * belongs to the `dsh-subprocess` seam.
10
+ *
11
+ * @module @deepseek-ai/dsh-subagent/out-of-process
12
+ */
13
+ import type { ContentBlock } from '@deepseek-ai/dsh-llm';
14
+ import type { SubagentCapabilities, SubagentResult, SubagentRun, SubagentStopReason } from './types.ts';
15
+ /**
16
+ * The capability advertisement of an out-of-process backend: NONE. A child in
17
+ * another process cannot honor parent-enforced start features
18
+ * (`agentOptions`/`outputSchema`/`maxDepth`/`toolFilter`/`persona`), so the service rejects a
19
+ * request needing any of them before `start` runs — never accepted-then-ignored.
20
+ */
21
+ export declare const NO_START_CAPABILITIES: SubagentCapabilities;
22
+ /**
23
+ * Assert a configured timing bound is a positive finite number (it bounds a
24
+ * teardown or shutdown wait; zero, negative, or NaN would skip or wedge it).
25
+ * @param prefix - the consuming plugin's diagnostic prefix (e.g. `subagent-acp`).
26
+ * @param name - the config field name, for the diagnostic.
27
+ * @param value - the configured value.
28
+ */
29
+ export declare function assertPositiveFinite(prefix: string, name: string, value: number): void;
30
+ /**
31
+ * Assert `cwd` can actually host the child: absolute (it doubles as the
32
+ * child's workspace identity, and a relative path would be re-anchored to the
33
+ * server process's launch directory) and an existing directory (fail here,
34
+ * before the process boundary, instead of as an ambiguous spawn ENOENT).
35
+ * @param prefix - the consuming plugin's diagnostic prefix.
36
+ * @param label - which source supplied the value, for the diagnostic.
37
+ * @param cwd - the candidate working directory.
38
+ * @returns `cwd`, validated.
39
+ */
40
+ export declare function assertUsableCwd(prefix: string, label: string, cwd: string): string;
41
+ /**
42
+ * Validate a configured `cwd` override ONCE, at plugin load: reject the empty
43
+ * string (`path.resolve('')` is the process cwd — it would silently
44
+ * reintroduce the launch-directory fallback this resolution removes),
45
+ * interpret a relative path against the harness launch directory, and require
46
+ * an enterable directory.
47
+ * @param prefix - the consuming plugin's diagnostic prefix.
48
+ * @param cwd - the configured override, or `undefined` when the config omits it.
49
+ * @returns the validated absolute override, or `undefined` when omitted.
50
+ */
51
+ export declare function validateConfiguredCwd(prefix: string, cwd: string | undefined): string | undefined;
52
+ /**
53
+ * Resolve the child's working directory at start: the deployment override
54
+ * when configured (already validated at load), else the parent session's
55
+ * workspace cwd (validated here, its earliest resolvable point). Fails loud
56
+ * when neither exists — falling back to the harness process cwd would
57
+ * silently bind the child to the server's launch directory instead of the
58
+ * delegating session's workspace (one server process serves many sessions,
59
+ * each with its own cwd).
60
+ * @param prefix - the consuming plugin's diagnostic prefix.
61
+ * @param configured - the load-validated override, or `undefined`.
62
+ * @param parentCwd - the delegating parent session's workspace cwd, if any.
63
+ * @returns the absolute child working directory.
64
+ */
65
+ export declare function resolveChildCwd(prefix: string, configured: string | undefined, parentCwd: string | undefined): string;
66
+ /** Inputs to {@link settleRunResult}. */
67
+ export interface RunResultSettlement {
68
+ /** The turn attempt (typically racing local cancellation); returns the terminal result. */
69
+ attempt: () => Promise<SubagentResult>;
70
+ /** Snapshot the provider exposes when cancellation or failure wins settlement. */
71
+ collectOutput: () => readonly ContentBlock[];
72
+ /** Snapshot safe provider-authored detail when a failure wins settlement. */
73
+ collectDiagnostic?: (() => string | undefined) | undefined;
74
+ /** Whether local cancellation settled before the attempt's outcome is observed. */
75
+ cancelled: () => boolean;
76
+ /** Diagnostic sink for a failure flattened to a stop reason; a throw from it is contained. */
77
+ onError?: ((error: Error, stopReason: SubagentStopReason) => void) | undefined;
78
+ /** The request's cancellation signal (the listener is removed at settlement). */
79
+ signal: AbortSignal;
80
+ /** The abort listener registered on {@link signal} at start. */
81
+ onAbort: () => void;
82
+ }
83
+ /**
84
+ * Settle an out-of-process run result under the seam contract: `result` never
85
+ * rejects after publication. A normally completed or rejected attempt resolves
86
+ * as `aborted` when cancellation already settled locally; another rejection is
87
+ * flattened to `stopReason: 'error'` through the contained diagnostic sink.
88
+ * Provider-returned diagnostics use the same byte limit. The abort listener is
89
+ * removed on every path.
90
+ * @param parts - the attempt, output snapshot, cancellation state, sink, and signal wiring.
91
+ * @returns the terminal result (never a rejection).
92
+ */
93
+ export declare function settleRunResult(parts: RunResultSettlement): Promise<SubagentResult>;
94
+ /** Inputs to {@link subprocessRunHandle}. */
95
+ export interface SubprocessRunHandleParts {
96
+ /** The parent-scoped run id. */
97
+ id: SubagentRun['id'];
98
+ /** The flattened, never-rejecting result (the seam contract). */
99
+ result: Promise<SubagentResult>;
100
+ /** The request's cancellation signal (the listener is removed on dispose). */
101
+ signal: AbortSignal;
102
+ /** The abort listener registered on {@link signal} at start. */
103
+ onAbort: () => void;
104
+ /** Settle local cancellation so {@link result} resolves without the child. */
105
+ requestCancel: () => void;
106
+ /** Tear the child process down to quiescence (backend-owned ladder). */
107
+ teardown: () => Promise<void>;
108
+ }
109
+ /**
110
+ * Publish the seam run handle for an out-of-process child. `dispose()` is
111
+ * idempotent (one memoized teardown): it removes the abort listener, settles
112
+ * local cancellation — there is no assumption the child cooperates — and then
113
+ * awaits the backend's teardown to actual exit.
114
+ * @param parts - the run identity, result, cancellation wiring, and teardown.
115
+ * @returns the seam run handle (`localAgent` is `undefined` for remote runs).
116
+ */
117
+ export declare function subprocessRunHandle(parts: SubprocessRunHandleParts): SubagentRun;
118
+ //# sourceMappingURL=out-of-process.d.ts.map
@@ -0,0 +1,219 @@
1
+ /**
2
+ * Provider-side vocabulary for OUT-OF-PROCESS subagent backends — the pieces
3
+ * that enforce this seam's own contracts around a child in another process:
4
+ * the no-capabilities advertisement, timing-bound validation, child
5
+ * working-directory resolution (config override, else the delegating parent
6
+ * session's workspace), the never-reject result settlement, and the standard
7
+ * run-handle publication. Backends compose these with their own wire drivers;
8
+ * the process machinery itself (spawn, env scrub, managed-range teardown)
9
+ * belongs to the `dsh-subprocess` seam.
10
+ *
11
+ * @module @deepseek-ai/dsh-subagent/out-of-process
12
+ */
13
+ import { accessSync, constants, statSync } from 'node:fs';
14
+ import { isAbsolute, resolve } from 'node:path';
15
+ /** Maximum UTF-8 size of {@link SubagentResult.diagnostic}. */
16
+ const MAX_SUBAGENT_DIAGNOSTIC_BYTES = 4_096;
17
+ const DIAGNOSTIC_TRUNCATION_SUFFIX = '\n[diagnostic truncated]';
18
+ const utf8Encoder = new TextEncoder();
19
+ const utf8Decoder = new TextDecoder();
20
+ /**
21
+ * Limit provider-authored failure detail without splitting a UTF-8 sequence.
22
+ * @param diagnostic - safe diagnostic text produced by the provider.
23
+ * @returns the original text, or a visibly truncated value within the limit.
24
+ */
25
+ function limitSubagentDiagnostic(diagnostic) {
26
+ const bytes = utf8Encoder.encode(diagnostic);
27
+ if (bytes.byteLength <= MAX_SUBAGENT_DIAGNOSTIC_BYTES)
28
+ return diagnostic;
29
+ const suffixBytes = utf8Encoder.encode(DIAGNOSTIC_TRUNCATION_SUFFIX).byteLength;
30
+ let prefixBytes = MAX_SUBAGENT_DIAGNOSTIC_BYTES - suffixBytes;
31
+ while ((bytes[prefixBytes] & 0b1100_0000) === 0b1000_0000) {
32
+ prefixBytes -= 1;
33
+ }
34
+ return utf8Decoder.decode(bytes.subarray(0, prefixBytes))
35
+ + DIAGNOSTIC_TRUNCATION_SUFFIX;
36
+ }
37
+ /** Enforce the byte limit on a provider-returned diagnostic. */
38
+ function normalizeSubagentDiagnostic(result) {
39
+ return result.diagnostic === undefined
40
+ ? result
41
+ : { ...result, diagnostic: limitSubagentDiagnostic(result.diagnostic) };
42
+ }
43
+ /**
44
+ * The capability advertisement of an out-of-process backend: NONE. A child in
45
+ * another process cannot honor parent-enforced start features
46
+ * (`agentOptions`/`outputSchema`/`maxDepth`/`toolFilter`/`persona`), so the service rejects a
47
+ * request needing any of them before `start` runs — never accepted-then-ignored.
48
+ */
49
+ export const NO_START_CAPABILITIES = Object.freeze({
50
+ agentOptions: false,
51
+ outputSchema: false,
52
+ depthLimit: false,
53
+ toolFilter: false,
54
+ persona: false,
55
+ });
56
+ /**
57
+ * Assert a configured timing bound is a positive finite number (it bounds a
58
+ * teardown or shutdown wait; zero, negative, or NaN would skip or wedge it).
59
+ * @param prefix - the consuming plugin's diagnostic prefix (e.g. `subagent-acp`).
60
+ * @param name - the config field name, for the diagnostic.
61
+ * @param value - the configured value.
62
+ */
63
+ export function assertPositiveFinite(prefix, name, value) {
64
+ if (!Number.isFinite(value) || value <= 0) {
65
+ throw new Error(`${prefix}: ${name} must be a positive finite number`);
66
+ }
67
+ }
68
+ /**
69
+ * Whether `path` names an existing directory the harness can ENTER. The
70
+ * search-permission probe matters: `statSync().isDirectory()` is true for a
71
+ * mode-600 directory, but a subprocess cwd needs `X_OK` or spawn fails EACCES.
72
+ */
73
+ function isEnterableDirectory(path) {
74
+ try {
75
+ if (!statSync(path).isDirectory())
76
+ return false;
77
+ accessSync(path, constants.X_OK);
78
+ return true;
79
+ }
80
+ catch {
81
+ // statSync/accessSync throw only filesystem access errors here
82
+ // (ENOENT/EACCES/ENOTDIR/…), and every one of them means the path cannot
83
+ // serve as the child's cwd.
84
+ return false;
85
+ }
86
+ }
87
+ /**
88
+ * Assert `cwd` can actually host the child: absolute (it doubles as the
89
+ * child's workspace identity, and a relative path would be re-anchored to the
90
+ * server process's launch directory) and an existing directory (fail here,
91
+ * before the process boundary, instead of as an ambiguous spawn ENOENT).
92
+ * @param prefix - the consuming plugin's diagnostic prefix.
93
+ * @param label - which source supplied the value, for the diagnostic.
94
+ * @param cwd - the candidate working directory.
95
+ * @returns `cwd`, validated.
96
+ */
97
+ export function assertUsableCwd(prefix, label, cwd) {
98
+ if (!isAbsolute(cwd)) {
99
+ throw new Error(`${prefix}: ${label} must be an absolute path: ${cwd}`);
100
+ }
101
+ if (!isEnterableDirectory(cwd)) {
102
+ throw new Error(`${prefix}: ${label} is not an accessible directory: ${cwd}`);
103
+ }
104
+ return cwd;
105
+ }
106
+ /**
107
+ * Validate a configured `cwd` override ONCE, at plugin load: reject the empty
108
+ * string (`path.resolve('')` is the process cwd — it would silently
109
+ * reintroduce the launch-directory fallback this resolution removes),
110
+ * interpret a relative path against the harness launch directory, and require
111
+ * an enterable directory.
112
+ * @param prefix - the consuming plugin's diagnostic prefix.
113
+ * @param cwd - the configured override, or `undefined` when the config omits it.
114
+ * @returns the validated absolute override, or `undefined` when omitted.
115
+ */
116
+ export function validateConfiguredCwd(prefix, cwd) {
117
+ if (cwd === undefined)
118
+ return undefined;
119
+ if (cwd === '') {
120
+ throw new Error(`${prefix}: config cwd must not be empty — omit the key to inherit the parent session cwd`);
121
+ }
122
+ return assertUsableCwd(prefix, 'config cwd', resolve(cwd));
123
+ }
124
+ /**
125
+ * Resolve the child's working directory at start: the deployment override
126
+ * when configured (already validated at load), else the parent session's
127
+ * workspace cwd (validated here, its earliest resolvable point). Fails loud
128
+ * when neither exists — falling back to the harness process cwd would
129
+ * silently bind the child to the server's launch directory instead of the
130
+ * delegating session's workspace (one server process serves many sessions,
131
+ * each with its own cwd).
132
+ * @param prefix - the consuming plugin's diagnostic prefix.
133
+ * @param configured - the load-validated override, or `undefined`.
134
+ * @param parentCwd - the delegating parent session's workspace cwd, if any.
135
+ * @returns the absolute child working directory.
136
+ */
137
+ export function resolveChildCwd(prefix, configured, parentCwd) {
138
+ if (configured !== undefined)
139
+ return configured;
140
+ if (parentCwd === undefined) {
141
+ throw new Error(`${prefix}: no working directory for the child — configure \`cwd\` or delegate from a parent session that has one`);
142
+ }
143
+ return assertUsableCwd(prefix, 'parent session cwd', parentCwd);
144
+ }
145
+ /** Normalize an unknown thrown value to an Error (the catch binding is `unknown`). */
146
+ function toError(value) {
147
+ // The rejecting surfaces (wire clients, spawn failures) only throw
148
+ // `Error`s; the `String(value)` arm is a defensive fallback for a non-Error
149
+ // throw the typed surfaces cannot produce.
150
+ /* v8 ignore next */
151
+ return value instanceof Error ? value : new Error(String(value));
152
+ }
153
+ /**
154
+ * Settle an out-of-process run result under the seam contract: `result` never
155
+ * rejects after publication. A normally completed or rejected attempt resolves
156
+ * as `aborted` when cancellation already settled locally; another rejection is
157
+ * flattened to `stopReason: 'error'` through the contained diagnostic sink.
158
+ * Provider-returned diagnostics use the same byte limit. The abort listener is
159
+ * removed on every path.
160
+ * @param parts - the attempt, output snapshot, cancellation state, sink, and signal wiring.
161
+ * @returns the terminal result (never a rejection).
162
+ */
163
+ export async function settleRunResult(parts) {
164
+ try {
165
+ const result = await parts.attempt();
166
+ return parts.cancelled()
167
+ ? { output: parts.collectOutput(), stopReason: 'aborted' }
168
+ : normalizeSubagentDiagnostic(result);
169
+ }
170
+ catch (error) {
171
+ // Cover a rejection already queued when cancellation arrives.
172
+ if (parts.cancelled())
173
+ return { output: parts.collectOutput(), stopReason: 'aborted' };
174
+ // Flatten post-publication transport failures while preserving diagnostics.
175
+ try {
176
+ parts.onError?.(toError(error), 'error');
177
+ }
178
+ catch {
179
+ // The diagnostic sink cannot reject the run result.
180
+ }
181
+ const collected = parts.collectDiagnostic?.();
182
+ const diagnostic = collected === undefined
183
+ ? undefined
184
+ : limitSubagentDiagnostic(collected);
185
+ return {
186
+ output: parts.collectOutput(),
187
+ ...diagnostic === undefined ? {} : { diagnostic },
188
+ stopReason: 'error',
189
+ };
190
+ }
191
+ finally {
192
+ parts.signal.removeEventListener('abort', parts.onAbort);
193
+ }
194
+ }
195
+ /**
196
+ * Publish the seam run handle for an out-of-process child. `dispose()` is
197
+ * idempotent (one memoized teardown): it removes the abort listener, settles
198
+ * local cancellation — there is no assumption the child cooperates — and then
199
+ * awaits the backend's teardown to actual exit.
200
+ * @param parts - the run identity, result, cancellation wiring, and teardown.
201
+ * @returns the seam run handle (`localAgent` is `undefined` for remote runs).
202
+ */
203
+ export function subprocessRunHandle(parts) {
204
+ let disposal;
205
+ return {
206
+ id: parts.id,
207
+ localAgent: undefined,
208
+ result: parts.result,
209
+ dispose() {
210
+ if (disposal !== undefined)
211
+ return disposal;
212
+ parts.signal.removeEventListener('abort', parts.onAbort);
213
+ parts.requestCancel();
214
+ disposal = parts.teardown();
215
+ return disposal;
216
+ },
217
+ };
218
+ }
219
+ //# sourceMappingURL=out-of-process.js.map
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Pure client-safe subagent projection vocabulary.
3
+ *
4
+ * @module @deepseek-ai/dsh-subagent/projection-types
5
+ */
6
+ import type { SessionId, SessionSeq } from '@deepseek-ai/dsh-session/types';
7
+ /** One current direct-child discovery row materialized from parent facts. */
8
+ export type SubagentCatalogEntry = {
9
+ readonly id: SessionId;
10
+ readonly createdAt: number;
11
+ } & ({
12
+ readonly mode: 'one-shot';
13
+ readonly label?: string;
14
+ } | {
15
+ readonly mode: 'continuable';
16
+ readonly label: string;
17
+ } | {
18
+ readonly mode: 'unknown';
19
+ readonly label?: string;
20
+ });
21
+ /** Durable active-turn timing for one descriptor-backed child session. */
22
+ export interface SubagentTimingProjection {
23
+ /** Milliseconds accumulated across completed turns after the child's own descriptor. */
24
+ settledMs: number;
25
+ /** Same-cut bounds of the currently open turn, when one has not reached `turn/end`. */
26
+ active?: {
27
+ /** Start of the open turn. */
28
+ since: number;
29
+ /** Latest event time folded into this projection cut. */
30
+ through: number;
31
+ };
32
+ /**
33
+ * Whether the latest closed turn after the child's own descriptor completed
34
+ * normally; absent while a turn is open or before one closes.
35
+ */
36
+ lastTurnCompleted?: boolean;
37
+ }
38
+ /**
39
+ * Durable identity of one descriptor-backed subagent session: lifecycle mode
40
+ * plus creation label, folded last-wins from `subagent/descriptor` events.
41
+ * Label strength follows the descriptor schema: a continuable child always
42
+ * carries one, a one-shot child may omit it.
43
+ */
44
+ export type SubagentIdentityProjection = {
45
+ /** A terminal one-shot child. */
46
+ mode: 'one-shot';
47
+ /** Optional durable creation label from the child's descriptor. */
48
+ label?: string;
49
+ /**
50
+ * Seq of the `subagent/descriptor` event this identity was folded from.
51
+ * `session.isOwnSeq(seq)` proves the identity comes from the child's
52
+ * OWN log suffix — where a descriptor is immutable once appended — and
53
+ * not from a fork seed's replayed ancestor descriptor.
54
+ */
55
+ seq: SessionSeq;
56
+ } | {
57
+ /** A resumable conversation. */
58
+ mode: 'continuable';
59
+ /** Durable creation label from the child's descriptor. */
60
+ label: string;
61
+ /** Seq of the folded descriptor event; see the one-shot arm for the own-suffix proof. */
62
+ seq: SessionSeq;
63
+ };
64
+ declare module '@deepseek-ai/dsh-session-projection/types' {
65
+ interface SessionProjectionMap {
66
+ /** Direct children in parent catalog event order, excluding fork-inherited facts. */
67
+ subagentCatalog: SubagentCatalogEntry[];
68
+ /** Active-turn duration and latest closed-turn completion for a descriptor-backed subagent session. */
69
+ subagentTiming: SubagentTimingProjection;
70
+ /**
71
+ * Identity of a descriptor-backed subagent session. `null` ⟺ no valid
72
+ * descriptor (missing, malformed, or unrecognized-version — deliberately
73
+ * undistinguished). The sentinel is deliberately serializable: a
74
+ * value pushed over JSON transports must survive `JSON.stringify`
75
+ * losslessly, where an `undefined` field would be dropped and a stale
76
+ * identity would survive on the receiving side. The entry itself stays
77
+ * non-optional.
78
+ */
79
+ subagent: SubagentIdentityProjection | null;
80
+ }
81
+ }
82
+ //# sourceMappingURL=projection-types.d.ts.map
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Pure client-safe subagent projection vocabulary.
3
+ *
4
+ * @module @deepseek-ai/dsh-subagent/projection-types
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=projection-types.js.map
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Pure session projections for subagent identity (mode/label) and active-turn
3
+ * duration.
4
+ *
5
+ * @module @deepseek-ai/dsh-subagent/projection
6
+ */
7
+ import { z } from 'zod';
8
+ import type { SessionEvent } from '@deepseek-ai/dsh-session';
9
+ import type { SubagentIdentityProjection, SubagentTimingProjection } from './projection-types.ts';
10
+ /** Fold state for a subagent's latest timing snapshot. */
11
+ export interface TimingState {
12
+ /** Milliseconds accumulated across completed post-descriptor turns. */
13
+ settledMs: number;
14
+ /** Current open interval kept paired inside the fold. */
15
+ active?: {
16
+ since: number;
17
+ through: number;
18
+ } | undefined;
19
+ /** Latest pre-descriptor turn start, promoted when the child's own descriptor arrives. */
20
+ pendingTurnStart?: number | undefined;
21
+ /** Whether the fold has crossed a descriptor in this logical log. */
22
+ descriptorSeen: boolean;
23
+ /** Whether the latest closed post-descriptor turn completed normally; absent while a turn is open or before one closes. */
24
+ lastTurnCompleted?: boolean | undefined;
25
+ }
26
+ declare module '@deepseek-ai/dsh-session-projection/types' {
27
+ interface SessionProjectionStateMap {
28
+ subagentTiming: TimingState;
29
+ subagent: IdentityState;
30
+ }
31
+ }
32
+ /**
33
+ * Fold turn boundaries around the child's own durable descriptor.
34
+ *
35
+ * A fork seed may contain an ancestor descriptor and completed turns. Every
36
+ * descriptor therefore resets the accumulated state; the healthy catalog
37
+ * admits only a child with exactly one descriptor in its own suffix, making
38
+ * the final reset the child's authoritative timing origin.
39
+ */
40
+ export declare const subagentTimingProjectionDefinition: {
41
+ key: "subagentTiming";
42
+ stateSchema: z.ZodType<TimingState, unknown, z.core.$ZodTypeInternals<TimingState, unknown>>;
43
+ init: () => {
44
+ descriptorSeen: false;
45
+ settledMs: number;
46
+ };
47
+ apply: (state: NoInfer<TimingState>, event: SessionEvent) => {
48
+ /** Milliseconds accumulated across completed post-descriptor turns. */
49
+ settledMs: number;
50
+ /** Current open interval kept paired inside the fold. */
51
+ active?: {
52
+ since: number;
53
+ through: number;
54
+ } | undefined;
55
+ /** Whether the fold has crossed a descriptor in this logical log. */
56
+ descriptorSeen: boolean;
57
+ /** Whether the latest closed post-descriptor turn completed normally; absent while a turn is open or before one closes. */
58
+ lastTurnCompleted?: boolean | undefined;
59
+ };
60
+ wire: {
61
+ viewSchema: z.ZodType<SubagentTimingProjection, unknown, z.core.$ZodTypeInternals<SubagentTimingProjection, unknown>>;
62
+ view: (state: NoInfer<TimingState>) => {
63
+ lastTurnCompleted?: boolean;
64
+ active?: {
65
+ since: number;
66
+ through: number;
67
+ };
68
+ settledMs: number;
69
+ };
70
+ };
71
+ stateVersion: number;
72
+ };
73
+ interface IdentityState {
74
+ /** Identity from the last valid descriptor; absent before one, and after an invalid one. */
75
+ identity?: SubagentIdentityProjection | undefined;
76
+ }
77
+ /**
78
+ * Fold the durable mode/label identity from `subagent/descriptor` events,
79
+ * last-wins: a fork seed may replay an ancestor's descriptor, and the child's
80
+ * own descriptor must override it — the same reset discipline as
81
+ * {@link subagentTimingProjectionDefinition}. A malformed or unknown-version
82
+ * payload resets to the `null` sentinel instead of throwing, so a fork of a
83
+ * healthy ancestor never inherits an identity its own descriptor failed to
84
+ * establish — and the reset survives every JSON push frame, so a consumer
85
+ * holding the earlier identity replaces it instead of keeping it stale;
86
+ * `null` ⟺ no valid descriptor, with the causes deliberately undistinguished.
87
+ */
88
+ export declare const subagentIdentityProjectionDefinition: {
89
+ key: "subagent";
90
+ stateSchema: z.ZodType<IdentityState, unknown, z.core.$ZodTypeInternals<IdentityState, unknown>>;
91
+ init: () => {};
92
+ apply: (state: NoInfer<IdentityState>, event: SessionEvent) => IdentityState;
93
+ wire: {
94
+ viewSchema: z.ZodNullable<z.ZodType<SubagentIdentityProjection, unknown, z.core.$ZodTypeInternals<SubagentIdentityProjection, unknown>>>;
95
+ view: (state: NoInfer<IdentityState>) => SubagentIdentityProjection | null;
96
+ };
97
+ stateVersion: number;
98
+ };
99
+ export {};
100
+ //# sourceMappingURL=projection.d.ts.map