@extenshi/cli 0.13.0 → 0.14.1
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/dist/cli.d.ts +10 -4
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +65 -6
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +16 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +20 -0
- package/dist/config.js.map +1 -1
- package/dist/listing-checks.d.ts +1 -1
- package/dist/listing-checks.d.ts.map +1 -1
- package/dist/listing-checks.js +54 -6
- package/dist/listing-checks.js.map +1 -1
- package/dist/review-risk.d.ts +13 -4
- package/dist/review-risk.d.ts.map +1 -1
- package/dist/review-risk.js +13 -4
- package/dist/review-risk.js.map +1 -1
- package/dist/telemetry-consent.d.ts +62 -0
- package/dist/telemetry-consent.d.ts.map +1 -0
- package/dist/telemetry-consent.js +144 -0
- package/dist/telemetry-consent.js.map +1 -0
- package/package.json +1 -1
- package/scripts/postinstall.cjs +56 -20
package/dist/cli.d.ts
CHANGED
|
@@ -16,10 +16,16 @@
|
|
|
16
16
|
* └─ emit findings per --format: html (branded report file, opened in
|
|
17
17
|
* the browser; default) · json (raw JSON to stdout) · stdout (pretty)
|
|
18
18
|
*
|
|
19
|
-
* Every command runs inside runCommand(), which
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
19
|
+
* Every command runs inside runCommand(), which asks the first-run telemetry
|
|
20
|
+
* question (telemetry-consent.ts), then emits anonymous telemetry (which
|
|
21
|
+
* command, success/failure, coarse error_kind) and flushes it before the
|
|
22
|
+
* process exits. See telemetry.ts — a no-op under DO_NOT_TRACK /
|
|
23
|
+
* EXTENSHI_TELEMETRY=0, or once the user has answered no. `extenshi telemetry`
|
|
24
|
+
* reads and rewrites that answer.
|
|
25
|
+
*
|
|
26
|
+
* The question comes BEFORE the first captureEvent on purpose: telemetryEnabled()
|
|
27
|
+
* re-reads the config on the first event of the run, so an answer given here is
|
|
28
|
+
* already in force for the very run that asked it.
|
|
23
29
|
*/
|
|
24
30
|
export {};
|
|
25
31
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG"}
|
package/dist/cli.js
CHANGED
|
@@ -16,10 +16,16 @@
|
|
|
16
16
|
* └─ emit findings per --format: html (branded report file, opened in
|
|
17
17
|
* the browser; default) · json (raw JSON to stdout) · stdout (pretty)
|
|
18
18
|
*
|
|
19
|
-
* Every command runs inside runCommand(), which
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
19
|
+
* Every command runs inside runCommand(), which asks the first-run telemetry
|
|
20
|
+
* question (telemetry-consent.ts), then emits anonymous telemetry (which
|
|
21
|
+
* command, success/failure, coarse error_kind) and flushes it before the
|
|
22
|
+
* process exits. See telemetry.ts — a no-op under DO_NOT_TRACK /
|
|
23
|
+
* EXTENSHI_TELEMETRY=0, or once the user has answered no. `extenshi telemetry`
|
|
24
|
+
* reads and rewrites that answer.
|
|
25
|
+
*
|
|
26
|
+
* The question comes BEFORE the first captureEvent on purpose: telemetryEnabled()
|
|
27
|
+
* re-reads the config on the first event of the run, so an answer given here is
|
|
28
|
+
* already in force for the very run that asked it.
|
|
23
29
|
*/
|
|
24
30
|
import { readFile } from 'node:fs/promises';
|
|
25
31
|
import { createRequire } from 'node:module';
|
|
@@ -27,7 +33,7 @@ import os from 'node:os';
|
|
|
27
33
|
import * as readline from 'node:readline/promises';
|
|
28
34
|
import { program } from 'commander';
|
|
29
35
|
import { checkAutoUpdate } from './auto-update.js';
|
|
30
|
-
import { loadConfig, saveConfig } from './config.js';
|
|
36
|
+
import { CONFIG_PATH, loadConfig, readTelemetryPreference, saveConfig, saveTelemetryPreference, } from './config.js';
|
|
31
37
|
import { runIconPreview } from './icon.js';
|
|
32
38
|
import { makeLoginBff } from './login-bff.js';
|
|
33
39
|
import { runBrowserLogin } from './login-flow.js';
|
|
@@ -37,6 +43,7 @@ import { runReviewRisk } from './review-risk.js';
|
|
|
37
43
|
import { parseRefs, parseStore, runRisk } from './risk.js';
|
|
38
44
|
import { runScan } from './scan.js';
|
|
39
45
|
import { captureError, captureEvent, classifyError, flagsFromArgv, flushTelemetry, initTelemetry, } from './telemetry.js';
|
|
46
|
+
import { defaultConsentDeps, envAnswerSource, maybeAskForTelemetryConsent } from './telemetry-consent.js';
|
|
40
47
|
const MISSING_KEY_HELP = "Looks like you don't have an Extenshi API key set up yet — let's fix that.\n" +
|
|
41
48
|
'\n' +
|
|
42
49
|
'Getting started is free: no credit card required. Every account includes a\n' +
|
|
@@ -59,6 +66,7 @@ initTelemetry({ surface: 'cli', version: pkg.version });
|
|
|
59
66
|
* surface here as a normal failure with the same user-facing message.
|
|
60
67
|
*/
|
|
61
68
|
async function runCommand(command, action) {
|
|
69
|
+
await maybeAskForTelemetryConsent(defaultConsentDeps());
|
|
62
70
|
const startedAt = Date.now();
|
|
63
71
|
captureEvent('cli_command_started', { command, flags: flagsFromArgv() });
|
|
64
72
|
try {
|
|
@@ -207,7 +215,9 @@ program
|
|
|
207
215
|
.command('review-risk <artifact>')
|
|
208
216
|
.description('Predict Chrome Web Store review outcomes before publishing: what WILL BE REJECTED, ' +
|
|
209
217
|
'what triggers a SLOW manual review, and what causes user ATTRITION on update. ' +
|
|
210
|
-
'
|
|
218
|
+
'Your build never leaves your machine: it reads the manifest and listing text locally, ' +
|
|
219
|
+
'with no API key. Pass --extension-id to also diff against your last published manifest ' +
|
|
220
|
+
'(that sends the id, not the build).')
|
|
211
221
|
.option('--extension-id <id>', 'Numeric catalog ID — enables the auto-disable diff against the last published manifest (Ownership tab in dojo)')
|
|
212
222
|
.option('--catalog-url <url>', 'Override the catalog BFF base URL (default: https://bff.extenshi.io)')
|
|
213
223
|
.option('--store <store>', 'Store to diff the manifest against: chrome | firefox | edge (default: chrome). Permission sets differ per store.')
|
|
@@ -303,6 +313,55 @@ icon
|
|
|
303
313
|
await runIconPreview(iconPath, opts, pkg.version);
|
|
304
314
|
});
|
|
305
315
|
});
|
|
316
|
+
/**
|
|
317
|
+
* Change or inspect the answer to the first-run telemetry question.
|
|
318
|
+
*
|
|
319
|
+
* Deliberately NOT wrapped in runCommand(): that would put the consent prompt
|
|
320
|
+
* in front of the very command meant to answer it, and would emit a telemetry
|
|
321
|
+
* event about switching telemetry off. Env vars still win at read time, so the
|
|
322
|
+
* status output names them when they are what is actually deciding.
|
|
323
|
+
*/
|
|
324
|
+
program
|
|
325
|
+
.command('telemetry [state]')
|
|
326
|
+
.description('Show or change anonymous usage reporting: extenshi telemetry on | off | status')
|
|
327
|
+
.action((state) => {
|
|
328
|
+
const requested = (state ?? 'status').trim().toLowerCase();
|
|
329
|
+
if (requested === 'status') {
|
|
330
|
+
const stored = readTelemetryPreference();
|
|
331
|
+
// Same helper the prompt gate uses, so what `status` reports can never
|
|
332
|
+
// drift from what actually suppresses the question.
|
|
333
|
+
const envOverride = envAnswerSource(process.env);
|
|
334
|
+
console.log(stored === undefined
|
|
335
|
+
? 'Anonymous usage reporting: not chosen yet (you will be asked on the next run).'
|
|
336
|
+
: `Anonymous usage reporting: ${stored ? 'on' : 'off'}.`);
|
|
337
|
+
if (envOverride)
|
|
338
|
+
console.log(`${envOverride} is set in this environment and overrides the saved choice.`);
|
|
339
|
+
return;
|
|
340
|
+
}
|
|
341
|
+
if (requested !== 'on' && requested !== 'off') {
|
|
342
|
+
// Printed rather than thrown: this action runs outside runCommand(),
|
|
343
|
+
// and `program.parse()` has no catch, so a throw would surface as a
|
|
344
|
+
// raw stack trace instead of a message.
|
|
345
|
+
console.error(`Error: unknown telemetry state "${state}". Use: on | off | status.`);
|
|
346
|
+
process.exit(1);
|
|
347
|
+
}
|
|
348
|
+
// Same reason as the branch above: outside runCommand(), an unwritable
|
|
349
|
+
// $HOME (read-only container volume, a custom HOME in CI) would otherwise
|
|
350
|
+
// reach the user as a raw fs.writeFileSync stack trace. The consent prompt
|
|
351
|
+
// swallows this failure because it must never break the command it
|
|
352
|
+
// precedes; here the write IS the command, so it has to fail loudly — but
|
|
353
|
+
// legibly, and naming the path that could not be written.
|
|
354
|
+
try {
|
|
355
|
+
const savedPath = saveTelemetryPreference(requested === 'on');
|
|
356
|
+
console.log(`✓ Anonymous usage reporting is ${requested}. Saved to ${savedPath}.`);
|
|
357
|
+
}
|
|
358
|
+
catch (err) {
|
|
359
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
360
|
+
console.error(`Error: could not save the choice to ${CONFIG_PATH} — ${reason}`);
|
|
361
|
+
console.error(`Set EXTENSHI_TELEMETRY=${requested === 'on' ? '1' : '0'} instead.`);
|
|
362
|
+
process.exit(1);
|
|
363
|
+
}
|
|
364
|
+
});
|
|
306
365
|
/**
|
|
307
366
|
* Ask for a key by hand. Kept as the escape hatch for `--paste`, for servers
|
|
308
367
|
* whose BFF predates the browser handshake, and for anyone who would simply
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -13,6 +13,13 @@ export declare const CONFIG_PATH: string;
|
|
|
13
13
|
interface ConfigFile {
|
|
14
14
|
apiKey?: string;
|
|
15
15
|
apiUrl?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Recorded answer to the first-run telemetry question. `undefined` means
|
|
18
|
+
* "never asked" — which is what makes the prompt fire exactly once. Read by
|
|
19
|
+
* telemetry.ts (vendored, shared with @extenshi/mcp) as the config-file
|
|
20
|
+
* opt-out; written here and by `extenshi telemetry on|off`.
|
|
21
|
+
*/
|
|
22
|
+
telemetry?: boolean;
|
|
16
23
|
}
|
|
17
24
|
/**
|
|
18
25
|
* Load a `.env` from the current working directory into process.env.
|
|
@@ -21,6 +28,15 @@ interface ConfigFile {
|
|
|
21
28
|
* is ignored.
|
|
22
29
|
*/
|
|
23
30
|
export declare function loadDotEnv(cwd?: string): void;
|
|
31
|
+
/**
|
|
32
|
+
* The recorded telemetry answer, or `undefined` when the question has never
|
|
33
|
+
* been put to the user. Kept separate from telemetry.ts's own reader because
|
|
34
|
+
* that file is vendored byte-identical into @extenshi/mcp, which has no TTY
|
|
35
|
+
* and therefore never prompts.
|
|
36
|
+
*/
|
|
37
|
+
export declare function readTelemetryPreference(): boolean | undefined;
|
|
38
|
+
/** Record the answer to the telemetry question. Returns the config path. */
|
|
39
|
+
export declare function saveTelemetryPreference(enabled: boolean): string;
|
|
24
40
|
/**
|
|
25
41
|
* Persist credentials to ~/.extenshi/config.json, merging with any
|
|
26
42
|
* existing values so unrelated fields are preserved. Returns the path.
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,eAAO,MAAM,UAAU,QAAuC,CAAA;AAC9D,eAAO,MAAM,WAAW,QAAuC,CAAA;AAE/D,UAAU,UAAU;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,eAAO,MAAM,UAAU,QAAuC,CAAA;AAC9D,eAAO,MAAM,WAAW,QAAuC,CAAA;AAE/D,UAAU,UAAU;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;CACnB;AAuCD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAsB,GAAG,IAAI,CAY5D;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,GAAG,SAAS,CAG7D;AAED,4EAA4E;AAC5E,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAEhE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAcrD;AAED,wBAAsB,UAAU,CAC/B,SAAS,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAcpE"}
|
package/dist/config.js
CHANGED
|
@@ -71,17 +71,37 @@ export function loadDotEnv(cwd = process.cwd()) {
|
|
|
71
71
|
// No .env or unreadable — non-fatal.
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* The recorded telemetry answer, or `undefined` when the question has never
|
|
76
|
+
* been put to the user. Kept separate from telemetry.ts's own reader because
|
|
77
|
+
* that file is vendored byte-identical into @extenshi/mcp, which has no TTY
|
|
78
|
+
* and therefore never prompts.
|
|
79
|
+
*/
|
|
80
|
+
export function readTelemetryPreference() {
|
|
81
|
+
const value = readConfigFile().telemetry;
|
|
82
|
+
return typeof value === 'boolean' ? value : undefined;
|
|
83
|
+
}
|
|
84
|
+
/** Record the answer to the telemetry question. Returns the config path. */
|
|
85
|
+
export function saveTelemetryPreference(enabled) {
|
|
86
|
+
return saveConfig({ telemetry: enabled });
|
|
87
|
+
}
|
|
74
88
|
/**
|
|
75
89
|
* Persist credentials to ~/.extenshi/config.json, merging with any
|
|
76
90
|
* existing values so unrelated fields are preserved. Returns the path.
|
|
77
91
|
*/
|
|
78
92
|
export function saveConfig(update) {
|
|
79
93
|
const existing = readConfigFile();
|
|
94
|
+
// Spread first, field-by-field after: the spread is what keeps fields this
|
|
95
|
+
// type does not know about — notably `anonId`, written by the vendored
|
|
96
|
+
// telemetry.ts. Narrowing this to only the keys below would silently drop it
|
|
97
|
+
// from every write, re-minting the anonymous id on each login.
|
|
80
98
|
const merged = { ...existing };
|
|
81
99
|
if (update.apiKey !== undefined)
|
|
82
100
|
merged.apiKey = update.apiKey;
|
|
83
101
|
if (update.apiUrl !== undefined)
|
|
84
102
|
merged.apiUrl = update.apiUrl;
|
|
103
|
+
if (update.telemetry !== undefined)
|
|
104
|
+
merged.telemetry = update.telemetry;
|
|
85
105
|
fs.mkdirSync(CONFIG_DIR, { recursive: true });
|
|
86
106
|
fs.writeFileSync(CONFIG_PATH, `${JSON.stringify(merged, null, 2)}\n`, { mode: 0o600 });
|
|
87
107
|
return CONFIG_PATH;
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,MAAM,eAAe,GAAG,0BAA0B,CAAA;AAClD,MAAM,eAAe,GAAG,yBAAyB,CAAA;AACjD,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAA;AAC9D,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/listing-checks.d.ts
CHANGED
|
@@ -36,7 +36,7 @@ import type { ReviewFinding } from './review-checks.js';
|
|
|
36
36
|
* before and after a bump. Same discipline as `ANALYSIS_VERSION` on the
|
|
37
37
|
* permission-usage rows. Bump on any change to a dictionary or a threshold.
|
|
38
38
|
*/
|
|
39
|
-
export declare const LISTING_DICTIONARY_VERSION = "
|
|
39
|
+
export declare const LISTING_DICTIONARY_VERSION = "2";
|
|
40
40
|
/**
|
|
41
41
|
* "If your product has a blank description field … it will be rejected."
|
|
42
42
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listing-checks.d.ts","sourceRoot":"","sources":["../src/listing-checks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,cAAc,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"listing-checks.d.ts","sourceRoot":"","sources":["../src/listing-checks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,cAAc,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,MAAM,CAAA;AAyQ7C;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,EAAE,CA8DzE;AASD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,EAAE,CA+CxE;AAID;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,EAAE,CAwDlE;AAID;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,EAAE,CA8BnE;AAID,iGAAiG;AACjG,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,EAAE,CA2BvE;AAID;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,EAAE,CA6BvE;AAED,2DAA2D;AAC3D,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,EAAE,CA2BzE;AAID,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,aAAa,EAAE,CAWzE"}
|
package/dist/listing-checks.js
CHANGED
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
* before and after a bump. Same discipline as `ANALYSIS_VERSION` on the
|
|
35
35
|
* permission-usage rows. Bump on any change to a dictionary or a threshold.
|
|
36
36
|
*/
|
|
37
|
-
export const LISTING_DICTIONARY_VERSION = '
|
|
37
|
+
export const LISTING_DICTIONARY_VERSION = '2';
|
|
38
38
|
const DOC_LISTING = 'https://developer.chrome.com/docs/webstore/program-policies/listing-requirements';
|
|
39
39
|
const DOC_UNEXPECTED = 'https://developer.chrome.com/docs/webstore/program-policies/unexpected-behavior';
|
|
40
40
|
/**
|
|
@@ -44,6 +44,26 @@ const DOC_UNEXPECTED = 'https://developer.chrome.com/docs/webstore/program-polic
|
|
|
44
44
|
const MAX_KEYWORD_REPEATS = 5;
|
|
45
45
|
/** A word shorter than this is noise even when repeated (an, the, для). */
|
|
46
46
|
const MIN_KEYWORD_LENGTH = 4;
|
|
47
|
+
/**
|
|
48
|
+
* Share of a field's content words the repeated word must occupy.
|
|
49
|
+
*
|
|
50
|
+
* MEASURED, NOT GUESSED — and the reason v1 of this rule was wrong. On 20 000
|
|
51
|
+
* real catalog listings the MEDIAN description repeats its top content word
|
|
52
|
+
* exactly 5 times in ~104 content words. So `count > 5` alone sat on the 50th
|
|
53
|
+
* percentile of normal writing and fired on 45% of the catalog: it detected
|
|
54
|
+
* "above average", not "unnatural".
|
|
55
|
+
*
|
|
56
|
+
* Google's "more than 5 times" is kept as a floor, because it is their written
|
|
57
|
+
* threshold, but a second condition now asks whether the repetition is
|
|
58
|
+
* disproportionate to the text it sits in. At 0.12 the rule fires on ~1% of the
|
|
59
|
+
* catalog, in family with the other listing rules (0.1–2.2%).
|
|
60
|
+
*
|
|
61
|
+
* Deliberately NOT tuned further without labels: the hand-review sample in
|
|
62
|
+
* roadmap it. 2 T9 is what decides whether 1% is mostly true positives, and
|
|
63
|
+
* guessing a prettier number here would substitute an opinion for that
|
|
64
|
+
* measurement.
|
|
65
|
+
*/
|
|
66
|
+
const MIN_KEYWORD_DENSITY = 0.12;
|
|
47
67
|
/**
|
|
48
68
|
* Function words that repeat naturally in prose. Filtering them is what keeps
|
|
49
69
|
* the repetition rule pointed at keyword spam rather than at English and
|
|
@@ -198,6 +218,24 @@ const UNVERIFIABLE_CLAIM_PATTERNS = [
|
|
|
198
218
|
];
|
|
199
219
|
/** Three or more rating glyphs in a row — a pasted testimonial or ratings block. */
|
|
200
220
|
const TESTIMONIAL_GLYPH_RE = /[★⭐✩✪✫✬✭✮✯🌟]{3,}/u;
|
|
221
|
+
/**
|
|
222
|
+
* Markup and links, removed before any rule tokenizes a field.
|
|
223
|
+
*
|
|
224
|
+
* The catalog stores descriptions as HTML, so without this the tokenizer counts
|
|
225
|
+
* tag names and URL fragments as words — `strong` (1 987 findings) and `https`
|
|
226
|
+
* (1 736) were the two most-accused "keywords" in the first corpus run. A
|
|
227
|
+
* developer cannot fix a rule that is reading their markup.
|
|
228
|
+
*
|
|
229
|
+
* URLs must go before the keyword-list split, not after: a URL contains `/`,
|
|
230
|
+
* which is one of the list separators, so `https://a/b/c` would otherwise read
|
|
231
|
+
* as several list items.
|
|
232
|
+
*/
|
|
233
|
+
const HTML_TAG_RE = /<[^>]{1,200}>/g;
|
|
234
|
+
const URL_RE = /https?:\/\/\S+|www\.\S+/gi;
|
|
235
|
+
const HTML_ENTITY_RE = /&[a-z]+;|&#\d+;/gi;
|
|
236
|
+
function plainText(value) {
|
|
237
|
+
return value.replace(HTML_TAG_RE, ' ').replace(URL_RE, ' ').replace(HTML_ENTITY_RE, ' ');
|
|
238
|
+
}
|
|
201
239
|
/** Separators a keyword list is built out of. */
|
|
202
240
|
const LIST_SEPARATOR_RE = /[,|/·•;]/;
|
|
203
241
|
/** A short description below this is "non-descriptive" metadata by any reading. */
|
|
@@ -315,17 +353,24 @@ export function checkKeywordRepetition(listing) {
|
|
|
315
353
|
const out = [];
|
|
316
354
|
for (const locale of listing.locales) {
|
|
317
355
|
for (const field of FIELDS) {
|
|
318
|
-
const
|
|
319
|
-
if (!
|
|
356
|
+
const raw = fieldValue(locale, field.key);
|
|
357
|
+
if (!raw)
|
|
320
358
|
continue;
|
|
359
|
+
const value = plainText(raw);
|
|
321
360
|
const counts = new Map();
|
|
361
|
+
let contentWords = 0;
|
|
322
362
|
for (const w of words(value)) {
|
|
323
363
|
if (w.length < MIN_KEYWORD_LENGTH || FUNCTION_WORDS.has(w))
|
|
324
364
|
continue;
|
|
365
|
+
contentWords++;
|
|
325
366
|
counts.set(w, (counts.get(w) ?? 0) + 1);
|
|
326
367
|
}
|
|
368
|
+
if (contentWords === 0)
|
|
369
|
+
continue;
|
|
370
|
+
// BOTH conditions, and the density one is what makes this a spam
|
|
371
|
+
// detector rather than a length detector — see MIN_KEYWORD_DENSITY.
|
|
327
372
|
const over = [...counts.entries()]
|
|
328
|
-
.filter(([, n]) => n > MAX_KEYWORD_REPEATS)
|
|
373
|
+
.filter(([, n]) => n > MAX_KEYWORD_REPEATS && n / contentWords >= MIN_KEYWORD_DENSITY)
|
|
329
374
|
.sort((a, b) => b[1] - a[1]);
|
|
330
375
|
if (over.length === 0)
|
|
331
376
|
continue;
|
|
@@ -360,9 +405,12 @@ export function checkKeywordList(listing) {
|
|
|
360
405
|
const out = [];
|
|
361
406
|
for (const locale of listing.locales) {
|
|
362
407
|
for (const field of FIELDS) {
|
|
363
|
-
const
|
|
364
|
-
if (!
|
|
408
|
+
const raw = fieldValue(locale, field.key);
|
|
409
|
+
if (!raw)
|
|
365
410
|
continue;
|
|
411
|
+
// Strip BEFORE the split: a URL contains `/`, which is a list
|
|
412
|
+
// separator, so an unstripped link reads as several list items.
|
|
413
|
+
const value = plainText(raw);
|
|
366
414
|
// Longest run of consecutive short segments anywhere in the field: a
|
|
367
415
|
// stuffed listing is usually one prose paragraph followed by a dump.
|
|
368
416
|
const segments = value.split(LIST_SEPARATOR_RE);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listing-checks.js","sourceRoot":"","sources":["../src/listing-checks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAKH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAA;AAE7C,MAAM,WAAW,GAAG,kFAAkF,CAAA;AACtG,MAAM,cAAc,GAAG,iFAAiF,CAAA;AAExG;;;GAGG;AACH,MAAM,mBAAmB,GAAG,CAAC,CAAA;AAE7B,2EAA2E;AAC3E,MAAM,kBAAkB,GAAG,CAAC,CAAA;AAE5B;;;;GAIG;AACH,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC9B,UAAU;IACV,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,OAAO;IACP,OAAO;IACP,QAAQ;IACR,SAAS;IACT,SAAS;IACT,SAAS;IACT,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,UAAU;IACV,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,QAAQ;IACR,MAAM;IACN,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;CACN,CAAC,CAAA;AAEF;;;;;;;;;GASG;AACH,MAAM,yBAAyB,GAAgD;IAC9E,EAAE,EAAE,EAAE,sCAAsC,EAAE,IAAI,EAAE,yBAAyB,EAAE;IAC/E,EAAE,EAAE,EAAE,uCAAuC,EAAE,IAAI,EAAE,0BAA0B,EAAE;IACjF,EAAE,EAAE,EAAE,8CAA8C,EAAE,IAAI,EAAE,oBAAoB,EAAE;IAClF,EAAE,EAAE,EAAE,4CAA4C,EAAE,IAAI,EAAE,iBAAiB,EAAE;IAC7E,uEAAuE;IACvE,yEAAyE;IACzE;QACC,EAAE,EAAE,+FAA+F;QACnG,IAAI,EAAE,qBAAqB;KAC3B;IACD,EAAE,EAAE,EAAE,0DAA0D,EAAE,IAAI,EAAE,uBAAuB,EAAE;IACjG,EAAE,EAAE,EAAE,sDAAsD,EAAE,IAAI,EAAE,qBAAqB,EAAE;IAC3F,EAAE,EAAE,EAAE,mDAAmD,EAAE,IAAI,EAAE,2BAA2B,EAAE;IAC9F,EAAE,EAAE,EAAE,uBAAuB,EAAE,IAAI,EAAE,gBAAgB,EAAE;IACvD,6EAA6E;IAC7E,2EAA2E;IAC3E,4EAA4E;IAC5E,EAAE,EAAE,EAAE,+CAA+C,EAAE,IAAI,EAAE,yBAAyB,EAAE;CACxF,CAAA;AAED;;;;;GAKG;AACH,MAAM,2BAA2B,GAAgD;IAChF,EAAE,EAAE,EAAE,+BAA+B,EAAE,IAAI,EAAE,oBAAoB,EAAE;IACnE,EAAE,EAAE,EAAE,0DAA0D,EAAE,IAAI,EAAE,kBAAkB,EAAE;IAC5F,EAAE,EAAE,EAAE,sCAAsC,EAAE,IAAI,EAAE,sBAAsB,EAAE;IAC5E,EAAE,EAAE,EAAE,sCAAsC,EAAE,IAAI,EAAE,4BAA4B,EAAE;IAClF,sEAAsE;IACtE,EAAE,EAAE,EAAE,8BAA8B,EAAE,IAAI,EAAE,qBAAqB,EAAE;CACnE,CAAA;AAED,oFAAoF;AACpF,MAAM,oBAAoB,GAAG,oBAAoB,CAAA;AAEjD,iDAAiD;AACjD,MAAM,iBAAiB,GAAG,UAAU,CAAA;AAEpC,mFAAmF;AACnF,MAAM,4BAA4B,GAAG,EAAE,CAAA;AAEvC,+EAA+E;AAC/E,MAAM,oBAAoB,GAAG,EAAE,CAAA;AAE/B,0EAA0E;AAC1E,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAE3B,mFAAmF;AACnF,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAE3B,kEAAkE;AAClE,MAAM,0BAA0B,GAAG,CAAC,CAAA;AAEpC,kFAAkF;AAClF,MAAM,MAAM,GAAG;IACd,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAC9B,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,mBAAmB,EAAE;IACvD,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;CACnC,CAAA;AAIV,SAAS,UAAU,CAAC,MAAqB,EAAE,GAAa;IACvD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;AACnB,CAAC;AAED,qEAAqE;AACrE,SAAS,KAAK,CAAC,MAAqB,EAAE,KAAa;IAClD,OAAO,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE,CAAA;AACrC,CAAC;AAED;;;;;GAKG;AACH,SAAS,KAAK,CAAC,QAAgB;IAC9B,OAAO,GAAG,QAAQ,oBAAoB,0BAA0B,GAAG,CAAA;AACpE,CAAC;AAED,SAAS,QAAQ,CAAC,CAAiC;IAClD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,CAAA;AACjC,CAAC;AAED,gFAAgF;AAEhF;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACvD,MAAM,GAAG,GAAoB,EAAE,CAAA;IAC/B,MAAM,kBAAkB,GAAG,CAAC,GAAa,EAAE,IAAmB,EAAW,EAAE,CAC1E,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAC/E,yEAAyE;IACzE,8CAA8C;IAC9C,MAAM,QAAQ,GAAG,CAAC,GAAa,EAAE,IAAmB,EAAW,EAAE,CAChE,OAAO,CAAC,MAAM,KAAK,UAAU,IAAI,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAE/D,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAA;QAChC,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,IAAI,CACP,QAAQ,CAAC;gBACR,KAAK,EAAE,qBAAqB;gBAC5B,KAAK,EAAE,wCAAwC;gBAC/C,MAAM,EACL,mGAAmG;oBACnG,6EAA6E;gBAC9E,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;gBAC/C,cAAc,EACb,sGAAsG;oBACtG,gCAAgC;gBACjC,QAAQ,EAAE,4CAA4C,WAAW,EAAE;aACnE,CAAC,CACF,CAAA;QACF,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAA;QAC7C,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC,EAAE,CAAC;YACpD,GAAG,CAAC,IAAI,CACP,QAAQ,CAAC;gBACR,KAAK,EAAE,qBAAqB;gBAC5B,KAAK,EAAE,qDAAqD;gBAC5D,MAAM,EACL,sGAAsG;oBACtG,iGAAiG;gBAClG,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;gBAC5D,cAAc,EACb,8GAA8G;gBAC/G,QAAQ,EAAE,4CAA4C,WAAW,EAAE;aACnE,CAAC,CACF,CAAA;QACF,CAAC;aAAM,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,4BAA4B,EAAE,CAAC;YACjE,GAAG,CAAC,IAAI,CACP,QAAQ,CAAC;gBACR,KAAK,EAAE,qBAAqB;gBAC5B,KAAK,EAAE,8DAA8D;gBACrE,MAAM,EACL,MAAM,KAAK,CAAC,MAAM,sFAAsF;oBACxG,qGAAqG;oBACrG,mDAAmD;gBACpD,QAAQ,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,mBAAmB,CAAC,MAAM,KAAK,GAAG,CAAC;gBACpE,cAAc,EACb,wGAAwG;oBACxG,mDAAmD;gBACpD,QAAQ,EAAE,4CAA4C,WAAW,EAAE;aACnE,CAAC,CACF,CAAA;QACF,CAAC;IACF,CAAC;IACD,OAAO,GAAG,CAAA;AACX,CAAC;AAED,gFAAgF;AAEhF,oFAAoF;AACpF,SAAS,KAAK,CAAC,IAAY;IAC1B,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAA;AACzD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACtD,MAAM,GAAG,GAAoB,EAAE,CAAA;IAC/B,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACtC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;YAC3C,IAAI,CAAC,KAAK;gBAAE,SAAQ;YAEpB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAA;YACxC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,CAAC,MAAM,GAAG,kBAAkB,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;oBAAE,SAAQ;gBACpE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;YACxC,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;iBAChC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,mBAAmB,CAAC;iBAC1C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC7B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAQ;YAE/B,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YACvC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YAC7D,GAAG,CAAC,IAAI,CACP,QAAQ,CAAC;gBACR,KAAK,EAAE,4BAA4B;gBACnC,KAAK,EAAE,IAAI,SAAS,iBAAiB,UAAU,iBAAiB,KAAK,CAAC,KAAK,EAAE;gBAC7E,MAAM,EACL,yGAAyG;oBACzG,iCAAiC,mBAAmB,qDAAqD;oBACzG,iGAAiG;gBAClG,QAAQ,EAAE,KAAK,CACd,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS,KAAK,UAAU,EAAE;oBAC3D,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACrD;gBACD,cAAc,EACb,wGAAwG;oBACxG,+EAA+E;gBAChF,QAAQ,EAAE,4CAA4C,WAAW,EAAE;aACnE,CAAC,CACF,CAAA;QACF,CAAC;IACF,CAAC;IACD,OAAO,GAAG,CAAA;AACX,CAAC;AAED,gFAAgF;AAEhF;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAChD,MAAM,GAAG,GAAoB,EAAE,CAAA;IAC/B,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACtC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;YAC3C,IAAI,CAAC,KAAK;gBAAE,SAAQ;YAEpB,qEAAqE;YACrE,qEAAqE;YACrE,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;YAC/C,IAAI,IAAI,GAAG,CAAC,CAAA;YACZ,IAAI,SAAS,GAAG,CAAC,CAAA;YACjB,IAAI,GAAG,GAAG,CAAC,CAAA;YACX,IAAI,QAAQ,GAAG,CAAC,CAAA;YAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;gBAC3C,MAAM,UAAU,GAAG,SAAS,GAAG,CAAC,IAAI,SAAS,IAAI,0BAA0B,CAAA;gBAC3E,IAAI,UAAU,EAAE,CAAC;oBAChB,IAAI,GAAG,KAAK,CAAC;wBAAE,QAAQ,GAAG,CAAC,CAAA;oBAC3B,GAAG,EAAE,CAAA;oBACL,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC;wBAChB,IAAI,GAAG,GAAG,CAAA;wBACV,SAAS,GAAG,QAAQ,CAAA;oBACrB,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,GAAG,GAAG,CAAC,CAAA;gBACR,CAAC;YACF,CAAC;YACD,IAAI,IAAI,GAAG,iBAAiB;gBAAE,SAAQ;YAEtC,MAAM,MAAM,GAAG,QAAQ;iBACrB,KAAK,CAAC,SAAS,EAAE,SAAS,GAAG,CAAC,CAAC;iBAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBACpB,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,IAAI,CAAC,CAAA;YACZ,GAAG,CAAC,IAAI,CACP,QAAQ,CAAC;gBACR,KAAK,EAAE,sBAAsB;gBAC7B,KAAK,EAAE,OAAO,KAAK,CAAC,KAAK,eAAe,IAAI,oBAAoB;gBAChE,MAAM,EACL,yGAAyG;oBACzG,uGAAuG;oBACvG,8CAA8C;gBAC/C,QAAQ,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,YAAY,MAAM,GAAG,CAAC;gBAC5E,cAAc,EACb,sGAAsG;oBACtG,kEAAkE;gBACnE,QAAQ,EAAE,4CAA4C,WAAW,EAAE;aACnE,CAAC,CACF,CAAA;QACF,CAAC;IACF,CAAC;IACD,OAAO,GAAG,CAAA;AACX,CAAC;AAED,gFAAgF;AAEhF;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IACjD,MAAM,GAAG,GAAoB,EAAE,CAAA;IAC/B,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAA;QAChC,IAAI,CAAC,IAAI;YAAE,SAAQ;QAEnB,MAAM,QAAQ,GAAG,IAAI;aACnB,KAAK,CAAC,aAAa,CAAC;aACpB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,OAAO,CAAC,CAAA;QACjB,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,GAAG,iBAAiB,CAAA;QAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,oBAAoB,CAAA;QAClD,IAAI,CAAC,CAAC,OAAO,IAAI,eAAe,CAAC;YAAE,SAAQ;QAE3C,GAAG,CAAC,IAAI,CACP,QAAQ,CAAC;YACR,KAAK,EAAE,uBAAuB;YAC9B,KAAK,EAAE,wDAAwD;YAC/D,MAAM,EACL,gBAAgB,IAAI,CAAC,MAAM,sBAAsB,QAAQ,CAAC,MAAM,wCAAwC;gBACxG,2GAA2G;gBAC3G,8BAA8B;YAC/B,QAAQ,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC;YACtD,cAAc,EACb,0GAA0G;YAC3G,QAAQ,EAAE,4CAA4C,WAAW,EAAE;SACnE,CAAC,CACF,CAAA;IACF,CAAC;IACD,OAAO,GAAG,CAAA;AACX,CAAC;AAED,gFAAgF;AAEhF,iGAAiG;AACjG,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACrD,MAAM,GAAG,GAAoB,EAAE,CAAA;IAC/B,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACtC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;YAC3C,IAAI,CAAC,KAAK;gBAAE,SAAQ;YACpB,MAAM,CAAC,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC1C,IAAI,CAAC,CAAC;gBAAE,SAAQ;YAEhB,GAAG,CAAC,IAAI,CACP,QAAQ,CAAC;gBACR,KAAK,EAAE,2BAA2B;gBAClC,KAAK,EAAE,OAAO,KAAK,CAAC,KAAK,iDAAiD;gBAC1E,MAAM,EACL,yGAAyG;oBACzG,sGAAsG;oBACtG,4BAA4B;gBAC7B,QAAQ,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC3D,cAAc,EACb,yGAAyG;oBACzG,qCAAqC;gBACtC,QAAQ,EAAE,4CAA4C,WAAW,EAAE;aACnE,CAAC,CACF,CAAA;QACF,CAAC;IACF,CAAC;IACD,OAAO,GAAG,CAAA;AACX,CAAC;AAED,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACrD,MAAM,GAAG,GAAoB,EAAE,CAAA;IAC/B,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACtC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;YAC3C,IAAI,CAAC,KAAK;gBAAE,SAAQ;YACpB,KAAK,MAAM,OAAO,IAAI,yBAAyB,EAAE,CAAC;gBACjD,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAChC,IAAI,CAAC,CAAC;oBAAE,SAAQ;gBAChB,GAAG,CAAC,IAAI,CACP,QAAQ,CAAC;oBACR,KAAK,EAAE,0BAA0B;oBACjC,KAAK,EAAE,OAAO,KAAK,CAAC,KAAK,gDAAgD;oBACzE,MAAM,EACL,8FAA8F;wBAC9F,oGAAoG;wBACpG,qGAAqG;wBACrG,qFAAqF;oBACtF,QAAQ,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;oBAC7E,cAAc,EACb,kGAAkG;wBAClG,0CAA0C;oBAC3C,QAAQ,EAAE,yDAAyD,cAAc,EAAE;iBACnF,CAAC,CACF,CAAA;YACF,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,GAAG,CAAA;AACX,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACvD,MAAM,GAAG,GAAoB,EAAE,CAAA;IAC/B,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACtC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;YAC3C,IAAI,CAAC,KAAK;gBAAE,SAAQ;YACpB,KAAK,MAAM,OAAO,IAAI,2BAA2B,EAAE,CAAC;gBACnD,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAChC,IAAI,CAAC,CAAC;oBAAE,SAAQ;gBAChB,GAAG,CAAC,IAAI,CACP,QAAQ,CAAC;oBACR,KAAK,EAAE,kCAAkC;oBACzC,KAAK,EAAE,OAAO,KAAK,CAAC,KAAK,yCAAyC;oBAClE,MAAM,EACL,qGAAqG;wBACrG,sGAAsG;wBACtG,2CAA2C;oBAC5C,QAAQ,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;oBAC7E,cAAc,EACb,uFAAuF;oBACxF,QAAQ,EAAE,yDAAyD,cAAc,EAAE;iBACnF,CAAC,CACF,CAAA;YACF,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,GAAG,CAAA;AACX,CAAC;AAED,gFAAgF;AAEhF,kFAAkF;AAClF,MAAM,UAAU,gBAAgB,CAAC,OAAuB;IACvD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACvD,OAAO;QACN,GAAG,uBAAuB,CAAC,OAAO,CAAC;QACnC,GAAG,sBAAsB,CAAC,OAAO,CAAC;QAClC,GAAG,gBAAgB,CAAC,OAAO,CAAC;QAC5B,GAAG,iBAAiB,CAAC,OAAO,CAAC;QAC7B,GAAG,qBAAqB,CAAC,OAAO,CAAC;QACjC,GAAG,qBAAqB,CAAC,OAAO,CAAC;QACjC,GAAG,uBAAuB,CAAC,OAAO,CAAC;KACnC,CAAA;AACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"listing-checks.js","sourceRoot":"","sources":["../src/listing-checks.ts"],"names":[],"mappings":"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"}
|
package/dist/review-risk.d.ts
CHANGED
|
@@ -8,10 +8,19 @@
|
|
|
8
8
|
* → [optional] fetch last-published manifest for --extension-id (review-catalog)
|
|
9
9
|
* → run checks (review-checks) → render (review-render) or --json
|
|
10
10
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* The build never leaves the machine — every check reads the artifact locally
|
|
12
|
+
* and no API key is required. Three things do go out, none of them the build:
|
|
13
|
+
* the manifest diff (only with --extension-id, and it sends the id), the
|
|
14
|
+
* anonymous telemetry every command emits via runCommand (cli.ts), which the
|
|
15
|
+
* first interactive run asks about, and the npm postinstall install ping
|
|
16
|
+
* (scripts/postinstall.cjs), which fires before any run and therefore before
|
|
17
|
+
* the question can be put — so "we ask first" is true of runs, not of installs.
|
|
18
|
+
* "Fully offline" is therefore the wrong claim to make in user-facing copy —
|
|
19
|
+
* see docs/src/app/developers/cli/page.mdx "What leaves your machine" and the
|
|
20
|
+
* /cli FAQ, which are worded to match.
|
|
21
|
+
*
|
|
22
|
+
* Exit code is 1 only when something WILL BE REJECTED, so it gates a publish
|
|
23
|
+
* step in CI without blocking on slow-review / attrition advisories.
|
|
15
24
|
*/
|
|
16
25
|
export interface ReviewRiskOptions {
|
|
17
26
|
artifactPath: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-risk.d.ts","sourceRoot":"","sources":["../src/review-risk.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"review-risk.d.ts","sourceRoot":"","sources":["../src/review-risk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAYH,MAAM,WAAW,iBAAiB;IACjC,YAAY,EAAE,MAAM,CAAA;IACpB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAA;IACd,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,sFAAsF;IACtF,KAAK,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAA;IACrC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,OAAO,CAAA;CACnB;AAuDD,wBAAsB,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6E1E"}
|
package/dist/review-risk.js
CHANGED
|
@@ -8,10 +8,19 @@
|
|
|
8
8
|
* → [optional] fetch last-published manifest for --extension-id (review-catalog)
|
|
9
9
|
* → run checks (review-checks) → render (review-render) or --json
|
|
10
10
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* The build never leaves the machine — every check reads the artifact locally
|
|
12
|
+
* and no API key is required. Three things do go out, none of them the build:
|
|
13
|
+
* the manifest diff (only with --extension-id, and it sends the id), the
|
|
14
|
+
* anonymous telemetry every command emits via runCommand (cli.ts), which the
|
|
15
|
+
* first interactive run asks about, and the npm postinstall install ping
|
|
16
|
+
* (scripts/postinstall.cjs), which fires before any run and therefore before
|
|
17
|
+
* the question can be put — so "we ask first" is true of runs, not of installs.
|
|
18
|
+
* "Fully offline" is therefore the wrong claim to make in user-facing copy —
|
|
19
|
+
* see docs/src/app/developers/cli/page.mdx "What leaves your machine" and the
|
|
20
|
+
* /cli FAQ, which are worded to match.
|
|
21
|
+
*
|
|
22
|
+
* Exit code is 1 only when something WILL BE REJECTED, so it gates a publish
|
|
23
|
+
* step in CI without blocking on slow-review / attrition advisories.
|
|
15
24
|
*/
|
|
16
25
|
import fs from 'node:fs';
|
|
17
26
|
import ora from 'ora';
|
package/dist/review-risk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-risk.js","sourceRoot":"","sources":["../src/review-risk.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"review-risk.js","sourceRoot":"","sources":["../src/review-risk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* First-run telemetry question.
|
|
3
|
+
*
|
|
4
|
+
* Telemetry itself lives in telemetry.ts, which is vendored byte-identical into
|
|
5
|
+
* @extenshi/mcp — the MCP server runs headless and can never prompt, so the
|
|
6
|
+
* asking lives here, in the CLI only, and the answer is persisted to the shared
|
|
7
|
+
* `~/.extenshi/config.json` (`telemetry: true|false`) that both packages read.
|
|
8
|
+
*
|
|
9
|
+
* It is asked ONCE, before the first event of the first interactive run, and
|
|
10
|
+
* never again: `readTelemetryPreference()` returning a boolean is the record of
|
|
11
|
+
* having asked. Everything else is a reason NOT to ask —
|
|
12
|
+
*
|
|
13
|
+
* - not a TTY on both stdin and stderr (piped, redirected, or a daemon):
|
|
14
|
+
* a prompt would hang a build forever;
|
|
15
|
+
* - CI is set: same, and the answer would belong to nobody;
|
|
16
|
+
* - DO_NOT_TRACK / EXTENSHI_TELEMETRY is set: the user has already answered
|
|
17
|
+
* with the environment, and re-asking would be nagging;
|
|
18
|
+
* - EXTENSHI_POSTHOG_KEY is set but empty: the build ships dark, so there is
|
|
19
|
+
* nothing to consent to.
|
|
20
|
+
*
|
|
21
|
+
* Declining is recorded, not just obeyed: a `false` in the config is what makes
|
|
22
|
+
* the decision stick across runs and machines-per-home-dir. When the config
|
|
23
|
+
* cannot be written, the answer is still enforced for the current run through
|
|
24
|
+
* the environment, and the question comes back next time.
|
|
25
|
+
*
|
|
26
|
+
* Fail-soft like the rest of the telemetry path — an unwritable home directory
|
|
27
|
+
* or a closed stdin must never break the command the user actually typed.
|
|
28
|
+
*/
|
|
29
|
+
export declare const TELEMETRY_PROMPT_TEXT: string;
|
|
30
|
+
export interface ConsentDeps {
|
|
31
|
+
env: NodeJS.ProcessEnv;
|
|
32
|
+
/** True only when a human can actually see and answer the question. */
|
|
33
|
+
isInteractive: () => boolean;
|
|
34
|
+
readPreference: () => boolean | undefined;
|
|
35
|
+
savePreference: (enabled: boolean) => void;
|
|
36
|
+
/** Resolves to the raw answer, or null when nothing was answered in time. */
|
|
37
|
+
ask: (question: string) => Promise<string | null>;
|
|
38
|
+
log: (message: string) => void;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Which environment variable, if any, has already answered the question.
|
|
42
|
+
*
|
|
43
|
+
* Exported because `extenshi telemetry status` has to name the variable that is
|
|
44
|
+
* overriding the saved answer, and a second copy of this list there would drift
|
|
45
|
+
* from the one that actually suppresses the prompt. Any non-empty value counts
|
|
46
|
+
* as an answer — including `DO_NOT_TRACK=0`, which telemetry.ts reads as falsy
|
|
47
|
+
* and so leaves reporting on. Not asking is still right there: the user has
|
|
48
|
+
* said something about telemetry with the environment, and re-asking would
|
|
49
|
+
* override a deliberate setting with a prompt.
|
|
50
|
+
*/
|
|
51
|
+
export declare function envAnswerSource(env: NodeJS.ProcessEnv): 'DO_NOT_TRACK' | 'EXTENSHI_TELEMETRY' | null;
|
|
52
|
+
/** Should the question be put to the user at all? */
|
|
53
|
+
export declare function shouldAskForConsent(deps: ConsentDeps): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Ask once, persist the answer, and return it. Returns `undefined` when the
|
|
56
|
+
* question was skipped or went unanswered — the caller carries on either way,
|
|
57
|
+
* and an unanswered question is simply asked again on the next interactive run.
|
|
58
|
+
*/
|
|
59
|
+
export declare function maybeAskForTelemetryConsent(deps: ConsentDeps): Promise<boolean | undefined>;
|
|
60
|
+
/** The real dependencies: a TTY prompt on stderr so stdout stays pipeable. */
|
|
61
|
+
export declare function defaultConsentDeps(): ConsentDeps;
|
|
62
|
+
//# sourceMappingURL=telemetry-consent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry-consent.d.ts","sourceRoot":"","sources":["../src/telemetry-consent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAYH,eAAO,MAAM,qBAAqB,QAIiC,CAAA;AAEnE,MAAM,WAAW,WAAW;IAC3B,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;IACtB,uEAAuE;IACvE,aAAa,EAAE,MAAM,OAAO,CAAA;IAC5B,cAAc,EAAE,MAAM,OAAO,GAAG,SAAS,CAAA;IACzC,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IAC1C,6EAA6E;IAC7E,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACjD,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAC9B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,cAAc,GAAG,oBAAoB,GAAG,IAAI,CAIpG;AAED,qDAAqD;AACrD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAS9D;AAED;;;;GAIG;AACH,wBAAsB,2BAA2B,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CA2CjG;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,IAAI,WAAW,CAoBhD"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* First-run telemetry question.
|
|
3
|
+
*
|
|
4
|
+
* Telemetry itself lives in telemetry.ts, which is vendored byte-identical into
|
|
5
|
+
* @extenshi/mcp — the MCP server runs headless and can never prompt, so the
|
|
6
|
+
* asking lives here, in the CLI only, and the answer is persisted to the shared
|
|
7
|
+
* `~/.extenshi/config.json` (`telemetry: true|false`) that both packages read.
|
|
8
|
+
*
|
|
9
|
+
* It is asked ONCE, before the first event of the first interactive run, and
|
|
10
|
+
* never again: `readTelemetryPreference()` returning a boolean is the record of
|
|
11
|
+
* having asked. Everything else is a reason NOT to ask —
|
|
12
|
+
*
|
|
13
|
+
* - not a TTY on both stdin and stderr (piped, redirected, or a daemon):
|
|
14
|
+
* a prompt would hang a build forever;
|
|
15
|
+
* - CI is set: same, and the answer would belong to nobody;
|
|
16
|
+
* - DO_NOT_TRACK / EXTENSHI_TELEMETRY is set: the user has already answered
|
|
17
|
+
* with the environment, and re-asking would be nagging;
|
|
18
|
+
* - EXTENSHI_POSTHOG_KEY is set but empty: the build ships dark, so there is
|
|
19
|
+
* nothing to consent to.
|
|
20
|
+
*
|
|
21
|
+
* Declining is recorded, not just obeyed: a `false` in the config is what makes
|
|
22
|
+
* the decision stick across runs and machines-per-home-dir. When the config
|
|
23
|
+
* cannot be written, the answer is still enforced for the current run through
|
|
24
|
+
* the environment, and the question comes back next time.
|
|
25
|
+
*
|
|
26
|
+
* Fail-soft like the rest of the telemetry path — an unwritable home directory
|
|
27
|
+
* or a closed stdin must never break the command the user actually typed.
|
|
28
|
+
*/
|
|
29
|
+
import * as readline from 'node:readline/promises';
|
|
30
|
+
import { readTelemetryPreference, saveTelemetryPreference } from './config.js';
|
|
31
|
+
/**
|
|
32
|
+
* How long to wait for an answer before giving up and asking again next run.
|
|
33
|
+
* Kept short because this blocks the command the user actually typed: a TTY
|
|
34
|
+
* that nobody is watching (a pty in a script) should not look like a hang.
|
|
35
|
+
*/
|
|
36
|
+
const ANSWER_TIMEOUT_MS = 30_000;
|
|
37
|
+
export const TELEMETRY_PROMPT_TEXT = 'Extenshi can report anonymous usage — which command ran, its flag names,\n' +
|
|
38
|
+
'versions, and a coarse error kind. Never file paths, artifact contents,\n' +
|
|
39
|
+
'manifest data, or flag values. It helps us fix what actually breaks.\n' +
|
|
40
|
+
'You can change this any time with `extenshi telemetry on|off`.\n';
|
|
41
|
+
/**
|
|
42
|
+
* Which environment variable, if any, has already answered the question.
|
|
43
|
+
*
|
|
44
|
+
* Exported because `extenshi telemetry status` has to name the variable that is
|
|
45
|
+
* overriding the saved answer, and a second copy of this list there would drift
|
|
46
|
+
* from the one that actually suppresses the prompt. Any non-empty value counts
|
|
47
|
+
* as an answer — including `DO_NOT_TRACK=0`, which telemetry.ts reads as falsy
|
|
48
|
+
* and so leaves reporting on. Not asking is still right there: the user has
|
|
49
|
+
* said something about telemetry with the environment, and re-asking would
|
|
50
|
+
* override a deliberate setting with a prompt.
|
|
51
|
+
*/
|
|
52
|
+
export function envAnswerSource(env) {
|
|
53
|
+
if ((env.DO_NOT_TRACK ?? '').trim() !== '')
|
|
54
|
+
return 'DO_NOT_TRACK';
|
|
55
|
+
if ((env.EXTENSHI_TELEMETRY ?? '').trim() !== '')
|
|
56
|
+
return 'EXTENSHI_TELEMETRY';
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
/** Should the question be put to the user at all? */
|
|
60
|
+
export function shouldAskForConsent(deps) {
|
|
61
|
+
if (deps.readPreference() !== undefined)
|
|
62
|
+
return false;
|
|
63
|
+
if (envAnswerSource(deps.env) !== null)
|
|
64
|
+
return false;
|
|
65
|
+
if ((deps.env.CI ?? '') !== '')
|
|
66
|
+
return false;
|
|
67
|
+
// Set-but-empty means the build ships dark; unset means the embedded key.
|
|
68
|
+
if (deps.env.EXTENSHI_POSTHOG_KEY !== undefined && deps.env.EXTENSHI_POSTHOG_KEY.trim() === '') {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
return deps.isInteractive();
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Ask once, persist the answer, and return it. Returns `undefined` when the
|
|
75
|
+
* question was skipped or went unanswered — the caller carries on either way,
|
|
76
|
+
* and an unanswered question is simply asked again on the next interactive run.
|
|
77
|
+
*/
|
|
78
|
+
export async function maybeAskForTelemetryConsent(deps) {
|
|
79
|
+
try {
|
|
80
|
+
if (!shouldAskForConsent(deps))
|
|
81
|
+
return undefined;
|
|
82
|
+
deps.log(`\n${TELEMETRY_PROMPT_TEXT}`);
|
|
83
|
+
const answer = await deps.ask('Share anonymous usage data? [Y/n] ');
|
|
84
|
+
// No answer at all (timeout, closed stdin) is not consent, and is not a
|
|
85
|
+
// refusal either — record nothing and ask again next time.
|
|
86
|
+
if (answer === null)
|
|
87
|
+
return undefined;
|
|
88
|
+
const normalized = answer.trim().toLowerCase();
|
|
89
|
+
const enabled = !(normalized === 'n' || normalized === 'no');
|
|
90
|
+
// Apply the answer to THIS process before trying to persist it. A decline
|
|
91
|
+
// that cannot be written (read-only $HOME) must still hold for the run
|
|
92
|
+
// that made it — otherwise the user says no, the write fails silently, and
|
|
93
|
+
// the very next captureEvent reports anyway. telemetry.ts reads this
|
|
94
|
+
// variable on its first event, which has not happened yet: runCommand()
|
|
95
|
+
// asks before it captures anything. Accepting needs no variable, since
|
|
96
|
+
// reporting is what happens without one.
|
|
97
|
+
if (!enabled)
|
|
98
|
+
deps.env.EXTENSHI_TELEMETRY = '0';
|
|
99
|
+
let persisted = true;
|
|
100
|
+
try {
|
|
101
|
+
deps.savePreference(enabled);
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
persisted = false;
|
|
105
|
+
}
|
|
106
|
+
deps.log(enabled
|
|
107
|
+
? '✓ Thanks — anonymous usage reporting is on. Turn it off any time with `extenshi telemetry off`.\n'
|
|
108
|
+
: '✓ Anonymous usage reporting is off. Nothing but your explicit commands leaves this machine.\n');
|
|
109
|
+
if (!persisted) {
|
|
110
|
+
deps.log('(The choice could not be saved, so this run honours it but the next one will ask again.)\n');
|
|
111
|
+
}
|
|
112
|
+
return enabled;
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// Unwritable config, closed stdin, anything at all — never break the
|
|
116
|
+
// command the user actually ran.
|
|
117
|
+
return undefined;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/** The real dependencies: a TTY prompt on stderr so stdout stays pipeable. */
|
|
121
|
+
export function defaultConsentDeps() {
|
|
122
|
+
return {
|
|
123
|
+
env: process.env,
|
|
124
|
+
isInteractive: () => Boolean(process.stdin.isTTY && process.stderr.isTTY),
|
|
125
|
+
readPreference: readTelemetryPreference,
|
|
126
|
+
savePreference: (enabled) => {
|
|
127
|
+
saveTelemetryPreference(enabled);
|
|
128
|
+
},
|
|
129
|
+
ask: async (question) => {
|
|
130
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stderr });
|
|
131
|
+
try {
|
|
132
|
+
return await rl.question(question, { signal: AbortSignal.timeout(ANSWER_TIMEOUT_MS) });
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
finally {
|
|
138
|
+
rl.close();
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
log: (message) => console.error(message),
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=telemetry-consent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry-consent.js","sourceRoot":"","sources":["../src/telemetry-consent.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/scripts/postinstall.cjs
CHANGED
|
@@ -4,9 +4,10 @@
|
|
|
4
4
|
* and @extenshi/mcp (it figures out which one it is from its own package.json).
|
|
5
5
|
*
|
|
6
6
|
* Fires a single `cli_installed` / `mcp_installed` event when the package is
|
|
7
|
-
* installed as a real dependency
|
|
8
|
-
*
|
|
9
|
-
*
|
|
7
|
+
* installed as a real dependency ON A MACHINE THAT HAS ALREADY ACCEPTED
|
|
8
|
+
* telemetry, so we can see adoption in PostHog. It is a standalone CommonJS
|
|
9
|
+
* script using ONLY Node built-ins (no posthog-node, no build step) so it can
|
|
10
|
+
* run the instant npm extracts the tarball.
|
|
10
11
|
*
|
|
11
12
|
* Hard rules (a postinstall that breaks `npm install` is unacceptable):
|
|
12
13
|
* - ALWAYS exits 0, even on any error — wrapped in try/catch + a hard timeout.
|
|
@@ -15,8 +16,11 @@
|
|
|
15
16
|
* It self-skips (no event, no network) when:
|
|
16
17
|
* - the package is NOT under node_modules — i.e. our own monorepo workspace
|
|
17
18
|
* install (tools/<pkg>), so dev installs never inflate adoption counts;
|
|
18
|
-
* -
|
|
19
|
-
*
|
|
19
|
+
* - ~/.extenshi/config.json does not hold "telemetry": true — consent must be
|
|
20
|
+
* RECORDED, not merely un-refused. A postinstall runs before the CLI can
|
|
21
|
+
* ask anything, so "no answer yet" is not permission (see the ACCEPTED-ONLY
|
|
22
|
+
* note below);
|
|
23
|
+
* - DO_NOT_TRACK is truthy or EXTENSHI_TELEMETRY is off;
|
|
20
24
|
* - CI is set (CI re-installs would massively inflate the count);
|
|
21
25
|
* - no ingestion key is configured.
|
|
22
26
|
*
|
|
@@ -25,6 +29,21 @@
|
|
|
25
29
|
* same id the runtime telemetry uses). Never any path, package contents, or
|
|
26
30
|
* user input.
|
|
27
31
|
*
|
|
32
|
+
* ACCEPTED-ONLY, and what that costs. Until 2026-08-13 this fired unless the
|
|
33
|
+
* user had actively opted out, which meant a first-ever install reported before
|
|
34
|
+
* anyone had been asked — the one place consent did not reach after the CLI
|
|
35
|
+
* grew a first-run question (tools/extenshi-cli/src/telemetry-consent.ts). The
|
|
36
|
+
* gate is now positive, and the consequences are deliberate:
|
|
37
|
+
* - a FIRST install never pings. Only the CLI's first-run question writes
|
|
38
|
+
* `telemetry: true`, and that happens on the first RUN, so the earliest
|
|
39
|
+
* ping is the next upgrade of an accepted machine.
|
|
40
|
+
* - @extenshi/mcp is headless and never prompts, so it can only ping on a
|
|
41
|
+
* machine where the CLI recorded consent into the shared config. Treat its
|
|
42
|
+
* install count as gone, not as a number that dropped.
|
|
43
|
+
* - `first_extenshi_install` is therefore ~always false now. It is kept so the
|
|
44
|
+
* event schema does not change under existing PostHog queries, not because
|
|
45
|
+
* it still measures anything.
|
|
46
|
+
*
|
|
28
47
|
* NB for anyone reading this as an adoption metric: it counts npm EXTRACTIONS,
|
|
29
48
|
* not users. Most of them are ecosystem scanners that install a new version once
|
|
30
49
|
* on a throwaway machine and never run the binary. The "did a client actually
|
|
@@ -35,9 +54,20 @@
|
|
|
35
54
|
|
|
36
55
|
// Shared EU PostHog project key (114791) — public, write-only, already in our
|
|
37
56
|
// web bundles. Override with EXTENSHI_POSTHOG_KEY; empty disables the ping.
|
|
57
|
+
// NB: this line's NUMBER is pinned in .infisicalignore
|
|
58
|
+
// (`…/postinstall.cjs:generic-api-key:<line>`) — gitleaks fingerprints include
|
|
59
|
+
// it, so ADDING OR REMOVING LINES ABOVE HERE breaks the allowlist and turns the
|
|
60
|
+
// key into a CI secret-scan failure. Move the fingerprint with it.
|
|
38
61
|
const EMBEDDED_KEY = 'phc_fqKrAmtNZvJqe0krpYB3UwYqALLpT1WM8m5LtNs9eUu'
|
|
39
62
|
const DEFAULT_HOST = 'https://eu.i.posthog.com'
|
|
40
63
|
|
|
64
|
+
/**
|
|
65
|
+
* Every guard below calls this as `return done()`, not as a bare statement. The
|
|
66
|
+
* process.exit is what actually stops the script, but the `return` is what keeps
|
|
67
|
+
* the early exit true if this ever stops exiting synchronously — without it, a
|
|
68
|
+
* deferred done() would let the code past the consent gate run on a machine that
|
|
69
|
+
* never agreed to be measured.
|
|
70
|
+
*/
|
|
41
71
|
function done() {
|
|
42
72
|
process.exit(0)
|
|
43
73
|
}
|
|
@@ -50,22 +80,22 @@ try {
|
|
|
50
80
|
const { randomUUID } = require('node:crypto')
|
|
51
81
|
|
|
52
82
|
// Real dependency install only — workspace path has no /node_modules/ segment.
|
|
53
|
-
if (!__dirname.includes(`${path.sep}node_modules${path.sep}`)) done()
|
|
83
|
+
if (!__dirname.includes(`${path.sep}node_modules${path.sep}`)) return done()
|
|
54
84
|
|
|
55
85
|
// CI re-installs would inflate the adoption count — skip them.
|
|
56
|
-
if (process.env.CI) done()
|
|
86
|
+
if (process.env.CI) return done()
|
|
57
87
|
|
|
58
88
|
const key = (process.env.EXTENSHI_POSTHOG_KEY || EMBEDDED_KEY).trim()
|
|
59
|
-
if (!key) done()
|
|
89
|
+
if (!key) return done()
|
|
60
90
|
|
|
61
91
|
const dnt = String(process.env.DO_NOT_TRACK || '')
|
|
62
92
|
.trim()
|
|
63
93
|
.toLowerCase()
|
|
64
|
-
if (['1', 'true', 'yes', 'on'].includes(dnt)) done()
|
|
94
|
+
if (['1', 'true', 'yes', 'on'].includes(dnt)) return done()
|
|
65
95
|
const optOut = String(process.env.EXTENSHI_TELEMETRY || '')
|
|
66
96
|
.trim()
|
|
67
97
|
.toLowerCase()
|
|
68
|
-
if (['0', 'false', 'off', 'no'].includes(optOut)) done()
|
|
98
|
+
if (['0', 'false', 'off', 'no'].includes(optOut)) return done()
|
|
69
99
|
|
|
70
100
|
// Anonymous per-install id, shared with the runtime telemetry module.
|
|
71
101
|
const configPath = path.join(os.homedir(), '.extenshi', 'config.json')
|
|
@@ -73,16 +103,22 @@ try {
|
|
|
73
103
|
try {
|
|
74
104
|
cfg = JSON.parse(fs.readFileSync(configPath, 'utf8'))
|
|
75
105
|
} catch {}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
//
|
|
79
|
-
//
|
|
80
|
-
//
|
|
81
|
-
//
|
|
82
|
-
//
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
106
|
+
|
|
107
|
+
// Positive consent only. An install happens before the CLI can put the
|
|
108
|
+
// question, so an absent answer is "not asked yet", never "yes" — this exits
|
|
109
|
+
// for a machine that declined AND for one that has never been asked. Every
|
|
110
|
+
// line below this point, including minting the anonymous id, is reached only
|
|
111
|
+
// with a recorded `true`, which is what stops a bare `npx` from creating an
|
|
112
|
+
// identity on a machine that never agreed to one.
|
|
113
|
+
if (!cfg || cfg.telemetry !== true) return done()
|
|
114
|
+
|
|
115
|
+
let anonId = cfg.anonId
|
|
116
|
+
// Retained for event-schema stability, but it no longer measures anything:
|
|
117
|
+
// accepting the first-run question writes `telemetry: true` and then emits an
|
|
118
|
+
// event, which mints the id — so by the time this gate opens, an anonId is
|
|
119
|
+
// already there and this is false. It stays true only in the odd case of a
|
|
120
|
+
// config that kept the answer but lost the id. Before the accepted-only gate
|
|
121
|
+
// it was the new-machine-vs-upgrade discriminator described above.
|
|
86
122
|
const firstExtenshiInstall = !anonId
|
|
87
123
|
if (!anonId) {
|
|
88
124
|
anonId = randomUUID()
|