@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.
- package/README.md +6 -0
- package/dist/args.js +14 -1
- package/dist/args.js.map +1 -1
- package/dist/cli.d.ts +21 -1
- package/dist/cli.js +85 -17
- package/dist/cli.js.map +1 -1
- package/dist/commands.js +124 -135
- package/dist/commands.js.map +1 -1
- package/dist/file-system.d.ts +1 -0
- package/dist/file-system.js +11 -2
- package/dist/file-system.js.map +1 -1
- package/dist/interactive.d.ts +0 -5
- package/dist/interactive.js +0 -66
- package/dist/interactive.js.map +1 -1
- package/dist/telemetry/config.d.ts +20 -0
- package/dist/telemetry/config.js +105 -0
- package/dist/telemetry/config.js.map +1 -0
- package/dist/telemetry/contract.d.ts +33 -0
- package/dist/telemetry/contract.js +82 -0
- package/dist/telemetry/contract.js.map +1 -0
- package/dist/telemetry/index.d.ts +19 -0
- package/dist/telemetry/index.js +97 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/templates.js +2 -2
- package/docs/cli-reference.md +41 -21
- package/docs/configuration-and-manifests.md +3 -4
- package/docs/existing-repositories.md +6 -6
- package/docs/safety-and-consent.md +34 -17
- package/docs/spec-workflows-and-agents.md +3 -2
- package/docs/telemetry.md +168 -0
- package/docs/troubleshooting.md +7 -9
- package/docs/workloads.md +4 -0
- package/package.json +1 -1
- package/dist/update-impact.d.ts +0 -23
- package/dist/update-impact.js +0 -127
- package/dist/update-impact.js.map +0 -1
package/dist/interactive.d.ts
CHANGED
|
@@ -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;
|
package/dist/interactive.js
CHANGED
|
@@ -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();
|
package/dist/interactive.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive.js","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EACL,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,cAAc,EACd,sBAAsB,EACtB,UAAU,EACV,cAAc,EACd,WAAW,EACX,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,aAAa,EACb,aAAa,EACd,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,aAAa,EAAsB,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AA6DpD,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAClD,YAAY,OAAO,GAAG,2CAA2C;QAC/D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAC1C,CAAC;CACF;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK;QACnE,OAAQ,KAA4B,CAAC,IAAI,KAAK,QAAQ;QACtD,CAAC,CAAE,KAA0B,CAAC,IAAI;QAClC,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,OAAO,KAAK,YAAY,KAAK,IAAI,CAC/B,KAAK,CAAC,IAAI,KAAK,iBAAiB;QAChC,KAAK,CAAC,IAAI,KAAK,kBAAkB;QACjC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CACvD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,KAAK,GAAyB,YAAY,EAC1C,MAAM,GAA0B,aAAa;IAE7C,MAAM,aAAa,GAAG,KAAK,IAAI,YAAY,CAAC;IAC5C,MAAM,QAAQ,GAAG,aAA+C,CAAC;IACjE,MAAM,SAAS,GAAG,MAAqD,CAAC;IACxE,OAAO,QAAQ,CAAC,KAAK,KAAK,IAAI,IAAI,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC;AAC7D,CAAC;AAED,SAAS,eAAe,CAAC,KAAe;IACtC,OAAO,OAAQ,KAEb,CAAC,UAAU,KAAK,UAAU,CAAC;AAC/B,CAAC;AAED,MAAM,OAAO,mBAAmB;IACb,KAAK,CAAW;IAChB,MAAM,CAAwB;IAC9B,YAAY,CAAsB;IAClC,GAAG,CAAS;IACZ,cAAc,CAAU;IACxB,MAAM,CAAiB;IACvB,cAAc,CAAuB;IAC9C,EAAE,CAAsC;IACxC,KAAK,CAAyB;IAC9B,MAAM,GAAG,KAAK,CAAC;IAEvB,YAAY,YAAY,GAA4B,EAAE;QACpD,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,IAAI,aAAa,CAAC;QACnD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,IAAI,IAAI,mBAAmB,CAAC;YACvE,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC7C,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,cAAc,CAAC;QAClD,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QAClC,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,cAAc,CAAC;IACpD,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,OAAuB;QAChD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAClF,MAAM,mBAAmB,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3H,MAAM,WAAW,GAAG,mBAAmB;YACrC,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBACnE,KAAK,EAAE,QAAQ,CAAC,EAAE;gBAClB,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAChB,MAAM,OAAO,GAAG,WAAW,KAAK,OAAO;YACrC,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBACtF,KAAK,EAAE,OAAO,CAAC,EAAE;gBACjB,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,cAAc,GAAG;gBACrD,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC,CAAC;YACN,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QACpB,MAAM,QAAQ,GAAG,WAAW,KAAK,UAAU;YACzC,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAClF,KAAK,EAAE,KAAK,CAAC,EAAE;gBACf,KAAK,EAAE,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,eAAe,GAAG;gBAClD,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC,EAAE,gBAAgB,CAAC;YACxB,CAAC,CAAC,WAAW,KAAK,OAAO;gBACvB,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,gBAAgB;gBACtC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACvB,MAAM,KAAK,GAAG,WAAW,KAAK,qBAAqB;YACjD,CAAC,CAAC,OAAO,CAAC,KAAK;YACf,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBAC9E,KAAK,EAAE,QAAQ,CAAC,EAAE;gBAClB,KAAK,EAAE,GAAG,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC9E,QAAQ,EAAE,QAAQ,CAAC,MAAM,KAAK,SAAS;aACxC,CAAC,CAAC,CAAC,CAAC;QACT,MAAM,MAAM,GAAG,WAAW,KAAK,qBAAqB;YAClD,CAAC,CAAC,OAAO,CAAC,MAAM;YAChB,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,IAAI,CAAC,eAAe,CAAC,KAAM,CAAC,CAAC;QACzD,MAAM,eAAe,GAAG,WAAW,KAAK,qBAAqB;YAC3D,CAAC,CAAC,OAAO,CAAC,eAAe;YACzB,CAAC,CAAC,OAAO,CAAC,eAAe,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;QACjG,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,MAAM,IAAI,CAAC,MAAM,CAC5D,6BAA6B,EAC7B,aAAa,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC/B,KAAK,EAAE,QAAQ,CAAC,EAAE;YAClB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC,EACH,UAAU,CACX,CAAC;QACF,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,IAAI,CAAC,SAAS,CAAC,YAA8B,CAAC,CAAC;QAC9F,MAAM,gBAAgB,GAAG,cAAc;aACpC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;aACzC,MAAM,CAAC,CAAC,KAAK,EAAsC,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;QAC9E,MAAM,YAAY,GAAG,YAAY,KAAK,UAAU,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC;YAC7E,CAAC,CAAC,OAAO,CAAC,YAAY,IAAI,MAAM,IAAI,CAAC,MAAM,CACvC,mCAAmC,EACnC,YAAY;iBACT,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;iBACtD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,EAC7E,gBAAgB,CAAC,CAAC,CAAC,CACpB;YACH,CAAC,CAAC,YAAY,KAAK,UAAU;gBAC3B,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBACrB,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,cAAc,GAAG,WAAW,KAAK,qBAAqB;YAC1D,CAAC,CAAC,OAAO,CAAC,cAAc;gBACtB,MAAM,IAAI,CAAC,OAAO,CAAC,sDAAsD,EAAE,KAAK,CAAC;YACnF,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;QAC3B,MAAM,oBAAoB,GAAG,WAAW,KAAK,qBAAqB;YAChE,CAAC,CAAC,OAAO,CAAC,YAAY;YACtB,CAAC,CAAC,OAAO,CAAC,YAAY,IAAI,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAEzD,OAAO;YACL,GAAG,OAAO;YACV,WAAW;YACX,WAAW;YACX,QAAQ;YACR,OAAO;YACP,KAAK;YACL,MAAM;YACN,eAAe;YACf,YAAY;YACZ,MAAM,EAAE,gBAAgB;YACxB,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5D,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CACf,IAAiB,EACjB,GAAa,EACb,WAAW,GAAG,qBAAqB;QAEnC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,uBAAuB,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QACjF,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,MAAuC;QACnE,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,mCAAmC,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACxF,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,mCAAmC,EAAE;gBACjE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,QAAQ,GAAG,EAAE;gBAChE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE;gBAC3C,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE;gBACnD,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE;aAC9C,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC5C,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,4CAA4C,EAAE,KAAK,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,KAAwB;QACpD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC,OAAO,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED,mBAAmB,CAAC,MAAoB;QACtC,MAAM,SAAS,GAAG;YAChB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC;YAC3D,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC;YAC9D,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC;YAClE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;YACrD,IAAI,CAAC,UAAU,CACb,MAAM,CAAC,sBAAsB,CAAC,MAAM,EACpC,wBAAwB,EACxB,0BAA0B,CAC3B;SACF,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QACvD,MAAM,YAAY,GAAG,MAAM,CAAC,8BAA8B,CAAC,MAAM,GAAG,CAAC;YACnE,CAAC,CAAC,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,UAAU,MAAM,CAAC,8BAA8B,CAAC,MAAM,iCAAiC;YAC7H,CAAC,CAAC,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC;QAE3C,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,eAAe,EAAE;YAC7C;gBACE,KAAK,EAAE,cAAc;gBACrB,KAAK,EAAE,MAAM,CAAC,eAAe,GAAG,CAAC;oBAC/B,CAAC,CAAC,GAAG,MAAM,CAAC,eAAe,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;oBACvD,CAAC,CAAC,MAAM;aACX;YACD;gBACE,KAAK,EAAE,mCAAmC;gBAC1C,KAAK,EAAE,MAAM,CAAC,2BAA2B,GAAG,CAAC;oBAC3C,CAAC,CAAC,GAAG,MAAM,CAAC,2BAA2B,8BAA8B;oBACrE,CAAC,CAAC,GAAG;aACR;YACD,EAAE,KAAK,EAAE,2BAA2B,EAAE,KAAK,EAAE,YAAY,EAAE;YAC3D;gBACE,KAAK,EAAE,mBAAmB;gBAC1B,KAAK,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,gCAAgC;aACzE;YACD;gBACE,KAAK,EAAE,kBAAkB;gBACzB,KAAK,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,IAAI;aAC1E;YACD;gBACE,KAAK,EAAE,wBAAwB;gBAC/B,KAAK,EAAE,MAAM,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC;oBAC5C,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;oBACzC,CAAC,CAAC,MAAM;aACX;YACD,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE;YAChD;gBACE,KAAK,EAAE,8BAA8B;gBACrC,KAAK,EAAE,yDAAyD;aACjE;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,WAAmB;QACzC,MAAM,IAAI,GAAG,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QACtD,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,WAAW,gBAAgB,IAAI,OAAO,EAAE,KAAK,CAAC,CAAC;IACpF,CAAC;IAED,KAAK,CAAC,wBAAwB,CAC5B,KAAwB,EACxB,mBAAsC;QAEtC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;QACtE,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,YAAY,CAAC,OAAO,CACvB,wCAAwC,EACxC,mBAAmB,CACpB,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,OAAO,CACvB,wEAAwE;YACxE,yEAAyE,CAC1E,CAAC;QACF,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC;QAC3D,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,KAAK,CAAC,MAAM,WAAW,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,6BAA6B,CAAC,QAAiC;QACnE,IAAI,CAAC,YAAY,CAAC,KAAK,CACrB,6BAA6B,EAC7B,CAAC,SAAS,EAAE,mBAAmB,EAAE,SAAS,CAAC,EAC3C,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK;YACb,OAAO,CAAC,GAAG;YACX,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC;SAC/B,CAAC,CACH,CAAC;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,KAAa;QACrC,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACnD,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,KAAK,eAAe,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,MAAM,CAClB,KAAa,EACb,OAA2B,EAC3B,YAAqB;QAErB,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACxD,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,OAAO,EAAE,MAAM,CAAC,KAAK,KAAK,YAAY;aACvC,CAAC,CAAC,CAAC,CAAC;YACL,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3E,IAAI,CAAC,MAAM,IAAI,YAAY,EAAE,CAAC;gBAC5B,OAAO,YAAY,CAAC;YACtB,CAAC;YACD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;YAC7F,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;gBAC3D,SAAS;YACX,CAAC;YACD,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACtB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,0BAA0B,CAAC,CAAC;gBACvE,SAAS;YACX,CAAC;YACD,OAAO,QAAQ,CAAC,KAAK,CAAC;QACxB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,YAAqB;QACxD,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QAC5C,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACzE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,OAAO,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,KAAK,CAAC;IAC5C,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,KAAa;QACzC,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC;YACzC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAChF,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACtD,IAAI,UAAU,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACrC,OAAO,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;YAChC,CAAC;YACD,IAAI,UAAU,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBACtC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBAC7D,OAAO,QAAQ,CAAC,IAAI,CAAC;YACvB,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,OAAO,CACvB,yBAAyB,UAAU,CAAC,KAAK,8CAA8C,CACxF,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,OAA2B;QACpD,IAAI,CAAC,YAAY,CAAC,KAAK,CACrB,wBAAwB,EACxB,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,EAClC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAClF,CAAC;QACF,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACxE,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YACnD,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7E,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxE,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,YAA4B;QAClD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAC1D,IACE,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;YAC9C,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAC3B,CAAC;YACD,OAAO,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,SAAyB;QACxD,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,qCAAqC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC5F,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC;gBACjD,KAAK,EAAE,KAAK,CAAC,EAAE;gBACf,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9C,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;aAChD,CAAC,CAAC,CAAC,CAAC;YACL,MAAM,gBAAgB,GAAG,SAAS,CAAC,QAAQ;iBACxC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;iBAClF,IAAI,CAAC,GAAG,CAAC,CAAC;YACb,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CACjC,gCAAgC,EAChC,gBAAgB,CACjB,CAAC,CAAC,IAAI,EAAE,IAAI,gBAAgB,CAAC;YAC9B,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAChF,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACtC,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChD,OAAO,OAAO,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YACH,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;gBAChE,SAAS;YACX,CAAC;YACD,OAAO,YAAY;iBAChB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,EAAE,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;iBACnF,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,SAAyB;QAC3D,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,IAAI,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC;YACrF,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC;gBAC9B,OAAO,EAAE,qCAAqC;gBAC9C,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBACpC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC;oBAChD,KAAK,EAAE,KAAK,CAAC,EAAE;oBACf,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;iBAC/C,CAAC,CAAC;gBACH,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,sCAAsC;aAClF,EAAE;gBACD,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;YACH,OAAO,YAAY;iBAChB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;iBAC9C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,yBAAyB,EAAE,CAAC;YACxC,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,YAA4B;QACvD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAiB,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAiB,CAAC;QAC1C,MAAM,SAAS,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;QAEvD,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACjD,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACxB,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CACzE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAe,EAAE,GAAG,SAAS,CAAC,CAAC,CACpF,CAAC,CAAC;gBACH,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC/B,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CACjC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,EACrD,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,CACrC,CAAC;gBACF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAC1C,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC,CAAC;QAEJ,MAAM,QAAQ,GAAG,YAAY;aAC1B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC;YACpC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC;gBACjB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,gBAAgB,CAAC;aACnC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5B,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAC5C,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,IAAY;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;gBACpE,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,OAAsB,EAAE,SAAyB;QACxE,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;QACzE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,MAAM,GAAG;YACb,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;YAC5D,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;SACzD,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;QAC1D,OAAO,GAAG,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC;IACxF,CAAC;IAEO,UAAU,CAChB,KAAa,EACb,QAAgB,EAChB,MAAc;QAEd,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,GAAG,KAAK,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACvD,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,KAAa,EAAE,YAAqB;QACzD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC;QAChD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,IAAI,yBAAyB,CACjC,8CAA8C,KAAK,GAAG,CACvD,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAEO,YAAY;QAClB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,yBAAyB,EAAE,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5B,IAAI,CAAC,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YAClE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/C,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;QACjB,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IACzB,CAAC;CACF;AAED,KAAK,UAAU,YAAY,CACzB,YAAiD,EACjD,QAAuD;IAEvD,MAAM,QAAQ,GAAG,IAAI,mBAAmB,CAAC,YAAY,CAAC,CAAC;IACvD,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;YAAS,CAAC;QACT,QAAQ,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAuB,EACvB,YAAsC;IAEtC,OAAO,YAAY,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAiB,EACjB,GAAa,EACb,YAAsC,EACtC,WAAoB;IAEpB,OAAO,YAAY,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;AAChG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAuC,EACvC,YAAsC;IAEtC,OAAO,YAAY,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,KAAwB,EACxB,YAAsC;IAEtC,OAAO,YAAY,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,QAAiC,EACjC,YAAsC;IAEtC,OAAO,YAAY,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpG,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAuB;IACzD,OAAO;QACL,GAAG,OAAO;QACV,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE;QAC3E,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;QAC/D,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE;QAC3D,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE;QACtD,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,eAAe,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE;QAC/E,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,KAAK,CAAC;QAC1E,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE;KAC/E,CAAC;AACJ,CAAC"}
|
|
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\`
|
|
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
|
|
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
|
`;
|