/** * 补全公共信息 */ export interface CompletionBaseTelemetry { /** * 补全 ID,request_id + completion_id 可关联到 source_request_id + completion_id 确定唯一一组补全行为,避免跨事件匹配 */ completionId: string; /** * 请求 ID */ requestId: string; /** * 相对工作区路径 */ filePath: string; /** * 当前补全文件的绝对路径,主要用于获取 vcs 相关信息,不会上报到数据库 */ fileUri?: string; /** * 语言 ID */ languageId: string; /** * 触发来源 */ triggerSource: CompletionTriggerSource; /** * 补全类型 */ type: CompletionType; /** * 补全意图 */ intent: CompletionIntent; /** * 提示内容长度 */ promptLength: number; /** * 用户当前正在使用的模型 ID */ requestModelId: string; /** * 用户当前正在使用的模型名称,假如用户使用的模型不在可用模型列表中时,此字段可能为空 */ requestModelName?: string; } export declare enum CompletionType { Completion = "completion", NES = "nes" } /** * 补全触发事件 */ export interface CompletionTriggerTelemetry extends CompletionBaseTelemetry { /** * 触发时间 */ triggerAt: number; /** * 模型的 stops */ stops: string; /** * 采样数 即模型参数中的 n */ sampleCount: number; /** * 当前编辑的文档的行数 */ fileLineCount: number; /** * 提示后缀长度 */ suffixLength: number; /** * 光标所在 AST 节点类型 */ cursorNodeType: string; /** * 归一化 AST 节点类型 */ astNodeGroup: string; /** * 光标前一个字符 */ charBeforeCursor: string; /** * 触发字符 */ triggerChar: string; /** * 光标前内容 */ textBeforeCursor: string; /** * 光标后内容 */ textAfterCursor: string; } export declare enum CompletionTriggerSource { Auto = "auto", Shortcut = "shortcut" } export declare enum CompletionIntent { Inline = "inline", BlockScope = "block-scope", Unknown = "unknown" } /** * 补全完成事件 */ export interface CompletionResponseTelemetry extends CompletionBaseTelemetry { /** * 片段原始的 remote 请求 ID,remote 请求下等于自身,cache 模式下会追溯到原始请求 */ sourceRequestId: string; /** * 模型 ID (后端返回) */ responseModelId: string; /** * 本条推荐的下标 */ index: number; /** * 本条推荐的行数 */ lineCount: number; /** * 本条推荐的代码片段 */ snippet: string; /** * 本条推荐片段的字符数 */ snippetLength: number; /** * 请求耗时,联合 source 是 remote 的情况下计算平均有效耗时 */ cost: number; /** * 推荐来源 */ source: 'remote' | 'cache' | 'prefetch' | 'multi-step'; /** * 停止的原因 'stop' | 'length' */ finishReason: string; /** * 停止时间 */ finishAt: number; /** * 原始的推荐片段 */ originSnippet: string; /** * 原始推荐片段的长度 */ originSnippetLength: number; /** * 原始推荐片段的中止原因 */ originFinishReason: string; /** * 后处理的耗时 */ postProcessCost: number; /** * 后处理的详情 */ postProcessDetails: string; /** * 传输停止的操作来自 remote 或 client */ stoppedBy: string; } export declare enum CompletionAction { Accept = "accept", Reject = "reject" } export declare enum CompletionActionSource { Tab = "tab", ESC = "esc", Cursor = "cursor", Navigate = "navigate" } /** * 补全采纳事件 */ export interface CompletionActionTelemetry extends CompletionBaseTelemetry { /** * 采纳的动作 */ action: CompletionAction; /** * 推荐来源 */ source: 'remote' | 'cache' | 'prefetch' | 'multi-step'; /** * 采纳的动作来源 */ actionSource: CompletionActionSource; /** * 片段原始的 remote 请求 ID,remote 请求下等于自身,cache 模式下会追溯到原始请求 */ sourceRequestId: string; /** * 采纳的方式 */ acceptMode?: CompletionAcceptMode; /** * 本次接受的下标 */ acceptIndex?: number; /** * 本次接受的片段行数 */ acceptLines: number; /** * 本次接受的代码片段内容 */ snippet: string; /** * 代码片段的字符数,按自然字符计数 */ snippetLength: number; /** * 本次补全推荐的代码片段包含的代码行数 */ recommendedLines: number; /** * 本次补全推荐的的代码片段内容 */ recommendedSnippet: string; /** * 本次补全推荐的代码片段的字符数,按自然字符计数 */ recommendedSnippetLength: number; /** * 本次推荐光标前缀内容,仅仅包括光标行前的内容 */ cursorPrefix?: string; /** * 本次推荐光标前缀内容的长度 */ cursorPrefixLength?: number; /** * 采纳或者取消动作触发的时间,主要用于 typeAsSuggested 的延时计算,其他情况下几乎等同于 event_time */ actionAt: number; /** * 模型返回推荐片段呈现的时间戳 */ presentAt: number; /** * 模型 ID (后端返回) */ responseModelId: string; } export declare enum CompletionAcceptMode { Full = "full", Partial = "partial", Navigate = "navigate" } /** * 补全采纳后留存事件 */ export interface CompletionPostAcceptTelemetry extends CompletionBaseTelemetry { /** * 上报间隔:单位(秒) * * 15, 30, 60, 300, 600 */ duration: number; /** * 当前选区的状态:部分修改,完全未修改 */ state: string; /** * 修改后的代码内容,完全未修改时无需上报 */ textInRange: string; /** * 相似度 0~1 */ similarity: number; /** * 原始的推荐片段 */ snippet: string; /** * 原始推荐片段的长度 */ snippetLength: number; /** * 采纳的方式 */ acceptMode: 'full' | 'line' | 'word' | 'typeAsSuggested'; } export interface CompletionModelFileOperationTelemetry { conversationId: string; conversationRequestId: string; conversationMessageId: string; requestId: string; extraInfo?: Record; scene: string; actionCode: 'accept' | 'reject'; } //# sourceMappingURL=completion.d.ts.map