@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.
- package/README.md +17 -6
- package/dist/batch-compose.d.ts +35 -7
- package/dist/batch-compose.d.ts.map +1 -1
- package/dist/batch-compose.js +82 -12
- package/dist/batch-compose.js.map +1 -1
- package/dist/batch-readiness.d.ts +51 -0
- package/dist/batch-readiness.d.ts.map +1 -0
- package/dist/batch-readiness.js +187 -0
- package/dist/batch-readiness.js.map +1 -0
- package/dist/commands/batch.d.ts +11 -0
- package/dist/commands/batch.d.ts.map +1 -1
- package/dist/commands/batch.js +110 -9
- package/dist/commands/batch.js.map +1 -1
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +3 -2
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/remove.d.ts.map +1 -1
- package/dist/commands/remove.js +3 -2
- package/dist/commands/remove.js.map +1 -1
- package/dist/prescreen.d.ts +12 -2
- package/dist/prescreen.d.ts.map +1 -1
- package/dist/prescreen.js +186 -34
- package/dist/prescreen.js.map +1 -1
- package/dist/workspace-layout.d.ts +57 -0
- package/dist/workspace-layout.d.ts.map +1 -0
- package/dist/workspace-layout.js +192 -0
- package/dist/workspace-layout.js.map +1 -0
- package/package.json +1 -1
package/dist/commands/remove.js
CHANGED
|
@@ -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
|
-
|
|
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
|
|
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":";;;;;AAKA,
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"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"}
|
package/dist/prescreen.d.ts
CHANGED
|
@@ -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
|
|
12
|
-
* a plan artifact
|
|
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
|
package/dist/prescreen.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prescreen.d.ts","sourceRoot":"","sources":["../src/prescreen.ts"],"names":[],"mappings":"AAAA
|
|
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
|
|
13
|
-
* a plan artifact
|
|
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,
|
|
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;
|
package/dist/prescreen.js.map
CHANGED
|
@@ -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":"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"}
|
|
@@ -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"}
|