@gitwand/core 2.5.1 → 2.8.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 (56) hide show
  1. package/dist/__tests__/patterns/llm-proposed.test.js +3 -3
  2. package/dist/__tests__/patterns/llm-proposed.test.js.map +1 -1
  3. package/dist/__tests__/refactoring/refactoring-pipeline.test.d.ts +14 -0
  4. package/dist/__tests__/refactoring/refactoring-pipeline.test.d.ts.map +1 -0
  5. package/dist/__tests__/refactoring/refactoring-pipeline.test.js +359 -0
  6. package/dist/__tests__/refactoring/refactoring-pipeline.test.js.map +1 -0
  7. package/dist/classifier.d.ts.map +1 -1
  8. package/dist/classifier.js +2 -0
  9. package/dist/classifier.js.map +1 -1
  10. package/dist/config.d.ts +20 -0
  11. package/dist/config.d.ts.map +1 -1
  12. package/dist/config.js +13 -0
  13. package/dist/config.js.map +1 -1
  14. package/dist/index.d.ts +3 -1
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +2 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/patterns/refactoring-aware-merge.d.ts +52 -0
  19. package/dist/patterns/refactoring-aware-merge.d.ts.map +1 -0
  20. package/dist/patterns/refactoring-aware-merge.js +131 -0
  21. package/dist/patterns/refactoring-aware-merge.js.map +1 -0
  22. package/dist/refactoring/detect.d.ts +54 -0
  23. package/dist/refactoring/detect.d.ts.map +1 -0
  24. package/dist/refactoring/detect.js +389 -0
  25. package/dist/refactoring/detect.js.map +1 -0
  26. package/dist/refactoring/index.d.ts +13 -0
  27. package/dist/refactoring/index.d.ts.map +1 -0
  28. package/dist/refactoring/index.js +12 -0
  29. package/dist/refactoring/index.js.map +1 -0
  30. package/dist/refactoring/invert.d.ts +53 -0
  31. package/dist/refactoring/invert.d.ts.map +1 -0
  32. package/dist/refactoring/invert.js +180 -0
  33. package/dist/refactoring/invert.js.map +1 -0
  34. package/dist/refactoring/orchestration.d.ts +65 -0
  35. package/dist/refactoring/orchestration.d.ts.map +1 -0
  36. package/dist/refactoring/orchestration.js +174 -0
  37. package/dist/refactoring/orchestration.js.map +1 -0
  38. package/dist/refactoring/replay.d.ts +74 -0
  39. package/dist/refactoring/replay.d.ts.map +1 -0
  40. package/dist/refactoring/replay.js +200 -0
  41. package/dist/refactoring/replay.js.map +1 -0
  42. package/dist/resolver/assemble.d.ts.map +1 -1
  43. package/dist/resolver/assemble.js +21 -0
  44. package/dist/resolver/assemble.js.map +1 -1
  45. package/dist/resolver/index.d.ts.map +1 -1
  46. package/dist/resolver/index.js +9 -0
  47. package/dist/resolver/index.js.map +1 -1
  48. package/dist/resolver/policy.d.ts.map +1 -1
  49. package/dist/resolver/policy.js +2 -0
  50. package/dist/resolver/policy.js.map +1 -1
  51. package/dist/resolvers/llm-fallback.d.ts.map +1 -1
  52. package/dist/resolvers/llm-fallback.js +23 -9
  53. package/dist/resolvers/llm-fallback.js.map +1 -1
  54. package/dist/types.d.ts +59 -1
  55. package/dist/types.d.ts.map +1 -1
  56. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -39,7 +39,9 @@ export { tryResolveYarnLockConflict } from "./resolvers/lockfile-yarn.js";
39
39
  export { tryResolvePnpmLockConflict } from "./resolvers/lockfile-pnpm.js";
40
40
  export { matchGlob, effectivePolicyForFile, policyToConfig, parseGitwandrc, DEFAULT_POLICY, } from "./config.js";
41
41
  export { tryFormatAwareResolve, isJsonFile, isMarkdownFile, isYamlFile, isJsFile, isVueFile, isCssFile, isNpmLockfile, isYarnLockfile, isPnpmLockfile, isLockfile, } from "./resolvers/dispatcher.js";
42
- export type { MergeInput, MergeResult, MergeStats, ConflictHunk, ConflictType, Confidence, ConfidenceScore, HunkResolution, GitWandOptions, DecisionTrace, TraceStep, ValidationResult, ExternalValidationResult, LlmEndpoint, LlmFallbackConfig, LlmTrace, } from "./types.js";
42
+ export type { MergeInput, MergeResult, MergeStats, ConflictHunk, ConflictType, Confidence, ConfidenceScore, HunkResolution, GitWandOptions, DecisionTrace, TraceStep, ValidationResult, ExternalValidationResult, LlmEndpoint, LlmFallbackConfig, LlmTrace, RefactoringKind, Refactoring, } from "./types.js";
43
+ export { detectRefactorings, invertRefactorings, replayRefactorings, mergeRefactorings, tryRefMerge, } from "./refactoring/index.js";
44
+ export type { RefMergeResult } from "./refactoring/index.js";
43
45
  export { tryLlmFallbackResolve } from "./resolvers/llm-fallback.js";
44
46
  export type { LlmResolveResult } from "./resolvers/llm-fallback.js";
45
47
  export type { JsonMergeResult } from "./resolvers/json.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -44,6 +44,8 @@ export { tryResolvePnpmLockConflict } from "./resolvers/lockfile-pnpm.js";
44
44
  // Phase 7.4 — Politiques de merge et configuration par projet
45
45
  export { matchGlob, effectivePolicyForFile, policyToConfig, parseGitwandrc, DEFAULT_POLICY, } from "./config.js";
46
46
  export { tryFormatAwareResolve, isJsonFile, isMarkdownFile, isYamlFile, isJsFile, isVueFile, isCssFile, isNpmLockfile, isYarnLockfile, isPnpmLockfile, isLockfile, } from "./resolvers/dispatcher.js";
47
+ // v2.6 — Refactoring-aware merge pipeline
48
+ export { detectRefactorings, invertRefactorings, replayRefactorings, mergeRefactorings, tryRefMerge, } from "./refactoring/index.js";
47
49
  // v2.5 — LLM fallback resolver (consommateurs souhaitant invoquer directement)
48
50
  export { tryLlmFallbackResolve } from "./resolvers/llm-fallback.js";
49
51
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE5D,2EAA2E;AAC3E,OAAO,EACL,yBAAyB,EACzB,gBAAgB,EAAQ,kBAAkB;AAC1C,oBAAoB,EAAI,YAAY;AACpC,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAElE,wCAAwC;AACxC,OAAO,EACL,aAAa,EACb,eAAe,EACf,SAAS,GAIV,MAAM,iBAAiB,CAAC;AAEzB,kDAAkD;AAClD,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,eAAe,GAGhB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,MAAM,iCAAiC,CAAC;AAGzC,gDAAgD;AAChD,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAExG,8EAA8E;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE1E,oEAAoE;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,8DAA8D;AAC9D,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,qBAAqB,EACrB,UAAU,EACV,cAAc,EACd,UAAU,EACV,QAAQ,EACR,SAAS,EACT,SAAS,EACT,aAAa,EACb,cAAc,EACd,cAAc,EACd,UAAU,GACX,MAAM,2BAA2B,CAAC;AAyBnC,+EAA+E;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE5D,2EAA2E;AAC3E,OAAO,EACL,yBAAyB,EACzB,gBAAgB,EAAQ,kBAAkB;AAC1C,oBAAoB,EAAI,YAAY;AACpC,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAElE,wCAAwC;AACxC,OAAO,EACL,aAAa,EACb,eAAe,EACf,SAAS,GAIV,MAAM,iBAAiB,CAAC;AAEzB,kDAAkD;AAClD,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,eAAe,GAGhB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,MAAM,iCAAiC,CAAC;AAGzC,gDAAgD;AAChD,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAExG,8EAA8E;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE1E,oEAAoE;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,8DAA8D;AAC9D,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,qBAAqB,EACrB,UAAU,EACV,cAAc,EACd,UAAU,EACV,QAAQ,EACR,SAAS,EACT,SAAS,EACT,aAAa,EACb,cAAc,EACd,cAAc,EACd,UAAU,GACX,MAAM,2BAA2B,CAAC;AA4BnC,0CAA0C;AAC1C,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,WAAW,GACZ,MAAM,wBAAwB,CAAC;AAGhC,+EAA+E;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * v2.6 — Pattern refactoring-aware-merge (priority 25, expérimental, opt-in).
3
+ *
4
+ * Détecte les conflits causés par des refactorings concurrents (renommages,
5
+ * déplacements de méthode) et délègue la résolution au pipeline RefMerge.
6
+ *
7
+ * ## Position dans la hiérarchie
8
+ *
9
+ * Priority 25 — après les patterns trivials (1–10) mais avant les patterns
10
+ * heuristiques (whitespace: 5, value_only: 8, non_overlapping: 4). En pratique,
11
+ * ce pattern n'est évalué que sur les hunks qui ont déjà résisté aux patterns
12
+ * plus simples, car ceux-ci ont une priorité inférieure (numéro plus petit).
13
+ *
14
+ * Attendez — la convention est : **plus petit = évalué en premier**. Donc 25
15
+ * signifie évalué AVANT whitespace_only (5) ? Non — whitespace (5) est évalué
16
+ * avant RefMerge (25). Les patterns à faible numéro sont prioritaires.
17
+ *
18
+ * RefMerge à priority 25 est évalué :
19
+ * - APRÈS non_overlapping (4), whitespace_only (5), reorder_only (6),
20
+ * insertion_at_boundary (7), value_only_change (8)
21
+ * - AVANT complex (999) et llm_proposed (998)
22
+ *
23
+ * C'est intentionnel : on ne tente RefMerge que si les patterns textuels simples
24
+ * n'ont pas suffi, car RefMerge est plus coûteux (tokenisation + détection).
25
+ *
26
+ * ## Activation
27
+ *
28
+ * Ce pattern est désactivé par défaut. Il s'active via `setRefMergeEnabled(true)`
29
+ * appelé par `resolve()` quand `options.refactoringAware.enabled === true`.
30
+ * Le flag est réinitialisé après chaque appel à `resolve()`.
31
+ *
32
+ * ## Résolution
33
+ *
34
+ * `detect()` exécute le pipeline RefMerge complet et cache le résultat dans
35
+ * `_lastResult`. Si le pipeline réussit (`lines !== null`), detect retourne `true`
36
+ * et `assembleResolution()` peut récupérer les lignes via `getLastRefMergeResult()`.
37
+ */
38
+ import type { PatternPlugin } from "../types.js";
39
+ import type { RefMergeResult } from "../refactoring/orchestration.js";
40
+ /** Active ou désactive le pattern RefMerge pour la prochaine résolution. */
41
+ export declare function setRefMergeEnabled(enabled: boolean, max?: number): void;
42
+ /** Retourne l'état d'activation courant (utile pour les tests). */
43
+ export declare function isRefMergeEnabled(): boolean;
44
+ /**
45
+ * Retourne le dernier résultat RefMerge mis en cache par `detect()`.
46
+ * Appelé par `assembleResolution()` pour récupérer les lignes sans recalcul.
47
+ * Retourne `null` si `detect()` n'a pas encore été appelé ou si le résultat a été reset.
48
+ */
49
+ export declare function getLastRefMergeResult(): RefMergeResult | null;
50
+ declare const refactoringAwareMerge: PatternPlugin;
51
+ export default refactoringAwareMerge;
52
+ //# sourceMappingURL=refactoring-aware-merge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refactoring-aware-merge.d.ts","sourceRoot":"","sources":["../../src/patterns/refactoring-aware-merge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,KAAK,EAAkC,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAatE,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,SAAK,GAAG,IAAI,CAInE;AAED,mEAAmE;AACnE,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,cAAc,GAAG,IAAI,CAE7D;AAID,QAAA,MAAM,qBAAqB,EAAE,aAyE5B,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * v2.6 — Pattern refactoring-aware-merge (priority 25, expérimental, opt-in).
3
+ *
4
+ * Détecte les conflits causés par des refactorings concurrents (renommages,
5
+ * déplacements de méthode) et délègue la résolution au pipeline RefMerge.
6
+ *
7
+ * ## Position dans la hiérarchie
8
+ *
9
+ * Priority 25 — après les patterns trivials (1–10) mais avant les patterns
10
+ * heuristiques (whitespace: 5, value_only: 8, non_overlapping: 4). En pratique,
11
+ * ce pattern n'est évalué que sur les hunks qui ont déjà résisté aux patterns
12
+ * plus simples, car ceux-ci ont une priorité inférieure (numéro plus petit).
13
+ *
14
+ * Attendez — la convention est : **plus petit = évalué en premier**. Donc 25
15
+ * signifie évalué AVANT whitespace_only (5) ? Non — whitespace (5) est évalué
16
+ * avant RefMerge (25). Les patterns à faible numéro sont prioritaires.
17
+ *
18
+ * RefMerge à priority 25 est évalué :
19
+ * - APRÈS non_overlapping (4), whitespace_only (5), reorder_only (6),
20
+ * insertion_at_boundary (7), value_only_change (8)
21
+ * - AVANT complex (999) et llm_proposed (998)
22
+ *
23
+ * C'est intentionnel : on ne tente RefMerge que si les patterns textuels simples
24
+ * n'ont pas suffi, car RefMerge est plus coûteux (tokenisation + détection).
25
+ *
26
+ * ## Activation
27
+ *
28
+ * Ce pattern est désactivé par défaut. Il s'active via `setRefMergeEnabled(true)`
29
+ * appelé par `resolve()` quand `options.refactoringAware.enabled === true`.
30
+ * Le flag est réinitialisé après chaque appel à `resolve()`.
31
+ *
32
+ * ## Résolution
33
+ *
34
+ * `detect()` exécute le pipeline RefMerge complet et cache le résultat dans
35
+ * `_lastResult`. Si le pipeline réussit (`lines !== null`), detect retourne `true`
36
+ * et `assembleResolution()` peut récupérer les lignes via `getLastRefMergeResult()`.
37
+ */
38
+ import { makeScore, scopeImpact } from "./utils.js";
39
+ import { tryRefMerge } from "../refactoring/orchestration.js";
40
+ // ─── État module ──────────────────────────────────────────────────────────────
41
+ /** Flag d'activation — positionné par `resolve()` */
42
+ let _refMergeEnabled = false;
43
+ /** Quota maximum de refactorings par branche */
44
+ let _maxRefactoringsPerSide = 10;
45
+ /** Dernier résultat RefMerge (cache pour éviter un double calcul detect+assemble) */
46
+ let _lastResult = null;
47
+ // ─── API d'activation (consommée par resolver/index.ts) ──────────────────────
48
+ /** Active ou désactive le pattern RefMerge pour la prochaine résolution. */
49
+ export function setRefMergeEnabled(enabled, max = 10) {
50
+ _refMergeEnabled = enabled;
51
+ _maxRefactoringsPerSide = max;
52
+ _lastResult = null; // reset cache
53
+ }
54
+ /** Retourne l'état d'activation courant (utile pour les tests). */
55
+ export function isRefMergeEnabled() {
56
+ return _refMergeEnabled;
57
+ }
58
+ /**
59
+ * Retourne le dernier résultat RefMerge mis en cache par `detect()`.
60
+ * Appelé par `assembleResolution()` pour récupérer les lignes sans recalcul.
61
+ * Retourne `null` si `detect()` n'a pas encore été appelé ou si le résultat a été reset.
62
+ */
63
+ export function getLastRefMergeResult() {
64
+ return _lastResult;
65
+ }
66
+ // ─── Plugin ───────────────────────────────────────────────────────────────────
67
+ const refactoringAwareMerge = {
68
+ type: "refactoring_aware_merge",
69
+ /**
70
+ * Priority 970 — évalué après tous les patterns textuels (10–60) mais avant
71
+ * llm_proposed (998) et complex (999). RefMerge est un recours pour les hunks
72
+ * que tous les patterns simples ont échoué à résoudre.
73
+ */
74
+ priority: 970,
75
+ /**
76
+ * Nécessite la base (diff3) pour détecter correctement les refactorings.
77
+ * Sans base, impossible de calculer ce qui a changé de chaque côté.
78
+ */
79
+ requires: "diff3",
80
+ detect(h) {
81
+ if (!_refMergeEnabled)
82
+ return false;
83
+ if (h.baseLines.length === 0)
84
+ return false;
85
+ // Exécuter le pipeline RefMerge complet et cacher le résultat
86
+ const result = tryRefMerge(h, _maxRefactoringsPerSide);
87
+ _lastResult = result;
88
+ return result.lines !== null;
89
+ },
90
+ confidence(h) {
91
+ return makeScore(82, // typeClassification : refactoring bijectivement vérifié + merge réussi
92
+ 12, // dataRisk : faible — merge déterministe, pas génératif
93
+ scopeImpact(h.oursLines.length + h.theirsLines.length), [
94
+ "Refactoring bijectivement vérifié (substitution simulée)",
95
+ "Merge textuel réussi sur les versions inversées",
96
+ ], []);
97
+ },
98
+ explanation(_h) {
99
+ if (_lastResult) {
100
+ const refs = [..._lastResult.oursRefs, ..._lastResult.theirsRefs];
101
+ const renames = refs.filter((r) => r.kind !== "move-method");
102
+ const moves = refs.filter((r) => r.kind === "move-method");
103
+ const parts = [];
104
+ if (renames.length > 0) {
105
+ parts.push(`${renames.length} renommage(s) détecté(s) et inversé(s)`);
106
+ }
107
+ if (moves.length > 0) {
108
+ parts.push(`${moves.length} déplacement(s) de méthode`);
109
+ }
110
+ return `Conflit de refactoring — ${parts.join(", ") || "refactoring détecté"}. Résolu via le pipeline RefMerge (inversion + merge + rejeu).`;
111
+ }
112
+ return "Conflit causé par un refactoring concurrent — résolu via le pipeline RefMerge.";
113
+ },
114
+ passReason(_h) {
115
+ if (_lastResult?.oursRefs.length || _lastResult?.theirsRefs.length) {
116
+ return `Refactoring(s) détecté(s) : ours=${_lastResult.oursRefs.length}, theirs=${_lastResult.theirsRefs.length}. Merge textuel réussi après inversion.`;
117
+ }
118
+ return "Refactoring bijectivement détecté — merge réussi après inversion.";
119
+ },
120
+ failReason(_h) {
121
+ if (!_refMergeEnabled) {
122
+ return "RefMerge désactivé (options.refactoringAware.enabled !== true).";
123
+ }
124
+ if (_lastResult && _lastResult.lines === null) {
125
+ return `RefMerge échoué : ${_lastResult.reason}`;
126
+ }
127
+ return "Aucun refactoring bijectivement détectable dans ce hunk.";
128
+ },
129
+ };
130
+ export default refactoringAwareMerge;
131
+ //# sourceMappingURL=refactoring-aware-merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refactoring-aware-merge.js","sourceRoot":"","sources":["../../src/patterns/refactoring-aware-merge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * GitWand v2.6 — Détection de refactorings (expérimental)
3
+ *
4
+ * Détecte les refactorings entre la version de base d'un fichier et une branche
5
+ * (ours ou theirs). Utilisé par le pipeline RefMerge avant la résolution textuelle.
6
+ *
7
+ * ## Algorithme
8
+ *
9
+ * La détection est **purement textuelle** (zero dépendance, compatible browser) :
10
+ *
11
+ * ### rename-local / rename-top-level
12
+ * 1. Tokeniser base et branch en listes d'identifiants (sans mots-clés).
13
+ * 2. Identifier les tokens présents uniquement dans base (`removed`) et
14
+ * uniquement dans branch (`added`).
15
+ * 3. Pour chaque paire (oldName, newName) dont le compte d'occurrences est
16
+ * identique ET unique dans le groupe, construire une substitution candidate.
17
+ * 4. Appliquer toutes les substitutions simultanément sur la séquence base.
18
+ * 5. Si la séquence obtenue == séquence branch : les renames sont confirmés.
19
+ * 6. Classifier rename-local vs rename-top-level selon le contexte syntaxique.
20
+ *
21
+ * ### move-method
22
+ * Parser léger ligne par ligne pour extraire `Map<className → Set<methodName>>`.
23
+ * Détecter les méthodes ayant changé de classe entre base et branch.
24
+ *
25
+ * ## Garanties
26
+ * - Retourne `[]` en cas d'erreur ou d'absence de tree-sitter (safe by default).
27
+ * - Zéro import Node.js — compatible browser, Node.js, Tauri WebView.
28
+ * - Complexité O(n) sur la longueur du code (n = nombre de tokens).
29
+ */
30
+ import type { Refactoring } from "../types.js";
31
+ /**
32
+ * Détecte les refactorings entre la version de base d'un fichier et une branche.
33
+ *
34
+ * Point d'entrée principal du module. Appelé deux fois par l'orchestrateur
35
+ * RefMerge — une fois pour `(base, ours)`, une fois pour `(base, theirs)`.
36
+ *
37
+ * @param baseLines Lignes du fichier dans la version de base (ancêtre commun)
38
+ * @param branchLines Lignes du fichier dans la branche (ours ou theirs)
39
+ * @param maxRefactorings Quota maximum de refactorings retournés (défaut: 10)
40
+ * @returns Liste des refactorings détectés, triée par type de confiance
41
+ * (rename-top-level > rename-local > move-method).
42
+ * Retourne `[]` en cas d'erreur ou si aucun refactoring détecté.
43
+ *
44
+ * @example
45
+ * ```ts
46
+ * const refs = detectRefactorings(
47
+ * ["function foo(x) { return x + 1; }"],
48
+ * ["function foo(value) { return value + 1; }"],
49
+ * );
50
+ * // refs = [{ kind: "rename-local", oldName: "x", newName: "value", scope: "foo" }]
51
+ * ```
52
+ */
53
+ export declare function detectRefactorings(baseLines: string[], branchLines: string[], maxRefactorings?: number): Refactoring[];
54
+ //# sourceMappingURL=detect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/refactoring/detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAoX/C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,EAAE,MAAM,EAAE,EACrB,eAAe,SAAK,GACnB,WAAW,EAAE,CA2Bf"}