@garygentry/system1-core 0.3.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/egress/scrub.d.ts.map +1 -1
- package/dist/egress/scrub.js +16 -0
- package/dist/egress/scrub.js.map +1 -1
- package/dist/index.d.ts +11 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/model/schema.d.ts +22 -0
- package/dist/model/schema.d.ts.map +1 -0
- package/dist/model/schema.js +26 -0
- package/dist/model/schema.js.map +1 -0
- package/dist/opportunities/backlog.d.ts +280 -0
- package/dist/opportunities/backlog.d.ts.map +1 -0
- package/dist/opportunities/backlog.js +393 -0
- package/dist/opportunities/backlog.js.map +1 -0
- package/dist/prepare.d.ts +8 -0
- package/dist/prepare.d.ts.map +1 -1
- package/dist/prepare.js +42 -6
- package/dist/prepare.js.map +1 -1
- package/dist/project/project.d.ts +36 -0
- package/dist/project/project.d.ts.map +1 -1
- package/dist/project/project.js +64 -18
- package/dist/project/project.js.map +1 -1
- package/dist/sources/filter.d.ts +19 -0
- package/dist/sources/filter.d.ts.map +1 -0
- package/dist/sources/filter.js +30 -0
- package/dist/sources/filter.js.map +1 -0
- package/dist/sources/read.d.ts +10 -0
- package/dist/sources/read.d.ts.map +1 -1
- package/dist/sources/read.js +7 -2
- package/dist/sources/read.js.map +1 -1
- package/dist/sources/types.d.ts +2 -2
- package/dist/sources/types.d.ts.map +1 -1
- package/dist/spec/lint.d.ts +35 -0
- package/dist/spec/lint.d.ts.map +1 -0
- package/dist/spec/lint.js +175 -0
- package/dist/spec/lint.js.map +1 -0
- package/dist/spec/spec.d.ts +2 -0
- package/dist/spec/spec.d.ts.map +1 -1
- package/dist/spec/spec.js +3 -1
- package/dist/spec/spec.js.map +1 -1
- package/dist/tools/ask.d.ts.map +1 -1
- package/dist/tools/ask.js +10 -13
- package/dist/tools/ask.js.map +1 -1
- package/dist/tools/context.d.ts +5 -0
- package/dist/tools/context.d.ts.map +1 -1
- package/dist/tools/context.js +24 -0
- package/dist/tools/context.js.map +1 -1
- package/dist/tools/doctor.d.ts +1 -1
- package/dist/tools/doctor.d.ts.map +1 -1
- package/dist/tools/doctor.js +33 -1
- package/dist/tools/doctor.js.map +1 -1
- package/dist/tools/many.d.ts.map +1 -1
- package/dist/tools/many.js +3 -0
- package/dist/tools/many.js.map +1 -1
- package/dist/tools/opportunities.d.ts +33 -0
- package/dist/tools/opportunities.d.ts.map +1 -0
- package/dist/tools/opportunities.js +74 -0
- package/dist/tools/opportunities.js.map +1 -0
- package/dist/tools/schemas.d.ts +155 -12
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +32 -25
- package/dist/tools/schemas.js.map +1 -1
- package/dist/tools/spec-check.d.ts +6 -0
- package/dist/tools/spec-check.d.ts.map +1 -1
- package/dist/tools/spec-check.js +3 -0
- package/dist/tools/spec-check.js.map +1 -1
- package/dist/tools/spec-lint.d.ts +31 -0
- package/dist/tools/spec-lint.d.ts.map +1 -0
- package/dist/tools/spec-lint.js +53 -0
- package/dist/tools/spec-lint.js.map +1 -0
- package/dist/transport/openrouter.d.ts +4 -1
- package/dist/transport/openrouter.d.ts.map +1 -1
- package/dist/transport/openrouter.js +5 -2
- package/dist/transport/openrouter.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/dist/project/project.js
CHANGED
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
import { DecisionsError } from "../errors.js";
|
|
2
2
|
import { confidenceOf } from "../model/answers.js";
|
|
3
3
|
const FILTER = /^\s*([A-Za-z_][\w-]*)((?:\.[\w-]+)*)\s*(>=|<=|!=|>|<|=|\s+in\s+)\s*(.+?)\s*$/;
|
|
4
|
-
|
|
5
|
-
export function parseFilter(text, questions) {
|
|
4
|
+
export function tokenizeFilter(text) {
|
|
6
5
|
const m = FILTER.exec(text);
|
|
7
|
-
if (!m?.[1] || !m[3] || m[4] === undefined)
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
const question = m[1];
|
|
6
|
+
if (!m?.[1] || !m[3] || m[4] === undefined)
|
|
7
|
+
return undefined;
|
|
11
8
|
const op = m[3].trim();
|
|
12
|
-
const field = m[2] ? m[2].slice(1) : defaultField(question, questions);
|
|
13
9
|
const raw = m[4];
|
|
14
10
|
const value = op === "in"
|
|
15
11
|
? raw
|
|
@@ -19,6 +15,29 @@ export function parseFilter(text, questions) {
|
|
|
19
15
|
: isNumeric(raw)
|
|
20
16
|
? Number(raw)
|
|
21
17
|
: raw;
|
|
18
|
+
return { name: m[1], path: m[2] ? m[2].slice(1) : "", op, value };
|
|
19
|
+
}
|
|
20
|
+
/** The `--sort` grammar: `<name>[.<path>][:asc|desc]`. */
|
|
21
|
+
export function tokenizeSort(text) {
|
|
22
|
+
const m = /^\s*([A-Za-z_][\w-]*)((?:\.[\w-]+)*)(?::(asc|desc))?\s*$/.exec(text);
|
|
23
|
+
if (!m?.[1])
|
|
24
|
+
return undefined;
|
|
25
|
+
return {
|
|
26
|
+
name: m[1],
|
|
27
|
+
path: m[2] ? m[2].slice(1) : "",
|
|
28
|
+
direction: m[3] ?? "desc",
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/** Parse `relevant>=0.7`, `kind=fix`, `kind in fix,feature`, `kind.probabilities.fix>=0.5`. */
|
|
32
|
+
export function parseFilter(text, questions) {
|
|
33
|
+
const t = tokenizeFilter(text);
|
|
34
|
+
if (!t) {
|
|
35
|
+
throw new DecisionsError("invalid-request", `Cannot parse --keep "${text}". Use <question>[.<field>]<op><value>, e.g. relevant>=0.7 or kind in fix,feature`);
|
|
36
|
+
}
|
|
37
|
+
const question = t.name;
|
|
38
|
+
const op = t.op;
|
|
39
|
+
const field = t.path || defaultField(question, questions);
|
|
40
|
+
const value = t.value;
|
|
22
41
|
const filter = { question, field, op, value, source: text };
|
|
23
42
|
if (questions)
|
|
24
43
|
assertKnown(question, questions, text);
|
|
@@ -29,14 +48,14 @@ export function parseFilter(text, questions) {
|
|
|
29
48
|
}
|
|
30
49
|
/** Parse `relevant`, `relevant.noul:asc`, `risk.score:desc`. Defaults to descending. */
|
|
31
50
|
export function parseSort(text, questions) {
|
|
32
|
-
const
|
|
33
|
-
if (!
|
|
51
|
+
const t = tokenizeSort(text);
|
|
52
|
+
if (!t) {
|
|
34
53
|
throw new DecisionsError("invalid-request", `Cannot parse --sort "${text}". Use <question>[.<field>][:asc|desc]`);
|
|
35
54
|
}
|
|
36
55
|
if (questions)
|
|
37
|
-
assertKnown(
|
|
38
|
-
const field =
|
|
39
|
-
return { question:
|
|
56
|
+
assertKnown(t.name, questions, text);
|
|
57
|
+
const field = t.path || sortField(t.name, questions);
|
|
58
|
+
return { question: t.name, field, direction: t.direction };
|
|
40
59
|
}
|
|
41
60
|
export function matches(answers, filter) {
|
|
42
61
|
const actual = read(answers[filter.question], filter.field);
|
|
@@ -61,6 +80,34 @@ export function matches(answers, filter) {
|
|
|
61
80
|
}
|
|
62
81
|
}
|
|
63
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* One row's verdict under `keep` (all must match) and `keepAny` (at least one
|
|
85
|
+
* must match).
|
|
86
|
+
*
|
|
87
|
+
* A flat answer on a `keep` or `sort` question makes the row undecided, as
|
|
88
|
+
* before. A flat `keepAny` answer only does when it could change the outcome:
|
|
89
|
+
* if a decided `keepAny` filter already matches, the row is kept; if none
|
|
90
|
+
* matches and none is flat, it is dropped. With no filters and no sort, every
|
|
91
|
+
* question counts.
|
|
92
|
+
*/
|
|
93
|
+
export function verdictOf(answers, flat, keep, keepAny = [], sortQuestion) {
|
|
94
|
+
const acted = [...keep.map((f) => f.question), ...(sortQuestion ? [sortQuestion] : [])];
|
|
95
|
+
const all = acted.length === 0 && keepAny.length === 0;
|
|
96
|
+
const blocking = flat.filter((q) => all || acted.includes(q));
|
|
97
|
+
if (blocking.length > 0)
|
|
98
|
+
return { verdict: "undecided", questions: [...blocking] };
|
|
99
|
+
if (!keep.every((f) => matches(answers, f)))
|
|
100
|
+
return { verdict: "dropped", questions: [] };
|
|
101
|
+
if (keepAny.length === 0)
|
|
102
|
+
return { verdict: "kept", questions: [] };
|
|
103
|
+
const decided = keepAny.filter((f) => !flat.includes(f.question));
|
|
104
|
+
if (decided.some((f) => matches(answers, f)))
|
|
105
|
+
return { verdict: "kept", questions: [] };
|
|
106
|
+
const open = [...new Set(keepAny.filter((f) => flat.includes(f.question)).map((f) => f.question))];
|
|
107
|
+
return open.length > 0
|
|
108
|
+
? { verdict: "undecided", questions: open }
|
|
109
|
+
: { verdict: "dropped", questions: [] };
|
|
110
|
+
}
|
|
64
111
|
/**
|
|
65
112
|
* Split rows into kept / undecided / dropped.
|
|
66
113
|
*
|
|
@@ -75,16 +122,15 @@ export function matches(answers, filter) {
|
|
|
75
122
|
*/
|
|
76
123
|
export function project(input) {
|
|
77
124
|
const keep = input.keep ?? [];
|
|
78
|
-
const
|
|
79
|
-
const relevant = acted.length > 0 ? new Set(acted) : undefined;
|
|
125
|
+
const keepAny = input.keepAny ?? [];
|
|
80
126
|
const kept = [];
|
|
81
127
|
const undecided = [];
|
|
82
128
|
let dropped = 0;
|
|
83
129
|
for (const row of input.rows) {
|
|
84
|
-
const
|
|
85
|
-
if (
|
|
86
|
-
undecided.push({ row, questions:
|
|
87
|
-
else if (
|
|
130
|
+
const v = verdictOf(row.answers, input.undecidedOf(row), keep, keepAny, input.sort?.question);
|
|
131
|
+
if (v.verdict === "undecided")
|
|
132
|
+
undecided.push({ row, questions: v.questions });
|
|
133
|
+
else if (v.verdict === "kept")
|
|
88
134
|
kept.push(row);
|
|
89
135
|
else
|
|
90
136
|
dropped += 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/project/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AA2BlD,MAAM,MAAM,GAAG,8EAA8E,CAAA;
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/project/project.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Skipped } from "./types.js";
|
|
2
|
+
export interface FilterResult<T> {
|
|
3
|
+
items: T[];
|
|
4
|
+
filtered: Skipped[];
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Drop what the caller asked to leave out (`--exclude <glob>`), by path.
|
|
8
|
+
*
|
|
9
|
+
* Unlike egress excludes this is a per-call choice, not a safety rule, so it is
|
|
10
|
+
* reported as `filtered` rather than `excluded`: withheld secrets stay easy to
|
|
11
|
+
* spot in the skipped summary. Egress excludes run first, so a path both would
|
|
12
|
+
* drop is always reported as `excluded`. Items with no path (text, stdin) are never
|
|
13
|
+
* filtered. Patterns are repo-relative, like `--glob`.
|
|
14
|
+
*/
|
|
15
|
+
export declare function applyFilter<T extends {
|
|
16
|
+
path?: string;
|
|
17
|
+
realPath?: string;
|
|
18
|
+
}>(items: readonly T[], patterns?: readonly string[]): FilterResult<T>;
|
|
19
|
+
//# sourceMappingURL=filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/sources/filter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzC,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,KAAK,EAAE,CAAC,EAAE,CAAA;IACV,QAAQ,EAAE,OAAO,EAAE,CAAA;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EACxE,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,QAAQ,GAAE,SAAS,MAAM,EAAO,GAC/B,YAAY,CAAC,CAAC,CAAC,CAiBjB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import picomatch from "picomatch";
|
|
2
|
+
/**
|
|
3
|
+
* Drop what the caller asked to leave out (`--exclude <glob>`), by path.
|
|
4
|
+
*
|
|
5
|
+
* Unlike egress excludes this is a per-call choice, not a safety rule, so it is
|
|
6
|
+
* reported as `filtered` rather than `excluded`: withheld secrets stay easy to
|
|
7
|
+
* spot in the skipped summary. Egress excludes run first, so a path both would
|
|
8
|
+
* drop is always reported as `excluded`. Items with no path (text, stdin) are never
|
|
9
|
+
* filtered. Patterns are repo-relative, like `--glob`.
|
|
10
|
+
*/
|
|
11
|
+
export function applyFilter(items, patterns = []) {
|
|
12
|
+
if (patterns.length === 0)
|
|
13
|
+
return { items: [...items], filtered: [] };
|
|
14
|
+
const matchers = patterns.map((p) => ({ p, test: picomatch(p, { dot: true }) }));
|
|
15
|
+
const kept = [];
|
|
16
|
+
const filtered = new Map();
|
|
17
|
+
for (const item of items) {
|
|
18
|
+
// Both spellings, as egress excludes do: a symlink's own name and its target.
|
|
19
|
+
const paths = [item.path, item.realPath].filter((p) => p !== undefined);
|
|
20
|
+
const hit = item.path === undefined ? undefined : matchers.find((m) => paths.some((p) => m.test(p)));
|
|
21
|
+
if (hit && item.path !== undefined) {
|
|
22
|
+
filtered.set(item.path, { path: item.path, reason: "filtered", detail: hit.p });
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
kept.push(item);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return { items: kept, filtered: [...filtered.values()] };
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/sources/filter.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAA;AAQjC;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CACzB,KAAmB,EACnB,QAAQ,GAAsB,EAAE;IAEhC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;IACrE,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAChF,MAAM,IAAI,GAAQ,EAAE,CAAA;IACpB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAA;IAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,8EAA8E;QAC9E,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAA;QACpF,MAAM,GAAG,GACP,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1F,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACnC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAA;QACjF,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,CAAA;AAC1D,CAAC"}
|
package/dist/sources/read.d.ts
CHANGED
|
@@ -4,6 +4,16 @@ export interface ReadOptions {
|
|
|
4
4
|
cwd: string;
|
|
5
5
|
/** Files larger than this are skipped as `too-large` without being read. */
|
|
6
6
|
maxFileBytes?: number;
|
|
7
|
+
/**
|
|
8
|
+
* Leave out paths matching these (`--exclude`). Glob matches are dropped
|
|
9
|
+
* before they are read; the caller filters every other source after.
|
|
10
|
+
*/
|
|
11
|
+
filter?: readonly string[];
|
|
12
|
+
/**
|
|
13
|
+
* Egress exclude patterns beyond the defaults. The glob prefilter leaves such
|
|
14
|
+
* paths to `prepare()`, so they are reported as `excluded`, never `filtered`.
|
|
15
|
+
*/
|
|
16
|
+
withhold?: readonly string[];
|
|
7
17
|
/**
|
|
8
18
|
* Allow content from outside `cwd`. Off by default: consent is given per
|
|
9
19
|
* repo, so a path (or a symlink) that resolves elsewhere is withheld.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/sources/read.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/sources/read.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE1E,MAAM,WAAW,WAAW;IAC1B,qEAAqE;IACrE,GAAG,EAAE,MAAM,CAAA;IACX,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC5B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAsCD,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,QAAQ,EAAE,CAAA;IACrB,OAAO,EAAE,OAAO,EAAE,CAAA;CACnB;AAQD,wBAAsB,WAAW,CAC/B,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CASrB;AAmBD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAE,CAY7E;AA8ED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CA0B1E;AAyED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,EAAE,CAAA;CAAE,CAsB3F;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAyB/D"}
|
package/dist/sources/read.js
CHANGED
|
@@ -2,7 +2,9 @@ import { execFileSync } from "node:child_process";
|
|
|
2
2
|
import { existsSync, readFileSync, realpathSync, statSync } from "node:fs";
|
|
3
3
|
import { isAbsolute, relative, resolve } from "node:path";
|
|
4
4
|
import { glob } from "tinyglobby";
|
|
5
|
+
import { isExcluded } from "../egress/exclude.js";
|
|
5
6
|
import { DecisionsError } from "../errors.js";
|
|
7
|
+
import { applyFilter } from "./filter.js";
|
|
6
8
|
function resolvePath(cwd, path) {
|
|
7
9
|
const absolute = resolve(cwd, path);
|
|
8
10
|
let realAbsolute = absolute;
|
|
@@ -127,12 +129,15 @@ async function readGlob(patterns, options) {
|
|
|
127
129
|
});
|
|
128
130
|
matches.sort();
|
|
129
131
|
const ignored = new Set(gitIgnored(options.cwd, matches));
|
|
130
|
-
const
|
|
131
|
-
const
|
|
132
|
+
const candidates = matches.filter((m) => !ignored.has(m));
|
|
133
|
+
const withheld = candidates.filter((m) => isExcluded(m, options.withhold));
|
|
134
|
+
const unfiltered = applyFilter(candidates.filter((m) => !withheld.includes(m)).map((path) => ({ path })), options.filter);
|
|
135
|
+
const result = readFiles([...withheld, ...unfiltered.items.map((m) => m.path)].sort(), options);
|
|
132
136
|
return {
|
|
133
137
|
documents: result.documents,
|
|
134
138
|
skipped: [
|
|
135
139
|
...[...ignored].map((path) => ({ path, reason: "gitignored" })),
|
|
140
|
+
...unfiltered.filtered,
|
|
136
141
|
...result.skipped,
|
|
137
142
|
],
|
|
138
143
|
};
|
package/dist/sources/read.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/sources/read.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/sources/read.ts"],"names":[],"mappings":"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"}
|
package/dist/sources/types.d.ts
CHANGED
|
@@ -62,8 +62,8 @@ export interface Document {
|
|
|
62
62
|
}
|
|
63
63
|
export interface Skipped {
|
|
64
64
|
path: string;
|
|
65
|
-
reason: "binary" | "too-large" | "gitignored" | "excluded" | "outside-repo";
|
|
66
|
-
/** For `excluded`: the pattern that matched. */
|
|
65
|
+
reason: "binary" | "too-large" | "gitignored" | "excluded" | "outside-repo" | "filtered";
|
|
66
|
+
/** For `excluded` and `filtered`: the pattern that matched. */
|
|
67
67
|
detail?: string;
|
|
68
68
|
}
|
|
69
69
|
/** One thing to send: a state, labelled with where it came from. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sources/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAE9C;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE;AAC7C,kDAAkD;GAChD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AACjC;;;GAGG;GACD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAA;AAExE,mDAAmD;AACnD,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,kDAAkD;AAClD,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAA;IACtC,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,mCAAmC;IACnC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,GAAG,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sources/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAE9C;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE;AAC7C,kDAAkD;GAChD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AACjC;;;GAGG;GACD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAA;AAExE,mDAAmD;AACnD,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,kDAAkD;AAClD,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAA;IACtC,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,mCAAmC;IACnC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,GAAG,cAAc,GAAG,UAAU,CAAA;IACxF,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,oEAAoE;AACpE,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,KAAK,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,yDAAyD;IACzD,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { QuestionSet } from "../model/types.js";
|
|
2
|
+
import type { Spec } from "./spec.js";
|
|
3
|
+
/**
|
|
4
|
+
* An offline lint for question sets: no key, no consent, nothing sent. It
|
|
5
|
+
* catches the failure modes of `references/question-craft.md` that can be seen
|
|
6
|
+
* in the text of a spec. Two catalogue entries can't be judged offline and are
|
|
7
|
+
* left to the `design` skill: criteria a literal reader takes the wrong way,
|
|
8
|
+
* and questions written for different states mixed into one set.
|
|
9
|
+
*
|
|
10
|
+
* Almost every check is a heuristic, so it warns: a competent question can
|
|
11
|
+
* trip one. Only checks that are mechanically certain are errors.
|
|
12
|
+
*/
|
|
13
|
+
export declare const LINT_CHECKS: readonly ["no-way-out", "abstract-levels", "unsupported-task", "merged-question", "unjustified-threshold", "unknown-threshold"];
|
|
14
|
+
export type LintCheck = (typeof LINT_CHECKS)[number];
|
|
15
|
+
export type LintSeverity = "error" | "warning";
|
|
16
|
+
export declare const LINT_SEVERITY: Record<LintCheck, LintSeverity>;
|
|
17
|
+
export interface LintFinding {
|
|
18
|
+
check: LintCheck;
|
|
19
|
+
severity: LintSeverity;
|
|
20
|
+
/** The question it is about, when it is about one. */
|
|
21
|
+
question?: string;
|
|
22
|
+
message: string;
|
|
23
|
+
/** The repair, in question-craft terms. */
|
|
24
|
+
fix: string;
|
|
25
|
+
}
|
|
26
|
+
/** Lint one question set. `lintSpec` adds the checks that need a policy. */
|
|
27
|
+
export declare function lintQuestions(questions: QuestionSet): LintFinding[];
|
|
28
|
+
/**
|
|
29
|
+
* Lint one statement on its own: the unsupported-task check only. For text
|
|
30
|
+
* that becomes a question without being written as one, such as an acceptance
|
|
31
|
+
* criterion read from a task file.
|
|
32
|
+
*/
|
|
33
|
+
export declare function lintStatement(text: string, question?: string): LintFinding[];
|
|
34
|
+
export declare function lintSpec(spec: Pick<Spec, "questions" | "keep" | "keepAny" | "policy">): LintFinding[];
|
|
35
|
+
//# sourceMappingURL=lint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/spec/lint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE9D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAErC;;;;;;;;;GASG;AACH,eAAO,MAAM,WAAW,YACtB,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,CACX,CAAA;AAEV,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;AACpD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,SAAS,CAAA;AAE9C,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,YAAY,CAOzD,CAAA;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,SAAS,CAAA;IAChB,QAAQ,EAAE,YAAY,CAAA;IACtB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAA;CACZ;AAqCD,4EAA4E;AAC5E,wBAAgB,aAAa,CAAC,SAAS,EAAE,WAAW,GAAG,WAAW,EAAE,CAMnE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,CAE5E;AAED,wBAAgB,QAAQ,CACtB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC,GAC5D,WAAW,EAAE,CAoCf"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { parseFilter } from "../project/project.js";
|
|
2
|
+
/**
|
|
3
|
+
* An offline lint for question sets: no key, no consent, nothing sent. It
|
|
4
|
+
* catches the failure modes of `references/question-craft.md` that can be seen
|
|
5
|
+
* in the text of a spec. Two catalogue entries can't be judged offline and are
|
|
6
|
+
* left to the `design` skill: criteria a literal reader takes the wrong way,
|
|
7
|
+
* and questions written for different states mixed into one set.
|
|
8
|
+
*
|
|
9
|
+
* Almost every check is a heuristic, so it warns: a competent question can
|
|
10
|
+
* trip one. Only checks that are mechanically certain are errors.
|
|
11
|
+
*/
|
|
12
|
+
export const LINT_CHECKS = [
|
|
13
|
+
"no-way-out",
|
|
14
|
+
"abstract-levels",
|
|
15
|
+
"unsupported-task",
|
|
16
|
+
"merged-question",
|
|
17
|
+
"unjustified-threshold",
|
|
18
|
+
"unknown-threshold",
|
|
19
|
+
];
|
|
20
|
+
export const LINT_SEVERITY = {
|
|
21
|
+
"no-way-out": "warning",
|
|
22
|
+
"abstract-levels": "warning",
|
|
23
|
+
"unsupported-task": "warning",
|
|
24
|
+
"merged-question": "warning",
|
|
25
|
+
"unjustified-threshold": "warning",
|
|
26
|
+
"unknown-threshold": "error",
|
|
27
|
+
};
|
|
28
|
+
/** An option key token that lets the model say "none of these": `none`, `other_change`, `n/a`. */
|
|
29
|
+
const WAY_OUT_KEY = /^(none|other|others|unclear|unknown|neither|na|nomatch|unsure|mixed|else|nothing|irrelevant|unrelated)$/i;
|
|
30
|
+
/** …or a description that does. */
|
|
31
|
+
const WAY_OUT_TEXT = /\b(none of|any other|anything else|something else|neither|unclear|not (?:clear|sure|applicable|enough)|no match|does(?:n't| not) (?:fit|apply)|other than (?:these|the above))\b/i;
|
|
32
|
+
/**
|
|
33
|
+
* Things a decision model can't do (question-craft rule 8), by kind. Each is a
|
|
34
|
+
* phrase that asks for the thing, not a word that names it: "validates the date
|
|
35
|
+
* format" is a fine question, "is older than 30 days" is arithmetic on dates.
|
|
36
|
+
*/
|
|
37
|
+
const UNSUPPORTED = [
|
|
38
|
+
{
|
|
39
|
+
kind: "counting or arithmetic",
|
|
40
|
+
pattern: /(^\s*count\b|\bhow many\b|\bthe number of\b|\bcount (?:all|every|each|how|the number)\b|\b(?:more|fewer|less|greater|longer|shorter|larger|smaller|higher|lower) than \d|\b(?:over|under|above|below|at least|at most|exactly|up to) \d|\b\d+(?:\.\d+)?\s?(?:%|percent)|\bsum of\b|\btotal of\b|\baverage of\b|\bon average\b)/i,
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
kind: "dates",
|
|
44
|
+
pattern: /(\b(?:older|newer|younger) than \d+ (?:days?|weeks?|months?|years?)\b|\b\d+ (?:days?|weeks?|months?|years?) (?:ago|old)\b|\b(?:within|in) the (?:last|past|next) \d+ (?:days?|weeks?|months?|years?)\b|\b(?:yesterday|tomorrow)\b|\b(?:this|last|next) (?:week|month|quarter|year)\b|\b(?:before|after|since|until|by) (?:monday|tuesday|wednesday|thursday|friday|saturday|sunday|january|february|march|april|may|june|july|august|september|october|november|december|(?:19|20)\d\d)\b|\b(?:has|is|was) (?:expired|overdue)\b)/i,
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
kind: "images",
|
|
48
|
+
pattern: /(\bscreenshot|\bphoto(?:graph)?s?\b|\b(?:the|this|an?) (?:image|picture) (?:shows?|contains?|depicts?)\b|\b(?:visible|shown|appears?|seen) in (?:the|this|an?) (?:image|picture)\b)/i,
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
kind: "an exact fact to read or run, not judge",
|
|
52
|
+
pattern: /(\b(?:all|every|the) tests? (?:pass(?:es|ed)?|fail(?:s|ed)?|succeed(?:s|ed)?)\b|\btests? (?:pass(?:es|ed)?|are (?:passing|green))\b|\b(?:the )?(?:build|ci|pipeline) (?:passes|passed|succeeds|succeeded|is green)\b|\b(?:it )?compiles without errors\b)/i,
|
|
53
|
+
},
|
|
54
|
+
];
|
|
55
|
+
/** Lint one question set. `lintSpec` adds the checks that need a policy. */
|
|
56
|
+
export function lintQuestions(questions) {
|
|
57
|
+
const out = [];
|
|
58
|
+
for (const [name, q] of Object.entries(questions)) {
|
|
59
|
+
out.push(...lintQuestion(name, q));
|
|
60
|
+
}
|
|
61
|
+
return out;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Lint one statement on its own: the unsupported-task check only. For text
|
|
65
|
+
* that becomes a question without being written as one, such as an acceptance
|
|
66
|
+
* criterion read from a task file.
|
|
67
|
+
*/
|
|
68
|
+
export function lintStatement(text, question) {
|
|
69
|
+
return unsupported(text, question);
|
|
70
|
+
}
|
|
71
|
+
export function lintSpec(spec) {
|
|
72
|
+
const out = lintQuestions(spec.questions);
|
|
73
|
+
const thresholds = spec.policy?.thresholds ?? {};
|
|
74
|
+
for (const name of Object.keys(thresholds)) {
|
|
75
|
+
if (!(name in spec.questions)) {
|
|
76
|
+
out.push(finding("unknown-threshold", `policy.thresholds.${name} names no question in this spec`, `Rename it to one of: ${Object.keys(spec.questions).join(", ")}, or remove it.`));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const justified = new Set(Object.keys(thresholds));
|
|
80
|
+
const reported = new Set();
|
|
81
|
+
const filters = [
|
|
82
|
+
...(spec.keep ?? []).map((text) => ({ text, list: "keep" })),
|
|
83
|
+
...(spec.keepAny ?? []).map((text) => ({ text, list: "keepAny" })),
|
|
84
|
+
];
|
|
85
|
+
for (const { text, list } of filters) {
|
|
86
|
+
const { question, op } = parseFilter(text, spec.questions);
|
|
87
|
+
// Only a numeric cut is a threshold; `kind=fix` has no value to justify.
|
|
88
|
+
if (!NUMERIC.has(op))
|
|
89
|
+
continue;
|
|
90
|
+
if (justified.has(question) || reported.has(question))
|
|
91
|
+
continue;
|
|
92
|
+
reported.add(question);
|
|
93
|
+
out.push(finding("unjustified-threshold", `${list} "${text}" has no policy.thresholds.${question} saying why`, `Add policy.thresholds.${question}: {value, why}, with the cost of a wrong keep and a wrong drop (see thresholds.md).`, question));
|
|
94
|
+
}
|
|
95
|
+
return out;
|
|
96
|
+
}
|
|
97
|
+
const NUMERIC = new Set([">=", ">", "<=", "<"]);
|
|
98
|
+
function lintQuestion(name, q) {
|
|
99
|
+
const out = [];
|
|
100
|
+
const texts = [q.instructions, ...criteriaTexts(q)];
|
|
101
|
+
if (q.type === "choice") {
|
|
102
|
+
const options = Object.entries(q.criteria);
|
|
103
|
+
const wayOut = ([key, desc]) => key.split(/[_\-\s/]+/).some((t) => WAY_OUT_KEY.test(t)) || WAY_OUT_TEXT.test(desc);
|
|
104
|
+
if (!options.some(wayOut)) {
|
|
105
|
+
out.push(finding("no-way-out", `choice "${name}" has no none/other/unclear option`, "Add an option such as `none: None of these apply`, so text that fits nothing isn't forced onto an option.", name));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (q.type === "score" && q.criteria.every((level) => words(level) <= 2)) {
|
|
109
|
+
out.push(finding("abstract-levels", `score "${name}" has one- or two-word levels (${q.criteria.join(" | ")})`, "Describe each level as a concrete situation someone could spot in the text, lowest first.", name));
|
|
110
|
+
}
|
|
111
|
+
// All of a question's text at once: one finding per kind, not per phrase.
|
|
112
|
+
// Quoted text in criteria is an example of what to spot ("stop after 20
|
|
113
|
+
// tries"), not the ask; the instructions are linted as written.
|
|
114
|
+
out.push(...unsupported([q.instructions, ...criteriaTexts(q).map(unquoted)].join("\n"), name));
|
|
115
|
+
if (merged(q.instructions)) {
|
|
116
|
+
out.push(finding("merged-question", `"${name}" looks like two questions in one`, "Split it into one question per idea and combine the answers with --keep.", name));
|
|
117
|
+
}
|
|
118
|
+
return dedupe(out);
|
|
119
|
+
}
|
|
120
|
+
function unsupported(text, question) {
|
|
121
|
+
return UNSUPPORTED.filter(({ pattern }) => pattern.test(text)).map(({ kind, pattern }) => finding("unsupported-task", `${question ? `"${question}" ` : ""}asks for ${kind} ("${pattern.exec(text)?.[0]}")`, "Do that part in code (grep, a date check, a count) and ask the model only about what's left.", question));
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Two claims in one instruction: two statements or questions, an "and/or", or
|
|
125
|
+
* "either … or". A plain "and" is too common in single ideas to flag, and
|
|
126
|
+
* framing sentences ("Consider only the added lines.", "Answer true if …")
|
|
127
|
+
* are context, not a second claim.
|
|
128
|
+
*/
|
|
129
|
+
function merged(instructions) {
|
|
130
|
+
const claims = instructions
|
|
131
|
+
.replace(/\bhttps?:\/\/\S+/gi, "URL")
|
|
132
|
+
.replace(/\b(e\.g|i\.e|etc|vs|cf|mr|mrs|ms|dr|st|no|approx)\./gi, "$1")
|
|
133
|
+
.split(/[.?!](?:\s+|$)/)
|
|
134
|
+
.map((s) => s.trim())
|
|
135
|
+
.filter((s) => words(s) >= 3 && !FRAMING.test(s));
|
|
136
|
+
return (claims.length > 1 ||
|
|
137
|
+
/\band\/or\b/i.test(instructions) ||
|
|
138
|
+
/\beither\b.+\bor\b/i.test(instructions));
|
|
139
|
+
}
|
|
140
|
+
/** Sentences that frame the question rather than make a second claim. */
|
|
141
|
+
const FRAMING = /^(consider|only|ignore|answer|note|treat|assume|look|focus|read|judge|use|do not|don't|exclude|include|given|for example|e\.g|if|when|here|this question|count only|disregard)\b/i;
|
|
142
|
+
function unquoted(text) {
|
|
143
|
+
return text.replace(/"[^"\n]*"|“[^”\n]*”/g, '""');
|
|
144
|
+
}
|
|
145
|
+
function criteriaTexts(q) {
|
|
146
|
+
if (q.type === "noul")
|
|
147
|
+
return q.criteria ? Object.values(q.criteria) : [];
|
|
148
|
+
if (q.type === "choice")
|
|
149
|
+
return Object.values(q.criteria);
|
|
150
|
+
return q.criteria;
|
|
151
|
+
}
|
|
152
|
+
function words(text) {
|
|
153
|
+
return text.trim().split(/\s+/).filter(Boolean).length;
|
|
154
|
+
}
|
|
155
|
+
function finding(check, message, fix, question) {
|
|
156
|
+
return {
|
|
157
|
+
check,
|
|
158
|
+
severity: LINT_SEVERITY[check],
|
|
159
|
+
...(question ? { question } : {}),
|
|
160
|
+
message,
|
|
161
|
+
fix,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
/** One finding per check, question and message. */
|
|
165
|
+
function dedupe(findings) {
|
|
166
|
+
const seen = new Set();
|
|
167
|
+
return findings.filter((f) => {
|
|
168
|
+
const key = `${f.check}\0${f.question ?? ""}\0${f.message}`;
|
|
169
|
+
if (seen.has(key))
|
|
170
|
+
return false;
|
|
171
|
+
seen.add(key);
|
|
172
|
+
return true;
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=lint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/spec/lint.ts"],"names":[],"mappings":"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"}
|
package/dist/spec/spec.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ export declare const SpecSchema: Type.TObject<{
|
|
|
7
7
|
description: Type.TString;
|
|
8
8
|
questions: Type.TRecord<"^.*$", Type.TUnknown>;
|
|
9
9
|
keep: Type.TOptional<Type.TArray<Type.TString>>;
|
|
10
|
+
/** Kept when any of these matches, as well as every `keep`. */
|
|
11
|
+
keepAny: Type.TOptional<Type.TArray<Type.TString>>;
|
|
10
12
|
sort: Type.TOptional<Type.TString>;
|
|
11
13
|
policy: Type.TOptional<Type.TObject<{
|
|
12
14
|
thresholds: Type.TOptional<Type.TRecord<"^.*$", Type.TObject<{
|
package/dist/spec/spec.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../../src/spec/spec.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAI3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAkBpD,eAAO,MAAM,WAAW,IAAI,CAAA;AAE5B,eAAO,MAAM,UAAU;IAEnB,6EAA6E
|
|
1
|
+
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../../src/spec/spec.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAI3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAkBpD,eAAO,MAAM,WAAW,IAAI,CAAA;AAE5B,eAAO,MAAM,UAAU;IAEnB,6EAA6E;;;;;IAK7E,+DAA+D;;;;;;;;;;;;;;;;;;QAuBvD,uFAAuF;;QAEvF,8EAA8E;;;;;IAStF,kEAAkE;;EAIrE,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,UAAU,CAAC,CAAA;AAEhD,MAAM,WAAW,IAAK,SAAQ,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;IACvD,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,WAAW,CAAA;IACtB,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,uCAAuC;IACvC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAA;CAC7C;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAID,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CA8ClF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAuBvE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOpF;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CASlE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAqBxE;AAMD,+CAA+C;AAC/C,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAM5F;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAkBvE;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,qDAAqD;IACrD,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,WAAW,EAAE,CAgCvD"}
|