@namzu/sdk 31.1.0 → 33.0.0

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 (355) hide show
  1. package/CHANGELOG.md +188 -0
  2. package/dist/agents/ReactiveAgent.d.ts.map +1 -1
  3. package/dist/agents/ReactiveAgent.js +4 -0
  4. package/dist/agents/ReactiveAgent.js.map +1 -1
  5. package/dist/agents/SupervisorAgent.d.ts.map +1 -1
  6. package/dist/agents/SupervisorAgent.js +4 -0
  7. package/dist/agents/SupervisorAgent.js.map +1 -1
  8. package/dist/agents/runAgent.d.ts +4 -0
  9. package/dist/agents/runAgent.d.ts.map +1 -1
  10. package/dist/agents/runAgent.js +4 -0
  11. package/dist/agents/runAgent.js.map +1 -1
  12. package/dist/authorization/gate.d.ts +1 -1
  13. package/dist/authorization/gate.js +1 -1
  14. package/dist/connector/index.d.ts +1 -1
  15. package/dist/connector/index.d.ts.map +1 -1
  16. package/dist/connector/index.js +1 -1
  17. package/dist/connector/index.js.map +1 -1
  18. package/dist/connector/mcp/adapter.d.ts.map +1 -1
  19. package/dist/connector/mcp/adapter.js +71 -16
  20. package/dist/connector/mcp/adapter.js.map +1 -1
  21. package/dist/connector/mcp/client.d.ts.map +1 -1
  22. package/dist/connector/mcp/client.js +3 -2
  23. package/dist/connector/mcp/client.js.map +1 -1
  24. package/dist/connector/mcp/http-redirect.d.ts +17 -0
  25. package/dist/connector/mcp/http-redirect.d.ts.map +1 -0
  26. package/dist/connector/mcp/http-redirect.js +31 -0
  27. package/dist/connector/mcp/http-redirect.js.map +1 -0
  28. package/dist/connector/mcp/http-sse.d.ts.map +1 -1
  29. package/dist/connector/mcp/http-sse.js +5 -0
  30. package/dist/connector/mcp/http-sse.js.map +1 -1
  31. package/dist/connector/mcp/image-admission.d.ts +16 -0
  32. package/dist/connector/mcp/image-admission.d.ts.map +1 -0
  33. package/dist/connector/mcp/image-admission.js +288 -0
  34. package/dist/connector/mcp/image-admission.js.map +1 -0
  35. package/dist/connector/mcp/stdio.d.ts +13 -0
  36. package/dist/connector/mcp/stdio.d.ts.map +1 -1
  37. package/dist/connector/mcp/stdio.js +66 -23
  38. package/dist/connector/mcp/stdio.js.map +1 -1
  39. package/dist/connector/mcp/streamable-http.d.ts.map +1 -1
  40. package/dist/connector/mcp/streamable-http.js +3 -0
  41. package/dist/connector/mcp/streamable-http.js.map +1 -1
  42. package/dist/constants/tools/index.js +1 -1
  43. package/dist/constants/tools/index.js.map +1 -1
  44. package/dist/directory/derive-supervisor.d.ts.map +1 -1
  45. package/dist/directory/derive-supervisor.js +5 -0
  46. package/dist/directory/derive-supervisor.js.map +1 -1
  47. package/dist/directory/derive.d.ts.map +1 -1
  48. package/dist/directory/derive.js +5 -0
  49. package/dist/directory/derive.js.map +1 -1
  50. package/dist/directory/load.d.ts.map +1 -1
  51. package/dist/directory/load.js +1 -0
  52. package/dist/directory/load.js.map +1 -1
  53. package/dist/directory/types.d.ts +2 -0
  54. package/dist/directory/types.d.ts.map +1 -1
  55. package/dist/execution/base.d.ts +13 -0
  56. package/dist/execution/base.d.ts.map +1 -1
  57. package/dist/execution/base.js +103 -8
  58. package/dist/execution/base.js.map +1 -1
  59. package/dist/execution/code-runtime/types.d.ts +11 -1
  60. package/dist/execution/code-runtime/types.d.ts.map +1 -1
  61. package/dist/execution/code-runtime/types.js.map +1 -1
  62. package/dist/execution/code-runtime/worker.d.ts.map +1 -1
  63. package/dist/execution/code-runtime/worker.js +67 -9
  64. package/dist/execution/code-runtime/worker.js.map +1 -1
  65. package/dist/execution/errors.d.ts +12 -0
  66. package/dist/execution/errors.d.ts.map +1 -0
  67. package/dist/execution/errors.js +21 -0
  68. package/dist/execution/errors.js.map +1 -0
  69. package/dist/execution/factory.d.ts.map +1 -1
  70. package/dist/execution/factory.js +1 -0
  71. package/dist/execution/factory.js.map +1 -1
  72. package/dist/execution/hybrid.d.ts +5 -0
  73. package/dist/execution/hybrid.d.ts.map +1 -1
  74. package/dist/execution/hybrid.js +36 -16
  75. package/dist/execution/hybrid.js.map +1 -1
  76. package/dist/execution/index.d.ts +1 -0
  77. package/dist/execution/index.d.ts.map +1 -1
  78. package/dist/execution/index.js +1 -0
  79. package/dist/execution/index.js.map +1 -1
  80. package/dist/execution/local.d.ts +13 -0
  81. package/dist/execution/local.d.ts.map +1 -1
  82. package/dist/execution/local.js +145 -19
  83. package/dist/execution/local.js.map +1 -1
  84. package/dist/execution/output.d.ts +27 -0
  85. package/dist/execution/output.d.ts.map +1 -0
  86. package/dist/execution/output.js +105 -0
  87. package/dist/execution/output.js.map +1 -0
  88. package/dist/execution/remote.d.ts +26 -2
  89. package/dist/execution/remote.d.ts.map +1 -1
  90. package/dist/execution/remote.js +86 -15
  91. package/dist/execution/remote.js.map +1 -1
  92. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  93. package/dist/manager/agent/lifecycle.js +1 -0
  94. package/dist/manager/agent/lifecycle.js.map +1 -1
  95. package/dist/plugin/lifecycle.d.ts.map +1 -1
  96. package/dist/plugin/lifecycle.js +9 -3
  97. package/dist/plugin/lifecycle.js.map +1 -1
  98. package/dist/process/kill-tree.d.ts +11 -13
  99. package/dist/process/kill-tree.d.ts.map +1 -1
  100. package/dist/process/kill-tree.js +11 -13
  101. package/dist/process/kill-tree.js.map +1 -1
  102. package/dist/provider/errors.d.ts +1 -0
  103. package/dist/provider/errors.d.ts.map +1 -1
  104. package/dist/provider/errors.js +39 -1
  105. package/dist/provider/errors.js.map +1 -1
  106. package/dist/provider/fallback.d.ts.map +1 -1
  107. package/dist/provider/fallback.js +31 -0
  108. package/dist/provider/fallback.js.map +1 -1
  109. package/dist/provider/idle-timeout.d.ts.map +1 -1
  110. package/dist/provider/idle-timeout.js +5 -0
  111. package/dist/provider/idle-timeout.js.map +1 -1
  112. package/dist/provider/retry.d.ts.map +1 -1
  113. package/dist/provider/retry.js +5 -0
  114. package/dist/provider/retry.js.map +1 -1
  115. package/dist/public-runtime.d.ts +7 -5
  116. package/dist/public-runtime.d.ts.map +1 -1
  117. package/dist/public-runtime.js +9 -4
  118. package/dist/public-runtime.js.map +1 -1
  119. package/dist/public-types.d.ts +2 -1
  120. package/dist/public-types.d.ts.map +1 -1
  121. package/dist/registry/tool/execute.d.ts +7 -1
  122. package/dist/registry/tool/execute.d.ts.map +1 -1
  123. package/dist/registry/tool/execute.js +201 -54
  124. package/dist/registry/tool/execute.js.map +1 -1
  125. package/dist/run/command-gate.d.ts.map +1 -1
  126. package/dist/run/command-gate.js +11 -0
  127. package/dist/run/command-gate.js.map +1 -1
  128. package/dist/run/reporter.d.ts.map +1 -1
  129. package/dist/run/reporter.js +6 -1
  130. package/dist/run/reporter.js.map +1 -1
  131. package/dist/run/workspace-fingerprint.d.ts +4 -4
  132. package/dist/run/workspace-fingerprint.d.ts.map +1 -1
  133. package/dist/run/workspace-fingerprint.js +6 -4
  134. package/dist/run/workspace-fingerprint.js.map +1 -1
  135. package/dist/runtime/bidi/index.d.ts +1 -1
  136. package/dist/runtime/bidi/index.d.ts.map +1 -1
  137. package/dist/runtime/bidi/index.js +1 -1
  138. package/dist/runtime/bidi/index.js.map +1 -1
  139. package/dist/runtime/bidi/session.d.ts +19 -0
  140. package/dist/runtime/bidi/session.d.ts.map +1 -1
  141. package/dist/runtime/bidi/session.js +150 -26
  142. package/dist/runtime/bidi/session.js.map +1 -1
  143. package/dist/runtime/query/executor.d.ts +43 -1
  144. package/dist/runtime/query/executor.d.ts.map +1 -1
  145. package/dist/runtime/query/executor.js +824 -174
  146. package/dist/runtime/query/executor.js.map +1 -1
  147. package/dist/runtime/query/index.d.ts +5 -0
  148. package/dist/runtime/query/index.d.ts.map +1 -1
  149. package/dist/runtime/query/index.js +47 -4
  150. package/dist/runtime/query/index.js.map +1 -1
  151. package/dist/runtime/query/iteration/index.d.ts +1 -0
  152. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  153. package/dist/runtime/query/iteration/index.js +34 -14
  154. package/dist/runtime/query/iteration/index.js.map +1 -1
  155. package/dist/runtime/query/iteration/phases/advisory.js +2 -2
  156. package/dist/runtime/query/iteration/phases/advisory.js.map +1 -1
  157. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  158. package/dist/runtime/query/iteration/phases/tool-review.js +84 -22
  159. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  160. package/dist/runtime/query/iteration/provider-rejected-image.d.ts +13 -0
  161. package/dist/runtime/query/iteration/provider-rejected-image.d.ts.map +1 -0
  162. package/dist/runtime/query/iteration/provider-rejected-image.js +91 -0
  163. package/dist/runtime/query/iteration/provider-rejected-image.js.map +1 -0
  164. package/dist/runtime/query/iteration/stream-turn.d.ts +4 -1
  165. package/dist/runtime/query/iteration/stream-turn.d.ts.map +1 -1
  166. package/dist/runtime/query/iteration/stream-turn.js +7 -3
  167. package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
  168. package/dist/runtime/query/request-rich-content.d.ts +13 -0
  169. package/dist/runtime/query/request-rich-content.d.ts.map +1 -1
  170. package/dist/runtime/query/request-rich-content.js +173 -17
  171. package/dist/runtime/query/request-rich-content.js.map +1 -1
  172. package/dist/runtime/query/result.d.ts.map +1 -1
  173. package/dist/runtime/query/result.js +1 -0
  174. package/dist/runtime/query/result.js.map +1 -1
  175. package/dist/runtime/query/resume-pending.d.ts +5 -1
  176. package/dist/runtime/query/resume-pending.d.ts.map +1 -1
  177. package/dist/runtime/query/resume-pending.js +66 -1
  178. package/dist/runtime/query/resume-pending.js.map +1 -1
  179. package/dist/runtime/query/tool-output-budget.d.ts.map +1 -1
  180. package/dist/runtime/query/tool-output-budget.js +45 -16
  181. package/dist/runtime/query/tool-output-budget.js.map +1 -1
  182. package/dist/runtime/query/tooling.d.ts +6 -0
  183. package/dist/runtime/query/tooling.d.ts.map +1 -1
  184. package/dist/runtime/query/tooling.js +4 -0
  185. package/dist/runtime/query/tooling.js.map +1 -1
  186. package/dist/sandbox/provider/local.d.ts.map +1 -1
  187. package/dist/sandbox/provider/local.js +193 -41
  188. package/dist/sandbox/provider/local.js.map +1 -1
  189. package/dist/scheduler/delegating.d.ts +2 -1
  190. package/dist/scheduler/delegating.d.ts.map +1 -1
  191. package/dist/scheduler/delegating.js +6 -5
  192. package/dist/scheduler/delegating.js.map +1 -1
  193. package/dist/scheduler/local.d.ts +2 -1
  194. package/dist/scheduler/local.d.ts.map +1 -1
  195. package/dist/scheduler/local.js +2 -2
  196. package/dist/scheduler/local.js.map +1 -1
  197. package/dist/session/workspace/driver.d.ts +12 -4
  198. package/dist/session/workspace/driver.d.ts.map +1 -1
  199. package/dist/session/workspace/git-worktree.d.ts +17 -3
  200. package/dist/session/workspace/git-worktree.d.ts.map +1 -1
  201. package/dist/session/workspace/git-worktree.js +153 -34
  202. package/dist/session/workspace/git-worktree.js.map +1 -1
  203. package/dist/skills/registry.d.ts +15 -0
  204. package/dist/skills/registry.d.ts.map +1 -1
  205. package/dist/skills/registry.js +33 -0
  206. package/dist/skills/registry.js.map +1 -1
  207. package/dist/store/attachment/index.d.ts +24 -2
  208. package/dist/store/attachment/index.d.ts.map +1 -1
  209. package/dist/store/attachment/index.js +52 -5
  210. package/dist/store/attachment/index.js.map +1 -1
  211. package/dist/tools/builtins/computer-use.d.ts.map +1 -1
  212. package/dist/tools/builtins/computer-use.js +39 -2
  213. package/dist/tools/builtins/computer-use.js.map +1 -1
  214. package/dist/tools/builtins/lsp.d.ts +1 -1
  215. package/dist/tools/builtins/run-code.d.ts.map +1 -1
  216. package/dist/tools/builtins/run-code.js +24 -16
  217. package/dist/tools/builtins/run-code.js.map +1 -1
  218. package/dist/tools/builtins/skill.d.ts +2 -1
  219. package/dist/tools/builtins/skill.d.ts.map +1 -1
  220. package/dist/tools/builtins/skill.js +250 -6
  221. package/dist/tools/builtins/skill.js.map +1 -1
  222. package/dist/tools/coordinator/agent.d.ts.map +1 -1
  223. package/dist/tools/coordinator/agent.js +100 -30
  224. package/dist/tools/coordinator/agent.js.map +1 -1
  225. package/dist/types/agent/base.d.ts +4 -0
  226. package/dist/types/agent/base.d.ts.map +1 -1
  227. package/dist/types/agent/factory.d.ts +1 -0
  228. package/dist/types/agent/factory.d.ts.map +1 -1
  229. package/dist/types/agent/manager.d.ts +1 -1
  230. package/dist/types/agent/manager.d.ts.map +1 -1
  231. package/dist/types/agent/scheduler.d.ts +10 -1
  232. package/dist/types/agent/scheduler.d.ts.map +1 -1
  233. package/dist/types/authorization/index.d.ts +12 -12
  234. package/dist/types/bidi/index.d.ts +19 -2
  235. package/dist/types/bidi/index.d.ts.map +1 -1
  236. package/dist/types/computer-use/index.d.ts +18 -0
  237. package/dist/types/computer-use/index.d.ts.map +1 -1
  238. package/dist/types/connector/execution-context.d.ts +3 -1
  239. package/dist/types/connector/execution-context.d.ts.map +1 -1
  240. package/dist/types/execution/index.d.ts +43 -1
  241. package/dist/types/execution/index.d.ts.map +1 -1
  242. package/dist/types/hitl/index.d.ts +11 -0
  243. package/dist/types/hitl/index.d.ts.map +1 -1
  244. package/dist/types/hitl/index.js.map +1 -1
  245. package/dist/types/message/index.d.ts +31 -1
  246. package/dist/types/message/index.d.ts.map +1 -1
  247. package/dist/types/message/index.js +43 -0
  248. package/dist/types/message/index.js.map +1 -1
  249. package/dist/types/plugin/index.d.ts +14 -1
  250. package/dist/types/plugin/index.d.ts.map +1 -1
  251. package/dist/types/plugin/index.js +1 -0
  252. package/dist/types/plugin/index.js.map +1 -1
  253. package/dist/types/provider/error.d.ts +4 -1
  254. package/dist/types/provider/error.d.ts.map +1 -1
  255. package/dist/types/provider/interface.d.ts +14 -0
  256. package/dist/types/provider/interface.d.ts.map +1 -1
  257. package/dist/types/run/events.d.ts +10 -2
  258. package/dist/types/run/events.d.ts.map +1 -1
  259. package/dist/types/run/events.js.map +1 -1
  260. package/dist/types/sandbox/index.d.ts +15 -10
  261. package/dist/types/sandbox/index.d.ts.map +1 -1
  262. package/dist/types/sandbox/index.js.map +1 -1
  263. package/dist/types/tool/index.d.ts +129 -12
  264. package/dist/types/tool/index.d.ts.map +1 -1
  265. package/dist/types/tool/index.js.map +1 -1
  266. package/dist/types/workspace/ref.d.ts +5 -0
  267. package/dist/types/workspace/ref.d.ts.map +1 -1
  268. package/dist/utils/abort.d.ts +8 -0
  269. package/dist/utils/abort.d.ts.map +1 -1
  270. package/dist/utils/abort.js +16 -0
  271. package/dist/utils/abort.js.map +1 -1
  272. package/package.json +4 -4
  273. package/src/agents/ReactiveAgent.ts +4 -0
  274. package/src/agents/SupervisorAgent.ts +4 -0
  275. package/src/agents/runAgent.ts +8 -0
  276. package/src/authorization/gate.ts +1 -1
  277. package/src/connector/index.ts +2 -0
  278. package/src/connector/mcp/adapter.ts +82 -21
  279. package/src/connector/mcp/client.ts +2 -1
  280. package/src/connector/mcp/http-redirect.ts +32 -0
  281. package/src/connector/mcp/http-sse.ts +5 -0
  282. package/src/connector/mcp/image-admission.ts +272 -0
  283. package/src/connector/mcp/stdio.ts +63 -21
  284. package/src/connector/mcp/streamable-http.ts +3 -0
  285. package/src/constants/tools/index.ts +1 -1
  286. package/src/directory/derive-supervisor.ts +5 -0
  287. package/src/directory/derive.ts +5 -0
  288. package/src/directory/load.ts +1 -0
  289. package/src/directory/types.ts +2 -0
  290. package/src/execution/base.ts +124 -7
  291. package/src/execution/code-runtime/types.ts +15 -1
  292. package/src/execution/code-runtime/worker.ts +72 -9
  293. package/src/execution/errors.ts +24 -0
  294. package/src/execution/factory.ts +1 -0
  295. package/src/execution/hybrid.ts +47 -16
  296. package/src/execution/index.ts +1 -0
  297. package/src/execution/local.ts +164 -19
  298. package/src/execution/output.ts +104 -0
  299. package/src/execution/remote.ts +122 -17
  300. package/src/manager/agent/lifecycle.ts +1 -0
  301. package/src/plugin/lifecycle.ts +9 -3
  302. package/src/process/kill-tree.ts +11 -13
  303. package/src/provider/errors.ts +40 -1
  304. package/src/provider/fallback.ts +39 -0
  305. package/src/provider/idle-timeout.ts +8 -0
  306. package/src/provider/retry.ts +8 -0
  307. package/src/public-runtime.ts +23 -2
  308. package/src/public-types.ts +11 -0
  309. package/src/registry/tool/execute.ts +230 -64
  310. package/src/run/command-gate.ts +12 -0
  311. package/src/run/reporter.ts +7 -1
  312. package/src/run/workspace-fingerprint.ts +5 -4
  313. package/src/runtime/bidi/index.ts +1 -1
  314. package/src/runtime/bidi/session.ts +177 -28
  315. package/src/runtime/query/executor.ts +987 -172
  316. package/src/runtime/query/index.ts +59 -6
  317. package/src/runtime/query/iteration/index.ts +69 -29
  318. package/src/runtime/query/iteration/phases/advisory.ts +2 -2
  319. package/src/runtime/query/iteration/phases/tool-review.ts +87 -23
  320. package/src/runtime/query/iteration/provider-rejected-image.ts +106 -0
  321. package/src/runtime/query/iteration/stream-turn.ts +12 -2
  322. package/src/runtime/query/request-rich-content.ts +213 -15
  323. package/src/runtime/query/result.ts +1 -0
  324. package/src/runtime/query/resume-pending.ts +83 -1
  325. package/src/runtime/query/tool-output-budget.ts +52 -17
  326. package/src/runtime/query/tooling.ts +10 -0
  327. package/src/sandbox/provider/local.ts +213 -45
  328. package/src/scheduler/delegating.ts +6 -5
  329. package/src/scheduler/local.ts +3 -2
  330. package/src/session/workspace/driver.ts +12 -4
  331. package/src/session/workspace/git-worktree.ts +173 -34
  332. package/src/skills/registry.ts +47 -0
  333. package/src/store/attachment/index.ts +100 -15
  334. package/src/tools/builtins/computer-use.ts +45 -2
  335. package/src/tools/builtins/run-code.ts +24 -16
  336. package/src/tools/builtins/skill.ts +325 -7
  337. package/src/tools/coordinator/agent.ts +108 -33
  338. package/src/types/agent/base.ts +4 -0
  339. package/src/types/agent/factory.ts +1 -0
  340. package/src/types/agent/manager.ts +1 -1
  341. package/src/types/agent/scheduler.ts +10 -1
  342. package/src/types/bidi/index.ts +19 -2
  343. package/src/types/computer-use/index.ts +19 -0
  344. package/src/types/connector/execution-context.ts +3 -0
  345. package/src/types/execution/index.ts +46 -1
  346. package/src/types/hitl/index.ts +11 -0
  347. package/src/types/message/index.ts +78 -1
  348. package/src/types/plugin/index.ts +15 -0
  349. package/src/types/provider/error.ts +4 -1
  350. package/src/types/provider/interface.ts +18 -0
  351. package/src/types/run/events.ts +18 -4
  352. package/src/types/sandbox/index.ts +15 -10
  353. package/src/types/tool/index.ts +159 -15
  354. package/src/types/workspace/ref.ts +5 -0
  355. package/src/utils/abort.ts +18 -0
@@ -2,28 +2,75 @@ import { NAMZU } from '../constants/telemetry/index.js';
2
2
  import { toErrorMessage } from '../utils/error.js';
3
3
  import { SCOPE_ATTRIBUTE } from '../utils/log/types.js';
4
4
  import { resolveLogger } from '../utils/logger.js';
5
+ class InitializationSupersededError extends Error {
6
+ constructor(contextId) {
7
+ super(`Execution context "${contextId}" initialization was superseded by teardown`);
8
+ this.name = 'InitializationSupersededError';
9
+ }
10
+ }
5
11
  export class BaseExecutionContext {
6
12
  log;
7
13
  ready = false;
8
14
  listeners = [];
15
+ lifecycleState = 'idle';
16
+ initializationOperation;
17
+ teardownOperation;
9
18
  constructor(log) {
10
19
  this.log = resolveLogger(log).child({
11
20
  [SCOPE_ATTRIBUTE]: 'execution/base',
12
21
  [NAMZU.EXECUTION_TYPE]: this.constructor.name,
13
22
  });
14
23
  }
15
- async initialize() {
24
+ initialize() {
25
+ if (this.lifecycleState === 'ready')
26
+ return Promise.resolve();
27
+ if (this.lifecycleState === 'initializing' && this.initializationOperation) {
28
+ return this.initializationOperation;
29
+ }
30
+ if (this.lifecycleState === 'tearing-down') {
31
+ return Promise.reject(new Error(`Execution context "${this.id}" cannot initialize while teardown is in progress`));
32
+ }
33
+ if (this.lifecycleState === 'teardown-failed') {
34
+ return Promise.reject(new Error(`Execution context "${this.id}" cannot initialize until its failed teardown is retried`));
35
+ }
36
+ this.lifecycleState = 'initializing';
37
+ const operation = this.performInitialize();
38
+ this.initializationOperation = operation;
39
+ void operation.then(() => this.releaseInitialization(operation), () => this.releaseInitialization(operation));
40
+ return operation;
41
+ }
42
+ async performInitialize() {
16
43
  try {
44
+ this.onInitializationStarted();
17
45
  await this.doInitialize();
46
+ if (this.lifecycleState !== 'initializing') {
47
+ throw new InitializationSupersededError(this.id);
48
+ }
49
+ this.onInitializationCommitted();
50
+ if (this.lifecycleState !== 'initializing') {
51
+ throw new InitializationSupersededError(this.id);
52
+ }
18
53
  this.ready = true;
19
- this.emit({ type: 'context_initialized', contextId: this.id, environment: this.environment });
20
- this.emit({ type: 'context_ready', contextId: this.id });
54
+ this.lifecycleState = 'ready';
21
55
  this.log.info('Execution context initialized', {
22
56
  'namzu.execution.context_id': this.id,
23
57
  'namzu.execution.environment': this.environment,
24
58
  });
59
+ this.emit({
60
+ type: 'context_initialized',
61
+ contextId: this.id,
62
+ environment: this.environment,
63
+ });
64
+ if (this.lifecycleState !== 'ready')
65
+ return;
66
+ this.emit({ type: 'context_ready', contextId: this.id });
25
67
  }
26
68
  catch (err) {
69
+ if (err instanceof InitializationSupersededError)
70
+ throw err;
71
+ this.ready = false;
72
+ if (this.lifecycleState === 'initializing')
73
+ this.lifecycleState = 'idle';
27
74
  const message = toErrorMessage(err);
28
75
  this.emit({ type: 'context_error', contextId: this.id, error: message });
29
76
  this.log.error('Execution context initialization failed', {
@@ -33,18 +80,60 @@ export class BaseExecutionContext {
33
80
  throw err;
34
81
  }
35
82
  }
83
+ releaseInitialization(operation) {
84
+ if (this.initializationOperation === operation)
85
+ this.initializationOperation = undefined;
86
+ }
36
87
  isReady() {
37
88
  return this.ready;
38
89
  }
39
- async teardown() {
90
+ teardown() {
91
+ if (this.lifecycleState === 'tearing-down' && this.teardownOperation) {
92
+ return this.teardownOperation;
93
+ }
94
+ if (this.lifecycleState === 'torn-down')
95
+ return Promise.resolve();
96
+ this.ready = false;
97
+ this.lifecycleState = 'tearing-down';
98
+ const operation = this.performTeardown(this.initializationOperation);
99
+ this.teardownOperation = operation;
100
+ void operation.then(() => this.releaseTeardown(operation), () => this.releaseTeardown(operation));
101
+ return operation;
102
+ }
103
+ async performTeardown(pendingInitialization) {
40
104
  try {
105
+ // Runs before the first await. Subclasses close public admission here so
106
+ // work cannot slip behind an initialization this teardown must await.
107
+ this.onTeardownRequested();
108
+ if (pendingInitialization) {
109
+ try {
110
+ await pendingInitialization;
111
+ }
112
+ catch {
113
+ // Initialization errors are reported by their owner. Cleanup still runs.
114
+ }
115
+ }
41
116
  await this.doTeardown();
42
- }
43
- finally {
44
- this.ready = false;
117
+ this.lifecycleState = 'torn-down';
118
+ this.log.info('Execution context torn down', {
119
+ 'namzu.execution.context_id': this.id,
120
+ });
45
121
  this.emit({ type: 'context_teardown', contextId: this.id });
46
- this.log.info('Execution context torn down', { 'namzu.execution.context_id': this.id });
47
122
  }
123
+ catch (err) {
124
+ this.lifecycleState = 'teardown-failed';
125
+ const message = toErrorMessage(err);
126
+ this.emit({ type: 'context_error', contextId: this.id, error: message });
127
+ this.log.error('Execution context teardown failed', {
128
+ 'namzu.execution.context_id': this.id,
129
+ 'exception.message': message,
130
+ });
131
+ throw err;
132
+ }
133
+ }
134
+ releaseTeardown(operation) {
135
+ if (this.teardownOperation === operation)
136
+ this.teardownOperation = undefined;
48
137
  }
49
138
  on(listener) {
50
139
  this.listeners.push(listener);
@@ -66,5 +155,11 @@ export class BaseExecutionContext {
66
155
  }
67
156
  }
68
157
  }
158
+ /** Fence subclass-owned public admission before initialization begins. */
159
+ onInitializationStarted() { }
160
+ /** Reopen admission only after Base has proved initialization was not superseded. */
161
+ onInitializationCommitted() { }
162
+ /** Fence subclass-owned public admission synchronously when teardown is requested. */
163
+ onTeardownRequested() { }
69
164
  }
70
165
  //# sourceMappingURL=base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/execution/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAe,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAU/D,MAAM,OAAgB,oBAAoB;IAI/B,GAAG,CAAQ;IACX,KAAK,GAAG,KAAK,CAAA;IACf,SAAS,GAA6B,EAAE,CAAA;IAEhD,YAAY,GAAY;QACvB,IAAI,CAAC,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YACnC,CAAC,eAAe,CAAC,EAAE,gBAAgB;YACnC,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;SAC7C,CAAC,CAAA;IACH,CAAC;IAED,KAAK,CAAC,UAAU;QACf,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;YACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;YACjB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;YAC7F,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;YACxD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,+BAA+B,EAAE;gBAC9C,4BAA4B,EAAE,IAAI,CAAC,EAAE;gBACrC,6BAA6B,EAAE,IAAI,CAAC,WAAW;aAC/C,CAAC,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;YACnC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;YACxE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,yCAAyC,EAAE;gBACzD,4BAA4B,EAAE,IAAI,CAAC,EAAE;gBACrC,mBAAmB,EAAE,OAAO;aAC5B,CAAC,CAAA;YACF,MAAM,GAAG,CAAA;QACV,CAAC;IACF,CAAC;IAED,OAAO;QACN,OAAO,IAAI,CAAC,KAAK,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,QAAQ;QACb,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QACxB,CAAC;gBAAS,CAAC;YACV,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;YAClB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;YAC3D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,4BAA4B,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;QACxF,CAAC;IACF,CAAC;IAED,EAAE,CAAC,QAAgC;QAClC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC9B,CAAC;IAED,GAAG,CAAC,QAAgC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAC9C,IAAI,KAAK,IAAI,CAAC;YAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IAChD,CAAC;IAES,IAAI,CAAC,KAAyB;QACvC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACvC,IAAI,CAAC;gBACJ,QAAQ,CAAC,KAAK,CAAC,CAAA;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wCAAwC,EAAE;oBACxD,mBAAmB,EAAE,cAAc,CAAC,GAAG,CAAC;iBACxC,CAAC,CAAA;YACH,CAAC;QACF,CAAC;IACF,CAAC;CAID"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/execution/base.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,16 @@ export interface HostCallResult {
39
39
  readonly value?: unknown;
40
40
  readonly error?: string;
41
41
  }
42
+ /** Authority and provenance for one call from a running program. */
43
+ export interface HostCallContext {
44
+ /** Unique within this program execution. */
45
+ readonly runtimeToolCallId: string;
46
+ /**
47
+ * Revoked when the caller cancels or the program's own wall clock expires.
48
+ * A conforming host threads this into the operation it starts.
49
+ */
50
+ readonly signal: AbortSignal;
51
+ }
42
52
  /**
43
53
  * What the host will answer.
44
54
  *
@@ -47,7 +57,7 @@ export interface HostCallResult {
47
57
  * exactly the point: the program's reach is the run's reach, resolved at
48
58
  * the moment of the call rather than frozen when the program started.
49
59
  */
50
- export type HostCallHandler = (request: HostCallRequest) => Promise<HostCallResult>;
60
+ export type HostCallHandler = (request: HostCallRequest, context: HostCallContext) => Promise<HostCallResult>;
51
61
  export interface RunCodeOptions {
52
62
  /** The program. Untrusted text, from the model. */
53
63
  readonly source: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/execution/code-runtime/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,kDAAkD;AAClD,MAAM,WAAW,eAAe;IAC/B,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,cAAc,CAAC,CAAA;AAEnF,MAAM,WAAW,cAAc;IAC9B,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,2EAA2E;IAC3E,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;IACxC,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAA;IACpC,0EAA0E;IAC1E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B;;;;;;OAMG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAC7B;AAED,MAAM,MAAM,cAAc,GACvB;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAC1D;IAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GAChC;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,CAAA;AAEnC,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAA;IAChC,8CAA8C;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;IACjC,gEAAgE;IAChE,QAAQ,CAAC,KAAK,EAAE,SAAS;QACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAA;KACpB,EAAE,CAAA;CACH;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,GAAG,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;CACpD;AAED,gEAAgE;AAChE,qBAAa,mBAAoB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAA;gBAElD,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE;CAOjE"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/execution/code-runtime/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,kDAAkD;AAClD,MAAM,WAAW,eAAe;IAC/B,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC/B,4CAA4C;IAC5C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAClC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAC5B;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GAAG,CAC7B,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,eAAe,KACpB,OAAO,CAAC,cAAc,CAAC,CAAA;AAE5B,MAAM,WAAW,cAAc;IAC9B,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,2EAA2E;IAC3E,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;IACxC,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAA;IACpC,0EAA0E;IAC1E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B;;;;;;OAMG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAC7B;AAED,MAAM,MAAM,cAAc,GACvB;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAC1D;IAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GAChC;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,CAAA;AAEnC,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAA;IAChC,8CAA8C;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;IACjC,gEAAgE;IAChE,QAAQ,CAAC,KAAK,EAAE,SAAS;QACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAA;KACpB,EAAE,CAAA;CACH;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,GAAG,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;CACpD;AAED,gEAAgE;AAChE,qBAAa,mBAAoB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAA;gBAElD,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE;CAOjE"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/execution/code-runtime/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AA2EH,gEAAgE;AAChE,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACpC,OAAO,CAA8C;IAE9D,YAAY,OAAqD;QAChE,KAAK,CACJ,uBAAuB,OAAO,CAAC,IAAI,2CAA2C,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAClJ,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAA;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,CAAC;CACD"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/execution/code-runtime/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAyFH,gEAAgE;AAChE,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACpC,OAAO,CAA8C;IAE9D,YAAY,OAAqD;QAChE,KAAK,CACJ,uBAAuB,OAAO,CAAC,IAAI,2CAA2C,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAClJ,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAA;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,CAAC;CACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/execution/code-runtime/worker.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,KAAK,aAAa,EAClB,KAAK,WAAW,EAEhB,KAAK,cAAc,EACnB,MAAM,YAAY,CAAA;AA2FnB,qBAAa,iBAAkB,YAAW,WAAW;IACpD,QAAQ,CAAC,EAAE,oBAAmB;IAExB,GAAG,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CAoK1D"}
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/execution/code-runtime/worker.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,KAAK,aAAa,EAClB,KAAK,WAAW,EAEhB,KAAK,cAAc,EACnB,MAAM,YAAY,CAAA;AA2FnB,qBAAa,iBAAkB,YAAW,WAAW;IACpD,QAAQ,CAAC,EAAE,oBAAmB;IAExB,GAAG,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CAmO1D"}
@@ -94,6 +94,16 @@ export class WorkerCodeRuntime {
94
94
  const calls = [];
95
95
  let output = '';
96
96
  let truncated = false;
97
+ // A withdrawn caller owns admission. Do not start an isolate merely to
98
+ // discover the signal was already aborted after construction.
99
+ if (options.signal?.aborted) {
100
+ return {
101
+ outcome: { status: 'cancelled' },
102
+ output,
103
+ outputTruncated: truncated,
104
+ calls,
105
+ };
106
+ }
97
107
  const appendOutput = (lines) => {
98
108
  for (const line of lines) {
99
109
  if (truncated)
@@ -131,6 +141,9 @@ export class WorkerCodeRuntime {
131
141
  });
132
142
  return await new Promise((resolve) => {
133
143
  let settled = false;
144
+ let terminal;
145
+ const inFlight = new Set();
146
+ const operation = new AbortController();
134
147
  const finish = (result) => {
135
148
  // The Promise already ignores a second `resolve`, so removing
136
149
  // this guard changes no result — a mutation removing it
@@ -142,16 +155,40 @@ export class WorkerCodeRuntime {
142
155
  if (settled)
143
156
  return;
144
157
  settled = true;
158
+ // Terminating the worker only stops the program. Host work already
159
+ // admitted through onHostCall lives outside it, so revoke the signal
160
+ // that was handed to every such call before reporting settlement.
161
+ if (!operation.signal.aborted) {
162
+ operation.abort(new Error(`Code runtime settled with status ${result.outcome.status}`));
163
+ }
145
164
  clearTimeout(deadline);
146
165
  options.signal?.removeEventListener('abort', onAbort);
147
166
  void worker.terminate();
148
- resolve(result);
167
+ // A late, non-cooperative host call must not mutate a result the
168
+ // caller already received.
169
+ resolve({ ...result, calls: [...calls] });
170
+ };
171
+ const finishTerminalWhenHostCallsSettle = () => {
172
+ if (terminal && inFlight.size === 0)
173
+ finish(terminal);
149
174
  };
150
175
  const deadline = setTimeout(() => {
151
- finish({ outcome: { status: 'timed-out' }, output, outputTruncated: truncated, calls });
176
+ operation.abort(new Error(`Code runtime exceeded ${options.timeoutMs}ms`));
177
+ finish({
178
+ outcome: { status: 'timed-out' },
179
+ output,
180
+ outputTruncated: truncated,
181
+ calls,
182
+ });
152
183
  }, options.timeoutMs);
153
184
  const onAbort = () => {
154
- finish({ outcome: { status: 'cancelled' }, output, outputTruncated: truncated, calls });
185
+ operation.abort(options.signal?.reason);
186
+ finish({
187
+ outcome: { status: 'cancelled' },
188
+ output,
189
+ outputTruncated: truncated,
190
+ calls,
191
+ });
155
192
  };
156
193
  options.signal?.addEventListener('abort', onAbort, { once: true });
157
194
  if (options.signal?.aborted) {
@@ -171,13 +208,19 @@ export class WorkerCodeRuntime {
171
208
  kind: 'call-result',
172
209
  id,
173
210
  ok: false,
174
- error: new HostCallDeniedError({ name, allowed: options.allowedCalls }).message,
211
+ error: new HostCallDeniedError({
212
+ name,
213
+ allowed: options.allowedCalls,
214
+ }).message,
175
215
  });
176
216
  return;
177
217
  }
178
- void options
179
- .onHostCall({ name, input: message.input })
218
+ const runtimeToolCallId = String(id);
219
+ const hostCall = Promise.resolve()
220
+ .then(() => options.onHostCall({ name, input: message.input }, { runtimeToolCallId, signal: operation.signal }))
180
221
  .then((result) => {
222
+ if (settled)
223
+ return;
181
224
  calls.push({ name, ok: result.ok });
182
225
  worker.postMessage({
183
226
  kind: 'call-result',
@@ -188,6 +231,8 @@ export class WorkerCodeRuntime {
188
231
  });
189
232
  })
190
233
  .catch((err) => {
234
+ if (settled)
235
+ return;
191
236
  calls.push({ name, ok: false });
192
237
  worker.postMessage({
193
238
  kind: 'call-result',
@@ -195,7 +240,12 @@ export class WorkerCodeRuntime {
195
240
  ok: false,
196
241
  error: err instanceof Error ? err.message : String(err),
197
242
  });
243
+ })
244
+ .finally(() => {
245
+ inFlight.delete(hostCall);
246
+ finishTerminalWhenHostCallsSettle();
198
247
  });
248
+ inFlight.add(hostCall);
199
249
  return;
200
250
  }
201
251
  if (message.kind === 'print') {
@@ -203,12 +253,17 @@ export class WorkerCodeRuntime {
203
253
  return;
204
254
  }
205
255
  if (message.kind === 'done') {
206
- finish({
256
+ // A program may start a host call without awaiting it. The worker
257
+ // declaring its JavaScript body complete is not evidence that the
258
+ // effect it started is complete, so keep the runtime open until the
259
+ // already-admitted host calls settle (or the deadline revokes them).
260
+ terminal = {
207
261
  outcome: { status: 'completed', result: message.result },
208
262
  output,
209
263
  outputTruncated: truncated,
210
264
  calls,
211
- });
265
+ };
266
+ finishTerminalWhenHostCallsSettle();
212
267
  return;
213
268
  }
214
269
  if (message.kind === 'error') {
@@ -236,7 +291,10 @@ export class WorkerCodeRuntime {
236
291
  // `error` message — a hard crash, or a program that called
237
292
  // `process.exit` through something we failed to withhold.
238
293
  finish({
239
- outcome: { status: 'failed', error: `The program exited with code ${code}.` },
294
+ outcome: {
295
+ status: 'failed',
296
+ error: `The program exited with code ${code}.`,
297
+ },
240
298
  output,
241
299
  outputTruncated: truncated,
242
300
  calls,
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/execution/code-runtime/worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/execution/code-runtime/worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export declare class CommandCancellationUnsupportedError extends Error {
2
+ readonly contextId: string;
3
+ readonly code: "command_cancellation_unsupported";
4
+ constructor(contextId: string);
5
+ }
6
+ export declare class RemoteExecutionBusyError extends Error {
7
+ readonly contextId: string;
8
+ readonly activeCommandCount: number;
9
+ readonly code: "remote_execution_busy";
10
+ constructor(contextId: string, activeCommandCount: number);
11
+ }
12
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/execution/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,mCAAoC,SAAQ,KAAK;IAGjD,QAAQ,CAAC,SAAS,EAAE,MAAM;IAFtC,QAAQ,CAAC,IAAI,EAAG,kCAAkC,CAAS;gBAEtC,SAAS,EAAE,MAAM;CAMtC;AAED,qBAAa,wBAAyB,SAAQ,KAAK;IAIjD,QAAQ,CAAC,SAAS,EAAE,MAAM;IAC1B,QAAQ,CAAC,kBAAkB,EAAE,MAAM;IAJpC,QAAQ,CAAC,IAAI,EAAG,uBAAuB,CAAS;gBAGtC,SAAS,EAAE,MAAM,EACjB,kBAAkB,EAAE,MAAM;CAOpC"}
@@ -0,0 +1,21 @@
1
+ export class CommandCancellationUnsupportedError extends Error {
2
+ contextId;
3
+ code = 'command_cancellation_unsupported';
4
+ constructor(contextId) {
5
+ super(`Remote execution context "${contextId}" cannot accept command cancellation because its generic executor has no reservation and terminal-acknowledgement protocol. No remote command was started. Use the Sandbox.exec() contract for cancellable remote command execution.`);
6
+ this.contextId = contextId;
7
+ this.name = 'CommandCancellationUnsupportedError';
8
+ }
9
+ }
10
+ export class RemoteExecutionBusyError extends Error {
11
+ contextId;
12
+ activeCommandCount;
13
+ code = 'remote_execution_busy';
14
+ constructor(contextId, activeCommandCount) {
15
+ super(`Remote execution context "${contextId}" still owns ${activeCommandCount} active command${activeCommandCount === 1 ? '' : 's'}. Disconnect or teardown was refused; wait for the command${activeCommandCount === 1 ? '' : 's'} to settle, then retry.`);
16
+ this.contextId = contextId;
17
+ this.activeCommandCount = activeCommandCount;
18
+ this.name = 'RemoteExecutionBusyError';
19
+ }
20
+ }
21
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/execution/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,mCAAoC,SAAQ,KAAK;IAGxC;IAFZ,IAAI,GAAG,kCAA2C,CAAA;IAE3D,YAAqB,SAAiB;QACrC,KAAK,CACJ,6BAA6B,SAAS,sOAAsO,CAC5Q,CAAA;QAHmB,cAAS,GAAT,SAAS,CAAQ;QAIrC,IAAI,CAAC,IAAI,GAAG,qCAAqC,CAAA;IAClD,CAAC;CACD;AAED,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IAIxC;IACA;IAJD,IAAI,GAAG,uBAAgC,CAAA;IAEhD,YACU,SAAiB,EACjB,kBAA0B;QAEnC,KAAK,CACJ,6BAA6B,SAAS,gBAAgB,kBAAkB,kBAAkB,kBAAkB,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,6DAA6D,kBAAkB,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,yBAAyB,CACtP,CAAA;QALQ,cAAS,GAAT,SAAS,CAAQ;QACjB,uBAAkB,GAAlB,kBAAkB,CAAQ;QAKnC,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAA;IACvC,CAAC;CACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/execution/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,EAAE,sBAAsB,EAAE,KAAK,6BAA6B,EAAE,MAAM,aAAa,CAAA;AACxF,OAAO,EAAE,qBAAqB,EAAE,KAAK,4BAA4B,EAAE,MAAM,YAAY,CAAA;AACrF,OAAO,EAAE,sBAAsB,EAAE,KAAK,6BAA6B,EAAE,MAAM,aAAa,CAAA;AAExF,qBAAa,uBAAuB;IACnC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,sBAAsB,GAAG,oBAAoB;IAkCnE,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,4BAA4B,GAAG,qBAAqB;IAIhF,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,6BAA6B,GAAG,sBAAsB;IAInF,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,6BAA6B,GAAG,sBAAsB;CAGnF"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/execution/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,EAAE,sBAAsB,EAAE,KAAK,6BAA6B,EAAE,MAAM,aAAa,CAAA;AACxF,OAAO,EAAE,qBAAqB,EAAE,KAAK,4BAA4B,EAAE,MAAM,YAAY,CAAA;AACrF,OAAO,EAAE,sBAAsB,EAAE,KAAK,6BAA6B,EAAE,MAAM,aAAa,CAAA;AAExF,qBAAa,uBAAuB;IACnC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,sBAAsB,GAAG,oBAAoB;IAmCnE,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,4BAA4B,GAAG,qBAAqB;IAIhF,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,6BAA6B,GAAG,sBAAsB;IAInF,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,6BAA6B,GAAG,sBAAsB;CAGnF"}
@@ -12,6 +12,7 @@ export class ExecutionContextFactory {
12
12
  envVars: config.envVars,
13
13
  capabilities: config.capabilities,
14
14
  shell: config.shell,
15
+ maxOutputBytes: config.maxOutputBytes,
15
16
  });
16
17
  case 'remote':
17
18
  return ExecutionContextFactory.createRemote({
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/execution/factory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAsC,MAAM,aAAa,CAAA;AACxF,OAAO,EAAE,qBAAqB,EAAqC,MAAM,YAAY,CAAA;AACrF,OAAO,EAAE,sBAAsB,EAAsC,MAAM,aAAa,CAAA;AAExF,MAAM,OAAO,uBAAuB;IACnC,MAAM,CAAC,MAAM,CAAC,MAA8B;QAC3C,QAAQ,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5B,KAAK,OAAO;gBACX,OAAO,uBAAuB,CAAC,WAAW,CAAC;oBAC1C,EAAE,EAAE,MAAM,CAAC,EAAE;oBACb,GAAG,EAAE,MAAM,CAAC,GAAG;oBACf,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,KAAK,EAAE,MAAM,CAAC,KAAK;iBACnB,CAAC,CAAA;YAEH,KAAK,QAAQ;gBACZ,OAAO,uBAAuB,CAAC,YAAY,CAAC;oBAC3C,EAAE,EAAE,MAAM,CAAC,EAAE;oBACb,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,YAAY,EAAE,MAAM,CAAC,YAAY;iBACjC,CAAC,CAAA;YAEH,KAAK,QAAQ;gBACZ,OAAO,uBAAuB,CAAC,YAAY,CAAC;oBAC3C,EAAE,EAAE,MAAM,CAAC,EAAE;oBACb,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,eAAe,EAAE,MAAM,CAAC,eAAe;iBACvC,CAAC,CAAA;YAEH,OAAO,CAAC,CAAC,CAAC;gBACT,MAAM,WAAW,GAAU,MAAM,CAAA;gBACjC,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;YACnF,CAAC;QACF,CAAC;IACF,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,OAAqC;QACvD,OAAO,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAA;IAC1C,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,OAAsC;QACzD,OAAO,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAA;IAC3C,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,OAAsC;QACzD,OAAO,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAA;IAC3C,CAAC;CACD"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/execution/factory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAsC,MAAM,aAAa,CAAA;AACxF,OAAO,EAAE,qBAAqB,EAAqC,MAAM,YAAY,CAAA;AACrF,OAAO,EAAE,sBAAsB,EAAsC,MAAM,aAAa,CAAA;AAExF,MAAM,OAAO,uBAAuB;IACnC,MAAM,CAAC,MAAM,CAAC,MAA8B;QAC3C,QAAQ,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5B,KAAK,OAAO;gBACX,OAAO,uBAAuB,CAAC,WAAW,CAAC;oBAC1C,EAAE,EAAE,MAAM,CAAC,EAAE;oBACb,GAAG,EAAE,MAAM,CAAC,GAAG;oBACf,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,cAAc,EAAE,MAAM,CAAC,cAAc;iBACrC,CAAC,CAAA;YAEH,KAAK,QAAQ;gBACZ,OAAO,uBAAuB,CAAC,YAAY,CAAC;oBAC3C,EAAE,EAAE,MAAM,CAAC,EAAE;oBACb,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,YAAY,EAAE,MAAM,CAAC,YAAY;iBACjC,CAAC,CAAA;YAEH,KAAK,QAAQ;gBACZ,OAAO,uBAAuB,CAAC,YAAY,CAAC;oBAC3C,EAAE,EAAE,MAAM,CAAC,EAAE;oBACb,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,eAAe,EAAE,MAAM,CAAC,eAAe;iBACvC,CAAC,CAAA;YAEH,OAAO,CAAC,CAAC,CAAC;gBACT,MAAM,WAAW,GAAU,MAAM,CAAA;gBACjC,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;YACnF,CAAC;QACF,CAAC;IACF,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,OAAqC;QACvD,OAAO,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAA;IAC1C,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,OAAsC;QACzD,OAAO,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAA;IAC3C,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,OAAsC;QACzD,OAAO,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAA;IAC3C,CAAC;CACD"}
@@ -11,6 +11,7 @@ export interface HybridExecutionContextOptions {
11
11
  envVars?: Record<string, string>;
12
12
  capabilities?: ExecutionCapability[];
13
13
  shell?: string;
14
+ maxOutputBytes?: number;
14
15
  };
15
16
  remotes: RemoteTarget[];
16
17
  routingStrategy?: ExecutionRoutingStrategy;
@@ -24,8 +25,12 @@ export declare class HybridExecutionContext extends BaseExecutionContext impleme
24
25
  private remoteTargets;
25
26
  private routingStrategy;
26
27
  private roundRobinIndex;
28
+ private admissionsOpen;
27
29
  constructor(options: HybridExecutionContextOptions);
28
30
  protected doInitialize(): Promise<void>;
31
+ protected onInitializationStarted(): void;
32
+ protected onInitializationCommitted(): void;
33
+ protected onTeardownRequested(): void;
29
34
  protected doTeardown(): Promise<void>;
30
35
  getLocal(): LocalExecutionContext;
31
36
  getRemote(remoteId: string): RemoteExecutionContext | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"hybrid.d.ts","sourceRoot":"","sources":["../../src/execution/hybrid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,eAAe,EACf,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,4BAA4B,EAC5B,YAAY,EACZ,MAAM,6BAA6B,CAAA;AACpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEpD,MAAM,WAAW,6BAA6B;IAC7C,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE;QACN,GAAG,EAAE,MAAM,CAAA;QACX,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAChC,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAA;QACpC,KAAK,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;IACD,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,eAAe,CAAC,EAAE,wBAAwB,CAAA;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAA;CACZ;AAED,qBAAa,sBAAuB,SAAQ,oBAAqB,YAAW,eAAe;IAC1F,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAW;IAErD,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,UAAU,CAAiD;IACnE,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,eAAe,CAAI;gBAEf,OAAO,EAAE,6BAA6B;cA8BlC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;cAgB7B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3C,QAAQ,IAAI,qBAAqB;IAIjC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS;IAI/D,UAAU,IAAI,sBAAsB,EAAE;IAItC,kBAAkB,IAAI,wBAAwB;IAI9C,kBAAkB,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI;IAKtD,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQlC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrC,cAAc,CACnB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,cAAc,GACtB,OAAO,CAAC,aAAa,CAAC;IAwCzB,QAAQ,IAAI,4BAA4B;IAcxC,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,oBAAoB;CAS5B"}
1
+ {"version":3,"file":"hybrid.d.ts","sourceRoot":"","sources":["../../src/execution/hybrid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,eAAe,EACf,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,4BAA4B,EAC5B,YAAY,EACZ,MAAM,6BAA6B,CAAA;AACpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEpD,MAAM,WAAW,6BAA6B;IAC7C,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE;QACN,GAAG,EAAE,MAAM,CAAA;QACX,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAChC,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAA;QACpC,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,cAAc,CAAC,EAAE,MAAM,CAAA;KACvB,CAAA;IACD,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,eAAe,CAAC,EAAE,wBAAwB,CAAA;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAA;CACZ;AAED,qBAAa,sBAAuB,SAAQ,oBAAqB,YAAW,eAAe;IAC1F,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAW;IAErD,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,UAAU,CAAiD;IACnE,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,eAAe,CAAI;IAC3B,OAAO,CAAC,cAAc,CAAO;gBAEjB,OAAO,EAAE,6BAA6B;cA+BlC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;cAgB1B,uBAAuB,IAAI,IAAI;cAI/B,yBAAyB,IAAI,IAAI;cAIjC,mBAAmB,IAAI,IAAI;cAI9B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAa3C,QAAQ,IAAI,qBAAqB;IAIjC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS;IAI/D,UAAU,IAAI,sBAAsB,EAAE;IAItC,kBAAkB,IAAI,wBAAwB;IAI9C,kBAAkB,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI;IAKtD,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQlC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAarC,cAAc,CACnB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,cAAc,GACtB,OAAO,CAAC,aAAa,CAAC;IA2CzB,QAAQ,IAAI,4BAA4B;IAkBxC,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,oBAAoB;CAS5B"}
@@ -9,6 +9,7 @@ export class HybridExecutionContext extends BaseExecutionContext {
9
9
  remoteTargets;
10
10
  routingStrategy;
11
11
  roundRobinIndex = 0;
12
+ admissionsOpen = true;
12
13
  constructor(options) {
13
14
  super(options.log);
14
15
  this.id = options.id;
@@ -21,6 +22,7 @@ export class HybridExecutionContext extends BaseExecutionContext {
21
22
  envVars: options.local.envVars,
22
23
  capabilities: options.local.capabilities,
23
24
  shell: options.local.shell,
25
+ maxOutputBytes: options.local.maxOutputBytes,
24
26
  log: options.log,
25
27
  });
26
28
  this.localCtx.on((event) => this.emit(event));
@@ -48,13 +50,24 @@ export class HybridExecutionContext extends BaseExecutionContext {
48
50
  'namzu.execution.routing_strategy': this.routingStrategy,
49
51
  });
50
52
  }
53
+ onInitializationStarted() {
54
+ this.admissionsOpen = false;
55
+ }
56
+ onInitializationCommitted() {
57
+ this.admissionsOpen = true;
58
+ }
59
+ onTeardownRequested() {
60
+ this.admissionsOpen = false;
61
+ }
51
62
  async doTeardown() {
52
- const teardownPromises = [];
53
- for (const remote of this.remoteCtxs.values()) {
54
- teardownPromises.push(remote.teardown());
63
+ const contexts = [this.localCtx, ...this.remoteCtxs.values()];
64
+ const results = await Promise.allSettled(contexts.map((context) => context.teardown()));
65
+ const failures = results.flatMap((result) => result.status === 'rejected' ? [result.reason] : []);
66
+ if (failures.length === 1)
67
+ throw failures[0];
68
+ if (failures.length > 1) {
69
+ throw new AggregateError(failures, 'Multiple hybrid execution contexts failed to tear down');
55
70
  }
56
- await Promise.allSettled(teardownPromises);
57
- await this.localCtx.teardown();
58
71
  }
59
72
  getLocal() {
60
73
  return this.localCtx;
@@ -80,21 +93,25 @@ export class HybridExecutionContext extends BaseExecutionContext {
80
93
  await Promise.all(promises);
81
94
  }
82
95
  async disconnectAllRemotes() {
83
- const promises = [];
84
- for (const remote of this.remoteCtxs.values()) {
85
- promises.push(remote.disconnect());
96
+ const results = await Promise.allSettled(Array.from(this.remoteCtxs.values(), (remote) => remote.disconnect()));
97
+ const failures = results.flatMap((result) => result.status === 'rejected' ? [result.reason] : []);
98
+ if (failures.length === 1)
99
+ throw failures[0];
100
+ if (failures.length > 1) {
101
+ throw new AggregateError(failures, 'Multiple remote execution contexts failed to disconnect');
86
102
  }
87
- await Promise.allSettled(promises);
88
103
  }
89
104
  async executeCommand(command, args = [], options) {
105
+ if (!this.admissionsOpen) {
106
+ throw new Error(`Hybrid execution context "${this.id}" is initializing, tearing down, or torn down. Wait for initialization to commit before executing another command.`);
107
+ }
90
108
  switch (this.routingStrategy) {
91
109
  case 'local-first':
92
110
  return this.localCtx.executeCommand(command, args, options);
93
111
  case 'remote-first': {
94
112
  const connectedRemote = this.getFirstConnectedRemote();
95
113
  if (connectedRemote) {
96
- const fullCommand = args.length > 0 ? `${command} ${args.join(' ')}` : command;
97
- return connectedRemote.executeRemote(fullCommand, options);
114
+ return connectedRemote.executeCommand(command, args, options);
98
115
  }
99
116
  return this.localCtx.executeCommand(command, args, options);
100
117
  }
@@ -112,8 +129,7 @@ export class HybridExecutionContext extends BaseExecutionContext {
112
129
  if (target === this.localCtx) {
113
130
  return this.localCtx.executeCommand(command, args, options);
114
131
  }
115
- const fullCommand = args.length > 0 ? `${command} ${args.join(' ')}` : command;
116
- return target.executeRemote(fullCommand, options);
132
+ return target.executeCommand(command, args, options);
117
133
  }
118
134
  default: {
119
135
  const _exhaustive = this.routingStrategy;
@@ -122,13 +138,17 @@ export class HybridExecutionContext extends BaseExecutionContext {
122
138
  }
123
139
  }
124
140
  toConfig() {
141
+ const local = this.localCtx.toConfig();
125
142
  return {
126
143
  id: this.id,
127
144
  environment: 'hybrid',
128
145
  local: {
129
- cwd: this.localCtx.getCwd(),
130
- fsAccess: this.localCtx.hasFsAccess(),
131
- envVars: this.localCtx.getEnvVars(),
146
+ cwd: local.cwd,
147
+ fsAccess: local.fsAccess,
148
+ envVars: local.envVars,
149
+ capabilities: local.capabilities,
150
+ shell: local.shell,
151
+ maxOutputBytes: local.maxOutputBytes,
132
152
  },
133
153
  remotes: this.remoteTargets.map((t) => ({ ...t })),
134
154
  routingStrategy: this.routingStrategy,