@@ -11,6 +11,7 @@ import { outputAst } from './astTest';
1111import { getEndOfLine } from './ast/language' ;
1212import { RecentEditsManager } from './recentEdits' ;
1313import { GitDiffWatcher } from './gitDiffWatcher' ;
14+ import { MessageHandler } from '../../handler/messageHandler' ;
1415
1516export function registerCodeCompleteCallbackCommand ( context : vscode . ExtensionContext ) {
1617 let disposable = vscode . commands . registerCommand (
@@ -44,6 +45,7 @@ function isSubsequence(sub: string, source: string): boolean {
4445
4546interface LogEventRequest {
4647 completion_id : string ;
48+ is_manual_trigger : boolean ;
4749 type : string ; // "view", "select"
4850 lines : number ;
4951 length : number ; // length of code completed
@@ -77,26 +79,11 @@ export class InlineCompletionProvider implements vscode.InlineCompletionItemProv
7779 }
7880
7981 async logEventToServer ( event : LogEventRequest ) {
80- const devchatToken = this . devchatConfig . get ( "providers.devchat.api_key" ) ;
81- const devchatEndpoint = this . devchatConfig . get ( "providers.devchat.api_base" ) ;
82- const apiUrl = `${ devchatEndpoint } /complete_events` ;
83- const requestOptions : RequestInit = {
84- method : 'POST' ,
85- headers : {
86- "Content-Type" : "application/json" ,
87- "Authorization" : `Bearer ${ devchatToken } ` ,
88- } ,
89- body : JSON . stringify ( event ) ,
90- } ;
82+ MessageHandler . sendMessage2 ( { command : "logEvent" , id : event . completion_id , language : event . language , name : event . type , value : { ...event } } ) ;
83+ }
9184
92- try {
93- const response = await fetch ( apiUrl , requestOptions ) ;
94- if ( ! response . ok ) {
95- logger . channel ( ) ?. info ( "log event to server failed:" , response . status ) ;
96- }
97- } catch ( error ) {
98- console . error ( 'Error posting event to the server:' , error ) ;
99- }
85+ async logMessageToServer ( id : string , language : string , model : string , result : string ) {
86+ MessageHandler . sendMessage2 ( { command : "logMessage" , id : id , language, commandName : "code_completion" , content : result , model} ) ;
10087 }
10188
10289 // check whether need to send code complete event
@@ -219,6 +206,7 @@ export class InlineCompletionProvider implements vscode.InlineCompletionItemProv
219206 if ( ! this . isManualTrigger && this . devchatConfig . get ( "complete_enable" ) !== true ) {
220207 return [ ] ;
221208 }
209+ const isManualTrigger = this . isManualTrigger ;
222210
223211 // const filepath = document.uri.fsPath;
224212 // const fileContent = document.getText();
@@ -269,12 +257,20 @@ export class InlineCompletionProvider implements vscode.InlineCompletionItemProv
269257 }
270258 }
271259
260+ this . logMessageToServer (
261+ response . result . id ,
262+ path . extname ( document . uri . fsPath ) . toLowerCase ( ) . slice ( 1 ) ,
263+ DevChatConfig . getInstance ( ) . get ( "complete_model" ) ?? "unknow" ,
264+ response . result . code
265+ ) ;
266+
272267 // TODO
273268 // 代码补全建议是否已经被用户看到,这个需要更加准确的方式来识别。
274269 logger . channel ( ) ?. trace ( "code complete show." ) ;
275270 this . logEventToServer (
276271 {
277272 completion_id : response . result . id ,
273+ is_manual_trigger : isManualTrigger ,
278274 type : "view" ,
279275 lines : response . result . code . split ( '\n' ) . length ,
280276 length : response . result . code . length ,
@@ -302,6 +298,7 @@ export class InlineCompletionProvider implements vscode.InlineCompletionItemProv
302298 this . logEventToServer (
303299 {
304300 completion_id : response ! . result . id ,
301+ is_manual_trigger : isManualTrigger ,
305302 type : "select" ,
306303 lines : response ! . result . code . split ( '\n' ) . length ,
307304 length : response ! . result . code . length ,
0 commit comments