feat(coding-agent): implemented pattern-based bash interceptor rules + exclusive range semantics
- Changed bash interceptor configuration from boolean flags to customizable pattern-based rules array. - Clarified hashline range replace semantics: end parameter is now strictly exclusive boundary. - Fixed bash interceptor to apply built-in default rules when no custom patterns are configured. - Updated hashline range validation and calculations to enforce exclusive end semantics throughout.
This commit is contained in:
@@ -5,45 +5,7 @@
|
||||
* this interceptor provides helpful error messages directing them to use
|
||||
* the specialized tools instead.
|
||||
*/
|
||||
import type { BashInterceptorRule } from "../config/settings-schema";
|
||||
|
||||
export const DEFAULT_BASH_INTERCEPTOR_RULES: BashInterceptorRule[] = [
|
||||
{
|
||||
pattern: "^\\s*(cat|head|tail|less|more)\\s+",
|
||||
tool: "read",
|
||||
message: "Use the `read` tool instead of cat/head/tail. It provides better context and handles binary files.",
|
||||
},
|
||||
{
|
||||
pattern: "^\\s*(grep|rg|ripgrep|ag|ack)\\s+",
|
||||
tool: "grep",
|
||||
message: "Use the `grep` tool instead of grep/rg. It respects .gitignore and provides structured output.",
|
||||
},
|
||||
{
|
||||
pattern: "^\\s*(find|fd|locate)\\s+.*(-name|-iname|-type|--type|-glob)",
|
||||
tool: "find",
|
||||
message: "Use the `find` tool instead of find/fd. It respects .gitignore and is faster for glob patterns.",
|
||||
},
|
||||
{
|
||||
pattern: "^\\s*sed\\s+(-i|--in-place)",
|
||||
tool: "edit",
|
||||
message: "Use the `edit` tool instead of sed -i. It provides diff preview and fuzzy matching.",
|
||||
},
|
||||
{
|
||||
pattern: "^\\s*perl\\s+.*-[pn]?i",
|
||||
tool: "edit",
|
||||
message: "Use the `edit` tool instead of perl -i. It provides diff preview and fuzzy matching.",
|
||||
},
|
||||
{
|
||||
pattern: "^\\s*awk\\s+.*-i\\s+inplace",
|
||||
tool: "edit",
|
||||
message: "Use the `edit` tool instead of awk -i inplace. It provides diff preview and fuzzy matching.",
|
||||
},
|
||||
{
|
||||
pattern: "^\\s*(echo|printf|cat\\s*<<)\\s+.*[^|]>\\s*\\S",
|
||||
tool: "write",
|
||||
message: "Use the `write` tool instead of echo/cat redirection. It handles encoding and provides confirmation.",
|
||||
},
|
||||
];
|
||||
import { type BashInterceptorRule, DEFAULT_BASH_INTERCEPTOR_RULES } from "../config/settings-schema";
|
||||
|
||||
export interface InterceptionResult {
|
||||
/** If true, the bash command should be blocked */
|
||||
|
||||
Reference in New Issue
Block a user