/** * Context Builder * * Builds rich context for tasks by combining FTS search with graph traversal. * Outputs structured context ready to inject into Claude. */ import { Subgraph, TaskContext, TaskInput, BuildContextOptions, FindRelevantContextOptions } from '../types'; import { QueryBuilder } from '../db/queries'; import { GraphTraverser } from '../graph'; export { LOW_CONFIDENCE_MARKER } from './markers'; type ArkTsSemanticFactKind = 'owner_container' | 'render_owner' | 'render_shell' | 'bridge_boundary' | 'legacy_surface' | 'navigation_boundary' | 'lifecycle_boundary'; interface ArkTsSemanticFact { kind: ArkTsSemanticFactKind; nodeId: string; nodeName: string; filePath: string; detail: string; evidence: string[]; } /** * Context Builder * * Coordinates semantic search and graph traversal to build * comprehensive context for tasks. */ export declare class ContextBuilder { private projectRoot; private queries; private traverser; private arkTsPlatformScanCache; private arkTsSemanticFactCache; private activeArkTsSemanticFactSnapshot; private allFilesCache; private allNodesCache; private arkTsStateEffectByFileCache; private arkTsAppStorageFactCache; private arkTsDecoratorFieldSpecByFileCache; private nodesByFileCache; private validatedPathCache; private sourceTextByFileCache; private sourceTextByFileCacheChars; private arkTsRenderableNodeByNameCache; private arkTsRenderOwnerCandidatesByFileCache; private outgoingCallCountCache; private arkTsQueryNodeHitsCache; private arkTsSharedStateBucketCache; private arkTsSharedStateCrossSurfaceEvidenceCache; private arkTsRetrievalRoleEvidenceCache; private arkTsPageTriggerNodeCache; private arkTsPrimaryAnchorPreferenceCache; private arkTsRouteAliasCache; constructor(projectRoot: string, queries: QueryBuilder, traverser: GraphTraverser); getProjectArkTsSemanticFactSnapshot(): { facts: ArkTsSemanticFact[]; }; clearCaches(): void; /** * Build context for a task * * Pipeline: * 1. Parse task input (string or {title, description}) * 2. Run semantic search to find entry points * 3. Expand graph around entry points * 4. Extract code blocks for key nodes * 5. Format output for Claude * * @param input - Task description or object with title/description * @param options - Build options * @returns TaskContext (structured) or formatted string */ buildContext(input: TaskInput, options?: BuildContextOptions): Promise; private ensureArkTsFactBackedClosure; private ensureArkTsBuildValidationOwnerClosure; private isArkTsBuildValidationOwnerClosureQuery; private isArkTsBuildValidationTriggerNode; private isArkTsBuildValidationContractNode; private isArkTsBuildValidationOwnerHelperNode; private collectArkTsDirectCallIdentifiers; private hasArkTsDirectCallTo; private collectConnectedArkTsFactClosureMatches; private isArkTsFactClosureMatchAnchored; private extractArkTsFactClosureSymbols; private getArkTsFactClosureNodeScore; private getArkTsFactClosureSymbolHits; private shouldIncludeArkTsFactClosureNeighbor; private isArkTsFactClosureNoiseNode; /** * Surface short call-paths among the symbols this context already found, * derived in-memory from the subgraph's `calls` edges (no extra queries). * * This bakes the value of path-finding INTO the always-loaded `context` tool. * Agents reliably read context's output but do NOT discover/adopt a standalone * trace tool (in deferred-MCP harnesses they only ToolSearch-select tools they * already know). Delivering the flow here means "how does X reach Y" is * answered without the agent needing to find, load, or choose a new tool. * Chains stop where the static call graph ends (e.g. dynamic dispatch) — that * truncation is honest, and the agent can codegraph_node the last hop to bridge. */ private buildCallPathsSection; /** * Honest handoff appended when retrieval confidence is low (the query matched * mostly on common words). Instead of the usual "this covers the surface" * framing — which, when wrong, sends the agent off to Read/Grep — it admits * the uncertainty and routes the agent to the precise tools. */ private buildLowConfidenceNote; private computeRetrievalConfidence; /** * Find relevant subgraph for a query * * Uses hybrid search combining exact symbol lookup with semantic search: * 1. Extract potential symbol names from query * 2. Look up exact matches for those symbols (high confidence) * 3. Use semantic search for concept matching * 4. Merge results, prioritizing exact matches * 5. Traverse graph from entry points * * @param query - Natural language query * @param options - Search and traversal options * @returns Subgraph of relevant nodes and edges */ findRelevantContext(query: string, options?: FindRelevantContextOptions): Promise; private findRelevantContextDetailed; private getRetrievalFactNeeds; /** * Get the source code for a node * * Reads the file and extracts the code between startLine and endLine. * * @param nodeId - ID of the node * @returns Code string or null if not found */ getCode(nodeId: string): Promise; /** * Extract code from a node's source file */ private extractNodeCode; /** * Get entry points from a subgraph (the root nodes) */ private getEntryPoints; private selectCrossLanguageBridgeEntryPoints; private getArkTsEntryPointPriority; /** * Extract code blocks for key nodes in the subgraph */ private extractCodeBlocks; /** * Get unique files from a subgraph */ private getRelatedFiles; /** * Generate a summary of the context */ private generateSummary; /** * Resolve import/export nodes to their actual definitions * * When search returns `import { TerminalPanel }`, users want the TerminalPanel * class definition, not the import statement. This follows the `imports` edge * to find and return the actual definition instead. * * @param results - Search results that may include import/export nodes * @returns Results with imports resolved to definitions where possible */ private resolveImportsToDefinitions; private promoteArkTsOwnerResults; private rerankArkTsOwnerSourceResults; private selectAnchoredResults; private getAnchoredScore; private compareAnchoredResults; private getPrimaryAnchorPreference; private selectBalancedAnchoredCandidates; private selectReviewerImpactAnchoredCandidates; private selectPreferredArkTsReviewerOwners; private selectExplicitQuerySymbolMatches; private mergeAnchoredCandidates; private prioritizeSharedStateAnchors; private stabilizeArkTsAnchoredCandidates; private findArkTsSharedStateCompanionReplacementIndex; private ensureArkTsPageTriggerCoverage; private ensureArkTsCompatibilityDestinationCoverage; private ensureArkTsTopLevelEntryFunctionCoverage; private ensureArkTsMixedGenerationOwnerCoverage; private findPreferredArkTsMixedGenerationOwnerAnchor; private ensureArkTsReviewerProofCoverage; private ensureArkTsSharedStatePrimaryClosureCoverage; private dedupeAnchoredCandidates; private findArkTsStableAnchorReplacement; private findBestArkTsContainerInFile; private collectArkTsSharedStateCompanionComponents; private collectArkTsSharedStateCrossPageCompanions; private ensureArkTsOwnerFamilyCoverage; private extractOrderedExplicitIdentifierTokens; private selectOwnerAnchoredCandidates; private selectSharedStateAnchoredCandidates; private ensureArkTsSharedStateMultiConsumerCoverage; private dedupeSearchResults; private collectArkTsSharedStateGlobalOwnerSignals; private collectArkTsSharedStateQueryAlignedOwnerSignals; private collectArkTsOwnerContainerMethodSignals; private collectArkTsSharedStateProjectStorageSignals; private pickBestArkTsSharedStateWriteSideCandidate; private pickBestArkTsSharedStateConsumerCandidate; private countArkTsLifecycleBoundaryCallers; private pickBestArkTsSharedStateConsumerContainerCandidate; private collectArkTsSharedStateSiblingSignals; private selectActionClosureAnchoredCandidates; private selectProtectedArkTsSearchResults; private createRetrievalAnchor; private collectAnchorEvidence; private collectAnchorScoreComponents; private buildRetrievalMetadata; private collectValidationPack; private collectMixedParadigmDiagnosisFacts; private collectUncertaintyHotspots; private collectArkUiDeclarativeRiskFacts; private collectIdentityBoundaryFacts; private extractArkUiIdentityKeySignals; private hasArkTsIdentityBoundarySource; private extractArkUiDecoratorFieldNames; private collectArkUiLocalChildComponentHints; private findArkTsComponentFileByName; private collectConfidenceProvenance; private collectSemanticDiffFacts; private collectBridgeContractFacts; private collectPlatformConstraintFacts; private getArkTsProjectTopologyConfigFiles; private getArkTsSupplementalResourceConfigFiles; private collectArkTsResourceBindingFacts; private collectArkTsQualifierFacts; private collectArkTsResourceConstraint; private getArkTsFederationModuleDefinitions; private getArkTsFederationSliceForFile; private getArkTsFederationSliceForImport; private collectArkTsFederationConstraint; private extractBuildProfileModuleHints; private getArkTsRetentionPriority; private extractOhPackageTopologyHints; private collectRouteContractFacts; private classifyBridgeBoundaryType; private collectBridgeLanguageAnchors; private collectCausalitySliceFacts; private collectArkTsLifecycleDecoratorConsumerTargets; private extractArkTsObjectLiteralKeys; private getArkTsRouteContractSignature; private mergeBoundedUnique; private extractArkTsMethodTargetsFromBody; private collectArkTsResolvedTargetNames; private extractArkTsAsyncBreakpointsFromBody; private collectArkTsWatchClosureFromMethod; private extractRouterMapHints; private collectStateEffectFacts; private collectStateFacts; private normalizeArkTsStateFact; private annotateArkTsStateFamilySignals; private getArkTsStateFamilyKey; private addArkTsDecoratorContractFacts; private getProjectArkTsDecoratorFieldSpecs; private getArkTsDecoratorFieldSpecsForFile; private extractArkTsDecoratorBindingsFromLine; private normalizeArkTsDecoratorArg; private parseArkTsFieldDeclaration; private haveIntersectingArkTsStateContractKeys; private getArkTsStateContractKeys; private findArkTsRenderingOwnerNodesForChild; private collectArkTsMethodLabelsTouchingField; private matchesArkTsStateFieldTouch; private escapeRegexLiteral; private getStateFactQueryRelevance; private scoreStateFactGroup; private extractStateFactGroupKeyFromEffect; private formatArkTsStateFactMethodLabel; private formatArkTsStateNodeLabel; private findBestArkTsSharedStateSourceLabel; private describeArkTsStateFieldSource; private findArkTsStateOwnerNodeForFile; private collectArkTsCallerMethodLabelsFromFact; private collectArkTsCallerMethodLabels; private getArkTsStateEffectsForFile; private collectStateEffectFactsForFile; private findFirstMethodNameTouching; private getArkTsStateTouchMethodPriority; private collectConceptClusterFacts; private collectRenderSkeletonFacts; private collectArkTsRenderOwnerCandidates; private collectRenderSkeletonChildren; private extractMethodBody; private collectPlatformFacts; private getProjectArkTsPlatformScan; private getArkTsSemanticFactSnapshot; private buildArkTsSemanticFacts; private hasArkTsSemanticFact; private getArkTsFileNodes; private isArkTsPageLikePath; private hasArkTsEntryDecorator; private isArkTsPageLikeContainerName; private hasArkTsUiMethodSignalInFile; private isArkTsPageLikeContainerNode; private isArkTsPageLikeFile; private matchesArkTsOwnerContainerHeuristic; private matchesArkTsRenderShellHeuristic; private matchesArkTsRenderOwnerHeuristic; private matchesArkTsBridgeBoundaryHeuristic; private matchesArkTsLegacySurfaceHeuristic; private matchesArkTsNavigationBoundaryHeuristic; private matchesArkTsLifecycleBoundaryHeuristic; private scanProjectArkTsPlatformFacts; private getArkTsV1StateDecorators; private getArkTsV2StateDecorators; private getArkTsOwnerCandidateBoost; private getArkTsRetrievalRoleEvidence; private shouldUseArkTsLiteralSupplementer; private shouldUseArkTsSemanticSupplementer; private findArkTsLiteralSupplementResults; private findArkTsSemanticFactSupplementResults; private findArkTsMixedGenerationOwnerSupplementResults; private hasArkTsMixedGenerationSignalText; private isArkTsMixedGenerationTopLevelOwnerNode; private findArkTsOwnerNodeInFile; private findArkTsStoreOwnerNodeInFile; private collectArkTsSharedStateWriteClosureSignals; private findArkTsPageTriggerNodeForTarget; private findArkTsPageTriggerAnchorForTarget; private findArkTsNavigationDestinationAnchor; private getArkTsNavigationDestinationContractStrength; private getArkTsNavigationDestinationTopicalHits; private getArkTsNavigationTopicalTerms; private getArkTsRouteRegistrationBranchScore; private getArkTsExplicitRouteTargetScore; private countArkTsNavigationTopicalHits; private collectArkTsAliasWindows; private getArkTsRouteAliasesForDestination; private getArkTsRouteAliasMap; private findArkTsClassNameBefore; private hasArkTsPageMapNavigationReachability; private findArkTsNavigationSourceAnchorForDestination; private findArkTsTopLevelFunctionTriggerForTarget; private findBestArkTsTopLevelEntryFunctionInFile; private findBestArkTsReviewerImpactProofNode; private findPreferredArkTsReviewerUiProofNode; private isArkTsReviewerImpactUiProofCandidate; private collectArkTsReviewerImpactSiblingProofNodes; private collectArkTsReviewerImpactNestedProofNodes; private collectArkTsLexicalLocalMethodCalls; private getArkTsReviewerImpactProofScore; private isArkTsReviewerImpactLexicalFollowupNode; private getArkTsReviewerImpactOwnerPriority; private isArkTsPageScopedMethodNode; private isArkTsReviewerPrimaryPageOwnerNode; private getArkTsPageTriggerScore; private recoverArkTsOwnerAnchorNode; private getArkTsQualifiedOwnerName; private isArkTsOwnerishName; private createArkTsOwnerProxyNode; private addArkTsOwnerRepresentativeMethods; private addArkTsPageOwnerMethods; private getArkTsPageOwnerMethodScore; private isArkTsPageShellMethod; private findArkTsRepresentativeMethodNode; private getArkTsRepresentativeMethodScore; private isSyntheticArkTsOwnerProxyNode; private isArkTsOwnerNode; private isArkTsStoreOwnerNode; private isArkTsStoreOwnerContainerNode; private isArkTsLikelyOwnerMethodNode; private hasArkTsSharedStateWriteClosure; private hasArkTsLocalSharedStateAccess; private getArkTsSharedStateConceptHits; private hasArkTsSharedStateConceptAlignment; private hasArkTsSharedStateStorageClosure; private isArkTsSharedStateTriggerMethodNode; private isArkTsReviewerImpactOwnerMethodNode; private getArkTsReviewerImpactMethodScore; private getArkTsReviewerImpactNeighborHits; private isArkTsSharedStateOwnerMethodNode; private isArkTsSharedStateOwnerContainerNode; private isArkTsSharedStateConsumerNode; private getArkTsSharedStateBucket; private pickArkTsSharedStateBucketCandidate; private getArkTsSharedStateBucketPriority; private isArkTsSharedStateUiNode; private isArkTsNavigationOwnerMethodNode; private isArkTsBootstrapRestoreMethodNode; private isArkTsSharedStateConsumerBoundaryMethodNode; private isArkTsActionClosureOwnerNode; private isArkTsActionClosureConsumerNode; private getArkTsActionClosureBucket; private getArkTsQueryNodeHits; private isArkTsOwnerSignalNode; private getArkTsOwnerContextHaystack; private isArkTsEntityNode; private isArkTsUtilityNode; private isArkTsUiOnlyNode; private isArkTsTopLevelEntryFunctionNode; private hasArkTsSharedStateOwnerMethodEvidence; private isArkTsSharedStatePersistenceBridgeMethod; private hasArkTsSharedStateCrossSurfaceMethodEvidence; private isArkTsSharedStateMultiKeyStorageOwnerWriter; private hasArkTsSharedStateConsumerAccessByStorageKey; private hasArkTsServiceStateGetterConsumerEvidence; private collectArkTsSharedStateServiceGetterConsumerCallers; private hasArkTsSharedStateFileEvidence; private hasArkTsSharedStateCrossSurfaceOwnerEvidence; private isArkTsLowLeverageFollowupNode; private isArkTsMirrorNode; private addArkTsOwnerContainers; private addArkTsOwnerContainerMethods; private getArkTsOwnerContainerMethodPriority; private addArkTsBoundedClosureExpansion; private addArkTsSharedStateCrossPageCallers; private isArkTsClosureRelevantNode; private getArkTsClosureRelevanceScore; private getArkTsSharedStateEntryPriority; private addArkTsSharedStateClosureEdges; private addArkTsAppStorageClosureEdges; private extractArkTsAppStorageFactsForNode; private findArkTsStorageLinkedComponentsByKey; private extractArkTsStorageLinkedKeysForNode; private getProjectArkTsAppStorageFactSnapshot; private getNodesForFile; private getAllFilesCached; private getAllNodesCached; private getFileContextCacheKey; private getArkTsRenderableNodeByNameCache; private findArkTsRenderableNodesByNames; private getOutgoingCallCountCached; private getValidatedProjectPath; private findArkTsPrimaryContainerForFile; private getSourceTextForFile; private evictSourceTextCache; private getSourceLinesForFile; private getNodeSourceSnippet; private extractNodeSourceText; private getArkTsCommentStrippedNodeSource; private findArkTsFunctionNodeByNameInFile; } /** * Create a context builder */ export declare function createContextBuilder(projectRoot: string, queries: QueryBuilder, traverser: GraphTraverser): ContextBuilder; export { formatContextAsMarkdown, formatContextAsJson } from './formatter'; //# sourceMappingURL=index.d.ts.map