@gitwand/core 2.2.0 → 2.4.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.
Files changed (186) hide show
  1. package/dist/__tests__/corpus.d.ts.map +1 -1
  2. package/dist/__tests__/corpus.js +115 -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/non-overlapping.test.d.ts +11 -0
  13. package/dist/__tests__/patterns/non-overlapping.test.d.ts.map +1 -0
  14. package/dist/__tests__/patterns/non-overlapping.test.js +240 -0
  15. package/dist/__tests__/patterns/non-overlapping.test.js.map +1 -0
  16. package/dist/__tests__/patterns/one-side-change.test.d.ts +10 -0
  17. package/dist/__tests__/patterns/one-side-change.test.d.ts.map +1 -0
  18. package/dist/__tests__/patterns/one-side-change.test.js +191 -0
  19. package/dist/__tests__/patterns/one-side-change.test.js.map +1 -0
  20. package/dist/__tests__/patterns/same-change.test.d.ts +9 -0
  21. package/dist/__tests__/patterns/same-change.test.d.ts.map +1 -0
  22. package/dist/__tests__/patterns/same-change.test.js +173 -0
  23. package/dist/__tests__/patterns/same-change.test.js.map +1 -0
  24. package/dist/__tests__/patterns/value-only-change.test.d.ts +11 -0
  25. package/dist/__tests__/patterns/value-only-change.test.d.ts.map +1 -0
  26. package/dist/__tests__/patterns/value-only-change.test.js +159 -0
  27. package/dist/__tests__/patterns/value-only-change.test.js.map +1 -0
  28. package/dist/__tests__/patterns/whitespace-only.test.d.ts +10 -0
  29. package/dist/__tests__/patterns/whitespace-only.test.d.ts.map +1 -0
  30. package/dist/__tests__/patterns/whitespace-only.test.js +177 -0
  31. package/dist/__tests__/patterns/whitespace-only.test.js.map +1 -0
  32. package/dist/__tests__/resolvers/css.test.d.ts +12 -0
  33. package/dist/__tests__/resolvers/css.test.d.ts.map +1 -0
  34. package/dist/__tests__/resolvers/css.test.js +171 -0
  35. package/dist/__tests__/resolvers/css.test.js.map +1 -0
  36. package/dist/__tests__/resolvers/imports.test.d.ts +12 -0
  37. package/dist/__tests__/resolvers/imports.test.d.ts.map +1 -0
  38. package/dist/__tests__/resolvers/imports.test.js +135 -0
  39. package/dist/__tests__/resolvers/imports.test.js.map +1 -0
  40. package/dist/__tests__/resolvers/json.test.d.ts +12 -0
  41. package/dist/__tests__/resolvers/json.test.d.ts.map +1 -0
  42. package/dist/__tests__/resolvers/json.test.js +184 -0
  43. package/dist/__tests__/resolvers/json.test.js.map +1 -0
  44. package/dist/__tests__/resolvers/lockfile-npm.test.d.ts +12 -0
  45. package/dist/__tests__/resolvers/lockfile-npm.test.d.ts.map +1 -0
  46. package/dist/__tests__/resolvers/lockfile-npm.test.js +187 -0
  47. package/dist/__tests__/resolvers/lockfile-npm.test.js.map +1 -0
  48. package/dist/__tests__/resolvers/lockfile-pnpm.test.d.ts +12 -0
  49. package/dist/__tests__/resolvers/lockfile-pnpm.test.d.ts.map +1 -0
  50. package/dist/__tests__/resolvers/lockfile-pnpm.test.js +175 -0
  51. package/dist/__tests__/resolvers/lockfile-pnpm.test.js.map +1 -0
  52. package/dist/__tests__/resolvers/lockfile-yarn.test.d.ts +12 -0
  53. package/dist/__tests__/resolvers/lockfile-yarn.test.d.ts.map +1 -0
  54. package/dist/__tests__/resolvers/lockfile-yarn.test.js +165 -0
  55. package/dist/__tests__/resolvers/lockfile-yarn.test.js.map +1 -0
  56. package/dist/__tests__/resolvers/markdown.test.d.ts +12 -0
  57. package/dist/__tests__/resolvers/markdown.test.d.ts.map +1 -0
  58. package/dist/__tests__/resolvers/markdown.test.js +188 -0
  59. package/dist/__tests__/resolvers/markdown.test.js.map +1 -0
  60. package/dist/__tests__/resolvers/vue.test.d.ts +12 -0
  61. package/dist/__tests__/resolvers/vue.test.d.ts.map +1 -0
  62. package/dist/__tests__/resolvers/vue.test.js +225 -0
  63. package/dist/__tests__/resolvers/vue.test.js.map +1 -0
  64. package/dist/__tests__/resolvers/yaml.test.d.ts +12 -0
  65. package/dist/__tests__/resolvers/yaml.test.d.ts.map +1 -0
  66. package/dist/__tests__/resolvers/yaml.test.js +203 -0
  67. package/dist/__tests__/resolvers/yaml.test.js.map +1 -0
  68. package/dist/__tests__/structural/grandeur-nature.test.d.ts +31 -0
  69. package/dist/__tests__/structural/grandeur-nature.test.d.ts.map +1 -0
  70. package/dist/__tests__/structural/grandeur-nature.test.js +264 -0
  71. package/dist/__tests__/structural/grandeur-nature.test.js.map +1 -0
  72. package/dist/__tests__/structural/languages.test.d.ts +5 -0
  73. package/dist/__tests__/structural/languages.test.d.ts.map +1 -0
  74. package/dist/__tests__/structural/languages.test.js +74 -0
  75. package/dist/__tests__/structural/languages.test.js.map +1 -0
  76. package/dist/__tests__/structural/matching.test.d.ts +6 -0
  77. package/dist/__tests__/structural/matching.test.d.ts.map +1 -0
  78. package/dist/__tests__/structural/matching.test.js +113 -0
  79. package/dist/__tests__/structural/matching.test.js.map +1 -0
  80. package/dist/__tests__/structural/merge.test.d.ts +6 -0
  81. package/dist/__tests__/structural/merge.test.d.ts.map +1 -0
  82. package/dist/__tests__/structural/merge.test.js +117 -0
  83. package/dist/__tests__/structural/merge.test.js.map +1 -0
  84. package/dist/__tests__/structural/reconstruct.test.d.ts +6 -0
  85. package/dist/__tests__/structural/reconstruct.test.d.ts.map +1 -0
  86. package/dist/__tests__/structural/reconstruct.test.js +104 -0
  87. package/dist/__tests__/structural/reconstruct.test.js.map +1 -0
  88. package/dist/__tests__/structural/structural-index.test.d.ts +14 -0
  89. package/dist/__tests__/structural/structural-index.test.d.ts.map +1 -0
  90. package/dist/__tests__/structural/structural-index.test.js +108 -0
  91. package/dist/__tests__/structural/structural-index.test.js.map +1 -0
  92. package/dist/__tests__/v2-core-scenarios.test.d.ts +35 -0
  93. package/dist/__tests__/v2-core-scenarios.test.d.ts.map +1 -0
  94. package/dist/__tests__/v2-core-scenarios.test.js +692 -0
  95. package/dist/__tests__/v2-core-scenarios.test.js.map +1 -0
  96. package/dist/__tests__/validation-parse-tree.test.d.ts +15 -0
  97. package/dist/__tests__/validation-parse-tree.test.d.ts.map +1 -0
  98. package/dist/__tests__/validation-parse-tree.test.js +243 -0
  99. package/dist/__tests__/validation-parse-tree.test.js.map +1 -0
  100. package/dist/config.d.ts +25 -0
  101. package/dist/config.d.ts.map +1 -1
  102. package/dist/config.js +17 -0
  103. package/dist/config.js.map +1 -1
  104. package/dist/diff/index.d.ts.map +1 -1
  105. package/dist/diff/index.js +1 -3
  106. package/dist/diff/index.js.map +1 -1
  107. package/dist/index.d.ts +5 -1
  108. package/dist/index.d.ts.map +1 -1
  109. package/dist/index.js +5 -1
  110. package/dist/index.js.map +1 -1
  111. package/dist/patterns/utils.d.ts +8 -7
  112. package/dist/patterns/utils.d.ts.map +1 -1
  113. package/dist/patterns/utils.js +13 -12
  114. package/dist/patterns/utils.js.map +1 -1
  115. package/dist/resolver/adapters/strict-node.d.ts +32 -0
  116. package/dist/resolver/adapters/strict-node.d.ts.map +1 -0
  117. package/dist/resolver/adapters/strict-node.js +117 -0
  118. package/dist/resolver/adapters/strict-node.js.map +1 -0
  119. package/dist/resolver/index.d.ts +33 -0
  120. package/dist/resolver/index.d.ts.map +1 -1
  121. package/dist/resolver/index.js +113 -0
  122. package/dist/resolver/index.js.map +1 -1
  123. package/dist/resolver/policy.d.ts.map +1 -1
  124. package/dist/resolver/policy.js +3 -0
  125. package/dist/resolver/policy.js.map +1 -1
  126. package/dist/resolver/validate-parse-tree.d.ts +52 -0
  127. package/dist/resolver/validate-parse-tree.d.ts.map +1 -0
  128. package/dist/resolver/validate-parse-tree.js +87 -0
  129. package/dist/resolver/validate-parse-tree.js.map +1 -0
  130. package/dist/resolver/validate-strict.d.ts +27 -0
  131. package/dist/resolver/validate-strict.d.ts.map +1 -0
  132. package/dist/resolver/validate-strict.js +41 -0
  133. package/dist/resolver/validate-strict.js.map +1 -0
  134. package/dist/resolver/validation.d.ts.map +1 -1
  135. package/dist/resolver/validation.js +15 -1
  136. package/dist/resolver/validation.js.map +1 -1
  137. package/dist/resolvers/dispatcher.d.ts +17 -1
  138. package/dist/resolvers/dispatcher.d.ts.map +1 -1
  139. package/dist/resolvers/dispatcher.js.map +1 -1
  140. package/dist/structural/entities.d.ts +44 -0
  141. package/dist/structural/entities.d.ts.map +1 -0
  142. package/dist/structural/entities.js +315 -0
  143. package/dist/structural/entities.js.map +1 -0
  144. package/dist/structural/index.d.ts +48 -0
  145. package/dist/structural/index.d.ts.map +1 -0
  146. package/dist/structural/index.js +177 -0
  147. package/dist/structural/index.js.map +1 -0
  148. package/dist/structural/matching.d.ts +46 -0
  149. package/dist/structural/matching.d.ts.map +1 -0
  150. package/dist/structural/matching.js +83 -0
  151. package/dist/structural/matching.js.map +1 -0
  152. package/dist/structural/merge.d.ts +45 -0
  153. package/dist/structural/merge.d.ts.map +1 -0
  154. package/dist/structural/merge.js +127 -0
  155. package/dist/structural/merge.js.map +1 -0
  156. package/dist/structural/parsers/adapters/browser.d.ts +22 -0
  157. package/dist/structural/parsers/adapters/browser.d.ts.map +1 -0
  158. package/dist/structural/parsers/adapters/browser.js +27 -0
  159. package/dist/structural/parsers/adapters/browser.js.map +1 -0
  160. package/dist/structural/parsers/adapters/node.d.ts +18 -0
  161. package/dist/structural/parsers/adapters/node.d.ts.map +1 -0
  162. package/dist/structural/parsers/adapters/node.js +42 -0
  163. package/dist/structural/parsers/adapters/node.js.map +1 -0
  164. package/dist/structural/parsers/adapters/tauri.d.ts +26 -0
  165. package/dist/structural/parsers/adapters/tauri.d.ts.map +1 -0
  166. package/dist/structural/parsers/adapters/tauri.js +34 -0
  167. package/dist/structural/parsers/adapters/tauri.js.map +1 -0
  168. package/dist/structural/parsers/grammars/languages.d.ts +32 -0
  169. package/dist/structural/parsers/grammars/languages.d.ts.map +1 -0
  170. package/dist/structural/parsers/grammars/languages.js +73 -0
  171. package/dist/structural/parsers/grammars/languages.js.map +1 -0
  172. package/dist/structural/parsers/grammars/ts.d.ts +26 -0
  173. package/dist/structural/parsers/grammars/ts.d.ts.map +1 -0
  174. package/dist/structural/parsers/grammars/ts.js +46 -0
  175. package/dist/structural/parsers/grammars/ts.js.map +1 -0
  176. package/dist/structural/parsers/loader.d.ts +74 -0
  177. package/dist/structural/parsers/loader.d.ts.map +1 -0
  178. package/dist/structural/parsers/loader.js +181 -0
  179. package/dist/structural/parsers/loader.js.map +1 -0
  180. package/dist/structural/reconstruct.d.ts +28 -0
  181. package/dist/structural/reconstruct.d.ts.map +1 -0
  182. package/dist/structural/reconstruct.js +63 -0
  183. package/dist/structural/reconstruct.js.map +1 -0
  184. package/dist/types.d.ts +60 -3
  185. package/dist/types.d.ts.map +1 -1
  186. package/package.json +16 -2
@@ -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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"}
@@ -14,6 +14,7 @@
14
14
  * `resolve` depuis `../resolver.js`.
15
15
  */
16
16
  import type { GitWandOptions, MergeResult } from "../types.js";
17
+ import { type StructuralLoaderOptions } from "../structural/index.js";
17
18
  /**
18
19
  * Analyse et résout automatiquement les conflits d'un fichier.
19
20
  *
@@ -23,4 +24,36 @@ import type { GitWandOptions, MergeResult } from "../types.js";
23
24
  * @returns Le résultat de la résolution avec traces et validation
24
25
  */
25
26
  export declare function resolve(conflictedContent: string, filePath: string, userOptions?: GitWandOptions): MergeResult;
27
+ /**
28
+ * Async variant of `resolve()` — attempts structural (AST-based) merge for
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.
32
+ *
33
+ * Structural merge requires `web-tree-sitter` as an **optional** peer dependency.
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).
52
+ *
53
+ * @param conflictedContent - File content with Git conflict markers
54
+ * @param filePath - File path (format detection + grammar selection)
55
+ * @param userOptions - GitWand options (same as `resolve()`)
56
+ * @param structuralOpts - Optional tree-sitter loader overrides
57
+ */
58
+ export declare function resolveAsync(conflictedContent: string, filePath: string, userOptions?: GitWandOptions, structuralOpts?: StructuralLoaderOptions): Promise<MergeResult>;
26
59
  //# sourceMappingURL=index.d.ts.map
@@ -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;AAgErB;;;;;;;GAOG;AACH,wBAAgB,OAAO,CACrB,iBAAiB,EAAE,MAAM,EACzB,QAAQ,EAAE,MAAM,EAChB,WAAW,GAAE,cAAmB,GAC/B,WAAW,CAgGb"}
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;AAkEhC;;;;;;;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,CA4FtB"}
@@ -13,8 +13,11 @@
13
13
  * reste en place comme shim de re-export pour les consommateurs qui importent
14
14
  * `resolve` depuis `../resolver.js`.
15
15
  */
16
+ import { tryStructuralMergeResolve, wrapStructuralResult, isStructuralLanguage, } from "../structural/index.js";
16
17
  import { parseConflictMarkers, toConflictHunk } from "../parser.js";
17
18
  import { EMPTY_VALIDATION, validateMergedContent } from "./validation.js";
19
+ import { checkParseTreeValid, applyPostMergeRiskPenalty } from "./validate-parse-tree.js";
20
+ import { runStrictValidation } from "./validate-strict.js";
18
21
  import { isGeneratedFile, reclassifyIfGenerated } from "./generated-detection.js";
19
22
  import { CONFIDENCE_ORDER, DEFAULT_OPTIONS, applyFileFrequencyPenalty, computeEffectiveMinConfidence, computeEffectivePolicy, } from "./policy.js";
20
23
  import { dispatchFormatAware } from "./format-dispatch.js";
@@ -144,4 +147,114 @@ export function resolve(conflictedContent, filePath, userOptions = {}) {
144
147
  validation,
145
148
  };
146
149
  }
150
+ /**
151
+ * Async variant of `resolve()` — attempts structural (AST-based) merge for
152
+ * TypeScript/TSX files before falling back to the standard hunk-by-hunk engine.
153
+ * Additionally runs parse-tree validation (v2.4) and optionally strict validation
154
+ * (tsc/eslint) when `validationLevel: "strict"` is configured.
155
+ *
156
+ * Structural merge requires `web-tree-sitter` as an **optional** peer dependency.
157
+ * If it is not installed, `resolveAsync()` behaves identically to `resolve()` with
158
+ * the addition of the parse-tree validation pass.
159
+ *
160
+ * ### v2.4 — Parse-tree validation & retraction
161
+ *
162
+ * After hunk-based resolution produces a `mergedContent`, `resolveAsync()` re-parses
163
+ * it with tree-sitter. If the tree contains ERROR nodes (indicating the merged code is
164
+ * syntactically broken), every auto-resolved hunk is **retracted**:
165
+ *
166
+ * - `resolution.autoResolved` → `false`
167
+ * - `resolution.resolvedLines` → `null`
168
+ * - `hunk.confidence.dimensions.postMergeRisk` → `100`
169
+ * - `validation.parseTreeValid` → `false`
170
+ * - `mergedContent` → `null` (conflicts restored as markers)
171
+ *
172
+ * This eliminates the class of false-positives where the resolver auto-merged code
173
+ * that compiles/runs fine locally but is syntactically invalid (e.g. from two hunks
174
+ * interacting unexpectedly).
175
+ *
176
+ * @param conflictedContent - File content with Git conflict markers
177
+ * @param filePath - File path (format detection + grammar selection)
178
+ * @param userOptions - GitWand options (same as `resolve()`)
179
+ * @param structuralOpts - Optional tree-sitter loader overrides
180
+ */
181
+ export async function resolveAsync(conflictedContent, filePath, userOptions = {}, structuralOpts = {}) {
182
+ const options = { ...DEFAULT_OPTIONS, ...userOptions };
183
+ // ─── 1. Tentative de merge structurel (v2.3) ──────────────────────────────
184
+ if (isStructuralLanguage(filePath)) {
185
+ try {
186
+ const merged = await tryStructuralMergeResolve(conflictedContent, filePath, structuralOpts);
187
+ if (merged !== null) {
188
+ const result = wrapStructuralResult(conflictedContent, merged, filePath);
189
+ // Validation parse-tree sur le résultat structurel (devrait toujours passer,
190
+ // mais on vérifie quand même par cohérence).
191
+ const parseTreeValid = await checkParseTreeValid(result.mergedContent ?? "", filePath, structuralOpts);
192
+ return {
193
+ ...result,
194
+ validation: { ...result.validation, parseTreeValid, externalValidation: null },
195
+ };
196
+ }
197
+ }
198
+ catch {
199
+ // Structural merge failed unexpectedly — fall through to hunk-based resolver
200
+ }
201
+ }
202
+ // ─── 2. Résolution hunk-par-hunk (synchrone) ─────────────────────────────
203
+ const result = resolve(conflictedContent, filePath, userOptions);
204
+ // Rien à valider si la résolution n'est pas complète
205
+ if (result.mergedContent === null) {
206
+ return result;
207
+ }
208
+ // ─── 3. v2.4 — Validation parse-tree ─────────────────────────────────────
209
+ // Skipped when validationLevel === "off" (performance mode).
210
+ if (options.validationLevel === "off") {
211
+ return { ...result, validation: { ...result.validation, parseTreeValid: null, externalValidation: null } };
212
+ }
213
+ const parseTreeValid = await checkParseTreeValid(result.mergedContent, filePath, structuralOpts);
214
+ if (parseTreeValid === false) {
215
+ // Parse-tree invalide → rétraction de toutes les résolutions automatiques.
216
+ // On ne peut pas savoir quel hunk a cassé la syntaxe sans une analyse fine,
217
+ // donc on est conservatif : tout remettre en conflits manuels.
218
+ const retractedResolutions = result.resolutions.map((r) => r.autoResolved ? applyPostMergeRiskPenalty(r) : r);
219
+ return {
220
+ ...result,
221
+ // mergedContent = null indique aux consommateurs que des conflits subsistent.
222
+ // Le contenu original (avec marqueurs) est conservé dans conflictedContent
223
+ // par l'appelant — ici on expose uniquement la MergeResult enrichie.
224
+ mergedContent: null,
225
+ resolutions: retractedResolutions,
226
+ stats: {
227
+ ...result.stats,
228
+ autoResolved: 0,
229
+ remaining: result.stats.totalConflicts,
230
+ },
231
+ validation: {
232
+ ...result.validation,
233
+ isValid: false,
234
+ parseTreeValid: false,
235
+ },
236
+ };
237
+ }
238
+ // ─── 4. v2.4 — Validation stricte opt-in (tsc / eslint) ─────────────────
239
+ let externalValidation = null;
240
+ if (options.validationLevel === "strict") {
241
+ const tools = options.validationTools ?? ["tsc"];
242
+ const strictResult = await runStrictValidation(result.mergedContent, filePath, tools);
243
+ const failedTool = (strictResult.toolsFailed[0] ?? strictResult.toolsRun[0] ?? "tsc");
244
+ externalValidation = {
245
+ tool: failedTool,
246
+ errors: strictResult.errors,
247
+ passed: strictResult.errors.length === 0,
248
+ };
249
+ }
250
+ return {
251
+ ...result,
252
+ validation: {
253
+ ...result.validation,
254
+ parseTreeValid,
255
+ externalValidation,
256
+ ...(externalValidation && !externalValidation.passed ? { isValid: false } : {}),
257
+ },
258
+ };
259
+ }
147
260
  //# 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":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/resolver/policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,cAAc,CAAC;AAEtB,0BAA0B;AAC1B,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,cAAc,CAWpD,CAAC;AAEF,2CAA2C;AAC3C,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAKvD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAChC;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,GAAG,EAAE,YAAY,CAAA;CAAE,CAO5C;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAChC,UAAU,CAIZ;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,YAAY,EAClB,iBAAiB,EAAE,MAAM,GACxB,YAAY,CAiCd"}
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/resolver/policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,cAAc,CAAC;AAEtB,0BAA0B;AAC1B,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,cAAc,CAcpD,CAAC;AAEF,2CAA2C;AAC3C,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAKvD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAChC;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,GAAG,EAAE,YAAY,CAAA;CAAE,CAO5C;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,GAChC,UAAU,CAIZ;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,YAAY,EAClB,iBAAiB,EAAE,MAAM,GACxB,YAAY,CAiCd"}
@@ -26,6 +26,9 @@ export const DEFAULT_OPTIONS = {
26
26
  generatedFiles: [],
27
27
  // v2.2 — profils de format actifs par défaut
28
28
  disableFormatProfiles: false,
29
+ // v2.4 — validation post-merge
30
+ validationLevel: "balanced",
31
+ validationTools: ["tsc"],
29
32
  };
30
33
  /** Ordre de confiance pour comparaison. */
31
34
  export const CONFIDENCE_ORDER = {
@@ -1 +1 @@
1
- {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/resolver/policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,cAAc,GAGf,MAAM,cAAc,CAAC;AAEtB,0BAA0B;AAC1B,MAAM,CAAC,MAAM,eAAe,GAA6B;IACvD,iBAAiB,EAAE,IAAI;IACvB,qBAAqB,EAAE,IAAI;IAC3B,aAAa,EAAE,MAAM;IACrB,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,KAAK;IAClB,MAAM,EAAE,cAAc;IACtB,gBAAgB,EAAE,EAAE;IACpB,cAAc,EAAE,EAAE;IAClB,6CAA6C;IAC7C,qBAAqB,EAAE,KAAK;CAC7B,CAAC;AAEF,2CAA2C;AAC3C,MAAM,CAAC,MAAM,gBAAgB,GAA+B;IAC1D,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,GAAG,EAAE,CAAC;CACP,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,QAAgB,EAChB,OAAiC;IAEjC,MAAM,MAAM,GAAG,sBAAsB,CACnC,QAAQ,EACR,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,gBAAgB,CACzB,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;AACjD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAC3C,SAAuB,EACvB,OAAiC;IAEjC,OAAO,gBAAgB,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC;QACxF,CAAC,CAAC,SAAS,CAAC,aAAa;QACzB,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;AAC5B,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,yBAAyB,CACvC,IAAkB,EAClB,iBAAyB;IAEzB,IAAI,iBAAiB,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,iBAAiB,GAAG,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;IACrC,MAAM,GAAG,GACP,CAAC,CAAC,kBAAkB;UAClB,CAAC,CAAC,QAAQ,GAAU,IAAI;UACxB,CAAC,CAAC,WAAW,GAAO,IAAI;UACxB,EAAE,GAAkB,IAAI;UACxB,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,QAAQ,GACZ,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;QAC1B,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM;YACzB,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ;gBAC3B,CAAC,CAAC,KAAK,CAAC;IAEV,OAAO;QACL,GAAG,IAAI;QACP,UAAU,EAAE;YACV,GAAG,IAAI,CAAC,UAAU;YAClB,KAAK,EAAE,QAAQ;YACf,KAAK,EAAE,QAAQ;YACf,UAAU,EAAE,EAAE,GAAG,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE;YACvC,SAAS,EAAE;gBACT,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS;gBAC5B,iBAAiB,iBAAiB,QAAQ,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,YAAY,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,+BAA+B,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO;aACnL;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/resolver/policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @gitwand/core v2.4 — Parse-tree validation
3
+ *
4
+ * Vérifie si le contenu fusionné produit un arbre syntaxique sans erreurs
5
+ * via web-tree-sitter. Utilisé comme couche de filet de sécurité après
6
+ * la résolution automatique : si le merge produit du code syntaxiquement
7
+ * cassé, les résolutions sont rétractées pour revenir aux marqueurs de conflit.
8
+ *
9
+ * Contrainte : cette fonction est async (tree-sitter est lazy-loaded).
10
+ * Elle retourne `null` (graceful) si :
11
+ * - web-tree-sitter n'est pas installé
12
+ * - Le fichier n'est pas d'un langage supporté (TS/JS/Python/Go/Rust)
13
+ * - Le chargement de la grammaire échoue
14
+ *
15
+ * Elle ne lève jamais d'exception — les erreurs sont silencieusement absorbées.
16
+ */
17
+ import type { LoaderOptions } from "../structural/parsers/loader.js";
18
+ /**
19
+ * Vérifie si le contenu fourni parse sans erreur syntaxique pour le langage
20
+ * du fichier cible.
21
+ *
22
+ * @param content - Contenu à valider (après résolution des conflits)
23
+ * @param filePath - Chemin du fichier (sélection de la grammaire tree-sitter)
24
+ * @param opts - Options de chargement (WASM paths, custom loader)
25
+ * @returns
26
+ * - `true` : l'arbre syntaxique est valide (pas de nœuds ERROR)
27
+ * - `false` : des erreurs syntaxiques ont été détectées
28
+ * - `null` : tree-sitter indisponible ou langage non supporté
29
+ */
30
+ export declare function checkParseTreeValid(content: string, filePath: string, opts?: LoaderOptions): Promise<boolean | null>;
31
+ /**
32
+ * Construit un objet `HunkResolution` mis à jour avec la pénalité `postMergeRisk`
33
+ * pour signaler qu'une résolution a été rétractée suite à une invalidation parse-tree.
34
+ *
35
+ * Le score de confiance est mis à 0 et le label à "low" pour communiquer clairement
36
+ * à l'UI que ce hunk requiert une intervention manuelle.
37
+ */
38
+ export declare function applyPostMergeRiskPenalty<T extends {
39
+ autoResolved: boolean;
40
+ resolvedLines: string[] | null;
41
+ resolutionReason: string;
42
+ hunk: {
43
+ confidence: {
44
+ score: number;
45
+ label: string;
46
+ dimensions: Record<string, unknown>;
47
+ boosters: string[];
48
+ penalties: string[];
49
+ };
50
+ };
51
+ }>(resolution: T): T;
52
+ //# sourceMappingURL=validate-parse-tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-parse-tree.d.ts","sourceRoot":"","sources":["../../src/resolver/validate-parse-tree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAErE;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,aAAkB,GACvB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAsBzB;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,CAAC,SAAS;IACR,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE;QACJ,UAAU,EAAE;YACV,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,MAAM,CAAC;YACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACpC,QAAQ,EAAE,MAAM,EAAE,CAAC;YACnB,SAAS,EAAE,MAAM,EAAE,CAAC;SACrB,CAAC;KACH,CAAC;CACH,EACD,UAAU,EAAE,CAAC,GAAG,CAAC,CAwBlB"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * @gitwand/core v2.4 — Parse-tree validation
3
+ *
4
+ * Vérifie si le contenu fusionné produit un arbre syntaxique sans erreurs
5
+ * via web-tree-sitter. Utilisé comme couche de filet de sécurité après
6
+ * la résolution automatique : si le merge produit du code syntaxiquement
7
+ * cassé, les résolutions sont rétractées pour revenir aux marqueurs de conflit.
8
+ *
9
+ * Contrainte : cette fonction est async (tree-sitter est lazy-loaded).
10
+ * Elle retourne `null` (graceful) si :
11
+ * - web-tree-sitter n'est pas installé
12
+ * - Le fichier n'est pas d'un langage supporté (TS/JS/Python/Go/Rust)
13
+ * - Le chargement de la grammaire échoue
14
+ *
15
+ * Elle ne lève jamais d'exception — les erreurs sont silencieusement absorbées.
16
+ */
17
+ import { isStructuralLanguage } from "../structural/parsers/grammars/languages.js";
18
+ import { loadGrammarForFile } from "../structural/parsers/grammars/ts.js";
19
+ import { createParser } from "../structural/parsers/loader.js";
20
+ import { hasParseErrors } from "../structural/entities.js";
21
+ /**
22
+ * Vérifie si le contenu fourni parse sans erreur syntaxique pour le langage
23
+ * du fichier cible.
24
+ *
25
+ * @param content - Contenu à valider (après résolution des conflits)
26
+ * @param filePath - Chemin du fichier (sélection de la grammaire tree-sitter)
27
+ * @param opts - Options de chargement (WASM paths, custom loader)
28
+ * @returns
29
+ * - `true` : l'arbre syntaxique est valide (pas de nœuds ERROR)
30
+ * - `false` : des erreurs syntaxiques ont été détectées
31
+ * - `null` : tree-sitter indisponible ou langage non supporté
32
+ */
33
+ export async function checkParseTreeValid(content, filePath, opts = {}) {
34
+ // Vérification rapide : langage supporté ?
35
+ if (!isStructuralLanguage(filePath))
36
+ return null;
37
+ try {
38
+ // Chargement lazy de la grammaire (retourne null si non disponible)
39
+ const language = await loadGrammarForFile(filePath, opts);
40
+ if (!language)
41
+ return null;
42
+ const parser = await createParser(language, opts);
43
+ if (!parser)
44
+ return null;
45
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
46
+ const p = parser;
47
+ const tree = p.parse(content);
48
+ // hasParseErrors() vérifie récursivement la présence de nœuds ERROR
49
+ return !hasParseErrors(tree);
50
+ }
51
+ catch {
52
+ // Graceful degradation — ne jamais bloquer la résolution pour un échec tree-sitter
53
+ return null;
54
+ }
55
+ }
56
+ /**
57
+ * Construit un objet `HunkResolution` mis à jour avec la pénalité `postMergeRisk`
58
+ * pour signaler qu'une résolution a été rétractée suite à une invalidation parse-tree.
59
+ *
60
+ * Le score de confiance est mis à 0 et le label à "low" pour communiquer clairement
61
+ * à l'UI que ce hunk requiert une intervention manuelle.
62
+ */
63
+ export function applyPostMergeRiskPenalty(resolution) {
64
+ return {
65
+ ...resolution,
66
+ autoResolved: false,
67
+ resolvedLines: null,
68
+ resolutionReason: "Rétracté : le contenu fusionné contient des erreurs syntaxiques (parse-tree tree-sitter). Intervention manuelle requise.",
69
+ hunk: {
70
+ ...resolution.hunk,
71
+ confidence: {
72
+ ...resolution.hunk.confidence,
73
+ score: 0,
74
+ label: "low",
75
+ dimensions: {
76
+ ...resolution.hunk.confidence.dimensions,
77
+ postMergeRisk: 100,
78
+ },
79
+ penalties: [
80
+ ...resolution.hunk.confidence.penalties,
81
+ "v2.4 — Parse-tree invalide après résolution automatique",
82
+ ],
83
+ },
84
+ },
85
+ };
86
+ }
87
+ //# sourceMappingURL=validate-parse-tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-parse-tree.js","sourceRoot":"","sources":["../../src/resolver/validate-parse-tree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAG3D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAe,EACf,QAAgB,EAChB,OAAsB,EAAE;IAExB,2CAA2C;IAC3C,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAEjD,IAAI,CAAC;QACH,oEAAoE;QACpE,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE3B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEzB,8DAA8D;QAC9D,MAAM,CAAC,GAAG,MAAa,CAAC;QACxB,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE9B,oEAAoE;QACpE,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,mFAAmF;QACnF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CAevC,UAAa;IACb,OAAO;QACL,GAAG,UAAU;QACb,YAAY,EAAE,KAAK;QACnB,aAAa,EAAE,IAAI;QACnB,gBAAgB,EACd,0HAA0H;QAC5H,IAAI,EAAE;YACJ,GAAG,UAAU,CAAC,IAAI;YAClB,UAAU,EAAE;gBACV,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU;gBAC7B,KAAK,EAAE,CAAC;gBACR,KAAK,EAAE,KAAc;gBACrB,UAAU,EAAE;oBACV,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU;oBACxC,aAAa,EAAE,GAAG;iBACnB;gBACD,SAAS,EAAE;oBACT,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS;oBACvC,yDAAyD;iBAC1D;aACF;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @gitwand/core v2.4 — Strict validation dispatcher
3
+ *
4
+ * Point d'entrée pour la validation opt-in via outils externes (tsc, eslint).
5
+ * Le chargement de l'implémentation Node.js est gardé derrière un import
6
+ * dynamique avec `/* @vite-ignore *\/` pour éviter son inclusion dans les
7
+ * bundles browser/Tauri où child_process n'est pas disponible.
8
+ *
9
+ * Retourne toujours `[]` (aucune erreur) en environnement browser ou Tauri.
10
+ */
11
+ export interface StrictValidationResult {
12
+ errors: string[];
13
+ toolsRun: string[];
14
+ toolsFailed: string[];
15
+ }
16
+ /**
17
+ * Exécute la validation stricte sur le contenu fusionné.
18
+ *
19
+ * Disponible uniquement en environnement Node.js — retourne un résultat vide
20
+ * en browser ou Tauri sans lever d'exception.
21
+ *
22
+ * @param content - Contenu fusionné à valider
23
+ * @param filePath - Chemin du fichier (pour l'extension et les messages d'erreur)
24
+ * @param tools - Outils à exécuter (`["tsc"]` par défaut)
25
+ */
26
+ export declare function runStrictValidation(content: string, filePath: string, tools?: Array<"tsc" | "eslint">): Promise<StrictValidationResult>;
27
+ //# sourceMappingURL=validate-strict.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-strict.d.ts","sourceRoot":"","sources":["../../src/resolver/validate-strict.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAID;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAW,GACvC,OAAO,CAAC,sBAAsB,CAAC,CAgBjC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @gitwand/core v2.4 — Strict validation dispatcher
3
+ *
4
+ * Point d'entrée pour la validation opt-in via outils externes (tsc, eslint).
5
+ * Le chargement de l'implémentation Node.js est gardé derrière un import
6
+ * dynamique avec `/* @vite-ignore *\/` pour éviter son inclusion dans les
7
+ * bundles browser/Tauri où child_process n'est pas disponible.
8
+ *
9
+ * Retourne toujours `[]` (aucune erreur) en environnement browser ou Tauri.
10
+ */
11
+ import { detectEnvironment } from "../structural/parsers/loader.js";
12
+ const EMPTY_RESULT = { errors: [], toolsRun: [], toolsFailed: [] };
13
+ /**
14
+ * Exécute la validation stricte sur le contenu fusionné.
15
+ *
16
+ * Disponible uniquement en environnement Node.js — retourne un résultat vide
17
+ * en browser ou Tauri sans lever d'exception.
18
+ *
19
+ * @param content - Contenu fusionné à valider
20
+ * @param filePath - Chemin du fichier (pour l'extension et les messages d'erreur)
21
+ * @param tools - Outils à exécuter (`["tsc"]` par défaut)
22
+ */
23
+ export async function runStrictValidation(content, filePath, tools = ["tsc"]) {
24
+ const env = detectEnvironment();
25
+ if (env !== "node")
26
+ return EMPTY_RESULT;
27
+ // Seulement les langages que tsc et eslint comprennent
28
+ const strictLangs = /\.(ts|tsx|js|jsx|mjs|cjs|mts|cts)$/i;
29
+ if (!strictLangs.test(filePath))
30
+ return EMPTY_RESULT;
31
+ try {
32
+ // vite-ignore: Node.js adapter — jamais bundlé pour browser/Tauri
33
+ const { runStrictValidationNode } = await import(/* @vite-ignore */ "./adapters/strict-node.js");
34
+ return await runStrictValidationNode(content, filePath, tools);
35
+ }
36
+ catch {
37
+ // L'adapter n'a pas pu être chargé — dégradation gracieuse
38
+ return EMPTY_RESULT;
39
+ }
40
+ }
41
+ //# sourceMappingURL=validate-strict.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-strict.js","sourceRoot":"","sources":["../../src/resolver/validate-strict.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAQpE,MAAM,YAAY,GAA2B,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;AAE3F;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAe,EACf,QAAgB,EAChB,QAAiC,CAAC,KAAK,CAAC;IAExC,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAC;IAChC,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,YAAY,CAAC;IAExC,uDAAuD;IACvD,MAAM,WAAW,GAAG,qCAAqC,CAAC;IAC1D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,YAAY,CAAC;IAErD,IAAI,CAAC;QACH,kEAAkE;QAClE,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,CAAC;QACjG,OAAO,MAAM,uBAAuB,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,2DAA2D;QAC3D,OAAO,YAAY,CAAC;IACtB,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/resolver/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,kDAAkD;AAClD,eAAO,MAAM,wBAAwB,UAKpC,CAAC;AA8CF;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAqBzF;AAED,8EAA8E;AAC9E,eAAO,MAAM,gBAAgB,EAAE,gBAK9B,CAAC"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/resolver/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,kDAAkD;AAClD,eAAO,MAAM,wBAAwB,UAKpC,CAAC;AA8CF;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAgCzF;AAED,8EAA8E;AAC9E,eAAO,MAAM,gBAAgB,EAAE,gBAQ9B,CAAC"}