@gitwand/core 2.3.0 → 2.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.
Files changed (136) hide show
  1. package/dist/__tests__/corpus.d.ts.map +1 -1
  2. package/dist/__tests__/corpus.js +377 -0
  3. package/dist/__tests__/corpus.js.map +1 -1
  4. package/dist/__tests__/patterns/complex.test.d.ts +9 -0
  5. package/dist/__tests__/patterns/complex.test.d.ts.map +1 -0
  6. package/dist/__tests__/patterns/complex.test.js +198 -0
  7. package/dist/__tests__/patterns/complex.test.js.map +1 -0
  8. package/dist/__tests__/patterns/delete-no-change.test.d.ts +11 -0
  9. package/dist/__tests__/patterns/delete-no-change.test.d.ts.map +1 -0
  10. package/dist/__tests__/patterns/delete-no-change.test.js +178 -0
  11. package/dist/__tests__/patterns/delete-no-change.test.js.map +1 -0
  12. package/dist/__tests__/patterns/llm-proposed.test.d.ts +10 -0
  13. package/dist/__tests__/patterns/llm-proposed.test.d.ts.map +1 -0
  14. package/dist/__tests__/patterns/llm-proposed.test.js +306 -0
  15. package/dist/__tests__/patterns/llm-proposed.test.js.map +1 -0
  16. package/dist/__tests__/patterns/non-overlapping.test.d.ts +11 -0
  17. package/dist/__tests__/patterns/non-overlapping.test.d.ts.map +1 -0
  18. package/dist/__tests__/patterns/non-overlapping.test.js +240 -0
  19. package/dist/__tests__/patterns/non-overlapping.test.js.map +1 -0
  20. package/dist/__tests__/patterns/one-side-change.test.d.ts +10 -0
  21. package/dist/__tests__/patterns/one-side-change.test.d.ts.map +1 -0
  22. package/dist/__tests__/patterns/one-side-change.test.js +191 -0
  23. package/dist/__tests__/patterns/one-side-change.test.js.map +1 -0
  24. package/dist/__tests__/patterns/same-change.test.d.ts +9 -0
  25. package/dist/__tests__/patterns/same-change.test.d.ts.map +1 -0
  26. package/dist/__tests__/patterns/same-change.test.js +173 -0
  27. package/dist/__tests__/patterns/same-change.test.js.map +1 -0
  28. package/dist/__tests__/patterns/value-only-change.test.d.ts +11 -0
  29. package/dist/__tests__/patterns/value-only-change.test.d.ts.map +1 -0
  30. package/dist/__tests__/patterns/value-only-change.test.js +159 -0
  31. package/dist/__tests__/patterns/value-only-change.test.js.map +1 -0
  32. package/dist/__tests__/patterns/whitespace-only.test.d.ts +10 -0
  33. package/dist/__tests__/patterns/whitespace-only.test.d.ts.map +1 -0
  34. package/dist/__tests__/patterns/whitespace-only.test.js +177 -0
  35. package/dist/__tests__/patterns/whitespace-only.test.js.map +1 -0
  36. package/dist/__tests__/resolvers/css.test.d.ts +12 -0
  37. package/dist/__tests__/resolvers/css.test.d.ts.map +1 -0
  38. package/dist/__tests__/resolvers/css.test.js +171 -0
  39. package/dist/__tests__/resolvers/css.test.js.map +1 -0
  40. package/dist/__tests__/resolvers/imports.test.d.ts +12 -0
  41. package/dist/__tests__/resolvers/imports.test.d.ts.map +1 -0
  42. package/dist/__tests__/resolvers/imports.test.js +135 -0
  43. package/dist/__tests__/resolvers/imports.test.js.map +1 -0
  44. package/dist/__tests__/resolvers/json.test.d.ts +12 -0
  45. package/dist/__tests__/resolvers/json.test.d.ts.map +1 -0
  46. package/dist/__tests__/resolvers/json.test.js +184 -0
  47. package/dist/__tests__/resolvers/json.test.js.map +1 -0
  48. package/dist/__tests__/resolvers/lockfile-npm.test.d.ts +12 -0
  49. package/dist/__tests__/resolvers/lockfile-npm.test.d.ts.map +1 -0
  50. package/dist/__tests__/resolvers/lockfile-npm.test.js +187 -0
  51. package/dist/__tests__/resolvers/lockfile-npm.test.js.map +1 -0
  52. package/dist/__tests__/resolvers/lockfile-pnpm.test.d.ts +12 -0
  53. package/dist/__tests__/resolvers/lockfile-pnpm.test.d.ts.map +1 -0
  54. package/dist/__tests__/resolvers/lockfile-pnpm.test.js +175 -0
  55. package/dist/__tests__/resolvers/lockfile-pnpm.test.js.map +1 -0
  56. package/dist/__tests__/resolvers/lockfile-yarn.test.d.ts +12 -0
  57. package/dist/__tests__/resolvers/lockfile-yarn.test.d.ts.map +1 -0
  58. package/dist/__tests__/resolvers/lockfile-yarn.test.js +165 -0
  59. package/dist/__tests__/resolvers/lockfile-yarn.test.js.map +1 -0
  60. package/dist/__tests__/resolvers/markdown.test.d.ts +12 -0
  61. package/dist/__tests__/resolvers/markdown.test.d.ts.map +1 -0
  62. package/dist/__tests__/resolvers/markdown.test.js +188 -0
  63. package/dist/__tests__/resolvers/markdown.test.js.map +1 -0
  64. package/dist/__tests__/resolvers/vue.test.d.ts +12 -0
  65. package/dist/__tests__/resolvers/vue.test.d.ts.map +1 -0
  66. package/dist/__tests__/resolvers/vue.test.js +225 -0
  67. package/dist/__tests__/resolvers/vue.test.js.map +1 -0
  68. package/dist/__tests__/resolvers/yaml.test.d.ts +12 -0
  69. package/dist/__tests__/resolvers/yaml.test.d.ts.map +1 -0
  70. package/dist/__tests__/resolvers/yaml.test.js +203 -0
  71. package/dist/__tests__/resolvers/yaml.test.js.map +1 -0
  72. package/dist/__tests__/v2-core-scenarios.test.d.ts +35 -0
  73. package/dist/__tests__/v2-core-scenarios.test.d.ts.map +1 -0
  74. package/dist/__tests__/v2-core-scenarios.test.js +692 -0
  75. package/dist/__tests__/v2-core-scenarios.test.js.map +1 -0
  76. package/dist/__tests__/validation-parse-tree.test.d.ts +15 -0
  77. package/dist/__tests__/validation-parse-tree.test.d.ts.map +1 -0
  78. package/dist/__tests__/validation-parse-tree.test.js +243 -0
  79. package/dist/__tests__/validation-parse-tree.test.js.map +1 -0
  80. package/dist/classifier.d.ts.map +1 -1
  81. package/dist/classifier.js +3 -0
  82. package/dist/classifier.js.map +1 -1
  83. package/dist/config.d.ts +54 -0
  84. package/dist/config.d.ts.map +1 -1
  85. package/dist/config.js +42 -0
  86. package/dist/config.js.map +1 -1
  87. package/dist/diff/index.d.ts.map +1 -1
  88. package/dist/diff/index.js +1 -3
  89. package/dist/diff/index.js.map +1 -1
  90. package/dist/index.d.ts +3 -1
  91. package/dist/index.d.ts.map +1 -1
  92. package/dist/index.js +2 -0
  93. package/dist/index.js.map +1 -1
  94. package/dist/patterns/llm-proposed.d.ts +8 -0
  95. package/dist/patterns/llm-proposed.d.ts.map +1 -0
  96. package/dist/patterns/llm-proposed.js +66 -0
  97. package/dist/patterns/llm-proposed.js.map +1 -0
  98. package/dist/patterns/utils.d.ts +8 -7
  99. package/dist/patterns/utils.d.ts.map +1 -1
  100. package/dist/patterns/utils.js +13 -12
  101. package/dist/patterns/utils.js.map +1 -1
  102. package/dist/resolver/adapters/strict-node.d.ts +32 -0
  103. package/dist/resolver/adapters/strict-node.d.ts.map +1 -0
  104. package/dist/resolver/adapters/strict-node.js +117 -0
  105. package/dist/resolver/adapters/strict-node.js.map +1 -0
  106. package/dist/resolver/index.d.ts +20 -1
  107. package/dist/resolver/index.d.ts.map +1 -1
  108. package/dist/resolver/index.js +106 -5
  109. package/dist/resolver/index.js.map +1 -1
  110. package/dist/resolver/llm-pipeline.d.ts +33 -0
  111. package/dist/resolver/llm-pipeline.d.ts.map +1 -0
  112. package/dist/resolver/llm-pipeline.js +218 -0
  113. package/dist/resolver/llm-pipeline.js.map +1 -0
  114. package/dist/resolver/policy.d.ts.map +1 -1
  115. package/dist/resolver/policy.js +5 -0
  116. package/dist/resolver/policy.js.map +1 -1
  117. package/dist/resolver/validate-parse-tree.d.ts +52 -0
  118. package/dist/resolver/validate-parse-tree.d.ts.map +1 -0
  119. package/dist/resolver/validate-parse-tree.js +87 -0
  120. package/dist/resolver/validate-parse-tree.js.map +1 -0
  121. package/dist/resolver/validate-strict.d.ts +27 -0
  122. package/dist/resolver/validate-strict.d.ts.map +1 -0
  123. package/dist/resolver/validate-strict.js +41 -0
  124. package/dist/resolver/validate-strict.js.map +1 -0
  125. package/dist/resolver/validation.d.ts.map +1 -1
  126. package/dist/resolver/validation.js +15 -1
  127. package/dist/resolver/validation.js.map +1 -1
  128. package/dist/resolvers/dispatcher.d.ts.map +1 -1
  129. package/dist/resolvers/dispatcher.js.map +1 -1
  130. package/dist/resolvers/llm-fallback.d.ts +41 -0
  131. package/dist/resolvers/llm-fallback.d.ts.map +1 -0
  132. package/dist/resolvers/llm-fallback.js +231 -0
  133. package/dist/resolvers/llm-fallback.js.map +1 -0
  134. package/dist/types.d.ts +183 -4
  135. package/dist/types.d.ts.map +1 -1
  136. package/package.json +1 -1
@@ -0,0 +1,66 @@
1
+ import { makeScore } from "./utils.js";
2
+ /**
3
+ * v2.5 — Pattern de fallback LLM (priority 998, juste avant `complex` à 999).
4
+ *
5
+ * Ce plugin est désactivé par défaut : `detect()` retourne toujours `false`
6
+ * sauf quand le flag interne `_llmFallbackEnabled` est activé par `resolveAsync()`
7
+ * avant de lancer la classification.
8
+ *
9
+ * ## Design
10
+ *
11
+ * Le `PatternPlugin.detect()` ne reçoit pas les options (contrainte du registre).
12
+ * L'activation se fait via un flag module-level positionné par `resolveAsync()` :
13
+ *
14
+ * ```ts
15
+ * // Dans resolveAsync() :
16
+ * setLlmFallbackEnabled(true);
17
+ * const result = classifyConflict(hunk);
18
+ * setLlmFallbackEnabled(false);
19
+ * ```
20
+ *
21
+ * La résolution effective (appel LLM) a lieu en phase 5 de `resolveAsync()`,
22
+ * après la classification. Le score initial (`dataRisk: 60, typeClassification: 50`)
23
+ * est volontairement médiocre — la décision finale dépend de la validation post-merge.
24
+ */
25
+ /** Flag interne — positionné par `resolveAsync()` avant classification */
26
+ let _llmFallbackEnabled = false;
27
+ /** Active ou désactive le pattern llm_proposed pour la prochaine classification. */
28
+ export function setLlmFallbackEnabled(enabled) {
29
+ _llmFallbackEnabled = enabled;
30
+ }
31
+ /** Retourne l'état actuel du flag (utile pour les tests). */
32
+ export function isLlmFallbackEnabled() {
33
+ return _llmFallbackEnabled;
34
+ }
35
+ const llmProposed = {
36
+ type: "llm_proposed",
37
+ priority: 998,
38
+ requires: "both",
39
+ detect(_h) {
40
+ // OFF par défaut. Activé uniquement par resolveAsync() via setLlmFallbackEnabled(true).
41
+ return _llmFallbackEnabled;
42
+ },
43
+ confidence(_h) {
44
+ // Score initial volontairement médiocre (dataRisk élevé, typeClassification moyen).
45
+ // La résolution sera acceptée ou rejetée selon la validation post-merge stricte.
46
+ return makeScore(50, // typeClassification : incertitude sur la qualité de la résolution LLM
47
+ 60, // dataRisk : risque non nul d'hallucination
48
+ 0, // scopeImpact : inconnu à ce stade
49
+ [], // boosters
50
+ [
51
+ "Résolution non déterministe (LLM)",
52
+ "Validation post-merge stricte requise avant acceptation",
53
+ ]);
54
+ },
55
+ explanation(_h) {
56
+ return "Résolution proposée par LLM fallback. Le hunk sera envoyé à l'endpoint LLM configuré pour une résolution assistée. La résolution sera validée (parse-tree + tsc/eslint) avant acceptation.";
57
+ },
58
+ passReason(_h) {
59
+ return "Aucun pattern déterministe applicable — délégation au LLM fallback (opt-in).";
60
+ },
61
+ failReason(_h) {
62
+ return "LLM fallback désactivé (options.llmFallback.enabled !== true).";
63
+ },
64
+ };
65
+ export default llmProposed;
66
+ //# sourceMappingURL=llm-proposed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-proposed.js","sourceRoot":"","sources":["../../src/patterns/llm-proposed.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,0EAA0E;AAC1E,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAEhC,oFAAoF;AACpF,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,mBAAmB,GAAG,OAAO,CAAC;AAChC,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,oBAAoB;IAClC,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,MAAM,WAAW,GAAkB;IACjC,IAAI,EAAE,cAAc;IACpB,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,MAAM;IAEhB,MAAM,CAAC,EAAiB;QACtB,wFAAwF;QACxF,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,UAAU,CAAC,EAAiB;QAC1B,oFAAoF;QACpF,iFAAiF;QACjF,OAAO,SAAS,CACd,EAAE,EAAI,uEAAuE;QAC7E,EAAE,EAAI,4CAA4C;QAClD,CAAC,EAAK,mCAAmC;QACzC,EAAE,EAAI,WAAW;QACjB;YACE,mCAAmC;YACnC,yDAAyD;SAC1D,CACF,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,EAAiB;QAC3B,OAAO,4LAA4L,CAAC;IACtM,CAAC;IAED,UAAU,CAAC,EAAiB;QAC1B,OAAO,8EAA8E,CAAC;IACxF,CAAC;IAED,UAAU,CAAC,EAAiB;QAC1B,OAAO,gEAAgE,CAAC;IAC1E,CAAC;CACF,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -21,20 +21,21 @@ export declare function labelFromScore(score: number): Confidence;
21
21
  /**
22
22
  * Construit un ConfidenceScore à partir des dimensions et des justifications.
23
23
  *
24
- * Formule v2.1 :
24
+ * Formule v2.4 :
25
25
  * `score = typeClassification
26
26
  * − dataRisk × 0.40
27
27
  * − scopeImpact × 0.15
28
28
  * − fileFrequency × 0.10
29
29
  * + baseAvailability × 0.05
30
- * − algorithmStability × 0.10`
30
+ * − algorithmStability × 0.10
31
+ * − postMergeRisk × 0.20`
31
32
  *
32
- * Tous les paramètres après `penalties` sont optionnels (défaut 0). Quand un
33
- * pattern n'set pas `algorithmStability`, son score est numériquement
34
- * identique à v1.4 la dimension est *présente dans le type* mais reste à 0
35
- * tant que les producteurs (block-move detection en v2.6) ne l'alimentent pas.
33
+ * Tous les paramètres après `penalties` sont optionnels (défaut 0). Les
34
+ * dimensions optionnelles (`algorithmStability`, `postMergeRisk`) ne sont
35
+ * poussées dans l'objet `dimensions` que lorsqu'elles sont non-nulles, pour
36
+ * que les snapshots de tests existants restent verts.
36
37
  */
37
- export declare function makeScore(typeClassification: number, dataRisk: number, si: number, boosters: string[], penalties: string[], fileFrequency?: number, baseAvailability?: number, algorithmStability?: number): ConfidenceScore;
38
+ export declare function makeScore(typeClassification: number, dataRisk: number, si: number, boosters: string[], penalties: string[], fileFrequency?: number, baseAvailability?: number, algorithmStability?: number, postMergeRisk?: number): ConfidenceScore;
38
39
  /**
39
40
  * Normalise les lignes d'un bloc pour la comparaison whitespace-only.
40
41
  *
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/patterns/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAI/D;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAKxD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CACvB,kBAAkB,EAAE,MAAM,EAC1B,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,EAAE,MAAM,EAAE,EACnB,aAAa,SAAI,EACjB,gBAAgB,SAAI,EACpB,kBAAkB,SAAI,GACrB,eAAe,CA8BjB;AAID;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAOnE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAID,wFAAwF;AACxF,eAAO,MAAM,iBAAiB,UAQ7B,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAqChE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAEnD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,EAAE,MAAM,EAAE,GACpB;IAAE,eAAe,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAiEvF"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/patterns/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAI/D;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAKxD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CACvB,kBAAkB,EAAE,MAAM,EAC1B,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,EAAE,MAAM,EAAE,EACnB,aAAa,SAAI,EACjB,gBAAgB,SAAI,EACpB,kBAAkB,SAAI,EACtB,aAAa,SAAI,GAChB,eAAe,CA8BjB;AAID;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAOnE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAID,wFAAwF;AACxF,eAAO,MAAM,iBAAiB,UAQ7B,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAqChE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAEnD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,EAAE,MAAM,EAAE,GACpB;IAAE,eAAe,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAiEvF"}
@@ -37,31 +37,29 @@ export function labelFromScore(score) {
37
37
  /**
38
38
  * Construit un ConfidenceScore à partir des dimensions et des justifications.
39
39
  *
40
- * Formule v2.1 :
40
+ * Formule v2.4 :
41
41
  * `score = typeClassification
42
42
  * − dataRisk × 0.40
43
43
  * − scopeImpact × 0.15
44
44
  * − fileFrequency × 0.10
45
45
  * + baseAvailability × 0.05
46
- * − algorithmStability × 0.10`
46
+ * − algorithmStability × 0.10
47
+ * − postMergeRisk × 0.20`
47
48
  *
48
- * Tous les paramètres après `penalties` sont optionnels (défaut 0). Quand un
49
- * pattern n'set pas `algorithmStability`, son score est numériquement
50
- * identique à v1.4 la dimension est *présente dans le type* mais reste à 0
51
- * tant que les producteurs (block-move detection en v2.6) ne l'alimentent pas.
49
+ * Tous les paramètres après `penalties` sont optionnels (défaut 0). Les
50
+ * dimensions optionnelles (`algorithmStability`, `postMergeRisk`) ne sont
51
+ * poussées dans l'objet `dimensions` que lorsqu'elles sont non-nulles, pour
52
+ * que les snapshots de tests existants restent verts.
52
53
  */
53
- export function makeScore(typeClassification, dataRisk, si, boosters, penalties, fileFrequency = 0, baseAvailability = 0, algorithmStability = 0) {
54
+ export function makeScore(typeClassification, dataRisk, si, boosters, penalties, fileFrequency = 0, baseAvailability = 0, algorithmStability = 0, postMergeRisk = 0) {
54
55
  const raw = typeClassification
55
56
  - dataRisk * 0.40
56
57
  - si * 0.15
57
58
  - fileFrequency * 0.10
58
59
  + baseAvailability * 0.05
59
- - algorithmStability * 0.10;
60
+ - algorithmStability * 0.10
61
+ - postMergeRisk * 0.20;
60
62
  const score = Math.round(Math.max(0, Math.min(100, raw)));
61
- // On ne pousse `algorithmStability` dans `dimensions` que s'il est non-zéro,
62
- // pour que les snapshots de tests existants (qui asserent l'objet exact)
63
- // restent verts. Les nouveaux consommateurs peuvent toujours le lire (le
64
- // type le marque optionnel).
65
63
  const dimensions = {
66
64
  typeClassification,
67
65
  dataRisk,
@@ -72,6 +70,9 @@ export function makeScore(typeClassification, dataRisk, si, boosters, penalties,
72
70
  if (algorithmStability !== 0) {
73
71
  dimensions.algorithmStability = algorithmStability;
74
72
  }
73
+ if (postMergeRisk !== 0) {
74
+ dimensions.postMergeRisk = postMergeRisk;
75
+ }
75
76
  return {
76
77
  score,
77
78
  label: labelFromScore(score),
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/patterns/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/patterns/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @gitwand/core v2.4 — Strict validation adapter (Node.js only)
3
+ *
4
+ * Exécute les outils de validation externes (tsc, eslint) sur le contenu
5
+ * fusionné en écrivant un fichier temporaire. Ce module utilise des APIs
6
+ * Node.js natives (node:fs/promises, node:os, node:child_process) et ne
7
+ * doit JAMAIS être importé statiquement depuis du code partagé browser/Tauri.
8
+ *
9
+ * Pattern d'utilisation (depuis validate-strict.ts) :
10
+ * const { runStrictValidationNode } = await import(
11
+ * /* @vite-ignore *\/ "./adapters/strict-node.js"
12
+ * );
13
+ */
14
+ export interface StrictValidationResult {
15
+ /** Erreurs détectées (vide = tout est OK) */
16
+ errors: string[];
17
+ /** Outils qui ont pu être exécutés */
18
+ toolsRun: string[];
19
+ /** Outils qui ont échoué à s'exécuter (non installés, timeout…) */
20
+ toolsFailed: string[];
21
+ }
22
+ /**
23
+ * Valide le contenu avec tsc et/ou eslint.
24
+ * Écrit le contenu dans un fichier temporaire, exécute les outils, puis supprime le fichier.
25
+ *
26
+ * @param content - Contenu fusionné à valider
27
+ * @param filePath - Chemin original (pour l'extension et l'identification)
28
+ * @param tools - Outils à exécuter
29
+ * @returns Résultat de validation strict
30
+ */
31
+ export declare function runStrictValidationNode(content: string, filePath: string, tools: Array<"tsc" | "eslint">): Promise<StrictValidationResult>;
32
+ //# sourceMappingURL=strict-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strict-node.d.ts","sourceRoot":"","sources":["../../../src/resolver/adapters/strict-node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAUH,MAAM,WAAW,sBAAsB;IACrC,6CAA6C;IAC7C,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,sCAAsC;IACtC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,mEAAmE;IACnE,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,GAC7B,OAAO,CAAC,sBAAsB,CAAC,CAoFjC"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * @gitwand/core v2.4 — Strict validation adapter (Node.js only)
3
+ *
4
+ * Exécute les outils de validation externes (tsc, eslint) sur le contenu
5
+ * fusionné en écrivant un fichier temporaire. Ce module utilise des APIs
6
+ * Node.js natives (node:fs/promises, node:os, node:child_process) et ne
7
+ * doit JAMAIS être importé statiquement depuis du code partagé browser/Tauri.
8
+ *
9
+ * Pattern d'utilisation (depuis validate-strict.ts) :
10
+ * const { runStrictValidationNode } = await import(
11
+ * /* @vite-ignore *\/ "./adapters/strict-node.js"
12
+ * );
13
+ */
14
+ import { writeFile, unlink, mkdtemp } from "node:fs/promises";
15
+ import { join } from "node:path";
16
+ import { tmpdir } from "node:os";
17
+ import { execFile } from "node:child_process";
18
+ import { promisify } from "node:util";
19
+ const execFileAsync = promisify(execFile);
20
+ /**
21
+ * Valide le contenu avec tsc et/ou eslint.
22
+ * Écrit le contenu dans un fichier temporaire, exécute les outils, puis supprime le fichier.
23
+ *
24
+ * @param content - Contenu fusionné à valider
25
+ * @param filePath - Chemin original (pour l'extension et l'identification)
26
+ * @param tools - Outils à exécuter
27
+ * @returns Résultat de validation strict
28
+ */
29
+ export async function runStrictValidationNode(content, filePath, tools) {
30
+ const errors = [];
31
+ const toolsRun = [];
32
+ const toolsFailed = [];
33
+ // Extraire l'extension pour le fichier temporaire
34
+ const ext = filePath.includes(".") ? filePath.slice(filePath.lastIndexOf(".")) : ".ts";
35
+ // Créer un répertoire temporaire et y écrire le contenu
36
+ let tmpDir = null;
37
+ let tmpFile = null;
38
+ try {
39
+ tmpDir = await mkdtemp(join(tmpdir(), "gitwand-validate-"));
40
+ tmpFile = join(tmpDir, `merged${ext}`);
41
+ await writeFile(tmpFile, content, "utf8");
42
+ }
43
+ catch {
44
+ return { errors: [], toolsRun: [], toolsFailed: ["setup"] };
45
+ }
46
+ try {
47
+ // ─── tsc ──────────────────────────────────────────────────────
48
+ if (tools.includes("tsc")) {
49
+ try {
50
+ await execFileAsync("tsc", [
51
+ "--noEmit",
52
+ "--noResolve", // pas besoin de résoudre les imports pour la syntaxe
53
+ "--noLib", // pas de lib.d.ts requis pour un check syntaxique rapide
54
+ "--allowJs", // traiter aussi les .js/.jsx
55
+ "--checkJs",
56
+ "--strict", "false", // on ne vérifie que la syntaxe, pas les types stricts
57
+ "--target", "esnext",
58
+ "--moduleResolution", "bundler",
59
+ tmpFile,
60
+ ], { timeout: 10_000 });
61
+ toolsRun.push("tsc");
62
+ // Si tsc sort sans erreur, aucune erreur syntaxique
63
+ }
64
+ catch (err) {
65
+ // tsc exit code != 0 → des erreurs
66
+ toolsRun.push("tsc");
67
+ const output = err.stdout ?? "";
68
+ const stderr = err.stderr ?? "";
69
+ const combined = [output, stderr].filter(Boolean).join("\n");
70
+ // Nettoyer le chemin temporaire pour ne pas exposer les internals
71
+ const cleaned = combined.replace(new RegExp(tmpFile.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "g"), filePath);
72
+ if (cleaned.trim()) {
73
+ errors.push(...cleaned.split("\n").filter((l) => l.trim()));
74
+ }
75
+ }
76
+ }
77
+ // ─── eslint ───────────────────────────────────────────────────
78
+ if (tools.includes("eslint")) {
79
+ try {
80
+ await execFileAsync("eslint", [
81
+ "--no-eslintrc", // ignorer la config du projet
82
+ "--rule", '{"no-undef": 0}', // désactiver les règles de type (syntaxe only)
83
+ "--parser-options", "ecmaVersion:latest",
84
+ "--format", "compact",
85
+ tmpFile,
86
+ ], { timeout: 10_000 });
87
+ toolsRun.push("eslint");
88
+ }
89
+ catch (err) {
90
+ toolsRun.push("eslint");
91
+ const output = err.stdout ?? "";
92
+ const cleaned = output.replace(new RegExp(tmpFile.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "g"), filePath);
93
+ if (cleaned.trim()) {
94
+ errors.push(...cleaned.split("\n").filter((l) => l.trim()));
95
+ }
96
+ }
97
+ }
98
+ }
99
+ finally {
100
+ // Nettoyage du fichier temporaire
101
+ if (tmpFile) {
102
+ try {
103
+ await unlink(tmpFile);
104
+ }
105
+ catch { /* ignore */ }
106
+ }
107
+ if (tmpDir) {
108
+ try {
109
+ const { rmdir } = await import("node:fs/promises");
110
+ await rmdir(tmpDir);
111
+ }
112
+ catch { /* ignore */ }
113
+ }
114
+ }
115
+ return { errors, toolsRun, toolsFailed };
116
+ }
117
+ //# sourceMappingURL=strict-node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strict-node.js","sourceRoot":"","sources":["../../../src/resolver/adapters/strict-node.ts"],"names":[],"mappings":"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"}
@@ -27,9 +27,28 @@ export declare function resolve(conflictedContent: string, filePath: string, use
27
27
  /**
28
28
  * Async variant of `resolve()` — attempts structural (AST-based) merge for
29
29
  * TypeScript/TSX files before falling back to the standard hunk-by-hunk engine.
30
+ * Additionally runs parse-tree validation (v2.4) and optionally strict validation
31
+ * (tsc/eslint) when `validationLevel: "strict"` is configured.
30
32
  *
31
33
  * Structural merge requires `web-tree-sitter` as an **optional** peer dependency.
32
- * If it is not installed, `resolveAsync()` behaves identically to `resolve()`.
34
+ * If it is not installed, `resolveAsync()` behaves identically to `resolve()` with
35
+ * the addition of the parse-tree validation pass.
36
+ *
37
+ * ### v2.4 — Parse-tree validation & retraction
38
+ *
39
+ * After hunk-based resolution produces a `mergedContent`, `resolveAsync()` re-parses
40
+ * it with tree-sitter. If the tree contains ERROR nodes (indicating the merged code is
41
+ * syntactically broken), every auto-resolved hunk is **retracted**:
42
+ *
43
+ * - `resolution.autoResolved` → `false`
44
+ * - `resolution.resolvedLines` → `null`
45
+ * - `hunk.confidence.dimensions.postMergeRisk` → `100`
46
+ * - `validation.parseTreeValid` → `false`
47
+ * - `mergedContent` → `null` (conflicts restored as markers)
48
+ *
49
+ * This eliminates the class of false-positives where the resolver auto-merged code
50
+ * that compiles/runs fine locally but is syntactically invalid (e.g. from two hunks
51
+ * interacting unexpectedly).
33
52
  *
34
53
  * @param conflictedContent - File content with Git conflict markers
35
54
  * @param filePath - File path (format detection + grammar selection)
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resolver/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAGV,cAAc,EAEd,WAAW,EAGZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAIL,KAAK,uBAAuB,EAC7B,MAAM,wBAAwB,CAAC;AAgEhC;;;;;;;GAOG;AACH,wBAAgB,OAAO,CACrB,iBAAiB,EAAE,MAAM,EACzB,QAAQ,EAAE,MAAM,EAChB,WAAW,GAAE,cAAmB,GAC/B,WAAW,CAgGb;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAChC,iBAAiB,EAAE,MAAM,EACzB,QAAQ,EAAE,MAAM,EAChB,WAAW,GAAE,cAAmB,EAChC,cAAc,GAAE,uBAA4B,GAC3C,OAAO,CAAC,WAAW,CAAC,CAmBtB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resolver/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAIV,cAAc,EAEd,WAAW,EAGZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAIL,KAAK,uBAAuB,EAC7B,MAAM,wBAAwB,CAAC;AAoEhC;;;;;;;GAOG;AACH,wBAAgB,OAAO,CACrB,iBAAiB,EAAE,MAAM,EACzB,QAAQ,EAAE,MAAM,EAChB,WAAW,GAAE,cAAmB,GAC/B,WAAW,CAgGb;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,CAyGtB"}
@@ -16,10 +16,14 @@
16
16
  import { tryStructuralMergeResolve, wrapStructuralResult, isStructuralLanguage, } from "../structural/index.js";
17
17
  import { parseConflictMarkers, toConflictHunk } from "../parser.js";
18
18
  import { EMPTY_VALIDATION, validateMergedContent } from "./validation.js";
19
+ import { checkParseTreeValid, applyPostMergeRiskPenalty } from "./validate-parse-tree.js";
20
+ import { runStrictValidation } from "./validate-strict.js";
19
21
  import { isGeneratedFile, reclassifyIfGenerated } from "./generated-detection.js";
20
22
  import { CONFIDENCE_ORDER, DEFAULT_OPTIONS, applyFileFrequencyPenalty, computeEffectiveMinConfidence, computeEffectivePolicy, } from "./policy.js";
21
23
  import { dispatchFormatAware } from "./format-dispatch.js";
22
24
  import { assembleResolution } from "./assemble.js";
25
+ import { setLlmFallbackEnabled } from "../patterns/llm-proposed.js";
26
+ import { runLlmFallbackPhase } from "./llm-pipeline.js";
23
27
  /**
24
28
  * Résout automatiquement un hunk de conflit.
25
29
  *
@@ -148,9 +152,28 @@ export function resolve(conflictedContent, filePath, userOptions = {}) {
148
152
  /**
149
153
  * Async variant of `resolve()` — attempts structural (AST-based) merge for
150
154
  * TypeScript/TSX files before falling back to the standard hunk-by-hunk engine.
155
+ * Additionally runs parse-tree validation (v2.4) and optionally strict validation
156
+ * (tsc/eslint) when `validationLevel: "strict"` is configured.
151
157
  *
152
158
  * Structural merge requires `web-tree-sitter` as an **optional** peer dependency.
153
- * If it is not installed, `resolveAsync()` behaves identically to `resolve()`.
159
+ * If it is not installed, `resolveAsync()` behaves identically to `resolve()` with
160
+ * the addition of the parse-tree validation pass.
161
+ *
162
+ * ### v2.4 — Parse-tree validation & retraction
163
+ *
164
+ * After hunk-based resolution produces a `mergedContent`, `resolveAsync()` re-parses
165
+ * it with tree-sitter. If the tree contains ERROR nodes (indicating the merged code is
166
+ * syntactically broken), every auto-resolved hunk is **retracted**:
167
+ *
168
+ * - `resolution.autoResolved` → `false`
169
+ * - `resolution.resolvedLines` → `null`
170
+ * - `hunk.confidence.dimensions.postMergeRisk` → `100`
171
+ * - `validation.parseTreeValid` → `false`
172
+ * - `mergedContent` → `null` (conflicts restored as markers)
173
+ *
174
+ * This eliminates the class of false-positives where the resolver auto-merged code
175
+ * that compiles/runs fine locally but is syntactically invalid (e.g. from two hunks
176
+ * interacting unexpectedly).
154
177
  *
155
178
  * @param conflictedContent - File content with Git conflict markers
156
179
  * @param filePath - File path (format detection + grammar selection)
@@ -158,19 +181,97 @@ export function resolve(conflictedContent, filePath, userOptions = {}) {
158
181
  * @param structuralOpts - Optional tree-sitter loader overrides
159
182
  */
160
183
  export async function resolveAsync(conflictedContent, filePath, userOptions = {}, structuralOpts = {}) {
161
- // Attempt structural merge for all supported languages (TS/JS/Python/Go/Rust…)
184
+ const options = { ...DEFAULT_OPTIONS, ...userOptions };
185
+ // ─── 1. Tentative de merge structurel (v2.3) ──────────────────────────────
162
186
  if (isStructuralLanguage(filePath)) {
163
187
  try {
164
188
  const merged = await tryStructuralMergeResolve(conflictedContent, filePath, structuralOpts);
165
189
  if (merged !== null) {
166
- return wrapStructuralResult(conflictedContent, merged, filePath);
190
+ const result = wrapStructuralResult(conflictedContent, merged, filePath);
191
+ // Validation parse-tree sur le résultat structurel (devrait toujours passer,
192
+ // mais on vérifie quand même par cohérence).
193
+ const parseTreeValid = await checkParseTreeValid(result.mergedContent ?? "", filePath, structuralOpts);
194
+ return {
195
+ ...result,
196
+ validation: { ...result.validation, parseTreeValid, externalValidation: null },
197
+ };
167
198
  }
168
199
  }
169
200
  catch {
170
201
  // Structural merge failed unexpectedly — fall through to hunk-based resolver
171
202
  }
172
203
  }
173
- // Fall back to the synchronous hunk-based resolver
174
- return resolve(conflictedContent, filePath, userOptions);
204
+ // ─── 2. Résolution hunk-par-hunk (synchrone) ─────────────────────────────
205
+ // Si le LLM fallback est activé, on positionne le flag avant la classification
206
+ // pour que `llmProposed.detect()` retourne true sur les hunks complex.
207
+ // Le flag est réinitialisé immédiatement après `resolve()` — il ne doit pas
208
+ // persister entre appels (module-level state, potentiellement partagé).
209
+ const llmEnabled = !!(options.llmFallback?.enabled && options.llmFallback?.endpoint);
210
+ if (llmEnabled)
211
+ setLlmFallbackEnabled(true);
212
+ const result = resolve(conflictedContent, filePath, userOptions);
213
+ if (llmEnabled)
214
+ setLlmFallbackEnabled(false);
215
+ if (options.verbose && llmEnabled && result.resolutions.some((r) => !r.autoResolved && r.hunk.type === "llm_proposed")) {
216
+ console.error("[GitWand] LLM fallback activé — phase 5 en attente des hunks llm_proposed non résolus.");
217
+ }
218
+ // Rien à valider si la résolution n'est pas complète et pas de LLM fallback
219
+ if (result.mergedContent === null) {
220
+ if (!llmEnabled)
221
+ return result;
222
+ // Phase 5 — LLM fallback pour les hunks llm_proposed non résolus
223
+ return runLlmFallbackPhase(conflictedContent, result, filePath, options, structuralOpts);
224
+ }
225
+ // ─── 3. v2.4 — Validation parse-tree ─────────────────────────────────────
226
+ // Skipped when validationLevel === "off" (performance mode).
227
+ if (options.validationLevel === "off") {
228
+ return { ...result, validation: { ...result.validation, parseTreeValid: null, externalValidation: null } };
229
+ }
230
+ const parseTreeValid = await checkParseTreeValid(result.mergedContent, filePath, structuralOpts);
231
+ if (parseTreeValid === false) {
232
+ // Parse-tree invalide → rétraction de toutes les résolutions automatiques.
233
+ // On ne peut pas savoir quel hunk a cassé la syntaxe sans une analyse fine,
234
+ // donc on est conservatif : tout remettre en conflits manuels.
235
+ const retractedResolutions = result.resolutions.map((r) => r.autoResolved ? applyPostMergeRiskPenalty(r) : r);
236
+ return {
237
+ ...result,
238
+ // mergedContent = null indique aux consommateurs que des conflits subsistent.
239
+ // Le contenu original (avec marqueurs) est conservé dans conflictedContent
240
+ // par l'appelant — ici on expose uniquement la MergeResult enrichie.
241
+ mergedContent: null,
242
+ resolutions: retractedResolutions,
243
+ stats: {
244
+ ...result.stats,
245
+ autoResolved: 0,
246
+ remaining: result.stats.totalConflicts,
247
+ },
248
+ validation: {
249
+ ...result.validation,
250
+ isValid: false,
251
+ parseTreeValid: false,
252
+ },
253
+ };
254
+ }
255
+ // ─── 4. v2.4 — Validation stricte opt-in (tsc / eslint) ─────────────────
256
+ let externalValidation = null;
257
+ if (options.validationLevel === "strict") {
258
+ const tools = options.validationTools ?? ["tsc"];
259
+ const strictResult = await runStrictValidation(result.mergedContent, filePath, tools);
260
+ const failedTool = (strictResult.toolsFailed[0] ?? strictResult.toolsRun[0] ?? "tsc");
261
+ externalValidation = {
262
+ tool: failedTool,
263
+ errors: strictResult.errors,
264
+ passed: strictResult.errors.length === 0,
265
+ };
266
+ }
267
+ return {
268
+ ...result,
269
+ validation: {
270
+ ...result.validation,
271
+ parseTreeValid,
272
+ externalValidation,
273
+ ...(externalValidation && !externalValidation.passed ? { isValid: false } : {}),
274
+ },
275
+ };
175
276
  }
176
277
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resolver/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resolver/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAYH,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,oBAAoB,GAErB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEpE,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAClF,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,yBAAyB,EACzB,6BAA6B,EAC7B,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD;;;;;;;GAOG;AACH,SAAS,WAAW,CAClB,IAAkB,EAClB,QAAgB,EAChB,OAAiC;IAEjC,6DAA6D;IAC7D,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,OAAO;YACL,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,uDAAuD,IAAI,CAAC,IAAI,gBAAgB,IAAI,CAAC,UAAU,CAAC,KAAK,YAAY,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK;SACpJ,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,kEAAkE;IAClE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9D,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACnC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC5D,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,iBAAiB,EAAE,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IAClD,CAAC;IACD,6EAA6E;IAC7E,wEAAwE;IACxE,oEAAoE;IAEpE,2DAA2D;IAC3D,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9F,MAAM,sBAAsB,GAAG,6BAA6B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAEjF,0CAA0C;IAC1C,IAAI,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACvF,OAAO;YACL,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,aAAa,IAAI,CAAC,UAAU,CAAC,KAAK,YAAY,IAAI,CAAC,UAAU,CAAC,KAAK,oCAAoC,sBAAsB,iBAAiB,eAAe,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;SACvN,CAAC;IACJ,CAAC;IAED,OAAO,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;AACvE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CACrB,iBAAyB,EACzB,QAAgB,EAChB,cAA8B,EAAE;IAEhC,MAAM,OAAO,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,WAAW,EAAE,CAAC;IAEvD,MAAM,EAAE,QAAQ,EAAE,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IAE7D,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,MAAM,WAAW,GAAqB,EAAE,CAAC;IACzC,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,IAAI,WAAW,GAAG,IAAI,CAAC;IAEvB,0EAA0E;IAC1E,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAElE,+EAA+E;IAC/E,gFAAgF;IAChF,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAE1B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC5B,WAAW,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YACnC,SAAS;QACX,CAAC;QAED,IAAI,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE5C,qFAAqF;QACrF,IAAI,GAAG,yBAAyB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAE1D,uFAAuF;QACvF,IAAI,GAAG,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE5C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEjB,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChG,MAAM,YAAY,GAAG,aAAa,KAAK,IAAI,CAAC;QAE5C,mFAAmF;QACnF,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7C,iBAAiB,EAAE,CAAC;QACtB,CAAC;QAED,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAE1E,IAAI,YAAY,EAAE,CAAC;YACjB,WAAW,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;YACnC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CACT,8BAA8B,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,SAAS,MAAM,IAAI,CAAC,WAAW,EAAE,CACrF,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,kEAAkE;YAClE,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACjC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YACpC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACjC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YACtC,CAAC;YACD,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5B,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;YACtC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACnC,WAAW,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,MAAM,MAAM,GAAG,EAAkC,CAAC;IAClD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;IAE3E,MAAM,KAAK,GAAe;QACxB,cAAc,EAAE,KAAK,CAAC,MAAM;QAC5B,YAAY,EAAE,iBAAiB;QAC/B,SAAS,EAAE,KAAK,CAAC,MAAM,GAAG,iBAAiB;QAC3C,MAAM;KACP,CAAC;IAEF,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAElE,oCAAoC;IACpC,MAAM,UAAU,GAAqB,aAAa,KAAK,IAAI;QACzD,CAAC,CAAC,qBAAqB,CAAC,aAAa,EAAE,QAAQ,CAAC;QAChD,CAAC,CAAC,gBAAgB,CAAC;IAErB,OAAO;QACL,QAAQ;QACR,aAAa;QACb,KAAK;QACL,WAAW;QACX,KAAK;QACL,UAAU;KACX,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,iBAAyB,EACzB,QAAgB,EAChB,cAA8B,EAAE,EAChC,iBAA0C,EAAE;IAE5C,MAAM,OAAO,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,WAAW,EAAE,CAAC;IAEvD,6EAA6E;IAC7E,IAAI,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAC5C,iBAAiB,EACjB,QAAQ,EACR,cAAc,CACf,CAAC;YACF,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,MAAM,MAAM,GAAG,oBAAoB,CAAC,iBAAiB,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;gBACzE,6EAA6E;gBAC7E,6CAA6C;gBAC7C,MAAM,cAAc,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;gBACvG,OAAO;oBACL,GAAG,MAAM;oBACT,UAAU,EAAE,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,IAAI,EAAE;iBAC/E,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,6EAA6E;QAC/E,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,iFAAiF;IACjF,yEAAyE;IACzE,8EAA8E;IAC9E,0EAA0E;IAC1E,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACrF,IAAI,UAAU;QAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACjE,IAAI,UAAU;QAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAE7C,IAAI,OAAO,CAAC,OAAO,IAAI,UAAU,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,EAAE,CAAC;QACvH,OAAO,CAAC,KAAK,CAAC,wFAAwF,CAAC,CAAC;IAC1G,CAAC;IAED,4EAA4E;IAC5E,IAAI,MAAM,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,UAAU;YAAE,OAAO,MAAM,CAAC;QAC/B,iEAAiE;QACjE,OAAO,mBAAmB,CAAC,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;IAC3F,CAAC;IAED,4EAA4E;IAC5E,+DAA+D;IAC/D,IAAI,OAAO,CAAC,eAAe,KAAK,KAAK,EAAE,CAAC;QACtC,OAAO,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,EAAE,CAAC;IAC7G,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;IAEjG,IAAI,cAAc,KAAK,KAAK,EAAE,CAAC;QAC7B,2EAA2E;QAC3E,4EAA4E;QAC5E,+DAA+D;QAC/D,MAAM,oBAAoB,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACxD,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAClD,CAAC;QAEF,OAAO;YACL,GAAG,MAAM;YACT,8EAA8E;YAC9E,2EAA2E;YAC3E,qEAAqE;YACrE,aAAa,EAAE,IAAI;YACnB,WAAW,EAAE,oBAAoB;YACjC,KAAK,EAAE;gBACL,GAAG,MAAM,CAAC,KAAK;gBACf,YAAY,EAAE,CAAC;gBACf,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc;aACvC;YACD,UAAU,EAAE;gBACV,GAAG,MAAM,CAAC,UAAU;gBACpB,OAAO,EAAE,KAAK;gBACd,cAAc,EAAE,KAAK;aACtB;SACF,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,IAAI,kBAAkB,GAAoC,IAAI,CAAC;IAC/D,IAAI,OAAO,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;QACzC,MAAM,KAAK,GAA4B,OAAO,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1E,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACtF,MAAM,UAAU,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAqB,CAAC;QAC1G,kBAAkB,GAAG;YACnB,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;SACzC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,MAAM;QACT,UAAU,EAAE;YACV,GAAG,MAAM,CAAC,UAAU;YACpB,cAAc;YACd,kBAAkB;YAClB,GAAG,CAAC,kBAAkB,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * v2.5 — LLM fallback pipeline (phase 5 de resolveAsync).
3
+ *
4
+ * Après la résolution hunk-par-hunk et la validation parse-tree, cette phase
5
+ * tente de résoudre les hunks `complex` restants via le fallback LLM.
6
+ *
7
+ * ## Intégration dans resolveAsync
8
+ *
9
+ * La fonction `runLlmFallbackPhase` est appelée par `resolveAsync()` uniquement si :
10
+ * - `options.llmFallback.enabled === true`
11
+ * - `options.llmFallback.endpoint` est injecté
12
+ * - Il reste des hunks `complex` non résolus dans `result.resolutions`
13
+ *
14
+ * ## Reconstruction du mergedContent
15
+ *
16
+ * Les `HunkResolution` sont mises à jour en place. Le `mergedContent` est
17
+ * reconstruit à partir des segments parsés de `conflictedContent` en appliquant
18
+ * les nouvelles résolutions.
19
+ */
20
+ import type { GitWandOptions, MergeResult } from "../types.js";
21
+ import type { StructuralLoaderOptions } from "../structural/index.js";
22
+ /**
23
+ * Applique le fallback LLM sur les hunks `complex` non résolus.
24
+ *
25
+ * Retourne le `MergeResult` mis à jour avec :
26
+ * - Les `HunkResolution` patchées (llm_proposed ou toujours complex)
27
+ * - La `DecisionTrace` enrichie avec `llmTrace` pour chaque résolution LLM
28
+ * - Le `mergedContent` reconstruit
29
+ * - Les stats mises à jour
30
+ * - La validation post-merge re-exécutée si toutes les résolutions passent
31
+ */
32
+ export declare function runLlmFallbackPhase(conflictedContent: string, result: MergeResult, filePath: string, options: Required<GitWandOptions>, structuralOpts?: StructuralLoaderOptions): Promise<MergeResult>;
33
+ //# sourceMappingURL=llm-pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-pipeline.d.ts","sourceRoot":"","sources":["../../src/resolver/llm-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAEV,cAAc,EAGd,WAAW,EAEZ,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AA0EtE;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,EACjC,cAAc,GAAE,uBAA4B,GAC3C,OAAO,CAAC,WAAW,CAAC,CAmJtB"}