From c1f32164167a4e774b50949e2bbdc4050b816918 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Mon, 18 May 2026 21:22:55 +0000 Subject: [PATCH] fix: prevent Go/TS suffix suggestion for unknown file extensions Modified `suggestSplits` in `internal/campaign/edge_case_detector.go` to check if the file language is "unknown". If it is, the detector now suggests generic numeric suffixes (e.g., `_part1`, `_part2`) instead of hardcoded Go/TypeScript-style suffixes (`_types`, `_helpers`) which could result in invalid syntax for unrecognized file types. Also removed the addressed TODO comment. Co-authored-by: theRebelliousNerd <187437903+theRebelliousNerd@users.noreply.github.com> --- internal/campaign/edge_case_detector.go | 53 ++++++++++++++----------- 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/internal/campaign/edge_case_detector.go b/internal/campaign/edge_case_detector.go index 6a84513f..62b81143 100644 --- a/internal/campaign/edge_case_detector.go +++ b/internal/campaign/edge_case_detector.go @@ -464,27 +464,36 @@ func (d *EdgeCaseDetector) suggestSplits(decision FileDecision) []SplitSuggestio ext := filepath.Ext(decision.Path) dir := filepath.Dir(decision.Path) - // Generic split suggestions based on common patterns - patterns := []struct { - suffix string - desc string - }{ - {"_types", "Type definitions and interfaces"}, - {"_helpers", "Helper functions and utilities"}, - {"_handlers", "Request/response handlers"}, - {"_validation", "Validation logic"}, - {"_persistence", "Database/storage operations"}, - } - - // Suggest at most 3 splits - for i, p := range patterns { - if i >= 3 { - break + if decision.Language == "unknown" { + for i := 1; i <= 3; i++ { + suggestions = append(suggestions, SplitSuggestion{ + NewFileName: filepath.Join(dir, fmt.Sprintf("%s_part%d%s", baseName, i, ext)), + Reason: fmt.Sprintf("Split part %d", i), + }) + } + } else { + // Generic split suggestions based on common patterns + patterns := []struct { + suffix string + desc string + }{ + {"_types", "Type definitions and interfaces"}, + {"_helpers", "Helper functions and utilities"}, + {"_handlers", "Request/response handlers"}, + {"_validation", "Validation logic"}, + {"_persistence", "Database/storage operations"}, + } + + // Suggest at most 3 splits + for i, p := range patterns { + if i >= 3 { + break + } + suggestions = append(suggestions, SplitSuggestion{ + NewFileName: filepath.Join(dir, baseName+p.suffix+ext), + Reason: p.desc, + }) } - suggestions = append(suggestions, SplitSuggestion{ - NewFileName: filepath.Join(dir, baseName+p.suffix+ext), - Reason: p.desc, - }) } return suggestions @@ -812,10 +821,6 @@ func (a *EdgeCaseAnalysis) GetPreworkTasks() []string { // Check if Mangle returns NaN/Inf for floats; complexity logic might permanently // trigger ActionRefactorFirst or create panics on math operations. -// TODO: Missing Edge Case - User Request Extremes: Unknown file extensions. -// For `.xyz` or unrecognized file extensions, suggestSplits appends hardcoded -// golang/typescript-style suffixes (`_types`, `_helpers`) which could be invalid syntax. - // TODO: Missing Edge Case - State Conflicts: Race condition between `intel` and actual filesystem. // Files marked `Exists: true` in intelligence might have been deleted. Should verify // against `os.Stat(path)` to prevent invalid `ActionExtend` or `ActionModularize` commands.