Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
@@ -32,6 +32,7 @@ export type ListInput = typeof ListInput.Type
export { FindInput }
export const DEFAULT_SEARCH_LIMIT = 100
+export const DEFAULT_SEARCH_TIMEOUT_MS = 30_000
export class GlobInput extends Schema.Class<GlobInput>("FileSystem.GlobInput")({
pattern: Schema.String,
@@ -104,6 +104,15 @@ export const Plugin = {
limit: limit + 1,
})
.pipe(
+ Effect.timeoutOrElse({
+ duration: FileSystem.DEFAULT_SEARCH_TIMEOUT_MS,
+ orElse: () =>
+ Effect.fail(
+ new ToolFailure({
+ message: `Search timed out after ${FileSystem.DEFAULT_SEARCH_TIMEOUT_MS / 1_000} seconds. Consider using a more specific path or pattern.`,
+ }),
+ ),
Effect.map((result) =>
result.map((entry) =>
FileSystem.Entry.make({
@@ -118,6 +118,15 @@ export const Plugin = {
result.map((match) =>
FileSystem.Match.make({