@descryy/core 0.3.0 → 0.5.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/budget/reply.d.ts +11 -46
- package/dist/budget/reply.d.ts.map +1 -1
- package/dist/budget/reply.js +10 -39
- package/dist/budget/reply.js.map +1 -1
- package/dist/budget/size.d.ts +2 -21
- package/dist/budget/size.d.ts.map +1 -1
- package/dist/budget/size.js +3 -24
- package/dist/budget/size.js.map +1 -1
- package/dist/capabilities/preconditions.d.ts +7 -68
- package/dist/capabilities/preconditions.d.ts.map +1 -1
- package/dist/capabilities/preconditions.js +6 -57
- package/dist/capabilities/preconditions.js.map +1 -1
- package/dist/contracts/engine.d.ts +26 -12
- package/dist/contracts/engine.d.ts.map +1 -1
- package/dist/contracts/engine.js +28 -11
- package/dist/contracts/engine.js.map +1 -1
- package/dist/contracts/index.d.ts +1 -1
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/contracts/index.js.map +1 -1
- package/dist/contracts/orphans.d.ts +28 -77
- package/dist/contracts/orphans.d.ts.map +1 -1
- package/dist/contracts/orphans.js +124 -94
- package/dist/contracts/orphans.js.map +1 -1
- package/dist/contracts/paths.d.ts +4 -114
- package/dist/contracts/paths.d.ts.map +1 -1
- package/dist/contracts/paths.js +7 -140
- package/dist/contracts/paths.js.map +1 -1
- package/dist/contracts/shapes.d.ts +13 -66
- package/dist/contracts/shapes.d.ts.map +1 -1
- package/dist/contracts/shapes.js +20 -91
- package/dist/contracts/shapes.js.map +1 -1
- package/dist/governance/budget.d.ts +12 -48
- package/dist/governance/budget.d.ts.map +1 -1
- package/dist/governance/budget.js +12 -48
- package/dist/governance/budget.js.map +1 -1
- package/dist/governance/candidate-boundary.d.ts +4 -32
- package/dist/governance/candidate-boundary.d.ts.map +1 -1
- package/dist/governance/candidate-boundary.js +4 -32
- package/dist/governance/candidate-boundary.js.map +1 -1
- package/dist/governance/escalation.d.ts +7 -45
- package/dist/governance/escalation.d.ts.map +1 -1
- package/dist/governance/escalation.js +7 -45
- package/dist/governance/escalation.js.map +1 -1
- package/dist/governance/fact-boundary.d.ts +7 -49
- package/dist/governance/fact-boundary.d.ts.map +1 -1
- package/dist/governance/fact-boundary.js +5 -43
- package/dist/governance/fact-boundary.js.map +1 -1
- package/dist/governance/finding-funnel.d.ts +11 -72
- package/dist/governance/finding-funnel.d.ts.map +1 -1
- package/dist/governance/finding-funnel.js +9 -68
- package/dist/governance/finding-funnel.js.map +1 -1
- package/dist/graph/build.d.ts +13 -75
- package/dist/graph/build.d.ts.map +1 -1
- package/dist/graph/build.js +0 -0
- package/dist/graph/build.js.map +1 -1
- package/dist/graph/cross-language.d.ts +4 -43
- package/dist/graph/cross-language.d.ts.map +1 -1
- package/dist/graph/cross-language.js +9 -77
- package/dist/graph/cross-language.js.map +1 -1
- package/dist/graph/index.d.ts +1 -1
- package/dist/graph/index.d.ts.map +1 -1
- package/dist/graph/merge.d.ts +8 -76
- package/dist/graph/merge.d.ts.map +1 -1
- package/dist/graph/merge.js +27 -77
- package/dist/graph/merge.js.map +1 -1
- package/dist/graph/observed-tests.d.ts +7 -68
- package/dist/graph/observed-tests.d.ts.map +1 -1
- package/dist/graph/observed-tests.js +5 -60
- package/dist/graph/observed-tests.js.map +1 -1
- package/dist/graph/persist.d.ts +2 -25
- package/dist/graph/persist.d.ts.map +1 -1
- package/dist/graph/persist.js +2 -25
- package/dist/graph/persist.js.map +1 -1
- package/dist/graph/runtime-confirmation.d.ts +14 -91
- package/dist/graph/runtime-confirmation.d.ts.map +1 -1
- package/dist/graph/runtime-confirmation.js +19 -103
- package/dist/graph/runtime-confirmation.js.map +1 -1
- package/dist/ledger/mint.d.ts +9 -43
- package/dist/ledger/mint.d.ts.map +1 -1
- package/dist/ledger/mint.js +15 -65
- package/dist/ledger/mint.js.map +1 -1
- package/dist/ledger/resolve.d.ts +13 -81
- package/dist/ledger/resolve.d.ts.map +1 -1
- package/dist/ledger/resolve.js +13 -76
- package/dist/ledger/resolve.js.map +1 -1
- package/dist/multipr/fingerprint.d.ts +5 -46
- package/dist/multipr/fingerprint.d.ts.map +1 -1
- package/dist/multipr/fingerprint.js +22 -74
- package/dist/multipr/fingerprint.js.map +1 -1
- package/dist/multipr/hidden-dependency.d.ts +13 -73
- package/dist/multipr/hidden-dependency.d.ts.map +1 -1
- package/dist/multipr/hidden-dependency.js +12 -63
- package/dist/multipr/hidden-dependency.js.map +1 -1
- package/dist/multipr/mechanical.d.ts +25 -160
- package/dist/multipr/mechanical.d.ts.map +1 -1
- package/dist/multipr/mechanical.js +21 -137
- package/dist/multipr/mechanical.js.map +1 -1
- package/dist/multipr/migration-heads.d.ts +18 -105
- package/dist/multipr/migration-heads.d.ts.map +1 -1
- package/dist/multipr/migration-heads.js +15 -84
- package/dist/multipr/migration-heads.js.map +1 -1
- package/dist/multipr/overlap.d.ts +16 -94
- package/dist/multipr/overlap.d.ts.map +1 -1
- package/dist/multipr/overlap.js +25 -105
- package/dist/multipr/overlap.js.map +1 -1
- package/dist/multipr/scope-store.d.ts +15 -80
- package/dist/multipr/scope-store.d.ts.map +1 -1
- package/dist/multipr/scope-store.js +17 -87
- package/dist/multipr/scope-store.js.map +1 -1
- package/dist/multipr/superseded.d.ts +10 -95
- package/dist/multipr/superseded.d.ts.map +1 -1
- package/dist/multipr/superseded.js +7 -60
- package/dist/multipr/superseded.js.map +1 -1
- package/dist/query/confirmed-facts.d.ts +12 -58
- package/dist/query/confirmed-facts.d.ts.map +1 -1
- package/dist/query/confirmed-facts.js +8 -47
- package/dist/query/confirmed-facts.js.map +1 -1
- package/dist/query/declared-value-closure.d.ts +13 -104
- package/dist/query/declared-value-closure.d.ts.map +1 -1
- package/dist/query/declared-value-closure.js +15 -104
- package/dist/query/declared-value-closure.js.map +1 -1
- package/dist/query/memory.d.ts +5 -9
- package/dist/query/memory.d.ts.map +1 -1
- package/dist/query/memory.js +31 -15
- package/dist/query/memory.js.map +1 -1
- package/dist/query/prominence.d.ts +6 -55
- package/dist/query/prominence.d.ts.map +1 -1
- package/dist/query/prominence.js +6 -55
- package/dist/query/prominence.js.map +1 -1
- package/dist/query/provider.d.ts +28 -81
- package/dist/query/provider.d.ts.map +1 -1
- package/dist/query/provider.js +8 -29
- package/dist/query/provider.js.map +1 -1
- package/dist/query/queries.d.ts +15 -65
- package/dist/query/queries.d.ts.map +1 -1
- package/dist/query/queries.js +43 -100
- package/dist/query/queries.js.map +1 -1
- package/dist/query/refusal-fetch.d.ts +8 -85
- package/dist/query/refusal-fetch.d.ts.map +1 -1
- package/dist/query/refusal-fetch.js +11 -93
- package/dist/query/refusal-fetch.js.map +1 -1
- package/dist/query/refusal-questions.d.ts +17 -92
- package/dist/query/refusal-questions.d.ts.map +1 -1
- package/dist/query/refusal-questions.js +14 -78
- package/dist/query/refusal-questions.js.map +1 -1
- package/dist/query/resolution-floor.d.ts +3 -23
- package/dist/query/resolution-floor.d.ts.map +1 -1
- package/dist/query/resolution-floor.js +3 -23
- package/dist/query/resolution-floor.js.map +1 -1
- package/dist/query/root-cause-score.d.ts +11 -161
- package/dist/query/root-cause-score.d.ts.map +1 -1
- package/dist/query/root-cause-score.js +6 -137
- package/dist/query/root-cause-score.js.map +1 -1
- package/dist/query/row-closure-picture.d.ts +5 -67
- package/dist/query/row-closure-picture.d.ts.map +1 -1
- package/dist/query/row-closure-picture.js +6 -67
- package/dist/query/row-closure-picture.js.map +1 -1
- package/dist/query/similar-incidents.d.ts +6 -41
- package/dist/query/similar-incidents.d.ts.map +1 -1
- package/dist/query/similar-incidents.js +15 -69
- package/dist/query/similar-incidents.js.map +1 -1
- package/dist/query/sqlite.d.ts +3 -7
- package/dist/query/sqlite.d.ts.map +1 -1
- package/dist/query/sqlite.js +13 -16
- package/dist/query/sqlite.js.map +1 -1
- package/dist/query/test-coverage.d.ts +5 -45
- package/dist/query/test-coverage.d.ts.map +1 -1
- package/dist/query/test-coverage.js +10 -53
- package/dist/query/test-coverage.js.map +1 -1
- package/dist/query/traverse.d.ts +22 -126
- package/dist/query/traverse.d.ts.map +1 -1
- package/dist/query/traverse.js +0 -0
- package/dist/query/traverse.js.map +1 -1
- package/dist/query/unresolved.d.ts +19 -164
- package/dist/query/unresolved.d.ts.map +1 -1
- package/dist/query/unresolved.js +11 -138
- package/dist/query/unresolved.js.map +1 -1
- package/dist/query/verification-status.d.ts +12 -109
- package/dist/query/verification-status.d.ts.map +1 -1
- package/dist/query/verification-status.js +9 -99
- package/dist/query/verification-status.js.map +1 -1
- package/dist/recording/migrate.d.ts +4 -10
- package/dist/recording/migrate.d.ts.map +1 -1
- package/dist/recording/migrate.js +4 -10
- package/dist/recording/migrate.js.map +1 -1
- package/dist/recording/reader.d.ts +2 -7
- package/dist/recording/reader.d.ts.map +1 -1
- package/dist/recording/reader.js +2 -7
- package/dist/recording/reader.js.map +1 -1
- package/dist/recording/redact.d.ts +6 -57
- package/dist/recording/redact.d.ts.map +1 -1
- package/dist/recording/redact.js +8 -64
- package/dist/recording/redact.js.map +1 -1
- package/dist/recording/schema.d.ts +3 -38
- package/dist/recording/schema.d.ts.map +1 -1
- package/dist/recording/schema.js +3 -38
- package/dist/recording/schema.js.map +1 -1
- package/dist/recording/writer.d.ts +11 -74
- package/dist/recording/writer.d.ts.map +1 -1
- package/dist/recording/writer.js +3 -43
- package/dist/recording/writer.js.map +1 -1
- package/dist/scoping/fanout.d.ts +6 -68
- package/dist/scoping/fanout.d.ts.map +1 -1
- package/dist/scoping/fanout.js +6 -68
- package/dist/scoping/fanout.js.map +1 -1
- package/dist/scoping/score.d.ts +20 -70
- package/dist/scoping/score.d.ts.map +1 -1
- package/dist/scoping/score.js +20 -70
- package/dist/scoping/score.js.map +1 -1
- package/dist/scoping/tiers.d.ts +4 -16
- package/dist/scoping/tiers.d.ts.map +1 -1
- package/dist/scoping/tiers.js +4 -16
- package/dist/scoping/tiers.js.map +1 -1
- package/dist/scoping/traverse.d.ts +3 -25
- package/dist/scoping/traverse.d.ts.map +1 -1
- package/dist/scoping/traverse.js +14 -49
- package/dist/scoping/traverse.js.map +1 -1
- package/dist/scoping/weights.d.ts +10 -74
- package/dist/scoping/weights.d.ts.map +1 -1
- package/dist/scoping/weights.js +14 -86
- package/dist/scoping/weights.js.map +1 -1
- package/dist/sources/confirmed/incidents.d.ts +5 -35
- package/dist/sources/confirmed/incidents.d.ts.map +1 -1
- package/dist/sources/confirmed/incidents.js +14 -48
- package/dist/sources/confirmed/incidents.js.map +1 -1
- package/dist/sources/git/diff.d.ts +71 -65
- package/dist/sources/git/diff.d.ts.map +1 -1
- package/dist/sources/git/diff.js +136 -83
- package/dist/sources/git/diff.js.map +1 -1
- package/dist/sources/git/env.d.ts +7 -0
- package/dist/sources/git/env.d.ts.map +1 -1
- package/dist/sources/git/env.js +10 -11
- package/dist/sources/git/env.js.map +1 -1
- package/dist/sources/git/history.d.ts +64 -84
- package/dist/sources/git/history.d.ts.map +1 -1
- package/dist/sources/git/history.js +141 -112
- package/dist/sources/git/history.js.map +1 -1
- package/dist/sources/git/incidents.d.ts +13 -75
- package/dist/sources/git/incidents.d.ts.map +1 -1
- package/dist/sources/git/incidents.js +21 -91
- package/dist/sources/git/incidents.js.map +1 -1
- package/dist/sources/git/index.d.ts +5 -3
- package/dist/sources/git/index.d.ts.map +1 -1
- package/dist/sources/git/index.js +3 -2
- package/dist/sources/git/index.js.map +1 -1
- package/dist/sources/git/source.d.ts +9 -79
- package/dist/sources/git/source.d.ts.map +1 -1
- package/dist/sources/git/source.js +0 -0
- package/dist/sources/git/source.js.map +1 -1
- package/dist/sources/migrations/across-change.d.ts +94 -0
- package/dist/sources/migrations/across-change.d.ts.map +1 -0
- package/dist/sources/migrations/across-change.js +278 -0
- package/dist/sources/migrations/across-change.js.map +1 -0
- package/dist/sources/migrations/dialects.d.ts +20 -36
- package/dist/sources/migrations/dialects.d.ts.map +1 -1
- package/dist/sources/migrations/dialects.js +11 -36
- package/dist/sources/migrations/dialects.js.map +1 -1
- package/dist/sources/migrations/index.d.ts +3 -1
- package/dist/sources/migrations/index.d.ts.map +1 -1
- package/dist/sources/migrations/index.js +2 -1
- package/dist/sources/migrations/index.js.map +1 -1
- package/dist/sources/migrations/read.d.ts +14 -79
- package/dist/sources/migrations/read.d.ts.map +1 -1
- package/dist/sources/migrations/read.js +14 -89
- package/dist/sources/migrations/read.js.map +1 -1
- package/dist/sources/workspace/workspace.d.ts +6 -42
- package/dist/sources/workspace/workspace.d.ts.map +1 -1
- package/dist/sources/workspace/workspace.js +10 -53
- package/dist/sources/workspace/workspace.js.map +1 -1
- package/dist/store/driver/driver.d.ts +9 -38
- package/dist/store/driver/driver.d.ts.map +1 -1
- package/dist/store/driver/driver.js +4 -22
- package/dist/store/driver/driver.js.map +1 -1
- package/dist/store/driver/node-sqlite.d.ts +3 -12
- package/dist/store/driver/node-sqlite.d.ts.map +1 -1
- package/dist/store/driver/node-sqlite.js +4 -18
- package/dist/store/driver/node-sqlite.js.map +1 -1
- package/dist/store/index.d.ts +2 -7
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +4 -10
- package/dist/store/index.js.map +1 -1
- package/dist/store/migrate.d.ts +14 -50
- package/dist/store/migrate.d.ts.map +1 -1
- package/dist/store/migrate.js +15 -52
- package/dist/store/migrate.js.map +1 -1
- package/dist/store/reader.d.ts +19 -84
- package/dist/store/reader.d.ts.map +1 -1
- package/dist/store/reader.js +25 -92
- package/dist/store/reader.js.map +1 -1
- package/dist/store/schema.d.ts +14 -76
- package/dist/store/schema.d.ts.map +1 -1
- package/dist/store/schema.js +14 -76
- package/dist/store/schema.js.map +1 -1
- package/dist/store/writer.d.ts +14 -88
- package/dist/store/writer.d.ts.map +1 -1
- package/dist/store/writer.js +29 -123
- package/dist/store/writer.js.map +1 -1
- package/dist/tiers/certify.d.ts +46 -281
- package/dist/tiers/certify.d.ts.map +1 -1
- package/dist/tiers/certify.js +46 -226
- package/dist/tiers/certify.js.map +1 -1
- package/dist/tiers/ladder.d.ts +7 -51
- package/dist/tiers/ladder.d.ts.map +1 -1
- package/dist/tiers/ladder.js +13 -89
- package/dist/tiers/ladder.js.map +1 -1
- package/dist/validation/attributes.d.ts +47 -0
- package/dist/validation/attributes.d.ts.map +1 -0
- package/dist/validation/attributes.js +130 -0
- package/dist/validation/attributes.js.map +1 -0
- package/dist/validation/config-graph.d.ts +7 -56
- package/dist/validation/config-graph.d.ts.map +1 -1
- package/dist/validation/config-graph.js +15 -61
- package/dist/validation/config-graph.js.map +1 -1
- package/dist/validation/env.d.ts +53 -2
- package/dist/validation/env.d.ts.map +1 -1
- package/dist/validation/env.js +99 -4
- package/dist/validation/env.js.map +1 -1
- package/dist/validation/index.d.ts +5 -1
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +3 -1
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/join-substitution.d.ts +22 -120
- package/dist/validation/join-substitution.d.ts.map +1 -1
- package/dist/validation/join-substitution.js +13 -90
- package/dist/validation/join-substitution.js.map +1 -1
- package/dist/validation/migration-integrity.d.ts +72 -0
- package/dist/validation/migration-integrity.d.ts.map +1 -0
- package/dist/validation/migration-integrity.js +238 -0
- package/dist/validation/migration-integrity.js.map +1 -0
- package/dist/validation/migrations.d.ts +23 -88
- package/dist/validation/migrations.d.ts.map +1 -1
- package/dist/validation/migrations.js +20 -79
- package/dist/validation/migrations.js.map +1 -1
- package/dist/validation/nodes.d.ts +3 -1
- package/dist/validation/nodes.d.ts.map +1 -1
- package/dist/validation/nodes.js +3 -1
- package/dist/validation/nodes.js.map +1 -1
- package/dist/validation/rollback.d.ts +10 -73
- package/dist/validation/rollback.d.ts.map +1 -1
- package/dist/validation/rollback.js +23 -81
- package/dist/validation/rollback.js.map +1 -1
- package/dist/validation/route-drift.d.ts +9 -62
- package/dist/validation/route-drift.d.ts.map +1 -1
- package/dist/validation/route-drift.js +7 -52
- package/dist/validation/route-drift.js.map +1 -1
- package/dist/validation/sources.d.ts +16 -94
- package/dist/validation/sources.d.ts.map +1 -1
- package/dist/validation/sources.js +51 -147
- package/dist/validation/sources.js.map +1 -1
- package/dist/worker/pool.d.ts +6 -45
- package/dist/worker/pool.d.ts.map +1 -1
- package/dist/worker/pool.js +5 -42
- package/dist/worker/pool.js.map +1 -1
- package/dist/worker/protocol.d.ts +7 -20
- package/dist/worker/protocol.d.ts.map +1 -1
- package/dist/worker/protocol.js +3 -10
- package/dist/worker/protocol.js.map +1 -1
- package/dist/worker/traversal.worker.d.ts +2 -21
- package/dist/worker/traversal.worker.d.ts.map +1 -1
- package/dist/worker/traversal.worker.js +4 -23
- package/dist/worker/traversal.worker.js.map +1 -1
- package/package.json +11 -2
|
@@ -1,32 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Reading git history.
|
|
3
|
-
*
|
|
4
|
-
* No dependency: `git` is invoked directly. A library would buy parsing help and
|
|
5
|
-
* cost a dependency in a package that has none by design, and the format below
|
|
6
|
-
* is chosen so parsing is unambiguous rather than clever.
|
|
7
|
-
*
|
|
8
|
-
* ## Renames are resolved, not ignored
|
|
9
|
-
*
|
|
10
|
-
* `CHANGES_WITH` is file-to-file, and `FILE` identity is DEC-004's documented
|
|
11
|
-
* path fallback — a file's only stable name *is* its path. So a rename silently
|
|
12
|
-
* splits a file's history in two: the co-change weight built up over two years
|
|
13
|
-
* resets to zero, and nothing in the output reveals it happened. That is the
|
|
14
|
-
* exact failure DEC-004 exists to prevent, arriving through the one node type
|
|
15
|
-
* that cannot avoid it.
|
|
16
|
-
*
|
|
17
|
-
* The fix is `-M` plus a canonicalisation pass: history is walked newest-first,
|
|
18
|
-
* and every historical path is mapped forward to the name the file has today. It
|
|
19
|
-
* makes DEC-004's guarantee total for files that git can *follow*; where git's
|
|
20
|
-
* rename detection fails (a rewrite with no similarity), the guarantee stays
|
|
21
|
-
* partial and that is now a bounded, stated gap rather than an unbounded one.
|
|
2
|
+
* Reading git history. No dependency: git invoked directly, no parsing library. Renames are resolved, not ignored: FILE identity is path-based (DEC-004), so an unresolved rename would silently reset co-change weight to zero.
|
|
3
|
+
* `-M` plus a newest-first canonicalisation pass maps every historical path forward to today's name — total where git can follow the rename, a disclosed partial gap where it can't (a rewrite with no similarity match).
|
|
22
4
|
*/
|
|
23
5
|
import { execFile } from "node:child_process";
|
|
6
|
+
import { isAbsolute, relative } from "node:path";
|
|
24
7
|
import { promisify } from "node:util";
|
|
25
|
-
import { cleanGitEnv } from "./env.js";
|
|
8
|
+
import { cleanGitEnv, HARDENED_GIT_CONFIG_ARGS } from "./env.js";
|
|
26
9
|
const execFileAsync = promisify(execFile);
|
|
27
|
-
// Always strips GIT_DIR/GIT_WORK_TREE/GIT_INDEX_FILE/GIT_COMMON_DIR
|
|
10
|
+
// Always strips GIT_DIR/GIT_WORK_TREE/GIT_INDEX_FILE/GIT_COMMON_DIR, sets
|
|
11
|
+
// GIT_CONFIG_NOSYSTEM and applies HARDENED_GIT_CONFIG_ARGS — see env.ts (B-11).
|
|
28
12
|
function run(command, args, options) {
|
|
29
|
-
return execFileAsync(command, args, {
|
|
13
|
+
return execFileAsync(command, [...HARDENED_GIT_CONFIG_ARGS, ...args], {
|
|
30
14
|
...options,
|
|
31
15
|
encoding: "utf8",
|
|
32
16
|
env: cleanGitEnv(),
|
|
@@ -39,24 +23,62 @@ export async function gitHead(cwd) {
|
|
|
39
23
|
const { stdout } = await run("git", ["rev-parse", "HEAD"], { cwd });
|
|
40
24
|
return stdout.trim();
|
|
41
25
|
}
|
|
26
|
+
/** Thrown when the git process itself could not be run (missing binary,
|
|
27
|
+
* bad cwd) — distinct from git running and answering "not a repository".
|
|
28
|
+
* Collapsing the two (as this used to) teaches a false fact with no way to detect it; every caller must let this propagate rather than treat it as "not a repository". */
|
|
29
|
+
export class GitUnavailableError extends Error {
|
|
30
|
+
constructor(cwd, cause) {
|
|
31
|
+
const detail = cause instanceof Error ? cause.message : String(cause);
|
|
32
|
+
super(`git could not be run in "${cwd}" (${detail}). This is not a fact about whether that ` +
|
|
33
|
+
"directory is a git repository — check that the directory exists and that git is " +
|
|
34
|
+
"installed and reachable on PATH.");
|
|
35
|
+
this.name = "GitUnavailableError";
|
|
36
|
+
this.cause = cause;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/** True only when the git process never started (spawn failed — string
|
|
40
|
+
* `code`, no stdout/stderr), vs. running and exiting non-zero (numeric
|
|
41
|
+
* code, populated output) — the only signal distinguishing the two cases. */
|
|
42
|
+
function isSpawnFailure(err) {
|
|
43
|
+
return (typeof err === "object" &&
|
|
44
|
+
err !== null &&
|
|
45
|
+
"code" in err &&
|
|
46
|
+
typeof err.code === "string");
|
|
47
|
+
}
|
|
42
48
|
export async function isGitRepository(cwd) {
|
|
43
49
|
try {
|
|
44
50
|
const { stdout } = await run("git", ["rev-parse", "--is-inside-work-tree"], { cwd });
|
|
45
51
|
return stdout.trim() === "true";
|
|
46
52
|
}
|
|
47
|
-
catch {
|
|
53
|
+
catch (err) {
|
|
54
|
+
if (isSpawnFailure(err))
|
|
55
|
+
throw new GitUnavailableError(cwd, err);
|
|
48
56
|
return false;
|
|
49
57
|
}
|
|
50
58
|
}
|
|
59
|
+
/** Whether `absolutePath` is tracked by git in `cwd`. A-F1: a bare module
|
|
60
|
+
* specifier resolves against the scanned repo's own node_modules — a real
|
|
61
|
+
* `npm install` leaves it untracked, but a hostile repo can COMMIT a payload there for a victim who only clones and never runs install; tracked-in-git is the discriminator. Returns null (not false) when `cwd` isn't a git repo at all — "cannot determine" must never collapse into "untracked, therefore safe". Outside `cwd` entirely returns false. */
|
|
62
|
+
export async function isPathTrackedByGit(cwd, absolutePath) {
|
|
63
|
+
const rel = relative(cwd, absolutePath);
|
|
64
|
+
if (rel === "" || rel.startsWith("..") || isAbsolute(rel))
|
|
65
|
+
return false;
|
|
66
|
+
if (!(await isGitRepository(cwd)))
|
|
67
|
+
return null;
|
|
68
|
+
try {
|
|
69
|
+
const { stdout } = await run("git", ["ls-files", "-z", "--", rel], { cwd });
|
|
70
|
+
return stdout.length > 0;
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
// A repo that refuses ls-files (corrupted index, permissions) is the
|
|
74
|
+
// same "cannot determine" case as no repository — not evidence either way.
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
51
78
|
const LOG_FORMAT = `${RECORD}%H${FIELD}%at${FIELD}%s${FIELD}%b${FIELD}`;
|
|
52
|
-
/**
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
* Shared by `readHistory` and `logForPath` — everything past this point
|
|
56
|
-
* (how paths are resolved, whether a rename mutates shared state) differs
|
|
57
|
-
* enough between the two that sharing further would cost more than it
|
|
58
|
-
* saves; see `readHistory`'s own resolve closure for why.
|
|
59
|
-
*/
|
|
79
|
+
/** Splits one log record into its four fields plus the raw name-status block.
|
|
80
|
+
* Shared by readHistory/logForPath; sharing further isn't worth it since
|
|
81
|
+
* path resolution diverges sharply between the two. */
|
|
60
82
|
function splitRecord(record) {
|
|
61
83
|
if (record.trim() === "")
|
|
62
84
|
return null;
|
|
@@ -72,14 +94,9 @@ function splitRecord(record) {
|
|
|
72
94
|
nameStatus: parts.slice(4).join(FIELD),
|
|
73
95
|
};
|
|
74
96
|
}
|
|
75
|
-
/**
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
* `--no-merges` is deliberate: a merge commit's file list is the union of both
|
|
79
|
-
* branches, so counting it as co-change would report every file in a large merge
|
|
80
|
-
* as coupled to every other. That is the single largest source of false
|
|
81
|
-
* `CHANGES_WITH` edges, and it is free to exclude.
|
|
82
|
-
*/
|
|
97
|
+
/** Read history newest-first, renames followed forward. `--no-merges` is
|
|
98
|
+
* deliberate: a merge's file list is the union of both branches — the
|
|
99
|
+
* single largest source of false CHANGES_WITH edges, and free to exclude. */
|
|
83
100
|
export async function readHistory(cwd, options = {}) {
|
|
84
101
|
const maxCommits = options.maxCommits ?? 2000;
|
|
85
102
|
const maxFiles = options.maxFilesPerCommit ?? 50;
|
|
@@ -106,9 +123,8 @@ export async function readHistory(cwd, options = {}) {
|
|
|
106
123
|
const to = fields[2];
|
|
107
124
|
if (from === undefined || to === undefined)
|
|
108
125
|
continue;
|
|
109
|
-
// Walking newest-first
|
|
110
|
-
// called
|
|
111
|
-
// `to` currently resolves to.
|
|
126
|
+
// Walking newest-first: `to` is the newer name, so anything older
|
|
127
|
+
// called `from` is the same file, known today as `to` resolves.
|
|
112
128
|
if (code.startsWith("R"))
|
|
113
129
|
canonical.set(from, resolve(to));
|
|
114
130
|
changes.push({ path: resolve(to), status: code.startsWith("R") ? "R" : "C", fromPath: resolve(from) });
|
|
@@ -122,10 +138,8 @@ export async function readHistory(cwd, options = {}) {
|
|
|
122
138
|
continue;
|
|
123
139
|
changes.push({ path: resolve(path), status });
|
|
124
140
|
}
|
|
125
|
-
// A commit touching hundreds of files
|
|
126
|
-
//
|
|
127
|
-
// including it makes every file in it co-change with every other. That is
|
|
128
|
-
// O(n^2) noise from a single commit.
|
|
141
|
+
// A commit touching hundreds of files (reformat, dependency bump) says
|
|
142
|
+
// nothing about coupling — including it is O(n^2) noise from one commit.
|
|
129
143
|
if (changes.length === 0 || changes.length > maxFiles) {
|
|
130
144
|
commits.push({ sha, timestamp, subject, body, changes: [] });
|
|
131
145
|
continue;
|
|
@@ -134,14 +148,9 @@ export async function readHistory(cwd, options = {}) {
|
|
|
134
148
|
}
|
|
135
149
|
return commits;
|
|
136
150
|
}
|
|
137
|
-
/**
|
|
138
|
-
*
|
|
139
|
-
*
|
|
140
|
-
* built once at `analyze` time. `--follow` tracks the file across renames;
|
|
141
|
-
* unlike `readHistory`'s whole-repo walk, each commit here reports its own
|
|
142
|
-
* historical name rather than today's — the rename itself is part of what a
|
|
143
|
-
* caller asking "what happened to this file" wants to see.
|
|
144
|
-
*/
|
|
151
|
+
/** Live commit history for one file — distinct from the graph's stored
|
|
152
|
+
* CHANGES_WITH ledger. `--follow` tracks renames; each commit reports its
|
|
153
|
+
* own historical name, not today's — the rename is part of what's asked. */
|
|
145
154
|
export async function logForPath(cwd, path, options = {}) {
|
|
146
155
|
const maxCommits = options.maxCommits ?? 20;
|
|
147
156
|
const { stdout } = await run("git", ["log", "--no-merges", "--follow", "-M", "--name-status", `--max-count=${maxCommits}`, `--format=${LOG_FORMAT}`, "--", path], { cwd, maxBuffer: 64 * 1024 * 1024 });
|
|
@@ -151,9 +160,8 @@ export async function logForPath(cwd, path, options = {}) {
|
|
|
151
160
|
if (split === null)
|
|
152
161
|
continue;
|
|
153
162
|
const { sha, timestamp, subject, body, nameStatus } = split;
|
|
154
|
-
// `--follow` scopes
|
|
155
|
-
//
|
|
156
|
-
// than asserting an invariant a future git version could quietly break.
|
|
163
|
+
// `--follow` scopes to one file's lineage: exactly one line expected
|
|
164
|
+
// per commit, taken rather than asserted (a future git could break it).
|
|
157
165
|
const line = nameStatus.split("\n").find((l) => l.trim() !== "");
|
|
158
166
|
if (line === undefined)
|
|
159
167
|
continue;
|
|
@@ -189,38 +197,9 @@ export async function logForPath(cwd, path, options = {}) {
|
|
|
189
197
|
const totalTouching = countOut.split("\n").filter((l) => l.trim() !== "").length;
|
|
190
198
|
return { commits, totalTouching };
|
|
191
199
|
}
|
|
192
|
-
/**
|
|
193
|
-
*
|
|
194
|
-
*
|
|
195
|
-
*
|
|
196
|
-
* `readHistory` walks history from `HEAD` only — co-change must stay scoped to
|
|
197
|
-
* mainline, or work in progress on other branches would pollute
|
|
198
|
-
* `CHANGES_WITH` — and drops merge commits, because a merge's file list is
|
|
199
|
-
* the union of both branches (see the module doc). Both are correct for
|
|
200
|
-
* co-change. Neither is correct for resolving what a revert commit names:
|
|
201
|
-
* `git revert`'s `This reverts commit <sha>` line can point at a commit that
|
|
202
|
-
* **is** a merge ("Revert Merge pull request #N"), or at a commit that is
|
|
203
|
-
* real and still in the object database but not an ancestor of `HEAD` — an
|
|
204
|
-
* abandoned branch, or one deleted after a squash/rebase merge whose objects
|
|
205
|
-
* have not yet been garbage-collected. Neither case means the commit does
|
|
206
|
-
* not exist; `readHistory`'s index just cannot see it.
|
|
207
|
-
*
|
|
208
|
-
* `git cat-file` and `git diff-tree` operate on the object database directly
|
|
209
|
-
* and enforce neither constraint, so this is the fallback `createGitSource`
|
|
210
|
-
* uses once `readHistory`'s own index has already missed a revert target.
|
|
211
|
-
*
|
|
212
|
-
* Returns `null` only when the object genuinely does not exist — the
|
|
213
|
-
* squash-merge case, where the original commit was never an ancestor of
|
|
214
|
-
* anything that survived and its object is gone from the store. That is the
|
|
215
|
-
* one case nothing can resolve; the caller must disclose it rather than
|
|
216
|
-
* drop it silently (CLAUDE.md rule 7 — every fallback is labelled).
|
|
217
|
-
*
|
|
218
|
-
* File paths returned here are **not** forward-canonicalised through
|
|
219
|
-
* `readHistory`'s rename map — this commit was never visited by that walk.
|
|
220
|
-
* A file renamed on mainline *after* this commit landed will show under its
|
|
221
|
-
* name at the time, not today's name. That is a narrower, disclosed version
|
|
222
|
-
* of the same rename gap the module doc already states for the primary walk.
|
|
223
|
-
*/
|
|
200
|
+
/** Resolve one commit by sha, bypassing readHistory's HEAD-reachability and
|
|
201
|
+
* --no-merges filters — a revert can name a merge or an unreachable, not-yet-GC'd
|
|
202
|
+
* commit that readHistory's index can't see. Returns null only if the object is truly gone; caller must disclose, never drop silently (rule 7). Paths aren't forward-canonicalised (disclosed gap). */
|
|
224
203
|
export async function resolveCommitBySha(cwd, sha, maxFilesPerCommit = 50) {
|
|
225
204
|
try {
|
|
226
205
|
await run("git", ["cat-file", "-e", `${sha}^{commit}`], { cwd });
|
|
@@ -233,11 +212,9 @@ export async function resolveCommitBySha(cwd, sha, maxFilesPerCommit = 50) {
|
|
|
233
212
|
const [tsRaw, subject, ...bodyParts] = metaOut.split(FIELD);
|
|
234
213
|
const timestamp = Number(tsRaw ?? 0);
|
|
235
214
|
const body = bodyParts.join(FIELD).replace(/\n+$/, "");
|
|
236
|
-
// Diff against the first parent
|
|
237
|
-
//
|
|
238
|
-
//
|
|
239
|
-
// list a revert of that merge names. A root commit has no parent at all;
|
|
240
|
-
// fall back to a diff against the empty tree.
|
|
215
|
+
// Diff against the first parent — identical to normal for an ordinary
|
|
216
|
+
// commit, "what this merge brought in" for a merge. Root commit: diff
|
|
217
|
+
// against the empty tree.
|
|
241
218
|
let nameStatus;
|
|
242
219
|
try {
|
|
243
220
|
({ stdout: nameStatus } = await run("git", ["diff-tree", "-M", "--no-commit-id", "--name-status", "-r", `${sha}^1`, sha], { cwd, maxBuffer: 64 * 1024 * 1024 }));
|
|
@@ -273,26 +250,14 @@ export async function resolveCommitBySha(cwd, sha, maxFilesPerCommit = 50) {
|
|
|
273
250
|
timestamp,
|
|
274
251
|
subject: subject ?? "",
|
|
275
252
|
body,
|
|
276
|
-
// Same reformat/dependency-bump cap
|
|
277
|
-
//
|
|
278
|
-
// INCIDENT_CORRELATED out into hundreds of edges either.
|
|
253
|
+
// Same reformat/dependency-bump cap readHistory applies — a big merge
|
|
254
|
+
// revert shouldn't fan INCIDENT_CORRELATED into hundreds of edges.
|
|
279
255
|
changes: changes.length > maxFilesPerCommit ? [] : changes,
|
|
280
256
|
};
|
|
281
257
|
}
|
|
282
|
-
/**
|
|
283
|
-
*
|
|
284
|
-
*
|
|
285
|
-
* `base...head` (three dots) rather than `base..head`, and the difference is the
|
|
286
|
-
* whole point: two dots diffs the two tips, so every file changed on `base`
|
|
287
|
-
* since the branch point appears in the result as though the PR had touched it.
|
|
288
|
-
* On a branch a week behind `main` that is most of the diff, and the blast
|
|
289
|
-
* radius it produces belongs to somebody else's change. Three dots diffs against
|
|
290
|
-
* the merge base, which is what a reviewer is actually looking at.
|
|
291
|
-
*
|
|
292
|
-
* Deletions are included. A deleted file's nodes may still be in the graph, and
|
|
293
|
-
* *what called the thing you just removed* is the most useful question a diff
|
|
294
|
-
* can be asked.
|
|
295
|
-
*/
|
|
258
|
+
/** Files changed between two refs, for PR analysis. `base...head` (three
|
|
259
|
+
* dots, not two) diffs against the merge base — two dots would include every
|
|
260
|
+
* file changed on base since the branch point, someone else's change. Deletions included: what called the removed thing is the useful question. */
|
|
296
261
|
export async function changedFiles(cwd, base, head = "HEAD") {
|
|
297
262
|
const { stdout } = await run("git", ["diff", "--name-only", "-M", `${base}...${head}`], {
|
|
298
263
|
cwd,
|
|
@@ -311,4 +276,68 @@ export async function filesInCommit(cwd, sha) {
|
|
|
311
276
|
.map((l) => l.trim())
|
|
312
277
|
.filter((l) => l !== "");
|
|
313
278
|
}
|
|
279
|
+
/**
|
|
280
|
+
* Which of these paths git reports as uncommitted — modified, staged or untracked.
|
|
281
|
+
*
|
|
282
|
+
* One `git status --porcelain` over the named paths rather than a call per
|
|
283
|
+
* file. `--porcelain` is the stable machine format, guaranteed across versions,
|
|
284
|
+
* and its two status columns cover every state that matters here at once: a
|
|
285
|
+
* file the index has and `HEAD` does not, one the working tree has and the
|
|
286
|
+
* index does not, and one git has never seen.
|
|
287
|
+
*
|
|
288
|
+
* The distinction this exists to make is not cosmetic. A path absent from a
|
|
289
|
+
* ref-to-ref diff might be uncommitted work, or it might be a file the caller
|
|
290
|
+
* named that this branch simply did not touch. Both make a coverage section
|
|
291
|
+
* describe something else; only the first is a fact about timing that the
|
|
292
|
+
* developer can act on in the next thirty seconds.
|
|
293
|
+
*/
|
|
294
|
+
export async function uncommittedAmong(cwd, paths) {
|
|
295
|
+
if (paths.length === 0)
|
|
296
|
+
return [];
|
|
297
|
+
const { stdout } = await run("git", ["status", "--porcelain", "--untracked-files=all", "--", ...paths], { cwd, maxBuffer: 64 * 1024 * 1024 });
|
|
298
|
+
const named = new Set(paths);
|
|
299
|
+
const out = [];
|
|
300
|
+
for (const line of stdout.split("\n")) {
|
|
301
|
+
// `XY <path>`, and for a rename `XY <old> -> <new>`. The path starts at
|
|
302
|
+
// column 3; a rename's new name is what the working tree has.
|
|
303
|
+
if (line.length < 4)
|
|
304
|
+
continue;
|
|
305
|
+
const rest = line.slice(3).trim();
|
|
306
|
+
const path = rest.includes(" -> ") ? rest.slice(rest.indexOf(" -> ") + 4) : rest;
|
|
307
|
+
const unquoted = path.startsWith('"') && path.endsWith('"') ? path.slice(1, -1) : path;
|
|
308
|
+
if (named.has(unquoted))
|
|
309
|
+
out.push(unquoted);
|
|
310
|
+
}
|
|
311
|
+
return out.sort();
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* The paths a working tree changes, as {@link changedFiles} does for a range.
|
|
315
|
+
*
|
|
316
|
+
* Name-only, so it is the cheap counterpart to `gitWorkingTreeChange`: a caller
|
|
317
|
+
* that only needs to know *which* files changed should not pay for every patch.
|
|
318
|
+
*
|
|
319
|
+
* **Untracked is on by default here**, unlike the diff-producing function. That
|
|
320
|
+
* one is a library primitive whose existing callers must not change behaviour
|
|
321
|
+
* by upgrading. This one exists to answer "what is the change about to be
|
|
322
|
+
* committed", and a new file written and not yet added is part of that change —
|
|
323
|
+
* defaulting it off would mean the function misses, by default, the case it was
|
|
324
|
+
* written for.
|
|
325
|
+
*/
|
|
326
|
+
export async function workingTreeChangedFiles(cwd, options = {}) {
|
|
327
|
+
const scope = options.scope ?? "all";
|
|
328
|
+
const revisionArgs = scope === "staged" ? ["--cached"] : scope === "all" ? ["HEAD"] : [];
|
|
329
|
+
const read = async (args) => {
|
|
330
|
+
const { stdout } = await run("git", args, { cwd, maxBuffer: 64 * 1024 * 1024 });
|
|
331
|
+
return stdout
|
|
332
|
+
.split("\n")
|
|
333
|
+
.map((line) => line.trim())
|
|
334
|
+
.filter((line) => line !== "");
|
|
335
|
+
};
|
|
336
|
+
const tracked = await read(["diff", "--name-only", "-M", ...revisionArgs]);
|
|
337
|
+
const untracked = options.includeUntracked === false
|
|
338
|
+
? []
|
|
339
|
+
: await read(["ls-files", "--others", "--exclude-standard"]);
|
|
340
|
+
const excluded = (path) => (options.exclude ?? []).some((prefix) => path === prefix || path.startsWith(`${prefix}/`));
|
|
341
|
+
return [...new Set([...tracked, ...untracked])].filter((p) => !excluded(p)).sort();
|
|
342
|
+
}
|
|
314
343
|
//# sourceMappingURL=history.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../../src/sources/git/history.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../../src/sources/git/history.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,71 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Which commits
|
|
3
|
-
*
|
|
4
|
-
* Split out of `source.ts` when the answer stopped being one regex. The git
|
|
5
|
-
* source minted an `INCIDENT` for exactly one thing — a commit body carrying
|
|
6
|
-
* `This reverts commit <40 hex>` — and that produced **zero** incidents across
|
|
7
|
-
* three measured repositories (734/459/203 commits) and two in a real product
|
|
8
|
-
* repository. `similarIncidents` was therefore built, tested, correct and
|
|
9
|
-
* starved: its recall is not 0%, it is not computable, because it has never
|
|
10
|
-
* been given a real incident to find.
|
|
11
|
-
*
|
|
12
|
-
* ## The rule every mechanism here answers to
|
|
13
|
-
*
|
|
14
|
-
* `INCIDENT` is an EARNED node (DEC-017). It is never dropped, it survives
|
|
15
|
-
* every rebuild, and `INCIDENT_CORRELATED` biases diff-scoping traversal toward
|
|
16
|
-
* the files it names for as long as the store exists. A wrong incident is not a
|
|
17
|
-
* bad answer that a later run corrects — it is unrecoverable pollution in the
|
|
18
|
-
* one table that cannot be recomputed away. So:
|
|
19
|
-
*
|
|
20
|
-
* **Every mechanism rests on something a person declared. None rests on
|
|
21
|
-
* something Descry inferred.**
|
|
22
|
-
*
|
|
23
|
-
* A revert trailer is written by `git revert`. A `Revert "…"` subject is typed
|
|
24
|
-
* by a person or by GitHub's own button on their behalf. `Fixes #123` is a
|
|
25
|
-
* developer stating that something was broken and this commit fixed it. What is
|
|
26
|
-
* deliberately *not* here is any reading of "fix", "hotfix" or "bug" in prose —
|
|
27
|
-
* the original mechanism's own comment says why, and it applies unchanged to
|
|
28
|
-
* every mechanism added since: matching on the word "fix" would classify
|
|
29
|
-
* ordinary work as an incident.
|
|
30
|
-
*
|
|
31
|
-
* ## Refusals, not guesses
|
|
32
|
-
*
|
|
33
|
-
* A `Revert "X"` naming a subject this history does not contain, or containing
|
|
34
|
-
* twice, produces a `DetectedRefusal` rather than a ranked guess. Two candidates
|
|
35
|
-
* is a genuine ambiguity and picking the nearer one would be recency standing in
|
|
36
|
-
* for evidence — the same discipline every resolver in this project follows.
|
|
37
|
-
*
|
|
38
|
-
* See `DEC-NEXT-incident-minting-beyond-explicit-reverts`.
|
|
2
|
+
* Which commits describe a failure. `INCIDENT` is EARNED (DEC-017, never dropped, biases traversal permanently), so every mechanism rests on something a person declared — never Descry inferring "fix"/"bug" from prose.
|
|
3
|
+
* An ambiguous Revert is a DetectedRefusal, not a ranked guess. See DEC-NEXT-incident-minting-beyond-explicit-reverts.
|
|
39
4
|
*/
|
|
40
5
|
import type { Commit } from "./history.ts";
|
|
41
|
-
/**
|
|
42
|
-
*
|
|
43
|
-
* `INCIDENT` node and on its `FIXED_BY` edge, so a consumer can tell a
|
|
44
|
-
* machine-written trailer from a developer's typed sentence.
|
|
45
|
-
*/
|
|
6
|
+
/** How an incident was established. Written to attrs.detectedVia so a
|
|
7
|
+
* consumer can tell a machine trailer from a developer's typed sentence. */
|
|
46
8
|
export type IncidentMechanism = "explicit-revert" | "manual-revert" | "issue-reference";
|
|
47
9
|
export interface DetectedIncident {
|
|
48
10
|
readonly mechanism: IncidentMechanism;
|
|
49
11
|
/** The commit that resolved it. Always a real commit in the history read. */
|
|
50
12
|
readonly fix: Commit;
|
|
51
|
-
/**
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
* `null` for `issue-reference`, where no bad commit is named at all — the
|
|
55
|
-
* incident is the issue, and that is a different shape rather than a missing
|
|
56
|
-
* field.
|
|
57
|
-
*/
|
|
13
|
+
/** The commit that broke it. `null` for issue-reference — no bad commit is
|
|
14
|
+
* named at all, a different shape rather than a missing field. */
|
|
58
15
|
readonly incidentCommit: Commit | null;
|
|
59
16
|
/** `#123`, for `issue-reference`. `null` for the revert mechanisms. */
|
|
60
17
|
readonly issueRef: string | null;
|
|
61
|
-
/**
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
* For a revert these are the files the *reverted* commit touched — where the
|
|
65
|
-
* defect was. For an issue reference there is no such commit, so they are the
|
|
66
|
-
* files the *fix* touched, which is the same claim reached from the other
|
|
67
|
-
* side: this is where the broken code lived.
|
|
68
|
-
*/
|
|
18
|
+
/** Files to correlate with, deduped and sorted — the reverted commit's
|
|
19
|
+
* files for a revert, else the fix's own (same claim, other side). */
|
|
69
20
|
readonly correlatedPaths: readonly string[];
|
|
70
21
|
}
|
|
71
22
|
/** A revert whose target could not be established. Disclosed, never dropped. */
|
|
@@ -75,16 +26,9 @@ export interface DetectedRefusal {
|
|
|
75
26
|
readonly rawTarget: string;
|
|
76
27
|
readonly reason: string;
|
|
77
28
|
}
|
|
78
|
-
/**
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
* Not a refusal yet, and the distinction is load-bearing: `readHistory` reads
|
|
82
|
-
* HEAD-reachable, non-merge commits within a window, and a squash-merged or
|
|
83
|
-
* branch-deleted target is genuinely absent from that view while still being
|
|
84
|
-
* present in the object database. The caller holds the git process and can go
|
|
85
|
-
* look; this function is synchronous and cannot. Resolved out of band by
|
|
86
|
-
* `source.ts`, and only *then* refused if the object is really gone.
|
|
87
|
-
*/
|
|
29
|
+
/** A revert trailer naming a sha this history doesn't contain — not a refusal
|
|
30
|
+
* yet: readHistory's window may just not include it. source.ts resolves it
|
|
31
|
+
* out of band, refusing only if the object is really gone. */
|
|
88
32
|
export interface UnresolvedTrailer {
|
|
89
33
|
readonly fix: Commit;
|
|
90
34
|
readonly revertedSha: string;
|
|
@@ -96,14 +40,8 @@ export interface IncidentDetection {
|
|
|
96
40
|
}
|
|
97
41
|
/** `git revert` writes this. Machine-generated, and the strongest signal available. */
|
|
98
42
|
declare const REVERT_TRAILER: RegExp;
|
|
99
|
-
/**
|
|
100
|
-
*
|
|
101
|
-
* not contain.
|
|
102
|
-
*
|
|
103
|
-
* `commits` is the history as `readHistory` returns it — newest first. Order is
|
|
104
|
-
* not relied on for correctness: a revert's target is found by timestamp, so
|
|
105
|
-
* the result is identical for any permutation of the same commits.
|
|
106
|
-
*/
|
|
43
|
+
/** Every incident this history declares, plus every revert whose target it
|
|
44
|
+
* lacks. Order-independent: a revert's target is found by timestamp. */
|
|
107
45
|
export declare function detectIncidents(commits: readonly Commit[]): IncidentDetection;
|
|
108
46
|
export { REVERT_TRAILER };
|
|
109
47
|
//# sourceMappingURL=incidents.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"incidents.d.ts","sourceRoot":"","sources":["../../../src/sources/git/incidents.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"incidents.d.ts","sourceRoot":"","sources":["../../../src/sources/git/incidents.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;6EAC6E;AAC7E,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAExF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,6EAA6E;IAC7E,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;uEACmE;IACnE,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC;2EACuE;IACvE,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C;AAED,gFAAgF;AAChF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qCAAqC;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;+DAE+D;AAC/D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;IAC9C,QAAQ,CAAC,kBAAkB,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC3D;AAED,uFAAuF;AACvF,QAAA,MAAM,cAAc,QAAuC,CAAC;AAyB5D;yEACyE;AACzE,wBAAgB,eAAe,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,iBAAiB,CA4F7E;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
|