@ai-dossier/cli 0.82.0 → 0.83.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.
@@ -47,7 +47,8 @@ function registerRemoveCommand(program) {
47
47
  const client = (0, registry_client_1.getClientForRegistry)(targetRegistry.url, credentials.token);
48
48
  await client.removeDossier(dossierName, version || null);
49
49
  const verifyCommand = `dossier info ${target}`;
50
- const cdnDelaySeconds = 30;
50
+ // list/search read index.json via raw.githubusercontent.com, cached ~5 min.
51
+ const cdnDelaySeconds = 300;
51
52
  if (options.json) {
52
53
  console.log(JSON.stringify({
53
54
  removed: true,
@@ -61,7 +62,7 @@ function registerRemoveCommand(program) {
61
62
  }
62
63
  else {
63
64
  console.log(`\n✅ Removed: ${target} [${targetRegistry.name}]`);
64
- console.log(`\n ⏳ CDN propagation may take up to ${cdnDelaySeconds}s. Verify with:\n $ ${verifyCommand}\n`);
65
+ console.log(`\n ⏳ CDN propagation: list, search and install-skill --all may lag up to ${cdnDelaySeconds / 60} min. Verify with:\n $ ${verifyCommand}\n`);
65
66
  }
66
67
  }
67
68
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,9 @@
8
8
  * text-keyword approximation of the risk-floor/new-package/deploy-pipeline rules, rule-9 open
9
9
  * dependencies, and — when a plan:v1 artifact is already on the issue — the path-based risk
10
10
  * floor and the >8-files rule). Everything it does not catch (rule 2 beyond the `migration`
11
- * keyword, rule 7 hard rollback, rule 8 visual/browser review, rules 5/6 diff/file size without
12
- * a plan artifact, rule 10 confidence) falls through to the classifier's own bounded
11
+ * keyword, rule 5 file count without a plan artifact, rule 6 predicted diff (no diff signal at
12
+ * all: a plan:v1 artifact carries predicted files only), rule 7 hard rollback, rule 8
13
+ * visual/browser review, rule 10 confidence) falls through to the classifier's own bounded
13
14
  * mechanical-tier pass, which is the intended safety net — not a gap this module needs to close.
14
15
  *
15
16
  * v2 (#772): two outputs. `verdict: full` only for the EXCLUDING checks;
@@ -24,6 +25,10 @@
24
25
  * hard-block label and a rule-9 open dependency. Rule 8 (visual/browser) stays excluding, but
25
26
  * this module never detected it — the classifier's model pass does.
26
27
  *
28
+ * v5-in-behaviour (#784, contract still `prescreen:v4`): the text floor also masks negated mentions,
29
+ * unquoted file/path/workflow names and other word senses (`maskFloorFalsePositives`), so a
30
+ * false-positive class no longer spends a scarce review=full slot.
31
+ *
27
32
  * Pure and dependency-free (no `gh`, network, or fs), same discipline as `plan-artifact.ts` and
28
33
  * `runstate.ts` — unit-testable directly. Subprocess access (fetching the issue, resolving
29
34
  * dependency state, filtering by submitted set) lives in the command layer (`commands/classify.ts`).
@@ -76,6 +81,11 @@ export declare function stripQuotedSpans(text: string): string;
76
81
  * same-line bound behaves exactly as before.
77
82
  */
78
83
  export declare function stripReferenceMaterial(body: string): string;
84
+ /**
85
+ * #784: blank the false-positive spans of {@link stripQuotedSpans}' unquoted cousins — file/spec/
86
+ * workflow names, other word senses, and scope-disclaimed mentions — before the text floor runs.
87
+ */
88
+ export declare function maskFloorFalsePositives(text: string): string;
79
89
  /**
80
90
  * The exact text the text floor scans (#772): title + section/provenance-filtered body + label
81
91
  * names, with quoted spans blanked (#627). Exported so measurement tooling
@@ -1 +1 @@
1
- {"version":3,"file":"prescreen.d.ts","sourceRoot":"","sources":["../src/prescreen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAKH,6FAA6F;AAC7F,MAAM,WAAW,gBAAgB;IAC/B,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IACb,sJAAsJ;IACtJ,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CACxC;AAwBD,eAAO,MAAM,mBAAmB,EAAE,SAAS,gBAAgB,EAmD1D,CAAC;AASF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIrD;AAuHD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAyC3D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAE5F;AAED,wKAAwK;AACxK,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAKtC;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAY5D;AAED,0FAA0F;AAC1F,MAAM,WAAW,eAAe;IAC9B,uGAAuG;IACvG,KAAK,EAAE,kBAAkB,GAAG,YAAY,GAAG,YAAY,GAAG,YAAY,GAAG,iBAAiB,CAAC;IAC3F,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,oGAAoG;IACpG,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,CAGjE,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,CAGxE,CAAC;AAEH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,OAAO,EAAE,MAAM,GAAG,WAAW,CAAC;IAC9B;;;;;OAKG;IACH,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,4FAA4F;IAC5F,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AA6BD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,gBAAgB,CAgDtE"}
1
+ {"version":3,"file":"prescreen.d.ts","sourceRoot":"","sources":["../src/prescreen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAKH,6FAA6F;AAC7F,MAAM,WAAW,gBAAgB;IAC/B,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IACb,sJAAsJ;IACtJ,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CACxC;AAwDD,eAAO,MAAM,mBAAmB,EAAE,SAAS,gBAAgB,EAqB1D,CAAC;AAwBF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIrD;AAuHD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAyC3D;AA6JD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK5D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAI5F;AAED,wKAAwK;AACxK,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAKtC;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAY5D;AAED,0FAA0F;AAC1F,MAAM,WAAW,eAAe;IAC9B,uGAAuG;IACvG,KAAK,EAAE,kBAAkB,GAAG,YAAY,GAAG,YAAY,GAAG,YAAY,GAAG,iBAAiB,CAAC;IAC3F,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,oGAAoG;IACpG,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,CAGjE,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,CAGxE,CAAC;AAEH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,OAAO,EAAE,MAAM,GAAG,WAAW,CAAC;IAC9B;;;;;OAKG;IACH,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,4FAA4F;IAC5F,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AA6BD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,gBAAgB,CAgDtE"}
package/dist/prescreen.js CHANGED
@@ -9,8 +9,9 @@
9
9
  * text-keyword approximation of the risk-floor/new-package/deploy-pipeline rules, rule-9 open
10
10
  * dependencies, and — when a plan:v1 artifact is already on the issue — the path-based risk
11
11
  * floor and the >8-files rule). Everything it does not catch (rule 2 beyond the `migration`
12
- * keyword, rule 7 hard rollback, rule 8 visual/browser review, rules 5/6 diff/file size without
13
- * a plan artifact, rule 10 confidence) falls through to the classifier's own bounded
12
+ * keyword, rule 5 file count without a plan artifact, rule 6 predicted diff (no diff signal at
13
+ * all: a plan:v1 artifact carries predicted files only), rule 7 hard rollback, rule 8
14
+ * visual/browser review, rule 10 confidence) falls through to the classifier's own bounded
14
15
  * mechanical-tier pass, which is the intended safety net — not a gap this module needs to close.
15
16
  *
16
17
  * v2 (#772): two outputs. `verdict: full` only for the EXCLUDING checks;
@@ -25,6 +26,10 @@
25
26
  * hard-block label and a rule-9 open dependency. Rule 8 (visual/browser) stays excluding, but
26
27
  * this module never detected it — the classifier's model pass does.
27
28
  *
29
+ * v5-in-behaviour (#784, contract still `prescreen:v4`): the text floor also masks negated mentions,
30
+ * unquoted file/path/workflow names and other word senses (`maskFloorFalsePositives`), so a
31
+ * false-positive class no longer spends a scarce review=full slot.
32
+ *
28
33
  * Pure and dependency-free (no `gh`, network, or fs), same discipline as `plan-artifact.ts` and
29
34
  * `runstate.ts` — unit-testable directly. Subprocess access (fetching the issue, resolving
30
35
  * dependency state, filtering by submitted set) lives in the command layer (`commands/classify.ts`).
@@ -33,6 +38,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
33
38
  exports.LEGACY_EXCLUDING_CHECKS = exports.EXCLUDING_CHECKS = exports.PRESCREEN_SCHEMA = exports.MAX_DEPENDENCY_REFS = exports.TEXT_FLOOR_PATTERNS = void 0;
34
39
  exports.stripQuotedSpans = stripQuotedSpans;
35
40
  exports.stripReferenceMaterial = stripReferenceMaterial;
41
+ exports.maskFloorFalsePositives = maskFloorFalsePositives;
36
42
  exports.floorScanText = floorScanText;
37
43
  exports.extractDependencyRefs = extractDependencyRefs;
38
44
  exports.prescreenIssue = prescreenIssue;
@@ -58,6 +64,37 @@ function wordMatch(text, keywords) {
58
64
  }
59
65
  return null;
60
66
  }
67
+ const RULE1_KEYWORDS = [
68
+ 'authentication',
69
+ 'authorization',
70
+ 'oauth',
71
+ 'sso',
72
+ 'payment',
73
+ 'payments',
74
+ 'billing',
75
+ 'invoice',
76
+ 'invoices',
77
+ 'checkout',
78
+ 'stripe',
79
+ 'migration',
80
+ 'migrations',
81
+ 'security',
82
+ 'crypto',
83
+ 'secret',
84
+ 'secrets',
85
+ 'credential',
86
+ 'credentials',
87
+ 'terraform',
88
+ ];
89
+ const RULE3_KEYWORDS = ['new package', 'new workspace', 'monorepo package'];
90
+ const RULE4_KEYWORDS = [
91
+ 'deploy',
92
+ 'deployment',
93
+ 'ci/cd',
94
+ 'cicd',
95
+ 'release pipeline',
96
+ 'rollback pipeline',
97
+ ];
61
98
  exports.TEXT_FLOOR_PATTERNS = [
62
99
  {
63
100
  // Deliberately NOT the bare words "auth"/"login"/"logout"/"schema"/"infra"/"infrastructure":
@@ -69,45 +106,24 @@ exports.TEXT_FLOOR_PATTERNS = [
69
106
  // RFC-0001 rule 1 "infra/terraform" area names. Also approximates rule 2 (schema/data
70
107
  // migration) via "migration"/"migrations" — a rough approximation, not full rule-2 coverage.
71
108
  name: 'rule1-risk-floor-area',
72
- match: (t) => wordMatch(t, [
73
- 'authentication',
74
- 'authorization',
75
- 'oauth',
76
- 'sso',
77
- 'payment',
78
- 'payments',
79
- 'billing',
80
- 'invoice',
81
- 'invoices',
82
- 'checkout',
83
- 'stripe',
84
- 'migration',
85
- 'migrations',
86
- 'security',
87
- 'crypto',
88
- 'secret',
89
- 'secrets',
90
- 'credential',
91
- 'credentials',
92
- 'terraform',
93
- ]),
109
+ match: (t) => wordMatch(t, RULE1_KEYWORDS),
94
110
  },
95
111
  {
96
112
  name: 'rule3-new-package-workspace',
97
- match: (t) => wordMatch(t, ['new package', 'new workspace', 'monorepo package']),
113
+ match: (t) => wordMatch(t, RULE3_KEYWORDS),
98
114
  },
99
115
  {
100
116
  name: 'rule4-deploy-pipeline',
101
- match: (t) => wordMatch(t, [
102
- 'deploy',
103
- 'deployment',
104
- 'ci/cd',
105
- 'cicd',
106
- 'release pipeline',
107
- 'rollback pipeline',
108
- ]),
117
+ match: (t) => wordMatch(t, RULE4_KEYWORDS),
109
118
  },
110
119
  ];
120
+ /** A whole string that is exactly one floor keyword. */
121
+ const FLOOR_KEYWORD_EXACT_RE = new RegExp(`^(?:${[...RULE1_KEYWORDS, ...RULE3_KEYWORDS, ...RULE4_KEYWORDS].map(phrase).join('|')})$`, 'i');
122
+ /** Every text-floor keyword, longest first so a phrase wins over a word it contains. */
123
+ const FLOOR_KEYWORD_RE = new RegExp(`\\b(?:${[...RULE1_KEYWORDS, ...RULE3_KEYWORDS, ...RULE4_KEYWORDS]
124
+ .sort((a, b) => b.length - a.length)
125
+ .map(phrase)
126
+ .join('|')})\\b`, 'gi');
111
127
  /**
112
128
  * Longest quoted span stripped before keyword matching — a bound so a body full
113
129
  * of unbalanced quotes cannot make one span swallow the whole text and blank
@@ -300,13 +316,149 @@ function stripReferenceMaterial(body) {
300
316
  }
301
317
  return out.join('\n');
302
318
  }
319
+ /**
320
+ * #784: text-floor false-positive classes a deterministic scan CAN separate from the change
321
+ * surface. Measured on 57 hand-labelled text-floor hits (#772): 24 false positives — 5 negated
322
+ * mentions, 4 unquoted file/spec/workflow names, 3 other word senses (the other 12 are incidental
323
+ * mentions, out of reach here). Each mask blanks (same length) only the offending span, never the
324
+ * whole issue: an issue that ALSO names a floor keyword outside any masked span still fires.
325
+ *
326
+ * Every mask is deliberately narrower than its FP class, because the cost is asymmetric: a lost
327
+ * true positive lets a risky change into a `review=light` slot. "Is missing / not required" is how
328
+ * security bugs are WRITTEN ("reachable without authentication", "no CSRF protection on
329
+ * checkout"), so a risk-area keyword is only ever masked by an explicit SCOPE disclaimer
330
+ * ("no billing changes", "we're not doing OAuth", "explicitly dropped"), never by a bare `no`/`without`.
331
+ * A file or directory whose name IS the keyword (`secrets.yml`, `db/migrations/`) names the surface
332
+ * and stays scanned.
333
+ */
334
+ /** Filename with a code/config/doc extension, unquoted: `legacy-billing.routes.ts`, `deploy.yml`. */
335
+ const FILE_TOKEN_RE = /[\w@~./-]{1,80}\.(?:tsx?|jsx?|mjs|cjs|json|ya?ml|md|mdx|sh|py|toml|sql|css|html|tf|go|rs)\b/gi;
336
+ /** Path with two or more `/` (`packages/frontend/src/x`); a single slash is not enough — `ci/cd` is a keyword. */
337
+ const PATH_TOKEN_RE = /[\w@~.-]{0,40}(?:\/[\w@~.-]{1,40}){2,}\/?/g;
338
+ /** Directory names that ARE a risk surface: a path through one keeps being scanned. */
339
+ const SURFACE_SEGMENTS = new Set([
340
+ 'migration',
341
+ 'migrations',
342
+ 'secret',
343
+ 'secrets',
344
+ 'credential',
345
+ 'credentials',
346
+ 'terraform',
347
+ ]);
348
+ /** A test/spec file is never the risk surface even when its stem names one (`billing-banners.spec.ts`). */
349
+ const TEST_FILE_RE = /\.(?:spec|test)\.[a-z]+$/i;
350
+ /** True when a masked-candidate file token still names a floor surface: a whole dot-segment of its basename is a keyword (`secrets.yml`, `Stripe.js`, `credentials.yml.enc`). */
351
+ function fileTokenNamesSurface(token) {
352
+ const base = token.slice(token.lastIndexOf('/') + 1);
353
+ if (TEST_FILE_RE.test(base))
354
+ return false;
355
+ return base.split('.').some((seg) => FLOOR_KEYWORD_EXACT_RE.test(seg));
356
+ }
357
+ function maskFileToken(token) {
358
+ return fileTokenNamesSurface(token) ? token : blank(token);
359
+ }
360
+ function maskPathToken(token) {
361
+ const segments = token.toLowerCase().split('/');
362
+ return segments.some((seg) => SURFACE_SEGMENTS.has(seg)) ? token : blank(token);
363
+ }
364
+ /** A comma list of 3+ short items. */
365
+ const NAME_LIST_RE = /[\w-]{1,40}(?:[ \t]*,[ \t]*[\w-]{1,40}){2,}/g;
366
+ const KEBAB_ITEM_RE = /^[a-z0-9]+(?:-[a-z0-9]+)+$/i;
367
+ /**
368
+ * A list of workflow/job/route names (`cost-audit, deploy, docker-image-build`): blanked only when
369
+ * at least three items, and at least half, are kebab-case names. A mixed list ("user-profile,
370
+ * admin-panel, billing, migrations") is a scope enumeration and stays scanned.
371
+ */
372
+ function maskNameList(list) {
373
+ const items = list.split(',');
374
+ const kebab = items.filter((i) => KEBAB_ITEM_RE.test(i.trim())).length;
375
+ return kebab >= 3 && kebab * 2 >= items.length ? blank(list) : list;
376
+ }
377
+ /**
378
+ * Other senses of a floor word: git's checkout, a repo checkout, financial security types, the
379
+ * `Authorization:` header line, `crypto.randomUUID()`. Narrow on purpose — "the Authorization
380
+ * header is logged in plaintext", "crypto.randomBytes for session tokens" and "every checkout
381
+ * charges the card twice" are real findings and stay scanned.
382
+ */
383
+ const WORD_SENSE_RES = [
384
+ /\b(?:git|gh(?:\s+pr)?|actions\/)\s*checkout\b/gi,
385
+ /\b(?:fresh|clean|shallow)\s+checkout\b/gi,
386
+ /\b(?:on|in|from)\s+(?:any|every|each)\s+(?:git\s+)?checkout\b/gi,
387
+ /\bsecurity\s+(?:types?|classes|prices?|symbols?|master)\b/gi,
388
+ /\bcrypto\.randomUUID\b/gi,
389
+ /\bAuthorization\s*:/gi,
390
+ /\bheaders?\s*:\s*Authorization\b/gi,
391
+ ];
392
+ const blank = (m) => ' '.repeat(m.length);
393
+ /**
394
+ * Keywords that are CHANGE TYPES an issue routinely disclaims ("no migration needed", "not a
395
+ * deploy change"): full negation rules apply. Every other floor keyword is a RISK AREA, masked
396
+ * only by an explicit scope disclaimer (see {@link SCOPE_DISCLAIMER_BEFORE_RES}, {@link NEGATED_AFTER_RE}).
397
+ */
398
+ const CHANGE_TYPE_KEYWORD_RE = new RegExp(`^(?:${[...RULE3_KEYWORDS, ...RULE4_KEYWORDS, 'migration', 'migrations'].map(phrase).join('|')})$`, 'i');
399
+ /**
400
+ * Negators in front of a CHANGE-TYPE keyword: `no`, `zero`, `without`, `not a/an/the/any` as
401
+ * standalone words (a hyphen never counts: "zero-downtime deployment", "non-breaking migration"
402
+ * are real work), up to two words between ("no data migration", "no schema, data migration").
403
+ * Bare `not` ("not working after deploy") and `no longer` do not qualify.
404
+ */
405
+ const NEGATED_BEFORE_RES = [
406
+ /(?:^|[^\w-])(?:no(?!\s+(?:longer|more)\b)|zero|without|not\s+(?:a|an|the|any))\s+(?:[\w-]+(?:,|\s+(?:or|and|nor))?\s+){0,2}$/i,
407
+ /,\s*not\s+$/i,
408
+ ];
409
+ /** A change-type negation only counts when the keyword ENDS its noun phrase: a list separator, `or`/`and`, `(`, or a scope noun. */
410
+ const NEGATOR_TARGET_END_RE = /^(?:\s*(?:[,.;!?()\n]|$)|\s+(?:or|and|nor)\b|\s+(?:needed|required|changes?|risks?|impacts?|work|concerns?|steps?|involved|implications?|effects?)\b)/i;
411
+ /**
412
+ * Explicit scope disclaimers before ANY floor keyword: "we're not doing OAuth", "this PR is not
413
+ * adding auth", and — for risk areas — a bare `no`/`without` only when a SCOPE noun follows the
414
+ * keyword ("no billing changes", "no schema, billing or auth changes", "no security impact").
415
+ */
416
+ const SCOPE_DISCLAIMER_BEFORE_RES = [
417
+ /(?:^|[^\w-])(?:we(?:'re|\s+are)?\s+not|we\s+won'?t|this\s+(?:issue|pr|change)\s+(?:does\s+not|doesn'?t|is\s+not))\s+(?:doing|building|adding|using|supporting|touching|changing|do|build|add|use|support|touch|change)\s+(?:[\w-]+\s+){0,2}$/i,
418
+ ];
419
+ const RISK_NEGATOR_BEFORE_RE = /(?:^|[^\w-])(?:no(?!\s+(?:longer|more)\b)|zero|without)\s+(?:[\w-]+(?:,|\s+(?:or|and|nor))?\s+){0,2}$/i;
420
+ const SCOPE_NOUN_AFTER_RE = /^(?:\s*(?:,|\s(?:or|and|nor))\s*[\w-]+){0,3}\s+(?:changes?|risks?|impacts?|work|concerns?|implications?|effects?|needed|required)\b/i;
421
+ /** A scope disclaimer AFTER the keyword within two words: "OAuth approach explicitly dropped", "billing is out of scope". */
422
+ const NEGATED_AFTER_RE = /^(?:\s+[\w/-]+){0,2}\s+(?:(?:is|are|was|were)\s+)?(?:explicitly\s+)?(?:dropped|descoped|out\s+of\s+scope|ruled\s+out)\b/i;
423
+ /** "not needed / not required" after a CHANGE-TYPE keyword only ("migration not required"); after a risk area it is a bug report. */
424
+ const CHANGE_TYPE_NOT_NEEDED_AFTER_RE = /^(?:\s+[\w/-]+){0,1}\s+(?:is\s+)?not\s+(?:needed|required|in\s+scope|applicable)\b/i;
425
+ /** Longest text scanned either side of a keyword when looking for a negation. */
426
+ const NEGATION_WINDOW = 60;
427
+ /** Blank every floor keyword occurrence that carries an explicit scope disclaimer. */
428
+ function maskNegatedMentions(text) {
429
+ return text.replace(FLOOR_KEYWORD_RE, (match, offset, whole) => {
430
+ const before = whole.slice(Math.max(0, offset - NEGATION_WINDOW), offset);
431
+ const clauseBefore = before.slice(Math.max(...['.', ';', '!', '?', '\n'].map((c) => before.lastIndexOf(c))) + 1);
432
+ const after = whole.slice(offset + match.length, offset + match.length + NEGATION_WINDOW);
433
+ const changeType = CHANGE_TYPE_KEYWORD_RE.test(match);
434
+ const negated = SCOPE_DISCLAIMER_BEFORE_RES.some((re) => re.test(clauseBefore)) ||
435
+ NEGATED_AFTER_RE.test(after) ||
436
+ (changeType &&
437
+ ((NEGATED_BEFORE_RES.some((re) => re.test(clauseBefore)) &&
438
+ NEGATOR_TARGET_END_RE.test(after)) ||
439
+ CHANGE_TYPE_NOT_NEEDED_AFTER_RE.test(after))) ||
440
+ (!changeType && RISK_NEGATOR_BEFORE_RE.test(clauseBefore) && SCOPE_NOUN_AFTER_RE.test(after));
441
+ return negated ? blank(match) : match;
442
+ });
443
+ }
444
+ /**
445
+ * #784: blank the false-positive spans of {@link stripQuotedSpans}' unquoted cousins — file/spec/
446
+ * workflow names, other word senses, and scope-disclaimed mentions — before the text floor runs.
447
+ */
448
+ function maskFloorFalsePositives(text) {
449
+ let out = text.replace(FILE_TOKEN_RE, maskFileToken).replace(PATH_TOKEN_RE, maskPathToken);
450
+ out = out.replace(NAME_LIST_RE, maskNameList);
451
+ for (const re of WORD_SENSE_RES)
452
+ out = out.replace(re, blank);
453
+ return maskNegatedMentions(out);
454
+ }
303
455
  /**
304
456
  * The exact text the text floor scans (#772): title + section/provenance-filtered body + label
305
457
  * names, with quoted spans blanked (#627). Exported so measurement tooling
306
458
  * (`scripts/prescreen-backlog-measure.mjs`) and tests see precisely what the rule sees.
307
459
  */
308
460
  function floorScanText(title, body, labels) {
309
- return stripQuotedSpans(`${title}\n${stripReferenceMaterial(body)}\n${labels.join(' ')}`);
461
+ return maskFloorFalsePositives(stripQuotedSpans(`${title}\n${stripReferenceMaterial(body)}\n${labels.join(' ')}`));
310
462
  }
311
463
  /** `Depends on #N` references resolved per issue; each costs a `gh` call downstream (command layer), same rationale as `MAX_ISSUE_SELECTION` (`issue-selection.ts`). */
312
464
  exports.MAX_DEPENDENCY_REFS = 32;
@@ -1 +1 @@
1
- {"version":3,"file":"prescreen.js","sourceRoot":"","sources":["../src/prescreen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prescreen.js","sourceRoot":"","sources":["../src/prescreen.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;;;AA6IH,4CAIC;AAgID,wDAyCC;AAiKD,0DAKC;AAOD,sCAIC;AAaD,sDAYC;AA0GD,wCAgDC;AA5pBD,2DAAyD;AACzD,mDAAgD;AAUhD,mGAAmG;AACnG,SAAS,YAAY,CAAC,CAAS;IAC7B,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,4HAA4H;AAC5H,SAAS,MAAM,CAAC,CAAS;IACvB,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,SAAS,SAAS,CAAC,IAAY,EAAE,QAA2B;IAC1D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,IAAI,MAAM,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,OAAO,CAAC;IAC7E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,cAAc,GAAG;IACrB,gBAAgB;IAChB,eAAe;IACf,OAAO;IACP,KAAK;IACL,SAAS;IACT,UAAU;IACV,SAAS;IACT,SAAS;IACT,UAAU;IACV,UAAU;IACV,QAAQ;IACR,WAAW;IACX,YAAY;IACZ,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,YAAY;IACZ,aAAa;IACb,WAAW;CACH,CAAC;AACX,MAAM,cAAc,GAAG,CAAC,aAAa,EAAE,eAAe,EAAE,kBAAkB,CAAU,CAAC;AACrF,MAAM,cAAc,GAAG;IACrB,QAAQ;IACR,YAAY;IACZ,OAAO;IACP,MAAM;IACN,kBAAkB;IAClB,mBAAmB;CACX,CAAC;AAEE,QAAA,mBAAmB,GAAgC;IAC9D;QACE,6FAA6F;QAC7F,4FAA4F;QAC5F,2FAA2F;QAC3F,iFAAiF;QACjF,2FAA2F;QAC3F,6FAA6F;QAC7F,sFAAsF;QACtF,6FAA6F;QAC7F,IAAI,EAAE,uBAAuB;QAC7B,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC;KAC3C;IACD;QACE,IAAI,EAAE,6BAA6B;QACnC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC;KAC3C;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC;KAC3C;CACF,CAAC;AAEF,wDAAwD;AACxD,MAAM,sBAAsB,GAAG,IAAI,MAAM,CACvC,OAAO,CAAC,GAAG,cAAc,EAAE,GAAG,cAAc,EAAE,GAAG,cAAc,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAC1F,GAAG,CACJ,CAAC;AAEF,wFAAwF;AACxF,MAAM,gBAAgB,GAAG,IAAI,MAAM,CACjC,SAAS,CAAC,GAAG,cAAc,EAAE,GAAG,cAAc,EAAE,GAAG,cAAc,CAAC;KAC/D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;KACnC,GAAG,CAAC,MAAM,CAAC;KACX,IAAI,CAAC,GAAG,CAAC,MAAM,EAClB,IAAI,CACL,CAAC;AAEF;;;;GAIG;AACH,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,OAAO,IAAI;SACR,OAAO,CAAC,IAAI,MAAM,CAAC,cAAc,eAAe,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC;SAChE,OAAO,CAAC,IAAI,MAAM,CAAC,gBAAgB,eAAe,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AACzE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,0BAA0B,GAC9B,+HAA+H,CAAC;AAElI;;;GAGG;AACH,MAAM,UAAU,GAAG,yCAAyC,CAAC;AAE7D,mGAAmG;AACnG,MAAM,QAAQ,GAAG,qBAAqB,CAAC;AAEvC,iHAAiH;AACjH,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;AAEjD,2GAA2G;AAC3G,SAAS,gBAAgB,CAAC,IAAY;IACpC,0FAA0F;IAC1F,gDAAgD;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;IACrD,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IACzB,OAAO,GAAG,GAAG,CAAC,IAAI,sBAAsB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAAE,GAAG,EAAE,CAAC;IAC3E,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,MAAM,kBAAkB,GAAG,6DAA6D,CAAC;AAEzF,gGAAgG;AAChG,SAAS,WAAW,CAAC,OAA0B;IAC7C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1E,CAAC;AAED;;;;GAIG;AACH,MAAM,oBAAoB,GAAG;IAC3B,UAAU;IACV,cAAc;IACd,WAAW;IACX,SAAS;IACT,OAAO;IACP,MAAM;IACN,UAAU;IACV,aAAa;CACL,CAAC;AACX,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAClC,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EACrF,GAAG,CACJ,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,gBAAgB,GAAG;IACvB,UAAU;IACV,cAAc;IACd,eAAe;IACf,mBAAmB;IACnB,kBAAkB;IAClB,aAAa;IACb,iBAAiB;IACjB,YAAY;IACZ,aAAa;IACb,aAAa;IACb,YAAY;IACZ,cAAc;IACd,cAAc;IACd,cAAc;IACd,YAAY;IACZ,cAAc;IACd,gBAAgB;IAChB,eAAe;IACf,aAAa;CACL,CAAC;AACX,MAAM,oBAAoB,GAAG,IAAI,MAAM,CACrC,oBAAoB,WAAW,CAAC,gBAAgB,CAAC,yCAAyC,EAC1F,IAAI,CACL,CAAC;AAEF;;;;GAIG;AACH,SAAS,cAAc,CAAC,IAAY;IAClC,MAAM,SAAS,GAAG,IAAI;SACnB,OAAO,CAAC,8BAA8B,EAAE,MAAM,CAAC;SAC/C,OAAO,CAAC,0BAA0B,EAAE,GAAG,CAAC;SACxC,OAAO,CAAC,oCAAoC,EAAE,GAAG,CAAC;SAClD,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,2CAA2C,EAAE,EAAE,CAAC,CAAC;IAC5D,OAAO,SAAS,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,sBAAsB,CAAC,IAAY;IACjD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,6EAA6E;IAC7E,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC,OAAO,CAAC;YACnB,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACzC,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAChC,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,GAAG,SAAS,EAAE,CAAC;gBAC5C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACb,SAAS,CAAC,wDAAwD;YACpE,CAAC;YACD,SAAS,GAAG,0BAA0B,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC7E,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,IAAI,CAAC;YACT,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACzC,SAAS;QACX,CAAC;QACD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACb,SAAS;QACX,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACZ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACf,SAAS;QACX,CAAC;QACD,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/D,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACb,SAAS;QACX,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AAEH,qGAAqG;AACrG,MAAM,aAAa,GACjB,+FAA+F,CAAC;AAElG,kHAAkH;AAClH,MAAM,aAAa,GAAG,4CAA4C,CAAC;AAEnE,uFAAuF;AACvF,MAAM,gBAAgB,GAAwB,IAAI,GAAG,CAAC;IACpD,WAAW;IACX,YAAY;IACZ,QAAQ;IACR,SAAS;IACT,YAAY;IACZ,aAAa;IACb,WAAW;CACZ,CAAC,CAAC;AAEH,2GAA2G;AAC3G,MAAM,YAAY,GAAG,2BAA2B,CAAC;AAEjD,iLAAiL;AACjL,SAAS,qBAAqB,CAAC,KAAa;IAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClF,CAAC;AAED,sCAAsC;AACtC,MAAM,YAAY,GAAG,8CAA8C,CAAC;AACpE,MAAM,aAAa,GAAG,6BAA6B,CAAC;AAEpD;;;;GAIG;AACH,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IACvE,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,MAAM,cAAc,GAAsB;IACxC,iDAAiD;IACjD,0CAA0C;IAC1C,iEAAiE;IACjE,6DAA6D;IAC7D,0BAA0B;IAC1B,uBAAuB;IACvB,oCAAoC;CACrC,CAAC;AAEF,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAElD;;;;GAIG;AACH,MAAM,sBAAsB,GAAG,IAAI,MAAM,CACvC,OAAO,CAAC,GAAG,cAAc,EAAE,GAAG,cAAc,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAClG,GAAG,CACJ,CAAC;AAEF;;;;;GAKG;AACH,MAAM,kBAAkB,GAAsB;IAC5C,+HAA+H;IAC/H,cAAc;CACf,CAAC;AAEF,oIAAoI;AACpI,MAAM,qBAAqB,GACzB,wJAAwJ,CAAC;AAE3J;;;;GAIG;AACH,MAAM,2BAA2B,GAAsB;IACrD,+OAA+O;CAChP,CAAC;AACF,MAAM,sBAAsB,GAC1B,wGAAwG,CAAC;AAC3G,MAAM,mBAAmB,GACvB,sIAAsI,CAAC;AAEzI,6HAA6H;AAC7H,MAAM,gBAAgB,GACpB,0HAA0H,CAAC;AAC7H,qIAAqI;AACrI,MAAM,+BAA+B,GACnC,qFAAqF,CAAC;AAExF,iFAAiF;AACjF,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B,sFAAsF;AACtF,SAAS,mBAAmB,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAc,EAAE,KAAa,EAAE,EAAE;QAC7E,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC,EAAE,MAAM,CAAC,CAAC;QAC1E,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAC9E,CAAC;QACF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC;QAC1F,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,OAAO,GACX,2BAA2B,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC/D,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;YAC5B,CAAC,UAAU;gBACT,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACtD,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAClC,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACjD,CAAC,CAAC,UAAU,IAAI,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAChG,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAgB,uBAAuB,CAAC,IAAY;IAClD,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IAC3F,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAC9C,KAAK,MAAM,EAAE,IAAI,cAAc;QAAE,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC9D,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,KAAa,EAAE,IAAY,EAAE,MAAyB;IAClF,OAAO,uBAAuB,CAC5B,gBAAgB,CAAC,GAAG,KAAK,KAAK,sBAAsB,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CACnF,CAAC;AACJ,CAAC;AAED,wKAAwK;AAC3J,QAAA,mBAAmB,GAAG,EAAE,CAAC;AAEtC,0GAA0G;AAC1G,MAAM,aAAa,GAAG,uBAAuB,CAAC;AAE9C;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,IAAY;IAChD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACjD,IAAI,IAAI,CAAC,MAAM,IAAI,2BAAmB;YAAE,MAAM;QAC9C,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAuBD;;;;;;;;;;GAUG;AACU,QAAA,gBAAgB,GAAG,cAAc,CAAC;AAE/C;;;;;GAKG;AACU,QAAA,gBAAgB,GAA0C,IAAI,GAAG,CAAC;IAC7E,kBAAkB;IAClB,iBAAiB;CAClB,CAAC,CAAC;AAEH;;;;GAIG;AACU,QAAA,uBAAuB,GAA0C,IAAI,GAAG,CAAC;IACpF,YAAY;IACZ,YAAY;CACb,CAAC,CAAC;AAmBH,2FAA2F;AAC3F,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B;;;;;GAKG;AACH,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEhC,0NAA0N;AAC1N,mIAAmI;AACnI,MAAM,gBAAgB,GAAG,+BAA+B,CAAC;AACzD,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC,mMAAmM;AACnM,SAAS,QAAQ,CAAC,KAAa;IAC7B,MAAM,OAAO,GAAG,KAAK;SAClB,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;SAC7B,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;SACxB,IAAI,EAAE,CAAC;IACV,OAAO,OAAO,CAAC,MAAM,GAAG,mBAAmB;QACzC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,GAAG;QAC7C,CAAC,CAAC,OAAO,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAC,KAAqB;IAClD,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,MAAM,cAAc,GAAG,IAAA,sCAAkB,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,kBAAkB;YACzB,OAAO,EAAE,6BAA6B,QAAQ,CAAC,cAAc,CAAC,IAAI;SACnE,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAClE,KAAK,MAAM,OAAO,IAAI,2BAAmB,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC;gBACX,KAAK,EAAE,YAAY;gBACnB,OAAO,EAAE,4BAA4B,OAAO,CAAC,IAAI,gBAAgB,GAAG,KAAK;aAC1E,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC;IAClD,KAAK,MAAM,GAAG,IAAI,IAAA,6BAAa,EAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC,EAAE,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE,mBAAmB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,OAAO,4BAA4B;SACpG,CAAC,CAAC;IACL,CAAC;IACD,IAAI,cAAc,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE,oBAAoB,cAAc,CAAC,MAAM,aAAa,mBAAmB,sBAAsB;SACzG,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC,EAAE,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,iBAAiB;YACxB,OAAO,EAAE,eAAe,GAAG,wEAAwE;SACpG,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,wBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW;QAClF,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;QAC7C,OAAO;KACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Workspace layout of a target repo, read from its own workspace config (#801) instead of guessed
3
+ * from path shapes. `batch compose` ranks backfill by "shares a workspace package"; the old path
4
+ * heuristic (`…/packages/<x>/…` → `packages/<x>`, else the first path segment) collapsed every path
5
+ * outside `packages/` on imboard's nested layout (`main/packages/…`, `main/scripts/…`) into a
6
+ * pseudo-package `main` that nearly every issue "shared".
7
+ *
8
+ * Pure and dependency-light (only `yaml`): no `gh`, network or fs. The command layer supplies a
9
+ * {@link WorkspaceFileReader} over `gh api repos/<r>/contents/…` (target repo not local) or the
10
+ * local checkout, so discovery is unit-testable with an in-memory reader.
11
+ */
12
+ /** One workspace root: where a package manager's workspace config lives and the globs it declares. */
13
+ export interface WorkspaceRoot {
14
+ /** Repo-relative directory holding the config; `''` when it is the repo root, `'main'` on imboard. */
15
+ prefix: string;
16
+ /** Config file the globs came from (`pnpm-workspace.yaml`, `package.json`, `lerna.json`). */
17
+ file: string;
18
+ /** Include globs, e.g. `packages/*`. */
19
+ globs: string[];
20
+ /** `!`-negated globs, without the `!`. */
21
+ excludes: string[];
22
+ }
23
+ export interface WorkspaceLayout {
24
+ roots: WorkspaceRoot[];
25
+ }
26
+ /** Config files probed in each candidate directory, in precedence order. */
27
+ declare const CONFIG_FILES: readonly ["pnpm-workspace.yaml", "package.json", "lerna.json"];
28
+ /** Read side of discovery; every method returns null when the thing does not exist or cannot be read. */
29
+ export interface WorkspaceFileReader {
30
+ /** Top-level directory names of the repo (no files). */
31
+ topLevelDirs(): string[] | null;
32
+ /** Text of a repo-relative file, or null when absent/unreadable. */
33
+ readFile(path: string): string | null;
34
+ }
35
+ /**
36
+ * Workspace patterns declared by one config file's text, or null when it declares none.
37
+ * `package.json` accepts both `workspaces: [...]` and the Yarn `workspaces: { packages: [...] }` shape.
38
+ */
39
+ export declare function parseWorkspaceConfig(file: (typeof CONFIG_FILES)[number], text: string): {
40
+ globs: string[];
41
+ excludes: string[];
42
+ } | null;
43
+ /**
44
+ * Find the workspace root(s) of a repo: the repo root when it declares workspaces, otherwise each
45
+ * top-level directory that does (imboard's `main/`). Null when no config is found anywhere — the
46
+ * caller then falls back to path heuristics and says so.
47
+ */
48
+ export declare function discoverWorkspaceLayout(reader: WorkspaceFileReader): WorkspaceLayout | null;
49
+ /**
50
+ * The declared workspace package a repo-relative path belongs to, or null when it is outside every
51
+ * declared workspace (root scripts, docs, CI — deliberately NOT a pseudo-package). A path may name
52
+ * the workspace root's directory (`main/packages/x/…`) or omit it (`packages/x/…`, how issue text
53
+ * usually spells it). With more than one root the package is prefixed with its root's directory.
54
+ */
55
+ export declare function packageOfPath(path: string, layout: WorkspaceLayout): string | null;
56
+ export {};
57
+ //# sourceMappingURL=workspace-layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-layout.d.ts","sourceRoot":"","sources":["../src/workspace-layout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,sGAAsG;AACtG,MAAM,WAAW,aAAa;IAC5B,sGAAsG;IACtG,MAAM,EAAE,MAAM,CAAC;IACf,6FAA6F;IAC7F,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB;AAED,4EAA4E;AAC5E,QAAA,MAAM,YAAY,gEAAiE,CAAC;AAuBpF,yGAAyG;AACzG,MAAM,WAAW,mBAAmB;IAClC,wDAAwD;IACxD,YAAY,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC;IAChC,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACvC;AAmBD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,EACnC,IAAI,EAAE,MAAM,GACX;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAehD;AAYD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,mBAAmB,GAAG,eAAe,GAAG,IAAI,CAS3F;AAsDD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAqBlF"}