@namzu/sdk 58.1.1 → 60.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 (312) hide show
  1. package/CHANGELOG.md +124 -0
  2. package/dist/account/binding.d.ts +20 -0
  3. package/dist/account/binding.d.ts.map +1 -0
  4. package/dist/account/binding.js +27 -0
  5. package/dist/account/binding.js.map +1 -0
  6. package/dist/account/index.d.ts +9 -0
  7. package/dist/account/index.d.ts.map +1 -0
  8. package/dist/account/index.js +5 -0
  9. package/dist/account/index.js.map +1 -0
  10. package/dist/account/lock.d.ts +33 -0
  11. package/dist/account/lock.d.ts.map +1 -0
  12. package/dist/account/lock.js +170 -0
  13. package/dist/account/lock.js.map +1 -0
  14. package/dist/account/registry.d.ts +21 -0
  15. package/dist/account/registry.d.ts.map +1 -0
  16. package/dist/account/registry.js +340 -0
  17. package/dist/account/registry.js.map +1 -0
  18. package/dist/account/types.d.ts +124 -0
  19. package/dist/account/types.d.ts.map +1 -0
  20. package/dist/account/types.js +35 -0
  21. package/dist/account/types.js.map +1 -0
  22. package/dist/compaction/context-window.d.ts +53 -0
  23. package/dist/compaction/context-window.d.ts.map +1 -1
  24. package/dist/compaction/context-window.js +141 -2
  25. package/dist/compaction/context-window.js.map +1 -1
  26. package/dist/execution/workflow/index.d.ts +3 -1
  27. package/dist/execution/workflow/index.d.ts.map +1 -1
  28. package/dist/execution/workflow/index.js +2 -1
  29. package/dist/execution/workflow/index.js.map +1 -1
  30. package/dist/execution/workflow/journal.d.ts +24 -4
  31. package/dist/execution/workflow/journal.d.ts.map +1 -1
  32. package/dist/execution/workflow/journal.js +131 -9
  33. package/dist/execution/workflow/journal.js.map +1 -1
  34. package/dist/execution/workflow/prelude.d.ts +2 -0
  35. package/dist/execution/workflow/prelude.d.ts.map +1 -1
  36. package/dist/execution/workflow/prelude.js +49 -8
  37. package/dist/execution/workflow/prelude.js.map +1 -1
  38. package/dist/execution/workflow/resume.d.ts +59 -0
  39. package/dist/execution/workflow/resume.d.ts.map +1 -0
  40. package/dist/execution/workflow/resume.js +273 -0
  41. package/dist/execution/workflow/resume.js.map +1 -0
  42. package/dist/execution/workflow/runtime.d.ts.map +1 -1
  43. package/dist/execution/workflow/runtime.js +112 -8
  44. package/dist/execution/workflow/runtime.js.map +1 -1
  45. package/dist/execution/workflow/types.d.ts +105 -1
  46. package/dist/execution/workflow/types.d.ts.map +1 -1
  47. package/dist/index.d.ts +3 -0
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +4 -0
  50. package/dist/index.js.map +1 -1
  51. package/dist/pals/communication/ingress-schema.d.ts +38 -38
  52. package/dist/peers/record.d.ts +98 -0
  53. package/dist/peers/record.d.ts.map +1 -1
  54. package/dist/peers/record.js +17 -0
  55. package/dist/peers/record.js.map +1 -1
  56. package/dist/peers/registry.d.ts.map +1 -1
  57. package/dist/peers/registry.js +2 -2
  58. package/dist/peers/registry.js.map +1 -1
  59. package/dist/plugin/compat.d.ts +24 -0
  60. package/dist/plugin/compat.d.ts.map +1 -0
  61. package/dist/plugin/compat.js +149 -0
  62. package/dist/plugin/compat.js.map +1 -0
  63. package/dist/plugin/loader.d.ts +2 -1
  64. package/dist/plugin/loader.d.ts.map +1 -1
  65. package/dist/plugin/loader.js +6 -0
  66. package/dist/plugin/loader.js.map +1 -1
  67. package/dist/pricing/index.d.ts.map +1 -1
  68. package/dist/pricing/index.js +2 -1
  69. package/dist/pricing/index.js.map +1 -1
  70. package/dist/process/kill-tree.d.ts +44 -0
  71. package/dist/process/kill-tree.d.ts.map +1 -1
  72. package/dist/process/kill-tree.js +102 -4
  73. package/dist/process/kill-tree.js.map +1 -1
  74. package/dist/prompt/coding-agent-doctrine.d.ts +1 -1
  75. package/dist/prompt/coding-agent-doctrine.d.ts.map +1 -1
  76. package/dist/prompt/coding-agent-doctrine.js +9 -1
  77. package/dist/prompt/coding-agent-doctrine.js.map +1 -1
  78. package/dist/provider/errors.d.ts.map +1 -1
  79. package/dist/provider/errors.js +25 -2
  80. package/dist/provider/errors.js.map +1 -1
  81. package/dist/provider/model-window-suffix.d.ts +18 -0
  82. package/dist/provider/model-window-suffix.d.ts.map +1 -0
  83. package/dist/provider/model-window-suffix.js +77 -0
  84. package/dist/provider/model-window-suffix.js.map +1 -0
  85. package/dist/provider/token-budget.d.ts.map +1 -1
  86. package/dist/provider/token-budget.js +9 -1
  87. package/dist/provider/token-budget.js.map +1 -1
  88. package/dist/public-runtime.d.ts +6 -3
  89. package/dist/public-runtime.d.ts.map +1 -1
  90. package/dist/public-runtime.js +6 -4
  91. package/dist/public-runtime.js.map +1 -1
  92. package/dist/public-types.d.ts +3 -0
  93. package/dist/public-types.d.ts.map +1 -1
  94. package/dist/registry/command/kernel-commands.d.ts +1 -4
  95. package/dist/registry/command/kernel-commands.d.ts.map +1 -1
  96. package/dist/registry/command/kernel-commands.js +0 -28
  97. package/dist/registry/command/kernel-commands.js.map +1 -1
  98. package/dist/runtime/jobs/awaited-jobs.d.ts +6 -0
  99. package/dist/runtime/jobs/awaited-jobs.d.ts.map +1 -1
  100. package/dist/runtime/jobs/awaited-jobs.js +11 -0
  101. package/dist/runtime/jobs/awaited-jobs.js.map +1 -1
  102. package/dist/runtime/jobs/host-exit-finalizer.d.ts +20 -0
  103. package/dist/runtime/jobs/host-exit-finalizer.d.ts.map +1 -0
  104. package/dist/runtime/jobs/host-exit-finalizer.js +57 -0
  105. package/dist/runtime/jobs/host-exit-finalizer.js.map +1 -0
  106. package/dist/runtime/jobs/liveness.d.ts +67 -0
  107. package/dist/runtime/jobs/liveness.d.ts.map +1 -0
  108. package/dist/runtime/jobs/liveness.js +94 -0
  109. package/dist/runtime/jobs/liveness.js.map +1 -0
  110. package/dist/runtime/jobs/registry.d.ts +21 -0
  111. package/dist/runtime/jobs/registry.d.ts.map +1 -1
  112. package/dist/runtime/jobs/registry.js +104 -2
  113. package/dist/runtime/jobs/registry.js.map +1 -1
  114. package/dist/runtime/jobs/wake-budget.d.ts +35 -0
  115. package/dist/runtime/jobs/wake-budget.d.ts.map +1 -0
  116. package/dist/runtime/jobs/wake-budget.js +48 -0
  117. package/dist/runtime/jobs/wake-budget.js.map +1 -0
  118. package/dist/runtime/query/detached-calls.d.ts +65 -0
  119. package/dist/runtime/query/detached-calls.d.ts.map +1 -0
  120. package/dist/runtime/query/detached-calls.js +116 -0
  121. package/dist/runtime/query/detached-calls.js.map +1 -0
  122. package/dist/runtime/query/executor.d.ts +11 -3
  123. package/dist/runtime/query/executor.d.ts.map +1 -1
  124. package/dist/runtime/query/executor.js +100 -8
  125. package/dist/runtime/query/executor.js.map +1 -1
  126. package/dist/runtime/query/index.d.ts +20 -0
  127. package/dist/runtime/query/index.d.ts.map +1 -1
  128. package/dist/runtime/query/index.js +31 -5
  129. package/dist/runtime/query/index.js.map +1 -1
  130. package/dist/runtime/query/iteration/outstanding-work.d.ts.map +1 -1
  131. package/dist/runtime/query/iteration/outstanding-work.js +11 -3
  132. package/dist/runtime/query/iteration/outstanding-work.js.map +1 -1
  133. package/dist/runtime/query/iteration/phases/context.d.ts +7 -0
  134. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  135. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  136. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  137. package/dist/runtime/query/iteration/phases/tool-review.js +63 -1
  138. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  139. package/dist/runtime/query/session-storage.d.ts.map +1 -1
  140. package/dist/runtime/query/session-storage.js +8 -3
  141. package/dist/runtime/query/session-storage.js.map +1 -1
  142. package/dist/runtime/query/steering.d.ts +29 -3
  143. package/dist/runtime/query/steering.d.ts.map +1 -1
  144. package/dist/runtime/query/steering.js +58 -3
  145. package/dist/runtime/query/steering.js.map +1 -1
  146. package/dist/runtime/query/tooling.d.ts +1 -0
  147. package/dist/runtime/query/tooling.d.ts.map +1 -1
  148. package/dist/runtime/query/tooling.js +1 -0
  149. package/dist/runtime/query/tooling.js.map +1 -1
  150. package/dist/runtime/system-events.d.ts +5 -0
  151. package/dist/runtime/system-events.d.ts.map +1 -1
  152. package/dist/runtime/system-events.js +7 -1
  153. package/dist/runtime/system-events.js.map +1 -1
  154. package/dist/sandbox/denial.d.ts +11 -0
  155. package/dist/sandbox/denial.d.ts.map +1 -0
  156. package/dist/sandbox/denial.js +61 -0
  157. package/dist/sandbox/denial.js.map +1 -0
  158. package/dist/sandbox/file-walk-program.d.ts.map +1 -1
  159. package/dist/sandbox/file-walk-program.js +31 -13
  160. package/dist/sandbox/file-walk-program.js.map +1 -1
  161. package/dist/sandbox/file-walk.d.ts +2 -0
  162. package/dist/sandbox/file-walk.d.ts.map +1 -1
  163. package/dist/sandbox/file-walk.js +64 -13
  164. package/dist/sandbox/file-walk.js.map +1 -1
  165. package/dist/sandbox/ignore-matcher.d.ts +30 -0
  166. package/dist/sandbox/ignore-matcher.d.ts.map +1 -0
  167. package/dist/sandbox/ignore-matcher.js +11 -0
  168. package/dist/sandbox/ignore-matcher.js.map +1 -0
  169. package/dist/sandbox/ignore-source.d.ts +26 -0
  170. package/dist/sandbox/ignore-source.d.ts.map +1 -0
  171. package/dist/sandbox/ignore-source.js +221 -0
  172. package/dist/sandbox/ignore-source.js.map +1 -0
  173. package/dist/sandbox/provider/local.d.ts.map +1 -1
  174. package/dist/sandbox/provider/local.js +11 -1
  175. package/dist/sandbox/provider/local.js.map +1 -1
  176. package/dist/scheduler/completion-inbox.d.ts.map +1 -1
  177. package/dist/scheduler/completion-inbox.js +1 -0
  178. package/dist/scheduler/completion-inbox.js.map +1 -1
  179. package/dist/session/log-hash.d.ts.map +1 -1
  180. package/dist/session/log-hash.js +18 -1
  181. package/dist/session/log-hash.js.map +1 -1
  182. package/dist/store/session-index/sqlite.d.ts.map +1 -1
  183. package/dist/store/session-index/sqlite.js +169 -16
  184. package/dist/store/session-index/sqlite.js.map +1 -1
  185. package/dist/tools/builtins/bash.d.ts.map +1 -1
  186. package/dist/tools/builtins/bash.js +10 -4
  187. package/dist/tools/builtins/bash.js.map +1 -1
  188. package/dist/tools/builtins/computer-use.d.ts +35 -0
  189. package/dist/tools/builtins/computer-use.d.ts.map +1 -1
  190. package/dist/tools/builtins/computer-use.js +512 -67
  191. package/dist/tools/builtins/computer-use.js.map +1 -1
  192. package/dist/tools/builtins/glob.d.ts +1 -0
  193. package/dist/tools/builtins/glob.d.ts.map +1 -1
  194. package/dist/tools/builtins/glob.js +65 -28
  195. package/dist/tools/builtins/glob.js.map +1 -1
  196. package/dist/tools/builtins/grep.d.ts +2 -0
  197. package/dist/tools/builtins/grep.d.ts.map +1 -1
  198. package/dist/tools/builtins/grep.js +94 -40
  199. package/dist/tools/builtins/grep.js.map +1 -1
  200. package/dist/tools/builtins/job.d.ts +1 -1
  201. package/dist/tools/builtins/job.d.ts.map +1 -1
  202. package/dist/tools/builtins/job.js +34 -7
  203. package/dist/tools/builtins/job.js.map +1 -1
  204. package/dist/tools/builtins/search-support.d.ts +44 -0
  205. package/dist/tools/builtins/search-support.d.ts.map +1 -0
  206. package/dist/tools/builtins/search-support.js +89 -0
  207. package/dist/tools/builtins/search-support.js.map +1 -0
  208. package/dist/tools/builtins/wait-for-job-bounds.d.ts +2 -0
  209. package/dist/tools/builtins/wait-for-job-bounds.d.ts.map +1 -1
  210. package/dist/tools/builtins/wait-for-job-bounds.js +3 -1
  211. package/dist/tools/builtins/wait-for-job-bounds.js.map +1 -1
  212. package/dist/tools/builtins/wait-for-job.d.ts +1 -1
  213. package/dist/tools/builtins/wait-for-job.d.ts.map +1 -1
  214. package/dist/tools/builtins/wait-for-job.js +13 -2
  215. package/dist/tools/builtins/wait-for-job.js.map +1 -1
  216. package/dist/tools/command-shell.d.ts.map +1 -1
  217. package/dist/tools/command-shell.js +14 -5
  218. package/dist/tools/command-shell.js.map +1 -1
  219. package/dist/types/computer-use/index.d.ts +129 -13
  220. package/dist/types/computer-use/index.d.ts.map +1 -1
  221. package/dist/types/computer-use/index.js.map +1 -1
  222. package/dist/types/errors/catalog.d.ts.map +1 -1
  223. package/dist/types/errors/catalog.js +6 -0
  224. package/dist/types/errors/catalog.js.map +1 -1
  225. package/dist/types/plugin/index.d.ts +24 -0
  226. package/dist/types/plugin/index.d.ts.map +1 -1
  227. package/dist/types/plugin/index.js +4 -0
  228. package/dist/types/plugin/index.js.map +1 -1
  229. package/dist/types/provider/errors.d.ts +7 -0
  230. package/dist/types/provider/errors.d.ts.map +1 -1
  231. package/dist/types/provider/errors.js +27 -3
  232. package/dist/types/provider/errors.js.map +1 -1
  233. package/dist/types/sandbox/index.d.ts +38 -1
  234. package/dist/types/sandbox/index.d.ts.map +1 -1
  235. package/dist/types/sandbox/index.js.map +1 -1
  236. package/dist/types/session/records.d.ts +479 -1
  237. package/dist/types/session/records.d.ts.map +1 -1
  238. package/dist/types/session/records.js +45 -1
  239. package/dist/types/session/records.js.map +1 -1
  240. package/dist/types/tool/index.d.ts +30 -0
  241. package/dist/types/tool/index.d.ts.map +1 -1
  242. package/dist/types/tool/index.js.map +1 -1
  243. package/dist/types/tool/presentation.d.ts +8 -0
  244. package/dist/types/tool/presentation.d.ts.map +1 -1
  245. package/package.json +1 -1
  246. package/src/account/binding.ts +43 -0
  247. package/src/account/index.ts +32 -0
  248. package/src/account/lock.ts +184 -0
  249. package/src/account/registry.ts +413 -0
  250. package/src/account/types.ts +137 -0
  251. package/src/compaction/context-window.ts +163 -2
  252. package/src/execution/workflow/index.ts +14 -1
  253. package/src/execution/workflow/journal.ts +161 -11
  254. package/src/execution/workflow/prelude.ts +51 -8
  255. package/src/execution/workflow/resume.ts +313 -0
  256. package/src/execution/workflow/runtime.ts +127 -9
  257. package/src/execution/workflow/types.ts +109 -1
  258. package/src/index.ts +17 -0
  259. package/src/peers/record.ts +18 -0
  260. package/src/peers/registry.ts +2 -2
  261. package/src/plugin/compat.ts +173 -0
  262. package/src/plugin/loader.ts +7 -1
  263. package/src/pricing/index.ts +2 -1
  264. package/src/process/kill-tree.ts +106 -4
  265. package/src/prompt/coding-agent-doctrine.ts +9 -1
  266. package/src/provider/errors.ts +27 -1
  267. package/src/provider/model-window-suffix.ts +84 -0
  268. package/src/provider/token-budget.ts +9 -3
  269. package/src/public-runtime.ts +38 -2
  270. package/src/public-types.ts +16 -0
  271. package/src/registry/command/kernel-commands.ts +1 -32
  272. package/src/runtime/jobs/awaited-jobs.ts +11 -0
  273. package/src/runtime/jobs/host-exit-finalizer.ts +67 -0
  274. package/src/runtime/jobs/liveness.ts +144 -0
  275. package/src/runtime/jobs/registry.ts +114 -2
  276. package/src/runtime/jobs/wake-budget.ts +55 -0
  277. package/src/runtime/query/detached-calls.ts +135 -0
  278. package/src/runtime/query/executor.ts +102 -12
  279. package/src/runtime/query/index.ts +50 -7
  280. package/src/runtime/query/iteration/outstanding-work.ts +12 -3
  281. package/src/runtime/query/iteration/phases/context.ts +7 -0
  282. package/src/runtime/query/iteration/phases/tool-review.ts +73 -8
  283. package/src/runtime/query/session-storage.ts +8 -3
  284. package/src/runtime/query/steering.ts +77 -6
  285. package/src/runtime/query/tooling.ts +2 -0
  286. package/src/runtime/system-events.ts +12 -1
  287. package/src/sandbox/denial.ts +79 -0
  288. package/src/sandbox/file-walk-program.ts +32 -13
  289. package/src/sandbox/file-walk.ts +75 -12
  290. package/src/sandbox/ignore-matcher.ts +46 -0
  291. package/src/sandbox/ignore-source.ts +220 -0
  292. package/src/sandbox/provider/local.ts +11 -1
  293. package/src/scheduler/completion-inbox.ts +1 -0
  294. package/src/session/log-hash.ts +21 -0
  295. package/src/store/session-index/sqlite.ts +171 -16
  296. package/src/tools/builtins/bash.ts +11 -4
  297. package/src/tools/builtins/computer-use.ts +593 -68
  298. package/src/tools/builtins/glob.ts +79 -32
  299. package/src/tools/builtins/grep.ts +107 -43
  300. package/src/tools/builtins/job.ts +42 -12
  301. package/src/tools/builtins/search-support.ts +107 -0
  302. package/src/tools/builtins/wait-for-job-bounds.ts +5 -1
  303. package/src/tools/builtins/wait-for-job.ts +14 -2
  304. package/src/tools/command-shell.ts +13 -5
  305. package/src/types/computer-use/index.ts +157 -15
  306. package/src/types/errors/catalog.ts +6 -0
  307. package/src/types/plugin/index.ts +8 -0
  308. package/src/types/provider/errors.ts +40 -3
  309. package/src/types/sandbox/index.ts +40 -1
  310. package/src/types/session/records.ts +52 -2
  311. package/src/types/tool/index.ts +30 -0
  312. package/src/types/tool/presentation.ts +8 -0
@@ -7,6 +7,7 @@ import { defineTool } from '../defineTool.js';
7
7
  import { resolveWithin, resolveWithinAny, resolveWithinAnyReal, resolveWithinReal, toolRoots, } from '../paths.js';
8
8
  import { relativePosix, resolveWithinPosix } from '../posix-path.js';
9
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';
10
11
  /** A remote read has no signal parameter; stop consuming it when the turn ends. */
11
12
  async function readWithSignal(read, signal) {
12
13
  signal?.throwIfAborted();
@@ -145,6 +146,14 @@ const inputSchema = z.object({
145
146
  .string()
146
147
  .optional()
147
148
  .describe('Only search files of this kind, e.g. "js", "ts", "py", "rust", "go", "java", "md". Narrows what include selects.'),
149
+ include_hidden: z
150
+ .boolean()
151
+ .optional()
152
+ .describe('Search hidden files and directories (names starting with a dot). Default: true. Version-control directories are always skipped.'),
153
+ include_ignored: z
154
+ .boolean()
155
+ .optional()
156
+ .describe('Also search files that .gitignore and .ignore rules exclude, such as build output and dependencies. Default: false.'),
148
157
  max_results: z.coerce
149
158
  .number()
150
159
  .int()
@@ -154,7 +163,6 @@ const inputSchema = z.object({
154
163
  });
155
164
  const MAX_FILE_SIZE = 5 * 1024 * 1024; // 5 MB — skip binaries/large files
156
165
  const BINARY_CHECK_BYTES = 512;
157
- const MAX_VISITED_ENTRIES = 20_000;
158
166
  function isBinaryContent(buffer) {
159
167
  const check = buffer.subarray(0, BINARY_CHECK_BYTES);
160
168
  for (const byte of check) {
@@ -165,7 +173,7 @@ function isBinaryContent(buffer) {
165
173
  }
166
174
  export const GrepTool = defineTool({
167
175
  name: 'grep',
168
- 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 with a bounded traversal and identifies incomplete searches. Skips binary files, files over 5 MB, and symlinks. Choose the narrowest relevant directory.',
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.',
169
177
  inputSchema,
170
178
  category: 'analysis',
171
179
  // Declared so a path outside the turn's roots can be reviewed before the
@@ -230,14 +238,18 @@ export const GrepTool = defineTool({
230
238
  error: 'This sandbox does not support bounded file discovery (Sandbox.walkFiles). Update its adapter before searching file contents.',
231
239
  };
232
240
  }
241
+ const budget = openSearchBudget(context.abortSignal);
242
+ const signal = budget.signal;
243
+ let walkEnd;
233
244
  const options = {
234
245
  pattern: filePattern,
235
- signal: context.abortSignal,
236
- maxEntries: MAX_VISITED_ENTRIES + 1,
237
- maxVisitedEntries: MAX_VISITED_ENTRIES,
238
- // Preserve existing source behavior: sandbox grep included dotfiles;
239
- // node's host glob excluded wildcard dotfiles.
240
- includeHidden: sandbox !== undefined,
246
+ signal,
247
+ maxEntries: MAX_FILES_SEARCHED + 1,
248
+ includeHidden: input.include_hidden ?? true,
249
+ respectIgnore: input.include_ignored !== true,
250
+ onSummary: (value) => {
251
+ walkEnd = value;
252
+ },
241
253
  };
242
254
  const entries = walkSandbox ? walkSandbox(root, options) : walkFilesLocally(root, options);
243
255
  // `execute` is reachable without the schema's defaults.
@@ -254,40 +266,51 @@ export const GrepTool = defineTool({
254
266
  let totalMatches = 0;
255
267
  let filesSearched = 0;
256
268
  let filesMatched = 0;
257
- let truncated = false;
258
269
  let pageHasMore = false;
259
270
  let failure;
260
271
  let unreadableFiles = 0;
272
+ let timedOut = false;
273
+ let legacyEntryLimit = false;
274
+ let fileLimit = false;
275
+ // A file list is ordered newest first, so the walk cannot stop at the
276
+ // first page: it reads a generous multiple of it, then sorts and pages.
277
+ // The count includes the offset, so every page the model is told to ask
278
+ // for can be served.
279
+ const filesToCollect = headLimit > 0 ? offset + Math.max(headLimit * 4, 1000) : Number.POSITIVE_INFINITY;
280
+ let enough = false;
261
281
  try {
262
282
  for await (const entry of entries) {
263
- context.abortSignal?.throwIfAborted();
283
+ signal?.throwIfAborted();
264
284
  const filePath = sandbox
265
285
  ? resolveWithinPosix(root, entry.path)
266
286
  : resolveWithin(root, entry.path);
267
- if (filesSearched >= MAX_VISITED_ENTRIES) {
268
- throw new Error(`File search stopped after examining ${MAX_VISITED_ENTRIES} files; narrow its root or include pattern.`);
287
+ if (filesSearched >= MAX_FILES_SEARCHED) {
288
+ fileLimit = true;
289
+ break;
269
290
  }
270
291
  filesSearched++;
271
292
  if (fileType && !matchesType(entry.path, fileType))
272
293
  continue;
273
294
  if (entry.size > MAX_FILE_SIZE)
274
295
  continue;
296
+ if (isReadDenied(context, filePath, sandbox?.rootDir))
297
+ continue;
275
298
  let content;
276
299
  let contained;
277
300
  try {
278
301
  const buffer = await readWithSignal(() => sandbox
279
- ? readBoundedChunks((offset, length) => sandbox.readFile(filePath, { offset, length, signal: context.abortSignal }), MAX_FILE_SIZE, context.abortSignal)
302
+ ? readBoundedChunks((offset, length) => sandbox.readFile(filePath, { offset, length, signal: signal }), MAX_FILE_SIZE, signal)
280
303
  : resolveWithinReal(root, filePath).then((path) => {
281
304
  contained = path;
282
- return readBoundedFile(path, MAX_FILE_SIZE, context.abortSignal);
283
- }), context.abortSignal);
284
- context.abortSignal?.throwIfAborted();
305
+ return readBoundedFile(path, MAX_FILE_SIZE, signal);
306
+ }), signal);
307
+ signal?.throwIfAborted();
285
308
  if (buffer.length > MAX_FILE_SIZE || isBinaryContent(buffer))
286
309
  continue;
287
310
  content = buffer.toString('utf-8');
288
311
  }
289
312
  catch (error) {
290
- if (context.abortSignal?.aborted)
313
+ if (signal?.aborted)
291
314
  throw error;
292
315
  unreadableFiles++;
293
316
  continue;
@@ -295,13 +318,11 @@ export const GrepTool = defineTool({
295
318
  const lines = content.split('\n');
296
319
  let fileMatches = 0;
297
320
  const relPath = sandbox
298
- ? `./${relativePosix(sandbox.rootDir, filePath)}`
299
- : `./${relative(context.workingDirectory, join(lexicalRoot, relative(root, filePath)))
300
- .split(sep)
301
- .join('/')}`;
321
+ ? relativePosix(sandbox.rootDir, filePath)
322
+ : hostDisplayPath(context.workingDirectory, join(lexicalRoot, relative(root, filePath)));
302
323
  if (mode === 'content' && input.only_matching) {
303
324
  for (const fragment of matchingFragments(content, regex, multiline)) {
304
- context.abortSignal?.throwIfAborted();
325
+ signal?.throwIfAborted();
305
326
  if (fileMatches++ === 0)
306
327
  filesMatched++;
307
328
  totalMatches++;
@@ -320,7 +341,7 @@ export const GrepTool = defineTool({
320
341
  // Count mode reports matching lines, so a line covered twice counts once.
321
342
  const countedLines = new Set();
322
343
  for (const [first, last] of hits) {
323
- context.abortSignal?.throwIfAborted();
344
+ signal?.throwIfAborted();
324
345
  if (fileMatches === 0)
325
346
  filesMatched++;
326
347
  fileMatches++;
@@ -363,18 +384,36 @@ export const GrepTool = defineTool({
363
384
  }
364
385
  if (pageHasMore)
365
386
  break;
387
+ if (mode === 'files_with_matches' && matchedFiles.length >= filesToCollect) {
388
+ enough = true;
389
+ break;
390
+ }
366
391
  }
367
392
  }
368
393
  catch (error) {
369
- truncated = true;
370
- failure = (error instanceof Error ? error.message : String(error)) || 'File search failed.';
394
+ // A caller's cancellation is reported with the matches already found:
395
+ // grep-search-scope.test.ts pins that, so a cancelled search keeps what it read.
396
+ if (budget.expired())
397
+ timedOut = true;
398
+ else if (isEntryLimit(error))
399
+ legacyEntryLimit = true;
400
+ else
401
+ failure = (error instanceof Error ? error.message : String(error)) || 'File search failed.';
371
402
  }
372
- if (unreadableFiles > 0) {
373
- truncated = true;
374
- failure ??= `${unreadableFiles} file(s) could not be read.`;
403
+ finally {
404
+ budget.close();
405
+ }
406
+ const endState = walkEnd;
407
+ const entryLimit = endState?.stopped === 'entry-limit' || legacyEntryLimit;
408
+ const stoppedEarly = timedOut || entryLimit || fileLimit;
409
+ if (timedOut && totalMatches === 0 && failure === undefined) {
410
+ return {
411
+ success: false,
412
+ output: '',
413
+ error: `Search timed out after ${SEARCH_BUDGET_MS / 1000} seconds with no matches. Try a more specific path or pattern.`,
414
+ };
375
415
  }
376
- if (pageHasMore)
377
- truncated = true;
416
+ const truncated = stoppedEarly || pageHasMore || enough || failure !== undefined;
378
417
  // Entries as the model will page through them.
379
418
  let entriesOut;
380
419
  if (mode === 'content') {
@@ -390,7 +429,7 @@ export const GrepTool = defineTool({
390
429
  const page = headLimit === 0 ? entriesOut.slice(offset) : entriesOut.slice(offset, offset + headLimit);
391
430
  // Reported only when it did something, like a `| head`: a limit that cut
392
431
  // nothing off is not news.
393
- const moreRemain = headLimit > 0 && (pageHasMore || total - offset > headLimit);
432
+ const moreRemain = headLimit > 0 && (pageHasMore || enough || total - offset > headLimit);
394
433
  const paging = [
395
434
  ...(moreRemain ? [`limit: ${headLimit}`] : []),
396
435
  ...(offset > 0 ? [`offset: ${offset}`] : []),
@@ -402,9 +441,12 @@ export const GrepTool = defineTool({
402
441
  summary =
403
442
  offset > 0 && total > 0
404
443
  ? 'No entries at this offset.'
405
- : truncated
444
+ : stoppedEarly || failure !== undefined || unreadableFiles > 0
406
445
  ? `No matches found in the files searched for pattern "${input.pattern}"`
407
446
  : `No matches found for pattern "${input.pattern}"`;
447
+ if ((endState?.ignoredDirectories ?? 0) > 0 && offset === 0) {
448
+ summary = `${summary}\n${ignoredHint(endState?.ignoredDirectories ?? 0)}`;
449
+ }
408
450
  }
409
451
  else if (mode === 'files_with_matches') {
410
452
  body = `Found ${page.length} ${page.length === 1 ? 'file' : 'files'}${paging ? ` (${paging})` : ''}\n${page.join('\n')}`;
@@ -417,21 +459,31 @@ export const GrepTool = defineTool({
417
459
  body = page.join('\n');
418
460
  summary = `Found ${totalMatches} match(es) in ${filesMatched} file(s) (${filesSearched} files searched)${offset > 0 ? ` from offset ${offset}` : ''}`;
419
461
  }
420
- const notice = failure
421
- ? `[Search incomplete: ${failure}]`
422
- : pageHasMore
423
- ? `[Search incomplete: the page of ${headLimit} is full, so more may follow. Pass offset to continue, or narrow the directory or include pattern.]`
424
- : truncated
425
- ? '[Search incomplete: the search did not reach every file. Narrow the directory or include pattern for a complete search.]'
426
- : undefined;
462
+ const notices = [
463
+ ...(moreRemain
464
+ ? [
465
+ `[More results are available: pass offset: ${offset + headLimit} to continue, or narrow the path or pattern.${enough ? ` Files are ordered newest first among the first ${filesToCollect.toLocaleString('en-US')} that matched.` : ''}]`,
466
+ ]
467
+ : []),
468
+ ...(stoppedEarly
469
+ ? [stoppedNotice(timedOut ? 'time' : entryLimit ? 'entries' : 'files', endState?.visited)]
470
+ : []),
471
+ ...(unreadableFiles > 0
472
+ ? [
473
+ `(${plural(unreadableFiles, 'file')} could not be read and ${unreadableFiles === 1 ? 'was' : 'were'} skipped.)`,
474
+ ]
475
+ : []),
476
+ ...(failure ? [`[Search incomplete: ${failure}]`] : []),
477
+ ];
427
478
  return {
428
479
  success: failure === undefined,
429
- output: [body, summary, notice].filter(Boolean).join('\n\n'),
480
+ output: [body, summary, ...notices].filter(Boolean).join('\n\n'),
430
481
  data: {
431
482
  totalMatches,
432
483
  filesSearched,
433
484
  filesMatched,
434
485
  truncated,
486
+ ...(stoppedEarly ? { incomplete: true } : {}),
435
487
  mode,
436
488
  ...(moreRemain ? { appliedLimit: headLimit } : {}),
437
489
  ...(offset > 0 ? { appliedOffset: offset } : {}),
@@ -444,6 +496,8 @@ export const GrepTool = defineTool({
444
496
  filesMatched,
445
497
  filesSearched,
446
498
  truncated,
499
+ ...(moreRemain ? { limited: true } : {}),
500
+ ...(stoppedEarly ? { incomplete: true } : {}),
447
501
  },
448
502
  ...(failure ? { error: failure } : {}),
449
503
  };
@@ -1 +1 @@
1
- {"version":3,"file":"grep.js","sourceRoot":"","sources":["../../../src/tools/builtins/grep.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grep.js","sourceRoot":"","sources":["../../../src/tools/builtins/grep.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export declare const JobTool: import("../../public-types.js").ToolDefinition<{
2
- action: "read" | "list" | "kill";
2
+ action: "read" | "kill" | "list";
3
3
  id?: string | undefined;
4
4
  from_offset?: number | undefined;
5
5
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../../../src/tools/builtins/job.ts"],"names":[],"mappings":"AA2CA,eAAO,MAAM,OAAO;;;;EAgHlB,CAAA"}
1
+ {"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../../../src/tools/builtins/job.ts"],"names":[],"mappings":"AAgDA,eAAO,MAAM,OAAO;;;;EAyIlB,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { invalidBackgroundJobIdInput } from '../../runtime/jobs/job-id.js';
3
+ import { formatLivenessAge, formatLivenessLine, judgeLiveness, } from '../../runtime/jobs/liveness.js';
3
4
  import { defineTool } from '../defineTool.js';
4
5
  /**
5
6
  * Read, list and stop the work `bash run_in_background` started.
@@ -17,7 +18,7 @@ import { defineTool } from '../defineTool.js';
17
18
  const inputSchema = z.object({
18
19
  action: z
19
20
  .enum(['read', 'list', 'kill'])
20
- .describe('read: output since `from_offset`. list: every background job this turn started, with status. kill: stop a job and everything it forked.'),
21
+ .describe('read: output since `from_offset`. list: every background job this turn started, each running one with whether it is progressing, waiting or stalled, how long since its last output, and its last output line. kill: stop a job and everything it forked.'),
21
22
  id: z
22
23
  .string()
23
24
  .optional()
@@ -59,13 +60,30 @@ export const JobTool = defineTool({
59
60
  const all = jobs.list();
60
61
  if (all.length === 0)
61
62
  return { success: true, output: 'No background jobs.' };
63
+ const now = Date.now();
64
+ const lines = all.map((job) => {
65
+ const label = job.kind === 'monitor' ? (job.description ?? job.command) : job.command;
66
+ if (job.startedAt === undefined) {
67
+ return `${job.id} ${job.status.padEnd(8)} ${job.kind === 'monitor' ? `monitor · ${label}` : label}`;
68
+ }
69
+ const liveness = judgeLiveness({
70
+ kind: job.kind === 'monitor' ? 'monitor' : 'job',
71
+ id: job.id,
72
+ label,
73
+ ...(job.lastOutputLine !== undefined ? { where: job.lastOutputLine } : {}),
74
+ startedAt: job.startedAt,
75
+ ...(job.lastOutputAt !== undefined ? { lastProgressAt: job.lastOutputAt } : {}),
76
+ alive: job.status === 'running' && (jobs.isAlive ? jobs.isAlive(job.id) : true),
77
+ finished: job.status !== 'running',
78
+ }, now);
79
+ // An ended job keeps its status word, which carries the exit.
80
+ return job.status === 'running'
81
+ ? formatLivenessLine(liveness)
82
+ : `${job.id} ${job.status.padEnd(8)} ${label}`;
83
+ });
62
84
  return {
63
85
  success: true,
64
- // A monitor is named by what it watches: its command is the means,
65
- // and the description is what the model wrote to tell its watches apart.
66
- output: all
67
- .map((job) => `${job.id} ${job.status.padEnd(8)} ${job.kind === 'monitor' ? `monitor · ${job.description ?? job.command}` : job.command}`)
68
- .join('\n'),
86
+ output: lines.join('\n'),
69
87
  data: { jobs: all },
70
88
  };
71
89
  }
@@ -91,14 +109,23 @@ export const JobTool = defineTool({
91
109
  const read = jobs.read(input.id, {
92
110
  ...(input.from_offset === undefined ? {} : { fromOffset: input.from_offset }),
93
111
  });
112
+ // A stopped job read to its end is collected: its exit notice would only
113
+ // repeat what this result says. A read always reaches the end of the
114
+ // output; what it can miss is bytes the retention cap dropped, and then
115
+ // the notice stays.
116
+ if (read.status !== 'running' && read.droppedBytes === 0)
117
+ jobs.markCollected?.(input.id);
94
118
  // The dropped count is stated, never absorbed. A job whose middle
95
119
  // vanished quietly reads as a complete result that happens to be
96
120
  // short, and the model concludes the build passed.
97
121
  const notice = read.droppedBytes > 0
98
122
  ? `[${read.droppedBytes} bytes were dropped before this point — the job produced output faster than the retention cap holds]\n`
99
123
  : '';
124
+ const lastOutputAt = read.status === 'running' ? jobs.get(input.id)?.lastOutputAt : undefined;
100
125
  const status = read.status === 'running'
101
- ? 'still running'
126
+ ? `still running${lastOutputAt === undefined
127
+ ? '; no output yet'
128
+ : `; last output ${formatLivenessAge((Date.now() - lastOutputAt) / 1000)} ago`}`
102
129
  : read.error !== undefined
103
130
  ? `failed to start: ${read.error}`
104
131
  : `${read.status}${read.exitCode === undefined ? '' : ` with code ${read.exitCode}`}`;
@@ -1 +1 @@
1
- {"version":3,"file":"job.js","sourceRoot":"","sources":["../../../src/tools/builtins/job.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"job.js","sourceRoot":"","sources":["../../../src/tools/builtins/job.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * How long grep and glob search before they return what they have. The tool
3
+ * deadline (15 s) cancels a call outright and discards its output; a search
4
+ * that ends itself a little earlier can still hand back its matches.
5
+ */
6
+ export declare const SEARCH_BUDGET_MS = 12000;
7
+ /** Matching files a search reads at most; past it the search ends with what it has. */
8
+ export declare const MAX_FILES_SEARCHED = 50000;
9
+ export interface SearchBudget {
10
+ /** Fires when the caller cancels or the budget runs out. */
11
+ readonly signal: AbortSignal;
12
+ /** True only when the budget ran out, not when the caller cancelled. */
13
+ expired(): boolean;
14
+ close(): void;
15
+ }
16
+ /** A signal that follows `parent` and also fires when the search budget is spent. */
17
+ export declare function openSearchBudget(parent?: AbortSignal, budgetMs?: number): SearchBudget;
18
+ /**
19
+ * A file as the model sees it: relative to the working directory when it lies
20
+ * under it, otherwise absolute. Never prefixed with `./`.
21
+ */
22
+ export declare function hostDisplayPath(workingDirectory: string, absolute: string): string;
23
+ /** Keep unusual filenames unambiguous without changing the returned path data. */
24
+ export declare function quoteControlPath(path: string): string;
25
+ export declare function plural(count: number, one: string, many?: string): string;
26
+ /** The line that tells the model why a search stopped before it finished. */
27
+ export declare function stoppedNotice(reason: 'time' | 'entries' | 'files', visited?: number): string;
28
+ /** Tells the model that an empty result may hide files an ignore rule excluded. */
29
+ export declare function ignoredHint(ignoredDirectories: number): string;
30
+ /** A walker written before the entry bound became a normal stop still throws this. */
31
+ export declare function isEntryLimit(error: unknown): boolean;
32
+ /**
33
+ * Whether the session's read rules deny this file, so a search neither lists
34
+ * nor opens it. `path` is absolute: a host path, or, when `sandboxRoot` is
35
+ * given, a path inside the sandbox, which is mapped to the same place under
36
+ * the working directory because that is the folder the sandbox binds; a path
37
+ * outside that folder is denied. A host
38
+ * that supplies no rules (`ToolContext.readDenied` absent) denies nothing.
39
+ */
40
+ export declare function isReadDenied(context: {
41
+ workingDirectory: string;
42
+ readDenied?: (path: string) => boolean;
43
+ }, path: string, sandboxRoot?: string): boolean;
44
+ //# sourceMappingURL=search-support.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-support.d.ts","sourceRoot":"","sources":["../../../src/tools/builtins/search-support.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,QAAS,CAAA;AAEtC,uFAAuF;AACvF,eAAO,MAAM,kBAAkB,QAAS,CAAA;AAExC,MAAM,WAAW,YAAY;IAC5B,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,wEAAwE;IACxE,OAAO,IAAI,OAAO,CAAA;IAClB,KAAK,IAAI,IAAI,CAAA;CACb;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,QAAQ,SAAmB,GAAG,YAAY,CAkBhG;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKlF;AAED,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,SAAY,GAAG,MAAM,CAE3E;AAED,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ5F;AAED,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,kBAAkB,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEpD;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC3B,OAAO,EAAE;IAAE,gBAAgB,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;CAAE,EAC7E,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,GAClB,OAAO,CAST"}
@@ -0,0 +1,89 @@
1
+ import { isAbsolute, join as joinPath, posix, relative, sep } from 'node:path';
2
+ import { subscribeToAbort } from '../../utils/abort.js';
3
+ /**
4
+ * How long grep and glob search before they return what they have. The tool
5
+ * deadline (15 s) cancels a call outright and discards its output; a search
6
+ * that ends itself a little earlier can still hand back its matches.
7
+ */
8
+ export const SEARCH_BUDGET_MS = 12_000;
9
+ /** Matching files a search reads at most; past it the search ends with what it has. */
10
+ export const MAX_FILES_SEARCHED = 50_000;
11
+ /** A signal that follows `parent` and also fires when the search budget is spent. */
12
+ export function openSearchBudget(parent, budgetMs = SEARCH_BUDGET_MS) {
13
+ const controller = new AbortController();
14
+ let spent = false;
15
+ const stopWatching = parent
16
+ ? subscribeToAbort(parent, () => controller.abort(parent.reason))
17
+ : undefined;
18
+ const timer = setTimeout(() => {
19
+ spent = true;
20
+ controller.abort(new Error('search budget spent'));
21
+ }, budgetMs);
22
+ return {
23
+ signal: controller.signal,
24
+ expired: () => spent && !parent?.aborted,
25
+ close() {
26
+ clearTimeout(timer);
27
+ stopWatching?.();
28
+ },
29
+ };
30
+ }
31
+ /**
32
+ * A file as the model sees it: relative to the working directory when it lies
33
+ * under it, otherwise absolute. Never prefixed with `./`.
34
+ */
35
+ export function hostDisplayPath(workingDirectory, absolute) {
36
+ const rel = relative(workingDirectory, absolute);
37
+ if (rel === '')
38
+ return '.';
39
+ if (rel === '..' || rel.startsWith(`..${sep}`) || isAbsolute(rel))
40
+ return absolute;
41
+ return sep === '/' ? rel : rel.split(sep).join('/');
42
+ }
43
+ /** Keep unusual filenames unambiguous without changing the returned path data. */
44
+ export function quoteControlPath(path) {
45
+ // biome-ignore lint/suspicious/noControlCharactersInRegex: quote filenames containing control bytes instead of creating fake result lines.
46
+ return /[\x00-\x1f\x7f]/.test(path) ? JSON.stringify(path) : path;
47
+ }
48
+ export function plural(count, one, many = `${one}s`) {
49
+ return `${count.toLocaleString('en-US')} ${count === 1 ? one : many}`;
50
+ }
51
+ /** The line that tells the model why a search stopped before it finished. */
52
+ export function stoppedNotice(reason, visited) {
53
+ const how = reason === 'time'
54
+ ? `after ${SEARCH_BUDGET_MS / 1000} seconds`
55
+ : reason === 'entries'
56
+ ? `after examining ${(visited ?? 0).toLocaleString('en-US')} entries`
57
+ : `after reading ${MAX_FILES_SEARCHED.toLocaleString('en-US')} files`;
58
+ return `[Search stopped early ${how}. Results may be incomplete; narrow the path or pattern, or add an ignore rule.]`;
59
+ }
60
+ /** Tells the model that an empty result may hide files an ignore rule excluded. */
61
+ export function ignoredHint(ignoredDirectories) {
62
+ return `(${plural(ignoredDirectories, 'ignored directory', 'ignored directories')} skipped by ignore rules; pass include_ignored: true to search ${ignoredDirectories === 1 ? 'it' : 'them'}.)`;
63
+ }
64
+ /** A walker written before the entry bound became a normal stop still throws this. */
65
+ export function isEntryLimit(error) {
66
+ return error?.code === 'ERR_FILE_WALK_LIMIT';
67
+ }
68
+ /**
69
+ * Whether the session's read rules deny this file, so a search neither lists
70
+ * nor opens it. `path` is absolute: a host path, or, when `sandboxRoot` is
71
+ * given, a path inside the sandbox, which is mapped to the same place under
72
+ * the working directory because that is the folder the sandbox binds; a path
73
+ * outside that folder is denied. A host
74
+ * that supplies no rules (`ToolContext.readDenied` absent) denies nothing.
75
+ */
76
+ export function isReadDenied(context, path, sandboxRoot) {
77
+ if (!context.readDenied)
78
+ return false;
79
+ if (sandboxRoot === undefined)
80
+ return context.readDenied(path);
81
+ const relative = posix.relative(sandboxRoot, path);
82
+ // A guest path outside the bound folder has no host counterpart the rules
83
+ // could be checked against, so a session that has read rules does not list
84
+ // or open it.
85
+ if (relative === '..' || relative.startsWith('../') || posix.isAbsolute(relative))
86
+ return true;
87
+ return context.readDenied(joinPath(context.workingDirectory, relative));
88
+ }
89
+ //# sourceMappingURL=search-support.js.map