import { DeploymentType } from '../product'; import { EventPayloadMapping, Events } from './events'; export interface EventOptions { /** * 是否立即上报 * 默认会进行批量上报 */ immediate?: boolean; } export declare const EventProcessor: unique symbol; export interface EventProcessor { process(context: EventProcessContext): Promise; } export interface EventProcessContext { code: string; event: Partial; } export interface EventMetadata { /** 事件码 */ eventCode: Events; /** 发起上报的时间戳 */ timestamp: number; /** 发起上报和真正上报的时间间隔(单位:毫秒) */ reportDelay: number; /** 临时字段,引用的文件的路径,用于获取源代码相关信息,获取后会删除 */ fileUri?: string; } export interface HostIDEEventPayload { /** 编辑器名(web 不适用) */ ideName?: string; /** 编辑器类型,目前有 vscode、jetbrains、vim,可通过 process.env.ACC_IDE_TYPE 自定义(web 不适用) */ ideType?: string; /** 编辑器机器码,vscode.env.machineId > require('node-machine-id').machineIdSync() > crypto.randomUUID(),非 VSCode 编辑器跳过 env 取值 */ machineId: string; /** 编辑器会话码,vscode.env.sessionId > crypto.randomUUID(),非 VSCode 编辑器跳过 env 取值 */ sessionId: string; /** 编辑器版本(web 不适用) */ ideVersion?: string; } export interface OSEventPayload { /** 操作系统 */ os: string; /** 操作系统架构(web 不适用) */ arch?: string; /** 操作系统版本 */ osVersion: string; } /** * 用于模型上报 */ export interface ENVEventPayload extends Partial { /** {@link HostIDEEventPayload.ideName} */ host?: string; /** {@link ExtensionEventPayload.extName} */ productName?: string; /** {@link ExtensionEventPayload.extVersion} */ productVersion?: string; } export interface VCSEventPayload { /** 源代码管理工具类型(web 不适用) */ vcsType: string; /** 源代码远端仓库地址(web 不适用) */ vcsRepo: string; /** 源代码本地分支(web 不适用) */ vcsBranchName: string; /** 源代码最新的 commit id(web 不适用) */ vcsRevId: string; } export interface ExtensionEventPayload { /** 插件名(web 不适用) */ extName?: string; /** 插件版本(web 不适用) */ extVersion?: string; } export interface UserinfoEventPayload { /** 用户 ID,没有登录时为空 */ userId?: string; /** 用户英文名,没有登录时为空 */ username?: string; /** 用户昵称,没有登录时为空 */ userNickname?: string; /** 企业 ID,旗舰版和专享版才有值 */ enterpriseId?: string; /** 租户 ID */ tenantId?: string; /** 组织架构信息 */ enterprise?: string; } export interface EXPEventPayload { /** 实验流量标识,目前为空 */ expKeys?: string; /** 云端配置信息 */ expParams?: string; } export interface ProductEventPayload { /** 枚举值 SaaS、Cloud-Hosted、Self-Hosted */ product: DeploymentType; /** 构建时间戳 */ releaseDate?: number; /** 构建的 Commit ID */ commit?: string; } export interface UserAgentEventPayload { /** 用户代理字符串浏览器 UA(仅 web 适用)*/ userAgent?: string; } export interface IDELifecycleEventPayload { /** IDE 专用,每次打开工程的唯一生命周期 ID*/ traceId?: string; } export type CommonEventPayload = HostIDEEventPayload & OSEventPayload & VCSEventPayload & ExtensionEventPayload & ProductEventPayload & EXPEventPayload & UserinfoEventPayload & UserAgentEventPayload & IDELifecycleEventPayload; export type EventPayload = EventMetadata & CommonEventPayload & { [K in keyof EventPayloadMapping]?: EventPayloadMapping[K]; } & { env?: ENVEventPayload; }; //# sourceMappingURL=protocol.d.ts.map