@namzu/sdk 32.0.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 (260) hide show
  1. package/CHANGELOG.md +127 -0
  2. package/dist/authorization/gate.d.ts +1 -1
  3. package/dist/authorization/gate.js +1 -1
  4. package/dist/connector/index.d.ts +1 -1
  5. package/dist/connector/index.d.ts.map +1 -1
  6. package/dist/connector/index.js +1 -1
  7. package/dist/connector/index.js.map +1 -1
  8. package/dist/connector/mcp/adapter.d.ts.map +1 -1
  9. package/dist/connector/mcp/adapter.js +71 -16
  10. package/dist/connector/mcp/adapter.js.map +1 -1
  11. package/dist/connector/mcp/client.d.ts.map +1 -1
  12. package/dist/connector/mcp/client.js +3 -2
  13. package/dist/connector/mcp/client.js.map +1 -1
  14. package/dist/connector/mcp/http-redirect.d.ts +17 -0
  15. package/dist/connector/mcp/http-redirect.d.ts.map +1 -0
  16. package/dist/connector/mcp/http-redirect.js +31 -0
  17. package/dist/connector/mcp/http-redirect.js.map +1 -0
  18. package/dist/connector/mcp/http-sse.d.ts.map +1 -1
  19. package/dist/connector/mcp/http-sse.js +5 -0
  20. package/dist/connector/mcp/http-sse.js.map +1 -1
  21. package/dist/connector/mcp/image-admission.d.ts +16 -0
  22. package/dist/connector/mcp/image-admission.d.ts.map +1 -0
  23. package/dist/connector/mcp/image-admission.js +288 -0
  24. package/dist/connector/mcp/image-admission.js.map +1 -0
  25. package/dist/connector/mcp/stdio.d.ts +13 -0
  26. package/dist/connector/mcp/stdio.d.ts.map +1 -1
  27. package/dist/connector/mcp/stdio.js +66 -23
  28. package/dist/connector/mcp/stdio.js.map +1 -1
  29. package/dist/connector/mcp/streamable-http.d.ts.map +1 -1
  30. package/dist/connector/mcp/streamable-http.js +3 -0
  31. package/dist/connector/mcp/streamable-http.js.map +1 -1
  32. package/dist/constants/tools/index.js +1 -1
  33. package/dist/constants/tools/index.js.map +1 -1
  34. package/dist/execution/base.d.ts +13 -0
  35. package/dist/execution/base.d.ts.map +1 -1
  36. package/dist/execution/base.js +103 -8
  37. package/dist/execution/base.js.map +1 -1
  38. package/dist/execution/errors.d.ts +12 -0
  39. package/dist/execution/errors.d.ts.map +1 -0
  40. package/dist/execution/errors.js +21 -0
  41. package/dist/execution/errors.js.map +1 -0
  42. package/dist/execution/factory.d.ts.map +1 -1
  43. package/dist/execution/factory.js +1 -0
  44. package/dist/execution/factory.js.map +1 -1
  45. package/dist/execution/hybrid.d.ts +5 -0
  46. package/dist/execution/hybrid.d.ts.map +1 -1
  47. package/dist/execution/hybrid.js +36 -16
  48. package/dist/execution/hybrid.js.map +1 -1
  49. package/dist/execution/index.d.ts +1 -0
  50. package/dist/execution/index.d.ts.map +1 -1
  51. package/dist/execution/index.js +1 -0
  52. package/dist/execution/index.js.map +1 -1
  53. package/dist/execution/local.d.ts +13 -0
  54. package/dist/execution/local.d.ts.map +1 -1
  55. package/dist/execution/local.js +145 -19
  56. package/dist/execution/local.js.map +1 -1
  57. package/dist/execution/output.d.ts +27 -0
  58. package/dist/execution/output.d.ts.map +1 -0
  59. package/dist/execution/output.js +105 -0
  60. package/dist/execution/output.js.map +1 -0
  61. package/dist/execution/remote.d.ts +26 -2
  62. package/dist/execution/remote.d.ts.map +1 -1
  63. package/dist/execution/remote.js +86 -15
  64. package/dist/execution/remote.js.map +1 -1
  65. package/dist/plugin/lifecycle.d.ts.map +1 -1
  66. package/dist/plugin/lifecycle.js +9 -3
  67. package/dist/plugin/lifecycle.js.map +1 -1
  68. package/dist/process/kill-tree.d.ts +11 -13
  69. package/dist/process/kill-tree.d.ts.map +1 -1
  70. package/dist/process/kill-tree.js +11 -13
  71. package/dist/process/kill-tree.js.map +1 -1
  72. package/dist/provider/fallback.d.ts.map +1 -1
  73. package/dist/provider/fallback.js +31 -0
  74. package/dist/provider/fallback.js.map +1 -1
  75. package/dist/provider/idle-timeout.d.ts.map +1 -1
  76. package/dist/provider/idle-timeout.js +5 -0
  77. package/dist/provider/idle-timeout.js.map +1 -1
  78. package/dist/provider/retry.d.ts.map +1 -1
  79. package/dist/provider/retry.js +5 -0
  80. package/dist/provider/retry.js.map +1 -1
  81. package/dist/public-runtime.d.ts +2 -2
  82. package/dist/public-runtime.d.ts.map +1 -1
  83. package/dist/public-runtime.js +2 -2
  84. package/dist/public-runtime.js.map +1 -1
  85. package/dist/registry/tool/execute.d.ts +7 -1
  86. package/dist/registry/tool/execute.d.ts.map +1 -1
  87. package/dist/registry/tool/execute.js +201 -54
  88. package/dist/registry/tool/execute.js.map +1 -1
  89. package/dist/run/command-gate.d.ts.map +1 -1
  90. package/dist/run/command-gate.js +11 -0
  91. package/dist/run/command-gate.js.map +1 -1
  92. package/dist/run/workspace-fingerprint.d.ts +4 -4
  93. package/dist/run/workspace-fingerprint.d.ts.map +1 -1
  94. package/dist/run/workspace-fingerprint.js +6 -4
  95. package/dist/run/workspace-fingerprint.js.map +1 -1
  96. package/dist/runtime/bidi/index.d.ts +1 -1
  97. package/dist/runtime/bidi/index.d.ts.map +1 -1
  98. package/dist/runtime/bidi/index.js +1 -1
  99. package/dist/runtime/bidi/index.js.map +1 -1
  100. package/dist/runtime/bidi/session.d.ts +19 -0
  101. package/dist/runtime/bidi/session.d.ts.map +1 -1
  102. package/dist/runtime/bidi/session.js +150 -26
  103. package/dist/runtime/bidi/session.js.map +1 -1
  104. package/dist/runtime/query/executor.d.ts +43 -1
  105. package/dist/runtime/query/executor.d.ts.map +1 -1
  106. package/dist/runtime/query/executor.js +626 -161
  107. package/dist/runtime/query/executor.js.map +1 -1
  108. package/dist/runtime/query/index.d.ts.map +1 -1
  109. package/dist/runtime/query/index.js +46 -4
  110. package/dist/runtime/query/index.js.map +1 -1
  111. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  112. package/dist/runtime/query/iteration/phases/tool-review.js +84 -22
  113. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  114. package/dist/runtime/query/request-rich-content.d.ts.map +1 -1
  115. package/dist/runtime/query/request-rich-content.js +33 -13
  116. package/dist/runtime/query/request-rich-content.js.map +1 -1
  117. package/dist/runtime/query/resume-pending.d.ts +5 -1
  118. package/dist/runtime/query/resume-pending.d.ts.map +1 -1
  119. package/dist/runtime/query/resume-pending.js +66 -1
  120. package/dist/runtime/query/resume-pending.js.map +1 -1
  121. package/dist/runtime/query/tool-output-budget.d.ts.map +1 -1
  122. package/dist/runtime/query/tool-output-budget.js +45 -16
  123. package/dist/runtime/query/tool-output-budget.js.map +1 -1
  124. package/dist/runtime/query/tooling.d.ts +6 -0
  125. package/dist/runtime/query/tooling.d.ts.map +1 -1
  126. package/dist/runtime/query/tooling.js +4 -0
  127. package/dist/runtime/query/tooling.js.map +1 -1
  128. package/dist/sandbox/provider/local.d.ts.map +1 -1
  129. package/dist/sandbox/provider/local.js +193 -41
  130. package/dist/sandbox/provider/local.js.map +1 -1
  131. package/dist/scheduler/delegating.d.ts +2 -1
  132. package/dist/scheduler/delegating.d.ts.map +1 -1
  133. package/dist/scheduler/delegating.js +6 -5
  134. package/dist/scheduler/delegating.js.map +1 -1
  135. package/dist/scheduler/local.d.ts +2 -1
  136. package/dist/scheduler/local.d.ts.map +1 -1
  137. package/dist/scheduler/local.js +2 -2
  138. package/dist/scheduler/local.js.map +1 -1
  139. package/dist/session/workspace/driver.d.ts +12 -4
  140. package/dist/session/workspace/driver.d.ts.map +1 -1
  141. package/dist/session/workspace/git-worktree.d.ts +17 -3
  142. package/dist/session/workspace/git-worktree.d.ts.map +1 -1
  143. package/dist/session/workspace/git-worktree.js +153 -34
  144. package/dist/session/workspace/git-worktree.js.map +1 -1
  145. package/dist/skills/registry.d.ts +15 -0
  146. package/dist/skills/registry.d.ts.map +1 -1
  147. package/dist/skills/registry.js +33 -0
  148. package/dist/skills/registry.js.map +1 -1
  149. package/dist/tools/builtins/computer-use.d.ts.map +1 -1
  150. package/dist/tools/builtins/computer-use.js +39 -2
  151. package/dist/tools/builtins/computer-use.js.map +1 -1
  152. package/dist/tools/builtins/run-code.d.ts.map +1 -1
  153. package/dist/tools/builtins/run-code.js +9 -11
  154. package/dist/tools/builtins/run-code.js.map +1 -1
  155. package/dist/tools/builtins/skill.d.ts +2 -1
  156. package/dist/tools/builtins/skill.d.ts.map +1 -1
  157. package/dist/tools/builtins/skill.js +250 -6
  158. package/dist/tools/builtins/skill.js.map +1 -1
  159. package/dist/tools/coordinator/agent.d.ts.map +1 -1
  160. package/dist/tools/coordinator/agent.js +100 -30
  161. package/dist/tools/coordinator/agent.js.map +1 -1
  162. package/dist/types/agent/manager.d.ts +1 -1
  163. package/dist/types/agent/manager.d.ts.map +1 -1
  164. package/dist/types/agent/scheduler.d.ts +10 -1
  165. package/dist/types/agent/scheduler.d.ts.map +1 -1
  166. package/dist/types/authorization/index.d.ts +12 -12
  167. package/dist/types/bidi/index.d.ts +19 -2
  168. package/dist/types/bidi/index.d.ts.map +1 -1
  169. package/dist/types/computer-use/index.d.ts +18 -0
  170. package/dist/types/computer-use/index.d.ts.map +1 -1
  171. package/dist/types/connector/execution-context.d.ts +3 -1
  172. package/dist/types/connector/execution-context.d.ts.map +1 -1
  173. package/dist/types/execution/index.d.ts +43 -1
  174. package/dist/types/execution/index.d.ts.map +1 -1
  175. package/dist/types/hitl/index.d.ts +11 -0
  176. package/dist/types/hitl/index.d.ts.map +1 -1
  177. package/dist/types/hitl/index.js.map +1 -1
  178. package/dist/types/message/index.d.ts +1 -1
  179. package/dist/types/message/index.d.ts.map +1 -1
  180. package/dist/types/message/index.js +2 -1
  181. package/dist/types/message/index.js.map +1 -1
  182. package/dist/types/plugin/index.d.ts +14 -1
  183. package/dist/types/plugin/index.d.ts.map +1 -1
  184. package/dist/types/plugin/index.js +1 -0
  185. package/dist/types/plugin/index.js.map +1 -1
  186. package/dist/types/provider/interface.d.ts +14 -0
  187. package/dist/types/provider/interface.d.ts.map +1 -1
  188. package/dist/types/sandbox/index.d.ts +15 -10
  189. package/dist/types/sandbox/index.d.ts.map +1 -1
  190. package/dist/types/sandbox/index.js.map +1 -1
  191. package/dist/types/tool/index.d.ts +77 -6
  192. package/dist/types/tool/index.d.ts.map +1 -1
  193. package/dist/types/tool/index.js.map +1 -1
  194. package/dist/types/workspace/ref.d.ts +5 -0
  195. package/dist/types/workspace/ref.d.ts.map +1 -1
  196. package/dist/utils/abort.d.ts +8 -0
  197. package/dist/utils/abort.d.ts.map +1 -1
  198. package/dist/utils/abort.js +16 -0
  199. package/dist/utils/abort.js.map +1 -1
  200. package/package.json +4 -4
  201. package/src/authorization/gate.ts +1 -1
  202. package/src/connector/index.ts +2 -0
  203. package/src/connector/mcp/adapter.ts +82 -21
  204. package/src/connector/mcp/client.ts +2 -1
  205. package/src/connector/mcp/http-redirect.ts +32 -0
  206. package/src/connector/mcp/http-sse.ts +5 -0
  207. package/src/connector/mcp/image-admission.ts +272 -0
  208. package/src/connector/mcp/stdio.ts +63 -21
  209. package/src/connector/mcp/streamable-http.ts +3 -0
  210. package/src/constants/tools/index.ts +1 -1
  211. package/src/execution/base.ts +124 -7
  212. package/src/execution/errors.ts +24 -0
  213. package/src/execution/factory.ts +1 -0
  214. package/src/execution/hybrid.ts +47 -16
  215. package/src/execution/index.ts +1 -0
  216. package/src/execution/local.ts +164 -19
  217. package/src/execution/output.ts +104 -0
  218. package/src/execution/remote.ts +122 -17
  219. package/src/plugin/lifecycle.ts +9 -3
  220. package/src/process/kill-tree.ts +11 -13
  221. package/src/provider/fallback.ts +39 -0
  222. package/src/provider/idle-timeout.ts +8 -0
  223. package/src/provider/retry.ts +8 -0
  224. package/src/public-runtime.ts +7 -1
  225. package/src/registry/tool/execute.ts +230 -64
  226. package/src/run/command-gate.ts +12 -0
  227. package/src/run/workspace-fingerprint.ts +5 -4
  228. package/src/runtime/bidi/index.ts +1 -1
  229. package/src/runtime/bidi/session.ts +177 -28
  230. package/src/runtime/query/executor.ts +769 -163
  231. package/src/runtime/query/index.ts +53 -6
  232. package/src/runtime/query/iteration/phases/tool-review.ts +87 -23
  233. package/src/runtime/query/request-rich-content.ts +39 -14
  234. package/src/runtime/query/resume-pending.ts +83 -1
  235. package/src/runtime/query/tool-output-budget.ts +52 -17
  236. package/src/runtime/query/tooling.ts +10 -0
  237. package/src/sandbox/provider/local.ts +213 -45
  238. package/src/scheduler/delegating.ts +6 -5
  239. package/src/scheduler/local.ts +3 -2
  240. package/src/session/workspace/driver.ts +12 -4
  241. package/src/session/workspace/git-worktree.ts +173 -34
  242. package/src/skills/registry.ts +47 -0
  243. package/src/tools/builtins/computer-use.ts +45 -2
  244. package/src/tools/builtins/run-code.ts +9 -11
  245. package/src/tools/builtins/skill.ts +325 -7
  246. package/src/tools/coordinator/agent.ts +108 -33
  247. package/src/types/agent/manager.ts +1 -1
  248. package/src/types/agent/scheduler.ts +10 -1
  249. package/src/types/bidi/index.ts +19 -2
  250. package/src/types/computer-use/index.ts +19 -0
  251. package/src/types/connector/execution-context.ts +3 -0
  252. package/src/types/execution/index.ts +46 -1
  253. package/src/types/hitl/index.ts +11 -0
  254. package/src/types/message/index.ts +3 -2
  255. package/src/types/plugin/index.ts +15 -0
  256. package/src/types/provider/interface.ts +18 -0
  257. package/src/types/sandbox/index.ts +15 -10
  258. package/src/types/tool/index.ts +85 -6
  259. package/src/types/workspace/ref.ts +5 -0
  260. package/src/utils/abort.ts +18 -0
@@ -41,10 +41,10 @@
41
41
  * told to edit something it had already edited.
42
42
  *
43
43
  * So: a non-zero exit from any git invocation, a repository with no commits,
44
- * a timeout, or output past the size cap all produce `null` rather than a
45
- * partial hash. A truncated diff that hashed successfully would be the worst
46
- * outcome available here, because two different workspaces truncated at the
47
- * same point collide.
44
+ * a timeout, an executor-reported truncated stream, or output past the size
45
+ * cap all produce `null` rather than a partial hash. A truncated diff that
46
+ * hashed successfully would be the worst outcome available here, because two
47
+ * different workspaces truncated at the same point collide.
48
48
  */
49
49
  import { createHash } from 'node:crypto';
50
50
  import { lstat, readFile, readlink } from 'node:fs/promises';
@@ -108,6 +108,8 @@ export async function fingerprintWorkspace(options) {
108
108
  // this function: it has no basis for a comparison.
109
109
  if (result.exitCode !== 0)
110
110
  return null;
111
+ if (result.stdoutTruncated === true || result.stderrTruncated === true)
112
+ return null;
111
113
  if (Buffer.byteLength(result.stdout, 'utf8') > maxBytes)
112
114
  return null;
113
115
  return result.stdout;
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-fingerprint.js","sourceRoot":"","sources":["../../src/run/workspace-fingerprint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace-fingerprint.js","sourceRoot":"","sources":["../../src/run/workspace-fingerprint.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export { createMockBidiProvider } from './mock.js';
2
2
  export type { MockBidiScript, MockBidiSession } from './mock.js';
3
- export { startBidiRun } from './session.js';
3
+ export { BidiSessionCloseTimeoutError, startBidiRun } from './session.js';
4
4
  export type { BidiRun, BidiRunParams } from './session.js';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/bidi/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAClD,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/bidi/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAClD,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,EAAE,4BAA4B,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AACzE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA"}
@@ -1,3 +1,3 @@
1
1
  export { createMockBidiProvider } from './mock.js';
2
- export { startBidiRun } from './session.js';
2
+ export { BidiSessionCloseTimeoutError, startBidiRun } from './session.js';
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/bidi/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/bidi/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAElD,OAAO,EAAE,4BAA4B,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA"}
@@ -2,6 +2,10 @@ import type { BidiConnectParams, BidiProvider, BidiRunEvent, BidiSession } from
2
2
  import type { RunId } from '../../types/ids/index.js';
3
3
  import type { ToolRegistryContract } from '../../types/tool/index.js';
4
4
  import { type Logger } from '../../utils/logger.js';
5
+ export declare class BidiSessionCloseTimeoutError extends Error {
6
+ readonly timeoutMs: number;
7
+ constructor(timeoutMs: number);
8
+ }
5
9
  /**
6
10
  * Run tools for a duplex session.
7
11
  *
@@ -27,7 +31,17 @@ export interface BidiRunParams {
27
31
  readonly connect: BidiConnectParams;
28
32
  readonly workingDirectory: string;
29
33
  readonly env?: Record<string, string>;
34
+ /**
35
+ * Owns the complete run lifetime, not only connection establishment.
36
+ * Aborting it closes the provider session, ends local events and revokes
37
+ * every tool context without mutating the caller-owned controller.
38
+ */
30
39
  readonly signal?: AbortSignal;
40
+ /**
41
+ * How long `close()` waits for provider cleanup after fencing locally.
42
+ * Defaults to five seconds. `0` preserves an unbounded provider-close wait.
43
+ */
44
+ readonly closeTimeoutMs?: number;
31
45
  readonly log?: Logger;
32
46
  /** Overrides the generated id, so a host can correlate its own. */
33
47
  readonly runId?: RunId;
@@ -38,6 +52,11 @@ export interface BidiRun {
38
52
  events(): AsyncIterable<BidiRunEvent>;
39
53
  /** Push input from the human. */
40
54
  send(input: Parameters<BidiSession['send']>[0]): Promise<void>;
55
+ /**
56
+ * Fence the local run immediately, abort tool contexts and close the
57
+ * provider once. It does not wait for tool code that ignores cancellation;
58
+ * provider cleanup is observed for `BidiRunParams.closeTimeoutMs`.
59
+ */
41
60
  close(): Promise<void>;
42
61
  }
43
62
  export declare function startBidiRun(params: BidiRunParams): Promise<BidiRun>;
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/runtime/bidi/session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,KAAK,EAAe,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAIlF,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,uBAAuB,CAAA;AAElE;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAA;IACpC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;IACnC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;IAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,mEAAmE;IACnE,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CACtB;AAED,MAAM,WAAW,OAAO;IACvB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,qEAAqE;IACrE,MAAM,IAAI,aAAa,CAAC,YAAY,CAAC,CAAA;IACrC,iCAAiC;IACjC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CA0J1E"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/runtime/bidi/session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,KAAK,EAAe,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAIlF,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,uBAAuB,CAAA;AAKlE,qBAAa,4BAA6B,SAAQ,KAAK;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM;gBAAjB,SAAS,EAAE,MAAM;CAMtC;AAgBD;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAA;IACpC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;IACnC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;IAC7B;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,mEAAmE;IACnE,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CACtB;AAED,MAAM,WAAW,OAAO;IACvB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,qEAAqE;IACrE,MAAM,IAAI,aAAa,CAAC,YAAY,CAAC,CAAA;IACrC,iCAAiC;IACjC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9D;;;;OAIG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAsQ1E"}
@@ -3,30 +3,136 @@ import { toErrorMessage } from '../../utils/error.js';
3
3
  import { generateRunId } from '../../utils/id.js';
4
4
  import { SCOPE_ATTRIBUTE } from '../../utils/log/types.js';
5
5
  import { resolveLogger } from '../../utils/logger.js';
6
+ const DEFAULT_CLOSE_TIMEOUT_MS = 5_000;
7
+ const MAX_TIMER_DELAY_MS = 2_147_483_647;
8
+ export class BidiSessionCloseTimeoutError extends Error {
9
+ timeoutMs;
10
+ constructor(timeoutMs) {
11
+ super(`Duplex provider session close did not settle within ${timeoutMs}ms. The local run is fenced and its tool authority was revoked, but provider cleanup is still unconfirmed.`);
12
+ this.timeoutMs = timeoutMs;
13
+ this.name = 'BidiSessionCloseTimeoutError';
14
+ }
15
+ }
16
+ async function waitForProviderClose(pending, timeoutMs) {
17
+ if (timeoutMs === 0)
18
+ return await pending;
19
+ let timer;
20
+ const timeout = new Promise((_, reject) => {
21
+ timer = setTimeout(() => reject(new BidiSessionCloseTimeoutError(timeoutMs)), timeoutMs);
22
+ timer.unref?.();
23
+ });
24
+ try {
25
+ await Promise.race([pending, timeout]);
26
+ }
27
+ finally {
28
+ if (timer)
29
+ clearTimeout(timer);
30
+ }
31
+ }
6
32
  export async function startBidiRun(params) {
33
+ params.signal?.throwIfAborted();
34
+ const closeTimeoutMs = params.closeTimeoutMs ?? DEFAULT_CLOSE_TIMEOUT_MS;
35
+ if (!Number.isInteger(closeTimeoutMs) ||
36
+ closeTimeoutMs < 0 ||
37
+ closeTimeoutMs > MAX_TIMER_DELAY_MS) {
38
+ throw new RangeError(`BidiRunParams.closeTimeoutMs must be an integer from 0 through ${MAX_TIMER_DELAY_MS}`);
39
+ }
7
40
  const runId = params.runId ?? generateRunId();
8
41
  const log = resolveLogger(params.log).child({
9
42
  [SCOPE_ATTRIBUTE]: 'runtime/bidi/session',
10
43
  [NAMZU.RUN_ID]: runId,
11
44
  });
12
- const session = await params.provider.connect({
45
+ const lifetime = new AbortController();
46
+ const queue = [];
47
+ let wake;
48
+ let closed = false;
49
+ let session;
50
+ let transportCloseRequested = false;
51
+ let transportClosePromise;
52
+ const requestTransportClose = () => {
53
+ transportCloseRequested = true;
54
+ if (!session)
55
+ return Promise.resolve();
56
+ if (!transportClosePromise) {
57
+ const ownedSession = session;
58
+ transportClosePromise = Promise.resolve().then(async () => await ownedSession.close());
59
+ }
60
+ return transportClosePromise;
61
+ };
62
+ const beginClose = (reason, closeTransport) => {
63
+ if (!closed) {
64
+ closed = true;
65
+ lifetime.abort(reason);
66
+ wake?.();
67
+ }
68
+ if (closeTransport) {
69
+ void requestTransportClose().catch((error) => {
70
+ log.warn('Duplex provider session close failed', {
71
+ 'exception.message': toErrorMessage(error),
72
+ });
73
+ });
74
+ }
75
+ };
76
+ const onCallerAbort = () => beginClose(params.signal?.reason, true);
77
+ params.signal?.addEventListener('abort', onCallerAbort, { once: true });
78
+ lifetime.signal.addEventListener('abort', () => params.signal?.removeEventListener('abort', onCallerAbort), { once: true });
79
+ const connecting = Promise.resolve()
80
+ .then(async () => await params.provider.connect({
13
81
  ...params.connect,
14
- ...(params.signal ? { signal: params.signal } : {}),
82
+ signal: lifetime.signal,
83
+ }))
84
+ .then((connected) => {
85
+ session = connected;
86
+ if (transportCloseRequested) {
87
+ void requestTransportClose().catch((error) => {
88
+ log.warn('Late duplex provider session close failed', {
89
+ 'exception.message': toErrorMessage(error),
90
+ });
91
+ });
92
+ }
93
+ return connected;
15
94
  });
95
+ let removeConnectAbort;
96
+ const connectionAbort = new Promise((_, reject) => {
97
+ const rejectFromLifetime = () => reject(lifetime.signal.reason);
98
+ removeConnectAbort = () => lifetime.signal.removeEventListener('abort', rejectFromLifetime);
99
+ if (lifetime.signal.aborted)
100
+ rejectFromLifetime();
101
+ else
102
+ lifetime.signal.addEventListener('abort', rejectFromLifetime, { once: true });
103
+ });
104
+ let activeSession;
105
+ try {
106
+ activeSession = await Promise.race([connecting, connectionAbort]);
107
+ lifetime.signal.throwIfAborted();
108
+ }
109
+ catch (error) {
110
+ removeConnectAbort?.();
111
+ params.signal?.removeEventListener('abort', onCallerAbort);
112
+ if (lifetime.signal.aborted) {
113
+ void connecting.catch(() => undefined);
114
+ throw lifetime.signal.reason;
115
+ }
116
+ throw error;
117
+ }
118
+ removeConnectAbort?.();
16
119
  // One generation of work. Bumped by every interruption, so a tool that
17
120
  // started under an older generation knows its answer is stale without
18
121
  // needing a handle on the call that cancelled it.
19
122
  let generation = 0;
20
- const inflight = new Set();
21
- const queue = [];
22
- let wake;
123
+ const executionIds = new Set();
23
124
  const emit = (event) => {
125
+ if (closed)
126
+ return false;
24
127
  queue.push(event);
25
128
  wake?.();
129
+ return true;
26
130
  };
27
131
  const executeCall = async (call) => {
28
132
  const startedUnder = generation;
29
- emit({ type: 'tool_started', runId, toolUseId: call.id, toolName: call.name });
133
+ if (!emit({ type: 'tool_started', runId, toolUseId: call.id, toolName: call.name })) {
134
+ return;
135
+ }
30
136
  let output;
31
137
  let isError = false;
32
138
  try {
@@ -40,7 +146,7 @@ export async function startBidiRun(params) {
40
146
  const context = {
41
147
  runId,
42
148
  workingDirectory: params.workingDirectory,
43
- abortSignal: params.signal ?? new AbortController().signal,
149
+ abortSignal: lifetime.signal,
44
150
  env: params.env ?? {},
45
151
  log: (level, message) => log[level](message),
46
152
  toolUseId: call.id,
@@ -53,12 +159,21 @@ export async function startBidiRun(params) {
53
159
  output = toErrorMessage(err);
54
160
  isError = true;
55
161
  }
162
+ if (closed)
163
+ return;
56
164
  if (startedUnder !== generation) {
57
165
  // The human spoke over the model while this ran. Delivering the
58
166
  // answer now would put it in a conversation that has moved on.
59
167
  emit({ type: 'tool_abandoned', runId, toolUseId: call.id, toolName: call.name });
60
168
  return;
61
169
  }
170
+ // Entering the provider send is the publication commit point. A later
171
+ // conversational interruption cannot recall a write already handed to
172
+ // the provider, but closing the run still closes the whole session and
173
+ // fences the local terminal event.
174
+ await activeSession.sendToolResult(call.id, output, isError);
175
+ if (closed)
176
+ return;
62
177
  emit({
63
178
  type: 'tool_completed',
64
179
  runId,
@@ -67,12 +182,12 @@ export async function startBidiRun(params) {
67
182
  output,
68
183
  isError,
69
184
  });
70
- await session.sendToolResult(call.id, output, isError);
71
185
  };
72
- let closed = false;
73
186
  const pump = (async () => {
74
187
  try {
75
- for await (const event of session.events()) {
188
+ for await (const event of activeSession.events()) {
189
+ if (closed)
190
+ break;
76
191
  switch (event.type) {
77
192
  case 'text':
78
193
  emit({ type: 'text', runId, text: event.text });
@@ -81,13 +196,18 @@ export async function startBidiRun(params) {
81
196
  emit({ type: 'audio', runId, data: event.data, mediaType: event.mediaType });
82
197
  break;
83
198
  case 'tool_call': {
199
+ if (executionIds.has(event.id)) {
200
+ const error = new Error(`Duplex provider repeated tool-call id "${event.id}". Re-executing it could repeat a side effect, so the session was closed.`);
201
+ emit({ type: 'error', runId, message: error.message });
202
+ beginClose(error, true);
203
+ break;
204
+ }
205
+ executionIds.add(event.id);
84
206
  // Started, not awaited: awaiting here would stall the very
85
207
  // stream an interruption arrives on.
86
- const running = executeCall(event).catch((err) => {
208
+ void executeCall(event).catch((err) => {
87
209
  emit({ type: 'error', runId, message: toErrorMessage(err) });
88
210
  });
89
- inflight.add(running);
90
- void running.finally(() => inflight.delete(running));
91
211
  break;
92
212
  }
93
213
  case 'turn_complete':
@@ -106,7 +226,7 @@ export async function startBidiRun(params) {
106
226
  runId,
107
227
  ...(event.reason !== undefined ? { reason: event.reason } : {}),
108
228
  });
109
- closed = true;
229
+ beginClose(new Error(event.reason ?? 'the duplex provider session closed'), false);
110
230
  break;
111
231
  default: {
112
232
  const _exhaustive = event;
@@ -118,14 +238,17 @@ export async function startBidiRun(params) {
118
238
  }
119
239
  }
120
240
  catch (err) {
121
- emit({ type: 'error', runId, message: toErrorMessage(err) });
241
+ if (!closed) {
242
+ emit({ type: 'error', runId, message: toErrorMessage(err) });
243
+ beginClose(err, true);
244
+ }
122
245
  }
123
246
  finally {
124
- closed = true;
125
- // Let a consumer parked on the queue notice the end.
126
- wake?.();
247
+ if (!closed)
248
+ beginClose(new Error('the duplex provider event stream ended'), true);
127
249
  }
128
250
  })();
251
+ void pump.catch(() => undefined);
129
252
  async function* events() {
130
253
  while (true) {
131
254
  while (queue.length > 0) {
@@ -144,15 +267,16 @@ export async function startBidiRun(params) {
144
267
  return {
145
268
  runId,
146
269
  events,
147
- send: (input) => session.send(input),
270
+ send: async (input) => {
271
+ lifetime.signal.throwIfAborted();
272
+ // As with tool results, entering the provider send is the atomic
273
+ // publication boundary. A caller must not retry merely because the
274
+ // lifetime changed after the provider accepted the input.
275
+ await activeSession.send(input);
276
+ },
148
277
  close: async () => {
149
- await session.close();
150
- closed = true;
151
- wake?.();
152
- // Tools still running are awaited, so a close cannot leave one
153
- // writing into a session nobody is reading.
154
- await Promise.allSettled([...inflight]);
155
- await pump.catch(() => undefined);
278
+ beginClose(new Error('the duplex run was closed by its host'), true);
279
+ await waitForProviderClose(requestTransportClose(), closeTimeoutMs);
156
280
  },
157
281
  };
158
282
  }
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/runtime/bidi/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/runtime/bidi/session.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { Span } from '@opentelemetry/api';
2
+ import type { AuthorizationGate } from '../../authorization/gate.js';
2
3
  import type { WorkingStateManager } from '../../compaction/manager.js';
3
4
  import type { PluginLifecycleManager } from '../../plugin/lifecycle.js';
4
5
  import type { ProbeEnforcement } from '../../probe/registry.js';
@@ -8,6 +9,7 @@ import type { InvocationState } from '../../types/invocation/index.js';
8
9
  import { type Message, type ToolResultContent } from '../../types/message/index.js';
9
10
  import type { PermissionMode } from '../../types/permission/index.js';
10
11
  import type { ChatCompletionResponse } from '../../types/provider/index.js';
12
+ import type { AuditEventInput } from '../../types/run/audit.js';
11
13
  import type { RunEvent } from '../../types/run/index.js';
12
14
  import type { Sandbox } from '../../types/sandbox/index.js';
13
15
  import type { RequestToolPause, SkillRegistryRef, ToolContext, ToolRegistryContract } from '../../types/tool/index.js';
@@ -17,6 +19,20 @@ import type { Logger } from '../../utils/logger.js';
17
19
  import { type BackgroundJobRegistry } from '../jobs/registry.js';
18
20
  import type { ToolResultObservation } from './project-instructions.js';
19
21
  export type EmitEvent = (event: RunEvent) => Promise<void>;
22
+ /**
23
+ * Executor-owned, single-use preparation of one provider tool-call batch.
24
+ *
25
+ * Consumers may inspect `reviewCalls`; only the creating executor can consume
26
+ * the opaque call preparations. This keeps schema transforms, plugin rewrites,
27
+ * authorization and execution on one value instead of reparsing between them.
28
+ */
29
+ export interface PreparedToolBatch {
30
+ readonly reviewCalls: readonly {
31
+ readonly id: string;
32
+ readonly name: string;
33
+ readonly input: unknown;
34
+ }[];
35
+ }
20
36
  /**
21
37
  * Default per-tool deadline. Long enough for a real build or test run,
22
38
  * short enough that a wedged tool does not hold a turn open indefinitely.
@@ -165,6 +181,17 @@ export interface ToolExecutorConfig {
165
181
  * reaches it. See {@link RepairToolCall}.
166
182
  */
167
183
  repairToolCall?: RepairToolCall;
184
+ /**
185
+ * Operator policy applied to calls dispatched by another tool.
186
+ *
187
+ * Model-issued calls are reviewed by the iteration orchestrator. Nested
188
+ * calls cannot open a second durable review while their parent is already
189
+ * executing, so only an explicit `allow` may proceed; `deny` and `review`
190
+ * both fail closed before the registry is touched.
191
+ */
192
+ authorizationGate?: AuthorizationGate;
193
+ /** Durable refusal sink paired with {@link authorizationGate}. */
194
+ recordAudit?: (input: AuditEventInput) => Promise<unknown>;
168
195
  }
169
196
  /** What one tool call produced, before it becomes a message. */
170
197
  export interface ToolCallOutcome {
@@ -221,6 +248,7 @@ export declare class ToolExecutor {
221
248
  private workingStateManager?;
222
249
  private probes;
223
250
  private parentSpan?;
251
+ private readonly preparedBatches;
224
252
  /** Set per turn by the orchestrator; see {@link setStepAllowedTools}. */
225
253
  private stepAllowedTools?;
226
254
  private readonly readPaths;
@@ -321,7 +349,18 @@ export declare class ToolExecutor {
321
349
  */
322
350
  private effectiveAllowedTools;
323
351
  private resolvePermissionMode;
324
- executeBatch(response: ChatCompletionResponse, denials?: ToolCallDenials, prior?: PriorToolResults): Promise<ToolExecutionBatch>;
352
+ /** Evaluate the run's operator policy against one already-prepared value. */
353
+ evaluatePreparedAuthorization(toolName: string, input: unknown): import("../../public-types.js").GateEvaluationResult | undefined;
354
+ /**
355
+ * Resolve repairs and pre-tool hooks, then decode each call exactly once.
356
+ * The returned projection is what policy and a human review; execution later
357
+ * consumes the registry-owned preparations rather than parsing again.
358
+ */
359
+ prepareBatchForReview(response: ChatCompletionResponse): Promise<PreparedToolBatch>;
360
+ /** Re-prepare only calls whose raw input a reviewer actually changed. */
361
+ reprepareBatchForReview(response: ChatCompletionResponse, previous: PreparedToolBatch, changedCallIds: ReadonlySet<string>): Promise<PreparedToolBatch>;
362
+ private publishPreparedBatch;
363
+ executeBatch(response: ChatCompletionResponse, denials?: ToolCallDenials, prior?: PriorToolResults, preparedBatch?: PreparedToolBatch): Promise<ToolExecutionBatch>;
325
364
  private runBatch;
326
365
  /**
327
366
  * Run a tool on behalf of another tool, and put it on the record.
@@ -362,6 +401,8 @@ export declare class ToolExecutor {
362
401
  */
363
402
  private executeWithDeadline;
364
403
  private runPreToolHook;
404
+ private prepareNestedCall;
405
+ private prepareDirectCall;
365
406
  private interpretPreToolResults;
366
407
  /**
367
408
  * Turn the call the model issued into a name and a parsed input, giving
@@ -416,6 +457,7 @@ export declare class ToolExecutor {
416
457
  */
417
458
  private recordDenial;
418
459
  private recordSyntheticHookOutcome;
460
+ private recordSyntheticPreparation;
419
461
  /**
420
462
  * Bound the rich channel, or leave it alone when no cap is configured.
421
463
  *
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/executor.ts"],"names":[],"mappings":"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"}