@msn-control/liftoff 0.6.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,6 @@ import type { Readable } from 'node:stream';
2
2
  import type { DependencyCommandPlan } from './project-dependencies.js';
3
3
  import { type CommandRunner } from './process-runner.js';
4
4
  import { PresentationSession } from './terminal.js';
5
- import type { UpdateImpact } from './update-impact.js';
6
5
  import type { CodingAgentId, ProjectOptions, ProjectPlan } from './types.js';
7
6
  interface AgentCheckboxChoice {
8
7
  name: string;
@@ -57,9 +56,6 @@ export declare class InteractivePrompter {
57
56
  confirmPlan(plan: ProjectPlan, yes?: boolean, actionLabel?: string): Promise<boolean>;
58
57
  confirmToolInstallation(prompt: ToolInstallationPrompt | string): Promise<boolean>;
59
58
  confirmFileReplacements(paths: readonly string[]): Promise<boolean>;
60
- presentUpdateImpact(impact: UpdateImpact): void;
61
- confirmSafeUpdate(actionCount: number): Promise<boolean>;
62
- confirmConflictOverwrite(paths: readonly string[], managedPathsRemoved: readonly string[]): Promise<boolean>;
63
59
  confirmDependencyInstallation(commands: DependencyCommandPlan[]): Promise<boolean>;
64
60
  private askRequired;
65
61
  private choose;
@@ -73,7 +69,6 @@ export declare class InteractivePrompter {
73
69
  private discoverAgents;
74
70
  private pathExists;
75
71
  private agentChoiceLabel;
76
- private impactPart;
77
72
  private question;
78
73
  private lineIterator;
79
74
  private releaseLineInput;
@@ -164,66 +164,6 @@ export class InteractivePrompter {
164
164
  this.presentation.bullets('Existing regular files with different content', paths);
165
165
  return this.confirm('Replace every listed file?', false);
166
166
  }
167
- presentUpdateImpact(impact) {
168
- const safeParts = [
169
- this.impactPart(impact.creates.length, 'create', 'creates'),
170
- this.impactPart(impact.restores.length, 'restore', 'restores'),
171
- this.impactPart(impact.replacements.length, 'replace', 'replaces'),
172
- this.impactPart(impact.moves.length, 'move', 'moves'),
173
- this.impactPart(impact.recordedStateRefreshes.length, 'recorded-state refresh', 'recorded-state refreshes')
174
- ].filter((part) => part !== undefined);
175
- const removedPaths = impact.managedPathsRemovedOnOverwrite.length > 0
176
- ? `${impact.managedPathsRemoved.length} safe, ${impact.managedPathsRemovedOnOverwrite.length} more if conflicts are approved`
177
- : `${impact.managedPathsRemoved.length}`;
178
- this.presentation.definitions('Update impact', [
179
- {
180
- label: 'Safe actions',
181
- value: impact.safeActionCount > 0
182
- ? `${impact.safeActionCount} (${safeParts.join(', ')})`
183
- : 'None'
184
- },
185
- {
186
- label: 'Local or user-owned files at risk',
187
- value: impact.localOrUserOwnedFilesAtRisk > 0
188
- ? `${impact.localOrUserOwnedFilesAtRisk} (requires separate consent)`
189
- : '0'
190
- },
191
- { label: 'Managed old paths removed', value: removedPaths },
192
- {
193
- label: 'Orphans preserved',
194
- value: `${impact.orphansPreserved.length} (never deleted automatically)`
195
- },
196
- {
197
- label: 'Manifest updated',
198
- value: impact.manifestWillUpdate ? 'Yes, after an accepted update' : 'No'
199
- },
200
- {
201
- label: 'Dependency definitions',
202
- value: impact.dependencyDefinitions.length > 0
203
- ? impact.dependencyDefinitions.join(', ')
204
- : 'None'
205
- },
206
- { label: 'Dependencies installed', value: 'No' },
207
- {
208
- label: 'Liftoff backup after success',
209
- value: 'No; rollback is available only if the transaction fails'
210
- }
211
- ]);
212
- }
213
- async confirmSafeUpdate(actionCount) {
214
- const noun = actionCount === 1 ? 'action' : 'actions';
215
- return this.confirm(`Apply these ${actionCount} safe update ${noun} now?`, false);
216
- }
217
- async confirmConflictOverwrite(paths, managedPathsRemoved) {
218
- this.presentation.bullets('Local or user-owned files at risk', paths);
219
- if (managedPathsRemoved.length > 0) {
220
- this.presentation.bullets('Managed old paths removed on overwrite', managedPathsRemoved);
221
- }
222
- this.presentation.warning('A successful overwrite permanently replaces the listed local content. ' +
223
- 'Liftoff keeps no backup after success; commit or copy local work first.');
224
- const noun = paths.length === 1 ? 'conflict' : 'conflicts';
225
- return this.confirm(`Overwrite all ${paths.length} listed ${noun}?`, false);
226
- }
227
167
  async confirmDependencyInstallation(commands) {
228
168
  this.presentation.table('Project dependency commands', ['Purpose', 'Working directory', 'Command'], commands.map((command) => [
229
169
  command.label,
@@ -423,12 +363,6 @@ export class InteractivePrompter {
423
363
  ].filter((state) => state !== undefined);
424
364
  return `${agent.label} (${states.length > 0 ? states.join(', ') : 'not observable'})`;
425
365
  }
426
- impactPart(count, singular, plural) {
427
- if (count === 0) {
428
- return undefined;
429
- }
430
- return `${count} ${count === 1 ? singular : plural}`;
431
- }
432
366
  async question(label, defaultValue) {
433
367
  this.presentation.prompt(label, defaultValue);
434
368
  const answer = await this.lineIterator().next();
@@ -1 +1 @@
1
- {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export interface TelemetryConfigPathOptions {
2
+ env?: NodeJS.ProcessEnv;
3
+ platform?: NodeJS.Platform;
4
+ homedir?: string;
5
+ }
6
+ export interface TelemetryConfigFileSystem {
7
+ readText(filePath: string): Promise<string>;
8
+ makeDirectory(directoryPath: string): Promise<void>;
9
+ writeExclusive(filePath: string, content: string): Promise<void>;
10
+ replaceFile(sourcePath: string, targetPath: string): Promise<void>;
11
+ removeFile(filePath: string): Promise<void>;
12
+ }
13
+ export interface TelemetryConfigOptions extends TelemetryConfigPathOptions {
14
+ configPath?: string;
15
+ fileSystem?: TelemetryConfigFileSystem;
16
+ }
17
+ export declare const nodeTelemetryConfigFileSystem: TelemetryConfigFileSystem;
18
+ export declare function getTelemetryConfigPath(options?: TelemetryConfigPathOptions): string;
19
+ export declare function readTelemetryNoticeVersion(options?: TelemetryConfigOptions): Promise<number | undefined>;
20
+ export declare function recordTelemetryNotice(options?: TelemetryConfigOptions): Promise<boolean>;
@@ -0,0 +1,105 @@
1
+ import { mkdir, readFile, rename, rm, writeFile } from 'node:fs/promises';
2
+ import os from 'node:os';
3
+ import path from 'node:path';
4
+ import { telemetryNoticeVersion } from './contract.js';
5
+ const configDirectoryName = 'liftoff';
6
+ const configFileName = 'config.json';
7
+ let temporarySequence = 0;
8
+ export const nodeTelemetryConfigFileSystem = {
9
+ readText: (filePath) => readFile(filePath, 'utf8'),
10
+ makeDirectory: async (directoryPath) => {
11
+ await mkdir(directoryPath, { recursive: true });
12
+ },
13
+ writeExclusive: async (filePath, content) => {
14
+ await writeFile(filePath, content, { encoding: 'utf8', flag: 'wx', mode: 0o600 });
15
+ },
16
+ replaceFile: (sourcePath, targetPath) => rename(sourcePath, targetPath),
17
+ removeFile: async (filePath) => {
18
+ await rm(filePath, { force: true });
19
+ }
20
+ };
21
+ function isJsonObject(value) {
22
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
23
+ }
24
+ function platformPath(platform) {
25
+ return platform === 'win32' ? path.win32 : path.posix;
26
+ }
27
+ export function getTelemetryConfigPath(options = {}) {
28
+ const env = options.env ?? process.env;
29
+ const platform = options.platform ?? process.platform;
30
+ const paths = platformPath(platform);
31
+ const xdgConfigHome = env.XDG_CONFIG_HOME;
32
+ if (xdgConfigHome) {
33
+ return paths.join(xdgConfigHome, configDirectoryName, configFileName);
34
+ }
35
+ const homedir = options.homedir ?? os.homedir();
36
+ if (platform === 'win32') {
37
+ const appData = env.APPDATA ?? paths.join(homedir, 'AppData', 'Roaming');
38
+ return paths.join(appData, configDirectoryName, configFileName);
39
+ }
40
+ return paths.join(homedir, '.config', configDirectoryName, configFileName);
41
+ }
42
+ function resolveConfigPath(options) {
43
+ return options.configPath ?? getTelemetryConfigPath(options);
44
+ }
45
+ async function readConfig(options) {
46
+ const fileSystem = options.fileSystem ?? nodeTelemetryConfigFileSystem;
47
+ try {
48
+ const parsed = JSON.parse(await fileSystem.readText(resolveConfigPath(options)));
49
+ return isJsonObject(parsed)
50
+ ? { status: 'valid', config: parsed }
51
+ : { status: 'invalid', config: {} };
52
+ }
53
+ catch (error) {
54
+ if (error.code === 'ENOENT') {
55
+ return { status: 'missing', config: {} };
56
+ }
57
+ return { status: 'invalid', config: {} };
58
+ }
59
+ }
60
+ export async function readTelemetryNoticeVersion(options = {}) {
61
+ const result = await readConfig(options);
62
+ if (result.status !== 'valid') {
63
+ return undefined;
64
+ }
65
+ const telemetry = result.config.telemetry;
66
+ if (!isJsonObject(telemetry)) {
67
+ return undefined;
68
+ }
69
+ return Number.isInteger(telemetry.noticeVersion) && Number(telemetry.noticeVersion) >= 0
70
+ ? Number(telemetry.noticeVersion)
71
+ : undefined;
72
+ }
73
+ export async function recordTelemetryNotice(options = {}) {
74
+ const fileSystem = options.fileSystem ?? nodeTelemetryConfigFileSystem;
75
+ const configPath = resolveConfigPath(options);
76
+ const result = await readConfig(options);
77
+ if (result.status === 'invalid') {
78
+ return false;
79
+ }
80
+ const existingTelemetry = isJsonObject(result.config.telemetry)
81
+ ? result.config.telemetry
82
+ : {};
83
+ const config = {
84
+ ...result.config,
85
+ telemetry: {
86
+ ...existingTelemetry,
87
+ noticeVersion: telemetryNoticeVersion
88
+ }
89
+ };
90
+ const paths = platformPath(options.platform ?? process.platform);
91
+ const directory = paths.dirname(configPath);
92
+ temporarySequence += 1;
93
+ const temporaryPath = paths.join(directory, `.${paths.basename(configPath)}.${process.pid}.${temporarySequence}.tmp`);
94
+ try {
95
+ await fileSystem.makeDirectory(directory);
96
+ await fileSystem.writeExclusive(temporaryPath, `${JSON.stringify(config, null, 2)}\n`);
97
+ await fileSystem.replaceFile(temporaryPath, configPath);
98
+ return true;
99
+ }
100
+ catch {
101
+ await fileSystem.removeFile(temporaryPath).catch(() => undefined);
102
+ return false;
103
+ }
104
+ }
105
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/telemetry/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ export declare const telemetrySchemaVersion: 1;
2
+ export declare const telemetryEventName: 'command_executed';
3
+ export declare const telemetryNoticeVersion: 1;
4
+ export declare const telemetryClientFields: readonly ['schemaVersion', 'event', 'command', 'cliVersion', 'outcome'];
5
+ export declare const telemetryStorageFields: readonly ['TimeGenerated', 'EventName', 'SchemaVersion', 'Command', 'CliVersion', 'Outcome'];
6
+ export declare const telemetryCommands: readonly ['help', 'version', 'init', 'plan', 'patterns', 'providers', 'regions', 'regions:search', 'validate', 'update', 'migrate', 'doctor', 'dev', 'dev:up', 'dev:down', 'dev:logs', 'dev:reset', 'infra', 'infra:init', 'infra:plan', 'infra:apply', 'infra:output'];
7
+ export type TelemetryCommand = (typeof telemetryCommands)[number];
8
+ export type TelemetryOutcome = 'success' | 'failure';
9
+ export interface TelemetryEvent {
10
+ schemaVersion: typeof telemetrySchemaVersion;
11
+ event: typeof telemetryEventName;
12
+ command: TelemetryCommand;
13
+ cliVersion: string;
14
+ outcome: TelemetryOutcome;
15
+ }
16
+ export interface TelemetryStorageRecord {
17
+ TimeGenerated: string;
18
+ EventName: typeof telemetryEventName;
19
+ SchemaVersion: typeof telemetrySchemaVersion;
20
+ Command: TelemetryCommand;
21
+ CliVersion: string;
22
+ Outcome: TelemetryOutcome;
23
+ }
24
+ export interface TelemetryCommandInput {
25
+ command?: string;
26
+ subcommand?: string;
27
+ flags: Readonly<Record<string, unknown>>;
28
+ }
29
+ export declare function isTelemetryCommand(value: unknown): value is TelemetryCommand;
30
+ export declare function isTelemetryCliVersion(value: unknown): value is string;
31
+ export declare function canonicalTelemetryCommand(input: TelemetryCommandInput): TelemetryCommand | undefined;
32
+ export declare function createTelemetryEvent(command: TelemetryCommand, cliVersion: string, exitCode: number): TelemetryEvent;
33
+ export declare function createTelemetryStorageRecord(event: TelemetryEvent, generatedAt: Date): TelemetryStorageRecord;
@@ -0,0 +1,82 @@
1
+ export const telemetrySchemaVersion = 1;
2
+ export const telemetryEventName = 'command_executed';
3
+ export const telemetryNoticeVersion = 1;
4
+ export const telemetryClientFields = [
5
+ 'schemaVersion',
6
+ 'event',
7
+ 'command',
8
+ 'cliVersion',
9
+ 'outcome'
10
+ ];
11
+ export const telemetryStorageFields = [
12
+ 'TimeGenerated',
13
+ 'EventName',
14
+ 'SchemaVersion',
15
+ 'Command',
16
+ 'CliVersion',
17
+ 'Outcome'
18
+ ];
19
+ export const telemetryCommands = [
20
+ 'help',
21
+ 'version',
22
+ 'init',
23
+ 'plan',
24
+ 'patterns',
25
+ 'providers',
26
+ 'regions',
27
+ 'regions:search',
28
+ 'validate',
29
+ 'update',
30
+ 'migrate',
31
+ 'doctor',
32
+ 'dev',
33
+ 'dev:up',
34
+ 'dev:down',
35
+ 'dev:logs',
36
+ 'dev:reset',
37
+ 'infra',
38
+ 'infra:init',
39
+ 'infra:plan',
40
+ 'infra:apply',
41
+ 'infra:output'
42
+ ];
43
+ const telemetryCommandSet = new Set(telemetryCommands);
44
+ const telemetryCliVersionPattern = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-(?:alpha|beta|rc)(?:\.(0|[1-9]\d*))?)?$/;
45
+ export function isTelemetryCommand(value) {
46
+ return typeof value === 'string' && telemetryCommandSet.has(value);
47
+ }
48
+ export function isTelemetryCliVersion(value) {
49
+ return typeof value === 'string' && telemetryCliVersionPattern.test(value);
50
+ }
51
+ export function canonicalTelemetryCommand(input) {
52
+ if (input.command === undefined ||
53
+ input.command === 'help' ||
54
+ input.command === '--help' ||
55
+ input.flags.help === true) {
56
+ return 'help';
57
+ }
58
+ const candidate = input.subcommand
59
+ ? `${input.command}:${input.subcommand}`
60
+ : input.command;
61
+ return isTelemetryCommand(candidate) ? candidate : undefined;
62
+ }
63
+ export function createTelemetryEvent(command, cliVersion, exitCode) {
64
+ return {
65
+ schemaVersion: telemetrySchemaVersion,
66
+ event: telemetryEventName,
67
+ command,
68
+ cliVersion,
69
+ outcome: exitCode === 0 ? 'success' : 'failure'
70
+ };
71
+ }
72
+ export function createTelemetryStorageRecord(event, generatedAt) {
73
+ return {
74
+ TimeGenerated: generatedAt.toISOString(),
75
+ EventName: event.event,
76
+ SchemaVersion: event.schemaVersion,
77
+ Command: event.command,
78
+ CliVersion: event.cliVersion,
79
+ Outcome: event.outcome
80
+ };
81
+ }
82
+ //# sourceMappingURL=contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/telemetry/contract.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAU,CAAC;AACjD,MAAM,CAAC,MAAM,kBAAkB,GAAG,kBAA2B,CAAC;AAC9D,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAU,CAAC;AACjD,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,eAAe;IACf,OAAO;IACP,SAAS;IACT,YAAY;IACZ,SAAS;CACD,CAAC;AACX,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,eAAe;IACf,WAAW;IACX,eAAe;IACf,SAAS;IACT,YAAY;IACZ,SAAS;CACD,CAAC;AAEX,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,MAAM;IACN,SAAS;IACT,MAAM;IACN,MAAM;IACN,UAAU;IACV,WAAW;IACX,SAAS;IACT,gBAAgB;IAChB,UAAU;IACV,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,KAAK;IACL,QAAQ;IACR,UAAU;IACV,UAAU;IACV,WAAW;IACX,OAAO;IACP,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,cAAc;CACN,CAAC;AA4BX,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAC5E,MAAM,0BAA0B,GAC9B,sFAAsF,CAAC;AAEzF,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAA4B;IACpE,IACE,KAAK,CAAC,OAAO,KAAK,SAAS;QAC3B,KAAK,CAAC,OAAO,KAAK,MAAM;QACxB,KAAK,CAAC,OAAO,KAAK,QAAQ;QAC1B,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,EACzB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU;QAChC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE;QACxC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;IAClB,OAAO,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,OAAyB,EACzB,UAAkB,EAClB,QAAgB;IAEhB,OAAO;QACL,aAAa,EAAE,sBAAsB;QACrC,KAAK,EAAE,kBAAkB;QACzB,OAAO;QACP,UAAU;QACV,OAAO,EAAE,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;KAChD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,KAAqB,EACrB,WAAiB;IAEjB,OAAO;QACL,aAAa,EAAE,WAAW,CAAC,WAAW,EAAE;QACxC,SAAS,EAAE,KAAK,CAAC,KAAK;QACtB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { ParsedArgs } from '../types.js';
2
+ import { type TelemetryCommand } from './contract.js';
3
+ import { type TelemetryConfigOptions } from './config.js';
4
+ export declare const productionTelemetryEndpoint = "https://ca-liftoff-telemetry-f5be1618.politetree-7a65ae27.koreacentral.azurecontainerapps.io/api/events";
5
+ export declare const telemetryRequestTimeoutMs = 1000;
6
+ export declare const telemetryNotice: string;
7
+ export type TelemetryFetch = (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
8
+ export interface TelemetryRuntimeOptions {
9
+ env?: NodeJS.ProcessEnv;
10
+ endpoint?: string;
11
+ fetch?: TelemetryFetch;
12
+ timeoutMs?: number;
13
+ config?: TelemetryConfigOptions;
14
+ stderr?: NodeJS.WritableStream;
15
+ }
16
+ export declare function isTelemetryEnabled(env?: NodeJS.ProcessEnv): boolean;
17
+ export declare function telemetryCommandFor(parsed: ParsedArgs): TelemetryCommand | undefined;
18
+ export declare function maybeShowTelemetryNotice(options?: TelemetryRuntimeOptions): Promise<boolean>;
19
+ export declare function trackCommand(command: TelemetryCommand, cliVersion: string, exitCode: number, options?: TelemetryRuntimeOptions): Promise<void>;
@@ -0,0 +1,97 @@
1
+ import { canonicalTelemetryCommand, createTelemetryEvent, telemetryNoticeVersion } from './contract.js';
2
+ import { readTelemetryNoticeVersion, recordTelemetryNotice } from './config.js';
3
+ export const productionTelemetryEndpoint = 'https://ca-liftoff-telemetry-f5be1618.politetree-7a65ae27.koreacentral.azurecontainerapps.io/api/events';
4
+ export const telemetryRequestTimeoutMs = 1_000;
5
+ export const telemetryNotice = 'Telemetry: Liftoff sends command name, CLI version, and zero/nonzero outcome with no persistent identifier. ' +
6
+ 'Opt out with LIFTOFF_TELEMETRY=0 or DO_NOT_TRACK=1.\n';
7
+ export function isTelemetryEnabled(env = process.env) {
8
+ return (env.LIFTOFF_TELEMETRY !== '0' &&
9
+ env.DO_NOT_TRACK !== '1' &&
10
+ env.CI !== 'true');
11
+ }
12
+ export function telemetryCommandFor(parsed) {
13
+ return canonicalTelemetryCommand(parsed);
14
+ }
15
+ export async function maybeShowTelemetryNotice(options = {}) {
16
+ if (!isTelemetryEnabled(options.env)) {
17
+ return false;
18
+ }
19
+ try {
20
+ const seenVersion = await readTelemetryNoticeVersion(options.config);
21
+ if (seenVersion !== undefined && seenVersion >= telemetryNoticeVersion) {
22
+ return true;
23
+ }
24
+ if (!(await writeTelemetryNotice(options.stderr ?? process.stderr))) {
25
+ return false;
26
+ }
27
+ await recordTelemetryNotice(options.config);
28
+ return true;
29
+ }
30
+ catch {
31
+ // Telemetry disclosure state must never affect command execution.
32
+ return false;
33
+ }
34
+ }
35
+ function writeTelemetryNotice(stderr) {
36
+ return new Promise((resolve) => {
37
+ let settled = false;
38
+ const finish = (success, awaitErrorEvent = false) => {
39
+ if (settled) {
40
+ return;
41
+ }
42
+ settled = true;
43
+ if (!awaitErrorEvent) {
44
+ stderr.removeListener('error', onError);
45
+ }
46
+ resolve(success);
47
+ };
48
+ const onError = () => {
49
+ finish(false);
50
+ };
51
+ stderr.once('error', onError);
52
+ try {
53
+ stderr.write(telemetryNotice, (error) => {
54
+ finish(error == null, error != null);
55
+ });
56
+ }
57
+ catch {
58
+ finish(false);
59
+ }
60
+ });
61
+ }
62
+ export async function trackCommand(command, cliVersion, exitCode, options = {}) {
63
+ if (!isTelemetryEnabled(options.env)) {
64
+ return;
65
+ }
66
+ const endpoint = options.endpoint ?? productionTelemetryEndpoint;
67
+ if (!endpoint) {
68
+ return;
69
+ }
70
+ let url;
71
+ try {
72
+ url = new URL(endpoint);
73
+ }
74
+ catch {
75
+ return;
76
+ }
77
+ if (url.protocol !== 'https:') {
78
+ return;
79
+ }
80
+ const fetchTelemetry = options.fetch ?? globalThis.fetch.bind(globalThis);
81
+ try {
82
+ const response = await fetchTelemetry(url, {
83
+ method: 'POST',
84
+ headers: { 'content-type': 'application/json' },
85
+ body: JSON.stringify(createTelemetryEvent(command, cliVersion, exitCode)),
86
+ redirect: 'error',
87
+ signal: AbortSignal.timeout(options.timeoutMs ?? telemetryRequestTimeoutMs)
88
+ });
89
+ if (!response.ok) {
90
+ return;
91
+ }
92
+ }
93
+ catch {
94
+ // Delivery is deliberately best-effort and never retried or persisted.
95
+ }
96
+ }
97
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":"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"}
package/dist/templates.js CHANGED
@@ -553,9 +553,9 @@ Copy \`.env.example\` to \`.env\`, then configure only the integrations you use:
553
553
  function renderGeneratedUpdateGuide() {
554
554
  return `## Safe Liftoff Updates
555
555
 
556
- \`liftoff update\` reports drift and, in an interactive terminal, shows the overwrite impact before a default-No prompt for safe managed changes. Local or user-owned conflicts require a separate default-No confirmation. With redirected input or output, or with \`--json\`, update remains a prompt-free read-only check; \`liftoff update --apply\` and \`liftoff update --apply --force\` provide explicit automation consent.
556
+ \`liftoff update\` immediately applies safe managed changes without prompting in interactive, redirected, and automated environments. Use \`liftoff update --check\` for a read-only human drift report, or \`liftoff update --check --json\` as an automation gate that exits 0 when clean and 2 when drift exists.
557
557
 
558
- An occupied destination with different user bytes is reported and preserved without conflict consent, while an identical destination is adopted without rewriting it. Update never deletes orphans or installs dependencies. A failed transaction is rolled back, but Liftoff retains no backup after a successful overwrite, so commit or copy local work first.
558
+ Local or user-owned conflicts are skipped by default. Review the reported paths, commit or copy local work, and use \`liftoff update --force\` only when every listed overwrite is intended. An occupied destination with different user bytes remains preserved without force, while an identical destination is adopted without rewriting it. Update never deletes orphans or installs dependencies. A failed transaction is rolled back, but Liftoff retains no backup after a successful overwrite.
559
559
 
560
560
  Liftoff rejects malformed, traversal, absolute, drive-qualified, UNC, separator-containing, or symlink-escaping manifest paths before artifact access. If the manifest is unsafe or malformed, restore \`liftoff.manifest.json\` from version control or regenerate the project with a matching Liftoff version; do not hand-edit unsafe paths. Run \`liftoff <command> --help\` for command-specific syntax because unknown flags, subcommands, values, and extra arguments fail before any write.
561
561
  `;