gatherAutoContext function
Automatically gather relevant context for a user query.
Implementation
Future<String> gatherAutoContext({
required String query,
required String workingDirectory,
int tokenBudget = 50000,
List<String> mentionedFiles = const [],
}) async {
final builder = ContextBuilder(tokenBudget: tokenBudget);
// 1. Add explicitly mentioned files (highest priority)
for (final file in mentionedFiles) {
final resolved = p.isAbsolute(file) ? file : p.join(workingDirectory, file);
await builder.addFile(resolved, maxLines: 500);
}
// 2. Add project info
final projectInfo = await _detectProjectInfo(workingDirectory);
if (projectInfo.isNotEmpty) {
builder.add(ProjectInfoContext(projectInfo));
}
// 3. Add git status/diff if relevant
if (_queryRelatesTo(query, ['diff', 'change', 'commit', 'git', 'modified'])) {
await builder.addGitDiff();
await builder.addGitDiff(staged: true);
}
// 4. Add directory listing if relevant
if (_queryRelatesTo(query, [
'file',
'directory',
'structure',
'project',
'where',
])) {
await builder.addDirectoryListing(workingDirectory);
}
return builder.build();
}