@promptci/core 0.2.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/action-pinning.d.ts.map +1 -1
- package/dist/action-pinning.js +86 -55
- package/dist/action-pinning.js.map +1 -1
- package/dist/agent-practices.d.ts +5 -1
- package/dist/agent-practices.d.ts.map +1 -1
- package/dist/agent-practices.js +59 -34
- package/dist/agent-practices.js.map +1 -1
- package/dist/ai-config.d.ts +13 -6
- package/dist/ai-config.d.ts.map +1 -1
- package/dist/ai-config.js +25 -78
- package/dist/ai-config.js.map +1 -1
- package/dist/baseline.d.ts +8 -0
- package/dist/baseline.d.ts.map +1 -1
- package/dist/baseline.js +15 -0
- package/dist/baseline.js.map +1 -1
- package/dist/ci-alignment.d.ts +3 -1
- package/dist/ci-alignment.d.ts.map +1 -1
- package/dist/ci-alignment.js +8 -1
- package/dist/ci-alignment.js.map +1 -1
- package/dist/close-match.d.ts +97 -0
- package/dist/close-match.d.ts.map +1 -0
- package/dist/close-match.js +215 -0
- package/dist/close-match.js.map +1 -0
- package/dist/command-context.d.ts +67 -0
- package/dist/command-context.d.ts.map +1 -0
- package/dist/command-context.js +291 -0
- package/dist/command-context.js.map +1 -0
- package/dist/command-validity.d.ts.map +1 -1
- package/dist/command-validity.js +510 -32
- package/dist/command-validity.js.map +1 -1
- package/dist/context-optimizer.d.ts.map +1 -1
- package/dist/context-optimizer.js +9 -2
- package/dist/context-optimizer.js.map +1 -1
- package/dist/dead-references.d.ts +14 -1
- package/dist/dead-references.d.ts.map +1 -1
- package/dist/dead-references.js +264 -17
- package/dist/dead-references.js.map +1 -1
- package/dist/dependency-staleness.d.ts.map +1 -1
- package/dist/dependency-staleness.js +24 -38
- package/dist/dependency-staleness.js.map +1 -1
- package/dist/detectors.js +1 -1
- package/dist/detectors.js.map +1 -1
- package/dist/discovery.d.ts +138 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +569 -0
- package/dist/discovery.js.map +1 -0
- package/dist/duplicates.d.ts +24 -2
- package/dist/duplicates.d.ts.map +1 -1
- package/dist/duplicates.js +313 -9
- package/dist/duplicates.js.map +1 -1
- package/dist/fix-engine.d.ts.map +1 -1
- package/dist/fix-engine.js +75 -1
- package/dist/fix-engine.js.map +1 -1
- package/dist/frameworks/dotnet.d.ts.map +1 -1
- package/dist/frameworks/dotnet.js +10 -11
- package/dist/frameworks/dotnet.js.map +1 -1
- package/dist/frameworks/go.d.ts.map +1 -1
- package/dist/frameworks/go.js +8 -4
- package/dist/frameworks/go.js.map +1 -1
- package/dist/frameworks/nextjs.d.ts.map +1 -1
- package/dist/frameworks/nextjs.js +8 -17
- package/dist/frameworks/nextjs.js.map +1 -1
- package/dist/frameworks/python.d.ts.map +1 -1
- package/dist/frameworks/python.js +5 -3
- package/dist/frameworks/python.js.map +1 -1
- package/dist/frameworks/rust.d.ts.map +1 -1
- package/dist/frameworks/rust.js +3 -3
- package/dist/frameworks/rust.js.map +1 -1
- package/dist/frameworks/unity.d.ts.map +1 -1
- package/dist/frameworks/unity.js +6 -5
- package/dist/frameworks/unity.js.map +1 -1
- package/dist/gitignore.d.ts +31 -2
- package/dist/gitignore.d.ts.map +1 -1
- package/dist/gitignore.js +33 -8
- package/dist/gitignore.js.map +1 -1
- package/dist/health-score.d.ts +15 -1
- package/dist/health-score.d.ts.map +1 -1
- package/dist/health-score.js +25 -2
- package/dist/health-score.js.map +1 -1
- package/dist/hooks-settings-detector.d.ts.map +1 -1
- package/dist/hooks-settings-detector.js +5 -1
- package/dist/hooks-settings-detector.js.map +1 -1
- package/dist/index.d.ts +10 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -2
- package/dist/index.js.map +1 -1
- package/dist/known-paths.d.ts +82 -0
- package/dist/known-paths.d.ts.map +1 -0
- package/dist/known-paths.js +152 -0
- package/dist/known-paths.js.map +1 -0
- package/dist/makefile.d.ts.map +1 -1
- package/dist/makefile.js +17 -13
- package/dist/makefile.js.map +1 -1
- package/dist/manifest-consistency.d.ts +1 -1
- package/dist/manifest-consistency.d.ts.map +1 -1
- package/dist/manifest-consistency.js +18 -8
- package/dist/manifest-consistency.js.map +1 -1
- package/dist/markdown-fences.d.ts.map +1 -1
- package/dist/markdown-fences.js +7 -3
- package/dist/markdown-fences.js.map +1 -1
- package/dist/mcp-config-detector.d.ts.map +1 -1
- package/dist/mcp-config-detector.js +5 -1
- package/dist/mcp-config-detector.js.map +1 -1
- package/dist/project-type.d.ts +2 -1
- package/dist/project-type.d.ts.map +1 -1
- package/dist/project-type.js +36 -48
- package/dist/project-type.js.map +1 -1
- package/dist/prompt-cache.d.ts.map +1 -1
- package/dist/prompt-cache.js +13 -2
- package/dist/prompt-cache.js.map +1 -1
- package/dist/provenance/check.d.ts +40 -0
- package/dist/provenance/check.d.ts.map +1 -0
- package/dist/provenance/check.js +157 -0
- package/dist/provenance/check.js.map +1 -0
- package/dist/provenance/index.d.ts +13 -0
- package/dist/provenance/index.d.ts.map +1 -0
- package/dist/provenance/index.js +21 -0
- package/dist/provenance/index.js.map +1 -0
- package/dist/provenance/instruction-advice.d.ts +3 -0
- package/dist/provenance/instruction-advice.d.ts.map +1 -0
- package/dist/provenance/instruction-advice.js +570 -0
- package/dist/provenance/instruction-advice.js.map +1 -0
- package/dist/provenance/repo-checks.d.ts +3 -0
- package/dist/provenance/repo-checks.d.ts.map +1 -0
- package/dist/provenance/repo-checks.js +644 -0
- package/dist/provenance/repo-checks.js.map +1 -0
- package/dist/provenance/tool-config.d.ts +3 -0
- package/dist/provenance/tool-config.d.ts.map +1 -0
- package/dist/provenance/tool-config.js +480 -0
- package/dist/provenance/tool-config.js.map +1 -0
- package/dist/provenance/types.d.ts +116 -0
- package/dist/provenance/types.d.ts.map +1 -0
- package/dist/provenance/types.js +17 -0
- package/dist/provenance/types.js.map +1 -0
- package/dist/repo-context.d.ts +9 -0
- package/dist/repo-context.d.ts.map +1 -1
- package/dist/repo-context.js +35 -41
- package/dist/repo-context.js.map +1 -1
- package/dist/repo-tree.d.ts +163 -9
- package/dist/repo-tree.d.ts.map +1 -1
- package/dist/repo-tree.js +226 -34
- package/dist/repo-tree.js.map +1 -1
- package/dist/report.d.ts.map +1 -1
- package/dist/report.js +6 -0
- package/dist/report.js.map +1 -1
- package/dist/sample-text.d.ts +36 -0
- package/dist/sample-text.d.ts.map +1 -0
- package/dist/sample-text.js +72 -0
- package/dist/sample-text.js.map +1 -0
- package/dist/sarif.d.ts +27 -0
- package/dist/sarif.d.ts.map +1 -0
- package/dist/sarif.js +357 -0
- package/dist/sarif.js.map +1 -0
- package/dist/scan.d.ts.map +1 -1
- package/dist/scan.js +8 -2
- package/dist/scan.js.map +1 -1
- package/dist/scanner.d.ts +4 -3
- package/dist/scanner.d.ts.map +1 -1
- package/dist/scanner.js +36 -77
- package/dist/scanner.js.map +1 -1
- package/dist/security-pack.d.ts.map +1 -1
- package/dist/security-pack.js +117 -35
- package/dist/security-pack.js.map +1 -1
- package/dist/skill-supply-chain.d.ts.map +1 -1
- package/dist/skill-supply-chain.js +29 -19
- package/dist/skill-supply-chain.js.map +1 -1
- package/dist/skills-detector.d.ts.map +1 -1
- package/dist/skills-detector.js +11 -3
- package/dist/skills-detector.js.map +1 -1
- package/dist/token-estimates.d.ts +42 -0
- package/dist/token-estimates.d.ts.map +1 -0
- package/dist/token-estimates.js +200 -0
- package/dist/token-estimates.js.map +1 -0
- package/dist/types.d.ts +99 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/workspace-manifests.d.ts +6 -0
- package/dist/workspace-manifests.d.ts.map +1 -1
- package/dist/workspace-manifests.js +13 -8
- package/dist/workspace-manifests.js.map +1 -1
- package/package.json +5 -2
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/** A `tool-fact` or `opinion` record older than this many days has expired. */
|
|
2
|
+
export const PROVENANCE_MAX_AGE_DAYS = 90;
|
|
3
|
+
const DAY_MS = 24 * 60 * 60 * 1000;
|
|
4
|
+
const DATE_RE = /^\d{4}-\d{2}-\d{2}$/;
|
|
5
|
+
function dayNumber(date) {
|
|
6
|
+
if (!DATE_RE.test(date))
|
|
7
|
+
return undefined;
|
|
8
|
+
const ms = Date.parse(`${date}T00:00:00Z`);
|
|
9
|
+
// Date.parse rolls an impossible day over (`2026-02-30` is 2 March); only a date that round-trips is real.
|
|
10
|
+
if (Number.isNaN(ms) || new Date(ms).toISOString().slice(0, 10) !== date)
|
|
11
|
+
return undefined;
|
|
12
|
+
return Math.floor(ms / DAY_MS);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Whole days from `date` to `today` (`YYYY-MM-DD` both); `undefined` when either
|
|
16
|
+
* is not a real date. The clock is the caller's: this module never reads one.
|
|
17
|
+
*/
|
|
18
|
+
export function daysSince(date, today) {
|
|
19
|
+
const from = dayNumber(date);
|
|
20
|
+
const to = dayNumber(today);
|
|
21
|
+
return from === undefined || to === undefined ? undefined : to - from;
|
|
22
|
+
}
|
|
23
|
+
/** What the record stands on; see {@link ProvenanceStatus}. */
|
|
24
|
+
export function provenanceStatus(record) {
|
|
25
|
+
if (record.kind === 'repo-fact')
|
|
26
|
+
return 'repo-fact';
|
|
27
|
+
if (record.refuted)
|
|
28
|
+
return 'refuted';
|
|
29
|
+
if (record.unverified)
|
|
30
|
+
return 'unverified';
|
|
31
|
+
// Not flagged: sourced only when the evidence its kind needs is there. A record
|
|
32
|
+
// that forgot its flag is reported as unverified here and fails the structure rules.
|
|
33
|
+
const evals = record.evals?.length ?? 0;
|
|
34
|
+
const supported = record.kind === 'tool-fact' ? record.sources.some((s) => s.stance === 'supports') || evals > 0 : evals > 0;
|
|
35
|
+
if (!supported)
|
|
36
|
+
return 'unverified';
|
|
37
|
+
// A page that contradicts the claim for a tool it names outweighs one that supports another part of it.
|
|
38
|
+
return record.sources.some((s) => s.stance === 'contradicts') ? 'contested' : 'sourced';
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* What is structurally wrong with a set of records, one sentence each. Needs no
|
|
42
|
+
* clock, so it belongs in the test suite: it is the same on every day.
|
|
43
|
+
*
|
|
44
|
+
* - A `tool-fact` is sourced only by a `supports` source (or an eval). A page that
|
|
45
|
+
* merely `contradicts` or gives `context` does not make it sourced.
|
|
46
|
+
* - An `opinion` is sourced only by an eval: documentation is related reading, so
|
|
47
|
+
* an opinion without one is `unverified`.
|
|
48
|
+
* - `unverified` lists only `context` sources and no eval; `refuted` needs a
|
|
49
|
+
* `contradicts` source and no `supports` one or eval; the two exclude each other.
|
|
50
|
+
* - Dates are real `YYYY-MM-DD` dates, and a record is not verified before a
|
|
51
|
+
* source it cites was read.
|
|
52
|
+
*/
|
|
53
|
+
export function provenanceStructureProblems(records) {
|
|
54
|
+
const problems = [];
|
|
55
|
+
for (const record of records) {
|
|
56
|
+
const stances = (stance) => record.sources.filter((s) => s.stance === stance).length;
|
|
57
|
+
const supports = stances('supports');
|
|
58
|
+
const contradicts = stances('contradicts');
|
|
59
|
+
const evals = record.evals?.length ?? 0;
|
|
60
|
+
const verified = dayNumber(record.lastVerified.date);
|
|
61
|
+
if (verified === undefined) {
|
|
62
|
+
problems.push(`${record.id}: lastVerified "${record.lastVerified.date}" is not a YYYY-MM-DD date`);
|
|
63
|
+
}
|
|
64
|
+
for (const source of record.sources) {
|
|
65
|
+
const read = dayNumber(source.readOn);
|
|
66
|
+
if (read === undefined) {
|
|
67
|
+
problems.push(`${record.id}: source ${source.url} has readOn "${source.readOn}", which is not a YYYY-MM-DD date`);
|
|
68
|
+
}
|
|
69
|
+
else if (verified !== undefined && verified < read) {
|
|
70
|
+
problems.push(`${record.id}: lastVerified ${record.lastVerified.date} is before source ${source.url} was read (${source.readOn})`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (record.unverified && record.refuted) {
|
|
74
|
+
problems.push(`${record.id}: marked both unverified and refuted`);
|
|
75
|
+
}
|
|
76
|
+
if (record.kind === 'repo-fact')
|
|
77
|
+
continue;
|
|
78
|
+
if (record.unverified) {
|
|
79
|
+
if (evals > 0)
|
|
80
|
+
problems.push(`${record.id}: marked unverified but lists ${evals} eval(s); drop the flag`);
|
|
81
|
+
// A tool-fact that a page supports is sourced. An opinion has no page that can support
|
|
82
|
+
// it (only an eval can), so its related documentation is `context`, and a page that
|
|
83
|
+
// contradicts it may stay.
|
|
84
|
+
if (record.kind === 'opinion' && supports > 0) {
|
|
85
|
+
problems.push(`${record.id}: an unverified opinion lists ${supports} source(s) with stance supports; documentation is related reading, set them to context`);
|
|
86
|
+
}
|
|
87
|
+
if (record.kind === 'tool-fact' && (supports > 0 || contradicts > 0)) {
|
|
88
|
+
problems.push(`${record.id}: marked unverified but lists ${supports} supporting and ${contradicts} contradicting source(s); ` +
|
|
89
|
+
'keep only context sources, or drop the flag (or mark it refuted when a source contradicts it)');
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else if (record.refuted) {
|
|
93
|
+
if (contradicts === 0)
|
|
94
|
+
problems.push(`${record.id}: marked refuted but no source contradicts it`);
|
|
95
|
+
if (supports > 0 || evals > 0)
|
|
96
|
+
problems.push(`${record.id}: marked refuted but a source or eval supports it`);
|
|
97
|
+
}
|
|
98
|
+
else if (record.kind === 'tool-fact') {
|
|
99
|
+
if (supports === 0 && evals === 0) {
|
|
100
|
+
problems.push(`${record.id}: a tool-fact needs a source that supports it (or an eval); ` +
|
|
101
|
+
`it has ${record.sources.length} source(s), none supporting. Mark it unverified, or refuted when a source contradicts it`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
else if (evals === 0) {
|
|
105
|
+
problems.push(`${record.id}: an opinion needs an eval; a documentation page is related reading, not support. Mark it unverified (context sources may stay)`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return problems;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* What the calendar makes wrong on `today`, one sentence each: a `tool-fact` or
|
|
112
|
+
* `opinion` (of any status) whose `lastVerified` is more than
|
|
113
|
+
* {@link PROVENANCE_MAX_AGE_DAYS} days old, naming the check and the sources to
|
|
114
|
+
* re-read; and a date after `today`. `repo-fact` records never expire.
|
|
115
|
+
*
|
|
116
|
+
* This depends on the clock, so it must not run in the test suite: it would turn
|
|
117
|
+
* every build red on the day the records age out, including a rebuild of an old
|
|
118
|
+
* release. It runs from `scripts/check-provenance.mjs`, on a schedule.
|
|
119
|
+
*/
|
|
120
|
+
export function provenanceDateProblems(records, today) {
|
|
121
|
+
const problems = [];
|
|
122
|
+
if (dayNumber(today) === undefined)
|
|
123
|
+
return [`today "${today}" is not a YYYY-MM-DD date`];
|
|
124
|
+
for (const record of records) {
|
|
125
|
+
const verifiedDays = daysSince(record.lastVerified.date, today);
|
|
126
|
+
if (verifiedDays !== undefined && verifiedDays < 0) {
|
|
127
|
+
problems.push(`${record.id}: lastVerified ${record.lastVerified.date} is in the future`);
|
|
128
|
+
}
|
|
129
|
+
for (const source of record.sources) {
|
|
130
|
+
const readDays = daysSince(source.readOn, today);
|
|
131
|
+
if (readDays !== undefined && readDays < 0)
|
|
132
|
+
problems.push(`${record.id}: source ${source.url} was read on ${source.readOn}, in the future`);
|
|
133
|
+
}
|
|
134
|
+
if (record.kind === 'repo-fact' || verifiedDays === undefined)
|
|
135
|
+
continue;
|
|
136
|
+
if (verifiedDays > PROVENANCE_MAX_AGE_DAYS) {
|
|
137
|
+
const reread = record.sources.length > 0 ? [...new Set(record.sources.map((s) => s.url))].join(', ') : 'no sources recorded';
|
|
138
|
+
problems.push(`${record.id}: lastVerified ${record.lastVerified.date} is ${verifiedDays} days old (limit ${PROVENANCE_MAX_AGE_DAYS}); re-read: ${reread}`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return problems;
|
|
142
|
+
}
|
|
143
|
+
/** Everything {@link provenanceStructureProblems} and {@link provenanceDateProblems} find on `today`. */
|
|
144
|
+
export function provenanceProblems(records, today) {
|
|
145
|
+
return [...provenanceStructureProblems(records), ...provenanceDateProblems(records, today)];
|
|
146
|
+
}
|
|
147
|
+
/** Records within `withinDays` of expiring (or already past it), for the monthly triage and the early warning. */
|
|
148
|
+
export function provenanceExpiringSoon(records, today, withinDays = 30) {
|
|
149
|
+
return records.filter((record) => {
|
|
150
|
+
if (record.kind === 'repo-fact')
|
|
151
|
+
return false;
|
|
152
|
+
const age = daysSince(record.lastVerified.date, today);
|
|
153
|
+
// Inclusive: a record with exactly `withinDays` days left is within the window.
|
|
154
|
+
return age !== undefined && age >= PROVENANCE_MAX_AGE_DAYS - withinDays;
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/provenance/check.ts"],"names":[],"mappings":"AAEA,+EAA+E;AAC/E,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAE1C,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACnC,MAAM,OAAO,GAAG,qBAAqB,CAAC;AAEtC,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC;IAC3C,2GAA2G;IAC3G,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC3F,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,KAAa;IACnD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC5B,OAAO,IAAI,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;AACxE,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,gBAAgB,CAAC,MAAuB;IACtD,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,WAAW,CAAC;IACpD,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IACrC,IAAI,MAAM,CAAC,UAAU;QAAE,OAAO,YAAY,CAAC;IAC3C,gFAAgF;IAChF,qFAAqF;IACrF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;IAC7H,IAAI,CAAC,SAAS;QAAE,OAAO,YAAY,CAAC;IACpC,wGAAwG;IACxG,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1F,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,2BAA2B,CAAC,OAAmC;IAC7E,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,CAAC,MAAc,EAAU,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;QACrG,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACrC,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC;QAExC,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,mBAAmB,MAAM,CAAC,YAAY,CAAC,IAAI,4BAA4B,CAAC,CAAC;QACrG,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,YAAY,MAAM,CAAC,GAAG,gBAAgB,MAAM,CAAC,MAAM,mCAAmC,CAAC,CAAC;YACpH,CAAC;iBAAM,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,GAAG,IAAI,EAAE,CAAC;gBACrD,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,kBAAkB,MAAM,CAAC,YAAY,CAAC,IAAI,qBAAqB,MAAM,CAAC,GAAG,cAAc,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YACrI,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACxC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,sCAAsC,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QAE1C,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,IAAI,KAAK,GAAG,CAAC;gBAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,iCAAiC,KAAK,yBAAyB,CAAC,CAAC;YAC1G,uFAAuF;YACvF,oFAAoF;YACpF,2BAA2B;YAC3B,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;gBAC9C,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,iCAAiC,QAAQ,wFAAwF,CAAC,CAAC;YAC/J,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC;gBACrE,QAAQ,CAAC,IAAI,CACX,GAAG,MAAM,CAAC,EAAE,iCAAiC,QAAQ,mBAAmB,WAAW,4BAA4B;oBAC7G,+FAA+F,CAClG,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAC1B,IAAI,WAAW,KAAK,CAAC;gBAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,+CAA+C,CAAC,CAAC;YAClG,IAAI,QAAQ,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC;gBAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,mDAAmD,CAAC,CAAC;QAChH,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACvC,IAAI,QAAQ,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAClC,QAAQ,CAAC,IAAI,CACX,GAAG,MAAM,CAAC,EAAE,8DAA8D;oBACxE,UAAU,MAAM,CAAC,OAAO,CAAC,MAAM,0FAA0F,CAC5H,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YACvB,QAAQ,CAAC,IAAI,CACX,GAAG,MAAM,CAAC,EAAE,iIAAiI,CAC9I,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAmC,EAAE,KAAa;IACvF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,SAAS;QAAE,OAAO,CAAC,UAAU,KAAK,4BAA4B,CAAC,CAAC;IACzF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAChE,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACnD,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,kBAAkB,MAAM,CAAC,YAAY,CAAC,IAAI,mBAAmB,CAAC,CAAC;QAC3F,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACjD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,GAAG,CAAC;gBAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,YAAY,MAAM,CAAC,GAAG,gBAAgB,MAAM,CAAC,MAAM,iBAAiB,CAAC,CAAC;QAC9I,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,YAAY,KAAK,SAAS;YAAE,SAAS;QACxE,IAAI,YAAY,GAAG,uBAAuB,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;YAC7H,QAAQ,CAAC,IAAI,CACX,GAAG,MAAM,CAAC,EAAE,kBAAkB,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,YAAY,oBAAoB,uBAAuB,eAAe,MAAM,EAAE,CAC5I,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,yGAAyG;AACzG,MAAM,UAAU,kBAAkB,CAAC,OAAmC,EAAE,KAAa;IACnF,OAAO,CAAC,GAAG,2BAA2B,CAAC,OAAO,CAAC,EAAE,GAAG,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9F,CAAC;AAED,kHAAkH;AAClH,MAAM,UAAU,sBAAsB,CACpC,OAAmC,EACnC,KAAa,EACb,UAAU,GAAG,EAAE;IAEf,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;QAC/B,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW;YAAE,OAAO,KAAK,CAAC;QAC9C,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvD,gFAAgF;QAChF,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,IAAI,uBAAuB,GAAG,UAAU,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CheckProvenance } from './types.js';
|
|
2
|
+
export * from './types.js';
|
|
3
|
+
export { PROVENANCE_MAX_AGE_DAYS, daysSince, provenanceDateProblems, provenanceExpiringSoon, provenanceProblems, provenanceStatus, provenanceStructureProblems, } from './check.js';
|
|
4
|
+
/**
|
|
5
|
+
* The provenance record of every check family (pcic-kvv3.1). Grouped by what the
|
|
6
|
+
* checks rest on, one file per group, each next to the detectors it describes:
|
|
7
|
+
* tool-config.ts (what the AI tools read), instruction-advice.ts (how to write
|
|
8
|
+
* instructions), repo-checks.ts (facts about the scanned repository).
|
|
9
|
+
*/
|
|
10
|
+
export declare const CHECK_PROVENANCE: readonly CheckProvenance[];
|
|
11
|
+
/** The records of one detector (`DETECTORS` id), in registry order. */
|
|
12
|
+
export declare function provenanceFor(detectorId: string): readonly CheckProvenance[];
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/provenance/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAKlD,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,EAChB,2BAA2B,GAC5B,MAAM,YAAY,CAAC;AAEpB;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,eAAe,EAItD,CAAC;AAEF,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,eAAe,EAAE,CAE5E"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { INSTRUCTION_ADVICE_PROVENANCE } from './instruction-advice.js';
|
|
2
|
+
import { REPO_CHECKS_PROVENANCE } from './repo-checks.js';
|
|
3
|
+
import { TOOL_CONFIG_PROVENANCE } from './tool-config.js';
|
|
4
|
+
export * from './types.js';
|
|
5
|
+
export { PROVENANCE_MAX_AGE_DAYS, daysSince, provenanceDateProblems, provenanceExpiringSoon, provenanceProblems, provenanceStatus, provenanceStructureProblems, } from './check.js';
|
|
6
|
+
/**
|
|
7
|
+
* The provenance record of every check family (pcic-kvv3.1). Grouped by what the
|
|
8
|
+
* checks rest on, one file per group, each next to the detectors it describes:
|
|
9
|
+
* tool-config.ts (what the AI tools read), instruction-advice.ts (how to write
|
|
10
|
+
* instructions), repo-checks.ts (facts about the scanned repository).
|
|
11
|
+
*/
|
|
12
|
+
export const CHECK_PROVENANCE = [
|
|
13
|
+
...TOOL_CONFIG_PROVENANCE,
|
|
14
|
+
...INSTRUCTION_ADVICE_PROVENANCE,
|
|
15
|
+
...REPO_CHECKS_PROVENANCE,
|
|
16
|
+
];
|
|
17
|
+
/** The records of one detector (`DETECTORS` id), in registry order. */
|
|
18
|
+
export function provenanceFor(detectorId) {
|
|
19
|
+
return CHECK_PROVENANCE.filter((record) => record.detector === detectorId);
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/provenance/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,EAChB,2BAA2B,GAC5B,MAAM,YAAY,CAAC;AAEpB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA+B;IAC1D,GAAG,sBAAsB;IACzB,GAAG,6BAA6B;IAChC,GAAG,sBAAsB;CAC1B,CAAC;AAEF,uEAAuE;AACvE,MAAM,UAAU,aAAa,CAAC,UAAkB;IAC9C,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC;AAC7E,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instruction-advice.d.ts","sourceRoot":"","sources":["../../src/provenance/instruction-advice.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAuD,MAAM,YAAY,CAAC;AAwDvG,eAAO,MAAM,6BAA6B,EAAE,SAAS,eAAe,EAgmBnE,CAAC"}
|