@namzu/sdk 32.0.0 → 33.1.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 (305) hide show
  1. package/CHANGELOG.md +157 -0
  2. package/dist/authorization/gate.d.ts +1 -1
  3. package/dist/authorization/gate.js +1 -1
  4. package/dist/bridge/a2a/mapper.d.ts.map +1 -1
  5. package/dist/bridge/a2a/mapper.js +13 -0
  6. package/dist/bridge/a2a/mapper.js.map +1 -1
  7. package/dist/bridge/sse/mapper.d.ts.map +1 -1
  8. package/dist/bridge/sse/mapper.js +3 -0
  9. package/dist/bridge/sse/mapper.js.map +1 -1
  10. package/dist/connector/index.d.ts +1 -1
  11. package/dist/connector/index.d.ts.map +1 -1
  12. package/dist/connector/index.js +1 -1
  13. package/dist/connector/index.js.map +1 -1
  14. package/dist/connector/mcp/adapter.d.ts.map +1 -1
  15. package/dist/connector/mcp/adapter.js +71 -16
  16. package/dist/connector/mcp/adapter.js.map +1 -1
  17. package/dist/connector/mcp/client.d.ts.map +1 -1
  18. package/dist/connector/mcp/client.js +3 -2
  19. package/dist/connector/mcp/client.js.map +1 -1
  20. package/dist/connector/mcp/http-redirect.d.ts +17 -0
  21. package/dist/connector/mcp/http-redirect.d.ts.map +1 -0
  22. package/dist/connector/mcp/http-redirect.js +31 -0
  23. package/dist/connector/mcp/http-redirect.js.map +1 -0
  24. package/dist/connector/mcp/http-sse.d.ts.map +1 -1
  25. package/dist/connector/mcp/http-sse.js +5 -0
  26. package/dist/connector/mcp/http-sse.js.map +1 -1
  27. package/dist/connector/mcp/image-admission.d.ts +16 -0
  28. package/dist/connector/mcp/image-admission.d.ts.map +1 -0
  29. package/dist/connector/mcp/image-admission.js +288 -0
  30. package/dist/connector/mcp/image-admission.js.map +1 -0
  31. package/dist/connector/mcp/stdio.d.ts +13 -0
  32. package/dist/connector/mcp/stdio.d.ts.map +1 -1
  33. package/dist/connector/mcp/stdio.js +66 -23
  34. package/dist/connector/mcp/stdio.js.map +1 -1
  35. package/dist/connector/mcp/streamable-http.d.ts.map +1 -1
  36. package/dist/connector/mcp/streamable-http.js +3 -0
  37. package/dist/connector/mcp/streamable-http.js.map +1 -1
  38. package/dist/constants/tools/index.js +1 -1
  39. package/dist/constants/tools/index.js.map +1 -1
  40. package/dist/execution/base.d.ts +13 -0
  41. package/dist/execution/base.d.ts.map +1 -1
  42. package/dist/execution/base.js +103 -8
  43. package/dist/execution/base.js.map +1 -1
  44. package/dist/execution/errors.d.ts +12 -0
  45. package/dist/execution/errors.d.ts.map +1 -0
  46. package/dist/execution/errors.js +21 -0
  47. package/dist/execution/errors.js.map +1 -0
  48. package/dist/execution/factory.d.ts.map +1 -1
  49. package/dist/execution/factory.js +1 -0
  50. package/dist/execution/factory.js.map +1 -1
  51. package/dist/execution/hybrid.d.ts +5 -0
  52. package/dist/execution/hybrid.d.ts.map +1 -1
  53. package/dist/execution/hybrid.js +36 -16
  54. package/dist/execution/hybrid.js.map +1 -1
  55. package/dist/execution/index.d.ts +1 -0
  56. package/dist/execution/index.d.ts.map +1 -1
  57. package/dist/execution/index.js +1 -0
  58. package/dist/execution/index.js.map +1 -1
  59. package/dist/execution/local.d.ts +13 -0
  60. package/dist/execution/local.d.ts.map +1 -1
  61. package/dist/execution/local.js +145 -19
  62. package/dist/execution/local.js.map +1 -1
  63. package/dist/execution/output.d.ts +27 -0
  64. package/dist/execution/output.d.ts.map +1 -0
  65. package/dist/execution/output.js +105 -0
  66. package/dist/execution/output.js.map +1 -0
  67. package/dist/execution/remote.d.ts +26 -2
  68. package/dist/execution/remote.d.ts.map +1 -1
  69. package/dist/execution/remote.js +86 -15
  70. package/dist/execution/remote.js.map +1 -1
  71. package/dist/plugin/lifecycle.d.ts.map +1 -1
  72. package/dist/plugin/lifecycle.js +9 -3
  73. package/dist/plugin/lifecycle.js.map +1 -1
  74. package/dist/process/kill-tree.d.ts +11 -13
  75. package/dist/process/kill-tree.d.ts.map +1 -1
  76. package/dist/process/kill-tree.js +11 -13
  77. package/dist/process/kill-tree.js.map +1 -1
  78. package/dist/provider/capabilities.d.ts +2 -0
  79. package/dist/provider/capabilities.d.ts.map +1 -1
  80. package/dist/provider/capabilities.js +6 -0
  81. package/dist/provider/capabilities.js.map +1 -1
  82. package/dist/provider/fallback.d.ts.map +1 -1
  83. package/dist/provider/fallback.js +31 -0
  84. package/dist/provider/fallback.js.map +1 -1
  85. package/dist/provider/idle-timeout.d.ts.map +1 -1
  86. package/dist/provider/idle-timeout.js +5 -0
  87. package/dist/provider/idle-timeout.js.map +1 -1
  88. package/dist/provider/retry.d.ts.map +1 -1
  89. package/dist/provider/retry.js +5 -0
  90. package/dist/provider/retry.js.map +1 -1
  91. package/dist/public-runtime.d.ts +2 -2
  92. package/dist/public-runtime.d.ts.map +1 -1
  93. package/dist/public-runtime.js +2 -2
  94. package/dist/public-runtime.js.map +1 -1
  95. package/dist/registry/tool/execute.d.ts +7 -1
  96. package/dist/registry/tool/execute.d.ts.map +1 -1
  97. package/dist/registry/tool/execute.js +201 -54
  98. package/dist/registry/tool/execute.js.map +1 -1
  99. package/dist/run/command-gate.d.ts.map +1 -1
  100. package/dist/run/command-gate.js +11 -0
  101. package/dist/run/command-gate.js.map +1 -1
  102. package/dist/run/workspace-fingerprint.d.ts +4 -4
  103. package/dist/run/workspace-fingerprint.d.ts.map +1 -1
  104. package/dist/run/workspace-fingerprint.js +6 -4
  105. package/dist/run/workspace-fingerprint.js.map +1 -1
  106. package/dist/runtime/bidi/index.d.ts +1 -1
  107. package/dist/runtime/bidi/index.d.ts.map +1 -1
  108. package/dist/runtime/bidi/index.js +1 -1
  109. package/dist/runtime/bidi/index.js.map +1 -1
  110. package/dist/runtime/bidi/session.d.ts +19 -0
  111. package/dist/runtime/bidi/session.d.ts.map +1 -1
  112. package/dist/runtime/bidi/session.js +150 -26
  113. package/dist/runtime/bidi/session.js.map +1 -1
  114. package/dist/runtime/query/executor.d.ts +43 -1
  115. package/dist/runtime/query/executor.d.ts.map +1 -1
  116. package/dist/runtime/query/executor.js +626 -161
  117. package/dist/runtime/query/executor.js.map +1 -1
  118. package/dist/runtime/query/index.d.ts +3 -1
  119. package/dist/runtime/query/index.d.ts.map +1 -1
  120. package/dist/runtime/query/index.js +48 -4
  121. package/dist/runtime/query/index.js.map +1 -1
  122. package/dist/runtime/query/iteration/index.d.ts +10 -0
  123. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  124. package/dist/runtime/query/iteration/index.js +67 -0
  125. package/dist/runtime/query/iteration/index.js.map +1 -1
  126. package/dist/runtime/query/iteration/phases/context.d.ts +5 -0
  127. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  128. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  129. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  130. package/dist/runtime/query/iteration/phases/tool-review.js +84 -22
  131. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  132. package/dist/runtime/query/request-rich-content.d.ts.map +1 -1
  133. package/dist/runtime/query/request-rich-content.js +33 -13
  134. package/dist/runtime/query/request-rich-content.js.map +1 -1
  135. package/dist/runtime/query/result.d.ts.map +1 -1
  136. package/dist/runtime/query/result.js +25 -22
  137. package/dist/runtime/query/result.js.map +1 -1
  138. package/dist/runtime/query/resume-pending.d.ts +5 -1
  139. package/dist/runtime/query/resume-pending.d.ts.map +1 -1
  140. package/dist/runtime/query/resume-pending.js +66 -1
  141. package/dist/runtime/query/resume-pending.js.map +1 -1
  142. package/dist/runtime/query/tool-output-budget.d.ts.map +1 -1
  143. package/dist/runtime/query/tool-output-budget.js +45 -16
  144. package/dist/runtime/query/tool-output-budget.js.map +1 -1
  145. package/dist/runtime/query/tooling.d.ts +6 -0
  146. package/dist/runtime/query/tooling.d.ts.map +1 -1
  147. package/dist/runtime/query/tooling.js +4 -0
  148. package/dist/runtime/query/tooling.js.map +1 -1
  149. package/dist/sandbox/provider/local.d.ts.map +1 -1
  150. package/dist/sandbox/provider/local.js +193 -41
  151. package/dist/sandbox/provider/local.js.map +1 -1
  152. package/dist/scheduler/delegating.d.ts +2 -1
  153. package/dist/scheduler/delegating.d.ts.map +1 -1
  154. package/dist/scheduler/delegating.js +6 -5
  155. package/dist/scheduler/delegating.js.map +1 -1
  156. package/dist/scheduler/local.d.ts +2 -1
  157. package/dist/scheduler/local.d.ts.map +1 -1
  158. package/dist/scheduler/local.js +2 -2
  159. package/dist/scheduler/local.js.map +1 -1
  160. package/dist/session/workspace/driver.d.ts +12 -4
  161. package/dist/session/workspace/driver.d.ts.map +1 -1
  162. package/dist/session/workspace/git-worktree.d.ts +17 -3
  163. package/dist/session/workspace/git-worktree.d.ts.map +1 -1
  164. package/dist/session/workspace/git-worktree.js +153 -34
  165. package/dist/session/workspace/git-worktree.js.map +1 -1
  166. package/dist/skills/registry.d.ts +15 -0
  167. package/dist/skills/registry.d.ts.map +1 -1
  168. package/dist/skills/registry.js +33 -0
  169. package/dist/skills/registry.js.map +1 -1
  170. package/dist/tools/builtins/computer-use.d.ts.map +1 -1
  171. package/dist/tools/builtins/computer-use.js +76 -2
  172. package/dist/tools/builtins/computer-use.js.map +1 -1
  173. package/dist/tools/builtins/run-code.d.ts.map +1 -1
  174. package/dist/tools/builtins/run-code.js +9 -11
  175. package/dist/tools/builtins/run-code.js.map +1 -1
  176. package/dist/tools/builtins/skill.d.ts +2 -1
  177. package/dist/tools/builtins/skill.d.ts.map +1 -1
  178. package/dist/tools/builtins/skill.js +250 -6
  179. package/dist/tools/builtins/skill.js.map +1 -1
  180. package/dist/tools/coordinator/agent.d.ts.map +1 -1
  181. package/dist/tools/coordinator/agent.js +100 -30
  182. package/dist/tools/coordinator/agent.js.map +1 -1
  183. package/dist/types/agent/manager.d.ts +1 -1
  184. package/dist/types/agent/manager.d.ts.map +1 -1
  185. package/dist/types/agent/scheduler.d.ts +10 -1
  186. package/dist/types/agent/scheduler.d.ts.map +1 -1
  187. package/dist/types/authorization/index.d.ts +12 -12
  188. package/dist/types/bidi/index.d.ts +19 -2
  189. package/dist/types/bidi/index.d.ts.map +1 -1
  190. package/dist/types/computer-use/index.d.ts +18 -0
  191. package/dist/types/computer-use/index.d.ts.map +1 -1
  192. package/dist/types/connector/execution-context.d.ts +3 -1
  193. package/dist/types/connector/execution-context.d.ts.map +1 -1
  194. package/dist/types/errors/catalog.d.ts.map +1 -1
  195. package/dist/types/errors/catalog.js +13 -6
  196. package/dist/types/errors/catalog.js.map +1 -1
  197. package/dist/types/errors/index.d.ts.map +1 -1
  198. package/dist/types/errors/index.js +21 -8
  199. package/dist/types/errors/index.js.map +1 -1
  200. package/dist/types/execution/index.d.ts +43 -1
  201. package/dist/types/execution/index.d.ts.map +1 -1
  202. package/dist/types/hitl/index.d.ts +11 -0
  203. package/dist/types/hitl/index.d.ts.map +1 -1
  204. package/dist/types/hitl/index.js.map +1 -1
  205. package/dist/types/message/index.d.ts +1 -1
  206. package/dist/types/message/index.d.ts.map +1 -1
  207. package/dist/types/message/index.js +2 -1
  208. package/dist/types/message/index.js.map +1 -1
  209. package/dist/types/plugin/index.d.ts +14 -1
  210. package/dist/types/plugin/index.d.ts.map +1 -1
  211. package/dist/types/plugin/index.js +1 -0
  212. package/dist/types/plugin/index.js.map +1 -1
  213. package/dist/types/provider/config.d.ts +9 -0
  214. package/dist/types/provider/config.d.ts.map +1 -1
  215. package/dist/types/provider/interface.d.ts +14 -0
  216. package/dist/types/provider/interface.d.ts.map +1 -1
  217. package/dist/types/run/events.d.ts +17 -0
  218. package/dist/types/run/events.d.ts.map +1 -1
  219. package/dist/types/run/events.js.map +1 -1
  220. package/dist/types/sandbox/index.d.ts +15 -10
  221. package/dist/types/sandbox/index.d.ts.map +1 -1
  222. package/dist/types/sandbox/index.js.map +1 -1
  223. package/dist/types/tool/index.d.ts +77 -6
  224. package/dist/types/tool/index.d.ts.map +1 -1
  225. package/dist/types/tool/index.js.map +1 -1
  226. package/dist/types/tool/presentation.d.ts +6 -2
  227. package/dist/types/tool/presentation.d.ts.map +1 -1
  228. package/dist/types/workspace/ref.d.ts +5 -0
  229. package/dist/types/workspace/ref.d.ts.map +1 -1
  230. package/dist/utils/abort.d.ts +8 -0
  231. package/dist/utils/abort.d.ts.map +1 -1
  232. package/dist/utils/abort.js +16 -0
  233. package/dist/utils/abort.js.map +1 -1
  234. package/package.json +4 -4
  235. package/src/authorization/gate.ts +1 -1
  236. package/src/bridge/a2a/mapper.ts +23 -4
  237. package/src/bridge/sse/mapper.ts +3 -0
  238. package/src/connector/index.ts +2 -0
  239. package/src/connector/mcp/adapter.ts +82 -21
  240. package/src/connector/mcp/client.ts +2 -1
  241. package/src/connector/mcp/http-redirect.ts +32 -0
  242. package/src/connector/mcp/http-sse.ts +5 -0
  243. package/src/connector/mcp/image-admission.ts +272 -0
  244. package/src/connector/mcp/stdio.ts +63 -21
  245. package/src/connector/mcp/streamable-http.ts +3 -0
  246. package/src/constants/tools/index.ts +1 -1
  247. package/src/execution/base.ts +124 -7
  248. package/src/execution/errors.ts +24 -0
  249. package/src/execution/factory.ts +1 -0
  250. package/src/execution/hybrid.ts +47 -16
  251. package/src/execution/index.ts +1 -0
  252. package/src/execution/local.ts +164 -19
  253. package/src/execution/output.ts +104 -0
  254. package/src/execution/remote.ts +122 -17
  255. package/src/plugin/lifecycle.ts +9 -3
  256. package/src/process/kill-tree.ts +11 -13
  257. package/src/provider/capabilities.ts +10 -0
  258. package/src/provider/fallback.ts +39 -0
  259. package/src/provider/idle-timeout.ts +8 -0
  260. package/src/provider/retry.ts +8 -0
  261. package/src/public-runtime.ts +7 -1
  262. package/src/registry/tool/execute.ts +230 -64
  263. package/src/run/command-gate.ts +12 -0
  264. package/src/run/workspace-fingerprint.ts +5 -4
  265. package/src/runtime/bidi/index.ts +1 -1
  266. package/src/runtime/bidi/session.ts +177 -28
  267. package/src/runtime/query/executor.ts +769 -163
  268. package/src/runtime/query/index.ts +58 -7
  269. package/src/runtime/query/iteration/index.ts +72 -0
  270. package/src/runtime/query/iteration/phases/context.ts +5 -0
  271. package/src/runtime/query/iteration/phases/tool-review.ts +87 -23
  272. package/src/runtime/query/request-rich-content.ts +39 -14
  273. package/src/runtime/query/result.ts +25 -23
  274. package/src/runtime/query/resume-pending.ts +83 -1
  275. package/src/runtime/query/tool-output-budget.ts +52 -17
  276. package/src/runtime/query/tooling.ts +10 -0
  277. package/src/sandbox/provider/local.ts +213 -45
  278. package/src/scheduler/delegating.ts +6 -5
  279. package/src/scheduler/local.ts +3 -2
  280. package/src/session/workspace/driver.ts +12 -4
  281. package/src/session/workspace/git-worktree.ts +173 -34
  282. package/src/skills/registry.ts +47 -0
  283. package/src/tools/builtins/computer-use.ts +86 -2
  284. package/src/tools/builtins/run-code.ts +9 -11
  285. package/src/tools/builtins/skill.ts +325 -7
  286. package/src/tools/coordinator/agent.ts +108 -33
  287. package/src/types/agent/manager.ts +1 -1
  288. package/src/types/agent/scheduler.ts +10 -1
  289. package/src/types/bidi/index.ts +19 -2
  290. package/src/types/computer-use/index.ts +19 -0
  291. package/src/types/connector/execution-context.ts +3 -0
  292. package/src/types/errors/catalog.ts +14 -6
  293. package/src/types/errors/index.ts +22 -8
  294. package/src/types/execution/index.ts +46 -1
  295. package/src/types/hitl/index.ts +11 -0
  296. package/src/types/message/index.ts +3 -2
  297. package/src/types/plugin/index.ts +15 -0
  298. package/src/types/provider/config.ts +9 -0
  299. package/src/types/provider/interface.ts +18 -0
  300. package/src/types/run/events.ts +17 -3
  301. package/src/types/sandbox/index.ts +15 -10
  302. package/src/types/tool/index.ts +85 -6
  303. package/src/types/tool/presentation.ts +10 -3
  304. package/src/types/workspace/ref.ts +5 -0
  305. package/src/utils/abort.ts +18 -0
@@ -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,
@@ -1 +1 @@
1
- {"version":3,"file":"hybrid.js","sourceRoot":"","sources":["../../src/execution/hybrid.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hybrid.js","sourceRoot":"","sources":["../../src/execution/hybrid.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@
17
17
  * A sixth backend goes in this directory and is named in this file.
18
18
  */
19
19
  export { BaseExecutionContext } from './base.js';
20
+ export { CommandCancellationUnsupportedError, RemoteExecutionBusyError } from './errors.js';
20
21
  export { ExecutionContextFactory } from './factory.js';
21
22
  export { HybridExecutionContext } from './hybrid.js';
22
23
  export type { HybridExecutionContextOptions } from './hybrid.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,YAAY,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAClD,YAAY,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,YAAY,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,mCAAmC,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAC3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,YAAY,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAClD,YAAY,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,YAAY,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA"}
@@ -17,6 +17,7 @@
17
17
  * A sixth backend goes in this directory and is named in this file.
18
18
  */
19
19
  export { BaseExecutionContext } from './base.js';
20
+ export { CommandCancellationUnsupportedError, RemoteExecutionBusyError } from './errors.js';
20
21
  export { ExecutionContextFactory } from './factory.js';
21
22
  export { HybridExecutionContext } from './hybrid.js';
22
23
  export { LocalExecutionContext } from './local.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAElD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,mCAAmC,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAC3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAElD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA"}
@@ -9,6 +9,8 @@ export interface LocalExecutionContextOptions {
9
9
  envVars?: Record<string, string>;
10
10
  capabilities?: ExecutionCapability[];
11
11
  shell?: string;
12
+ /** Retained bytes per stdout/stderr stream. Defaults to 4 MiB; maximum 64 MiB. */
13
+ maxOutputBytes?: number;
12
14
  log?: Logger;
13
15
  }
14
16
  export declare class LocalExecutionContext extends BaseExecutionContext implements CommandExecutor {
@@ -19,8 +21,19 @@ export declare class LocalExecutionContext extends BaseExecutionContext implemen
19
21
  private envVars;
20
22
  private capabilities;
21
23
  private shell;
24
+ private maxOutputBytes;
25
+ /**
26
+ * Constructor-created contexts are intentionally executable before
27
+ * `initialize()`: `createCommandGate()` has always used that public path.
28
+ * Teardown closes admission synchronously; an explicit initialize reopens it.
29
+ */
30
+ private acceptsCommands;
31
+ private readonly activeCommands;
22
32
  constructor(options: LocalExecutionContextOptions);
23
33
  protected doInitialize(): Promise<void>;
34
+ protected onInitializationStarted(): void;
35
+ protected onInitializationCommitted(): void;
36
+ protected onTeardownRequested(): void;
24
37
  protected doTeardown(): Promise<void>;
25
38
  getCwd(): string;
26
39
  setCwd(newCwd: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/execution/local.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAA;AAC9E,OAAO,KAAK,EACX,eAAe,EACf,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,MAAM,6BAA6B,CAAA;AACpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAEhD,MAAM,WAAW,4BAA4B;IAC5C,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAA;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;CACZ;AAED,qBAAa,qBAAsB,SAAQ,oBAAqB,YAAW,eAAe;IACzF,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAU;IAEpD,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,KAAK,CAAoB;gBAErB,OAAO,EAAE,4BAA4B;cAUjC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;cAO7B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAE3C,MAAM,IAAI,MAAM;IAIhB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ5B,WAAW,IAAI,OAAO;IAItB,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAIzC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI1C,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAIpC,eAAe,IAAI,mBAAmB,EAAE;IAIxC,aAAa,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO;IAI1C,cAAc,CACnB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,cAAc,GACtB,OAAO,CAAC,aAAa,CAAC;IA4DzB,QAAQ,IAAI,2BAA2B;CAWvC"}
1
+ {"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/execution/local.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAA;AAC9E,OAAO,KAAK,EACX,eAAe,EACf,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,MAAM,6BAA6B,CAAA;AAEpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAehD,MAAM,WAAW,4BAA4B;IAC5C,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAA;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kFAAkF;IAClF,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,GAAG,CAAC,EAAE,MAAM,CAAA;CACZ;AAED,qBAAa,qBAAsB,SAAQ,oBAAqB,YAAW,eAAe;IACzF,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAU;IAEpD,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,cAAc,CAAQ;IAC9B;;;;OAIG;IACH,OAAO,CAAC,eAAe,CAAO;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgC;gBAEnD,OAAO,EAAE,4BAA4B;cAqBjC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;cAO1B,uBAAuB,IAAI,IAAI;cAI/B,yBAAyB,IAAI,IAAI;cAIjC,mBAAmB,IAAI,IAAI;cAI9B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3C,MAAM,IAAI,MAAM;IAIhB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ5B,WAAW,IAAI,OAAO;IAItB,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAIzC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI1C,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAIpC,eAAe,IAAI,mBAAmB,EAAE;IAIxC,aAAa,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO;IAI1C,cAAc,CACnB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,CAAC,EAAE,cAAc,GACtB,OAAO,CAAC,aAAa,CAAC;IAwJzB,QAAQ,IAAI,2BAA2B;CAYvC"}
@@ -1,7 +1,14 @@
1
1
  import { spawn } from 'node:child_process';
2
2
  import { existsSync } from 'node:fs';
3
3
  import { resolve } from 'node:path';
4
+ import { killTree } from '../process/kill-tree.js';
5
+ import { subscribeToAbort } from '../utils/abort.js';
4
6
  import { BaseExecutionContext } from './base.js';
7
+ import { BoundedTailCapture } from './output.js';
8
+ const LOCAL_COMMAND_DEFAULT_TIMEOUT_MS = 30_000;
9
+ const LOCAL_COMMAND_KILL_GRACE_MS = 3_000;
10
+ const LOCAL_COMMAND_DEFAULT_MAX_OUTPUT_BYTES = 4 * 1024 * 1024;
11
+ const LOCAL_COMMAND_HARD_MAX_OUTPUT_BYTES = 64 * 1024 * 1024;
5
12
  export class LocalExecutionContext extends BaseExecutionContext {
6
13
  id;
7
14
  environment = 'local';
@@ -10,6 +17,14 @@ export class LocalExecutionContext extends BaseExecutionContext {
10
17
  envVars;
11
18
  capabilities;
12
19
  shell;
20
+ maxOutputBytes;
21
+ /**
22
+ * Constructor-created contexts are intentionally executable before
23
+ * `initialize()`: `createCommandGate()` has always used that public path.
24
+ * Teardown closes admission synchronously; an explicit initialize reopens it.
25
+ */
26
+ acceptsCommands = true;
27
+ activeCommands = new Set();
13
28
  constructor(options) {
14
29
  super(options.log);
15
30
  this.id = options.id;
@@ -18,6 +33,13 @@ export class LocalExecutionContext extends BaseExecutionContext {
18
33
  this.envVars = options.envVars ?? {};
19
34
  this.capabilities = options.capabilities ?? ['filesystem', 'process', 'shell'];
20
35
  this.shell = options.shell;
36
+ const maxOutputBytes = options.maxOutputBytes ?? LOCAL_COMMAND_DEFAULT_MAX_OUTPUT_BYTES;
37
+ if (!Number.isSafeInteger(maxOutputBytes) ||
38
+ maxOutputBytes <= 0 ||
39
+ maxOutputBytes > LOCAL_COMMAND_HARD_MAX_OUTPUT_BYTES) {
40
+ throw new RangeError(`The value of "maxOutputBytes" is out of range. It must be a positive safe integer no greater than ${LOCAL_COMMAND_HARD_MAX_OUTPUT_BYTES}. Received ${maxOutputBytes}`);
41
+ }
42
+ this.maxOutputBytes = maxOutputBytes;
21
43
  }
22
44
  async doInitialize() {
23
45
  if (!existsSync(this.cwd)) {
@@ -25,7 +47,21 @@ export class LocalExecutionContext extends BaseExecutionContext {
25
47
  }
26
48
  this.log.info('Local context initialized', { 'namzu.execution.cwd': this.cwd });
27
49
  }
28
- async doTeardown() { }
50
+ onInitializationStarted() {
51
+ this.acceptsCommands = false;
52
+ }
53
+ onInitializationCommitted() {
54
+ this.acceptsCommands = true;
55
+ }
56
+ onTeardownRequested() {
57
+ this.acceptsCommands = false;
58
+ }
59
+ async doTeardown() {
60
+ const admitted = [...this.activeCommands];
61
+ for (const operation of admitted)
62
+ operation.cancel('teardown');
63
+ await Promise.all(admitted.map((operation) => operation.closed));
64
+ }
29
65
  getCwd() {
30
66
  return this.cwd;
31
67
  }
@@ -55,56 +91,145 @@ export class LocalExecutionContext extends BaseExecutionContext {
55
91
  return this.capabilities.includes(cap);
56
92
  }
57
93
  async executeCommand(command, args = [], options) {
94
+ if (!this.acceptsCommands) {
95
+ throw new Error(`Local execution context "${this.id}" is tearing down or torn down. Call initialize() before executing another command.`);
96
+ }
58
97
  if (!this.hasCapability('process') && !this.hasCapability('shell')) {
59
98
  return {
60
99
  exitCode: 1,
61
100
  stdout: '',
62
101
  stderr: 'Command execution not available: context lacks process/shell capability',
102
+ stdoutTruncated: false,
103
+ stderrTruncated: false,
63
104
  durationMs: 0,
64
105
  };
65
106
  }
66
107
  const cwd = options?.cwd ? resolve(this.cwd, options.cwd) : this.cwd;
67
108
  const env = { ...process.env, ...this.envVars, ...options?.env };
68
- const timeoutMs = options?.timeoutMs ?? 30_000;
109
+ const timeoutMs = options?.timeoutMs ?? LOCAL_COMMAND_DEFAULT_TIMEOUT_MS;
110
+ if (!Number.isInteger(timeoutMs) || timeoutMs < 0) {
111
+ throw new RangeError(`The value of "timeoutMs" is out of range. It must be an unsigned integer. Received ${timeoutMs}`);
112
+ }
69
113
  // node's spawn() only keeps argv separation when it execs the binary directly;
70
114
  // with shell enabled it re-joins command+args into one unescaped string and hands
71
115
  // it to sh/cmd.exe, so any caller-supplied arg becomes shell syntax rather than a
72
116
  // literal value. Since `command`/`args` here are whatever a tool call passed in,
73
117
  // shell interpretation must be an explicit opt-in, never the silent default.
74
118
  const shell = options?.shell ?? this.shell ?? false;
75
- return new Promise((resolvePromise) => {
119
+ const callerSignal = options?.signal;
120
+ if (callerSignal?.aborted) {
121
+ return {
122
+ exitCode: null,
123
+ stdout: '',
124
+ stderr: '',
125
+ stdoutTruncated: false,
126
+ stderrTruncated: false,
127
+ durationMs: 0,
128
+ termination: { origin: 'caller', admitted: false },
129
+ };
130
+ }
131
+ let operation;
132
+ const result = new Promise((resolvePromise) => {
76
133
  const start = performance.now();
77
134
  const proc = spawn(command, args, {
78
135
  cwd,
79
136
  env,
80
137
  shell,
81
- timeout: timeoutMs,
138
+ // POSIX process-group ownership is the strongest boundary available
139
+ // to this host execution context. Windows uses taskkill /T in
140
+ // `killTree`; neither path relies on Node's direct-child timeout.
141
+ detached: process.platform !== 'win32',
82
142
  });
83
- let stdout = '';
84
- let stderr = '';
143
+ const stdout = new BoundedTailCapture(this.maxOutputBytes);
144
+ const stderr = new BoundedTailCapture(this.maxOutputBytes);
145
+ let spawnError;
146
+ let cancellation;
147
+ let escalation;
148
+ let deadline;
149
+ let disposeCallerAbort;
150
+ let settled = false;
151
+ const terminate = (signal) => {
152
+ killTree(proc, signal);
153
+ };
154
+ const cancel = (origin) => {
155
+ if (settled || cancellation !== undefined)
156
+ return;
157
+ cancellation = origin;
158
+ terminate('SIGTERM');
159
+ escalation = setTimeout(() => {
160
+ escalation = undefined;
161
+ terminate('SIGKILL');
162
+ }, LOCAL_COMMAND_KILL_GRACE_MS);
163
+ escalation.unref?.();
164
+ };
165
+ let resolveClosed;
166
+ const closed = new Promise((resolveClose) => {
167
+ resolveClosed = resolveClose;
168
+ });
169
+ operation = { cancel, closed };
170
+ this.activeCommands.add(operation);
171
+ if (timeoutMs > 0) {
172
+ deadline = setTimeout(() => cancel('deadline'), timeoutMs);
173
+ deadline.unref?.();
174
+ }
85
175
  proc.stdout?.on('data', (data) => {
86
- stdout += data.toString();
176
+ stdout.push(data);
87
177
  });
88
178
  proc.stderr?.on('data', (data) => {
89
- stderr += data.toString();
179
+ stderr.push(data);
90
180
  });
91
- proc.on('close', (code) => {
92
- resolvePromise({
93
- exitCode: code ?? 1,
94
- stdout,
95
- stderr,
96
- durationMs: Math.round(performance.now() - start),
97
- });
181
+ proc.once('error', (err) => {
182
+ // `close` follows `error` and is the point at which inherited stdio
183
+ // has drained. Releasing ownership here would strand a descendant
184
+ // which still holds those descriptors.
185
+ spawnError = err;
98
186
  });
99
- proc.on('error', (err) => {
187
+ proc.once('close', (code, signal) => {
188
+ if (settled)
189
+ return;
190
+ settled = true;
191
+ disposeCallerAbort?.();
192
+ if (deadline !== undefined)
193
+ clearTimeout(deadline);
194
+ if (escalation !== undefined) {
195
+ clearTimeout(escalation);
196
+ escalation = undefined;
197
+ // Do not retain a numeric process-group id for a later timer after
198
+ // close: the host can reuse it. Force the cancellation boundary now.
199
+ terminate('SIGKILL');
200
+ }
201
+ this.activeCommands.delete(operation);
202
+ resolveClosed?.();
203
+ if (spawnError !== undefined) {
204
+ if (stderr.retainedBytes > 0)
205
+ stderr.push(Buffer.from('\n'));
206
+ stderr.push(Buffer.from(spawnError.message));
207
+ }
100
208
  resolvePromise({
101
- exitCode: 1,
102
- stdout,
103
- stderr: err.message,
209
+ exitCode: spawnError === undefined ? code : 1,
210
+ stdout: stdout.text,
211
+ stderr: stderr.text,
212
+ stdoutTruncated: stdout.truncated,
213
+ stderrTruncated: stderr.truncated,
104
214
  durationMs: Math.round(performance.now() - start),
215
+ ...(cancellation === undefined
216
+ ? {}
217
+ : {
218
+ termination: {
219
+ origin: cancellation === 'deadline' ? 'timeout' : cancellation,
220
+ admitted: true,
221
+ ...(signal === null ? {} : { signal }),
222
+ },
223
+ }),
105
224
  });
106
225
  });
226
+ if (callerSignal !== undefined) {
227
+ disposeCallerAbort = subscribeToAbort(callerSignal, () => cancel('caller'));
228
+ if (callerSignal.aborted)
229
+ cancel('caller');
230
+ }
107
231
  });
232
+ return result;
108
233
  }
109
234
  toConfig() {
110
235
  return {
@@ -115,6 +240,7 @@ export class LocalExecutionContext extends BaseExecutionContext {
115
240
  envVars: this.envVars,
116
241
  capabilities: this.capabilities,
117
242
  shell: this.shell,
243
+ maxOutputBytes: this.maxOutputBytes,
118
244
  };
119
245
  }
120
246
  }
@@ -1 +1 @@
1
- {"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/execution/local.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAUnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAYhD,MAAM,OAAO,qBAAsB,SAAQ,oBAAoB;IACrD,EAAE,CAAQ;IACV,WAAW,GAAyB,OAAO,CAAA;IAE5C,GAAG,CAAQ;IACX,QAAQ,CAAS;IACjB,OAAO,CAAwB;IAC/B,YAAY,CAAuB;IACnC,KAAK,CAAoB;IAEjC,YAAY,OAAqC;QAChD,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAClB,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAA;QACpB,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC/B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAA;QACxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAA;QACpC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;QAC9E,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;IAC3B,CAAC;IAES,KAAK,CAAC,YAAY;QAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;QACjE,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,qBAAqB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IAChF,CAAC;IAES,KAAK,CAAC,UAAU,KAAmB,CAAC;IAE9C,MAAM;QACL,OAAO,IAAI,CAAC,GAAG,CAAA;IAChB,CAAC;IAED,MAAM,CAAC,MAAc;QACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;QAChC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,qCAAqC,QAAQ,EAAE,CAAC,CAAA;QACjE,CAAC;QACD,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAA;IACpB,CAAC;IAED,WAAW;QACV,OAAO,IAAI,CAAC,QAAQ,CAAA;IACrB,CAAC;IAED,WAAW,CAAC,YAAoB;QAC/B,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;IACvC,CAAC;IAED,SAAS,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7C,CAAC;IAED,UAAU;QACT,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;IAC3B,CAAC;IAED,eAAe;QACd,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAA;IAC9B,CAAC;IAED,aAAa,CAAC,GAAwB;QACrC,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;IACvC,CAAC;IAED,KAAK,CAAC,cAAc,CACnB,OAAe,EACf,OAAiB,EAAE,EACnB,OAAwB;QAExB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YACpE,OAAO;gBACN,QAAQ,EAAE,CAAC;gBACX,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,yEAAyE;gBACjF,UAAU,EAAE,CAAC;aACb,CAAA;QACF,CAAC;QAED,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAA;QACpE,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,CAAA;QAChE,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,MAAM,CAAA;QAC9C,+EAA+E;QAC/E,kFAAkF;QAClF,kFAAkF;QAClF,iFAAiF;QACjF,6EAA6E;QAC7E,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,CAAA;QAEnD,OAAO,IAAI,OAAO,CAAgB,CAAC,cAAc,EAAE,EAAE;YACpD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;YAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;gBACjC,GAAG;gBACH,GAAG;gBACH,KAAK;gBACL,OAAO,EAAE,SAAS;aAClB,CAAC,CAAA;YAEF,IAAI,MAAM,GAAG,EAAE,CAAA;YACf,IAAI,MAAM,GAAG,EAAE,CAAA;YAEf,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;gBACxC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAA;YAC1B,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;gBACxC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAA;YAC1B,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,cAAc,CAAC;oBACd,QAAQ,EAAE,IAAI,IAAI,CAAC;oBACnB,MAAM;oBACN,MAAM;oBACN,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;iBACjD,CAAC,CAAA;YACH,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACxB,cAAc,CAAC;oBACd,QAAQ,EAAE,CAAC;oBACX,MAAM;oBACN,MAAM,EAAE,GAAG,CAAC,OAAO;oBACnB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;iBACjD,CAAC,CAAA;YACH,CAAC,CAAC,CAAA;QACH,CAAC,CAAC,CAAA;IACH,CAAC;IAED,QAAQ;QACP,OAAO;YACN,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,WAAW,EAAE,OAAO;YACpB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;SACjB,CAAA;IACF,CAAC;CACD"}
1
+ {"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/execution/local.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Retain the newest bytes of one command-output stream under a hard bound.
3
+ *
4
+ * Bytes stay undecoded until the command closes, so a UTF-8 code point split
5
+ * across ordinary stream chunks is not corrupted. The backing store grows
6
+ * geometrically up to the configured cap and becomes a ring only when output
7
+ * crosses it; no incoming chunk is retained by reference.
8
+ */
9
+ export declare class BoundedTailCapture {
10
+ private readonly capBytes;
11
+ private storage;
12
+ private start;
13
+ private length;
14
+ private lostBytes;
15
+ constructor(capBytes: number);
16
+ push(chunk: Buffer): void;
17
+ /** Ordered copy of the retained raw bytes. */
18
+ get bytes(): Buffer;
19
+ get text(): string;
20
+ get truncated(): boolean;
21
+ /** Diagnostic invariant used by the internal killing observers. */
22
+ get retainedBytes(): number;
23
+ /** Diagnostic invariant used by the internal killing observers. */
24
+ get allocatedBytes(): number;
25
+ private ensureCapacity;
26
+ }
27
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/execution/output.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,qBAAa,kBAAkB;IAMlB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IALrC,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,KAAK,CAAI;IACjB,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,SAAS,CAAQ;gBAEI,QAAQ,EAAE,MAAM;IAM7C,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IA8BzB,8CAA8C;IAC9C,IAAI,KAAK,IAAI,MAAM,CAOlB;IAED,IAAI,IAAI,IAAI,MAAM,CAcjB;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,mEAAmE;IACnE,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,mEAAmE;IACnE,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,OAAO,CAAC,cAAc;CAatB"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Retain the newest bytes of one command-output stream under a hard bound.
3
+ *
4
+ * Bytes stay undecoded until the command closes, so a UTF-8 code point split
5
+ * across ordinary stream chunks is not corrupted. The backing store grows
6
+ * geometrically up to the configured cap and becomes a ring only when output
7
+ * crosses it; no incoming chunk is retained by reference.
8
+ */
9
+ export class BoundedTailCapture {
10
+ capBytes;
11
+ storage = Buffer.alloc(0);
12
+ start = 0;
13
+ length = 0;
14
+ lostBytes = false;
15
+ constructor(capBytes) {
16
+ this.capBytes = capBytes;
17
+ if (!Number.isSafeInteger(capBytes) || capBytes <= 0) {
18
+ throw new RangeError('BoundedTailCapture capBytes must be a positive safe integer');
19
+ }
20
+ }
21
+ push(chunk) {
22
+ if (chunk.length === 0)
23
+ return;
24
+ if (chunk.length >= this.capBytes) {
25
+ if (chunk.length > this.capBytes || this.length > 0)
26
+ this.lostBytes = true;
27
+ this.ensureCapacity(this.capBytes);
28
+ chunk.copy(this.storage, 0, chunk.length - this.capBytes);
29
+ this.start = 0;
30
+ this.length = this.capBytes;
31
+ return;
32
+ }
33
+ const combinedLength = this.length + chunk.length;
34
+ if (combinedLength <= this.capBytes) {
35
+ this.ensureCapacity(combinedLength);
36
+ chunk.copy(this.storage, this.length);
37
+ this.length = combinedLength;
38
+ return;
39
+ }
40
+ this.lostBytes = true;
41
+ this.ensureCapacity(this.capBytes);
42
+ const end = (this.start + this.length) % this.capBytes;
43
+ const first = Math.min(chunk.length, this.capBytes - end);
44
+ chunk.copy(this.storage, end, 0, first);
45
+ if (first < chunk.length)
46
+ chunk.copy(this.storage, 0, first);
47
+ this.start = (this.start + combinedLength - this.capBytes) % this.capBytes;
48
+ this.length = this.capBytes;
49
+ }
50
+ /** Ordered copy of the retained raw bytes. */
51
+ get bytes() {
52
+ const ordered = Buffer.allocUnsafe(this.length);
53
+ if (this.length === 0)
54
+ return ordered;
55
+ const first = Math.min(this.length, this.storage.length - this.start);
56
+ this.storage.copy(ordered, 0, this.start, this.start + first);
57
+ if (first < this.length)
58
+ this.storage.copy(ordered, first, 0, this.length - first);
59
+ return ordered;
60
+ }
61
+ get text() {
62
+ const ordered = this.bytes;
63
+ let offset = 0;
64
+ // Tail eviction can leave continuation bytes from a valid UTF-8 code
65
+ // point at the new left edge. They are an artifact of the cut, not an
66
+ // authored replacement character, so discard only that partial prefix.
67
+ if (this.lostBytes) {
68
+ while (offset < ordered.length) {
69
+ const firstByte = ordered[offset];
70
+ if (firstByte === undefined || (firstByte & 0xc0) !== 0x80)
71
+ break;
72
+ offset++;
73
+ }
74
+ }
75
+ return ordered.toString('utf8', offset);
76
+ }
77
+ get truncated() {
78
+ return this.lostBytes;
79
+ }
80
+ /** Diagnostic invariant used by the internal killing observers. */
81
+ get retainedBytes() {
82
+ return this.length;
83
+ }
84
+ /** Diagnostic invariant used by the internal killing observers. */
85
+ get allocatedBytes() {
86
+ return this.storage.length;
87
+ }
88
+ ensureCapacity(required) {
89
+ if (this.storage.length >= required)
90
+ return;
91
+ let capacity = Math.max(1, this.storage.length);
92
+ while (capacity < required)
93
+ capacity = Math.min(this.capBytes, capacity * 2);
94
+ const grown = Buffer.allocUnsafe(capacity);
95
+ if (this.length > 0) {
96
+ const first = Math.min(this.length, this.storage.length - this.start);
97
+ this.storage.copy(grown, 0, this.start, this.start + first);
98
+ if (first < this.length)
99
+ this.storage.copy(grown, first, 0, this.length - first);
100
+ }
101
+ this.storage = grown;
102
+ this.start = 0;
103
+ }
104
+ }
105
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/execution/output.ts"],"names":[],"mappings":"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"}