Skip to content

Commit 6b5f86b

Browse files
bhavyausCopilot
andauthored
Update telemetry in CreateFileTool to include model and file extension details (#1248)
* Enhance telemetry in CreateFileTool to include model and file extension details * Update src/extension/tools/node/createFileTool.tsx Co-authored-by: Copilot <[email protected]> * Refactor model retrieval in CreateFileTool to use endpoint provider for improved accuracy --------- Co-authored-by: Copilot <[email protected]>
1 parent b6e0c83 commit 6b5f86b

File tree

1 file changed

+22
-2
lines changed

1 file changed

+22
-2
lines changed

src/extension/tools/node/createFileTool.tsx

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import { ITelemetryService } from '../../../platform/telemetry/common/telemetry'
1717
import { IWorkspaceService } from '../../../platform/workspace/common/workspaceService';
1818
import { getLanguageForResource } from '../../../util/common/languages';
1919
import { removeLeadingFilepathComment } from '../../../util/common/markdown';
20+
import { extname } from '../../../util/vs/base/common/resources';
2021
import { URI } from '../../../util/vs/base/common/uri';
2122
import { IInstantiationService } from '../../../util/vs/platform/instantiation/common/instantiation';
2223
import { LanguageModelPromptTsxPart, LanguageModelTextPart, LanguageModelToolResult, MarkdownString } from '../../../vscodeTypes';
@@ -30,7 +31,6 @@ import { IToolsService } from '../common/toolsService';
3031
import { ActionType } from './applyPatch/parser';
3132
import { EditFileResult } from './editFileToolResult';
3233
import { createEditConfirmation } from './editFileToolUtils';
33-
import { sendEditNotebookTelemetry } from './editNotebookTool';
3434
import { assertFileNotContentExcluded, formatUriForFileWidget, resolveToolInputPath } from './toolUtils';
3535

3636
export interface ICreateFileParams {
@@ -92,6 +92,9 @@ export class CreateFileTool implements ICopilotTool<ICreateFileParams> {
9292
}
9393

9494
const languageId = doc?.languageId ?? getLanguageForResource(uri).languageId;
95+
const fileExtension = extname(uri);
96+
const modelId = options.model && (await this.endpointProvider.getChatEndpoint(options.model)).model;
97+
9598
if (hasSupportedNotebooks) {
9699
// Its possible we have a code block with a language id
97100
// Also possible we have file paths in the content.
@@ -102,11 +105,12 @@ export class CreateFileTool implements ICopilotTool<ICreateFileParams> {
102105
content = removeLeadingFilepathComment(options.input.content, languageId, options.input.filePath);
103106
await processFullRewriteNewNotebook(uri, content, this._promptContext.stream, this.alternativeNotebookEditGenerator, { source: NotebookEditGenrationSource.createFile, requestId: options.chatRequestId, model: options.model ? this.endpointProvider.getChatEndpoint(options.model).then(m => m.model) : undefined }, token);
104107
this._promptContext.stream.notebookEdit(uri, true);
105-
sendEditNotebookTelemetry(this.telemetryService, this.endpointProvider, 'createFile', uri, this._promptContext.requestId, options.model ?? this._promptContext.request?.model);
108+
this.sendTelemetry(options.chatRequestId, modelId, fileExtension);
106109
} else {
107110
const content = removeLeadingFilepathComment(options.input.content, languageId, options.input.filePath);
108111
await processFullRewrite(uri, doc as TextDocumentSnapshot | undefined, content, this._promptContext.stream, token, []);
109112
this._promptContext.stream.textEdit(uri, true);
113+
this.sendTelemetry(options.chatRequestId, modelId, fileExtension);
110114
return new LanguageModelToolResult([
111115
new LanguageModelPromptTsxPart(
112116
await renderPromptElementJSON(
@@ -161,6 +165,22 @@ export class CreateFileTool implements ICopilotTool<ICreateFileParams> {
161165
pastTenseMessage: new MarkdownString(l10n.t`Created ${formatUriForFileWidget(uri)}`)
162166
};
163167
}
168+
169+
private sendTelemetry(requestId: string | undefined, model: string | undefined, fileExtension: string) {
170+
/* __GDPR__
171+
"createFileToolInvoked" : {
172+
"owner": "bhavyaus",
173+
"requestId": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "comment": "The id of the current request turn." },
174+
"model": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "comment": "The model that invoked the tool" },
175+
"fileExtension": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "comment": "The file extension of the created file" }
176+
}
177+
*/
178+
this.telemetryService.sendMSFTTelemetryEvent('createFileToolInvoked', {
179+
requestId,
180+
model,
181+
fileExtension
182+
});
183+
}
164184
}
165185

166186
ToolRegistry.registerTool(CreateFileTool);

0 commit comments

Comments
 (0)