1
>
/*---------------------------------------------------------------------------------------------
agentHostTelemetryEnv.ts
2
>
* Copyright (c) Microsoft Corporation. All rights reserved.
3
>
* Licensed under the MIT License. See License.txt in the project root for license information.
4
>
*--------------------------------------------------------------------------------------------*/
5
>
6
>
/**
7
>
* Environment variables used to forward the host's resolved telemetry
8
>
* identifiers into the agent host process.
9
>
*
10
>
* The agent host runs in its own utility process and would otherwise compute
11
>
* its own `machineId`/`devDeviceId` live from the MAC address / device-id store
12
>
* on every launch. That can diverge from the workbench's persisted, state-backed
13
>
* identifiers (e.g. when `state.json` was seeded by imaging/migration, or when
14
>
* the "first valid MAC" changes), breaking per-user joins across event sources.
15
>
*
16
>
* To keep the identifiers consistent, the local starter
17
>
* (`ElectronAgentHostStarter`, which runs in the main process where these are
18
>
* already resolved) forwards them via these env vars, and
19
>
* `createAgentHostTelemetryService` prefers them over recomputing.
20
>
*/
21
>
export const AgentHostMachineIdEnvKey = 'VSCODE_AGENT_HOST_MACHINE_ID';
22
>
export const AgentHostSqmIdEnvKey = 'VSCODE_AGENT_HOST_SQM_ID';
23
>
export const AgentHostDevDeviceIdEnvKey = 'VSCODE_AGENT_HOST_DEV_DEVICE_ID';
24
>
25
>
export interface IAgentHostForwardedTelemetryIds {
26
>
readonly machineId: string;
27
>
readonly sqmId: string;
28
>
readonly devDeviceId: string;
29
>
}
30
>
31
>
/**
32
>
* Builds the env var bag that forwards the resolved telemetry identifiers to
33
>
* the agent host process. Empty identifiers are omitted so the host falls back
34
>
* to computing them itself.
35
>
*/
36
>
export function buildAgentHostTelemetryIdEnv(ids: IAgentHostForwardedTelemetryIds): Record<string, string> {
37
const env: Record<string, string> = {};
38
if (ids.machineId) {