@extenshi/cli 0.14.2 → 0.15.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.js CHANGED
@@ -34,6 +34,7 @@ import * as readline from 'node:readline/promises';
34
34
  import { program } from 'commander';
35
35
  import { checkAutoUpdate } from './auto-update.js';
36
36
  import { CONFIG_PATH, loadConfig, readTelemetryPreference, saveConfig, saveTelemetryPreference, } from './config.js';
37
+ import { isExpectedError } from './expected-error.js';
37
38
  import { runIconPreview } from './icon.js';
38
39
  import { makeLoginBff } from './login-bff.js';
39
40
  import { runBrowserLogin } from './login-flow.js';
@@ -75,12 +76,18 @@ async function runCommand(command, action) {
75
76
  await flushTelemetry();
76
77
  }
77
78
  catch (err) {
78
- captureEvent('cli_command_failed', {
79
- command,
80
- error_kind: classifyError(err),
81
- duration_ms: Date.now() - startedAt,
82
- });
83
- captureError(err, { command });
79
+ // Classified once and threaded into both uses below, so the reported
80
+ // error_kind and the capture decision can never disagree about what failed.
81
+ const kind = classifyError(err);
82
+ // The failure count is always tracked, so how often callers hit each
83
+ // condition (incl. a bad path or a billing gate) stays visible.
84
+ captureEvent('cli_command_failed', { command, error_kind: kind, duration_ms: Date.now() - startedAt });
85
+ // …but only genuine faults are shipped as exceptions. Expected,
86
+ // user-actionable failures (a missing artifact, a bad key, an exhausted
87
+ // quota, a rate limit) print the message below and exit non-zero — they
88
+ // must not open self-reopening error-tracking issues.
89
+ if (!isExpectedError(err, kind))
90
+ captureError(err, { command });
84
91
  const msg = err instanceof Error ? err.message : String(err);
85
92
  // Multi-line messages (help blocks like MISSING_KEY_HELP) are printed
86
93
  // as-is; bare single-line messages get the "Error: " prefix.
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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"}
@@ -18,6 +18,7 @@
18
18
  * `summarizeComplianceReview(body)` reader — the same additive-payload-key pattern
19
19
  * the server-driven `compliance` / `riskAssessment` keys already use.
20
20
  */
21
+ import { type ListingSource } from './listing.js';
21
22
  import { type ReviewFinding, type Verdict } from './review-checks.js';
22
23
  /** Serializable shape folded into the scan body under `complianceReview`. */
23
24
  export interface ComplianceReviewPayload {
@@ -49,8 +50,11 @@ export interface ListingReviewPayload {
49
50
  available: boolean;
50
51
  /** Present when available === false. */
51
52
  reason?: string;
52
- /** `artifact` = the package's own text; `draft` = overlaid with --listing. */
53
- source?: 'artifact' | 'draft';
53
+ /**
54
+ * Where the text came from: `artifact` = the package's own; `draft` = overlaid
55
+ * with `--listing`; `catalog` = gaps filled from the PUBLISHED listing.
56
+ */
57
+ source?: ListingSource;
54
58
  /** The locale a store visitor sees by default. */
55
59
  defaultLocale?: string;
56
60
  /** Every locale whose text was read. */
@@ -1 +1 @@
1
- {"version":3,"file":"compliance-review.d.ts","sourceRoot":"","sources":["../src/compliance-review.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAMH,OAAO,EAGN,KAAK,aAAa,EAIlB,KAAK,OAAO,EACZ,MAAM,oBAAoB,CAAA;AAE3B,6EAA6E;AAC7E,MAAM,WAAW,uBAAuB;IACvC,gFAAgF;IAChF,SAAS,EAAE,OAAO,CAAA;IAClB,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qFAAqF;IACrF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,oEAAoE;IACpE,QAAQ,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC/B,QAAQ,EAAE,aAAa,EAAE,CAAA;CACzB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,oBAAoB;IACpC,yEAAyE;IACzE,SAAS,EAAE,OAAO,CAAA;IAClB,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,8EAA8E;IAC9E,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,CAAA;IAC7B,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,uDAAuD;IACvD,KAAK,EAAE,MAAM,EAAE,CAAA;IACf;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,aAAa,EAAE,CAAA;CACzB;AAED,+EAA+E;AAC/E,MAAM,WAAW,sBAAsB;IACtC,MAAM,EAAE,uBAAuB,CAAA;IAC/B,OAAO,EAAE,oBAAoB,CAAA;CAC7B;AAED,MAAM,WAAW,4BAA4B;IAC5C,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAA;IAChB,uFAAuF;IACvF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAA;IACd,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,kFAAkF;IAClF,KAAK,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAA;IACrC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACpB;AAOD;;;;GAIG;AACH,wBAAsB,qBAAqB,CAC1C,IAAI,EAAE,4BAA4B,GAChC,OAAO,CAAC,sBAAsB,CAAC,CAqEjC"}
1
+ {"version":3,"file":"compliance-review.d.ts","sourceRoot":"","sources":["../src/compliance-review.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAGN,KAAK,aAAa,EAGlB,MAAM,cAAc,CAAA;AAIrB,OAAO,EAGN,KAAK,aAAa,EAIlB,KAAK,OAAO,EACZ,MAAM,oBAAoB,CAAA;AAE3B,6EAA6E;AAC7E,MAAM,WAAW,uBAAuB;IACvC,gFAAgF;IAChF,SAAS,EAAE,OAAO,CAAA;IAClB,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qFAAqF;IACrF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,oEAAoE;IACpE,QAAQ,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC/B,QAAQ,EAAE,aAAa,EAAE,CAAA;CACzB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,oBAAoB;IACpC,yEAAyE;IACzE,SAAS,EAAE,OAAO,CAAA;IAClB,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,uDAAuD;IACvD,KAAK,EAAE,MAAM,EAAE,CAAA;IACf;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,aAAa,EAAE,CAAA;CACzB;AAED,+EAA+E;AAC/E,MAAM,WAAW,sBAAsB;IACtC,MAAM,EAAE,uBAAuB,CAAA;IAC/B,OAAO,EAAE,oBAAoB,CAAA;CAC7B;AAED,MAAM,WAAW,4BAA4B;IAC5C,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAA;IAChB,uFAAuF;IACvF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAA;IACd,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,kFAAkF;IAClF,KAAK,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAA;IACrC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACpB;AAOD;;;;GAIG;AACH,wBAAsB,qBAAqB,CAC1C,IAAI,EAAE,4BAA4B,GAChC,OAAO,CAAC,sBAAsB,CAAC,CAmFjC"}
@@ -18,10 +18,10 @@
18
18
  * `summarizeComplianceReview(body)` reader — the same additive-payload-key pattern
19
19
  * the server-driven `compliance` / `riskAssessment` keys already use.
20
20
  */
21
- import { assembleListing, listingCoverageNotes } from './listing.js';
21
+ import { assembleListing, listingCoverageNotes, listingFromCatalog, } from './listing.js';
22
22
  import { LISTING_DICTIONARY_VERSION } from './listing-checks.js';
23
23
  import { loadArtifact } from './review-archive.js';
24
- import { fetchPriorManifest } from './review-catalog.js';
24
+ import { fetchCatalogListing, fetchPriorManifest } from './review-catalog.js';
25
25
  import { runChecks, runListingOnlyChecks, summarize, } from './review-checks.js';
26
26
  /** Empty (zeroed) counts — also the shape returned when the review can't run. */
27
27
  function emptyCounts() {
@@ -65,22 +65,37 @@ export async function buildComplianceReview(opts) {
65
65
  // supplied. Best-effort: a failure just downgrades to a note, never throws.
66
66
  let priorManifest = null;
67
67
  let diffNote;
68
+ let catalogListing = null;
69
+ let catalogReason;
68
70
  if (opts.extensionId) {
71
+ const args = {
72
+ bffUrl: opts.bffUrl,
73
+ extensionId: opts.extensionId,
74
+ apiKey: opts.apiKey,
75
+ store: opts.store,
76
+ };
69
77
  try {
70
- const prior = await fetchPriorManifest({
71
- bffUrl: opts.bffUrl,
72
- extensionId: opts.extensionId,
73
- apiKey: opts.apiKey,
74
- store: opts.store,
75
- });
78
+ // Parallel, and independently fail-soft: the listing read must not be able
79
+ // to cost the caller the auto-disable diff, nor the other way round.
80
+ const [prior, published] = await Promise.all([
81
+ fetchPriorManifest(args).catch((err) => ({ manifest: null, reason: err.message })),
82
+ fetchCatalogListing(args).catch((err) => ({ listing: null, reason: err.message })),
83
+ ]);
76
84
  if (prior.manifest) {
77
85
  priorManifest = prior.manifest;
78
86
  }
79
87
  else {
80
88
  diffNote = `auto-disable diff skipped: ${prior.reason ?? 'last published manifest unavailable'}`;
81
89
  }
90
+ catalogListing = published.listing ? listingFromCatalog(published.listing) : null;
91
+ if (!catalogListing)
92
+ catalogReason = published.reason;
82
93
  }
83
94
  catch (err) {
95
+ // Dead-code safety net: both reads carry their own .catch above, so nothing
96
+ // inside the try can reject today. The wording is deliberately the diff's,
97
+ // because that is the only failure this could plausibly regain — if a future
98
+ // refactor drops one of those .catch handlers, re-split this into two.
84
99
  diffNote = `auto-disable diff skipped: ${err.message}`;
85
100
  }
86
101
  }
@@ -101,7 +116,7 @@ export async function buildComplianceReview(opts) {
101
116
  counts: summary.counts,
102
117
  findings,
103
118
  },
104
- listing: buildListingReview(manifest, files, opts.listingPath),
119
+ listing: buildListingReview(manifest, files, opts.listingPath, catalogListing, catalogReason),
105
120
  };
106
121
  }
107
122
  /**
@@ -116,7 +131,7 @@ export async function buildComplianceReview(opts) {
116
131
  * mistyped side-input is the worse trade. The reason is printed in the report's
117
132
  * listing section, so it is stated rather than swallowed.
118
133
  */
119
- function buildListingReview(manifest, files, listingPath) {
134
+ function buildListingReview(manifest, files, listingPath, catalog, catalogReason) {
120
135
  const base = {
121
136
  notes: [],
122
137
  rulesVersion: LISTING_DICTIONARY_VERSION,
@@ -124,7 +139,7 @@ function buildListingReview(manifest, files, listingPath) {
124
139
  };
125
140
  let listing;
126
141
  try {
127
- listing = assembleListing(manifest, files, listingPath);
142
+ listing = assembleListing(manifest, files, listingPath, catalog);
128
143
  }
129
144
  catch (err) {
130
145
  return { ...base, available: false, reason: err.message };
@@ -136,12 +151,18 @@ function buildListingReview(manifest, files, listingPath) {
136
151
  const [note = 'no listing text found in the package'] = listingCoverageNotes(null, listingPath);
137
152
  return { ...base, available: false, reason: note };
138
153
  }
154
+ const notes = listingCoverageNotes(listing, listingPath, catalog != null);
155
+ // Why the published listing was NOT used earns a line of its own: a developer
156
+ // who passed --extension-id expecting the full description to be covered would
157
+ // otherwise read the plain "not in the package" note as the whole story.
158
+ if (catalogReason)
159
+ notes.push(`published listing not used: ${catalogReason}`);
139
160
  return {
140
161
  available: true,
141
162
  source: listing.source,
142
163
  defaultLocale: listing.defaultLocale,
143
164
  locales: listing.locales.map((l) => l.locale),
144
- notes: listingCoverageNotes(listing, listingPath),
165
+ notes,
145
166
  rulesVersion: LISTING_DICTIONARY_VERSION,
146
167
  findings: runListingOnlyChecks(listing),
147
168
  };
@@ -1 +1 @@
1
- {"version":3,"file":"compliance-review.js","sourceRoot":"","sources":["../src/compliance-review.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compliance-review.js","sourceRoot":"","sources":["../src/compliance-review.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cws-policies.d.ts","sourceRoot":"","sources":["../src/cws-policies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,MAAM,WAAW,SAAS;IACzB,gFAAgF;IAChF,EAAE,EAAE,MAAM,CAAA;IACV,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAA;IACb,mCAAmC;IACnC,GAAG,EAAE,MAAM,CAAA;CACX;AAMD;;;;;GAKG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;CAaqB,CAAA;AAE9C,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,YAAY,CAAA;AAEpD,iFAAiF;AACjF,eAAO,MAAM,gBAAgB,EAAE,SAAS,SAAS,EAAgC,CAAA;AA+CjF;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,CAU1E;AAED,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAAiC,CAAA;AAEnF,uEAAuE;AACvE,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAAqC,CAAA"}
1
+ {"version":3,"file":"cws-policies.d.ts","sourceRoot":"","sources":["../src/cws-policies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,MAAM,WAAW,SAAS;IACzB,gFAAgF;IAChF,EAAE,EAAE,MAAM,CAAA;IACV,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAA;IACb,mCAAmC;IACnC,GAAG,EAAE,MAAM,CAAA;CACX;AAMD;;;;;GAKG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;CAaqB,CAAA;AAE9C,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,YAAY,CAAA;AAEpD,iFAAiF;AACjF,eAAO,MAAM,gBAAgB,EAAE,SAAS,SAAS,EAAgC,CAAA;AAqDjF;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,CAU1E;AAED,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAAiC,CAAA;AAEnF,uEAAuE;AACvE,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAAqC,CAAA"}
@@ -75,6 +75,11 @@ const POLICY_BY_CHECK = {
75
75
  'listing-testimonial-block': CWS_POLICIES.LISTING_REQUIREMENTS,
76
76
  'listing-impossible-claim': CWS_POLICIES.UNEXPECTED_BEHAVIOR,
77
77
  'listing-unverifiable-superlative': CWS_POLICIES.UNEXPECTED_BEHAVIOR,
78
+ // ── Privacy disclosure (iteration 2) ──────────────────────────────────────
79
+ // The checklist is about what the dashboard will make you declare, and the
80
+ // privacy-policy requirement is the half with teeth, so it maps to PRIVACY
81
+ // rather than PERMISSIONS.
82
+ 'privacy-disclosure-required': CWS_POLICIES.PRIVACY,
78
83
  // ── Process advisories, not policy rules ──────────────────────────────────
79
84
  // Editing the listing re-triggers a full manual review. That is how review
80
85
  // scheduling works, not something the developer can violate — so it has no
@@ -1 +1 @@
1
- {"version":3,"file":"cws-policies.js","sourceRoot":"","sources":["../src/cws-policies.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cws-policies.js","sourceRoot":"","sources":["../src/cws-policies.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Which command failures are EXPECTED, user-actionable outcomes rather than
3
+ * bugs — the CLI mirror of the MCP surface's isExpectedError
4
+ * (tools/extenshi-mcp/src/tools.ts).
5
+ *
6
+ * Every command runs inside runCommand() (cli.ts), which used to ship EVERY
7
+ * thrown error to error tracking as a `$exception`. That turned routine user
8
+ * input into self-reopening error-tracking issues: on 2026-08-12 `extenshi
9
+ * review-risk <path>` pointed at a missing file filed one exception per run
10
+ * (classified `invalid_artifact`), which reads as a crash when it is only "that
11
+ * path does not exist".
12
+ *
13
+ * These kinds still emit `cli_command_failed` (the failure metric is kept) and
14
+ * still print an actionable message with a non-zero exit code — they are just
15
+ * NOT reported as exceptions.
16
+ */
17
+ /**
18
+ * `invalid_artifact` — the artifact the user pointed at is missing / not a file /
19
+ * not a real package. On the CLI the path is the user's own argument, so a bad
20
+ * one is user error, not a fault. (The MCP set omits it: there the artifact can
21
+ * arrive as an agent-built payload, where a malformed one may be a real bug.)
22
+ * `auth` — missing / rejected API key. `quota` — exhausted free allowance.
23
+ * `rate_limit` — asked to slow down. All four are actionable conditions the
24
+ * command surfaces to the user, never code exceptions.
25
+ */
26
+ export declare const EXPECTED_ERROR_KINDS: Set<string>;
27
+ /**
28
+ * True when a thrown error is an expected, user-facing condition rather than a
29
+ * bug worth an exception report. `kind` defaults to classifying `err`; pass one
30
+ * to reuse a classification the caller already made, so the reported
31
+ * `error_kind` and this decision can never disagree.
32
+ */
33
+ export declare function isExpectedError(err: unknown, kind?: string): boolean;
34
+ //# sourceMappingURL=expected-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expected-error.d.ts","sourceRoot":"","sources":["../src/expected-error.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,aAA+D,CAAA;AAEhG;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,GAAE,MAA2B,GAAG,OAAO,CAExF"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Which command failures are EXPECTED, user-actionable outcomes rather than
3
+ * bugs — the CLI mirror of the MCP surface's isExpectedError
4
+ * (tools/extenshi-mcp/src/tools.ts).
5
+ *
6
+ * Every command runs inside runCommand() (cli.ts), which used to ship EVERY
7
+ * thrown error to error tracking as a `$exception`. That turned routine user
8
+ * input into self-reopening error-tracking issues: on 2026-08-12 `extenshi
9
+ * review-risk <path>` pointed at a missing file filed one exception per run
10
+ * (classified `invalid_artifact`), which reads as a crash when it is only "that
11
+ * path does not exist".
12
+ *
13
+ * These kinds still emit `cli_command_failed` (the failure metric is kept) and
14
+ * still print an actionable message with a non-zero exit code — they are just
15
+ * NOT reported as exceptions.
16
+ */
17
+ import { classifyError } from './telemetry.js';
18
+ /**
19
+ * `invalid_artifact` — the artifact the user pointed at is missing / not a file /
20
+ * not a real package. On the CLI the path is the user's own argument, so a bad
21
+ * one is user error, not a fault. (The MCP set omits it: there the artifact can
22
+ * arrive as an agent-built payload, where a malformed one may be a real bug.)
23
+ * `auth` — missing / rejected API key. `quota` — exhausted free allowance.
24
+ * `rate_limit` — asked to slow down. All four are actionable conditions the
25
+ * command surfaces to the user, never code exceptions.
26
+ */
27
+ export const EXPECTED_ERROR_KINDS = new Set(['invalid_artifact', 'auth', 'quota', 'rate_limit']);
28
+ /**
29
+ * True when a thrown error is an expected, user-facing condition rather than a
30
+ * bug worth an exception report. `kind` defaults to classifying `err`; pass one
31
+ * to reuse a classification the caller already made, so the reported
32
+ * `error_kind` and this decision can never disagree.
33
+ */
34
+ export function isExpectedError(err, kind = classifyError(err)) {
35
+ return EXPECTED_ERROR_KINDS.has(kind);
36
+ }
37
+ //# sourceMappingURL=expected-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expected-error.js","sourceRoot":"","sources":["../src/expected-error.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAE9C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,kBAAkB,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAA;AAEhG;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,GAAY,EAAE,OAAe,aAAa,CAAC,GAAG,CAAC;IAC9E,OAAO,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AACtC,CAAC"}
package/dist/listing.d.ts CHANGED
@@ -19,14 +19,16 @@
19
19
  * check the full description, and the only thing an unpublished
20
20
  * extension has at all.
21
21
  *
22
- * Fetching the published listing out of the catalog by `--extension-id` is the
23
- * third source; it needs a BFF read that does not exist yet, so it is not wired
24
- * here. The contract below already carries `source`, so adding it later is
25
- * additive for every consumer.
22
+ * catalog — the PUBLISHED listing, fetched by `--extension-id`. This is the
23
+ * only source other than a draft that has the full description,
24
+ * and the only one a developer gets without writing a file. It
25
+ * describes what is LIVE, not what is about to be published, so it
26
+ * only ever FILLS fields the other two left empty (see
27
+ * `mergeListings`) and the report has to say it was used.
26
28
  */
27
29
  import type { FileMap, Manifest } from './review-checks.js';
28
30
  /** Where a listing's text came from — reported so a developer can see what was checked. */
29
- export type ListingSource = 'artifact' | 'draft';
31
+ export type ListingSource = 'artifact' | 'draft' | 'catalog';
30
32
  /** One locale's listing text. Every field is optional: sources differ in coverage. */
31
33
  export interface ListingLocale {
32
34
  /** BCP-47-ish locale tag as the store spells it (`en`, `en_GB`, `ru`). */
@@ -88,6 +90,22 @@ export declare function parseListingFile(raw: unknown): Listing;
88
90
  * the draft as a whole would silently drop every locale it does not mention.
89
91
  */
90
92
  export declare function mergeListings(artifact: Listing | null, draft: Listing): Listing;
93
+ /**
94
+ * The published catalog listing as an overlay.
95
+ *
96
+ * `appliesToAllLocales` is the honest shape: the catalog holds ONE text per
97
+ * extension, not one per locale, so this text is not the `en` block of anything
98
+ * — it is whatever the store served. Marking it flat routes it through the
99
+ * fill-never-override branch of `mergeListings`, which is exactly the semantics
100
+ * this source needs: the package's localized name is what that locale actually
101
+ * shows and must win, while the full description — which no package can carry —
102
+ * lands wherever it is missing.
103
+ */
104
+ export declare function listingFromCatalog(text: {
105
+ name?: string;
106
+ shortDescription?: string;
107
+ description?: string;
108
+ }): Listing | null;
91
109
  /**
92
110
  * Assemble the listing to check: the package's localized name/description,
93
111
  * overlaid with the draft file when one was passed.
@@ -101,7 +119,7 @@ export declare function mergeListings(artifact: Listing | null, draft: Listing):
101
119
  * listing passed. A package with no listing text at all resolves to null and
102
120
  * the listing rules simply do not run.
103
121
  */
104
- export declare function assembleListing(manifest: Manifest, files: FileMap, listingPath?: string): Listing | null;
122
+ export declare function assembleListing(manifest: Manifest, files: FileMap, listingPath?: string, catalog?: Listing | null): Listing | null;
105
123
  /**
106
124
  * What the listing rules covered, stated plainly.
107
125
  *
@@ -114,5 +132,5 @@ export declare function assembleListing(manifest: Manifest, files: FileMap, list
114
132
  * Returned as data (not printed) so the terminal, the Markdown report and the
115
133
  * HTML report all state the same coverage instead of each inventing wording.
116
134
  */
117
- export declare function listingCoverageNotes(listing: Listing | null, listingPath?: string): string[];
135
+ export declare function listingCoverageNotes(listing: Listing | null, listingPath?: string, usedCatalog?: boolean): string[];
118
136
  //# sourceMappingURL=listing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"listing.d.ts","sourceRoot":"","sources":["../src/listing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAE3D,2FAA2F;AAC3F,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,OAAO,CAAA;AAEhD,sFAAsF;AACtF,MAAM,WAAW,aAAa;IAC7B,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAA;IACd,2BAA2B;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,qFAAqF;IACrF,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,OAAO;IACvB,MAAM,EAAE,aAAa,CAAA;IACrB,kDAAkD;IAClD,aAAa,EAAE,MAAM,CAAA;IACrB,sDAAsD;IACtD,OAAO,EAAE,aAAa,EAAE,CAAA;IACxB;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAmED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAgCtF;AAuBD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CA8BtD;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAmD/E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAkBxG;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAa5F"}
1
+ {"version":3,"file":"listing.d.ts","sourceRoot":"","sources":["../src/listing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAE3D,2FAA2F;AAC3F,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAA;AAE5D,sFAAsF;AACtF,MAAM,WAAW,aAAa;IAC7B,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAA;IACd,2BAA2B;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,qFAAqF;IACrF,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,OAAO;IACvB,MAAM,EAAE,aAAa,CAAA;IACrB,kDAAkD;IAClD,aAAa,EAAE,MAAM,CAAA;IACrB,sDAAsD;IACtD,OAAO,EAAE,aAAa,EAAE,CAAA;IACxB;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAmED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAgCtF;AAuBD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CA8BtD;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAyD/E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACxC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;CACpB,GAAG,OAAO,GAAG,IAAI,CAkBjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC9B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,OAAO,EACd,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,GACtB,OAAO,GAAG,IAAI,CAqChB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,WAAW,CAAC,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,OAAO,GACnB,MAAM,EAAE,CAoBV"}
package/dist/listing.js CHANGED
@@ -19,10 +19,12 @@
19
19
  * check the full description, and the only thing an unpublished
20
20
  * extension has at all.
21
21
  *
22
- * Fetching the published listing out of the catalog by `--extension-id` is the
23
- * third source; it needs a BFF read that does not exist yet, so it is not wired
24
- * here. The contract below already carries `source`, so adding it later is
25
- * additive for every consumer.
22
+ * catalog — the PUBLISHED listing, fetched by `--extension-id`. This is the
23
+ * only source other than a draft that has the full description,
24
+ * and the only one a developer gets without writing a file. It
25
+ * describes what is LIVE, not what is about to be published, so it
26
+ * only ever FILLS fields the other two left empty (see
27
+ * `mergeListings`) and the report has to say it was used.
26
28
  */
27
29
  import fs from 'node:fs';
28
30
  const DEFAULT_LOCALE_FALLBACK = 'default';
@@ -192,6 +194,11 @@ export function parseListingFile(raw) {
192
194
  * the draft as a whole would silently drop every locale it does not mention.
193
195
  */
194
196
  export function mergeListings(artifact, draft) {
197
+ // NOTE: the result carries the OVERLAY's `source`, not a fixed label. A caller
198
+ // that stacks more than one overlay therefore ends up labelled by whichever it
199
+ // applied last, which is not always the strongest provenance — `assembleListing`
200
+ // re-stamps `draft` for exactly that reason. Set the label yourself after the
201
+ // call rather than inferring it from the return.
195
202
  if (!artifact)
196
203
  return draft;
197
204
  const byLocale = new Map();
@@ -242,7 +249,38 @@ export function mergeListings(artifact, draft) {
242
249
  : locales.some((l) => l.locale === artifact.defaultLocale)
243
250
  ? artifact.defaultLocale
244
251
  : (locales[0]?.locale ?? draft.defaultLocale);
245
- return { source: 'draft', defaultLocale, locales };
252
+ return { source: draft.source, defaultLocale, locales };
253
+ }
254
+ /**
255
+ * The published catalog listing as an overlay.
256
+ *
257
+ * `appliesToAllLocales` is the honest shape: the catalog holds ONE text per
258
+ * extension, not one per locale, so this text is not the `en` block of anything
259
+ * — it is whatever the store served. Marking it flat routes it through the
260
+ * fill-never-override branch of `mergeListings`, which is exactly the semantics
261
+ * this source needs: the package's localized name is what that locale actually
262
+ * shows and must win, while the full description — which no package can carry —
263
+ * lands wherever it is missing.
264
+ */
265
+ export function listingFromCatalog(text) {
266
+ // Trim at the boundary: a whitespace-only column is the catalog's idea of
267
+ // empty, and carrying it through would make the empty-field rules accuse the
268
+ // developer of a blank name that our own handling invented.
269
+ const clean = (v) => (v?.trim() ? v.trim() : undefined);
270
+ const entry = {
271
+ locale: DEFAULT_LOCALE_FALLBACK,
272
+ name: clean(text.name),
273
+ shortDescription: clean(text.shortDescription),
274
+ description: clean(text.description),
275
+ };
276
+ if (!hasText(entry))
277
+ return null;
278
+ return {
279
+ source: 'catalog',
280
+ defaultLocale: DEFAULT_LOCALE_FALLBACK,
281
+ locales: [entry],
282
+ appliesToAllLocales: true,
283
+ };
246
284
  }
247
285
  /**
248
286
  * Assemble the listing to check: the package's localized name/description,
@@ -257,26 +295,43 @@ export function mergeListings(artifact, draft) {
257
295
  * listing passed. A package with no listing text at all resolves to null and
258
296
  * the listing rules simply do not run.
259
297
  */
260
- export function assembleListing(manifest, files, listingPath) {
298
+ export function assembleListing(manifest, files, listingPath, catalog) {
261
299
  const fromArtifact = listingFromArtifact(manifest, files);
262
- if (!listingPath)
263
- return fromArtifact;
264
- if (!fs.existsSync(listingPath)) {
265
- throw new Error(`Listing file not found: ${listingPath}`);
266
- }
267
- let parsed;
268
- try {
269
- parsed = JSON.parse(fs.readFileSync(listingPath, 'utf8'));
270
- }
271
- catch (err) {
272
- throw new Error(`Listing file is not valid JSON: ${err.message}`);
273
- }
274
- try {
275
- return mergeListings(fromArtifact, parseListingFile(parsed));
300
+ let listing = fromArtifact;
301
+ if (listingPath) {
302
+ if (!fs.existsSync(listingPath)) {
303
+ throw new Error(`Listing file not found: ${listingPath}`);
304
+ }
305
+ let parsed;
306
+ try {
307
+ parsed = JSON.parse(fs.readFileSync(listingPath, 'utf8'));
308
+ }
309
+ catch (err) {
310
+ throw new Error(`Listing file is not valid JSON: ${err.message}`);
311
+ }
312
+ try {
313
+ listing = mergeListings(fromArtifact, parseListingFile(parsed));
314
+ }
315
+ catch (err) {
316
+ throw new Error(`${listingPath}: ${err.message}`);
317
+ }
276
318
  }
277
- catch (err) {
278
- throw new Error(`${listingPath}: ${err.message}`);
319
+ // The catalog goes LAST, and that ordering is the whole design.
320
+ //
321
+ // Every overlay here fills rather than overrides, so whoever is applied first
322
+ // wins the field. The catalog holds what is PUBLISHED, while the package and
323
+ // the draft hold what is about to BE published — so the catalog must lose
324
+ // every field the other two supply, or a developer rewriting their description
325
+ // would get findings against the copy they are replacing. Applying it after the
326
+ // draft is what makes the draft win without needing override semantics that
327
+ // would also (wrongly) let a flat draft beat a localized package name.
328
+ if (catalog) {
329
+ const merged = mergeListings(listing, catalog);
330
+ // `mergeListings` labels the result with the overlay, but a draft is the
331
+ // stronger provenance and stays the honest answer when both were used.
332
+ listing = listingPath ? { ...merged, source: 'draft' } : merged;
279
333
  }
334
+ return listing;
280
335
  }
281
336
  /**
282
337
  * What the listing rules covered, stated plainly.
@@ -290,14 +345,19 @@ export function assembleListing(manifest, files, listingPath) {
290
345
  * Returned as data (not printed) so the terminal, the Markdown report and the
291
346
  * HTML report all state the same coverage instead of each inventing wording.
292
347
  */
293
- export function listingCoverageNotes(listing, listingPath) {
348
+ export function listingCoverageNotes(listing, listingPath, usedCatalog) {
294
349
  if (!listing) {
295
350
  return ['no listing text found in the package — pass --listing <file> to check name and descriptions'];
296
351
  }
297
352
  const notes = [
298
353
  `listing checked in ${listing.locales.length} locale(s): ${listing.locales.map((l) => l.locale).join(', ')}`,
299
354
  ];
300
- if (!listingPath && !listing.locales.some((l) => l.description)) {
355
+ if (usedCatalog) {
356
+ // Said plainly because it changes what a finding MEANS: it may be about text
357
+ // the developer is in the middle of replacing, not about this upload.
358
+ notes.push('the full description came from your PUBLISHED catalog listing, not from this build — pass --listing <file> if you are changing it');
359
+ }
360
+ if (!listingPath && !usedCatalog && !listing.locales.some((l) => l.description)) {
301
361
  notes.push('the full store description is not in the package — pass --listing <file> with it to check for keyword spam');
302
362
  }
303
363
  return notes;