@promptci/core 0.3.0 → 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/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/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 +404 -32
- package/dist/command-validity.js.map +1 -1
- package/dist/dead-references.d.ts +6 -0
- package/dist/dead-references.d.ts.map +1 -1
- package/dist/dead-references.js +120 -7
- package/dist/dead-references.js.map +1 -1
- 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/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/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/manifest-consistency.d.ts.map +1 -1
- package/dist/manifest-consistency.js +6 -0
- 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/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.map +1 -1
- package/dist/repo-context.js +3 -6
- package/dist/repo-context.js.map +1 -1
- package/dist/report.d.ts.map +1 -1
- package/dist/report.js +3 -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/security-pack.d.ts.map +1 -1
- package/dist/security-pack.js +83 -0
- package/dist/security-pack.js.map +1 -1
- package/dist/types.d.ts +10 -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 +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-pinning.d.ts","sourceRoot":"","sources":["../src/action-pinning.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"action-pinning.d.ts","sourceRoot":"","sources":["../src/action-pinning.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA4DhD,MAAM,MAAM,SAAS,GAAG;IACtB,2EAA2E;IAC3E,GAAG,EAAE,MAAM,CAAC;IACZ,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG;IACpC;;;;;OAKG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB,kFAAkF;IAClF,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AA6DF;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,CA6C9D;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,CAoBnE;AAqGD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,aAAa,EAAE,CAuBzE"}
|
package/dist/action-pinning.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as crypto from 'node:crypto';
|
|
2
2
|
import * as path from 'node:path';
|
|
3
|
+
import { UNSCORED_TAG } from './health-score.js';
|
|
3
4
|
/**
|
|
4
5
|
* GitHub Actions pinning detector (detect-only).
|
|
5
6
|
*
|
|
@@ -10,6 +11,9 @@ import * as path from 'node:path';
|
|
|
10
11
|
* workflow referencing it runs the new code on its next run. A SHA cannot be
|
|
11
12
|
* repointed.
|
|
12
13
|
*
|
|
14
|
+
* One info-level finding per file lists every unpinned ref in it, tagged
|
|
15
|
+
* unscored: it costs no health-score points (pcic-1ik0.3).
|
|
16
|
+
*
|
|
13
17
|
* Deliberately DETECT-ONLY: there is no fix recipe and `autoApplySafe` is never
|
|
14
18
|
* set. Resolving a tag to its SHA needs a network call, and this package makes
|
|
15
19
|
* none from detector code — pinning is left to the user (or Dependabot /
|
|
@@ -200,78 +204,105 @@ function shortHash(value) {
|
|
|
200
204
|
function codeSafe(text) {
|
|
201
205
|
return text.replace(/`/g, "'");
|
|
202
206
|
}
|
|
203
|
-
|
|
204
|
-
|
|
207
|
+
/** Evidence line for one unpinned ref; the raw text of an odd-shaped ref never appears. */
|
|
208
|
+
function evidenceLine(filePath, site) {
|
|
209
|
+
// Line numbers are safe here: the finding's fingerprint hashes its
|
|
210
|
+
// `fingerprintKey`, not its evidence. They map each ref to its `locations`.
|
|
211
|
+
const where = `${filePath}:${site.lines.join(',')}`;
|
|
212
|
+
return site.use.displayable
|
|
213
|
+
? `${where}: uses: ${codeSafe(site.use.ref)}`
|
|
214
|
+
// A hash of the raw value keeps two different odd refs in one file distinct.
|
|
215
|
+
: `${where}: unrecognised uses: value (sha1 ${shortHash(site.use.ref)})`;
|
|
216
|
+
}
|
|
217
|
+
/** Refs named in the summary before the rest are counted; the evidence lists all of them. */
|
|
218
|
+
const SUMMARY_REF_LIMIT = 10;
|
|
219
|
+
/**
|
|
220
|
+
* ONE info-level finding per workflow or composite-action file, listing every
|
|
221
|
+
* unpinned ref in it (pcic-1ik0.3, PromptCI#158). One finding per ref made
|
|
222
|
+
* this 29% of all findings in a 43-repository corpus, and it describes CI
|
|
223
|
+
* configuration rather than instruction health, so it is tagged unscored and
|
|
224
|
+
* costs no health-score points.
|
|
225
|
+
*/
|
|
226
|
+
function buildIssue(context, filePath, sites) {
|
|
205
227
|
const absPath = path.resolve(context.repoRoot, filePath);
|
|
206
|
-
const
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
228
|
+
const lines = [...new Set(sites.flatMap((site) => site.lines))].sort((a, b) => a - b);
|
|
229
|
+
const shown = sites.filter((site) => site.use.displayable).map((site) => site.use);
|
|
230
|
+
const hidden = sites.length - shown.length;
|
|
231
|
+
const thirdParty = shown.filter((use) => !FIRST_PARTY_OWNERS.has(use.owner));
|
|
232
|
+
// The example in the recommendation: a third-party ref when there is one.
|
|
233
|
+
const example = thirdParty[0] ?? shown[0];
|
|
234
|
+
const file = codeSafe(filePath);
|
|
235
|
+
const listed = shown.slice(0, SUMMARY_REF_LIMIT).map((use) => `\`${codeSafe(use.ref)}\``).join(', ') +
|
|
236
|
+
(shown.length > SUMMARY_REF_LIMIT ? ` and ${shown.length - SUMMARY_REF_LIMIT} more (see the evidence)` : '');
|
|
237
|
+
const odd = hidden === 0
|
|
238
|
+
? ''
|
|
239
|
+
: ` ${shown.length > 0 ? 'It also has' : 'They are'} ${hidden} \`uses:\` value(s) that do not look like a ` +
|
|
240
|
+
'plain `owner/repo@ref` and are not shown here; review them by hand.';
|
|
241
|
+
const firstPartyNote = shown.length > 0 && thirdParty.length === 0 && hidden === 0
|
|
242
|
+
? ' All of them are maintained by GitHub, which lowers but does not remove the risk.'
|
|
243
|
+
: '';
|
|
244
|
+
let recommendation = 'Pin each action to the full commit SHA of a release you trust and keep the version in a trailing comment';
|
|
245
|
+
if (example) {
|
|
246
|
+
const [repoOwner, repoName] = example.action.split('/');
|
|
247
|
+
recommendation +=
|
|
248
|
+
`, e.g. \`uses: ${codeSafe(example.action)}@<40-char-sha> # ${codeSafe(example.version)}\`. ` +
|
|
249
|
+
`Resolve the SHA from the action's own repository (\`gh api repos/${repoOwner}/${repoName}/commits/` +
|
|
250
|
+
`${example.version} --jq .sha\`)`;
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
recommendation += ", resolving the SHA from the action's own repository";
|
|
254
|
+
}
|
|
255
|
+
recommendation +=
|
|
256
|
+
', and let Dependabot or Renovate update the SHA and comment together. PromptCI reports this but does not ' +
|
|
257
|
+
'rewrite workflow files.';
|
|
258
|
+
return {
|
|
259
|
+
id: `action-pin-${shortHash(`action-pin:${filePath}`)}`,
|
|
260
|
+
severity: 'info',
|
|
210
261
|
category: 'security',
|
|
262
|
+
title: `GitHub Actions in \`${file}\` are not pinned to a commit SHA`,
|
|
263
|
+
summary: `${file} references ${sites.length} action(s) by a tag or branch rather than a full commit SHA` +
|
|
264
|
+
(shown.length > 0 ? `: ${listed}.` : '.') +
|
|
265
|
+
odd +
|
|
266
|
+
" A tag or branch is a mutable pointer: whoever can push to the action's repository can move it, and the " +
|
|
267
|
+
"next run executes the new code with this repository's token and secrets." +
|
|
268
|
+
firstPartyNote +
|
|
269
|
+
' This finding does not count toward the health score.',
|
|
211
270
|
// Absolute, like every other finding's paths; the JSON report relativizes.
|
|
212
271
|
filePaths: [absPath],
|
|
213
272
|
locations: lines.map((line) => ({ filePath: absPath, startLine: line, endLine: line })),
|
|
214
|
-
|
|
215
|
-
//
|
|
216
|
-
//
|
|
273
|
+
evidence: sites.map((site) => evidenceLine(filePath, site)),
|
|
274
|
+
// One identity per file whichever refs are unpinned in it, so pinning one
|
|
275
|
+
// of several is not "resolved + new" in a baseline, review-diff or SARIF.
|
|
276
|
+
// Forward slashes, no leading ./, so the key is the same on every OS.
|
|
277
|
+
fingerprintKey: `action-pin:${filePath.replace(/\\/g, '/').replace(/^(?:\.\/)+/, '')}`,
|
|
278
|
+
recommendation,
|
|
279
|
+
// The refs are certainly mutable; whether that matters for this repo is
|
|
280
|
+
// the heuristic part, so confidence stays below 1.
|
|
217
281
|
confidence: 0.8,
|
|
218
|
-
tags: ['supply-chain', 'github-actions'],
|
|
219
|
-
};
|
|
220
|
-
const why = "A tag or branch is a mutable pointer: whoever can push to the action's repository can move " +
|
|
221
|
-
"it, and the next run executes the new code with this repository's token and secrets.";
|
|
222
|
-
if (!use.displayable) {
|
|
223
|
-
// The raw value never reaches the title, evidence, or a shell command.
|
|
224
|
-
return {
|
|
225
|
-
...base,
|
|
226
|
-
severity: 'warning',
|
|
227
|
-
title: 'GitHub Action reference is not pinned to a commit SHA',
|
|
228
|
-
summary: `${filePath} has a \`uses:\` reference (line ${lines.join(', ')}) that is not pinned to a full ` +
|
|
229
|
-
`commit SHA and does not look like a plain \`owner/repo@ref\` value. ${why}`,
|
|
230
|
-
// No line numbers (baseline fingerprints hash evidence); a hash of the
|
|
231
|
-
// raw value keeps two different refs in one file distinct.
|
|
232
|
-
evidence: [`${filePath}: unrecognised uses: value (sha1 ${shortHash(use.ref)})`],
|
|
233
|
-
recommendation: 'Review this `uses:` line by hand. Pin the action to the full 40-character commit SHA of a ' +
|
|
234
|
-
"release you trust (resolved from the action's own repository), keep the version in a trailing " +
|
|
235
|
-
'comment, and let Dependabot or Renovate update both. PromptCI reports this but does not rewrite ' +
|
|
236
|
-
'workflow files.',
|
|
237
|
-
};
|
|
238
|
-
}
|
|
239
|
-
const firstParty = FIRST_PARTY_OWNERS.has(use.owner);
|
|
240
|
-
const [repoOwner, repoName] = use.action.split('/');
|
|
241
|
-
const ref = codeSafe(use.ref);
|
|
242
|
-
return {
|
|
243
|
-
...base,
|
|
244
|
-
severity: firstParty ? 'info' : 'warning',
|
|
245
|
-
title: `GitHub Action \`${ref}\` is not pinned to a commit SHA`,
|
|
246
|
-
summary: `${filePath} references \`${codeSafe(use.action)}\` at \`${codeSafe(use.version)}\`, which appears ` +
|
|
247
|
-
`to be a tag or branch rather than a full commit SHA. ${why} ` +
|
|
248
|
-
(firstParty
|
|
249
|
-
? 'This action is maintained by GitHub, which lowers but does not remove the risk.'
|
|
250
|
-
: 'Consider pinning third-party actions to a reviewed commit.'),
|
|
251
|
-
evidence: [`${filePath}: uses: ${ref}`],
|
|
252
|
-
recommendation: 'Pin the action to the full commit SHA of the release you trust and keep the version in a ' +
|
|
253
|
-
`trailing comment, e.g. \`uses: ${codeSafe(use.action)}@<40-char-sha> # ${codeSafe(use.version)}\`. ` +
|
|
254
|
-
`Resolve the SHA from the action's own repository (\`gh api repos/${repoOwner}/${repoName}/commits/` +
|
|
255
|
-
`${use.version} --jq .sha\`), and let Dependabot or Renovate update the SHA and comment together. ` +
|
|
256
|
-
'PromptCI reports this but does not rewrite workflow files.',
|
|
282
|
+
tags: ['supply-chain', 'github-actions', UNSCORED_TAG],
|
|
257
283
|
};
|
|
258
284
|
}
|
|
259
285
|
export function detectActionPinning(context) {
|
|
260
286
|
const sources = context.workflows.sources ?? [];
|
|
261
|
-
// Group occurrences by
|
|
262
|
-
// same unpinned action are one
|
|
263
|
-
const
|
|
287
|
+
// Group occurrences by file, then by ref: several jobs in one workflow using
|
|
288
|
+
// the same unpinned action are one entry in that file's finding.
|
|
289
|
+
const byFile = new Map();
|
|
264
290
|
for (const source of sources) {
|
|
265
291
|
for (const use of extractActionUses(source.content)) {
|
|
266
292
|
const unpinned = unpinnedUse(use);
|
|
267
293
|
if (!unpinned)
|
|
268
294
|
continue;
|
|
269
|
-
const
|
|
270
|
-
const site =
|
|
295
|
+
const refs = byFile.get(source.filePath) ?? new Map();
|
|
296
|
+
const site = refs.get(unpinned.ref) ?? { lines: [], use: unpinned };
|
|
271
297
|
site.lines.push(unpinned.line);
|
|
272
|
-
|
|
298
|
+
refs.set(unpinned.ref, site);
|
|
299
|
+
byFile.set(source.filePath, refs);
|
|
273
300
|
}
|
|
274
301
|
}
|
|
275
|
-
return [...
|
|
302
|
+
return [...byFile.keys()].sort().map((filePath) => {
|
|
303
|
+
const refs = byFile.get(filePath);
|
|
304
|
+
const sites = [...refs.keys()].sort().map((ref) => refs.get(ref));
|
|
305
|
+
return buildIssue(context, filePath, sites);
|
|
306
|
+
});
|
|
276
307
|
}
|
|
277
308
|
//# sourceMappingURL=action-pinning.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-pinning.js","sourceRoot":"","sources":["../src/action-pinning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"action-pinning.js","sourceRoot":"","sources":["../src/action-pinning.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,8 +17,12 @@
|
|
|
17
17
|
* - Plan-first guidance — "outline the approach before coding"
|
|
18
18
|
* - No contradictory "do not edit" header in human-maintained files
|
|
19
19
|
*
|
|
20
|
-
*
|
|
20
|
+
* The seven practice checks yield ONE info-level finding per repository that
|
|
21
|
+
* lists every practice not found, tagged unscored so it costs no health-score
|
|
22
|
+
* points (pcic-1ik0.3). The per-file checks further down are warnings.
|
|
21
23
|
*/
|
|
22
24
|
import type { InstructionFile, PromptCiIssue } from './types.js';
|
|
25
|
+
/** The one repository-level finding's id; stable whichever practices are missing. */
|
|
26
|
+
export declare const MISSING_PRACTICES_ISSUE_ID: string;
|
|
23
27
|
export declare function detectAgentPractices(files: InstructionFile[], aliases?: InstructionFile[]): PromptCiIssue[];
|
|
24
28
|
//# sourceMappingURL=agent-practices.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-practices.d.ts","sourceRoot":"","sources":["../src/agent-practices.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"agent-practices.d.ts","sourceRoot":"","sources":["../src/agent-practices.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA4PjE,qFAAqF;AACrF,eAAO,MAAM,0BAA0B,QAItB,CAAC;AAwOlB,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,OAAO,GAAE,eAAe,EAAO,GAAG,aAAa,EAAE,CA+R/G"}
|
package/dist/agent-practices.js
CHANGED
|
@@ -17,17 +17,21 @@
|
|
|
17
17
|
* - Plan-first guidance — "outline the approach before coding"
|
|
18
18
|
* - No contradictory "do not edit" header in human-maintained files
|
|
19
19
|
*
|
|
20
|
-
*
|
|
20
|
+
* The seven practice checks yield ONE info-level finding per repository that
|
|
21
|
+
* lists every practice not found, tagged unscored so it costs no health-score
|
|
22
|
+
* points (pcic-1ik0.3). The per-file checks further down are warnings.
|
|
21
23
|
*/
|
|
22
24
|
import * as crypto from 'node:crypto';
|
|
23
25
|
import * as path from 'node:path';
|
|
24
26
|
import { stripCodeBlocks } from './markdown-fences.js';
|
|
25
27
|
import { fileIdPath } from './finding-id.js';
|
|
26
28
|
import { aliasesWithNewType, groupAliasesByTarget } from './alias-files.js';
|
|
29
|
+
import { UNSCORED_TAG } from './health-score.js';
|
|
27
30
|
const CHECKS = [
|
|
28
31
|
{
|
|
29
32
|
id: 'no-verification-loop',
|
|
30
33
|
title: 'No verification loop instruction',
|
|
34
|
+
label: 'verification loop',
|
|
31
35
|
summary: 'No instruction found asking the agent to run lint, typecheck, or tests before marking work complete. ' +
|
|
32
36
|
'Without this, agents commonly report "done" without validating that changes compile or pass tests.',
|
|
33
37
|
patterns: [
|
|
@@ -46,13 +50,13 @@ const CHECKS = [
|
|
|
46
50
|
],
|
|
47
51
|
recommendation: 'Add an explicit rule such as: "Before saying done, run pnpm lint && pnpm typecheck && pnpm test && pnpm build. ' +
|
|
48
52
|
'Work is not complete until all checks pass."',
|
|
49
|
-
severity: 'warning',
|
|
50
53
|
confidence: 0.75,
|
|
51
54
|
fixRecipe: 'Before saying work is complete, run pnpm lint, pnpm typecheck, pnpm test, and pnpm build. If any command fails, report the failure and stop.',
|
|
52
55
|
},
|
|
53
56
|
{
|
|
54
57
|
id: 'no-honesty-policy',
|
|
55
58
|
title: 'No "report failures honestly" instruction',
|
|
59
|
+
label: 'report failures honestly',
|
|
56
60
|
summary: 'No instruction found requiring the agent to report test failures, errors, or build breakage honestly. ' +
|
|
57
61
|
'Without this, agents may claim success when commands actually fail.',
|
|
58
62
|
patterns: [
|
|
@@ -67,9 +71,6 @@ const CHECKS = [
|
|
|
67
71
|
/never\s+hide\s+(error|fail)/i,
|
|
68
72
|
],
|
|
69
73
|
recommendation: 'Add a rule such as: "If tests fail, report the failure. Never claim success when commands error or tests are skipped."',
|
|
70
|
-
// An AI that doesn't report uncertainty or failures is a production risk,
|
|
71
|
-
// not a style suggestion — elevated from info 0.70 (roadmap FEAT-003).
|
|
72
|
-
severity: 'warning',
|
|
73
74
|
confidence: 0.75,
|
|
74
75
|
fixRecipe: 'If tests or commands fail, report the failure honestly. Never claim success when checks are skipped or error.',
|
|
75
76
|
},
|
|
@@ -81,6 +82,7 @@ const CHECKS = [
|
|
|
81
82
|
// *before* acting, so a file can satisfy one and miss the other.
|
|
82
83
|
id: 'no-ask-when-unsure',
|
|
83
84
|
title: 'No "ask when unsure" instruction',
|
|
85
|
+
label: 'ask when unsure',
|
|
84
86
|
summary: 'No instruction found telling the agent to surface uncertainty — to ask or say so when it is unsure — ' +
|
|
85
87
|
'instead of guessing. Without this, agents may proceed on assumptions and produce confidently wrong work.',
|
|
86
88
|
patterns: [
|
|
@@ -97,13 +99,13 @@ const CHECKS = [
|
|
|
97
99
|
/\backnowledge\s+(?:when|uncertainty|any\s+uncertainty)\b/i,
|
|
98
100
|
],
|
|
99
101
|
recommendation: 'Add a rule such as: "If you are uncertain about the correct approach, say so and ask before proceeding rather than guessing."',
|
|
100
|
-
severity: 'warning',
|
|
101
102
|
confidence: 0.75,
|
|
102
103
|
fixRecipe: 'If you are uncertain about the correct approach, say so before proceeding rather than guessing.',
|
|
103
104
|
},
|
|
104
105
|
{
|
|
105
106
|
id: 'no-read-before-edit',
|
|
106
107
|
title: 'No "read before edit" instruction',
|
|
108
|
+
label: 'read before edit',
|
|
107
109
|
summary: "No instruction found requiring the agent to read a file before editing it. " +
|
|
108
110
|
"Agents that edit files they haven't read may clobber context or introduce inconsistencies.",
|
|
109
111
|
patterns: [
|
|
@@ -119,15 +121,13 @@ const CHECKS = [
|
|
|
119
121
|
/before\s+(?:you\s+)?(?:edit|modif|chang)\w*\b[^.\n]{0,40}\bread(?:ing)?\b/i,
|
|
120
122
|
],
|
|
121
123
|
recommendation: 'Add a rule such as: "Always read a file fully before editing it."',
|
|
122
|
-
// Editing files without reading them is the #1 source of AI coding
|
|
123
|
-
// mistakes — elevated from info 0.70 (roadmap FEAT-003).
|
|
124
|
-
severity: 'warning',
|
|
125
124
|
confidence: 0.75,
|
|
126
125
|
fixRecipe: 'Read a file before editing it. Preserve unrelated user changes.',
|
|
127
126
|
},
|
|
128
127
|
{
|
|
129
128
|
id: 'no-scope-control',
|
|
130
129
|
title: 'No scope-control instruction',
|
|
130
|
+
label: 'scope control',
|
|
131
131
|
summary: 'No instruction found telling the agent to avoid rewriting unrelated systems or making sweeping changes. ' +
|
|
132
132
|
'Unconstrained agents often refactor things they were not asked to touch.',
|
|
133
133
|
patterns: [
|
|
@@ -141,9 +141,6 @@ const CHECKS = [
|
|
|
141
141
|
/prefer\s+(small|focused|minimal)\s+(diff|change|pr)/i,
|
|
142
142
|
],
|
|
143
143
|
recommendation: 'Add a rule such as: "Prefer focused, minimal diffs. Do not rewrite or refactor code unrelated to the current task."',
|
|
144
|
-
// Unconstrained scope produces sweeping unrelated diffs that are hard to
|
|
145
|
-
// review — elevated from info 0.65 (roadmap FEAT-003).
|
|
146
|
-
severity: 'warning',
|
|
147
144
|
confidence: 0.7,
|
|
148
145
|
fixRecipe: 'Prefer focused, minimal diffs. Do not rewrite or refactor code unrelated to the current task.',
|
|
149
146
|
},
|
|
@@ -159,6 +156,7 @@ const CHECKS = [
|
|
|
159
156
|
// keys on "preserve/keep existing/only change what/don't delete".
|
|
160
157
|
id: 'no-preserve-scope',
|
|
161
158
|
title: 'No code-preservation instruction',
|
|
159
|
+
label: 'code preservation',
|
|
162
160
|
summary: 'No instruction found telling the agent to preserve existing code and only change what the task requires. ' +
|
|
163
161
|
'Without this, agents may delete working code, drop tests, or overwrite unrelated edits to reach a passing state.',
|
|
164
162
|
patterns: [
|
|
@@ -171,13 +169,13 @@ const CHECKS = [
|
|
|
171
169
|
/\bleave\s+(?:unrelated|existing|working|other)\s+(?:code|files?|logic|behaviou?r)\s+(?:untouched|alone|intact|as[- ]is)\b/i,
|
|
172
170
|
],
|
|
173
171
|
recommendation: 'Add a rule such as: "Preserve existing code and only change what the task requires. Do not delete working code, tests, or unrelated edits."',
|
|
174
|
-
severity: 'warning',
|
|
175
172
|
confidence: 0.7,
|
|
176
173
|
fixRecipe: 'Preserve existing code and only change what the task requires. Do not delete working code, tests, or unrelated edits.',
|
|
177
174
|
},
|
|
178
175
|
{
|
|
179
176
|
id: 'no-plan-first',
|
|
180
177
|
title: 'No "plan before implementing" instruction',
|
|
178
|
+
label: 'plan before implementing',
|
|
181
179
|
summary: 'No instruction found asking the agent to outline an approach for complex tasks before writing code. ' +
|
|
182
180
|
'Planning prompts significantly reduce wasted implementation effort on multi-file changes.',
|
|
183
181
|
patterns: [
|
|
@@ -189,7 +187,6 @@ const CHECKS = [
|
|
|
189
187
|
/design\s+before\s+(implement|cod)/i,
|
|
190
188
|
],
|
|
191
189
|
recommendation: 'Add a rule such as: "For complex or multi-file tasks, outline the approach and get confirmation before writing code."',
|
|
192
|
-
severity: 'info',
|
|
193
190
|
confidence: 0.65,
|
|
194
191
|
fixRecipe: 'For complex or multi-file tasks, outline the approach and get confirmation before writing code.',
|
|
195
192
|
},
|
|
@@ -234,9 +231,45 @@ const FORWARDING_RE = /(?:follow|use|see|refer\s+to|canonical\s+(?:source|instru
|
|
|
234
231
|
// a file naming ITSELF as the source of truth is not delegating (see caller).
|
|
235
232
|
const SOURCE_OF_TRUTH_RE = /\b(AGENTS|CLAUDE)\.md\b[^\n]{0,60}?\b(?:single\s+source\s+of\s+truth|canonical)\b/i;
|
|
236
233
|
// ── Helpers ───────────────────────────────────────────────────────────────────
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
234
|
+
/** The one repository-level finding's id; stable whichever practices are missing. */
|
|
235
|
+
export const MISSING_PRACTICES_ISSUE_ID = `agent-practice-${crypto
|
|
236
|
+
.createHash('sha1')
|
|
237
|
+
.update('missing-practices')
|
|
238
|
+
.digest('hex')
|
|
239
|
+
.slice(0, 12)}`;
|
|
240
|
+
/**
|
|
241
|
+
* One info-level finding for the whole repository listing the practices no
|
|
242
|
+
* instruction file mentions. Tagged unscored: these are suggestions, and
|
|
243
|
+
* nothing yet shows that the sentences change agent behaviour, so they do not
|
|
244
|
+
* cost health-score points (see UNSCORED_TAG in health-score.ts).
|
|
245
|
+
*/
|
|
246
|
+
function missingPracticesIssue(missing, fileCount, filePaths) {
|
|
247
|
+
const labels = missing.map((check) => check.label);
|
|
248
|
+
return {
|
|
249
|
+
id: MISSING_PRACTICES_ISSUE_ID,
|
|
250
|
+
severity: 'info',
|
|
251
|
+
category: 'agent_practices',
|
|
252
|
+
title: 'Some common agent-practice guidance was not found',
|
|
253
|
+
summary: `No instruction found for ${missing.length} of the ${CHECKS.length} agent practices PromptCI looks for ` +
|
|
254
|
+
`(${labels.join(', ')}). These are suggestions that often help agents, not defects, so this finding ` +
|
|
255
|
+
'does not count toward the health score.',
|
|
256
|
+
filePaths,
|
|
257
|
+
locations: [],
|
|
258
|
+
// One line per missing practice, in a fixed order.
|
|
259
|
+
evidence: [
|
|
260
|
+
`Searched ${fileCount} instruction file(s).`,
|
|
261
|
+
...labels.map((label) => `Not found: ${label}`),
|
|
262
|
+
],
|
|
263
|
+
recommendation: 'Consider adding the rules that fit how you want agents to work, for example: ' +
|
|
264
|
+
missing.map((check) => check.recommendation.replace(/^Add (?:an explicit |a )?rule such as: /, '')).join(' '),
|
|
265
|
+
fixRecipe: missing.map((check) => check.fixRecipe).filter(Boolean).join('\n'),
|
|
266
|
+
confidence: Math.min(...missing.map((check) => check.confidence)),
|
|
267
|
+
// One identity per repository: adding a rule, or another instruction
|
|
268
|
+
// file, changes the evidence and file list but is the same finding
|
|
269
|
+
// getting better, not "resolved + new" (baseline, review-diff, SARIF).
|
|
270
|
+
fingerprintKey: 'agent-practice:missing-practices',
|
|
271
|
+
tags: [UNSCORED_TAG],
|
|
272
|
+
};
|
|
240
273
|
}
|
|
241
274
|
function doNotEditIssueId(filePath) {
|
|
242
275
|
const hash = crypto.createHash('sha1').update(`do-not-edit:${filePath}`).digest('hex').slice(0, 12);
|
|
@@ -422,27 +455,19 @@ export function detectAgentPractices(files, aliases = []) {
|
|
|
422
455
|
const combinedContentNoChecklists = stripChecklistLines(combinedContent);
|
|
423
456
|
const allFilePaths = files.map((f) => f.path);
|
|
424
457
|
// ── Per-practice checks (scan combined content) ───────────────────────────
|
|
425
|
-
|
|
458
|
+
// pcic-1ik0.3 (PromptCI#158): one info finding per repository listing every
|
|
459
|
+
// practice not found, left out of the health score. In a 43-repository corpus
|
|
460
|
+
// each practice was missing from nearly every repository, so seven separate
|
|
461
|
+
// findings said little about any one repository and set its score.
|
|
462
|
+
const missing = CHECKS.filter((check) => {
|
|
426
463
|
// BUG-002: Verification loop requires an imperative agent directive, not a checklist item.
|
|
427
464
|
const contentToSearch = check.id === 'no-verification-loop'
|
|
428
465
|
? combinedContentNoChecklists
|
|
429
466
|
: combinedContent;
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
severity: check.severity,
|
|
435
|
-
category: 'agent_practices',
|
|
436
|
-
title: check.title,
|
|
437
|
-
summary: check.summary,
|
|
438
|
-
filePaths: allFilePaths,
|
|
439
|
-
locations: [],
|
|
440
|
-
evidence: [`Pattern not found across ${files.length} instruction file(s).`],
|
|
441
|
-
recommendation: check.recommendation,
|
|
442
|
-
fixRecipe: check.fixRecipe,
|
|
443
|
-
confidence: check.confidence,
|
|
444
|
-
});
|
|
445
|
-
}
|
|
467
|
+
return !matchesAny(contentToSearch, check.patterns);
|
|
468
|
+
});
|
|
469
|
+
if (missing.length > 0)
|
|
470
|
+
issues.push(missingPracticesIssue(missing, files.length, allFilePaths));
|
|
446
471
|
// ── Per-file behavioral gap check for tool-specific files ──────────────────
|
|
447
472
|
// Tool-specific files must stand alone. If CLAUDE.md has no behavioral rules
|
|
448
473
|
// while AGENTS.md has them, combined-content checks pass but Claude still lacks
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-practices.js","sourceRoot":"","sources":["../src/agent-practices.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAgB5E,MAAM,MAAM,GAAoB;IAC9B;QACE,EAAE,EAAE,sBAAsB;QAC1B,KAAK,EAAE,kCAAkC;QACzC,OAAO,EACL,uGAAuG;YACvG,oGAAoG;QACtG,QAAQ,EAAE;YACR,sDAAsD;YACtD,wEAAwE;YACxE,yEAAyE;YACzE,2DAA2D;YAC3D,+GAA+G;YAC/G,oEAAoE;YACpE,uEAAuE;YACvE,kDAAkD;YAClD,qCAAqC;YACrC,uFAAuF;YACvF,6DAA6D;YAC7D,qCAAqC;SACtC;QACD,cAAc,EACZ,iHAAiH;YACjH,8CAA8C;QAChD,QAAQ,EAAE,SAAS;QACnB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,8IAA8I;KAC1J;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,2CAA2C;QAClD,OAAO,EACL,wGAAwG;YACxG,qEAAqE;QACvE,QAAQ,EAAE;YACR,uCAAuC;YACvC,0CAA0C;YAC1C,sEAAsE;YACtE,wEAAwE;YACxE,2DAA2D;YAC3D,+BAA+B;YAC/B,wDAAwD;YACxD,mCAAmC;YACnC,8BAA8B;SAC/B;QACD,cAAc,EACZ,wHAAwH;QAC1H,0EAA0E;QAC1E,uEAAuE;QACvE,QAAQ,EAAE,SAAS;QACnB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,+GAA+G;KAC3H;IACD;QACE,6EAA6E;QAC7E,6EAA6E;QAC7E,uEAAuE;QACvE,2EAA2E;QAC3E,iEAAiE;QACjE,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,kCAAkC;QACzC,OAAO,EACL,uGAAuG;YACvG,0GAA0G;QAC5G,QAAQ,EAAE;YACR,4DAA4D;YAC5D,iCAAiC;YACjC,oEAAoE;YACpE,sEAAsE;YACtE,uDAAuD;YACvD,mFAAmF;YACnF,sCAAsC;YACtC,6CAA6C;YAC7C,uEAAuE;YACvE,2BAA2B;YAC3B,2DAA2D;SAC5D;QACD,cAAc,EACZ,+HAA+H;QACjI,QAAQ,EAAE,SAAS;QACnB,UAAU,EAAE,IAAI;QAChB,SAAS,EACP,iGAAiG;KACpG;IACD;QACE,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,mCAAmC;QAC1C,OAAO,EACL,6EAA6E;YAC7E,4FAA4F;QAC9F,QAAQ,EAAE;YACR,qFAAqF;YACrF,yDAAyD;YACzD,mEAAmE;YACnE,mDAAmD;YACnD,wCAAwC;YACxC,qBAAqB;YACrB,wEAAwE;YACxE,wEAAwE;YACxE,qDAAqD;YACrD,4EAA4E;SAC7E;QACD,cAAc,EACZ,mEAAmE;QACrE,mEAAmE;QACnE,yDAAyD;QACzD,QAAQ,EAAE,SAAS;QACnB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,iEAAiE;KAC7E;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,KAAK,EAAE,8BAA8B;QACrC,OAAO,EACL,0GAA0G;YAC1G,0EAA0E;QAC5E,QAAQ,EAAE;YACR,yCAAyC;YACzC,+BAA+B;YAC/B,iCAAiC;YACjC,6CAA6C;YAC7C,+BAA+B;YAC/B,uCAAuC;YACvC,+BAA+B;YAC/B,sDAAsD;SACvD;QACD,cAAc,EACZ,qHAAqH;QACvH,yEAAyE;QACzE,uDAAuD;QACvD,QAAQ,EAAE,SAAS;QACnB,UAAU,EAAE,GAAG;QACf,SAAS,EAAE,+FAA+F;KAC3G;IACD;QACE,+DAA+D;QAC/D,0EAA0E;QAC1E,0EAA0E;QAC1E,6EAA6E;QAC7E,6EAA6E;QAC7E,0EAA0E;QAC1E,sEAAsE;QACtE,2EAA2E;QAC3E,kEAAkE;QAClE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,kCAAkC;QACzC,OAAO,EACL,2GAA2G;YAC3G,kHAAkH;QACpH,QAAQ,EAAE;YACR,sFAAsF;YACtF,uFAAuF;YACvF,+GAA+G;YAC/G,0GAA0G;YAC1G,mHAAmH;YACnH,gFAAgF;YAChF,4HAA4H;SAC7H;QACD,cAAc,EACZ,6IAA6I;QAC/I,QAAQ,EAAE,SAAS;QACnB,UAAU,EAAE,GAAG;QACf,SAAS,EACP,uHAAuH;KAC1H;IACD;QACE,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,2CAA2C;QAClD,OAAO,EACL,sGAAsG;YACtG,2FAA2F;QAC7F,QAAQ,EAAE;YACR,8BAA8B;YAC9B,2DAA2D;YAC3D,4FAA4F;YAC5F,0CAA0C;YAC1C,mDAAmD;YACnD,oCAAoC;SACrC;QACD,cAAc,EACZ,uHAAuH;QACzH,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,iGAAiG;KAC7G;CACF,CAAC;AAEF,iFAAiF;AAEjF,iFAAiF;AACjF,wEAAwE;AACxE,MAAM,cAAc,GAAG,uCAAuC,CAAC;AAE/D,qEAAqE;AACrE,0CAA0C;AAC1C,4BAA4B;AAC5B,6EAA6E;AAC7E,4EAA4E;AAC5E,MAAM,iBAAiB,GACrB,kIAAkI,CAAC;AAErI;;;;;;;;;;;;;GAaG;AACH,MAAM,iBAAiB,GAAG,kDAAkD,CAAC;AAE7E,0EAA0E;AAC1E,gFAAgF;AAChF,6EAA6E;AAC7E,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,qDAAqD;AACrD,MAAM,aAAa,GACjB,4IAA4I,CAAC;AAE/I,+EAA+E;AAC/E,gFAAgF;AAChF,6EAA6E;AAC7E,+EAA+E;AAC/E,8EAA8E;AAC9E,MAAM,kBAAkB,GACtB,oFAAoF,CAAC;AAEvF,iFAAiF;AAEjF,SAAS,OAAO,CAAC,OAAe;IAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClF,OAAO,kBAAkB,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB;IACxC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,eAAe,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpG,OAAO,eAAe,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAgB;IAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1G,OAAO,qBAAqB,IAAI,EAAE,CAAC;AACrC,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,UAAU,CAAC,IAAY,EAAE,QAAkB;IAClD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,mFAAmF;AACnF,SAAS,kBAAkB,CAAC,OAAe,EAAE,KAAa;IACxD,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrD,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI;YAAE,IAAI,EAAE,CAAC;IAClC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,mBAAmB,CAAC,OAAe;IAC1C,OAAO,OAAO;SACX,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACjF,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAGD,+EAA+E;AAC/E,2EAA2E;AAC3E,0EAA0E;AAC1E,6EAA6E;AAC7E,+EAA+E;AAC/E,2EAA2E;AAC3E,6DAA6D;AAC7D,2EAA2E;AAC3E,wCAAwC;AAExC,SAAS,yBAAyB,CAAC,IAAqB;IACtD,OAAO,CACL,IAAI,CAAC,QAAQ,KAAK,SAAS;QAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,yBAAyB,CACrE,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAqB;IAC9C,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,cAAc,CAAC;AACjG,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAqB;IAChD,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,gBAAgB,CAAC;AACrG,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAqB;IACrD,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC;AAC9F,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAqB;IAClD,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IAChE,CAAC;IAED,4EAA4E;IAC5E,gFAAgF;IAChF,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC/D,CAAC;IAED,IAAI,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACjD,CAAC;IAED,IAAI,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,KAAK,EAAE,iCAAiC,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC/E,CAAC;IAED,yEAAyE;IACzE,oEAAoE;IACpE,6EAA6E;IAC7E,4EAA4E;IAC5E,6EAA6E;IAC7E,sEAAsE;IACtE,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,aAAa,EAAE,CAAC;QAC5E,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAClD,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAqB;IAC7C,2EAA2E;IAC3E,4EAA4E;IAC5E,uEAAuE;IACvE,8EAA8E;IAC9E,oDAAoD;IACpD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjE,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,aAAa,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,IAAI,aAAa,IAAI,GAAG,aAAa,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACxG,OAAO,IAAI,CAAC;IACd,CAAC;IACD,2DAA2D;IAC3D,OAAO,IAAI,CAAC,SAAS,GAAG,EAAE,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjE,CAAC;AAED,gFAAgF;AAEhF;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,KAAwB,EAAE,OAA0B;IAChF,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC;QACtE,OAAO,SAAS,KAAK,SAAS,IAAI,qBAAqB,CAAC,SAAS,CAAC,EAAE,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC;IAC7F,CAAC,CAAC,CAAC;AACL,CAAC;AAED,sGAAsG;AACtG,SAAS,iBAAiB,CAAC,QAAqC;IAC9D,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,QAAQ,CAAC;AACxD,CAAC;AAED;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,KAAwB;IACjD,8GAA8G;IAC9G,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;IACvB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IACxD,MAAM,kBAAkB,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACnF,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAAE,OAAO,SAAS,CAAC;IAClE,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,kBAAkB,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/G,wEAAwE;IACxE,oEAAoE;IACpE,oEAAoE;IACpE,oEAAoE;IACpE,+BAA+B;IAC/B,MAAM,QAAQ,GAAG,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC;IACxF,OAAO;QACL,EAAE,EAAE,kBAAkB,IAAI,EAAE;QAC5B,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,WAAW;QACrB,KAAK,EAAE,wDAAwD;QAC/D,OAAO,EACL,iDAAiD,QAAQ,iCAAiC;YAC1F,yFAAyF;YACzF,iDAAiD;QACnD,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACnC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACnD,QAAQ,EAAE,CAAC,UAAU,QAAQ,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QACjG,cAAc,EACZ,sFAAsF;YACtF,4CAA4C;QAC9C,UAAU,EAAE,IAAI;KACjB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAwB,EAAE,UAA6B,EAAE;IAC5F,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,qHAAqH;IACrH,MAAM,WAAW,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAExE,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,MAAM,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,+EAA+E;IAC/E,gFAAgF;IAChF,iDAAiD;IACjD,MAAM,2BAA2B,GAAG,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACzE,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAE9C,6EAA6E;IAC7E,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,2FAA2F;QAC3F,MAAM,eAAe,GAAG,KAAK,CAAC,EAAE,KAAK,sBAAsB;YACzD,CAAC,CAAC,2BAA2B;YAC7B,CAAC,CAAC,eAAe,CAAC;QACpB,IAAI,UAAU,CAAC,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC;YAAE,SAAS;QAE1D,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,QAAQ,EAAE,iBAAiB;YAC3B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,SAAS,EAAE,YAAY;YACvB,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE,CAAC,4BAA4B,KAAK,CAAC,MAAM,uBAAuB,CAAC;YAC3E,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,8EAA8E;IAC9E,6EAA6E;IAC7E,gFAAgF;IAChF,6EAA6E;IAC7E,sEAAsE;IAEtE,MAAM,uBAAuB,GAAG;QAC9B,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,sBAAsB,CAAE,CAAC,QAAQ;QAChE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,mBAAmB,CAAE,CAAC,QAAQ;QAC7D,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,kBAAkB,CAAE,CAAC,QAAQ;QAC5D,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,qBAAqB,CAAE,CAAC,QAAQ;KAChE,CAAC;IAEF,MAAM,qBAAqB,GAAG,CAAC,IAAqB,EAAE,EAAE,CACtD,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,uBAAuB,CAAC,CAAC;IAEzE,yEAAyE;IACzE,uEAAuE;IACvE,wEAAwE;IACxE,sEAAsE;IACtE,sEAAsE;IACtE,MAAM,0BAA0B,GAAG,IAAI,GAAG,EAAU,CAAC;IAErD,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,0EAA0E;YAC1E,SAAS;QACX,CAAC;QAED,yDAAyD;QACzD,IAAI,gBAAgB,CAAC,IAAI,CAAC;YAAE,SAAS;QAErC,wEAAwE;QACxE,4EAA4E;QAC5E,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,IAAI,CAAC,gBAAgB;YAAE,SAAS;QAEhC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,sBAAsB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC5C,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,iBAAiB;YAC3B,KAAK,EAAE,6BAA6B,MAAM,CAAC,KAAK,EAAE;YAClD,OAAO,EACL,OAAO,MAAM,CAAC,KAAK,0EAA0E;gBAC7F,qCAAqC,MAAM,CAAC,KAAK,0DAA0D;gBAC3G,mFAAmF;YACrF,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;YACtB,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YACpC,QAAQ,EAAE;gBACR,mCAAmC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBAC9D,uCAAuC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG;aAC/E;YACD,cAAc,EACZ,6FAA6F;gBAC7F,uFAAuF;gBACvF,GAAG,MAAM,CAAC,KAAK,oEAAoE;gBACnF,6FAA6F;YAC/F,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;IAED,+EAA+E;IAC/E,kFAAkF;IAClF,2EAA2E;IAC3E,kBAAkB;IAClB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjG,IAAI,CAAC,UAAU;YAAE,SAAS;QAE1B,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,IAAI,IAAI,KAAK,UAAU;gBAAE,SAAS;YAClC,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,MAAM;gBAAE,SAAS;YACtB,IAAI,gBAAgB,CAAC,IAAI,CAAC;gBAAE,SAAS;YACrC,sEAAsE;YACtE,iEAAiE;YACjE,IAAI,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,SAAS;YAExD,MAAM,eAAe,GAAG,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YACtF,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;gBAC3F,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,gBAAgB,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzH,MAAM,CAAC,IAAI,CAAC;oBACV,EAAE,EAAE,2BAA2B,IAAI,EAAE;oBACrC,QAAQ,EAAE,SAAS;oBACnB,QAAQ,EAAE,iBAAiB;oBAC3B,KAAK,EAAE,8BAA8B,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,QAAQ,MAAM,CAAC,KAAK,EAAE;oBACrH,OAAO,EACL,OAAO,MAAM,CAAC,KAAK,sDAAsD,SAAS,IAAI;wBACtF,uBAAuB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,KAAK,IAAI;wBACtG,2BAA2B;oBAC7B,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC;oBACvC,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;oBACpC,QAAQ,EAAE;wBACR,iCAAiC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;wBAC5D,uBAAuB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG;qBACzD;oBACD,cAAc,EACZ,+BAA+B,MAAM,CAAC,KAAK,YAAY,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK;wBACtI,8CAA8C,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK;oBACnF,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,UAAU,EAAE,GAAG;iBAChB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,0EAA0E;IAC1E,8EAA8E;IAC9E,6EAA6E;IAC7E,0DAA0D;IAC1D,EAAE;IACF,kFAAkF;IAClF,4EAA4E;IAC5E,MAAM,yBAAyB,GAC7B,sGAAsG,CAAC;IAEzG,MAAM,sBAAsB,GAAG,CAAC,CAAS,EAAE,EAAE;QAC3C,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrG,OAAO,0BAA0B,CAAC,EAAE,CAAC;IACvC,CAAC,CAAC;IAEF,MAAM,+BAA+B,GAAG,GAAG,EAAE;QAC3C,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;QAC7D,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAE5C,MAAM,oBAAoB,GAAG,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACtE,IAAI,CAAC,oBAAoB;YAAE,OAAO,KAAK,CAAC;QAExC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;QACxH,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACjD,CAAC,CAAC;IAEF,IAAI,+BAA+B,EAAE,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAE,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,sBAAsB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YACnD,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,WAAW;YACrB,KAAK,EAAE,iEAAiE;YACxE,OAAO,EACL,0FAA0F;gBAC1F,sFAAsF;gBACtF,sBAAsB;YACxB,SAAS,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;YAC7B,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC;YAC3C,QAAQ,EAAE,CAAC,6DAA6D,CAAC;YACzE,cAAc,EACZ,qFAAqF;gBACrF,mEAAmE;YACrE,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;YAAE,SAAS;QAC1C,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,SAAS;QAC5D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,uBAAuB,CAAC;YAAE,SAAS;QAEjE,mEAAmE;QACnE,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,sBAAsB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,SAAS;QAElF,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,sBAAsB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC5C,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,WAAW;YACrB,KAAK,EAAE,mDAAmD;YAC1D,OAAO,EACL,iFAAiF;gBACjF,qFAAqF;gBACrF,sFAAsF;YACxF,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;YACtB,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YACpC,QAAQ,EAAE,CAAC,+EAA+E,CAAC;YAC3F,cAAc,EACZ,wFAAwF;gBACxF,6FAA6F;gBAC7F,iDAAiD;YACnD,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;IAED,6EAA6E;IAC7E,yEAAyE;IACzE,yEAAyE;IACzE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC5C,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,YAAY,GAAG,CAAC,CAAC,cAAc,CAAC;QACtC,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1D,yEAAyE;QACzE,wEAAwE;QACxE,sEAAsE;QACtE,MAAM,aAAa,GAAG,cAAc,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAElG,IAAI,YAAY,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtC,kEAAkE;YAClE,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACtC,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,iBAAiB;gBAC3B,KAAK,EAAE,2DAA2D;gBAClE,OAAO,EACL,wGAAwG;oBACxG,yGAAyG;gBAC3G,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;gBACtB,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;gBACtF,QAAQ,EAAE,CAAC,cAAe,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACrC,cAAc,EACZ,8GAA8G;gBAChH,UAAU,EAAE,GAAG;aAChB,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,YAAY,IAAI,gBAAgB,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YAClE,mFAAmF;YACnF,oEAAoE;YACpE,kFAAkF;YAClF,iFAAiF;YACjF,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,EAAE;gBAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACjG,OAAO,mBAAmB,IAAI,EAAE,CAAC;YACnC,CAAC,CAAC;YACF,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC/B,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,iBAAiB;gBAC3B,KAAK,EAAE,uEAAuE;gBAC9E,OAAO,EACL,gFAAgF,IAAI,CAAC,SAAS,SAAS;oBACvG,mGAAmG;oBACnG,qCAAqC;gBACvC,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;gBACtB,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;gBACtF,QAAQ,EAAE,CAAC,cAAe,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACrC,cAAc,EACZ,+FAA+F;oBAC/F,mFAAmF;gBACrF,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,SAAS,GAAG,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,IAAI,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,oGAAoG;IACpG,qGAAqG;IACrG,kGAAkG;IAClG,uGAAuG;IACvG,qGAAqG;IACrG,yFAAyF;IACzF,KAAK,MAAM,KAAK,IAAI,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC;QAChG,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"agent-practices.js","sourceRoot":"","sources":["../src/agent-practices.ts"],"names":[],"mappings":"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"}
|
package/dist/baseline.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export type FingerprintableIssue = {
|
|
|
9
9
|
title: string;
|
|
10
10
|
filePaths: string[];
|
|
11
11
|
evidence: string[];
|
|
12
|
+
fingerprintKey?: string;
|
|
12
13
|
};
|
|
13
14
|
/**
|
|
14
15
|
* Computes a stable fingerprint for an issue.
|
|
@@ -26,6 +27,13 @@ export type FingerprintableIssue = {
|
|
|
26
27
|
*
|
|
27
28
|
* Included:
|
|
28
29
|
* - `category`, `title`, sorted `filePaths`, sorted `evidence`
|
|
30
|
+
*
|
|
31
|
+
* A grouped finding that carries `fingerprintKey` (pcic-1ik0.3) hashes only
|
|
32
|
+
* `category` and that key: its evidence lists members that come and go (the
|
|
33
|
+
* unpinned actions of one workflow, the practices still missing), and a
|
|
34
|
+
* change to the list is the same finding getting better or worse, not a new
|
|
35
|
+
* one. So such a finding that grows does not count as new for `--fail-on-new`
|
|
36
|
+
* or `review-diff --fail-on-regression`; both are info and unscored.
|
|
29
37
|
*/
|
|
30
38
|
export declare function computeFingerprint(issue: FingerprintableIssue, repoRoot?: string): string;
|
|
31
39
|
/**
|
package/dist/baseline.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseline.d.ts","sourceRoot":"","sources":["../src/baseline.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAiB,aAAa,EAAiB,QAAQ,EAAE,MAAM,YAAY,CAAC;AA4ExF;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"baseline.d.ts","sourceRoot":"","sources":["../src/baseline.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAiB,aAAa,EAAiB,QAAQ,EAAE,MAAM,YAAY,CAAC;AA4ExF;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,oBAAoB,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAwBzF;AAID;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAWnF;AAID;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,QAAQ,CAiB7E;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,EAAE,EACvB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,CAAC,EAAE,MAAM,GAChB;IAAE,SAAS,EAAE,aAAa,EAAE,CAAC;IAAC,eAAe,EAAE,aAAa,EAAE,CAAA;CAAE,CA2BlE"}
|
package/dist/baseline.js
CHANGED
|
@@ -79,8 +79,23 @@ function normalizeEvidenceForRoot(evidence, repoRoot) {
|
|
|
79
79
|
*
|
|
80
80
|
* Included:
|
|
81
81
|
* - `category`, `title`, sorted `filePaths`, sorted `evidence`
|
|
82
|
+
*
|
|
83
|
+
* A grouped finding that carries `fingerprintKey` (pcic-1ik0.3) hashes only
|
|
84
|
+
* `category` and that key: its evidence lists members that come and go (the
|
|
85
|
+
* unpinned actions of one workflow, the practices still missing), and a
|
|
86
|
+
* change to the list is the same finding getting better or worse, not a new
|
|
87
|
+
* one. So such a finding that grows does not count as new for `--fail-on-new`
|
|
88
|
+
* or `review-diff --fail-on-regression`; both are info and unscored.
|
|
82
89
|
*/
|
|
83
90
|
export function computeFingerprint(issue, repoRoot) {
|
|
91
|
+
if (issue.fingerprintKey !== undefined) {
|
|
92
|
+
// NUL-separated with a domain prefix: the `|`-joined content below can
|
|
93
|
+
// never produce this input, whatever a title or evidence line contains.
|
|
94
|
+
return crypto
|
|
95
|
+
.createHash('sha256')
|
|
96
|
+
.update(['promptci-fingerprint-key/v1', issue.category, issue.fingerprintKey].join('\u0000'))
|
|
97
|
+
.digest('hex');
|
|
98
|
+
}
|
|
84
99
|
const normalizedFilePaths = issue.filePaths
|
|
85
100
|
.map((filePath) => normalizePathForRoot(filePath, repoRoot))
|
|
86
101
|
.sort();
|