This page describes intended behaviour or structure. No implementation is claimed unless a section is explicitly marked Current implementation or Evidence.
Large repositories should not be dumped into model context (original handoff §33). RepositoryIntelligenceService builds, for every repository snapshot, the indexes an engineering agent needs to work precisely: file tree, symbol index, type graph, dependency graph, call graph, references, Git history, ownership, build graph and test relationships. It exposes them as the read tools of the original tool list (list_files, search_text, search_symbols, find_references, read_file, read_range, get_dependencies, get_git_diff, git_status) through the Tools & MCP platform. Write tools (apply_patch, create_file, delete_file, move_file, build, test) are not here: they act on a sandboxed workspace and carry their side-effect class (BC-08, BC-26).
BC-39 was added by the design plan to give the §33 indexes and tools an owner distinct from generic ingestion.
flowchart LR
S["RepositoryIntelligenceService"]
ToolAdapterService["ToolAdapterService"] -->|grpc| S
ContextBuilderService["ContextBuilderService"] -->|grpc| S
StudioBff["StudioBff"] -->|sync-http| S
S -->|grpc| KnowledgeIngestionService["KnowledgeIngestionService"]
S -->|grpc| ArtifactService["ArtifactService"]
S -. "RepositoryIndexed" .-> E_RepositoryIndexed(("event"))
S -. "RepositoryIndexFailed" .-> E_RepositoryIndexFailed(("event"))
RepositoryIndexSet — The complete set of indexes of one repository at one revision; immutable once Ready, superseded by the next revision's set. (catalog entry)
Field
Type
Required
Description
indexSetId
guid
yes
tenantId
string
yes
sourceId
guid
yes
The GitRepository source in BC-10.
snapshotId
guid
yes
revision
string
yes
Commit id.
state
enum:RepoIndexState
yes
kinds
list:string
yes
Index kinds built.
fileCount
int
yes
symbolCount
int
yes
languages
list:string
yes
builtAt
datetime
no
Invariants:
Indexes are derived from an immutable snapshot and rebuildable; they never hold content beyond what a tool returns by range.
A tool answer cites the revision; a caller that holds an older revision is told so instead of receiving mixed results.
Write tools (apply patch, create, delete, move, build, test) are not here: they are Tools and MCP tools of their side-effect class acting on a sandboxed workspace (BC-08, BC-26).
stateDiagram-v2
Building --> Ready : BuildCompleted
Building --> Failed : BuildFailed
Ready --> Superseded : NextRevisionReady
Tool list_files: file tree at a revision with filters.
RepositoryIntelligence
SearchText
none
internal
read
Tool search_text: full-text search within a repository revision with ranges.
RepositoryIntelligence
SearchSymbols
none
internal
read
Tool search_symbols: symbols by name, kind and container.
RepositoryIntelligence
FindReferences
none
internal
read
Tool find_references: references and callers of a symbol.
RepositoryIntelligence
ReadRange
none
internal
read
Tools read_file and read_range: content by path and line range from the snapshot, never whole repositories.
RepositoryIntelligence
GetDependencies
none
internal
read
Tool get_dependencies: project, package, call and test-coverage edges of a path or symbol.
RepositoryIntelligence
GetHistory
none
internal
read
Tools get_git_diff, git_status (read side) and ownership: history, churn and owners of a path.
Every tool answer cites the revision it was computed from; a caller holding an older revision receives a mismatch flag instead of mixed results, and read_range never returns more than the configured line limit.
Builds file tree, symbols, types, dependencies, calls, references, history, ownership, build and test relations for a snapshot using language analyzers (Roslyn for .NET first).
Nothing exists; the earlier AgentKit repository tooling is a reference input only (D19). Roslyn-based analysis is the first analyzer the design assumes for .NET repositories.
Semantic embeddings of symbols for cross-repository search; change-impact analysis across the dependency graph (from the former roadmap); test-selection hints from test relationships; analyzers for further languages.