dsh-cliworker-now 0.0.0-stage → 0.7.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. package/LICENSE +21 -0
  2. package/README.en.md +364 -0
  3. package/README.md +368 -2
  4. package/cordis.patch.yml +3 -0
  5. package/lib/account-models.mjs +262 -0
  6. package/lib/client.js +22139 -0
  7. package/lib/client.js.map +1 -0
  8. package/lib/grok-catalog.mjs +145 -0
  9. package/lib/hermes-native-entry.py +96 -0
  10. package/lib/hermes-nous-refresh.py +331 -0
  11. package/lib/index.js +14544 -0
  12. package/lib/index.js.map +1 -0
  13. package/lib/native-launch.mjs +234 -0
  14. package/lib/native-spawn.mjs +32 -0
  15. package/lib/own-account-lease.mjs +105 -0
  16. package/lib/pi-installation.mjs +87 -0
  17. package/lib/pi-login.mjs +80 -0
  18. package/lib/pi-native-catalog.mjs +417 -0
  19. package/lib/pi-omp-bridge.mjs +602 -0
  20. package/lib/pi-omp-environment.mjs +15 -0
  21. package/lib/pi-omp-refresh.mjs +324 -0
  22. package/lib/private-launch.mjs +23 -0
  23. package/lib/terminal-bridge.mjs +18 -0
  24. package/lib/typert.host.d.ts +3 -0
  25. package/lib/typert.host.js +1430 -0
  26. package/lib/typert.remote-client.d.ts +72 -0
  27. package/lib/typert.remote-client.d.ts.map +1 -0
  28. package/lib/typert.remote-client.js +1256 -0
  29. package/lib/types/client/account-query-queue.d.ts +16 -0
  30. package/lib/types/client/account-query-queue.js +61 -0
  31. package/lib/types/client/account-query-queue.js.map +1 -0
  32. package/lib/types/client/account-terminal-css.d.ts +1 -0
  33. package/lib/types/client/account-terminal-css.js +3 -0
  34. package/lib/types/client/account-terminal-css.js.map +1 -0
  35. package/lib/types/client/account-terminal.d.ts +17 -0
  36. package/lib/types/client/account-terminal.js +525 -0
  37. package/lib/types/client/account-terminal.js.map +1 -0
  38. package/lib/types/client/assets/antigravity.png +0 -0
  39. package/lib/types/client/assets/claude-code.png +0 -0
  40. package/lib/types/client/assets/cliworker-now-logo.png +0 -0
  41. package/lib/types/client/assets/codex.png +0 -0
  42. package/lib/types/client/assets/grok.png +0 -0
  43. package/lib/types/client/assets/hermes.png +0 -0
  44. package/lib/types/client/assets/kimi-dark.png +0 -0
  45. package/lib/types/client/assets/kimi-light.png +0 -0
  46. package/lib/types/client/assets/mimo-code.png +0 -0
  47. package/lib/types/client/assets/omp.png +0 -0
  48. package/lib/types/client/assets/opencode.png +0 -0
  49. package/lib/types/client/assets/pi.png +0 -0
  50. package/lib/types/client/assets/zcode.png +0 -0
  51. package/lib/types/client/composer-keymap.d.ts +18 -0
  52. package/lib/types/client/composer-keymap.js +49 -0
  53. package/lib/types/client/composer-keymap.js.map +1 -0
  54. package/lib/types/client/conversation-timeline.d.ts +6 -0
  55. package/lib/types/client/conversation-timeline.js +65 -0
  56. package/lib/types/client/conversation-timeline.js.map +1 -0
  57. package/lib/types/client/copy-text.d.ts +5 -0
  58. package/lib/types/client/copy-text.js +45 -0
  59. package/lib/types/client/copy-text.js.map +1 -0
  60. package/lib/types/client/icons.d.ts +21 -0
  61. package/lib/types/client/icons.js +68 -0
  62. package/lib/types/client/icons.js.map +1 -0
  63. package/lib/types/client/index.d.ts +3 -0
  64. package/lib/types/client/index.js +124 -0
  65. package/lib/types/client/index.js.map +1 -0
  66. package/lib/types/client/management-styles.d.ts +1 -0
  67. package/lib/types/client/management-styles.js +17 -0
  68. package/lib/types/client/management-styles.js.map +1 -0
  69. package/lib/types/client/name-copy.d.ts +5 -0
  70. package/lib/types/client/name-copy.js +107 -0
  71. package/lib/types/client/name-copy.js.map +1 -0
  72. package/lib/types/client/native-job-overlay.d.ts +11 -0
  73. package/lib/types/client/native-job-overlay.js +129 -0
  74. package/lib/types/client/native-job-overlay.js.map +1 -0
  75. package/lib/types/client/operation-error.d.ts +2 -0
  76. package/lib/types/client/operation-error.js +12 -0
  77. package/lib/types/client/operation-error.js.map +1 -0
  78. package/lib/types/client/panel.d.ts +8 -0
  79. package/lib/types/client/panel.js +310 -0
  80. package/lib/types/client/panel.js.map +1 -0
  81. package/lib/types/client/rename-copy-styles.d.ts +1 -0
  82. package/lib/types/client/rename-copy-styles.js +21 -0
  83. package/lib/types/client/rename-copy-styles.js.map +1 -0
  84. package/lib/types/client/rename-worker.d.ts +9 -0
  85. package/lib/types/client/rename-worker.js +53 -0
  86. package/lib/types/client/rename-worker.js.map +1 -0
  87. package/lib/types/client/role-presets.d.ts +6 -0
  88. package/lib/types/client/role-presets.js +111 -0
  89. package/lib/types/client/role-presets.js.map +1 -0
  90. package/lib/types/client/settings-dialog.d.ts +13 -0
  91. package/lib/types/client/settings-dialog.js +442 -0
  92. package/lib/types/client/settings-dialog.js.map +1 -0
  93. package/lib/types/client/stat-popover.d.ts +10 -0
  94. package/lib/types/client/stat-popover.js +32 -0
  95. package/lib/types/client/stat-popover.js.map +1 -0
  96. package/lib/types/client/styles.d.ts +9 -0
  97. package/lib/types/client/styles.js +221 -0
  98. package/lib/types/client/styles.js.map +1 -0
  99. package/lib/types/client/telemetry.d.ts +11 -0
  100. package/lib/types/client/telemetry.js +24 -0
  101. package/lib/types/client/telemetry.js.map +1 -0
  102. package/lib/types/client/worker-card.d.ts +10 -0
  103. package/lib/types/client/worker-card.js +75 -0
  104. package/lib/types/client/worker-card.js.map +1 -0
  105. package/lib/types/client/worker-model-menu.d.ts +9 -0
  106. package/lib/types/client/worker-model-menu.js +136 -0
  107. package/lib/types/client/worker-model-menu.js.map +1 -0
  108. package/lib/types/client/workers.d.ts +21 -0
  109. package/lib/types/client/workers.js +59 -0
  110. package/lib/types/client/workers.js.map +1 -0
  111. package/lib/types/client/zcode-login-link-provider.d.ts +9 -0
  112. package/lib/types/client/zcode-login-link-provider.js +105 -0
  113. package/lib/types/client/zcode-login-link-provider.js.map +1 -0
  114. package/lib/types/client/zcode-login-link.d.ts +16 -0
  115. package/lib/types/client/zcode-login-link.js +194 -0
  116. package/lib/types/client/zcode-login-link.js.map +1 -0
  117. package/lib/types/host/account-identity.d.ts +16 -0
  118. package/lib/types/host/account-identity.js +126 -0
  119. package/lib/types/host/account-identity.js.map +1 -0
  120. package/lib/types/host/account-login.d.ts +10 -0
  121. package/lib/types/host/account-login.js +126 -0
  122. package/lib/types/host/account-login.js.map +1 -0
  123. package/lib/types/host/account-models.d.mts +21 -0
  124. package/lib/types/host/account-models.mjs +262 -0
  125. package/lib/types/host/accounts.d.ts +42 -0
  126. package/lib/types/host/accounts.js +945 -0
  127. package/lib/types/host/accounts.js.map +1 -0
  128. package/lib/types/host/adapters.d.ts +24 -0
  129. package/lib/types/host/adapters.js +380 -0
  130. package/lib/types/host/adapters.js.map +1 -0
  131. package/lib/types/host/agy-context.d.ts +8 -0
  132. package/lib/types/host/agy-context.js +122 -0
  133. package/lib/types/host/agy-context.js.map +1 -0
  134. package/lib/types/host/agy-models.d.ts +5 -0
  135. package/lib/types/host/agy-models.js +37 -0
  136. package/lib/types/host/agy-models.js.map +1 -0
  137. package/lib/types/host/agy-windows-account.d.ts +14 -0
  138. package/lib/types/host/agy-windows-account.js +104 -0
  139. package/lib/types/host/agy-windows-account.js.map +1 -0
  140. package/lib/types/host/authorized-catalog.d.ts +14 -0
  141. package/lib/types/host/authorized-catalog.js +35 -0
  142. package/lib/types/host/authorized-catalog.js.map +1 -0
  143. package/lib/types/host/bridge-protocol.d.ts +15 -0
  144. package/lib/types/host/bridge-protocol.js +80 -0
  145. package/lib/types/host/bridge-protocol.js.map +1 -0
  146. package/lib/types/host/claude-native-oauth.d.ts +17 -0
  147. package/lib/types/host/claude-native-oauth.js +272 -0
  148. package/lib/types/host/claude-native-oauth.js.map +1 -0
  149. package/lib/types/host/claude-own-route.d.ts +33 -0
  150. package/lib/types/host/claude-own-route.js +250 -0
  151. package/lib/types/host/claude-own-route.js.map +1 -0
  152. package/lib/types/host/cli-account-binding.d.ts +33 -0
  153. package/lib/types/host/cli-account-binding.js +540 -0
  154. package/lib/types/host/cli-account-binding.js.map +1 -0
  155. package/lib/types/host/cli-protocol.d.ts +27 -0
  156. package/lib/types/host/cli-protocol.js +212 -0
  157. package/lib/types/host/cli-protocol.js.map +1 -0
  158. package/lib/types/host/codex-account.d.ts +8 -0
  159. package/lib/types/host/codex-account.js +143 -0
  160. package/lib/types/host/codex-account.js.map +1 -0
  161. package/lib/types/host/codex-models.d.ts +6 -0
  162. package/lib/types/host/codex-models.js +169 -0
  163. package/lib/types/host/codex-models.js.map +1 -0
  164. package/lib/types/host/extended-adapters.d.ts +44 -0
  165. package/lib/types/host/extended-adapters.js +207 -0
  166. package/lib/types/host/extended-adapters.js.map +1 -0
  167. package/lib/types/host/first-party-account-context.d.ts +26 -0
  168. package/lib/types/host/first-party-account-context.js +55 -0
  169. package/lib/types/host/first-party-account-context.js.map +1 -0
  170. package/lib/types/host/first-party-models.d.ts +29 -0
  171. package/lib/types/host/first-party-models.js +459 -0
  172. package/lib/types/host/first-party-models.js.map +1 -0
  173. package/lib/types/host/grok-adapter.d.ts +44 -0
  174. package/lib/types/host/grok-adapter.js +293 -0
  175. package/lib/types/host/grok-adapter.js.map +1 -0
  176. package/lib/types/host/grok-models.d.ts +47 -0
  177. package/lib/types/host/grok-models.js +320 -0
  178. package/lib/types/host/grok-models.js.map +1 -0
  179. package/lib/types/host/harness-opencode-accounts.d.ts +17 -0
  180. package/lib/types/host/harness-opencode-accounts.js +80 -0
  181. package/lib/types/host/harness-opencode-accounts.js.map +1 -0
  182. package/lib/types/host/hermes-account-context.d.ts +8 -0
  183. package/lib/types/host/hermes-account-context.js +99 -0
  184. package/lib/types/host/hermes-account-context.js.map +1 -0
  185. package/lib/types/host/hermes-accounts.d.ts +19 -0
  186. package/lib/types/host/hermes-accounts.js +356 -0
  187. package/lib/types/host/hermes-accounts.js.map +1 -0
  188. package/lib/types/host/hermes-adapter.d.ts +93 -0
  189. package/lib/types/host/hermes-adapter.js +455 -0
  190. package/lib/types/host/hermes-adapter.js.map +1 -0
  191. package/lib/types/host/hermes-env.d.ts +4 -0
  192. package/lib/types/host/hermes-env.js +22 -0
  193. package/lib/types/host/hermes-env.js.map +1 -0
  194. package/lib/types/host/hermes-installation.d.ts +10 -0
  195. package/lib/types/host/hermes-installation.js +181 -0
  196. package/lib/types/host/hermes-installation.js.map +1 -0
  197. package/lib/types/host/hermes-models.d.ts +26 -0
  198. package/lib/types/host/hermes-models.js +328 -0
  199. package/lib/types/host/hermes-models.js.map +1 -0
  200. package/lib/types/host/hermes-native-entry.py +96 -0
  201. package/lib/types/host/hermes-nous-refresh.py +331 -0
  202. package/lib/types/host/hermes-nous.d.ts +53 -0
  203. package/lib/types/host/hermes-nous.js +343 -0
  204. package/lib/types/host/hermes-nous.js.map +1 -0
  205. package/lib/types/host/hermes-renewal.d.ts +27 -0
  206. package/lib/types/host/hermes-renewal.js +292 -0
  207. package/lib/types/host/hermes-renewal.js.map +1 -0
  208. package/lib/types/host/hermes-suppression.d.ts +7 -0
  209. package/lib/types/host/hermes-suppression.js +69 -0
  210. package/lib/types/host/hermes-suppression.js.map +1 -0
  211. package/lib/types/host/hermes-windows-installation.d.ts +5 -0
  212. package/lib/types/host/hermes-windows-installation.js +91 -0
  213. package/lib/types/host/hermes-windows-installation.js.map +1 -0
  214. package/lib/types/host/index.d.ts +140 -0
  215. package/lib/types/host/index.js +947 -0
  216. package/lib/types/host/index.js.map +1 -0
  217. package/lib/types/host/kimi-accounts.d.ts +17 -0
  218. package/lib/types/host/kimi-accounts.js +220 -0
  219. package/lib/types/host/kimi-accounts.js.map +1 -0
  220. package/lib/types/host/kimi-oauth-models.d.ts +14 -0
  221. package/lib/types/host/kimi-oauth-models.js +246 -0
  222. package/lib/types/host/kimi-oauth-models.js.map +1 -0
  223. package/lib/types/host/managed-agent.d.ts +4 -0
  224. package/lib/types/host/managed-agent.js +127 -0
  225. package/lib/types/host/managed-agent.js.map +1 -0
  226. package/lib/types/host/mimo-configuration.d.ts +22 -0
  227. package/lib/types/host/mimo-configuration.js +258 -0
  228. package/lib/types/host/mimo-configuration.js.map +1 -0
  229. package/lib/types/host/mimo-metadata-cache.d.ts +22 -0
  230. package/lib/types/host/mimo-metadata-cache.js +121 -0
  231. package/lib/types/host/mimo-metadata-cache.js.map +1 -0
  232. package/lib/types/host/native-capability-cache.d.ts +11 -0
  233. package/lib/types/host/native-capability-cache.js +94 -0
  234. package/lib/types/host/native-capability-cache.js.map +1 -0
  235. package/lib/types/host/native-launch.d.mts +2 -0
  236. package/lib/types/host/native-launch.mjs +234 -0
  237. package/lib/types/host/native-process.d.ts +5 -0
  238. package/lib/types/host/native-process.js +41 -0
  239. package/lib/types/host/native-process.js.map +1 -0
  240. package/lib/types/host/native-spawn.mjs +32 -0
  241. package/lib/types/host/opencode-adapter.d.ts +94 -0
  242. package/lib/types/host/opencode-adapter.js +507 -0
  243. package/lib/types/host/opencode-adapter.js.map +1 -0
  244. package/lib/types/host/opencode-native.d.ts +27 -0
  245. package/lib/types/host/opencode-native.js +403 -0
  246. package/lib/types/host/opencode-native.js.map +1 -0
  247. package/lib/types/host/own-account-lease.d.mts +5 -0
  248. package/lib/types/host/own-account-lease.mjs +105 -0
  249. package/lib/types/host/pi-installation.d.mts +7 -0
  250. package/lib/types/host/pi-installation.mjs +87 -0
  251. package/lib/types/host/pi-omp-accounts.d.ts +28 -0
  252. package/lib/types/host/pi-omp-accounts.js +175 -0
  253. package/lib/types/host/pi-omp-accounts.js.map +1 -0
  254. package/lib/types/host/pi-omp-adapter.d.ts +32 -0
  255. package/lib/types/host/pi-omp-adapter.js +190 -0
  256. package/lib/types/host/pi-omp-adapter.js.map +1 -0
  257. package/lib/types/host/pi-omp-environment.d.mts +1 -0
  258. package/lib/types/host/pi-omp-environment.mjs +15 -0
  259. package/lib/types/host/pi-omp-identity.d.ts +2 -0
  260. package/lib/types/host/pi-omp-identity.js +142 -0
  261. package/lib/types/host/pi-omp-identity.js.map +1 -0
  262. package/lib/types/host/pi-omp-logout.d.ts +3 -0
  263. package/lib/types/host/pi-omp-logout.js +152 -0
  264. package/lib/types/host/pi-omp-logout.js.map +1 -0
  265. package/lib/types/host/pi-omp-native.d.ts +71 -0
  266. package/lib/types/host/pi-omp-native.js +753 -0
  267. package/lib/types/host/pi-omp-native.js.map +1 -0
  268. package/lib/types/host/pi-omp-refresh.d.mts +7 -0
  269. package/lib/types/host/pi-omp-refresh.mjs +324 -0
  270. package/lib/types/host/private-launch.mjs +23 -0
  271. package/lib/types/host/process.d.ts +43 -0
  272. package/lib/types/host/process.js +134 -0
  273. package/lib/types/host/process.js.map +1 -0
  274. package/lib/types/host/protocol.d.ts +23 -0
  275. package/lib/types/host/protocol.js +112 -0
  276. package/lib/types/host/protocol.js.map +1 -0
  277. package/lib/types/host/roles.d.ts +34 -0
  278. package/lib/types/host/roles.js +80 -0
  279. package/lib/types/host/roles.js.map +1 -0
  280. package/lib/types/host/routing.d.ts +31 -0
  281. package/lib/types/host/routing.js +248 -0
  282. package/lib/types/host/routing.js.map +1 -0
  283. package/lib/types/host/runtime.d.ts +60 -0
  284. package/lib/types/host/runtime.js +598 -0
  285. package/lib/types/host/runtime.js.map +1 -0
  286. package/lib/types/host/storage.d.ts +48 -0
  287. package/lib/types/host/storage.js +449 -0
  288. package/lib/types/host/storage.js.map +1 -0
  289. package/lib/types/host/telemetry.d.ts +17 -0
  290. package/lib/types/host/telemetry.js +158 -0
  291. package/lib/types/host/telemetry.js.map +1 -0
  292. package/lib/types/host/windows-account-bootstrap.ps1 +44 -0
  293. package/lib/types/host/windows-account-launch.mjs +47 -0
  294. package/lib/types/host/windows-account-owner.ps1 +137 -0
  295. package/lib/types/host/windows-account-stdio.mjs +19 -0
  296. package/lib/types/host/windows-account-terminal.d.ts +17 -0
  297. package/lib/types/host/windows-account-terminal.js +208 -0
  298. package/lib/types/host/windows-account-terminal.js.map +1 -0
  299. package/lib/types/host/windows-agy-account.ps1 +81 -0
  300. package/lib/types/host/windows-cli-installation.d.ts +31 -0
  301. package/lib/types/host/windows-cli-installation.js +157 -0
  302. package/lib/types/host/windows-cli-installation.js.map +1 -0
  303. package/lib/types/host/windows-hidden-launch.mjs +49 -0
  304. package/lib/types/host/windows-hidden-process.d.ts +12 -0
  305. package/lib/types/host/windows-hidden-process.js +116 -0
  306. package/lib/types/host/windows-hidden-process.js.map +1 -0
  307. package/lib/types/host/zcode-account-models.d.ts +16 -0
  308. package/lib/types/host/zcode-account-models.js +114 -0
  309. package/lib/types/host/zcode-account-models.js.map +1 -0
  310. package/lib/types/host/zcode-adapter.d.ts +93 -0
  311. package/lib/types/host/zcode-adapter.js +808 -0
  312. package/lib/types/host/zcode-adapter.js.map +1 -0
  313. package/lib/types/host/zcode-grok-accounts.d.ts +30 -0
  314. package/lib/types/host/zcode-grok-accounts.js +408 -0
  315. package/lib/types/host/zcode-grok-accounts.js.map +1 -0
  316. package/lib/types/shared/accounts.d.ts +47 -0
  317. package/lib/types/shared/accounts.js +2 -0
  318. package/lib/types/shared/accounts.js.map +1 -0
  319. package/lib/types/shared/builtin-presets.d.ts +2 -0
  320. package/lib/types/shared/builtin-presets.js +231 -0
  321. package/lib/types/shared/builtin-presets.js.map +1 -0
  322. package/lib/types/shared/cli-settings.d.ts +5 -0
  323. package/lib/types/shared/cli-settings.js +2 -0
  324. package/lib/types/shared/cli-settings.js.map +1 -0
  325. package/lib/types/shared/model-presentation.d.ts +10 -0
  326. package/lib/types/shared/model-presentation.js +95 -0
  327. package/lib/types/shared/model-presentation.js.map +1 -0
  328. package/lib/types/shared/models.d.ts +7 -0
  329. package/lib/types/shared/models.js +35 -0
  330. package/lib/types/shared/models.js.map +1 -0
  331. package/lib/types/shared/telemetry.d.ts +18 -0
  332. package/lib/types/shared/telemetry.js +16 -0
  333. package/lib/types/shared/telemetry.js.map +1 -0
  334. package/lib/types/shared/types.d.ts +127 -0
  335. package/lib/types/shared/types.js +147 -0
  336. package/lib/types/shared/types.js.map +1 -0
  337. package/lib/windows-account-bootstrap.ps1 +44 -0
  338. package/lib/windows-account-launch.mjs +47 -0
  339. package/lib/windows-account-owner.ps1 +137 -0
  340. package/lib/windows-account-stdio.mjs +19 -0
  341. package/lib/windows-agy-account.ps1 +81 -0
  342. package/lib/windows-hidden-launch.mjs +49 -0
  343. package/lib/zcode-resume.mjs +423 -0
  344. package/package.json +109 -4
@@ -0,0 +1,598 @@
1
+ import { readClaudeOwnRoute, prepareClaudeWorkerLaunch } from "./claude-own-route.js";
2
+ import { extendedLaunch, isExtendedCli } from "./extended-adapters.js";
3
+ import { appendFileSync } from 'node:fs';
4
+ import { randomUUID } from 'node:crypto';
5
+ import { active, CLI_LABELS, CLI_SHORT_NAMES, LEGACY_ACCOUNT_RECORD_NOTICE, isRetiredCli, RETIRED_HARNESS_NOTICE, cliOf, workerName, foldEvents, } from "../shared/types.js";
6
+ import { agentNameSchema, availableAgentName, promptForWorker, roleSnapshotSchema, workerTitleSchema, } from "./roles.js";
7
+ import { protocolFor, resolveCliExecutable, workerArguments, captureCatalogMetadata } from "./adapters.js";
8
+ import { spawnManagedAgent } from "./managed-agent.js";
9
+ import { projectDirectory, ProcessCleanupUnconfirmedError, } from "./process.js";
10
+ import { join } from 'node:path';
11
+ import { AgyContextReader } from "./agy-context.js";
12
+ import { attachTelemetry, TelemetryReader } from "./telemetry.js";
13
+ import { authorizeSelection, ACCOUNT_CHANGED } from "./authorized-catalog.js";
14
+ import { readCliAccountBinding } from "./cli-account-binding.js";
15
+ import { assertFirstPartyConfiguration, firstPartyEnvironment } from "./first-party-models.js";
16
+ export class WorkerRuntime {
17
+ storage;
18
+ backend;
19
+ config;
20
+ agyContextReader = new AgyContextReader();
21
+ telemetryReader = new TelemetryReader();
22
+ tasks = new Map();
23
+ queue = [];
24
+ running = new Set();
25
+ listeners = new Set();
26
+ disposed = false;
27
+ blocked;
28
+ revision = 0;
29
+ constructor(storage, backend, config) {
30
+ this.storage = storage;
31
+ this.backend = backend;
32
+ this.config = config;
33
+ const cleanup = storage.cleanupBlockState();
34
+ if (cleanup !== 'none')
35
+ this.blocked =
36
+ cleanup === 'invalid'
37
+ ? '进程清理隔离记录无法核验,已暂停任务和账号操作'
38
+ : '无法确认 CLI 进程已清理,已暂停后续派遣,请先核查进程退出状态';
39
+ }
40
+ subscribe(callback) {
41
+ this.listeners.add(callback);
42
+ return () => {
43
+ this.listeners.delete(callback);
44
+ };
45
+ }
46
+ changed() {
47
+ this.revision++;
48
+ for (const callback of this.listeners)
49
+ callback();
50
+ }
51
+ assertCliEnabled(cli) {
52
+ if (this.disposed)
53
+ throw new Error('插件正在关闭');
54
+ if (this.blocked)
55
+ throw new Error(this.blocked);
56
+ if (isRetiredCli(cli))
57
+ throw new Error(RETIRED_HARNESS_NOTICE);
58
+ if (!this.storage.cliSettings().enabled[cli])
59
+ throw new Error(`${CLI_LABELS[cli]} 已关闭,请先在 CLI Worker 设置中开启`);
60
+ }
61
+ blockOnCleanup(error) {
62
+ this.markCleanupBlocked(error);
63
+ this.drain();
64
+ }
65
+ markCleanupBlocked(error) {
66
+ this.blocked = `无法确认 CLI 进程已清理,已暂停后续派遣:${error instanceof Error ? error.message : String(error)}`;
67
+ try {
68
+ // The private marker contains no CLI output, paths, identities or credentials.
69
+ this.storage.blockCleanup();
70
+ }
71
+ catch {
72
+ // Keep this Host closed even when its storage cannot record the quarantine.
73
+ this.blocked += ';清理隔离记录保存失败';
74
+ }
75
+ }
76
+ setCliEnabled(cli, enabled) {
77
+ if (isRetiredCli(cli))
78
+ throw new Error(RETIRED_HARNESS_NOTICE);
79
+ if (this.disposed)
80
+ throw new Error('插件正在关闭');
81
+ if (!enabled)
82
+ this.assertAccountIdle(cli);
83
+ const settings = this.storage.setCliEnabled(cli, enabled);
84
+ this.changed();
85
+ return settings;
86
+ }
87
+ /** Account mutation must also respect a prior unconfirmed process cleanup. */
88
+ assertAccountIdle(cli) {
89
+ if (this.disposed)
90
+ throw new Error('插件正在关闭');
91
+ if (this.blocked)
92
+ throw new Error(this.blocked);
93
+ if ([...this.storage.workers.values()].some((worker) => active(worker.status) && cliOf(worker.preference) === cli))
94
+ throw new Error('此 CLI 还有运行或排队中的任务,请等待结束后再修改此 CLI 设置或管理账号');
95
+ }
96
+ get(parent, id) {
97
+ const worker = this.storage.workers.get(id);
98
+ if (!worker || worker.parentSessionId !== parent)
99
+ throw new Error('Worker does not belong to this conversation');
100
+ if (worker.archivedAt)
101
+ throw new Error('此任务已删除,请先恢复');
102
+ return worker;
103
+ }
104
+ /** Exact names are scoped to the owning parent; never select a partial or cross-session match. */
105
+ resolveWorker(parent, id, name) {
106
+ if (!id && !name)
107
+ throw new Error('请指定 worker_id 或 worker_name');
108
+ const normalized = name === undefined ? undefined : agentNameSchema.parse(name);
109
+ if (id) {
110
+ const worker = this.get(parent, id);
111
+ if (normalized && !this.matchesName(worker, normalized))
112
+ throw new Error('worker_id 与 worker_name 不匹配');
113
+ return worker;
114
+ }
115
+ const matches = [...this.storage.workers.values()].filter((worker) => worker.parentSessionId === parent && !worker.archivedAt && this.matchesName(worker, normalized));
116
+ if (matches.length !== 1)
117
+ throw new Error(matches.length
118
+ ? '智能体名称不唯一,请使用 worker_id'
119
+ : '当前对话中没有此名称的智能体,请检查名称或使用 worker_id');
120
+ return matches[0];
121
+ }
122
+ matchesName(worker, name) {
123
+ return workerName(worker) === name || (worker.nameAliases ?? []).includes(name);
124
+ }
125
+ checkAgentName(parent, name, excludingId) {
126
+ const clean = agentNameSchema.parse(name);
127
+ if ([...this.storage.workers.values()].some((worker) => worker.parentSessionId === parent &&
128
+ worker.id !== excludingId &&
129
+ [workerName(worker), ...(worker.nameAliases ?? [])].some((name) => name.toLocaleLowerCase() === clean.toLocaleLowerCase())))
130
+ throw new Error('当前对话已有同名智能体,请换一个名称或续用已有智能体');
131
+ return clean;
132
+ }
133
+ renameWorker(parent, id, name) {
134
+ if (this.disposed)
135
+ throw new Error('CLI Worker is shutting down');
136
+ const worker = this.get(parent, id);
137
+ const agentName = this.checkAgentName(parent, name, id);
138
+ // Publish the new name only after persistence succeeds. Keep a running task's
139
+ // shared worker reference in sync so its next process event cannot revert it.
140
+ this.storage.save({ ...worker, agentName, agentNameOrigin: 'custom' });
141
+ worker.agentName = agentName;
142
+ worker.agentNameOrigin = 'custom';
143
+ this.storage.workers.set(id, worker);
144
+ this.changed();
145
+ }
146
+ renameWorkerTitle(parent, id, title) {
147
+ if (this.disposed)
148
+ throw new Error('CLI Worker is shutting down');
149
+ const worker = this.get(parent, id);
150
+ const clean = workerTitleSchema.parse(title);
151
+ this.storage.save({ ...worker, title: clean });
152
+ worker.title = clean;
153
+ this.storage.workers.set(id, worker);
154
+ this.changed();
155
+ }
156
+ /** Management cannot hide an in-flight task or a process whose cleanup is unresolved. */
157
+ assertManagedIdle(worker) {
158
+ if (this.disposed)
159
+ throw new Error('CLI Worker is shutting down');
160
+ if (this.blocked)
161
+ throw new Error(this.blocked);
162
+ if (active(worker.status) || this.tasks.has(worker.id))
163
+ throw new Error('请等待任务结束并完成进程清理后再管理此任务');
164
+ }
165
+ assertLegacyRestart(parent, id) {
166
+ const worker = this.get(parent, id);
167
+ this.assertManagedIdle(worker);
168
+ this.assertCliEnabled(cliOf(worker.preference));
169
+ if (!worker.conversationId || this.storage.accountBinding(id))
170
+ throw new Error('只有缺少账号记录的历史任务可通过此操作新建对话');
171
+ return worker;
172
+ }
173
+ deleteWorker(parent, id) {
174
+ const worker = this.get(parent, id);
175
+ this.assertManagedIdle(worker);
176
+ this.storage.save({ ...worker, archivedAt: new Date().toISOString() });
177
+ this.changed();
178
+ }
179
+ restoreWorker(parent, id) {
180
+ const worker = this.storage.workers.get(id);
181
+ if (!worker || worker.parentSessionId !== parent)
182
+ throw new Error('Worker does not belong to this conversation');
183
+ this.assertManagedIdle(worker);
184
+ if (!worker.archivedAt)
185
+ throw new Error('此任务尚未删除');
186
+ const restored = { ...worker };
187
+ delete restored.archivedAt;
188
+ this.storage.save(restored);
189
+ this.changed();
190
+ }
191
+ snapshot(parent, selected) {
192
+ const owned = [...this.storage.workers.values()]
193
+ .filter((w) => w.parentSessionId === parent)
194
+ .sort((a, b) => a.createdAt.localeCompare(b.createdAt) || a.id.localeCompare(b.id));
195
+ const workers = owned.filter((worker) => !worker.archivedAt);
196
+ const archivedWorkers = owned.filter((worker) => !!worker.archivedAt);
197
+ const selectedWorker = selected ? this.storage.workers.get(selected) : undefined;
198
+ if (selected && (!selectedWorker || selectedWorker.parentSessionId !== parent))
199
+ throw new Error('Worker does not belong to this conversation');
200
+ const worker = selectedWorker?.archivedAt ? undefined : selectedWorker;
201
+ const timeline = worker ? this.timeline(worker) : [];
202
+ const telemetry = worker ? this.runTelemetry(worker, worker.runId) : undefined;
203
+ const context = worker && cliOf(worker.preference) === 'antigravity'
204
+ ? this.agyContextReader.read(worker.conversationId)
205
+ : undefined;
206
+ return {
207
+ telemetry: telemetry || context
208
+ ? {
209
+ usage: telemetry?.usage,
210
+ contextUsed: telemetry?.contextUsed,
211
+ contextCapacity: telemetry?.contextCapacity,
212
+ ...context,
213
+ }
214
+ : undefined,
215
+ workers,
216
+ archivedWorkers,
217
+ selected: worker,
218
+ resumeBlockedReason: worker?.conversationId && !this.storage.accountBinding(worker.id)
219
+ ? LEGACY_ACCOUNT_RECORD_NOTICE
220
+ : undefined,
221
+ timeline: timeline.slice(-this.config.maxTimelineItems),
222
+ revision: this.revision,
223
+ truncated: timeline.length > this.config.maxTimelineItems,
224
+ };
225
+ }
226
+ timeline(worker) {
227
+ const rows = foldEvents(this.storage.history(worker.id), active(worker.status) ? undefined : { runId: worker.runId, status: worker.status });
228
+ for (const runId of new Set(rows.map((row) => row.id.split(':')[0])))
229
+ attachTelemetry(rows, runId, this.runTelemetry(worker, runId));
230
+ return rows;
231
+ }
232
+ runTelemetry(worker, runId) {
233
+ return this.telemetryReader.read(join(this.storage.directory, `${worker.id}.${runId}.raw.jsonl`), cliOf(worker.preference));
234
+ }
235
+ history(parent, workerId, anchor, direction) {
236
+ const worker = this.get(parent, workerId);
237
+ if (direction !== 'before' && direction !== 'after')
238
+ throw new Error('Invalid history direction');
239
+ if (!anchor || anchor.length > 256)
240
+ throw new Error('缺少有效的历史记录位置,请返回实时记录');
241
+ const timeline = this.timeline(worker);
242
+ const index = timeline.findIndex((item) => item.id === anchor);
243
+ if (index < 0)
244
+ throw new Error('历史记录位置已不可用,请返回实时记录后重试');
245
+ // Row identity remains stable when later events append or a streamed step grows.
246
+ const end = direction === 'before' ? index : Math.min(timeline.length, index + 201);
247
+ const start = direction === 'before' ? Math.max(0, end - 200) : index + 1;
248
+ return {
249
+ workerId,
250
+ items: timeline.slice(start, end),
251
+ start,
252
+ end,
253
+ total: timeline.length,
254
+ hasOlder: start > 0,
255
+ hasNewer: end < timeline.length,
256
+ };
257
+ }
258
+ configureWorker(parent, id, preference) {
259
+ if (this.disposed)
260
+ throw new Error('CLI Worker is shutting down');
261
+ const worker = this.get(parent, id);
262
+ if (isRetiredCli(cliOf(worker.preference)))
263
+ throw new Error(RETIRED_HARNESS_NOTICE);
264
+ if (active(worker.status))
265
+ throw new Error('请等待本轮结束后再修改模型与强度');
266
+ if (cliOf(worker.preference) !== cliOf(preference))
267
+ throw new Error('已有会话不能切换 CLI');
268
+ this.assertCliEnabled(cliOf(preference));
269
+ const updated = { ...worker, preference: { ...preference } };
270
+ this.storage.save(updated);
271
+ this.changed();
272
+ return updated;
273
+ }
274
+ submit(parent, project, title, prompt, preference, mode, previousId, identity, authorizedBinding) {
275
+ if (this.disposed)
276
+ throw new Error('CLI Worker is shutting down');
277
+ if (this.blocked)
278
+ throw new Error(this.blocked);
279
+ if (!prompt.trim() || prompt.length > 100_000)
280
+ throw new Error('Task must contain 1–100000 characters');
281
+ const canonical = projectDirectory(project);
282
+ const previous = previousId ? this.get(parent, previousId) : undefined;
283
+ const effective = previous?.preference ?? preference;
284
+ this.assertCliEnabled(cliOf(effective));
285
+ if (previous && active(previous.status))
286
+ throw new Error('This CLI conversation already has a running or queued turn');
287
+ if (previous && !previous.conversationId)
288
+ throw new Error('No CLI conversation_id was received; start a new worker');
289
+ if (previous && !this.storage.accountBinding(previous.id))
290
+ throw new Error(LEGACY_ACCOUNT_RECORD_NOTICE);
291
+ if (previous && previous.project !== canonical)
292
+ throw new Error('Cannot resume a worker in another workspace');
293
+ if (cliOf(effective) === 'kimi' && (previous?.mode ?? mode) === 'plan')
294
+ throw new Error('Kimi 非交互模式不支持只读派遣');
295
+ const now = new Date().toISOString();
296
+ const worker = previous ?? {
297
+ id: randomUUID(),
298
+ parentSessionId: parent,
299
+ project: canonical,
300
+ title: title.slice(0, 160),
301
+ agentName: identity?.agentName
302
+ ? this.checkAgentName(parent, identity.agentName)
303
+ : availableAgentName(this.storage.workers.values(), parent, CLI_SHORT_NAMES[cliOf(preference)]),
304
+ agentNameOrigin: identity?.agentName ? 'custom' : 'auto',
305
+ role: identity?.role ? roleSnapshotSchema.parse(structuredClone(identity.role)) : undefined,
306
+ preference: { ...preference },
307
+ mode,
308
+ createdAt: now,
309
+ updatedAt: now,
310
+ runId: randomUUID(),
311
+ status: 'queued',
312
+ };
313
+ worker.runId = randomUUID();
314
+ worker.status = 'queued';
315
+ worker.error = undefined;
316
+ worker.lastResult = undefined;
317
+ worker.observedModel = undefined;
318
+ worker.updatedAt = now;
319
+ worker.jobId = undefined;
320
+ this.storage.save(worker);
321
+ this.storage.append(worker, { kind: 'user', text: prompt });
322
+ this.storage.append(worker, { kind: 'status', text: 'queued', state: 'queued' });
323
+ let settle;
324
+ const done = new Promise((resolve) => {
325
+ settle = resolve;
326
+ });
327
+ const controller = new AbortController();
328
+ // Start the own-account read at admission, before this task waits in the queue.
329
+ const admission = authorizedBinding
330
+ ? Promise.resolve(authorizedBinding)
331
+ : readCliAccountBinding(cliOf(effective), this.backend, this.config, canonical, controller.signal);
332
+ void admission.catch((error) => {
333
+ if (error instanceof ProcessCleanupUnconfirmedError) {
334
+ this.markCleanupBlocked(error);
335
+ this.drain();
336
+ }
337
+ });
338
+ const task = {
339
+ worker,
340
+ prompt: promptForWorker(worker, prompt),
341
+ controller,
342
+ done,
343
+ settle,
344
+ admission,
345
+ };
346
+ this.tasks.set(worker.id, task);
347
+ this.queue.push(task);
348
+ this.changed();
349
+ queueMicrotask(() => this.drain());
350
+ return {
351
+ worker,
352
+ done,
353
+ cancel: () => {
354
+ void this.stop(parent, worker.id);
355
+ },
356
+ };
357
+ }
358
+ attachJob(worker, jobId) {
359
+ worker.jobId = jobId;
360
+ this.storage.save(worker);
361
+ this.changed();
362
+ }
363
+ stop(parent, id) {
364
+ const worker = this.get(parent, id);
365
+ const task = this.tasks.get(id);
366
+ if (!task)
367
+ return Promise.resolve(structuredClone(worker));
368
+ if (worker.status !== 'stopping') {
369
+ worker.status = 'stopping';
370
+ this.storage.save(worker);
371
+ task.controller.abort(new Error('用户已停止任务'));
372
+ this.changed();
373
+ if (!this.running.has(task)) {
374
+ this.queue = this.queue.filter((t) => t !== task);
375
+ void this.finishQueued(task, 'interrupted', '用户已取消排队任务');
376
+ }
377
+ }
378
+ return task.done;
379
+ }
380
+ /** A queued task may already own a native account-query process. */
381
+ async finishQueued(task, status, reason) {
382
+ task.controller.abort(new Error(reason));
383
+ try {
384
+ await task.admission;
385
+ }
386
+ catch (error) {
387
+ if (error instanceof ProcessCleanupUnconfirmedError)
388
+ this.markCleanupBlocked(error);
389
+ }
390
+ this.finish(task, this.blocked ? 'failed' : status, this.blocked ?? reason);
391
+ }
392
+ drain() {
393
+ if (this.disposed)
394
+ return;
395
+ if (this.blocked) {
396
+ const queued = this.queue.splice(0);
397
+ for (const task of queued) {
398
+ task.worker.status = 'stopping';
399
+ void this.finishQueued(task, 'failed', this.blocked);
400
+ }
401
+ return;
402
+ }
403
+ for (const task of [...this.queue]) {
404
+ if (this.running.size >= this.config.maxConcurrent)
405
+ break;
406
+ const conflicts = (other) => other.worker.project === task.worker.project &&
407
+ (other.worker.mode === 'accept-edits' || task.worker.mode === 'accept-edits');
408
+ if ([...this.running].some(conflicts) || this.queue.slice(0, this.queue.indexOf(task)).some(conflicts))
409
+ continue;
410
+ this.queue.splice(this.queue.indexOf(task), 1);
411
+ this.running.add(task);
412
+ void this.run(task).catch((error) => {
413
+ this.finish(task, 'failed', String(error));
414
+ });
415
+ }
416
+ }
417
+ finish(task, status, error) {
418
+ const worker = task.worker;
419
+ worker.status = status;
420
+ worker.error = error;
421
+ worker.updatedAt = new Date().toISOString();
422
+ try {
423
+ this.storage.save(worker);
424
+ this.storage.append(worker, { kind: 'status', text: error ?? status, state: status });
425
+ }
426
+ catch (error) {
427
+ worker.status = 'failed';
428
+ worker.error = `状态持久化失败:${String(error)}`;
429
+ this.blocked = worker.error;
430
+ }
431
+ finally {
432
+ this.tasks.delete(worker.id);
433
+ this.running.delete(task);
434
+ this.changed();
435
+ // A later followup mutates the live worker. Completion consumers must retain
436
+ // the exact outcome of this run, including its runId and response.
437
+ task.settle(structuredClone(worker));
438
+ this.drain();
439
+ }
440
+ }
441
+ async run(task) {
442
+ const { worker, controller } = task;
443
+ let handle;
444
+ let readers = [];
445
+ let stderr = '';
446
+ let totalBytes = 0;
447
+ const timeout = setTimeout(() => controller.abort(new Error('任务超时')), this.config.timeoutMs);
448
+ const expectedConversation = worker.conversationId;
449
+ const protocol = protocolFor(cliOf(worker.preference), (event) => {
450
+ if (event.observedModel) {
451
+ worker.observedModel = event.observedModel;
452
+ this.storage.save(worker);
453
+ }
454
+ this.storage.append(worker, event);
455
+ this.changed();
456
+ }, (id) => {
457
+ if (expectedConversation && id !== expectedConversation)
458
+ throw new Error('Resume conversation_id does not match the requested conversation');
459
+ worker.conversationId = id;
460
+ this.storage.save(worker);
461
+ }, this.config.maxLineBytes, worker.preference.model);
462
+ let failure;
463
+ let release;
464
+ let quiescent = false;
465
+ try {
466
+ const admitted = await task.admission;
467
+ controller.signal.throwIfAborted();
468
+ const previousBinding = this.storage.accountBinding(worker.id);
469
+ if (previousBinding && previousBinding !== admitted)
470
+ throw new Error(ACCOUNT_CHANGED);
471
+ const { binding, preference: authorizedPreference } = await authorizeSelection(worker.preference, this.backend, this.config, worker.project, controller.signal, admitted);
472
+ if (authorizedPreference.model !== worker.preference.model)
473
+ throw new Error('模型与思考强度不匹配,请重新选择');
474
+ controller.signal.throwIfAborted();
475
+ this.assertCliEnabled(cliOf(worker.preference));
476
+ const executable = await resolveCliExecutable(cliOf(worker.preference), this.backend, this.config, controller.signal);
477
+ controller.signal.throwIfAborted();
478
+ await assertFirstPartyConfiguration(cliOf(worker.preference), worker.project, controller.signal);
479
+ worker.status = 'running';
480
+ this.storage.save(worker);
481
+ this.changed();
482
+ const selectedClaudeRoute = cliOf(worker.preference) === 'claude'
483
+ ? await readClaudeOwnRoute(worker.project, controller.signal)
484
+ : undefined;
485
+ // Bind the exact prepared snapshot as well as the current source. A -> B -> A
486
+ // configuration changes must not authorize launching B under A's admission.
487
+ if (selectedClaudeRoute &&
488
+ binding !==
489
+ (await readCliAccountBinding('claude', this.backend, this.config, worker.project, controller.signal, selectedClaudeRoute)))
490
+ throw new Error(ACCOUNT_CHANGED);
491
+ const launch = isExtendedCli(cliOf(worker.preference))
492
+ ? await extendedLaunch(cliOf(worker.preference), executable, worker.project, worker.preference, worker.mode, task.prompt, join(this.storage.directory, 'native', worker.id), this.config, expectedConversation, (argv, env) => captureCatalogMetadata(this.backend, this.config, argv, worker.project, controller.signal, env), { backend: this.backend, signal: controller.signal, graceMs: this.config.graceMs })
493
+ : cliOf(worker.preference) === 'claude'
494
+ ? await prepareClaudeWorkerLaunch(selectedClaudeRoute, workerArguments(executable, worker.project, worker.preference, worker.mode, task.prompt, this.config.timeoutMs, expectedConversation), this.storage.directory, controller.signal)
495
+ : {
496
+ env: firstPartyEnvironment(cliOf(worker.preference)),
497
+ argv: workerArguments(executable, worker.project, worker.preference, worker.mode, task.prompt, this.config.timeoutMs, expectedConversation),
498
+ };
499
+ release = 'cleanup' in launch ? launch.cleanup : undefined;
500
+ controller.signal.throwIfAborted();
501
+ if (binding !==
502
+ (await readCliAccountBinding(cliOf(worker.preference), this.backend, this.config, worker.project, controller.signal)))
503
+ throw new Error(ACCOUNT_CHANGED);
504
+ controller.signal.throwIfAborted();
505
+ if ('activate' in launch && typeof launch.activate === 'function')
506
+ await launch.activate();
507
+ controller.signal.throwIfAborted();
508
+ this.storage.bindAccount(worker.id, binding);
509
+ handle = await spawnManagedAgent(this.backend, {
510
+ argv: launch.argv,
511
+ env: 'env' in launch ? launch.env : undefined,
512
+ cwd: worker.project,
513
+ stdio: { stdin: 'ignore', stdout: 'pipe', stderr: 'pipe' },
514
+ graceMs: this.config.graceMs,
515
+ signal: controller.signal,
516
+ });
517
+ // Observe spawn rejection immediately even while draining protocol streams.
518
+ void handle.done.catch(() => undefined);
519
+ const capture = async (stream, isError) => {
520
+ if (!stream)
521
+ throw new Error('CLI pipe unavailable');
522
+ for await (const chunk of stream) {
523
+ totalBytes += Buffer.byteLength(chunk);
524
+ if (totalBytes > this.config.maxRunBytes)
525
+ throw new Error('CLI output exceeded the configured per-run limit');
526
+ appendFileSync(this.storage.rawPath(worker) + (isError ? '.stderr' : ''), chunk, { mode: 0o600 });
527
+ if (isError)
528
+ stderr = (stderr + String(chunk)).slice(-8192);
529
+ else
530
+ protocol.feed(chunk);
531
+ }
532
+ };
533
+ readers = [capture(handle.stdout, false), capture(handle.stderr, true)];
534
+ await Promise.all(readers);
535
+ const outcome = await handle.done;
536
+ controller.signal.throwIfAborted();
537
+ protocol.end();
538
+ if (outcome.exitCode !== 0)
539
+ throw new Error(`CLI exited with ${outcome.exitCode}: ${stderr || protocol.result?.response || 'no diagnostic'}`);
540
+ if (!protocol.result)
541
+ throw new Error('CLI exited without a final result');
542
+ if (protocol.result.status !== 'SUCCESS')
543
+ throw new Error(`CLI ${protocol.result.status}: ${protocol.result.error || protocol.result.response || stderr || '请检查 CLI 认证及模型/强度兼容性'}`);
544
+ worker.lastResult = protocol.result.response;
545
+ }
546
+ catch (error) {
547
+ failure = error;
548
+ if (error instanceof ProcessCleanupUnconfirmedError)
549
+ this.markCleanupBlocked(error);
550
+ }
551
+ finally {
552
+ clearTimeout(timeout);
553
+ if (handle) {
554
+ handle.terminate();
555
+ try {
556
+ if (!(await handle.waitForExit()))
557
+ throw new Error('CLI cleanup did not reach quiescence');
558
+ quiescent = true;
559
+ }
560
+ catch (error) {
561
+ failure = error;
562
+ this.markCleanupBlocked(error);
563
+ }
564
+ await Promise.allSettled([...readers, handle.done]);
565
+ }
566
+ }
567
+ try {
568
+ if ((!handle || quiescent) && !this.blocked)
569
+ await release?.();
570
+ }
571
+ catch (error) {
572
+ failure ??= error;
573
+ if (error instanceof ProcessCleanupUnconfirmedError)
574
+ this.markCleanupBlocked(error);
575
+ }
576
+ if (stderr.trim())
577
+ this.storage.append(worker, { kind: 'diagnostic', text: 'CLI 诊断', detail: stderr });
578
+ const error = this.blocked ??
579
+ (controller.signal.aborted ? String(controller.signal.reason) : failure ? String(failure) : undefined);
580
+ this.finish(task, this.blocked
581
+ ? 'failed'
582
+ : failure || controller.signal.aborted
583
+ ? controller.signal.aborted
584
+ ? 'interrupted'
585
+ : 'failed'
586
+ : 'completed', error);
587
+ }
588
+ async close() {
589
+ if (this.disposed)
590
+ return;
591
+ this.disposed = true;
592
+ const tasks = [...this.tasks.values()];
593
+ await Promise.all(tasks.map((task) => this.stop(task.worker.parentSessionId, task.worker.id)));
594
+ this.listeners.clear();
595
+ this.storage.close();
596
+ }
597
+ }
598
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/host/runtime.ts"],"names":[],"mappings":"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"}