@promptci/core 0.2.2 → 0.3.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/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/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-validity.d.ts.map +1 -1
- package/dist/command-validity.js +126 -20
- 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 +8 -1
- package/dist/dead-references.d.ts.map +1 -1
- package/dist/dead-references.js +149 -15
- 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/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/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 +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -0
- 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 +12 -8
- package/dist/manifest-consistency.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/repo-context.d.ts +9 -0
- package/dist/repo-context.d.ts.map +1 -1
- package/dist/repo-context.js +32 -35
- 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 +3 -0
- package/dist/report.js.map +1 -1
- 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 +34 -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 +89 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +5 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks-settings-detector.js","sourceRoot":"","sources":["../src/hooks-settings-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACT,MAAM,EACN,gBAAgB,EAChB,aAAa,EACb,aAAa,IAAI,IAAI,GACtB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"hooks-settings-detector.js","sourceRoot":"","sources":["../src/hooks-settings-detector.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export type { SuppressionAnnotation } from './suppression.js';
|
|
|
12
12
|
export { computeHealthScore, selectTopFixes } from './health-score.js';
|
|
13
13
|
export { generateMarkdownReport, generateJsonReport, writeReport, readHistoryIndex, archiveExistingReport, historyIndexPath, scoreLabel } from './report.js';
|
|
14
14
|
export type { WriteReportOptions, HistoryEntry } from './report.js';
|
|
15
|
+
export { generateSarifReport } from './sarif.js';
|
|
15
16
|
export { detectManifestConsistency } from './manifest-consistency.js';
|
|
16
17
|
export { detectDependencyStaleness } from './dependency-staleness.js';
|
|
17
18
|
export type { ManifestData } from './manifest-consistency.js';
|
|
@@ -38,10 +39,14 @@ export type { Frontmatter, FrontmatterValue, AiConfigFiles } from './ai-config.j
|
|
|
38
39
|
export { analyzeContext } from './context-analysis.js';
|
|
39
40
|
export type { ContextAnalysis } from './context-analysis.js';
|
|
40
41
|
export { scan } from './scan.js';
|
|
42
|
+
export { ADDRESSABLE_CATEGORIES, estimateTokens, annotateIssueTokens, computeAddressableTokens } from './token-estimates.js';
|
|
41
43
|
export { computeFingerprint, createBaseline, filterNewIssues, assertValidBaseline } from './baseline.js';
|
|
42
44
|
export { applyFixRecipe, resolveSafePath, isRepairable } from './fix-engine.js';
|
|
45
|
+
export { closestUniqueMatch, isMechanicalRename, damerauLevenshtein, CLOSE_MATCH_MAX_DISTANCE, CLOSE_MATCH_MIN_LENGTH, MECHANICAL_TWO_EDIT_MIN_LENGTH, MECHANICAL_SEGMENT_MIN_LENGTH, } from './close-match.js';
|
|
43
46
|
export type { FileChange } from './fix-engine.js';
|
|
44
47
|
export { isWithinRoot, resolveWithinRoot, realPathWithinRoot, resolveReadableWithinRoot, writeTargetWithinRoot } from './path-containment.js';
|
|
48
|
+
export { normalizeKnownPath } from './known-paths.js';
|
|
49
|
+
export type { KnownPaths } from './known-paths.js';
|
|
45
50
|
export { optimizeContext } from './context-optimizer.js';
|
|
46
51
|
export type { OptimizeOptions, OptimizeResult } from './context-optimizer.js';
|
|
47
52
|
export { TARGET_MODELS, MODEL_BUDGETS_REVIEW_BY, resolveTargetModel, modelBudget, budgetForTargetModel, } from './model-budgets.js';
|
|
@@ -49,4 +54,6 @@ export type { TargetModel, ModelBudget } from './model-budgets.js';
|
|
|
49
54
|
export { loadCustomRules, parseCustomRules, runCustomRules, CustomRulesError, CUSTOM_RULE_TYPES, CUSTOM_RULES_FILE, } from './custom-rules.js';
|
|
50
55
|
export type { CustomRule, CustomRuleType } from './custom-rules.js';
|
|
51
56
|
export { PROMPTCI_GITIGNORE_LINES, PROMPTCI_GITIGNORE_BLOCK, renderPromptCiGitignore, } from './promptci-gitignore.js';
|
|
57
|
+
export { selectScanPaths } from './discovery.js';
|
|
58
|
+
export type { ScanPathEntry, SelectScanPathsOptions, SelectScanPathsResult } from './discovery.js';
|
|
52
59
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -9,6 +9,7 @@ export { detectAgentPractices } from './agent-practices.js';
|
|
|
9
9
|
export { parseSuppressions, buildValidationIssues, applySuppressions } from './suppression.js';
|
|
10
10
|
export { computeHealthScore, selectTopFixes } from './health-score.js';
|
|
11
11
|
export { generateMarkdownReport, generateJsonReport, writeReport, readHistoryIndex, archiveExistingReport, historyIndexPath, scoreLabel } from './report.js';
|
|
12
|
+
export { generateSarifReport } from './sarif.js';
|
|
12
13
|
export { detectManifestConsistency } from './manifest-consistency.js';
|
|
13
14
|
export { detectDependencyStaleness } from './dependency-staleness.js';
|
|
14
15
|
export { buildRepoContext, parsePackageJsonFacts } from './repo-context.js';
|
|
@@ -28,11 +29,22 @@ export { detectWithinSectionDedup } from './within-section-dedup.js';
|
|
|
28
29
|
export { parseFrontmatter, discoverAiConfigFiles, emptyAiConfigFiles } from './ai-config.js';
|
|
29
30
|
export { analyzeContext } from './context-analysis.js';
|
|
30
31
|
export { scan } from './scan.js';
|
|
32
|
+
export { ADDRESSABLE_CATEGORIES, estimateTokens, annotateIssueTokens, computeAddressableTokens } from './token-estimates.js';
|
|
31
33
|
export { computeFingerprint, createBaseline, filterNewIssues, assertValidBaseline } from './baseline.js';
|
|
32
34
|
export { applyFixRecipe, resolveSafePath, isRepairable } from './fix-engine.js';
|
|
35
|
+
export { closestUniqueMatch, isMechanicalRename, damerauLevenshtein, CLOSE_MATCH_MAX_DISTANCE, CLOSE_MATCH_MIN_LENGTH, MECHANICAL_TWO_EDIT_MIN_LENGTH, MECHANICAL_SEGMENT_MIN_LENGTH, } from './close-match.js';
|
|
33
36
|
export { isWithinRoot, resolveWithinRoot, realPathWithinRoot, resolveReadableWithinRoot, writeTargetWithinRoot } from './path-containment.js';
|
|
37
|
+
// pcic-csf: a consumer needs only to BUILD a `knownPaths` list and hand it to
|
|
38
|
+
// `scan()` — `KnownPaths` names its shape and `normalizeKnownPath` is the same
|
|
39
|
+
// normalization the scan applies, so a caller can canonicalize and de-duplicate
|
|
40
|
+
// its own list first. `RepoTree`, `PathInventory` and their types stay internal:
|
|
41
|
+
// they are how the scan answers existence questions, not API anyone outside
|
|
42
|
+
// calls, and exporting them would freeze that shape. Tests import them from
|
|
43
|
+
// `../src/...` directly.
|
|
44
|
+
export { normalizeKnownPath } from './known-paths.js';
|
|
34
45
|
export { optimizeContext } from './context-optimizer.js';
|
|
35
46
|
export { TARGET_MODELS, MODEL_BUDGETS_REVIEW_BY, resolveTargetModel, modelBudget, budgetForTargetModel, } from './model-budgets.js';
|
|
36
47
|
export { loadCustomRules, parseCustomRules, runCustomRules, CustomRulesError, CUSTOM_RULE_TYPES, CUSTOM_RULES_FILE, } from './custom-rules.js';
|
|
37
48
|
export { PROMPTCI_GITIGNORE_LINES, PROMPTCI_GITIGNORE_BLOCK, renderPromptCiGitignore, } from './promptci-gitignore.js';
|
|
49
|
+
export { selectScanPaths } from './discovery.js';
|
|
38
50
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE9E,OAAO,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AACvG,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE/F,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,WAAW,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE7J,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAG5E,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE3H,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,iCAAiC,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAE,gCAAgC,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAE7F,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzG,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pcic-csf: a caller-supplied inventory of the paths a repository holds, used
|
|
3
|
+
* instead of (or alongside) the filesystem for every existence check a scan
|
|
4
|
+
* makes.
|
|
5
|
+
*
|
|
6
|
+
* A hosted scan does not have the repository on disk. It fetches the
|
|
7
|
+
* instruction files into a temp directory and leaves everything else
|
|
8
|
+
* unfetched, so every path a detector checks reads as missing and the scan
|
|
9
|
+
* reports references, commands and config targets as broken when they are
|
|
10
|
+
* merely absent from the temp dir. Naming the repository's real file list up
|
|
11
|
+
* front — `ScanInput.knownPaths`, with `knownPathsComplete` saying whether the
|
|
12
|
+
* list is the whole repository — makes those checks answer about the
|
|
13
|
+
* repository rather than about what happened to be downloaded.
|
|
14
|
+
*
|
|
15
|
+
* This module is pure: it holds no filesystem access and no I/O of any kind.
|
|
16
|
+
* {@link RepoTree} consults it first and falls back to the filesystem only for
|
|
17
|
+
* paths the inventory does not cover, and only while `knownPathsComplete` is
|
|
18
|
+
* false.
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Repo-relative POSIX paths of the files a repository holds. A `Set` is read
|
|
22
|
+
* as-is; an array is accepted for convenience (JSON, a database row).
|
|
23
|
+
*
|
|
24
|
+
* Only FILES need listing: every directory on the way to a listed file is
|
|
25
|
+
* implied, so `[".github/workflows/ci.yml"]` also says `.github` and
|
|
26
|
+
* `.github/workflows` are directories. An entry with a TRAILING SLASH names a
|
|
27
|
+
* directory instead — the way to list one that holds no files of its own
|
|
28
|
+
* (`"coverage/"`).
|
|
29
|
+
*/
|
|
30
|
+
export type KnownPaths = ReadonlySet<string> | readonly string[];
|
|
31
|
+
/** What an inventory says about one path. */
|
|
32
|
+
export type PathKind = 'file' | 'dir'
|
|
33
|
+
/** The inventory covers the whole repository and does not list it. */
|
|
34
|
+
| 'absent'
|
|
35
|
+
/** Not listed, and the inventory is partial: ask the filesystem. */
|
|
36
|
+
| 'unknown';
|
|
37
|
+
/**
|
|
38
|
+
* `p` as a repo-relative POSIX path (`''` for the root itself), or `null` when
|
|
39
|
+
* it is not one: absolute on any platform, or climbing out of the repository.
|
|
40
|
+
*
|
|
41
|
+
* Backslashes are read as separators so a caller that built its list on
|
|
42
|
+
* Windows is not silently misread as holding one file named `a\b`. `.`
|
|
43
|
+
* segments are dropped and `..` is refused outright rather than resolved: an
|
|
44
|
+
* inventory entry is a statement about a path inside the repository, and a
|
|
45
|
+
* caller that means `a/b` should say so.
|
|
46
|
+
*/
|
|
47
|
+
export declare function normalizeKnownPath(p: string): string | null;
|
|
48
|
+
/**
|
|
49
|
+
* pcic-csf: the paths a repository holds, as a lookup. Built once per scan and
|
|
50
|
+
* shared through {@link RepoTree}; immutable afterwards.
|
|
51
|
+
*
|
|
52
|
+
* A path is a directory when some listed path has it as a prefix, so no caller
|
|
53
|
+
* has to list directories separately. A listed path that is ALSO a prefix of
|
|
54
|
+
* another (`a/b` next to `a/b/c`) is a directory: the deeper entry can only be
|
|
55
|
+
* true if it is.
|
|
56
|
+
*/
|
|
57
|
+
export declare class PathInventory {
|
|
58
|
+
/**
|
|
59
|
+
* True when the list is the whole repository, so a path it does not hold is
|
|
60
|
+
* genuinely absent. False when it is a partial view and unlisted paths must
|
|
61
|
+
* still be looked for on the filesystem.
|
|
62
|
+
*/
|
|
63
|
+
readonly complete: boolean;
|
|
64
|
+
/** Listed paths that are not also a directory. */
|
|
65
|
+
private readonly files;
|
|
66
|
+
/** Directory → its entries, by name. The root is `''`. */
|
|
67
|
+
private readonly tree;
|
|
68
|
+
constructor(knownPaths: KnownPaths, complete?: boolean);
|
|
69
|
+
/** What the inventory says `rel` (a normalized repo-relative path, `''` = root) is. */
|
|
70
|
+
classify(rel: string): PathKind;
|
|
71
|
+
/** The entries of the directory at `rel`, or `undefined` when it is not a listed directory. */
|
|
72
|
+
children(rel: string): ReadonlyMap<string, 'file' | 'dir'> | undefined;
|
|
73
|
+
/** Every listed file, sorted — the inventory's own view of the repository. */
|
|
74
|
+
listedFiles(): string[];
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* A {@link PathInventory} for `knownPaths`, or `undefined` when none was given.
|
|
78
|
+
* An EMPTY complete list is a real statement ("the repository holds nothing
|
|
79
|
+
* else"), so it still produces an inventory; `undefined`/absent does not.
|
|
80
|
+
*/
|
|
81
|
+
export declare function buildInventory(knownPaths: KnownPaths | undefined, knownPathsComplete: boolean | undefined): PathInventory | undefined;
|
|
82
|
+
//# sourceMappingURL=known-paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"known-paths.d.ts","sourceRoot":"","sources":["../src/known-paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH;;;;;;;;;GASG;AACH,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,MAAM,EAAE,CAAC;AAEjE,6CAA6C;AAC7C,MAAM,MAAM,QAAQ,GAChB,MAAM,GACN,KAAK;AACP,sEAAsE;GACpE,QAAQ;AACV,oEAAoE;GAClE,SAAS,CAAC;AAEd;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAW3D;AAUD;;;;;;;;GAQG;AACH,qBAAa,aAAa;IACxB;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,kDAAkD;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,0DAA0D;IAC1D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkD;gBAE3D,UAAU,EAAE,UAAU,EAAE,QAAQ,UAAQ;IAsCpD,uFAAuF;IACvF,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ;IAO/B,+FAA+F;IAC/F,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,SAAS;IAItE,8EAA8E;IAC9E,WAAW,IAAI,MAAM,EAAE;CAGxB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,kBAAkB,EAAE,OAAO,GAAG,SAAS,GACtC,aAAa,GAAG,SAAS,CAG3B"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pcic-csf: a caller-supplied inventory of the paths a repository holds, used
|
|
3
|
+
* instead of (or alongside) the filesystem for every existence check a scan
|
|
4
|
+
* makes.
|
|
5
|
+
*
|
|
6
|
+
* A hosted scan does not have the repository on disk. It fetches the
|
|
7
|
+
* instruction files into a temp directory and leaves everything else
|
|
8
|
+
* unfetched, so every path a detector checks reads as missing and the scan
|
|
9
|
+
* reports references, commands and config targets as broken when they are
|
|
10
|
+
* merely absent from the temp dir. Naming the repository's real file list up
|
|
11
|
+
* front — `ScanInput.knownPaths`, with `knownPathsComplete` saying whether the
|
|
12
|
+
* list is the whole repository — makes those checks answer about the
|
|
13
|
+
* repository rather than about what happened to be downloaded.
|
|
14
|
+
*
|
|
15
|
+
* This module is pure: it holds no filesystem access and no I/O of any kind.
|
|
16
|
+
* {@link RepoTree} consults it first and falls back to the filesystem only for
|
|
17
|
+
* paths the inventory does not cover, and only while `knownPathsComplete` is
|
|
18
|
+
* false.
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* `p` as a repo-relative POSIX path (`''` for the root itself), or `null` when
|
|
22
|
+
* it is not one: absolute on any platform, or climbing out of the repository.
|
|
23
|
+
*
|
|
24
|
+
* Backslashes are read as separators so a caller that built its list on
|
|
25
|
+
* Windows is not silently misread as holding one file named `a\b`. `.`
|
|
26
|
+
* segments are dropped and `..` is refused outright rather than resolved: an
|
|
27
|
+
* inventory entry is a statement about a path inside the repository, and a
|
|
28
|
+
* caller that means `a/b` should say so.
|
|
29
|
+
*/
|
|
30
|
+
export function normalizeKnownPath(p) {
|
|
31
|
+
if (p === '')
|
|
32
|
+
return '';
|
|
33
|
+
// Absolute in any platform's form, or a Windows drive-relative path.
|
|
34
|
+
if (/^[/\\]/.test(p) || /^[A-Za-z]:/.test(p))
|
|
35
|
+
return null;
|
|
36
|
+
const segments = [];
|
|
37
|
+
for (const segment of p.split(/[/\\]+/)) {
|
|
38
|
+
if (segment === '' || segment === '.')
|
|
39
|
+
continue;
|
|
40
|
+
if (segment === '..')
|
|
41
|
+
return null;
|
|
42
|
+
segments.push(segment);
|
|
43
|
+
}
|
|
44
|
+
return segments.join('/');
|
|
45
|
+
}
|
|
46
|
+
/** `''`, plus every proper ancestor directory of `rel`, nearest last. */
|
|
47
|
+
function ancestorsOf(rel) {
|
|
48
|
+
const out = [''];
|
|
49
|
+
const parts = rel.split('/');
|
|
50
|
+
for (let i = 1; i < parts.length; i++)
|
|
51
|
+
out.push(parts.slice(0, i).join('/'));
|
|
52
|
+
return out;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* pcic-csf: the paths a repository holds, as a lookup. Built once per scan and
|
|
56
|
+
* shared through {@link RepoTree}; immutable afterwards.
|
|
57
|
+
*
|
|
58
|
+
* A path is a directory when some listed path has it as a prefix, so no caller
|
|
59
|
+
* has to list directories separately. A listed path that is ALSO a prefix of
|
|
60
|
+
* another (`a/b` next to `a/b/c`) is a directory: the deeper entry can only be
|
|
61
|
+
* true if it is.
|
|
62
|
+
*/
|
|
63
|
+
export class PathInventory {
|
|
64
|
+
/**
|
|
65
|
+
* True when the list is the whole repository, so a path it does not hold is
|
|
66
|
+
* genuinely absent. False when it is a partial view and unlisted paths must
|
|
67
|
+
* still be looked for on the filesystem.
|
|
68
|
+
*/
|
|
69
|
+
complete;
|
|
70
|
+
/** Listed paths that are not also a directory. */
|
|
71
|
+
files = new Set();
|
|
72
|
+
/** Directory → its entries, by name. The root is `''`. */
|
|
73
|
+
tree = new Map();
|
|
74
|
+
constructor(knownPaths, complete = false) {
|
|
75
|
+
this.complete = complete;
|
|
76
|
+
const listed = new Set();
|
|
77
|
+
const explicitDirs = new Set();
|
|
78
|
+
for (const raw of knownPaths) {
|
|
79
|
+
const rel = normalizeKnownPath(raw);
|
|
80
|
+
if (rel === null || rel === '')
|
|
81
|
+
continue;
|
|
82
|
+
// A trailing slash is how a caller names an EMPTY directory — one with no
|
|
83
|
+
// listed file under it to imply it. Normalization has already dropped the
|
|
84
|
+
// slash, so the raw spelling is what says which it was.
|
|
85
|
+
if (/[/\\]\s*$/.test(raw))
|
|
86
|
+
explicitDirs.add(rel);
|
|
87
|
+
else
|
|
88
|
+
listed.add(rel);
|
|
89
|
+
}
|
|
90
|
+
const dirs = new Set(['', ...explicitDirs]);
|
|
91
|
+
for (const rel of [...listed, ...explicitDirs])
|
|
92
|
+
for (const dir of ancestorsOf(rel))
|
|
93
|
+
dirs.add(dir);
|
|
94
|
+
for (const rel of listed)
|
|
95
|
+
if (!dirs.has(rel))
|
|
96
|
+
this.files.add(rel);
|
|
97
|
+
// One pass over files and directories, each filed under its parent.
|
|
98
|
+
const place = (rel, kind) => {
|
|
99
|
+
const slash = rel.lastIndexOf('/');
|
|
100
|
+
const parent = slash === -1 ? '' : rel.slice(0, slash);
|
|
101
|
+
const name = slash === -1 ? rel : rel.slice(slash + 1);
|
|
102
|
+
let entries = this.tree.get(parent);
|
|
103
|
+
if (entries === undefined) {
|
|
104
|
+
entries = new Map();
|
|
105
|
+
this.tree.set(parent, entries);
|
|
106
|
+
}
|
|
107
|
+
// A directory wins over a file of the same name: see the class comment.
|
|
108
|
+
if (kind === 'dir' || !entries.has(name))
|
|
109
|
+
entries.set(name, kind);
|
|
110
|
+
};
|
|
111
|
+
for (const rel of this.files)
|
|
112
|
+
place(rel, 'file');
|
|
113
|
+
for (const dir of dirs) {
|
|
114
|
+
if (dir === '')
|
|
115
|
+
continue;
|
|
116
|
+
place(dir, 'dir');
|
|
117
|
+
if (!this.tree.has(dir))
|
|
118
|
+
this.tree.set(dir, new Map());
|
|
119
|
+
}
|
|
120
|
+
if (!this.tree.has(''))
|
|
121
|
+
this.tree.set('', new Map());
|
|
122
|
+
}
|
|
123
|
+
/** What the inventory says `rel` (a normalized repo-relative path, `''` = root) is. */
|
|
124
|
+
classify(rel) {
|
|
125
|
+
if (rel === '')
|
|
126
|
+
return 'dir';
|
|
127
|
+
if (this.tree.has(rel))
|
|
128
|
+
return 'dir';
|
|
129
|
+
if (this.files.has(rel))
|
|
130
|
+
return 'file';
|
|
131
|
+
return this.complete ? 'absent' : 'unknown';
|
|
132
|
+
}
|
|
133
|
+
/** The entries of the directory at `rel`, or `undefined` when it is not a listed directory. */
|
|
134
|
+
children(rel) {
|
|
135
|
+
return this.tree.get(rel);
|
|
136
|
+
}
|
|
137
|
+
/** Every listed file, sorted — the inventory's own view of the repository. */
|
|
138
|
+
listedFiles() {
|
|
139
|
+
return [...this.files].sort();
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* A {@link PathInventory} for `knownPaths`, or `undefined` when none was given.
|
|
144
|
+
* An EMPTY complete list is a real statement ("the repository holds nothing
|
|
145
|
+
* else"), so it still produces an inventory; `undefined`/absent does not.
|
|
146
|
+
*/
|
|
147
|
+
export function buildInventory(knownPaths, knownPathsComplete) {
|
|
148
|
+
if (knownPaths === undefined)
|
|
149
|
+
return undefined;
|
|
150
|
+
return new PathInventory(knownPaths, knownPathsComplete === true);
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=known-paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"known-paths.js","sourceRoot":"","sources":["../src/known-paths.ts"],"names":[],"mappings":"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"}
|
package/dist/makefile.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makefile.d.ts","sourceRoot":"","sources":["../src/makefile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"makefile.d.ts","sourceRoot":"","sources":["../src/makefile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,MAAM,MAAM,aAAa,GAAG;IAC1B,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,mEAAmE;IACnE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;;;OAGG;IACH,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAuBF,gEAAgE;AAChE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,SAAa,GAAG,aAAa,CAwEtF;AAED,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAY7E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,QAAiC,GACtC,aAAa,GAAG,SAAS,CAwB3B"}
|
package/dist/makefile.js
CHANGED
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
*
|
|
12
12
|
* Deterministic and offline: it only reads the Makefile text.
|
|
13
13
|
*/
|
|
14
|
-
import * as fs from 'node:fs';
|
|
15
14
|
import { RepoTree } from './repo-tree.js';
|
|
16
15
|
import { MAX_FILE_SIZE } from './scanner.js';
|
|
17
16
|
/** GNU make's lookup order when no `-f` is given. */
|
|
@@ -138,19 +137,24 @@ export function makefileDefines(facts, target) {
|
|
|
138
137
|
export function readMakefile(repoRoot, dir, tree = new RepoTree(repoRoot)) {
|
|
139
138
|
for (const name of MAKEFILE_NAMES) {
|
|
140
139
|
const rel = dir === '.' || dir === '' ? name : `${dir}/${name}`;
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
140
|
+
// pcic-e6xa: read through the tree, which containment-checks the file it
|
|
141
|
+
// actually opens — `lookup` alone cannot, since with a complete inventory
|
|
142
|
+
// (pcic-csf) no directory is listed and a real link at that path is never
|
|
143
|
+
// seen. A Makefile committed as a link out of the repository is not read.
|
|
144
|
+
const read = tree.readText(rel, { maxBytes: MAX_FILE_SIZE });
|
|
145
|
+
switch (read.state) {
|
|
146
|
+
case 'found':
|
|
147
|
+
return parseMakefileTargets(read.content, rel);
|
|
148
|
+
// The file is there and its targets cannot be known: oversized, not
|
|
149
|
+
// readable, or listed by a caller's inventory without being fetched.
|
|
150
|
+
// Reporting its targets as missing would be a false positive, so the
|
|
151
|
+
// facts say "unverifiable" and callers report nothing against it.
|
|
152
|
+
case 'too-large':
|
|
153
|
+
case 'unreadable':
|
|
154
|
+
case 'unfetched':
|
|
149
155
|
return { file: rel, targets: [], patterns: [], unverifiable: true };
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
catch {
|
|
153
|
-
continue;
|
|
156
|
+
default:
|
|
157
|
+
continue; // absent, or out of the root: try the next name
|
|
154
158
|
}
|
|
155
159
|
}
|
|
156
160
|
return undefined;
|
package/dist/makefile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makefile.js","sourceRoot":"","sources":["../src/makefile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"makefile.js","sourceRoot":"","sources":["../src/makefile.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,7 +37,7 @@ export type ManifestData = {
|
|
|
37
37
|
*
|
|
38
38
|
* @param files Scanned instruction files.
|
|
39
39
|
* @param manifests Raw text of any manifest files that were read by the scanner.
|
|
40
|
-
*
|
|
40
|
+
* File-existence checks go through `context.tree` (pcic-e6xa).
|
|
41
41
|
*/
|
|
42
42
|
export declare function detectManifestConsistency(context: RepoContext): PromptCiIssue[];
|
|
43
43
|
//# sourceMappingURL=manifest-consistency.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest-consistency.d.ts","sourceRoot":"","sources":["../src/manifest-consistency.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;
|
|
1
|
+
{"version":3,"file":"manifest-consistency.d.ts","sourceRoot":"","sources":["../src/manifest-consistency.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAmB,aAAa,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAUrD,MAAM,MAAM,YAAY,GAAG;IACzB,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAgwBF;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,WAAW,GAAG,aAAa,EAAE,CAuB/E"}
|
|
@@ -18,12 +18,11 @@
|
|
|
18
18
|
* Findings are heuristic — wording is intentionally cautious.
|
|
19
19
|
*/
|
|
20
20
|
import * as crypto from 'node:crypto';
|
|
21
|
-
import * as fs from 'node:fs';
|
|
22
|
-
import * as path from 'node:path';
|
|
23
21
|
import { buildCodeMask } from './markdown-fences.js';
|
|
24
22
|
import { fileIdPath } from './finding-id.js';
|
|
25
23
|
import { BUN_BUILTINS, analyzeCommands } from './command-validity.js';
|
|
26
24
|
import { anyWorkspaceHasScript, isKnownBinary } from './workspace-manifests.js';
|
|
25
|
+
import { treeFor } from './repo-tree.js';
|
|
27
26
|
// ── Helpers ───────────────────────────────────────────────────────────────────
|
|
28
27
|
function issueId(key) {
|
|
29
28
|
const hash = crypto.createHash('sha1').update(key).digest('hex').slice(0, 12);
|
|
@@ -35,15 +34,20 @@ function issueId(key) {
|
|
|
35
34
|
* but the project actually uses Poetry (pyproject.toml with [tool.poetry]) and has no
|
|
36
35
|
* requirements.txt. Running the pip command would immediately fail.
|
|
37
36
|
*/
|
|
38
|
-
function checkPipVsPoetry(files, pyprojectContent,
|
|
37
|
+
function checkPipVsPoetry(files, pyprojectContent, tree) {
|
|
39
38
|
const isPoetry = /\[tool\.poetry\]/.test(pyprojectContent) ||
|
|
40
39
|
/build-backend\s*=\s*["'][^"']*poetry[^"']*["']/i.test(pyprojectContent);
|
|
41
40
|
if (!isPoetry)
|
|
42
41
|
return null;
|
|
43
42
|
// Only flag when requirements.txt is genuinely absent — some Poetry projects
|
|
44
43
|
// export a requirements.txt as an artefact; if it exists the instruction is valid.
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
//
|
|
45
|
+
// pcic-e6xa: asked through the scan's tree. The name is fixed, but a
|
|
46
|
+
// `requirements.txt` committed as a link out of the repository used to decide
|
|
47
|
+
// whether this `high` finding fires, and in the hosted product the scan root
|
|
48
|
+
// is a server temp directory. The tree also lets a caller's file inventory
|
|
49
|
+
// answer when the repository is not on disk (pcic-csf).
|
|
50
|
+
if (tree.exists('requirements.txt'))
|
|
47
51
|
return null;
|
|
48
52
|
const PIP_INSTALL_REQUIREMENTS_RE = /pip\s+install\s+-r\s+requirements\.txt/i;
|
|
49
53
|
const offendingFiles = files.filter((f) => PIP_INSTALL_REQUIREMENTS_RE.test(f.content));
|
|
@@ -698,10 +702,10 @@ function checkJsToolingMismatch(context) {
|
|
|
698
702
|
*
|
|
699
703
|
* @param files Scanned instruction files.
|
|
700
704
|
* @param manifests Raw text of any manifest files that were read by the scanner.
|
|
701
|
-
*
|
|
705
|
+
* File-existence checks go through `context.tree` (pcic-e6xa).
|
|
702
706
|
*/
|
|
703
707
|
export function detectManifestConsistency(context) {
|
|
704
|
-
const { files, manifests
|
|
708
|
+
const { files, manifests } = context;
|
|
705
709
|
const issues = [];
|
|
706
710
|
if (manifests.packageJson) {
|
|
707
711
|
issues.push(...checkJsLibraryVersionMismatch(files, manifests.packageJson));
|
|
@@ -713,7 +717,7 @@ export function detectManifestConsistency(context) {
|
|
|
713
717
|
if (pmIssue)
|
|
714
718
|
issues.push(pmIssue);
|
|
715
719
|
if (manifests.pyproject) {
|
|
716
|
-
const toolingIssue = checkPipVsPoetry(files, manifests.pyproject,
|
|
720
|
+
const toolingIssue = checkPipVsPoetry(files, manifests.pyproject, treeFor(context));
|
|
717
721
|
if (toolingIssue)
|
|
718
722
|
issues.push(toolingIssue);
|
|
719
723
|
issues.push(...checkPythonVersionMismatch(files, manifests.pyproject));
|