@namzu/sdk 62.6.1 → 62.8.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 (344) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/dist/agents/QueryAgent.d.ts.map +1 -1
  3. package/dist/agents/QueryAgent.js +5 -0
  4. package/dist/agents/QueryAgent.js.map +1 -1
  5. package/dist/agents/examples/SupervisorAgent.d.ts.map +1 -1
  6. package/dist/agents/examples/SupervisorAgent.js +1 -0
  7. package/dist/agents/examples/SupervisorAgent.js.map +1 -1
  8. package/dist/agents/explore.d.ts.map +1 -1
  9. package/dist/agents/explore.js +2 -1
  10. package/dist/agents/explore.js.map +1 -1
  11. package/dist/compaction/index.d.ts +1 -1
  12. package/dist/compaction/index.d.ts.map +1 -1
  13. package/dist/compaction/index.js +1 -1
  14. package/dist/compaction/index.js.map +1 -1
  15. package/dist/compaction/model-summary.js +2 -2
  16. package/dist/compaction/model-summary.js.map +1 -1
  17. package/dist/compaction/summary.d.ts +16 -1
  18. package/dist/compaction/summary.d.ts.map +1 -1
  19. package/dist/compaction/summary.js +25 -2
  20. package/dist/compaction/summary.js.map +1 -1
  21. package/dist/config/runtime.d.ts +8 -0
  22. package/dist/config/runtime.d.ts.map +1 -1
  23. package/dist/config/runtime.js +15 -0
  24. package/dist/config/runtime.js.map +1 -1
  25. package/dist/execution/workflow/runtime.d.ts.map +1 -1
  26. package/dist/execution/workflow/runtime.js +3 -0
  27. package/dist/execution/workflow/runtime.js.map +1 -1
  28. package/dist/execution/workflow/types.d.ts +8 -0
  29. package/dist/execution/workflow/types.d.ts.map +1 -1
  30. package/dist/manager/agent/child-session.d.ts +12 -0
  31. package/dist/manager/agent/child-session.d.ts.map +1 -1
  32. package/dist/manager/agent/child-session.js +29 -0
  33. package/dist/manager/agent/child-session.js.map +1 -1
  34. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  35. package/dist/manager/agent/lifecycle.js +8 -0
  36. package/dist/manager/agent/lifecycle.js.map +1 -1
  37. package/dist/manager/session/turn-recorder.d.ts +13 -2
  38. package/dist/manager/session/turn-recorder.d.ts.map +1 -1
  39. package/dist/manager/session/turn-recorder.js +107 -29
  40. package/dist/manager/session/turn-recorder.js.map +1 -1
  41. package/dist/prompt/coding-agent-doctrine.d.ts +3 -3
  42. package/dist/prompt/coding-agent-doctrine.d.ts.map +1 -1
  43. package/dist/prompt/coding-agent-doctrine.js +5 -3
  44. package/dist/prompt/coding-agent-doctrine.js.map +1 -1
  45. package/dist/provider/fallback.d.ts.map +1 -1
  46. package/dist/provider/fallback.js +5 -1
  47. package/dist/provider/fallback.js.map +1 -1
  48. package/dist/provider/retry.d.ts +25 -0
  49. package/dist/provider/retry.d.ts.map +1 -1
  50. package/dist/provider/retry.js +28 -0
  51. package/dist/provider/retry.js.map +1 -1
  52. package/dist/public-runtime.d.ts +3 -3
  53. package/dist/public-runtime.d.ts.map +1 -1
  54. package/dist/public-runtime.js +3 -3
  55. package/dist/public-runtime.js.map +1 -1
  56. package/dist/public-tools.d.ts +4 -2
  57. package/dist/public-tools.d.ts.map +1 -1
  58. package/dist/public-tools.js +5 -2
  59. package/dist/public-tools.js.map +1 -1
  60. package/dist/runtime/query/auto-review/classifier.d.ts +7 -1
  61. package/dist/runtime/query/auto-review/classifier.d.ts.map +1 -1
  62. package/dist/runtime/query/auto-review/classifier.js +8 -4
  63. package/dist/runtime/query/auto-review/classifier.js.map +1 -1
  64. package/dist/runtime/query/auto-review/prompt.d.ts.map +1 -1
  65. package/dist/runtime/query/auto-review/prompt.js +2 -0
  66. package/dist/runtime/query/auto-review/prompt.js.map +1 -1
  67. package/dist/runtime/query/auto-review/script-evidence.d.ts +93 -0
  68. package/dist/runtime/query/auto-review/script-evidence.d.ts.map +1 -0
  69. package/dist/runtime/query/auto-review/script-evidence.js +566 -0
  70. package/dist/runtime/query/auto-review/script-evidence.js.map +1 -0
  71. package/dist/runtime/query/checkpoint.d.ts +13 -0
  72. package/dist/runtime/query/checkpoint.d.ts.map +1 -1
  73. package/dist/runtime/query/checkpoint.js +37 -0
  74. package/dist/runtime/query/checkpoint.js.map +1 -1
  75. package/dist/runtime/query/context.d.ts.map +1 -1
  76. package/dist/runtime/query/context.js +28 -2
  77. package/dist/runtime/query/context.js.map +1 -1
  78. package/dist/runtime/query/executor.d.ts +38 -1
  79. package/dist/runtime/query/executor.d.ts.map +1 -1
  80. package/dist/runtime/query/executor.js +154 -13
  81. package/dist/runtime/query/executor.js.map +1 -1
  82. package/dist/runtime/query/finalize-turn.d.ts +7 -1
  83. package/dist/runtime/query/finalize-turn.d.ts.map +1 -1
  84. package/dist/runtime/query/finalize-turn.js +2 -0
  85. package/dist/runtime/query/finalize-turn.js.map +1 -1
  86. package/dist/runtime/query/index.d.ts +8 -0
  87. package/dist/runtime/query/index.d.ts.map +1 -1
  88. package/dist/runtime/query/index.js +7 -0
  89. package/dist/runtime/query/index.js.map +1 -1
  90. package/dist/runtime/query/iteration/index.d.ts +32 -1
  91. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  92. package/dist/runtime/query/iteration/index.js +158 -10
  93. package/dist/runtime/query/iteration/index.js.map +1 -1
  94. package/dist/runtime/query/iteration/phases/compaction.d.ts +12 -0
  95. package/dist/runtime/query/iteration/phases/compaction.d.ts.map +1 -1
  96. package/dist/runtime/query/iteration/phases/compaction.js +48 -1
  97. package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
  98. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  99. package/dist/runtime/query/iteration/phases/context.js +5 -0
  100. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  101. package/dist/runtime/query/iteration/stream-turn.js +3 -3
  102. package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
  103. package/dist/runtime/query/prelude-lease.d.ts.map +1 -1
  104. package/dist/runtime/query/prelude-lease.js +22 -0
  105. package/dist/runtime/query/prelude-lease.js.map +1 -1
  106. package/dist/runtime/query/prepare-turn.d.ts.map +1 -1
  107. package/dist/runtime/query/prepare-turn.js +30 -12
  108. package/dist/runtime/query/prepare-turn.js.map +1 -1
  109. package/dist/runtime/query/review-policy.d.ts.map +1 -1
  110. package/dist/runtime/query/review-policy.js +29 -0
  111. package/dist/runtime/query/review-policy.js.map +1 -1
  112. package/dist/runtime/query/session-storage.d.ts.map +1 -1
  113. package/dist/runtime/query/session-storage.js +44 -3
  114. package/dist/runtime/query/session-storage.js.map +1 -1
  115. package/dist/runtime/query/tooling.d.ts +2 -0
  116. package/dist/runtime/query/tooling.d.ts.map +1 -1
  117. package/dist/runtime/query/tooling.js +1 -0
  118. package/dist/runtime/query/tooling.js.map +1 -1
  119. package/dist/runtime/query/turn/completion-audit.d.ts +27 -1
  120. package/dist/runtime/query/turn/completion-audit.d.ts.map +1 -1
  121. package/dist/runtime/query/turn/completion-audit.js +71 -6
  122. package/dist/runtime/query/turn/completion-audit.js.map +1 -1
  123. package/dist/runtime/query/turn/outcome-ledger.d.ts +113 -0
  124. package/dist/runtime/query/turn/outcome-ledger.d.ts.map +1 -0
  125. package/dist/runtime/query/turn/outcome-ledger.js +578 -0
  126. package/dist/runtime/query/turn/outcome-ledger.js.map +1 -0
  127. package/dist/sandbox/file-walk.d.ts +7 -1
  128. package/dist/sandbox/file-walk.d.ts.map +1 -1
  129. package/dist/sandbox/file-walk.js +30 -4
  130. package/dist/sandbox/file-walk.js.map +1 -1
  131. package/dist/sandbox/glob-segment.d.ts +8 -1
  132. package/dist/sandbox/glob-segment.d.ts.map +1 -1
  133. package/dist/sandbox/glob-segment.js +28 -9
  134. package/dist/sandbox/glob-segment.js.map +1 -1
  135. package/dist/store/checkpoint/contract.d.ts +12 -0
  136. package/dist/store/checkpoint/contract.d.ts.map +1 -1
  137. package/dist/store/checkpoint/contract.js.map +1 -1
  138. package/dist/store/checkpoint/disk.d.ts.map +1 -1
  139. package/dist/store/checkpoint/disk.js +34 -2
  140. package/dist/store/checkpoint/disk.js.map +1 -1
  141. package/dist/store/checkpoint/prune.d.ts.map +1 -1
  142. package/dist/store/checkpoint/prune.js +6 -0
  143. package/dist/store/checkpoint/prune.js.map +1 -1
  144. package/dist/store/evidence/disk.js +40 -3
  145. package/dist/store/evidence/disk.js.map +1 -1
  146. package/dist/store/session-log/incremental.d.ts +23 -0
  147. package/dist/store/session-log/incremental.d.ts.map +1 -0
  148. package/dist/store/session-log/incremental.js +117 -0
  149. package/dist/store/session-log/incremental.js.map +1 -0
  150. package/dist/store/session-log/index.d.ts +1 -0
  151. package/dist/store/session-log/index.d.ts.map +1 -1
  152. package/dist/store/session-log/index.js +1 -0
  153. package/dist/store/session-log/index.js.map +1 -1
  154. package/dist/store/session-log/turn-outcome.d.ts +37 -0
  155. package/dist/store/session-log/turn-outcome.d.ts.map +1 -0
  156. package/dist/store/session-log/turn-outcome.js +77 -0
  157. package/dist/store/session-log/turn-outcome.js.map +1 -0
  158. package/dist/tools/admit-facts.d.ts.map +1 -1
  159. package/dist/tools/admit-facts.js +1 -0
  160. package/dist/tools/admit-facts.js.map +1 -1
  161. package/dist/tools/builtins/bash.d.ts.map +1 -1
  162. package/dist/tools/builtins/bash.js +11 -2
  163. package/dist/tools/builtins/bash.js.map +1 -1
  164. package/dist/tools/builtins/bounded-file-read.d.ts +19 -1
  165. package/dist/tools/builtins/bounded-file-read.d.ts.map +1 -1
  166. package/dist/tools/builtins/bounded-file-read.js +56 -3
  167. package/dist/tools/builtins/bounded-file-read.js.map +1 -1
  168. package/dist/tools/builtins/edit-apply.d.ts.map +1 -1
  169. package/dist/tools/builtins/edit-apply.js +24 -3
  170. package/dist/tools/builtins/edit-apply.js.map +1 -1
  171. package/dist/tools/builtins/edit.d.ts +31 -17
  172. package/dist/tools/builtins/edit.d.ts.map +1 -1
  173. package/dist/tools/builtins/edit.js +92 -27
  174. package/dist/tools/builtins/edit.js.map +1 -1
  175. package/dist/tools/builtins/glob.js +1 -1
  176. package/dist/tools/builtins/glob.js.map +1 -1
  177. package/dist/tools/builtins/grep.d.ts +8 -0
  178. package/dist/tools/builtins/grep.d.ts.map +1 -1
  179. package/dist/tools/builtins/grep.js +148 -21
  180. package/dist/tools/builtins/grep.js.map +1 -1
  181. package/dist/tools/builtins/notebook-guard.d.ts +19 -0
  182. package/dist/tools/builtins/notebook-guard.d.ts.map +1 -0
  183. package/dist/tools/builtins/notebook-guard.js +75 -0
  184. package/dist/tools/builtins/notebook-guard.js.map +1 -0
  185. package/dist/tools/builtins/read-render.d.ts.map +1 -1
  186. package/dist/tools/builtins/read-render.js +8 -2
  187. package/dist/tools/builtins/read-render.js.map +1 -1
  188. package/dist/tools/builtins/search-support.d.ts +8 -0
  189. package/dist/tools/builtins/search-support.d.ts.map +1 -1
  190. package/dist/tools/builtins/search-support.js +66 -0
  191. package/dist/tools/builtins/search-support.js.map +1 -1
  192. package/dist/tools/builtins/write-file.d.ts.map +1 -1
  193. package/dist/tools/builtins/write-file.js +14 -1
  194. package/dist/tools/builtins/write-file.js.map +1 -1
  195. package/dist/tools/coordinator/agent.d.ts.map +1 -1
  196. package/dist/tools/coordinator/agent.js +25 -6
  197. package/dist/tools/coordinator/agent.js.map +1 -1
  198. package/dist/tools/coordinator/index.d.ts.map +1 -1
  199. package/dist/tools/coordinator/index.js +6 -1
  200. package/dist/tools/coordinator/index.js.map +1 -1
  201. package/dist/tools/coordinator/outcome-record.d.ts +22 -0
  202. package/dist/tools/coordinator/outcome-record.d.ts.map +1 -0
  203. package/dist/tools/coordinator/outcome-record.js +91 -0
  204. package/dist/tools/coordinator/outcome-record.js.map +1 -0
  205. package/dist/tools/defineTool.d.ts +2 -0
  206. package/dist/tools/defineTool.d.ts.map +1 -1
  207. package/dist/tools/defineTool.js +1 -0
  208. package/dist/tools/defineTool.js.map +1 -1
  209. package/dist/tools/file-read-tracker.d.ts +23 -2
  210. package/dist/tools/file-read-tracker.d.ts.map +1 -1
  211. package/dist/tools/file-read-tracker.js +37 -2
  212. package/dist/tools/file-read-tracker.js.map +1 -1
  213. package/dist/tools/untrusted-envelope.d.ts +6 -0
  214. package/dist/tools/untrusted-envelope.d.ts.map +1 -1
  215. package/dist/tools/untrusted-envelope.js +22 -1
  216. package/dist/tools/untrusted-envelope.js.map +1 -1
  217. package/dist/toolsets/manager.d.ts.map +1 -1
  218. package/dist/toolsets/manager.js +3 -4
  219. package/dist/toolsets/manager.js.map +1 -1
  220. package/dist/toolsets/validation-issues.d.ts +27 -0
  221. package/dist/toolsets/validation-issues.d.ts.map +1 -0
  222. package/dist/toolsets/validation-issues.js +83 -0
  223. package/dist/toolsets/validation-issues.js.map +1 -0
  224. package/dist/turn/memory-recall.d.ts +13 -0
  225. package/dist/turn/memory-recall.d.ts.map +1 -1
  226. package/dist/turn/memory-recall.js +18 -0
  227. package/dist/turn/memory-recall.js.map +1 -1
  228. package/dist/types/agent/base.d.ts +19 -0
  229. package/dist/types/agent/base.d.ts.map +1 -1
  230. package/dist/types/agent/query.d.ts +2 -0
  231. package/dist/types/agent/query.d.ts.map +1 -1
  232. package/dist/types/common/index.d.ts +17 -0
  233. package/dist/types/common/index.d.ts.map +1 -1
  234. package/dist/types/common/index.js +8 -1
  235. package/dist/types/common/index.js.map +1 -1
  236. package/dist/types/hitl/index.d.ts +22 -0
  237. package/dist/types/hitl/index.d.ts.map +1 -1
  238. package/dist/types/hitl/index.js.map +1 -1
  239. package/dist/types/session/config.d.ts +20 -0
  240. package/dist/types/session/config.d.ts.map +1 -1
  241. package/dist/types/session/events.d.ts +3 -3
  242. package/dist/types/session/events.d.ts.map +1 -1
  243. package/dist/types/session/index.d.ts +1 -0
  244. package/dist/types/session/index.d.ts.map +1 -1
  245. package/dist/types/session/index.js +1 -0
  246. package/dist/types/session/index.js.map +1 -1
  247. package/dist/types/session/outcome.d.ts +95 -0
  248. package/dist/types/session/outcome.d.ts.map +1 -0
  249. package/dist/types/session/outcome.js +45 -0
  250. package/dist/types/session/outcome.js.map +1 -0
  251. package/dist/types/session/prepare-step.d.ts +2 -0
  252. package/dist/types/session/prepare-step.d.ts.map +1 -1
  253. package/dist/types/session/records.d.ts +167 -2
  254. package/dist/types/session/records.d.ts.map +1 -1
  255. package/dist/types/session/records.js +42 -0
  256. package/dist/types/session/records.js.map +1 -1
  257. package/dist/types/session/turn.d.ts +18 -0
  258. package/dist/types/session/turn.d.ts.map +1 -1
  259. package/dist/types/session/turn.js.map +1 -1
  260. package/dist/types/tool/index.d.ts +30 -0
  261. package/dist/types/tool/index.d.ts.map +1 -1
  262. package/dist/types/tool/index.js.map +1 -1
  263. package/dist/types/tool/presentation.d.ts +6 -0
  264. package/dist/types/tool/presentation.d.ts.map +1 -1
  265. package/package.json +1 -1
  266. package/src/agents/QueryAgent.ts +5 -0
  267. package/src/agents/examples/SupervisorAgent.ts +1 -0
  268. package/src/agents/explore.ts +2 -1
  269. package/src/compaction/index.ts +1 -0
  270. package/src/compaction/model-summary.ts +2 -2
  271. package/src/compaction/summary.ts +30 -2
  272. package/src/config/runtime.ts +15 -0
  273. package/src/execution/workflow/runtime.ts +4 -0
  274. package/src/execution/workflow/types.ts +9 -0
  275. package/src/manager/agent/child-session.ts +36 -0
  276. package/src/manager/agent/lifecycle.ts +9 -0
  277. package/src/manager/session/turn-recorder.ts +115 -30
  278. package/src/pricing/rates.source.json +1 -1
  279. package/src/prompt/coding-agent-doctrine.ts +5 -3
  280. package/src/provider/fallback.ts +6 -1
  281. package/src/provider/retry.ts +51 -0
  282. package/src/public-runtime.ts +10 -1
  283. package/src/public-tools.ts +6 -1
  284. package/src/runtime/query/auto-review/classifier.ts +21 -5
  285. package/src/runtime/query/auto-review/prompt.ts +2 -0
  286. package/src/runtime/query/auto-review/script-evidence.ts +618 -0
  287. package/src/runtime/query/checkpoint.ts +53 -1
  288. package/src/runtime/query/context.ts +33 -6
  289. package/src/runtime/query/executor.ts +183 -21
  290. package/src/runtime/query/finalize-turn.ts +8 -1
  291. package/src/runtime/query/index.ts +19 -0
  292. package/src/runtime/query/iteration/index.ts +167 -14
  293. package/src/runtime/query/iteration/phases/compaction.ts +53 -3
  294. package/src/runtime/query/iteration/phases/context.ts +6 -0
  295. package/src/runtime/query/iteration/stream-turn.ts +3 -3
  296. package/src/runtime/query/prelude-lease.ts +19 -0
  297. package/src/runtime/query/prepare-turn.ts +29 -12
  298. package/src/runtime/query/review-policy.ts +33 -0
  299. package/src/runtime/query/session-storage.ts +42 -3
  300. package/src/runtime/query/tooling.ts +3 -0
  301. package/src/runtime/query/turn/completion-audit.ts +76 -5
  302. package/src/runtime/query/turn/outcome-ledger.ts +633 -0
  303. package/src/sandbox/file-walk.ts +41 -4
  304. package/src/sandbox/glob-segment.ts +48 -24
  305. package/src/store/checkpoint/contract.ts +15 -0
  306. package/src/store/checkpoint/disk.ts +34 -2
  307. package/src/store/checkpoint/prune.ts +13 -0
  308. package/src/store/evidence/disk.ts +57 -2
  309. package/src/store/session-log/incremental.ts +147 -0
  310. package/src/store/session-log/index.ts +7 -0
  311. package/src/store/session-log/turn-outcome.ts +84 -0
  312. package/src/tools/admit-facts.ts +1 -0
  313. package/src/tools/builtins/bash.ts +12 -2
  314. package/src/tools/builtins/bounded-file-read.ts +59 -2
  315. package/src/tools/builtins/edit-apply.ts +26 -4
  316. package/src/tools/builtins/edit.ts +106 -41
  317. package/src/tools/builtins/glob.ts +1 -1
  318. package/src/tools/builtins/grep.ts +173 -27
  319. package/src/tools/builtins/notebook-guard.ts +76 -0
  320. package/src/tools/builtins/read-render.ts +12 -2
  321. package/src/tools/builtins/search-support.ts +62 -0
  322. package/src/tools/builtins/write-file.ts +12 -1
  323. package/src/tools/coordinator/agent.ts +31 -7
  324. package/src/tools/coordinator/index.ts +6 -1
  325. package/src/tools/coordinator/outcome-record.ts +93 -0
  326. package/src/tools/defineTool.ts +3 -0
  327. package/src/tools/file-read-tracker.ts +51 -2
  328. package/src/tools/untrusted-envelope.ts +23 -1
  329. package/src/toolsets/manager.ts +6 -10
  330. package/src/toolsets/validation-issues.ts +97 -0
  331. package/src/turn/memory-recall.ts +28 -0
  332. package/src/types/agent/base.ts +20 -0
  333. package/src/types/agent/query.ts +2 -0
  334. package/src/types/common/index.ts +25 -1
  335. package/src/types/hitl/index.ts +27 -0
  336. package/src/types/session/config.ts +20 -0
  337. package/src/types/session/events.ts +3 -3
  338. package/src/types/session/index.ts +1 -0
  339. package/src/types/session/outcome.ts +139 -0
  340. package/src/types/session/prepare-step.ts +2 -0
  341. package/src/types/session/records.ts +67 -1
  342. package/src/types/session/turn.ts +19 -0
  343. package/src/types/tool/index.ts +30 -0
  344. package/src/types/tool/presentation.ts +6 -0
@@ -9,7 +9,72 @@ import { applyEdit, normalizeEditInput, } from './edit-apply.js';
9
9
  import { withFileMutationLock } from './file-mutation-lock.js';
10
10
  import { jsonStringEscapes } from './json-string-hint.js';
11
11
  import { lineDiff } from './line-diff.js';
12
+ import { notebookRefusal } from './notebook-guard.js';
12
13
  import { staleBeforeReview } from './stale-before-review.js';
14
+ const ONE_SHAPE_EACH = 'Single edit: {"path":"file.md","old_string":"exact unique text","new_string":"replacement text"}\nSeveral edits: {"path":"file.md","edits":[{"old_string":"a","new_string":"b"},{"old_string":"c","new_string":"d"}]}';
15
+ const hasTopLevelEdit = (value) => value.old_string !== undefined ||
16
+ value.oldStr !== undefined ||
17
+ value.new_string !== undefined ||
18
+ value.newStr !== undefined ||
19
+ value.insertLine !== undefined;
20
+ /**
21
+ * A top-level edit that is exactly the one entry of a one-entry batch: the same
22
+ * call said twice, not two intentions. Anything else (a different text, a
23
+ * longer list, an insertion) is a real conflict and stays refused.
24
+ */
25
+ function restatesTheBatch(value) {
26
+ const entries = value.edits;
27
+ if (entries === undefined || entries.length !== 1 || value.insertLine !== undefined)
28
+ return false;
29
+ const [entry] = entries;
30
+ return (entry !== undefined &&
31
+ (value.old_string ?? value.oldStr) === entry.old_string &&
32
+ (value.new_string ?? value.newStr) === entry.new_string &&
33
+ (value.replace_all ?? false) === (entry.replace_all ?? false));
34
+ }
35
+ /**
36
+ * Which of the two shapes this call is, and what to say when it is neither.
37
+ *
38
+ * An empty `edits` beside a top-level edit, and a one-entry `edits` that restates
39
+ * the top-level edit, are the single edit: the intent is not in doubt and nothing
40
+ * is dropped. A batch beside a DIFFERENT top-level edit stays refused, because
41
+ * any precedence would silently drop an edit somebody believes was made.
42
+ */
43
+ function checkEditShape(value) {
44
+ const batch = value.edits !== undefined && value.edits.length > 0;
45
+ const top = hasTopLevelEdit(value);
46
+ if (value.edits !== undefined && !batch && !top) {
47
+ return `\`edits\` is an empty list, so there is nothing to change. Send exactly one of these, and leave out the field you are not using:\n${ONE_SHAPE_EACH}`;
48
+ }
49
+ if (batch && top && !restatesTheBatch(value)) {
50
+ return `This call has both an \`edits\` list and a different top-level edit, and only one can be applied. Send exactly one of these, and leave out the field you are not using:\n${ONE_SHAPE_EACH}`;
51
+ }
52
+ if (batch)
53
+ return undefined;
54
+ if (typeof value.new_string !== 'string' && typeof value.newStr !== 'string') {
55
+ return 'Either new_string or newStr is required.';
56
+ }
57
+ if (value.insertLine === undefined &&
58
+ typeof value.old_string !== 'string' &&
59
+ typeof value.oldStr !== 'string') {
60
+ return 'Either old_string/oldStr or insertLine is required.';
61
+ }
62
+ return undefined;
63
+ }
64
+ /**
65
+ * The input every later stage sees: one shape, with the redundant half gone. The
66
+ * review card, the classifier, the dry run and the apply step all read this, so
67
+ * none of them meets `edits: []` or a restated edit.
68
+ */
69
+ function canonicalEditInput(value) {
70
+ if (value.edits === undefined)
71
+ return value;
72
+ const { edits, ...rest } = value;
73
+ if (edits.length === 0)
74
+ return rest;
75
+ const { old_string, oldStr, new_string, newStr, insertLine, ...kept } = rest;
76
+ return { ...kept, edits };
77
+ }
13
78
  /**
14
79
  * Two schemas, on purpose.
15
80
  *
@@ -82,31 +147,20 @@ const inputSchema = z
82
147
  .describe('Replace every occurrence of this old_string instead of requiring one.'),
83
148
  })
84
149
  .strict())
85
- .min(1)
150
+ // No `.min(1)`: a model that fills every optional field of a flat object
151
+ // sends `edits: []` next to a single top-level edit, and that is the
152
+ // single edit, not an error. An empty list with nothing beside it is
153
+ // refused by `checkEditShape` below, in a sentence that says what to send.
86
154
  .optional()
87
- .describe('Several replacements in one file, applied in order and committed together. Nothing is written unless every one applies.'),
155
+ .describe('Several replacements in one file, applied in order and committed together. Nothing is written unless every one applies. Leave out when sending a single old_string/new_string.'),
88
156
  })
89
157
  .strict()
90
- .refine((value) => value.edits !== undefined ||
91
- typeof value.new_string === 'string' ||
92
- typeof value.newStr === 'string', { message: 'Either new_string or newStr is required.' })
93
- .refine((value) => value.edits !== undefined ||
94
- value.insertLine !== undefined ||
95
- typeof value.old_string === 'string' ||
96
- typeof value.oldStr === 'string', { message: 'Either old_string/oldStr or insertLine is required.' })
97
- // Refused rather than resolved. A call carrying both an `edits` list and a
98
- // top-level replacement is two different intentions in one object, and any
99
- // precedence this code picked would be a guess about which the model meant
100
- // — silently dropping the other. There is no reading of that which is safe:
101
- // the dropped half is an edit somebody believes was made.
102
- .refine((value) => value.edits === undefined ||
103
- (value.old_string === undefined &&
104
- value.oldStr === undefined &&
105
- value.new_string === undefined &&
106
- value.newStr === undefined &&
107
- value.insertLine === undefined), {
108
- message: 'Use either `edits` or a single top-level edit, not both. Move the top-level old_string/new_string into the edits list.',
109
- });
158
+ .superRefine((value, ctx) => {
159
+ const problem = checkEditShape(value);
160
+ if (problem)
161
+ ctx.addIssue({ code: 'custom', message: problem });
162
+ })
163
+ .transform(canonicalEditInput);
110
164
  /**
111
165
  * What an `edit` call WOULD produce for a file body, without touching any file.
112
166
  *
@@ -135,7 +189,12 @@ export function dryRunEdit(content, input) {
135
189
  };
136
190
  }
137
191
  const result = applyEdit(content, normalized.operations);
138
- return result.success ? { success: true, content: result.content } : result;
192
+ if (!result.success)
193
+ return result;
194
+ const notebook = notebookRefusal(parsed.data.path, result.content, content);
195
+ if (notebook)
196
+ return { success: false, error: notebook };
197
+ return { success: true, content: result.content };
139
198
  }
140
199
  /**
141
200
  * What a capable provider constrains the model to emit: one shape, closed.
@@ -154,7 +213,7 @@ const modelInputSchema = {
154
213
  },
155
214
  old_string: {
156
215
  type: 'string',
157
- description: 'Exact unique text from the file, without read-tool line-number prefixes. Must not be empty.',
216
+ description: 'For a single change: exact unique text from the file, without read-tool line-number prefixes. Must not be empty. Do not send together with edits.',
158
217
  },
159
218
  new_string: {
160
219
  type: 'string',
@@ -228,7 +287,7 @@ const modelInputSchema = {
228
287
  required: ['old_string', 'new_string'],
229
288
  additionalProperties: false,
230
289
  },
231
- description: 'Several replacements in one file, applied in order and committed together. Nothing is written unless every one applies. Use this instead of several edit calls when the changes only make sense together.',
290
+ description: 'For SEVERAL changes to one file: a non-empty list, applied in order and committed together. Nothing is written unless every one applies. Leave this field out entirely when you send old_string/new_string; never send an empty list.',
232
291
  },
233
292
  },
234
293
  // `old_string` is deliberately NOT required, and this is the fix.
@@ -367,7 +426,7 @@ function refusedEdit(result, path) {
367
426
  }
368
427
  export const EditTool = defineTool({
369
428
  name: 'edit',
370
- description: 'Makes targeted edits to a file using exact string find-and-replace or line insertion. To change an existing file, use `edit`: `write` overwrites the whole body and discards earlier work on partial failure, while `edit` keeps the rest of the file byte-for-byte intact and is recoverable: if a single edit fails (old_string/oldStr ambiguous, broader restructuring needed), follow up with another `edit` instead of re-emitting the entire file via `write`. The old_string/oldStr must be unique in the file unless replace_all is true. For insertions, pass insertLine plus new_string/newStr; use insertLine: "end" to extend a file at the end. Keep new_string/newStr under 12000 characters, because a longer payload can be cut off mid-call and fail; use repeated bounded edits for long sections. Preserves file formatting and indentation. To make several changes to one file that only make sense together, send them as `edits`: a list of {old_string, new_string} applied in order and committed as one write — if any of them does not apply, nothing is written and the reply names which one, so the file is never left half-changed.',
429
+ description: 'Makes targeted edits to a file using exact string find-and-replace or line insertion. To change an existing file, use `edit`: `write` overwrites the whole body and discards earlier work on partial failure, while `edit` keeps the rest of the file byte-for-byte intact and is recoverable: if a single edit fails (old_string/oldStr ambiguous, broader restructuring needed), follow up with another `edit` instead of re-emitting the entire file via `write`. The old_string/oldStr must be unique in the file unless replace_all is true. For insertions, pass insertLine plus new_string/newStr; use insertLine: "end" to extend a file at the end. Keep new_string/newStr under 12000 characters, because a longer payload can be cut off mid-call and fail; use repeated bounded edits for long sections. Preserves file formatting and indentation. To make several changes to one file that only make sense together, send them as `edits` (and then no top-level old_string/new_string; for a single change leave `edits` out): a list of {old_string, new_string} applied in order and committed as one write — if any of them does not apply, nothing is written and the reply names which one, so the file is never left half-changed. An edit that would leave a `.ipynb` file as invalid notebook JSON is refused and the file is unchanged.',
371
430
  inputSchema,
372
431
  modelInputSchema,
373
432
  enforceModelInput: true,
@@ -387,7 +446,7 @@ export const EditTool = defineTool({
387
446
  refuseBeforeReview: (input, context) => staleBeforeReview(context, input.path, 'edit'),
388
447
  // The classifier judges which file changes and in what way, in a line.
389
448
  classifierInput: (input) => {
390
- if (input.edits !== undefined) {
449
+ if (input.edits !== undefined && input.edits.length > 0) {
391
450
  const shown = input.edits.slice(0, 5).map((e) => describeChange(e.old_string, e.new_string));
392
451
  const more = input.edits.length > shown.length ? `; ${input.edits.length - shown.length} more` : '';
393
452
  return clip(`${input.path}: ${input.edits.length} edits: ${shown.join('; ')}${more}`, 1500);
@@ -491,6 +550,9 @@ export const EditTool = defineTool({
491
550
  const result = admitted.result;
492
551
  if (!result.success)
493
552
  return refusedEdit(result, parsed.data.path);
553
+ const notebook = notebookRefusal(parsed.data.path, result.content, content);
554
+ if (notebook)
555
+ return { success: false, output: '', error: notebook };
494
556
  await context.sandbox.writeFile(parsed.data.path, result.content);
495
557
  recordEditedContent(context, parsed.data.path, result.content);
496
558
  const changed = editFacts(parsed.data.path, result.replacements, content, result.content);
@@ -513,6 +575,9 @@ export const EditTool = defineTool({
513
575
  const result = admitted.result;
514
576
  if (!result.success)
515
577
  return refusedEdit(result, hostPath);
578
+ const notebook = notebookRefusal(hostPath, result.content, content);
579
+ if (notebook)
580
+ return { success: false, output: '', error: notebook };
516
581
  // Temp file, fsync, rename — a reader sees the old body or the new
517
582
  // one, never a half-written one. A plain `writeFile` that fails
518
583
  // partway leaves the user's source truncated.
@@ -1 +1 @@
1
- {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../src/tools/builtins/edit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../src/tools/builtins/edit.ts"],"names":[],"mappings":"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"}
@@ -43,7 +43,7 @@ function relativePattern(pattern, root, sandboxed) {
43
43
  }
44
44
  export const GlobTool = defineTool({
45
45
  name: 'glob',
46
- description: 'Finds regular files by glob pattern in a bounded search. "*" searches one directory; use "**" explicitly for recursive discovery. Skips files that .gitignore and .ignore rules exclude unless include_ignored is set, and files the read rules of the session deny. Returns at most 500 paths and says when a result is limited or a search stopped early. Does not follow symlinks.',
46
+ description: 'Finds regular files by glob pattern in a bounded search. "*" searches one directory; use "**" explicitly for recursive discovery. Skips files that .gitignore and .ignore rules exclude unless include_ignored is set, and files the read rules of the session deny. Returns at most 500 paths and says when a result is limited or a search stopped early. Does not follow symlinks. To search inside files, use grep.',
47
47
  inputSchema,
48
48
  category: 'filesystem',
49
49
  // Declared so a path outside the turn's roots can be reviewed before the
@@ -1 +1 @@
1
- {"version":3,"file":"glob.js","sourceRoot":"","sources":["../../../src/tools/builtins/glob.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"glob.js","sourceRoot":"","sources":["../../../src/tools/builtins/glob.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,11 @@
1
+ /**
2
+ * Largest file the local reader reads synchronously, by the size on the open
3
+ * handle. One synchronous read of a file is one uninterrupted block, which on a
4
+ * slow mount can last tens of milliseconds; a larger file is read through the
5
+ * asynchronous bounded read instead, which lets the event loop run between
6
+ * chunks.
7
+ */
8
+ export declare const LOCAL_SYNC_READ_MAX_BYTES: number;
1
9
  /** Entries returned when `head_limit` is not given. */
2
10
  export declare const DEFAULT_HEAD_LIMIT = 250;
3
11
  /** A matching or context line longer than this is replaced by a notice, not printed. */
@@ -1 +1 @@
1
- {"version":3,"file":"grep.d.ts","sourceRoot":"","sources":["../../../src/tools/builtins/grep.ts"],"names":[],"mappings":"AAkEA,uDAAuD;AACvD,eAAO,MAAM,kBAAkB,MAAM,CAAA;AAErC,wFAAwF;AACxF,eAAO,MAAM,gBAAgB,MAAM,CAAA;AA4InC,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;EA8UnB,CAAA"}
1
+ {"version":3,"file":"grep.d.ts","sourceRoot":"","sources":["../../../src/tools/builtins/grep.ts"],"names":[],"mappings":"AA8DA;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,QAAY,CAAA;AA4HlD,uDAAuD;AACvD,eAAO,MAAM,kBAAkB,MAAM,CAAA;AAErC,wFAAwF;AACxF,eAAO,MAAM,gBAAgB,MAAM,CAAA;AAwInC,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;EAoWnB,CAAA"}
@@ -1,13 +1,13 @@
1
1
  import { stat } from 'node:fs/promises';
2
- import { isAbsolute, join, relative, sep } from 'node:path';
2
+ import { dirname, isAbsolute, join, relative, resolve, sep } from 'node:path';
3
3
  import { z } from 'zod';
4
4
  import { walkFilesLocally } from '../../sandbox/file-walk.js';
5
5
  import { subscribeToAbort } from '../../utils/abort.js';
6
6
  import { defineTool } from '../defineTool.js';
7
- import { resolveWithin, resolveWithinAny, resolveWithinAnyReal, resolveWithinReal, toolRoots, } from '../paths.js';
7
+ import { canonicalize, resolveWithin, resolveWithinAny, resolveWithinAnyReal, resolveWithinReal, toolRoots, } from '../paths.js';
8
8
  import { relativePosix, resolveWithinPosix } from '../posix-path.js';
9
- import { readBoundedChunks, readBoundedFile } from './bounded-file-read.js';
10
- import { MAX_FILES_SEARCHED, SEARCH_BUDGET_MS, hostDisplayPath, ignoredHint, isEntryLimit, isReadDenied, openSearchBudget, plural, stoppedNotice, } from './search-support.js';
9
+ import { CAN_REFUSE_LINKS, REFUSE_LINK_FLAG, readBoundedChunks, readBoundedFile, readBoundedFileSync, } from './bounded-file-read.js';
10
+ import { MAX_FILES_SEARCHED, SEARCH_BUDGET_MS, hostDisplayPath, ignoredHint, isEntryLimit, isReadDenied, openSearchBudget, plural, readAhead, stoppedNotice, } from './search-support.js';
11
11
  /** A remote read has no signal parameter; stop consuming it when the turn ends. */
12
12
  async function readWithSignal(read, signal) {
13
13
  signal?.throwIfAborted();
@@ -31,6 +31,112 @@ async function readWithSignal(read, signal) {
31
31
  dispose?.();
32
32
  }
33
33
  }
34
+ /** Longest the local read loop holds the event loop before it yields. */
35
+ const READ_SLICE_MS = 8;
36
+ /**
37
+ * Largest file the local reader reads synchronously, by the size on the open
38
+ * handle. One synchronous read of a file is one uninterrupted block, which on a
39
+ * slow mount can last tens of milliseconds; a larger file is read through the
40
+ * asynchronous bounded read instead, which lets the event loop run between
41
+ * chunks.
42
+ */
43
+ export const LOCAL_SYNC_READ_MAX_BYTES = 64 * 1024;
44
+ /**
45
+ * Reads files of a local search root. Each directory is resolved to its real
46
+ * path once and checked against the real root once; a file is then one open
47
+ * (links refused at the last component), fstat, read and close, all
48
+ * synchronous, with a yield to the event loop every few milliseconds. That is
49
+ * the same containment decision as resolving every file, because the walk
50
+ * lists only regular files in real directories and the open refuses a file
51
+ * that has become a link. Not used for a sandbox, nor where the platform cannot
52
+ * refuse links.
53
+ */
54
+ function createLocalReader(root, signal) {
55
+ const scratch = Buffer.allocUnsafe(64 * 1024);
56
+ const rootRealPromise = canonicalize(resolve(root));
57
+ const directories = new Map();
58
+ let sliceStart = performance.now();
59
+ const realDirectory = (directory) => {
60
+ let known = directories.get(directory);
61
+ if (!known) {
62
+ known = canonicalize(directory);
63
+ directories.set(directory, known);
64
+ }
65
+ return known;
66
+ };
67
+ let rootReal;
68
+ return {
69
+ async read(filePath) {
70
+ if (performance.now() - sliceStart > READ_SLICE_MS) {
71
+ await new Promise((done) => setImmediate(done));
72
+ sliceStart = performance.now();
73
+ }
74
+ signal?.throwIfAborted();
75
+ const directory = dirname(filePath);
76
+ const real = await realDirectory(directory);
77
+ rootReal ??= await rootRealPromise;
78
+ const contained = real === directory ? filePath : join(real, filePath.slice(directory.length + 1));
79
+ if (!(contained.startsWith(rootReal + sep) || contained === rootReal)) {
80
+ const rel = relative(rootReal, contained);
81
+ if (rel.startsWith('..') || isAbsolute(rel)) {
82
+ throw new Error('Path escapes the working directory through a link.');
83
+ }
84
+ }
85
+ signal?.throwIfAborted();
86
+ try {
87
+ const read = readBoundedFileSync(contained, MAX_FILE_SIZE, scratch, LOCAL_SYNC_READ_MAX_BYTES);
88
+ if (read !== 'large')
89
+ return { buffer: read, contained };
90
+ // The handle that measured the file is closed; the asynchronous read opens it
91
+ // again with the same flags (links refused) and repeats every check.
92
+ const large = await readBoundedFile(contained, MAX_FILE_SIZE, signal, undefined, REFUSE_LINK_FLAG);
93
+ sliceStart = performance.now();
94
+ return { buffer: large, contained };
95
+ }
96
+ catch (error) {
97
+ // Gone since the walk listed it: absent, as a walk that ran later would find it.
98
+ const code = error.code;
99
+ if (code === 'ENOENT' || code === 'ENOTDIR')
100
+ return { buffer: 'gone', contained };
101
+ throw error;
102
+ }
103
+ },
104
+ };
105
+ }
106
+ /** A walked path that is already inside `root` in normal form, or null when it needs the full check. */
107
+ const PLAIN_TAIL = /(^|\/)\.{1,2}(\/|$)|\/\/|\/$/;
108
+ /**
109
+ * The fast form of what `resolveWithin` and the display path compute for the
110
+ * walk's own entries on a POSIX host: a path the walk built under `root` is
111
+ * already normal, so it is returned as it is and its display name is a
112
+ * prefix plus the tail. Anything else, and every other platform, takes the
113
+ * full computation.
114
+ */
115
+ function createWalkedPaths(root, lexicalRoot, workingDirectory) {
116
+ if (sep !== '/')
117
+ return undefined;
118
+ const prefix = root === '/' ? '/' : `${root}/`;
119
+ const rootRel = relative(workingDirectory, lexicalRoot);
120
+ const display = rootRel.startsWith('..') || isAbsolute(rootRel) ? undefined : rootRel;
121
+ return {
122
+ within(path) {
123
+ if (path.startsWith(prefix) && path.length > prefix.length) {
124
+ if (!PLAIN_TAIL.test(path.slice(prefix.length)))
125
+ return path;
126
+ }
127
+ return resolveWithin(root, path);
128
+ },
129
+ displayName(path) {
130
+ if (display === undefined || !path.startsWith(prefix) || path.length === prefix.length) {
131
+ return undefined;
132
+ }
133
+ const tail = path.slice(prefix.length);
134
+ if (PLAIN_TAIL.test(tail))
135
+ return undefined;
136
+ return display === '' ? tail : `${display}/${tail}`;
137
+ },
138
+ };
139
+ }
34
140
  function relativeInclude(include, root, sandboxed) {
35
141
  let pattern = sandboxed ? include : include.split(sep).join('/');
36
142
  if (pattern.split('/').includes('..'))
@@ -164,16 +270,11 @@ const inputSchema = z.object({
164
270
  const MAX_FILE_SIZE = 5 * 1024 * 1024; // 5 MB — skip binaries/large files
165
271
  const BINARY_CHECK_BYTES = 512;
166
272
  function isBinaryContent(buffer) {
167
- const check = buffer.subarray(0, BINARY_CHECK_BYTES);
168
- for (const byte of check) {
169
- if (byte === 0)
170
- return true;
171
- }
172
- return false;
273
+ return buffer.subarray(0, BINARY_CHECK_BYTES).includes(0);
173
274
  }
174
275
  export const GrepTool = defineTool({
175
276
  name: 'grep',
176
- description: 'Searches file contents using a regular expression. By default returns the paths of matching files, newest first; output_mode "content" returns matching lines with file paths, line numbers and optional context lines, and "count" returns the number of matching lines per file. Set multiline for a pattern that spans lines and type (js, py, rust, ...) to search one kind of file. In content mode, before_context and after_context override symmetric context_lines; only_matching returns matched substrings without context. Results are paged: head_limit (default 250, 0 for none) and offset. A line over 500 characters is replaced by a notice. Searches hidden files unless include_hidden is false. Skips files that .gitignore and .ignore rules exclude unless include_ignored is set, and files the read rules of the session deny. Says when a result is limited or a search stopped early. Skips binary files, files over 5 MB, and symlinks. Choose the narrowest relevant directory.',
277
+ description: 'Searches file contents using a regular expression. By default returns the paths of matching files, newest first; output_mode "content" returns matching lines with file paths, line numbers and optional context lines, and "count" returns the number of matching lines per file. Set multiline for a pattern that spans lines and type (js, py, rust, ...) to search one kind of file. In content mode, before_context and after_context override symmetric context_lines; only_matching returns matched substrings without context. Results are paged: head_limit (default 250, 0 for none) and offset. A line over 500 characters is replaced by a notice. Searches hidden files unless include_hidden is false. Skips files that .gitignore and .ignore rules exclude unless include_ignored is set, and files the read rules of the session deny. Says when a result is limited or a search stopped early. Skips binary files, files over 5 MB, and symlinks. Choose the narrowest relevant directory. To find files by name, use glob.',
177
278
  inputSchema,
178
279
  category: 'analysis',
179
280
  // Declared so a path outside the turn's roots can be reviewed before the
@@ -251,7 +352,11 @@ export const GrepTool = defineTool({
251
352
  walkEnd = value;
252
353
  },
253
354
  };
254
- const entries = walkSandbox ? walkSandbox(root, options) : walkFilesLocally(root, options);
355
+ // A local walk is read ahead so its directory reads overlap with matching; a
356
+ // sandbox's walk is left as the adapter produces it.
357
+ const entries = walkSandbox
358
+ ? walkSandbox(root, options)
359
+ : readAhead(walkFilesLocally(root, { ...options, withoutSizes: CAN_REFUSE_LINKS }));
255
360
  // `execute` is reachable without the schema's defaults.
256
361
  const mode = input.output_mode ?? 'files_with_matches';
257
362
  // `max_results` predates `head_limit`; it keeps meaning "at most this many".
@@ -278,12 +383,16 @@ export const GrepTool = defineTool({
278
383
  // for can be served.
279
384
  const filesToCollect = headLimit > 0 ? offset + Math.max(headLimit * 4, 1000) : Number.POSITIVE_INFINITY;
280
385
  let enough = false;
386
+ const walked = sandbox
387
+ ? undefined
388
+ : createWalkedPaths(root, lexicalRoot, context.workingDirectory);
389
+ const localReader = !sandbox && CAN_REFUSE_LINKS ? createLocalReader(root, signal) : undefined;
281
390
  try {
282
391
  for await (const entry of entries) {
283
392
  signal?.throwIfAborted();
284
393
  const filePath = sandbox
285
394
  ? resolveWithinPosix(root, entry.path)
286
- : resolveWithin(root, entry.path);
395
+ : (walked?.within(entry.path) ?? resolveWithin(root, entry.path));
287
396
  if (filesSearched >= MAX_FILES_SEARCHED) {
288
397
  fileLimit = true;
289
398
  break;
@@ -298,12 +407,27 @@ export const GrepTool = defineTool({
298
407
  let content;
299
408
  let contained;
300
409
  try {
301
- const buffer = await readWithSignal(() => sandbox
302
- ? readBoundedChunks((offset, length) => sandbox.readFile(filePath, { offset, length, signal: signal }), MAX_FILE_SIZE, signal)
303
- : resolveWithinReal(root, filePath).then((path) => {
304
- contained = path;
305
- return readBoundedFile(path, MAX_FILE_SIZE, signal);
306
- }), signal);
410
+ let buffer;
411
+ if (localReader) {
412
+ const read = await localReader.read(filePath);
413
+ contained = read.contained;
414
+ // Over the cap by the size on the open handle: skipped, not unreadable.
415
+ if (read.buffer === 'too-large')
416
+ continue;
417
+ // Gone since the walk listed it: as if the walk had not listed it.
418
+ if (read.buffer === 'gone') {
419
+ filesSearched--;
420
+ continue;
421
+ }
422
+ buffer = read.buffer;
423
+ }
424
+ else
425
+ buffer = await readWithSignal(() => sandbox
426
+ ? readBoundedChunks((offset, length) => sandbox.readFile(filePath, { offset, length, signal: signal }), MAX_FILE_SIZE, signal)
427
+ : resolveWithinReal(root, filePath).then((path) => {
428
+ contained = path;
429
+ return readBoundedFile(path, MAX_FILE_SIZE, signal);
430
+ }), signal);
307
431
  signal?.throwIfAborted();
308
432
  if (buffer.length > MAX_FILE_SIZE || isBinaryContent(buffer))
309
433
  continue;
@@ -319,7 +443,8 @@ export const GrepTool = defineTool({
319
443
  let fileMatches = 0;
320
444
  const relPath = sandbox
321
445
  ? relativePosix(sandbox.rootDir, filePath)
322
- : hostDisplayPath(context.workingDirectory, join(lexicalRoot, relative(root, filePath)));
446
+ : (walked?.displayName(filePath) ??
447
+ hostDisplayPath(context.workingDirectory, join(lexicalRoot, relative(root, filePath))));
323
448
  if (mode === 'content' && input.only_matching) {
324
449
  for (const fragment of matchingFragments(content, regex, multiline)) {
325
450
  signal?.throwIfAborted();
@@ -531,7 +656,9 @@ async function sortByNewest(files) {
531
656
  function lineHits(lines, regex, context) {
532
657
  const hits = [];
533
658
  for (let i = 0; i < lines.length; i++) {
534
- context.abortSignal?.throwIfAborted();
659
+ // A cancellation is seen within a few hundred lines; per line it cost more than the match.
660
+ if ((i & 255) === 0)
661
+ context.abortSignal?.throwIfAborted();
535
662
  regex.lastIndex = 0;
536
663
  if (regex.test(lines[i] ?? ''))
537
664
  hits.push([i, i]);