fix(search_code): accept '&' in paths, warn on literal-'|' trap, report timing
#272: '&' is neutralised by the single-/double-quoting of the grep/Select-String/ git commands, so it no longer fails validation. A relaxed validate_search_path_arg (cbm_validate_shell_arg minus '&') is used for search_code + detect_changes root_path/file_pattern; all other shell metacharacters stay rejected and base_branch keeps the strict check. #282: search_code defaulted regex=false, so 'foo|bar' matched the literal pipe and silently returned 0 results. The result now carries a warnings[] array that flags a literal '|' under regex=false (with the regex=true hint), so the trap is visible instead of looking like a legitimate no-match. (The related invalid-regex silent-empty case was already fixed in #283.) Also: every search_code result now reports elapsed_ms, and a perf warning fires when a search exceeds 5s (also logged as search.slow) so slow calls are visible. Tests for both issues + the multi-word/invalid-regex no-regression; generous search_code smoke coverage (basic+elapsed_ms, literal-| warning, '&' acceptance). Closes #272 Closes #282
M
Martin Vogel committed
09e3f71bf6f9b018c0050ade8b0795f7294cd7eb
Parent: d87cffe