@gitwand/core 3.8.0 → 3.9.1
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/__tests__/accuracy-lot1.test.d.ts +14 -0
- package/dist/__tests__/accuracy-lot1.test.d.ts.map +1 -0
- package/dist/__tests__/accuracy-lot1.test.js +154 -0
- package/dist/__tests__/accuracy-lot1.test.js.map +1 -0
- package/dist/__tests__/confidence-v14.test.js +2 -2
- package/dist/__tests__/confidence-v14.test.js.map +1 -1
- package/dist/__tests__/conventions.test.d.ts +10 -0
- package/dist/__tests__/conventions.test.d.ts.map +1 -0
- package/dist/__tests__/conventions.test.js +121 -0
- package/dist/__tests__/conventions.test.js.map +1 -0
- package/dist/__tests__/corpus.d.ts.map +1 -1
- package/dist/__tests__/corpus.js +44 -5
- package/dist/__tests__/corpus.js.map +1 -1
- package/dist/__tests__/english-output.test.d.ts +2 -0
- package/dist/__tests__/english-output.test.d.ts.map +1 -0
- package/dist/__tests__/english-output.test.js +56 -0
- package/dist/__tests__/english-output.test.js.map +1 -0
- package/dist/__tests__/format-resolvers.test.js +2 -2
- package/dist/__tests__/format-resolvers.test.js.map +1 -1
- package/dist/__tests__/llm-refactoring-coupling.test.d.ts +1 -1
- package/dist/__tests__/llm-refactoring-coupling.test.js +1 -1
- package/dist/__tests__/merge-context.test.d.ts +15 -0
- package/dist/__tests__/merge-context.test.d.ts.map +1 -0
- package/dist/__tests__/merge-context.test.js +78 -0
- package/dist/__tests__/merge-context.test.js.map +1 -0
- package/dist/__tests__/patterns/insertion-at-boundary.test.js +1 -1
- package/dist/__tests__/patterns/insertion-at-boundary.test.js.map +1 -1
- package/dist/__tests__/patterns/llm-proposed.test.js +1 -1
- package/dist/__tests__/patterns/llm-proposed.test.js.map +1 -1
- package/dist/__tests__/patterns/reorder-only.test.js +2 -2
- package/dist/__tests__/patterns/reorder-only.test.js.map +1 -1
- package/dist/__tests__/patterns/token-level-merge.test.js +4 -4
- package/dist/__tests__/patterns/token-level-merge.test.js.map +1 -1
- package/dist/__tests__/patterns/value-only-change.test.js +11 -9
- package/dist/__tests__/patterns/value-only-change.test.js.map +1 -1
- package/dist/__tests__/regenerate/plan.test.d.ts +12 -0
- package/dist/__tests__/regenerate/plan.test.d.ts.map +1 -0
- package/dist/__tests__/regenerate/plan.test.js +126 -0
- package/dist/__tests__/regenerate/plan.test.js.map +1 -0
- package/dist/__tests__/regenerate/registry.test.d.ts +8 -0
- package/dist/__tests__/regenerate/registry.test.d.ts.map +1 -0
- package/dist/__tests__/regenerate/registry.test.js +60 -0
- package/dist/__tests__/regenerate/registry.test.js.map +1 -0
- package/dist/__tests__/regenerate-integration.test.d.ts +31 -0
- package/dist/__tests__/regenerate-integration.test.d.ts.map +1 -0
- package/dist/__tests__/regenerate-integration.test.js +199 -0
- package/dist/__tests__/regenerate-integration.test.js.map +1 -0
- package/dist/__tests__/regression-guard-tiers.test.d.ts +1 -1
- package/dist/__tests__/regression-guard-tiers.test.js +2 -2
- package/dist/__tests__/resolver.test.js +14 -6
- package/dist/__tests__/resolver.test.js.map +1 -1
- package/dist/__tests__/resolvers/cargo.test.js +6 -4
- package/dist/__tests__/resolvers/cargo.test.js.map +1 -1
- package/dist/__tests__/resolvers/json-fragment.test.d.ts +10 -0
- package/dist/__tests__/resolvers/json-fragment.test.d.ts.map +1 -0
- package/dist/__tests__/resolvers/json-fragment.test.js +96 -0
- package/dist/__tests__/resolvers/json-fragment.test.js.map +1 -0
- package/dist/__tests__/resolvers/json.test.js +1 -1
- package/dist/__tests__/resolvers/lockfile-npm.test.js +14 -12
- package/dist/__tests__/resolvers/lockfile-npm.test.js.map +1 -1
- package/dist/__tests__/resolvers/lockfile-pnpm.test.js +14 -12
- package/dist/__tests__/resolvers/lockfile-pnpm.test.js.map +1 -1
- package/dist/__tests__/resolvers/lockfile-yarn.test.js +14 -12
- package/dist/__tests__/resolvers/lockfile-yarn.test.js.map +1 -1
- package/dist/__tests__/stats/tiers.test.d.ts +1 -1
- package/dist/__tests__/stats/tiers.test.js +4 -3
- package/dist/__tests__/stats/tiers.test.js.map +1 -1
- package/dist/__tests__/with-base-availability.test.js +2 -2
- package/dist/__tests__/with-base-availability.test.js.map +1 -1
- package/dist/classifier.js +18 -18
- package/dist/classifier.js.map +1 -1
- package/dist/config.d.ts +7 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +4 -0
- package/dist/config.js.map +1 -1
- package/dist/conventions/derive.d.ts +21 -0
- package/dist/conventions/derive.d.ts.map +1 -0
- package/dist/conventions/derive.js +116 -0
- package/dist/conventions/derive.js.map +1 -0
- package/dist/conventions/types.d.ts +80 -0
- package/dist/conventions/types.d.ts.map +1 -0
- package/dist/conventions/types.js +21 -0
- package/dist/conventions/types.js.map +1 -0
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/parser.js +1 -1
- package/dist/parser.js.map +1 -1
- package/dist/patterns/complex.js +4 -4
- package/dist/patterns/complex.js.map +1 -1
- package/dist/patterns/delete-no-change.js +13 -13
- package/dist/patterns/delete-no-change.js.map +1 -1
- package/dist/patterns/insertion-at-boundary.js +7 -7
- package/dist/patterns/insertion-at-boundary.js.map +1 -1
- package/dist/patterns/llm-proposed.js +5 -5
- package/dist/patterns/llm-proposed.js.map +1 -1
- package/dist/patterns/non-overlapping.js +4 -4
- package/dist/patterns/non-overlapping.js.map +1 -1
- package/dist/patterns/one-side-change.js +6 -6
- package/dist/patterns/one-side-change.js.map +1 -1
- package/dist/patterns/refactoring-aware-merge.js +11 -11
- package/dist/patterns/refactoring-aware-merge.js.map +1 -1
- package/dist/patterns/reorder-only.js +6 -6
- package/dist/patterns/reorder-only.js.map +1 -1
- package/dist/patterns/same-change.js +4 -4
- package/dist/patterns/same-change.js.map +1 -1
- package/dist/patterns/token-level-merge.js +6 -6
- package/dist/patterns/token-level-merge.js.map +1 -1
- package/dist/patterns/utils.d.ts +1 -10
- package/dist/patterns/utils.d.ts.map +1 -1
- package/dist/patterns/utils.js +46 -7
- package/dist/patterns/utils.js.map +1 -1
- package/dist/patterns/value-only-change.js +6 -6
- package/dist/patterns/value-only-change.js.map +1 -1
- package/dist/patterns/whitespace-only.js +6 -6
- package/dist/patterns/whitespace-only.js.map +1 -1
- package/dist/refactoring/orchestration.js +3 -3
- package/dist/refactoring/orchestration.js.map +1 -1
- package/dist/regenerate/plan.d.ts +58 -0
- package/dist/regenerate/plan.d.ts.map +1 -0
- package/dist/regenerate/plan.js +55 -0
- package/dist/regenerate/plan.js.map +1 -0
- package/dist/regenerate/registry.d.ts +44 -0
- package/dist/regenerate/registry.d.ts.map +1 -0
- package/dist/regenerate/registry.js +81 -0
- package/dist/regenerate/registry.js.map +1 -0
- package/dist/resolver/assemble.d.ts.map +1 -1
- package/dist/resolver/assemble.js +71 -32
- package/dist/resolver/assemble.js.map +1 -1
- package/dist/resolver/format-dispatch.d.ts +1 -0
- package/dist/resolver/format-dispatch.d.ts.map +1 -1
- package/dist/resolver/format-dispatch.js +3 -3
- package/dist/resolver/format-dispatch.js.map +1 -1
- package/dist/resolver/generated-detection.js +9 -9
- package/dist/resolver/generated-detection.js.map +1 -1
- package/dist/resolver/index.d.ts.map +1 -1
- package/dist/resolver/index.js +228 -18
- package/dist/resolver/index.js.map +1 -1
- package/dist/resolver/llm-pipeline.js +2 -2
- package/dist/resolver/llm-pipeline.js.map +1 -1
- package/dist/resolver/policy.d.ts.map +1 -1
- package/dist/resolver/policy.js +9 -1
- package/dist/resolver/policy.js.map +1 -1
- package/dist/resolver/validate-parse-tree.js +2 -2
- package/dist/resolver/validate-parse-tree.js.map +1 -1
- package/dist/resolver/validation.d.ts +14 -0
- package/dist/resolver/validation.d.ts.map +1 -1
- package/dist/resolver/validation.js +101 -1
- package/dist/resolver/validation.js.map +1 -1
- package/dist/resolvers/cargo.js +3 -3
- package/dist/resolvers/cargo.js.map +1 -1
- package/dist/resolvers/css.js +7 -7
- package/dist/resolvers/css.js.map +1 -1
- package/dist/resolvers/dispatcher.d.ts.map +1 -1
- package/dist/resolvers/dispatcher.js +13 -1
- package/dist/resolvers/dispatcher.js.map +1 -1
- package/dist/resolvers/dockerfile.js +2 -2
- package/dist/resolvers/dockerfile.js.map +1 -1
- package/dist/resolvers/dotenv.js +2 -2
- package/dist/resolvers/dotenv.js.map +1 -1
- package/dist/resolvers/imports.js +11 -11
- package/dist/resolvers/imports.js.map +1 -1
- package/dist/resolvers/json-fragment.d.ts +48 -0
- package/dist/resolvers/json-fragment.d.ts.map +1 -0
- package/dist/resolvers/json-fragment.js +196 -0
- package/dist/resolvers/json-fragment.js.map +1 -0
- package/dist/resolvers/json.js +7 -7
- package/dist/resolvers/json.js.map +1 -1
- package/dist/resolvers/llm-fallback.js +5 -5
- package/dist/resolvers/llm-fallback.js.map +1 -1
- package/dist/resolvers/lockfile-npm.js +3 -3
- package/dist/resolvers/lockfile-npm.js.map +1 -1
- package/dist/resolvers/lockfile-pnpm.js +2 -2
- package/dist/resolvers/lockfile-pnpm.js.map +1 -1
- package/dist/resolvers/lockfile-yarn.js +3 -3
- package/dist/resolvers/lockfile-yarn.js.map +1 -1
- package/dist/resolvers/markdown.js +4 -4
- package/dist/resolvers/markdown.js.map +1 -1
- package/dist/resolvers/vue.js +5 -5
- package/dist/resolvers/vue.js.map +1 -1
- package/dist/resolvers/yaml.js +6 -6
- package/dist/resolvers/yaml.js.map +1 -1
- package/dist/stats/tiers.d.ts +1 -1
- package/dist/stats/tiers.d.ts.map +1 -1
- package/dist/stats/tiers.js +5 -2
- package/dist/stats/tiers.js.map +1 -1
- package/dist/structural/index.js +3 -3
- package/dist/structural/index.js.map +1 -1
- package/dist/types.d.ts +83 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/regenerate/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAeH,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAEnC;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA8B;IACzD;QACE,EAAE,EAAE,KAAK;QACT,QAAQ,EAAE,sBAAsB;QAChC,cAAc,EAAE,CAAC,cAAc,CAAC;QAChC,OAAO,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,qBAAqB,EAAE,kBAAkB,CAAC,EAAE;QACrF,OAAO,EAAE,UAAU;QACnB,gBAAgB,EAAE,kBAAkB;KACrC;IACD;QACE,EAAE,EAAE,MAAM;QACV,QAAQ,EAAE,mBAAmB;QAC7B,cAAc,EAAE,CAAC,cAAc,CAAC;QAChC,OAAO,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,EAAE;QAClF,OAAO,EAAE,UAAU;QACnB,gBAAgB,EAAE,kBAAkB;KACrC;IACD;QACE,EAAE,EAAE,YAAY;QAChB,QAAQ,EAAE,cAAc;QACxB,2EAA2E;QAC3E,qFAAqF;QACrF,yEAAyE;QACzE,iEAAiE;QACjE,cAAc,EAAE,CAAC,cAAc,EAAE,aAAa,CAAC;QAC/C,6EAA6E;QAC7E,0EAA0E;QAC1E,OAAO,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,wBAAwB,CAAC,EAAE;QACrE,OAAO,EAAE,UAAU;QACnB,gBAAgB,EAAE,kBAAkB;KACrC;IACD;QACE,EAAE,EAAE,UAAU;QACd,QAAQ,EAAE,kBAAkB;QAC5B,cAAc,EAAE,CAAC,eAAe,CAAC;QACjC,OAAO,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,CAAC,EAAE;QACxF,OAAO,EAAE,UAAU;QACnB,gBAAgB,EAAE,kBAAkB;KACrC;IACD;QACE,EAAE,EAAE,OAAO;QACX,QAAQ,EAAE,eAAe;QACzB,cAAc,EAAE,CAAC,YAAY,CAAC;QAC9B,4EAA4E;QAC5E,yDAAyD;QACzD,OAAO,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,mBAAmB,CAAC,EAAE;QACtD,OAAO,EAAE,iBAAiB;QAC1B,gBAAgB,EAAE,kBAAkB;KACrC;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assemble.d.ts","sourceRoot":"","sources":["../../src/resolver/assemble.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAM9D;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,EACjC,eAAe,EAAE,WAAW,EAC5B,SAAS,EAAE,YAAY,GACtB;IAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"assemble.d.ts","sourceRoot":"","sources":["../../src/resolver/assemble.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAM9D;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,EACjC,eAAe,EAAE,WAAW,EAC5B,SAAS,EAAE,YAAY,GACtB;IAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAiQ5C"}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
import { mergeNonOverlapping } from "../diff.js";
|
|
15
15
|
import { stripVolatileValues } from "./generated-detection.js";
|
|
16
16
|
import { getLastRefMergeResult } from "../patterns/refactoring-aware-merge.js";
|
|
17
|
-
import { pickNewerSemverSide } from "../patterns/utils.js";
|
|
17
|
+
import { pickNewerSemverSide, hasUnorderableVersionPair } from "../patterns/utils.js";
|
|
18
18
|
/**
|
|
19
19
|
* Applique la stratégie textuelle correspondant au type de hunk.
|
|
20
20
|
* Les vérifications amont (explainOnly, format-dispatch, minConfidence)
|
|
@@ -25,7 +25,7 @@ export function assembleResolution(hunk, options, effectivePolicy, policyCfg) {
|
|
|
25
25
|
case "same_change":
|
|
26
26
|
return {
|
|
27
27
|
lines: [...hunk.oursLines],
|
|
28
|
-
reason: "
|
|
28
|
+
reason: "Same edit on both sides, so the resolution is trivial (ours = theirs).",
|
|
29
29
|
};
|
|
30
30
|
case "one_side_change": {
|
|
31
31
|
const baseText = hunk.baseLines.join("\n");
|
|
@@ -33,20 +33,20 @@ export function assembleResolution(hunk, options, effectivePolicy, policyCfg) {
|
|
|
33
33
|
if (oursText === baseText) {
|
|
34
34
|
return {
|
|
35
35
|
lines: [...hunk.theirsLines],
|
|
36
|
-
reason: "Ours = base
|
|
36
|
+
reason: "Ours = base, so only theirs changed. Resolution: take theirs.",
|
|
37
37
|
};
|
|
38
38
|
}
|
|
39
39
|
else {
|
|
40
40
|
return {
|
|
41
41
|
lines: [...hunk.oursLines],
|
|
42
|
-
reason: "Theirs = base
|
|
42
|
+
reason: "Theirs = base, so only ours changed. Resolution: take ours.",
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
case "delete_no_change":
|
|
47
47
|
return {
|
|
48
48
|
lines: [],
|
|
49
|
-
reason: "
|
|
49
|
+
reason: "One side deleted the block and the other left it untouched. Resolution: delete (0 lines).",
|
|
50
50
|
};
|
|
51
51
|
case "reorder_only": {
|
|
52
52
|
// Résolution : accepter theirs (intent de réordonnancement le plus récent).
|
|
@@ -65,7 +65,7 @@ export function assembleResolution(hunk, options, effectivePolicy, policyCfg) {
|
|
|
65
65
|
}
|
|
66
66
|
return {
|
|
67
67
|
lines: preferred,
|
|
68
|
-
reason: `
|
|
68
|
+
reason: `Pure permutation: same lines, different order. Resolution: take ${side}.`,
|
|
69
69
|
};
|
|
70
70
|
}
|
|
71
71
|
case "insertion_at_boundary": {
|
|
@@ -105,7 +105,7 @@ export function assembleResolution(hunk, options, effectivePolicy, policyCfg) {
|
|
|
105
105
|
}
|
|
106
106
|
return {
|
|
107
107
|
lines: merged,
|
|
108
|
-
reason: `
|
|
108
|
+
reason: `Pure insertions: union of the ${hasBase ? "insertions (base + ours + theirs)" : "lines (diff2 heuristic)"}. ${merged.length} lines in the result.`,
|
|
109
109
|
};
|
|
110
110
|
}
|
|
111
111
|
case "whitespace_only": {
|
|
@@ -113,14 +113,14 @@ export function assembleResolution(hunk, options, effectivePolicy, policyCfg) {
|
|
|
113
113
|
return {
|
|
114
114
|
lines: null,
|
|
115
115
|
reason: !policyCfg.allowWhitespace
|
|
116
|
-
? `
|
|
117
|
-
: "
|
|
116
|
+
? `Whitespace resolution disabled by the "${effectivePolicy}" policy.`
|
|
117
|
+
: "Whitespace resolution disabled by options (resolveWhitespace: false).",
|
|
118
118
|
};
|
|
119
119
|
}
|
|
120
120
|
const wsSide = policyCfg.preferOurs ? "ours" : "theirs";
|
|
121
121
|
return {
|
|
122
122
|
lines: policyCfg.preferOurs ? [...hunk.oursLines] : [...hunk.theirsLines],
|
|
123
|
-
reason: `
|
|
123
|
+
reason: `Only whitespace differs. Resolution: prefer ${wsSide} (policy: ${effectivePolicy}).`,
|
|
124
124
|
};
|
|
125
125
|
}
|
|
126
126
|
case "non_overlapping": {
|
|
@@ -128,68 +128,107 @@ export function assembleResolution(hunk, options, effectivePolicy, policyCfg) {
|
|
|
128
128
|
return {
|
|
129
129
|
lines: null,
|
|
130
130
|
reason: !policyCfg.allowNonOverlapping
|
|
131
|
-
? `
|
|
132
|
-
: "
|
|
131
|
+
? `Non-overlapping resolution disabled by the "${effectivePolicy}" policy.`
|
|
132
|
+
: "Non-overlapping resolution disabled by options (resolveNonOverlapping: false).",
|
|
133
133
|
};
|
|
134
134
|
}
|
|
135
135
|
const merged = mergeNonOverlapping(hunk.baseLines, hunk.oursLines, hunk.theirsLines);
|
|
136
136
|
if (merged !== null) {
|
|
137
137
|
return {
|
|
138
138
|
lines: merged,
|
|
139
|
-
reason: `
|
|
139
|
+
reason: `3-way LCS merge succeeded: ${merged.length} lines in the merged result.`,
|
|
140
140
|
};
|
|
141
141
|
}
|
|
142
142
|
return {
|
|
143
143
|
lines: null,
|
|
144
|
-
reason: "
|
|
144
|
+
reason: "The 3-way LCS merge failed (an overlap was detected at resolution time).",
|
|
145
145
|
};
|
|
146
146
|
}
|
|
147
147
|
case "value_only_change": {
|
|
148
148
|
if (!policyCfg.allowValueOnly) {
|
|
149
149
|
return {
|
|
150
150
|
lines: null,
|
|
151
|
-
reason: `
|
|
151
|
+
reason: `value_only_change resolution disabled by the "${effectivePolicy}" policy.`,
|
|
152
152
|
};
|
|
153
153
|
}
|
|
154
|
-
// Quand toutes les paires de tokens différents sont des semver
|
|
155
|
-
// comparables, le côté le plus élevé gagne — déterministe et conforme à
|
|
156
|
-
// l'intention « garder la version la plus récente », quel que soit le
|
|
157
|
-
// côté qui la porte. Sinon (hashes, timestamps) : côté-politique.
|
|
158
154
|
const semverSide = pickNewerSemverSide(hunk.oursLines, hunk.theirsLines);
|
|
155
|
+
const versionish = hasUnorderableVersionPair(hunk.oursLines, hunk.theirsLines);
|
|
156
|
+
const ctx = options.mergeContext;
|
|
157
|
+
// accuracy lot C — Un scalaire de version NON ordonnable fixé différemment des
|
|
158
|
+
// deux côtés ('13.x-dev' vs '12.54.1', '2.9.0-dev'…) est l'identité de
|
|
159
|
+
// version du fichier sur la branche cible : avec le contexte, la cible
|
|
160
|
+
// garde sa valeur. Mesuré sur benchmark/ : laravel 36,6 % → 81,5 %
|
|
161
|
+
// d'accord. Les paires ORDONNABLES (deps bumpées des deux côtés) gardent
|
|
162
|
+
// en revanche « la plus récente gagne » même avec contexte — la première
|
|
163
|
+
// version de cette règle les basculait aussi vers la cible, et l'accord
|
|
164
|
+
// régressait sur prettier/vue/express (les humains prennent bien la dep
|
|
165
|
+
// la plus récente apportée par la branche source).
|
|
166
|
+
if (ctx && versionish && semverSide === null) {
|
|
167
|
+
const side = ctx.targetSide;
|
|
168
|
+
const refs = ctx.oursRef && ctx.theirsRef ? ` (${ctx.theirsRef} → ${ctx.oursRef})` : "";
|
|
169
|
+
return {
|
|
170
|
+
lines: side === "ours" ? [...hunk.oursLines] : [...hunk.theirsLines],
|
|
171
|
+
reason: `Version changed on both sides during a ${ctx.operation}${refs} — the target branch keeps its value. Resolution: take ${side}.`,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
// Sans contexte : les paires semver/datetime ordonnables gardent la règle
|
|
175
|
+
// historique « la plus récente gagne » (déterministe et testée)…
|
|
159
176
|
if (semverSide !== null) {
|
|
160
177
|
return {
|
|
161
178
|
lines: semverSide === "ours" ? [...hunk.oursLines] : [...hunk.theirsLines],
|
|
162
|
-
reason: `
|
|
179
|
+
reason: `Same structure, differing semver version(s). Resolution: take ${semverSide} (the higher version).`,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
// …mais une paire version NON ordonnable ('13.x-dev' vs '12.54.1') ne
|
|
183
|
+
// retombe plus sur la politique : mesurée fausse ~3 fois sur 4, c'est une
|
|
184
|
+
// proposition, pas une application.
|
|
185
|
+
if (versionish) {
|
|
186
|
+
return {
|
|
187
|
+
lines: null,
|
|
188
|
+
reason: "Version changed on both sides with non-comparable values — this is a merge decision, not volatility. The target branch wins when context is known (auto-detected by the CLI and desktop); here it isn't, so GitWand proposes instead of applying.",
|
|
163
189
|
};
|
|
164
190
|
}
|
|
165
191
|
const preferred = policyCfg.preferOurs ? hunk.oursLines : hunk.theirsLines;
|
|
166
192
|
const side = policyCfg.preferOurs ? "ours" : "theirs";
|
|
167
193
|
return {
|
|
168
194
|
lines: [...preferred],
|
|
169
|
-
reason: `
|
|
195
|
+
reason: `Same structure, differing volatile value(s). Resolution: take ${side} (policy: ${effectivePolicy}).`,
|
|
170
196
|
};
|
|
171
197
|
}
|
|
172
198
|
case "token_level_merge":
|
|
173
|
-
//
|
|
199
|
+
// v3.4 — Résolution toujours différée à la confirmation utilisateur (frontend).
|
|
174
200
|
// La proposition calculée est disponible dans hunk.trace.tokenMergeTrace.
|
|
175
201
|
return {
|
|
176
202
|
lines: null,
|
|
177
|
-
reason: "token_level_merge
|
|
203
|
+
reason: "token_level_merge: merge proposed, user confirmation required before it is applied.",
|
|
178
204
|
};
|
|
179
205
|
case "generated_file": {
|
|
180
|
-
//
|
|
181
|
-
//
|
|
206
|
+
// accuracy lot 1 — Par défaut, on DÉCLINE : la version commitée d'un fichier
|
|
207
|
+
// généré est la sortie d'un outil, pas la fusion de deux textes.
|
|
208
|
+
// Mesuré sur le corpus benchmark/ : « accepter theirs » divergeait de
|
|
209
|
+
// ce que les équipes livrent dans ~100 % des cas. Décliner avec un
|
|
210
|
+
// message actionnable vaut mieux qu'une fusion silencieusement fausse.
|
|
182
211
|
const oursStripped = stripVolatileValues(hunk.oursLines);
|
|
183
212
|
const theirsStripped = stripVolatileValues(hunk.theirsLines);
|
|
184
|
-
|
|
213
|
+
const cosmetic = oursStripped === theirsStripped;
|
|
214
|
+
if (!options.resolveGeneratedFiles) {
|
|
215
|
+
return {
|
|
216
|
+
lines: null,
|
|
217
|
+
reason: cosmetic
|
|
218
|
+
? "Generated file — only volatile differences (hashes/timestamps). Resolve the source file (e.g. package.json) then regenerate this one with its tool (install/build). Auto-resolution available via resolveGeneratedFiles: true."
|
|
219
|
+
: "Generated file — not merged, regenerated. Resolve the source file (e.g. package.json) then re-run the tool that produces this one (install/build). Auto-resolution (take theirs) available via resolveGeneratedFiles: true.",
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
// Opt-in resolveGeneratedFiles: true — comportement historique.
|
|
223
|
+
if (cosmetic) {
|
|
185
224
|
return {
|
|
186
225
|
lines: [...hunk.theirsLines],
|
|
187
|
-
reason: "
|
|
226
|
+
reason: "Generated file with identical structure (only volatile values differ). Resolution: take theirs. Suggestion: re-run the build or install.",
|
|
188
227
|
};
|
|
189
228
|
}
|
|
190
229
|
return {
|
|
191
230
|
lines: [...hunk.theirsLines],
|
|
192
|
-
reason: "
|
|
231
|
+
reason: "Generated file: it will be rebuilt after the merge. Resolution: take theirs (opt-in resolveGeneratedFiles). Suggestion: re-run the build or install.",
|
|
193
232
|
};
|
|
194
233
|
}
|
|
195
234
|
case "refactoring_aware_merge": {
|
|
@@ -202,7 +241,7 @@ export function assembleResolution(hunk, options, effectivePolicy, policyCfg) {
|
|
|
202
241
|
// Fallback si le cache est invalide (ne devrait pas arriver)
|
|
203
242
|
return {
|
|
204
243
|
lines: null,
|
|
205
|
-
reason: "RefMerge
|
|
244
|
+
reason: "RefMerge: no cached result available, so manual resolution is required.",
|
|
206
245
|
};
|
|
207
246
|
}
|
|
208
247
|
case "llm_proposed":
|
|
@@ -210,17 +249,17 @@ export function assembleResolution(hunk, options, effectivePolicy, policyCfg) {
|
|
|
210
249
|
// assembleResolution() n'est pas censé être appelé directement pour llm_proposed.
|
|
211
250
|
return {
|
|
212
251
|
lines: null,
|
|
213
|
-
reason: "llm_proposed
|
|
252
|
+
reason: "llm_proposed: resolution deferred to the asynchronous LLM pipeline.",
|
|
214
253
|
};
|
|
215
254
|
case "complex":
|
|
216
255
|
return {
|
|
217
256
|
lines: null,
|
|
218
|
-
reason: "
|
|
257
|
+
reason: "Complex conflict: no automatic heuristic applies. Manual resolution required.",
|
|
219
258
|
};
|
|
220
259
|
default:
|
|
221
260
|
return {
|
|
222
261
|
lines: null,
|
|
223
|
-
reason: `
|
|
262
|
+
reason: `Unknown conflict type: ${hunk.type}.`,
|
|
224
263
|
};
|
|
225
264
|
}
|
|
226
265
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assemble.js","sourceRoot":"","sources":["../../src/resolver/assemble.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"assemble.js","sourceRoot":"","sources":["../../src/resolver/assemble.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-dispatch.d.ts","sourceRoot":"","sources":["../../src/resolver/format-dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAIhE,MAAM,MAAM,oBAAoB;AAC9B,0DAA0D;AACxD;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;
|
|
1
|
+
{"version":3,"file":"format-dispatch.d.ts","sourceRoot":"","sources":["../../src/resolver/format-dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAIhE,MAAM,MAAM,oBAAoB;AAC9B,0DAA0D;AACxD;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE;AAC/E,qGAAqG;GACnG;IAAE,MAAM,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAC/C,0FAA0F;GACxF;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/C;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAChC,oBAAoB,CAgCtB"}
|
|
@@ -37,17 +37,17 @@ export function dispatchFormatAware(hunk, filePath, options) {
|
|
|
37
37
|
if (!options.resolveNonOverlapping) {
|
|
38
38
|
return {
|
|
39
39
|
status: "rejected-policy",
|
|
40
|
-
reason: "
|
|
40
|
+
reason: "Import resolution (non-overlapping) disabled by options (resolveNonOverlapping: false).",
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
43
|
const { policy, cfg } = computeEffectivePolicy(filePath, options);
|
|
44
44
|
if (!cfg.allowNonOverlapping) {
|
|
45
45
|
return {
|
|
46
46
|
status: "rejected-policy",
|
|
47
|
-
reason: `
|
|
47
|
+
reason: `Import resolution (non-overlapping) disabled by the "${policy}" policy.`,
|
|
48
48
|
};
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
-
return { status: "resolved", lines: formatResult.lines, reason: formatResult.reason };
|
|
51
|
+
return { status: "resolved", lines: formatResult.lines, reason: formatResult.reason, resolverUsed: formatResult.resolverUsed };
|
|
52
52
|
}
|
|
53
53
|
//# sourceMappingURL=format-dispatch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-dispatch.js","sourceRoot":"","sources":["../../src/resolver/format-dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAUrD;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAkB,EAClB,QAAgB,EAChB,OAAiC;IAEjC,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,EAAE,QAAQ,EAAE;QACzD,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;KACrD,CAAC,CAAC;IACH,IAAI,YAAY,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;QACzC,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAChD,CAAC;IAED,IAAI,YAAY,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QAChC,sEAAsE;QACtE,kEAAkE;QAClE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC;IACjE,CAAC;IAED,iEAAiE;IACjE,IAAI,YAAY,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;YACnC,OAAO;gBACL,MAAM,EAAE,iBAAiB;gBACzB,MAAM,EAAE
|
|
1
|
+
{"version":3,"file":"format-dispatch.js","sourceRoot":"","sources":["../../src/resolver/format-dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAUrD;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAkB,EAClB,QAAgB,EAChB,OAAiC;IAEjC,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,EAAE,QAAQ,EAAE;QACzD,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;KACrD,CAAC,CAAC;IACH,IAAI,YAAY,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;QACzC,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAChD,CAAC;IAED,IAAI,YAAY,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QAChC,sEAAsE;QACtE,kEAAkE;QAClE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC;IACjE,CAAC;IAED,iEAAiE;IACjE,IAAI,YAAY,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;YACnC,OAAO;gBACL,MAAM,EAAE,iBAAiB;gBACzB,MAAM,EAAE,yFAAyF;aAClG,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClE,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;YAC7B,OAAO;gBACL,MAAM,EAAE,iBAAiB;gBACzB,MAAM,EAAE,wDAAwD,MAAM,WAAW;aAClF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,YAAY,EAAE,CAAC;AACjI,CAAC"}
|
|
@@ -15,9 +15,9 @@ export const GENERATED_FILE_PATTERNS = [
|
|
|
15
15
|
{ pattern: /composer\.lock$/i, label: "composer lockfile" },
|
|
16
16
|
{ pattern: /Gemfile\.lock$/i, label: "bundler lockfile" },
|
|
17
17
|
{ pattern: /Cargo\.lock$/i, label: "cargo lockfile" },
|
|
18
|
-
{ pattern: /\.min\.(js|css)$/i, label: "
|
|
19
|
-
{ pattern: /\bdist\//, label: "
|
|
20
|
-
{ pattern: /\bbuild\/manifest\.json$/i, label: "manifest
|
|
18
|
+
{ pattern: /\.min\.(js|css)$/i, label: "minified file" },
|
|
19
|
+
{ pattern: /\bdist\//, label: "dist/ build output" },
|
|
20
|
+
{ pattern: /\bbuild\/manifest\.json$/i, label: "build manifest" },
|
|
21
21
|
{ pattern: /\.bundle\.(js|css)$/i, label: "bundle" },
|
|
22
22
|
{ pattern: /mix-manifest\.json$/i, label: "Laravel Mix manifest" },
|
|
23
23
|
];
|
|
@@ -91,30 +91,30 @@ export function reclassifyIfGenerated(hunk, genInfo) {
|
|
|
91
91
|
fileFrequency: 0,
|
|
92
92
|
baseAvailability: 0,
|
|
93
93
|
},
|
|
94
|
-
boosters: [`
|
|
95
|
-
penalties: ["
|
|
94
|
+
boosters: [`Path matches the generated-file pattern: ${genInfo.label}`],
|
|
95
|
+
penalties: ["The committed content is a tool's output — a textual merge does not reproduce it"],
|
|
96
96
|
};
|
|
97
97
|
return {
|
|
98
98
|
...hunk,
|
|
99
99
|
type: "generated_file",
|
|
100
100
|
confidence: generatedScore,
|
|
101
|
-
explanation: `
|
|
101
|
+
explanation: `Generated file (${genInfo.label}). This file is regenerated, not merged: resolve its source, then re-run the tool that produces it (install/build).`,
|
|
102
102
|
// Update the trace to reflect the reclassification
|
|
103
103
|
trace: {
|
|
104
104
|
...hunk.trace,
|
|
105
105
|
selected: "generated_file",
|
|
106
|
-
summary: `
|
|
106
|
+
summary: `Generated file (${genInfo.label}), reclassified out of complex.`,
|
|
107
107
|
steps: [
|
|
108
108
|
...hunk.trace.steps.slice(0, -1), // remove the "complex passed: true" step
|
|
109
109
|
{
|
|
110
110
|
type: "complex",
|
|
111
111
|
passed: false,
|
|
112
|
-
reason: `
|
|
112
|
+
reason: `Reclassified: generated file (${genInfo.label}) detected by its path.`,
|
|
113
113
|
},
|
|
114
114
|
{
|
|
115
115
|
type: "generated_file",
|
|
116
116
|
passed: true,
|
|
117
|
-
reason: `
|
|
117
|
+
reason: `Path matches the generated-file pattern: ${genInfo.label}.`,
|
|
118
118
|
},
|
|
119
119
|
],
|
|
120
120
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generated-detection.js","sourceRoot":"","sources":["../../src/resolver/generated-detection.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,wFAAwF;AACxF,MAAM,CAAC,MAAM,uBAAuB,GAA8C;IAChF,EAAE,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,cAAc,EAAE;IAC1D,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,EAAE;IACnD,EAAE,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,eAAe,EAAE;IACxD,EAAE,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,mBAAmB,EAAE;IAC3D,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,kBAAkB,EAAE;IACzD,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,gBAAgB,EAAE;IACrD,EAAE,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"generated-detection.js","sourceRoot":"","sources":["../../src/resolver/generated-detection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resolver/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resolver/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAKV,cAAc,EAEd,WAAW,EAGZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAIL,KAAK,uBAAuB,EAC7B,MAAM,wBAAwB,CAAC;AA8PhC;;;;;;;GAOG;AACH,wBAAgB,OAAO,CACrB,iBAAiB,EAAE,MAAM,EACzB,QAAQ,EAAE,MAAM,EAChB,WAAW,GAAE,cAAmB,GAC/B,WAAW,CA8Jb;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,YAAY,CAChC,iBAAiB,EAAE,MAAM,EACzB,QAAQ,EAAE,MAAM,EAChB,WAAW,GAAE,cAAmB,EAChC,cAAc,GAAE,uBAA4B,GAC3C,OAAO,CAAC,WAAW,CAAC,CAgHtB"}
|