MCPcopy Create free account
hub / github.com/ChromeDevTools/devtools-frontend / completeCode

Method completeCode

front_end/core/host/AidaClient.ts:332–388  ·  view source on GitHub ↗
(request: CompletionRequest)

Source from the content-addressed store, hash-verified

330 }
331
332 async completeCode(request: CompletionRequest): Promise<CompletionResponse|null> {
333 if (!InspectorFrontendHostInstance.aidaCodeComplete) {
334 throw new Error('aidaCodeComplete is not available');
335 }
336
337 // Disable logging for now.
338 // For context, see b/454563259#comment35.
339 // We should be able to remove this ~end of April.
340 if (Root.Runtime.hostConfig.devToolsGeminiRebranding?.enabled) {
341 request.metadata.disable_user_content_logging = true;
342 }
343
344 if (this.#gcaClient.enabled()) {
345 return await this.#gcaClient.completeCode(request);
346 }
347 const {promise, resolve} = Promise.withResolvers<AidaCodeCompleteResult>();
348 InspectorFrontendHostInstance.aidaCodeComplete(JSON.stringify(request), resolve);
349 const completeCodeResult = await promise;
350
351 if (completeCodeResult.error) {
352 throw new Error(`Cannot send request: ${completeCodeResult.error} ${completeCodeResult.detail || ''}`);
353 }
354 const response = completeCodeResult.response;
355 if (!response?.length) {
356 throw new Error('Empty response');
357 }
358 let parsedResponse;
359 try {
360 parsedResponse = JSON.parse(response);
361 } catch (error) {
362 throw new Error('Cannot parse response: ' + response, {cause: error});
363 }
364
365 const generatedSamples: GenerationSample[] = [];
366 let metadata: ResponseMetadata = {rpcGlobalId: 0};
367 if ('metadata' in parsedResponse) {
368 metadata = parsedResponse.metadata;
369 }
370
371 if ('generatedSamples' in parsedResponse) {
372 for (const generatedSample of parsedResponse.generatedSamples) {
373 const sample: GenerationSample = {
374 generationString: generatedSample.generationString,
375 score: generatedSample.score,
376 sampleId: generatedSample.sampleId,
377 };
378 if ('metadata' in generatedSample && 'attributionMetadata' in generatedSample.metadata) {
379 sample.attributionMetadata = generatedSample.metadata.attributionMetadata;
380 }
381 generatedSamples.push(sample);
382 }
383 } else {
384 return null;
385 }
386
387 return {generatedSamples, metadata};
388 }
389

Callers

nothing calls this directly

Calls 5

stringifyMethod · 0.65
enabledMethod · 0.45
aidaCodeCompleteMethod · 0.45
parseMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected