@@ -11,7 +11,7 @@ import * as vscode from 'vscode';
1111import { CopilotHelper } from './context/copilotHelper' ;
1212import { sendInfo } from "vscode-extension-telemetry-wrapper" ;
1313import {
14- logger ,
14+ logger ,
1515 JavaContextProviderUtils ,
1616 CancellationError ,
1717 InternalCancellationError ,
@@ -93,13 +93,15 @@ function createJavaContextResolver(): ContextResolverFunction {
9393/**
9494 * Send telemetry data for Java context resolution
9595 */
96- function sendContextTelemetry ( request : ResolveRequest , start : number , itemCount : number , status : string , error ?: string ) {
96+ function sendContextTelemetry ( request : ResolveRequest , start : number , items : SupportedContextItem [ ] , status : string , error ?: string ) {
9797 const duration = Math . round ( performance . now ( ) - start ) ;
98+ const tokenCount = JavaContextProviderUtils . calculateTokenCount ( items ) ;
9899 const telemetryData : any = {
99100 "action" : "resolveJavaContext" ,
100101 "completionId" : request . completionId ,
101102 "duration" : duration ,
102- "itemCount" : itemCount ,
103+ "itemCount" : items . length ,
104+ "tokenCount" : tokenCount ,
103105 "status" : status
104106 } ;
105107
@@ -128,16 +130,37 @@ async function resolveJavaContext(request: ResolveRequest, copilotCancel: vscode
128130
129131 const document = activeEditor . document ;
130132
133+ // Resolve project dependencies first
134+ const projectDependencies = await CopilotHelper . resolveProjectDependencies ( document . uri , copilotCancel ) ;
135+ logger . info ( 'Resolved project dependencies count:' , Object . keys ( projectDependencies ) . length ) ;
136+
137+ // Check for cancellation after dependency resolution
138+ JavaContextProviderUtils . checkCancellation ( copilotCancel ) ;
139+
140+ // Convert project dependencies to Trait items
141+ if ( projectDependencies && Object . keys ( projectDependencies ) . length > 0 ) {
142+ for ( const [ key , value ] of Object . entries ( projectDependencies ) ) {
143+ items . push ( {
144+ name : key ,
145+ value : value ,
146+ importance : 50
147+ } ) ;
148+ }
149+ }
150+
151+ // Check for cancellation before resolving imports
152+ JavaContextProviderUtils . checkCancellation ( copilotCancel ) ;
153+
131154 // Resolve imports directly without caching
132155 const importClass = await CopilotHelper . resolveLocalImports ( document . uri , copilotCancel ) ;
133- logger . trace ( 'Resolved imports count:' , importClass ?. length || 0 ) ;
156+ logger . info ( 'Resolved imports count:' , importClass ?. length || 0 ) ;
134157
135158 // Check for cancellation after resolution
136159 JavaContextProviderUtils . checkCancellation ( copilotCancel ) ;
137160
138161 // Check for cancellation before processing results
139162 JavaContextProviderUtils . checkCancellation ( copilotCancel ) ;
140-
163+
141164 if ( importClass ) {
142165 // Process imports in batches to reduce cancellation check overhead
143166 const contextItems = JavaContextProviderUtils . createContextItemsFromImports ( importClass ) ;
@@ -149,26 +172,26 @@ async function resolveJavaContext(request: ResolveRequest, copilotCancel: vscode
149172 }
150173 } catch ( error : any ) {
151174 if ( error instanceof CopilotCancellationError ) {
152- sendContextTelemetry ( request , start , items . length , "cancelled_by_copilot" ) ;
175+ sendContextTelemetry ( request , start , items , "cancelled_by_copilot" ) ;
153176 throw error ;
154177 }
155178 if ( error instanceof vscode . CancellationError || error . message === CancellationError . Canceled ) {
156- sendContextTelemetry ( request , start , items . length , "cancelled_internally" ) ;
179+ sendContextTelemetry ( request , start , items , "cancelled_internally" ) ;
157180 throw new InternalCancellationError ( ) ;
158181 }
159182
160183 // Send telemetry for general errors (but continue with partial results)
161- sendContextTelemetry ( request , start , items . length , "error_partial_results" , error . message || "unknown_error" ) ;
184+ sendContextTelemetry ( request , start , items , "error_partial_results" , error . message || "unknown_error" ) ;
162185
163186 logger . error ( `Error resolving Java context for ${ documentUri } :${ caretOffset } :` , error ) ;
164187
165188 // Return partial results and log completion for error case
166189 JavaContextProviderUtils . logCompletion ( 'Java context resolution' , documentUri , caretOffset , start , items . length ) ;
167190 return items ;
168191 }
169-
192+
170193 // Send telemetry data once at the end for success case
171- sendContextTelemetry ( request , start , items . length , "succeeded" ) ;
194+ sendContextTelemetry ( request , start , items , "succeeded" ) ;
172195
173196 JavaContextProviderUtils . logCompletion ( 'Java context resolution' , documentUri , caretOffset , start , items . length ) ;
174197 return items ;
0 commit comments