@gitwand/core 2.3.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 (113) 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__/v2-core-scenarios.test.d.ts +35 -0
  69. package/dist/__tests__/v2-core-scenarios.test.d.ts.map +1 -0
  70. package/dist/__tests__/v2-core-scenarios.test.js +692 -0
  71. package/dist/__tests__/v2-core-scenarios.test.js.map +1 -0
  72. package/dist/__tests__/validation-parse-tree.test.d.ts +15 -0
  73. package/dist/__tests__/validation-parse-tree.test.d.ts.map +1 -0
  74. package/dist/__tests__/validation-parse-tree.test.js +243 -0
  75. package/dist/__tests__/validation-parse-tree.test.js.map +1 -0
  76. package/dist/config.d.ts +25 -0
  77. package/dist/config.d.ts.map +1 -1
  78. package/dist/config.js +17 -0
  79. package/dist/config.js.map +1 -1
  80. package/dist/diff/index.d.ts.map +1 -1
  81. package/dist/diff/index.js +1 -3
  82. package/dist/diff/index.js.map +1 -1
  83. package/dist/patterns/utils.d.ts +8 -7
  84. package/dist/patterns/utils.d.ts.map +1 -1
  85. package/dist/patterns/utils.js +13 -12
  86. package/dist/patterns/utils.js.map +1 -1
  87. package/dist/resolver/adapters/strict-node.d.ts +32 -0
  88. package/dist/resolver/adapters/strict-node.d.ts.map +1 -0
  89. package/dist/resolver/adapters/strict-node.js +117 -0
  90. package/dist/resolver/adapters/strict-node.js.map +1 -0
  91. package/dist/resolver/index.d.ts +20 -1
  92. package/dist/resolver/index.d.ts.map +1 -1
  93. package/dist/resolver/index.js +89 -5
  94. package/dist/resolver/index.js.map +1 -1
  95. package/dist/resolver/policy.d.ts.map +1 -1
  96. package/dist/resolver/policy.js +3 -0
  97. package/dist/resolver/policy.js.map +1 -1
  98. package/dist/resolver/validate-parse-tree.d.ts +52 -0
  99. package/dist/resolver/validate-parse-tree.d.ts.map +1 -0
  100. package/dist/resolver/validate-parse-tree.js +87 -0
  101. package/dist/resolver/validate-parse-tree.js.map +1 -0
  102. package/dist/resolver/validate-strict.d.ts +27 -0
  103. package/dist/resolver/validate-strict.d.ts.map +1 -0
  104. package/dist/resolver/validate-strict.js +41 -0
  105. package/dist/resolver/validate-strict.js.map +1 -0
  106. package/dist/resolver/validation.d.ts.map +1 -1
  107. package/dist/resolver/validation.js +15 -1
  108. package/dist/resolver/validation.js.map +1 -1
  109. package/dist/resolvers/dispatcher.d.ts.map +1 -1
  110. package/dist/resolvers/dispatcher.js.map +1 -1
  111. package/dist/types.d.ts +60 -3
  112. package/dist/types.d.ts.map +1 -1
  113. package/package.json +1 -1
@@ -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;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"}
@@ -16,6 +16,8 @@
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";
@@ -148,9 +150,28 @@ export function resolve(conflictedContent, filePath, userOptions = {}) {
148
150
  /**
149
151
  * Async variant of `resolve()` — attempts structural (AST-based) merge for
150
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.
151
155
  *
152
156
  * Structural merge requires `web-tree-sitter` as an **optional** peer dependency.
153
- * If it is not installed, `resolveAsync()` behaves identically to `resolve()`.
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).
154
175
  *
155
176
  * @param conflictedContent - File content with Git conflict markers
156
177
  * @param filePath - File path (format detection + grammar selection)
@@ -158,19 +179,82 @@ export function resolve(conflictedContent, filePath, userOptions = {}) {
158
179
  * @param structuralOpts - Optional tree-sitter loader overrides
159
180
  */
160
181
  export async function resolveAsync(conflictedContent, filePath, userOptions = {}, structuralOpts = {}) {
161
- // Attempt structural merge for all supported languages (TS/JS/Python/Go/Rust…)
182
+ const options = { ...DEFAULT_OPTIONS, ...userOptions };
183
+ // ─── 1. Tentative de merge structurel (v2.3) ──────────────────────────────
162
184
  if (isStructuralLanguage(filePath)) {
163
185
  try {
164
186
  const merged = await tryStructuralMergeResolve(conflictedContent, filePath, structuralOpts);
165
187
  if (merged !== null) {
166
- return wrapStructuralResult(conflictedContent, merged, filePath);
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
+ };
167
196
  }
168
197
  }
169
198
  catch {
170
199
  // Structural merge failed unexpectedly — fall through to hunk-based resolver
171
200
  }
172
201
  }
173
- // Fall back to the synchronous hunk-based resolver
174
- return resolve(conflictedContent, filePath, userOptions);
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
+ };
175
259
  }
176
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":"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"}
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"}
@@ -84,7 +84,18 @@ export function validateMergedContent(content, filePath) {
84
84
  const format = detectFormat(filePath);
85
85
  const syntaxError = tryParse(content, format);
86
86
  const isValid = !hasResidualMarkers && syntaxError === null;
87
- return { hasResidualMarkers, residualMarkerLines, syntaxError, isValid };
87
+ // parseTreeValid est null ici car validateMergedContent est synchrone.
88
+ // La validation parse-tree (tree-sitter, async) est effectuée séparément
89
+ // dans resolveAsync() via checkParseTreeValid().
90
+ return {
91
+ hasResidualMarkers,
92
+ residualMarkerLines,
93
+ syntaxError,
94
+ isValid,
95
+ parseTreeValid: null,
96
+ parseTreeErrors: 0,
97
+ parseTreeErrorRanges: [],
98
+ };
88
99
  }
89
100
  /** Validation vide (pour les cas où le contenu n'est pas encore fusionné). */
90
101
  export const EMPTY_VALIDATION = {
@@ -92,5 +103,8 @@ export const EMPTY_VALIDATION = {
92
103
  residualMarkerLines: [],
93
104
  syntaxError: null,
94
105
  isValid: true,
106
+ parseTreeValid: null,
107
+ parseTreeErrors: 0,
108
+ parseTreeErrorRanges: [],
95
109
  };
96
110
  //# sourceMappingURL=validation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/resolver/validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/resolver/validation.ts"],"names":[],"mappings":"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"}