@namzu/sdk 59.0.0 → 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.
- package/CHANGELOG.md +102 -0
- package/dist/compaction/context-window.d.ts +53 -0
- package/dist/compaction/context-window.d.ts.map +1 -1
- package/dist/compaction/context-window.js +141 -2
- package/dist/compaction/context-window.js.map +1 -1
- package/dist/execution/workflow/index.d.ts +3 -1
- package/dist/execution/workflow/index.d.ts.map +1 -1
- package/dist/execution/workflow/index.js +2 -1
- package/dist/execution/workflow/index.js.map +1 -1
- package/dist/execution/workflow/journal.d.ts +24 -4
- package/dist/execution/workflow/journal.d.ts.map +1 -1
- package/dist/execution/workflow/journal.js +131 -9
- package/dist/execution/workflow/journal.js.map +1 -1
- package/dist/execution/workflow/prelude.d.ts +2 -0
- package/dist/execution/workflow/prelude.d.ts.map +1 -1
- package/dist/execution/workflow/prelude.js +49 -8
- package/dist/execution/workflow/prelude.js.map +1 -1
- package/dist/execution/workflow/resume.d.ts +59 -0
- package/dist/execution/workflow/resume.d.ts.map +1 -0
- package/dist/execution/workflow/resume.js +273 -0
- package/dist/execution/workflow/resume.js.map +1 -0
- package/dist/execution/workflow/runtime.d.ts.map +1 -1
- package/dist/execution/workflow/runtime.js +112 -8
- package/dist/execution/workflow/runtime.js.map +1 -1
- package/dist/execution/workflow/types.d.ts +105 -1
- package/dist/execution/workflow/types.d.ts.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/plugin/compat.d.ts +24 -0
- package/dist/plugin/compat.d.ts.map +1 -0
- package/dist/plugin/compat.js +149 -0
- package/dist/plugin/compat.js.map +1 -0
- package/dist/plugin/loader.d.ts +2 -1
- package/dist/plugin/loader.d.ts.map +1 -1
- package/dist/plugin/loader.js +6 -0
- package/dist/plugin/loader.js.map +1 -1
- package/dist/pricing/index.d.ts.map +1 -1
- package/dist/pricing/index.js +2 -1
- package/dist/pricing/index.js.map +1 -1
- package/dist/process/kill-tree.d.ts +44 -0
- package/dist/process/kill-tree.d.ts.map +1 -1
- package/dist/process/kill-tree.js +102 -4
- package/dist/process/kill-tree.js.map +1 -1
- package/dist/prompt/coding-agent-doctrine.d.ts +1 -1
- package/dist/prompt/coding-agent-doctrine.d.ts.map +1 -1
- package/dist/prompt/coding-agent-doctrine.js +9 -1
- package/dist/prompt/coding-agent-doctrine.js.map +1 -1
- package/dist/provider/model-window-suffix.d.ts +18 -0
- package/dist/provider/model-window-suffix.d.ts.map +1 -0
- package/dist/provider/model-window-suffix.js +77 -0
- package/dist/provider/model-window-suffix.js.map +1 -0
- package/dist/public-runtime.d.ts +5 -3
- package/dist/public-runtime.d.ts.map +1 -1
- package/dist/public-runtime.js +5 -4
- package/dist/public-runtime.js.map +1 -1
- package/dist/public-types.d.ts +1 -0
- package/dist/public-types.d.ts.map +1 -1
- package/dist/registry/command/kernel-commands.d.ts +1 -4
- package/dist/registry/command/kernel-commands.d.ts.map +1 -1
- package/dist/registry/command/kernel-commands.js +0 -28
- package/dist/registry/command/kernel-commands.js.map +1 -1
- package/dist/runtime/jobs/awaited-jobs.d.ts +6 -0
- package/dist/runtime/jobs/awaited-jobs.d.ts.map +1 -1
- package/dist/runtime/jobs/awaited-jobs.js +11 -0
- package/dist/runtime/jobs/awaited-jobs.js.map +1 -1
- package/dist/runtime/jobs/host-exit-finalizer.d.ts +20 -0
- package/dist/runtime/jobs/host-exit-finalizer.d.ts.map +1 -0
- package/dist/runtime/jobs/host-exit-finalizer.js +57 -0
- package/dist/runtime/jobs/host-exit-finalizer.js.map +1 -0
- package/dist/runtime/jobs/liveness.d.ts +67 -0
- package/dist/runtime/jobs/liveness.d.ts.map +1 -0
- package/dist/runtime/jobs/liveness.js +94 -0
- package/dist/runtime/jobs/liveness.js.map +1 -0
- package/dist/runtime/jobs/registry.d.ts +21 -0
- package/dist/runtime/jobs/registry.d.ts.map +1 -1
- package/dist/runtime/jobs/registry.js +104 -2
- package/dist/runtime/jobs/registry.js.map +1 -1
- package/dist/runtime/jobs/wake-budget.d.ts +35 -0
- package/dist/runtime/jobs/wake-budget.d.ts.map +1 -0
- package/dist/runtime/jobs/wake-budget.js +48 -0
- package/dist/runtime/jobs/wake-budget.js.map +1 -0
- package/dist/runtime/query/detached-calls.d.ts +65 -0
- package/dist/runtime/query/detached-calls.d.ts.map +1 -0
- package/dist/runtime/query/detached-calls.js +116 -0
- package/dist/runtime/query/detached-calls.js.map +1 -0
- package/dist/runtime/query/executor.d.ts +4 -1
- package/dist/runtime/query/executor.d.ts.map +1 -1
- package/dist/runtime/query/executor.js +90 -6
- package/dist/runtime/query/executor.js.map +1 -1
- package/dist/runtime/query/index.d.ts +20 -0
- package/dist/runtime/query/index.d.ts.map +1 -1
- package/dist/runtime/query/index.js +31 -5
- package/dist/runtime/query/index.js.map +1 -1
- package/dist/runtime/query/iteration/outstanding-work.d.ts.map +1 -1
- package/dist/runtime/query/iteration/outstanding-work.js +11 -3
- package/dist/runtime/query/iteration/outstanding-work.js.map +1 -1
- package/dist/runtime/query/iteration/phases/context.d.ts +7 -0
- package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/context.js.map +1 -1
- package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/tool-review.js +63 -1
- package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
- package/dist/runtime/query/session-storage.d.ts.map +1 -1
- package/dist/runtime/query/session-storage.js +8 -3
- package/dist/runtime/query/session-storage.js.map +1 -1
- package/dist/runtime/query/steering.d.ts +29 -3
- package/dist/runtime/query/steering.d.ts.map +1 -1
- package/dist/runtime/query/steering.js +58 -3
- package/dist/runtime/query/steering.js.map +1 -1
- package/dist/runtime/query/tooling.d.ts +1 -0
- package/dist/runtime/query/tooling.d.ts.map +1 -1
- package/dist/runtime/query/tooling.js +1 -0
- package/dist/runtime/query/tooling.js.map +1 -1
- package/dist/runtime/system-events.d.ts +5 -0
- package/dist/runtime/system-events.d.ts.map +1 -1
- package/dist/runtime/system-events.js +7 -1
- package/dist/runtime/system-events.js.map +1 -1
- package/dist/sandbox/denial.d.ts +11 -0
- package/dist/sandbox/denial.d.ts.map +1 -0
- package/dist/sandbox/denial.js +61 -0
- package/dist/sandbox/denial.js.map +1 -0
- package/dist/sandbox/file-walk-program.d.ts.map +1 -1
- package/dist/sandbox/file-walk-program.js +31 -13
- package/dist/sandbox/file-walk-program.js.map +1 -1
- package/dist/sandbox/file-walk.d.ts +2 -0
- package/dist/sandbox/file-walk.d.ts.map +1 -1
- package/dist/sandbox/file-walk.js +64 -13
- package/dist/sandbox/file-walk.js.map +1 -1
- package/dist/sandbox/ignore-matcher.d.ts +30 -0
- package/dist/sandbox/ignore-matcher.d.ts.map +1 -0
- package/dist/sandbox/ignore-matcher.js +11 -0
- package/dist/sandbox/ignore-matcher.js.map +1 -0
- package/dist/sandbox/ignore-source.d.ts +26 -0
- package/dist/sandbox/ignore-source.d.ts.map +1 -0
- package/dist/sandbox/ignore-source.js +221 -0
- package/dist/sandbox/ignore-source.js.map +1 -0
- package/dist/sandbox/provider/local.d.ts.map +1 -1
- package/dist/sandbox/provider/local.js +11 -1
- package/dist/sandbox/provider/local.js.map +1 -1
- package/dist/scheduler/completion-inbox.d.ts.map +1 -1
- package/dist/scheduler/completion-inbox.js +1 -0
- package/dist/scheduler/completion-inbox.js.map +1 -1
- package/dist/session/log-hash.d.ts.map +1 -1
- package/dist/session/log-hash.js +18 -1
- package/dist/session/log-hash.js.map +1 -1
- package/dist/store/session-index/sqlite.d.ts.map +1 -1
- package/dist/store/session-index/sqlite.js +169 -16
- package/dist/store/session-index/sqlite.js.map +1 -1
- package/dist/tools/builtins/bash.d.ts.map +1 -1
- package/dist/tools/builtins/bash.js +10 -4
- package/dist/tools/builtins/bash.js.map +1 -1
- package/dist/tools/builtins/computer-use.d.ts +35 -0
- package/dist/tools/builtins/computer-use.d.ts.map +1 -1
- package/dist/tools/builtins/computer-use.js +512 -67
- package/dist/tools/builtins/computer-use.js.map +1 -1
- package/dist/tools/builtins/glob.d.ts +1 -0
- package/dist/tools/builtins/glob.d.ts.map +1 -1
- package/dist/tools/builtins/glob.js +65 -28
- package/dist/tools/builtins/glob.js.map +1 -1
- package/dist/tools/builtins/grep.d.ts +2 -0
- package/dist/tools/builtins/grep.d.ts.map +1 -1
- package/dist/tools/builtins/grep.js +94 -40
- package/dist/tools/builtins/grep.js.map +1 -1
- package/dist/tools/builtins/job.d.ts +1 -1
- package/dist/tools/builtins/job.d.ts.map +1 -1
- package/dist/tools/builtins/job.js +34 -7
- package/dist/tools/builtins/job.js.map +1 -1
- package/dist/tools/builtins/search-support.d.ts +44 -0
- package/dist/tools/builtins/search-support.d.ts.map +1 -0
- package/dist/tools/builtins/search-support.js +89 -0
- package/dist/tools/builtins/search-support.js.map +1 -0
- package/dist/tools/builtins/wait-for-job-bounds.d.ts +2 -0
- package/dist/tools/builtins/wait-for-job-bounds.d.ts.map +1 -1
- package/dist/tools/builtins/wait-for-job-bounds.js +3 -1
- package/dist/tools/builtins/wait-for-job-bounds.js.map +1 -1
- package/dist/tools/builtins/wait-for-job.d.ts +1 -1
- package/dist/tools/builtins/wait-for-job.d.ts.map +1 -1
- package/dist/tools/builtins/wait-for-job.js +13 -2
- package/dist/tools/builtins/wait-for-job.js.map +1 -1
- package/dist/tools/command-shell.d.ts.map +1 -1
- package/dist/tools/command-shell.js +14 -5
- package/dist/tools/command-shell.js.map +1 -1
- package/dist/types/computer-use/index.d.ts +129 -13
- package/dist/types/computer-use/index.d.ts.map +1 -1
- package/dist/types/computer-use/index.js.map +1 -1
- package/dist/types/plugin/index.d.ts +24 -0
- package/dist/types/plugin/index.d.ts.map +1 -1
- package/dist/types/plugin/index.js +4 -0
- package/dist/types/plugin/index.js.map +1 -1
- package/dist/types/sandbox/index.d.ts +38 -1
- package/dist/types/sandbox/index.d.ts.map +1 -1
- package/dist/types/sandbox/index.js.map +1 -1
- package/dist/types/session/records.d.ts +264 -0
- package/dist/types/session/records.d.ts.map +1 -1
- package/dist/types/session/records.js +32 -1
- package/dist/types/session/records.js.map +1 -1
- package/dist/types/tool/index.d.ts +30 -0
- package/dist/types/tool/index.d.ts.map +1 -1
- package/dist/types/tool/index.js.map +1 -1
- package/dist/types/tool/presentation.d.ts +8 -0
- package/dist/types/tool/presentation.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/compaction/context-window.ts +163 -2
- package/src/execution/workflow/index.ts +14 -1
- package/src/execution/workflow/journal.ts +161 -11
- package/src/execution/workflow/prelude.ts +51 -8
- package/src/execution/workflow/resume.ts +313 -0
- package/src/execution/workflow/runtime.ts +127 -9
- package/src/execution/workflow/types.ts +109 -1
- package/src/index.ts +17 -0
- package/src/plugin/compat.ts +173 -0
- package/src/plugin/loader.ts +7 -1
- package/src/pricing/index.ts +2 -1
- package/src/process/kill-tree.ts +106 -4
- package/src/prompt/coding-agent-doctrine.ts +9 -1
- package/src/provider/model-window-suffix.ts +84 -0
- package/src/public-runtime.ts +21 -2
- package/src/public-types.ts +1 -0
- package/src/registry/command/kernel-commands.ts +1 -32
- package/src/runtime/jobs/awaited-jobs.ts +11 -0
- package/src/runtime/jobs/host-exit-finalizer.ts +67 -0
- package/src/runtime/jobs/liveness.ts +144 -0
- package/src/runtime/jobs/registry.ts +114 -2
- package/src/runtime/jobs/wake-budget.ts +55 -0
- package/src/runtime/query/detached-calls.ts +135 -0
- package/src/runtime/query/executor.ts +92 -10
- package/src/runtime/query/index.ts +50 -7
- package/src/runtime/query/iteration/outstanding-work.ts +12 -3
- package/src/runtime/query/iteration/phases/context.ts +7 -0
- package/src/runtime/query/iteration/phases/tool-review.ts +73 -8
- package/src/runtime/query/session-storage.ts +8 -3
- package/src/runtime/query/steering.ts +77 -6
- package/src/runtime/query/tooling.ts +2 -0
- package/src/runtime/system-events.ts +12 -1
- package/src/sandbox/denial.ts +79 -0
- package/src/sandbox/file-walk-program.ts +32 -13
- package/src/sandbox/file-walk.ts +75 -12
- package/src/sandbox/ignore-matcher.ts +46 -0
- package/src/sandbox/ignore-source.ts +220 -0
- package/src/sandbox/provider/local.ts +11 -1
- package/src/scheduler/completion-inbox.ts +1 -0
- package/src/session/log-hash.ts +21 -0
- package/src/store/session-index/sqlite.ts +171 -16
- package/src/tools/builtins/bash.ts +11 -4
- package/src/tools/builtins/computer-use.ts +593 -68
- package/src/tools/builtins/glob.ts +79 -32
- package/src/tools/builtins/grep.ts +107 -43
- package/src/tools/builtins/job.ts +42 -12
- package/src/tools/builtins/search-support.ts +107 -0
- package/src/tools/builtins/wait-for-job-bounds.ts +5 -1
- package/src/tools/builtins/wait-for-job.ts +14 -2
- package/src/tools/command-shell.ts +13 -5
- package/src/types/computer-use/index.ts +157 -15
- package/src/types/plugin/index.ts +8 -0
- package/src/types/sandbox/index.ts +40 -1
- package/src/types/session/records.ts +36 -2
- package/src/types/tool/index.ts +30 -0
- 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
|
|
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
|
|
236
|
-
maxEntries:
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
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
|
-
|
|
283
|
+
signal?.throwIfAborted();
|
|
264
284
|
const filePath = sandbox
|
|
265
285
|
? resolveWithinPosix(root, entry.path)
|
|
266
286
|
: resolveWithin(root, entry.path);
|
|
267
|
-
if (filesSearched >=
|
|
268
|
-
|
|
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:
|
|
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,
|
|
283
|
-
}),
|
|
284
|
-
|
|
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 (
|
|
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
|
-
?
|
|
299
|
-
:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
370
|
-
|
|
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
|
-
|
|
373
|
-
|
|
374
|
-
|
|
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
|
-
|
|
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
|
-
:
|
|
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
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
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,
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../../../src/tools/builtins/job.ts"],"names":[],"mappings":"
|
|
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
|
|
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
|
-
|
|
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
|
-
?
|
|
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":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAA;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,MAAM,EAAE,CAAC;SACP,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;SAC9B,QAAQ,CACR,
|
|
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
|