Files
oh-my-opencode/src/tools/grep/tools.ts
T
YeonGyu-Kim 71ac09bb63 fix: use process.cwd() instead of ctx.directory for glob/grep tools
ToolContext type from @opencode-ai/plugin/tool does not include
a 'directory' property, causing typecheck failure after rebase from dev.

Changed to use process.cwd() which is the same pattern used in
session-manager/tools.ts.
2026-02-05 02:23:48 +09:00

43 lines
1.5 KiB
TypeScript

import { tool, type ToolDefinition } from "@opencode-ai/plugin/tool"
import { runRg } from "./cli"
import { formatGrepResult } from "./utils"
export const grep: ToolDefinition = tool({
description:
"Fast content search tool with safety limits (60s timeout, 10MB output). " +
"Searches file contents using regular expressions. " +
"Supports full regex syntax (eg. \"log.*Error\", \"function\\s+\\w+\", etc.). " +
"Filter files by pattern with the include parameter (eg. \"*.js\", \"*.{ts,tsx}\"). " +
"Returns file paths with matches sorted by modification time.",
args: {
pattern: tool.schema.string().describe("The regex pattern to search for in file contents"),
include: tool.schema
.string()
.optional()
.describe("File pattern to include in the search (e.g. \"*.js\", \"*.{ts,tsx}\")"),
path: tool.schema
.string()
.optional()
.describe("The directory to search in. Defaults to the current working directory."),
},
execute: async (args) => {
try {
const globs = args.include ? [args.include] : undefined
// Use process.cwd() as the default search path when no path is provided
const searchPath = args.path ?? process.cwd()
const paths = [searchPath]
const result = await runRg({
pattern: args.pattern,
paths,
globs,
context: 0,
})
return formatGrepResult(result)
} catch (e) {
return `Error: ${e instanceof Error ? e.message : String(e)}`
}
},
})