feat(#137): add doc-map input for path-scoped doc injection
CI / test (pull_request) Successful in 18s
CI / review (anthropic--claude-4.6-sonnet, sonnet, SONNET_REVIEW_TOKEN) (pull_request) Successful in 40s
CI / review (gpt-5, security, ., rodin/security-patterns, SECURITY_REVIEW.md, SECURITY_REVIEW_TOKEN) (pull_request) Successful in 1m26s
CI / review (gpt-5, gpt, GPT_REVIEW_TOKEN) (pull_request) Successful in 1m27s
CI / test (pull_request) Successful in 18s
CI / review (anthropic--claude-4.6-sonnet, sonnet, SONNET_REVIEW_TOKEN) (pull_request) Successful in 40s
CI / review (gpt-5, security, ., rodin/security-patterns, SECURITY_REVIEW.md, SECURITY_REVIEW_TOKEN) (pull_request) Successful in 1m26s
CI / review (gpt-5, gpt, GPT_REVIEW_TOKEN) (pull_request) Successful in 1m27s
- New --doc-map flag (DOC_MAP_FILE env var): path to YAML config mapping source path globs to governing design docs - New --doc-map-max-bytes flag (DOC_MAP_MAX_BYTES env var): cap on total injected doc content, default 100KB - review/docmap.go: DocMapConfig parsing, glob matching with ** support, doc loading via VCS with directory expansion and size guard - budget.Sections: new DesignDocs field, trimmed after conventions - budget.buildResult: injects DesignDocs under ## Design Documents heading - action.yml: doc-map and doc-map-max-bytes inputs wired to env vars - CHANGELOG.md: created with unreleased entry - Tests: ParseDocMapConfig, MatchDocs, globMatch, LoadMatchingDocs
This commit is contained in:
+7
-1
@@ -63,7 +63,8 @@ type Sections struct {
|
||||
SystemBase string // Core instructions (never trimmed)
|
||||
Patterns string // Language patterns (trimmed first)
|
||||
Conventions string // Repo conventions (trimmed second)
|
||||
FileContext string // Full file content (trimmed third)
|
||||
DesignDocs string // Path-scoped design documents (trimmed third)
|
||||
FileContext string // Full file content (trimmed fourth)
|
||||
Diff string // The actual diff (trimmed last, only truncated)
|
||||
UserMeta string // PR title, description, CI status (truncated only if base exceeds budget)
|
||||
}
|
||||
@@ -103,6 +104,7 @@ func Fit(model string, sections Sections) Result {
|
||||
entries := []entry{
|
||||
{"patterns", §ions.Patterns},
|
||||
{"conventions", §ions.Conventions},
|
||||
{"design docs", §ions.DesignDocs},
|
||||
{"file context", §ions.FileContext},
|
||||
}
|
||||
|
||||
@@ -185,6 +187,10 @@ func buildResult(s Sections, trimmed []string, estTokens int) Result {
|
||||
sys.WriteString("\n\n## Repository Conventions\n\nThe repository has the following coding conventions that must be respected:\n\n")
|
||||
sys.WriteString(s.Conventions)
|
||||
}
|
||||
if s.DesignDocs != "" {
|
||||
sys.WriteString("\n\n## Design Documents\n\nThe following design documents govern the changed code. Review the diff for adherence:\n\n")
|
||||
sys.WriteString(s.DesignDocs)
|
||||
}
|
||||
|
||||
var usr strings.Builder
|
||||
usr.WriteString(s.UserMeta)
|
||||
|
||||
Reference in New Issue
Block a user