@gitwand/core 2.3.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/dist/__tests__/corpus.d.ts.map +1 -1
  2. package/dist/__tests__/corpus.js +377 -0
  3. package/dist/__tests__/corpus.js.map +1 -1
  4. package/dist/__tests__/patterns/complex.test.d.ts +9 -0
  5. package/dist/__tests__/patterns/complex.test.d.ts.map +1 -0
  6. package/dist/__tests__/patterns/complex.test.js +198 -0
  7. package/dist/__tests__/patterns/complex.test.js.map +1 -0
  8. package/dist/__tests__/patterns/delete-no-change.test.d.ts +11 -0
  9. package/dist/__tests__/patterns/delete-no-change.test.d.ts.map +1 -0
  10. package/dist/__tests__/patterns/delete-no-change.test.js +178 -0
  11. package/dist/__tests__/patterns/delete-no-change.test.js.map +1 -0
  12. package/dist/__tests__/patterns/llm-proposed.test.d.ts +10 -0
  13. package/dist/__tests__/patterns/llm-proposed.test.d.ts.map +1 -0
  14. package/dist/__tests__/patterns/llm-proposed.test.js +306 -0
  15. package/dist/__tests__/patterns/llm-proposed.test.js.map +1 -0
  16. package/dist/__tests__/patterns/non-overlapping.test.d.ts +11 -0
  17. package/dist/__tests__/patterns/non-overlapping.test.d.ts.map +1 -0
  18. package/dist/__tests__/patterns/non-overlapping.test.js +240 -0
  19. package/dist/__tests__/patterns/non-overlapping.test.js.map +1 -0
  20. package/dist/__tests__/patterns/one-side-change.test.d.ts +10 -0
  21. package/dist/__tests__/patterns/one-side-change.test.d.ts.map +1 -0
  22. package/dist/__tests__/patterns/one-side-change.test.js +191 -0
  23. package/dist/__tests__/patterns/one-side-change.test.js.map +1 -0
  24. package/dist/__tests__/patterns/same-change.test.d.ts +9 -0
  25. package/dist/__tests__/patterns/same-change.test.d.ts.map +1 -0
  26. package/dist/__tests__/patterns/same-change.test.js +173 -0
  27. package/dist/__tests__/patterns/same-change.test.js.map +1 -0
  28. package/dist/__tests__/patterns/value-only-change.test.d.ts +11 -0
  29. package/dist/__tests__/patterns/value-only-change.test.d.ts.map +1 -0
  30. package/dist/__tests__/patterns/value-only-change.test.js +159 -0
  31. package/dist/__tests__/patterns/value-only-change.test.js.map +1 -0
  32. package/dist/__tests__/patterns/whitespace-only.test.d.ts +10 -0
  33. package/dist/__tests__/patterns/whitespace-only.test.d.ts.map +1 -0
  34. package/dist/__tests__/patterns/whitespace-only.test.js +177 -0
  35. package/dist/__tests__/patterns/whitespace-only.test.js.map +1 -0
  36. package/dist/__tests__/resolvers/css.test.d.ts +12 -0
  37. package/dist/__tests__/resolvers/css.test.d.ts.map +1 -0
  38. package/dist/__tests__/resolvers/css.test.js +171 -0
  39. package/dist/__tests__/resolvers/css.test.js.map +1 -0
  40. package/dist/__tests__/resolvers/imports.test.d.ts +12 -0
  41. package/dist/__tests__/resolvers/imports.test.d.ts.map +1 -0
  42. package/dist/__tests__/resolvers/imports.test.js +135 -0
  43. package/dist/__tests__/resolvers/imports.test.js.map +1 -0
  44. package/dist/__tests__/resolvers/json.test.d.ts +12 -0
  45. package/dist/__tests__/resolvers/json.test.d.ts.map +1 -0
  46. package/dist/__tests__/resolvers/json.test.js +184 -0
  47. package/dist/__tests__/resolvers/json.test.js.map +1 -0
  48. package/dist/__tests__/resolvers/lockfile-npm.test.d.ts +12 -0
  49. package/dist/__tests__/resolvers/lockfile-npm.test.d.ts.map +1 -0
  50. package/dist/__tests__/resolvers/lockfile-npm.test.js +187 -0
  51. package/dist/__tests__/resolvers/lockfile-npm.test.js.map +1 -0
  52. package/dist/__tests__/resolvers/lockfile-pnpm.test.d.ts +12 -0
  53. package/dist/__tests__/resolvers/lockfile-pnpm.test.d.ts.map +1 -0
  54. package/dist/__tests__/resolvers/lockfile-pnpm.test.js +175 -0
  55. package/dist/__tests__/resolvers/lockfile-pnpm.test.js.map +1 -0
  56. package/dist/__tests__/resolvers/lockfile-yarn.test.d.ts +12 -0
  57. package/dist/__tests__/resolvers/lockfile-yarn.test.d.ts.map +1 -0
  58. package/dist/__tests__/resolvers/lockfile-yarn.test.js +165 -0
  59. package/dist/__tests__/resolvers/lockfile-yarn.test.js.map +1 -0
  60. package/dist/__tests__/resolvers/markdown.test.d.ts +12 -0
  61. package/dist/__tests__/resolvers/markdown.test.d.ts.map +1 -0
  62. package/dist/__tests__/resolvers/markdown.test.js +188 -0
  63. package/dist/__tests__/resolvers/markdown.test.js.map +1 -0
  64. package/dist/__tests__/resolvers/vue.test.d.ts +12 -0
  65. package/dist/__tests__/resolvers/vue.test.d.ts.map +1 -0
  66. package/dist/__tests__/resolvers/vue.test.js +225 -0
  67. package/dist/__tests__/resolvers/vue.test.js.map +1 -0
  68. package/dist/__tests__/resolvers/yaml.test.d.ts +12 -0
  69. package/dist/__tests__/resolvers/yaml.test.d.ts.map +1 -0
  70. package/dist/__tests__/resolvers/yaml.test.js +203 -0
  71. package/dist/__tests__/resolvers/yaml.test.js.map +1 -0
  72. package/dist/__tests__/v2-core-scenarios.test.d.ts +35 -0
  73. package/dist/__tests__/v2-core-scenarios.test.d.ts.map +1 -0
  74. package/dist/__tests__/v2-core-scenarios.test.js +692 -0
  75. package/dist/__tests__/v2-core-scenarios.test.js.map +1 -0
  76. package/dist/__tests__/validation-parse-tree.test.d.ts +15 -0
  77. package/dist/__tests__/validation-parse-tree.test.d.ts.map +1 -0
  78. package/dist/__tests__/validation-parse-tree.test.js +243 -0
  79. package/dist/__tests__/validation-parse-tree.test.js.map +1 -0
  80. package/dist/classifier.d.ts.map +1 -1
  81. package/dist/classifier.js +3 -0
  82. package/dist/classifier.js.map +1 -1
  83. package/dist/config.d.ts +54 -0
  84. package/dist/config.d.ts.map +1 -1
  85. package/dist/config.js +42 -0
  86. package/dist/config.js.map +1 -1
  87. package/dist/diff/index.d.ts.map +1 -1
  88. package/dist/diff/index.js +1 -3
  89. package/dist/diff/index.js.map +1 -1
  90. package/dist/index.d.ts +3 -1
  91. package/dist/index.d.ts.map +1 -1
  92. package/dist/index.js +2 -0
  93. package/dist/index.js.map +1 -1
  94. package/dist/patterns/llm-proposed.d.ts +8 -0
  95. package/dist/patterns/llm-proposed.d.ts.map +1 -0
  96. package/dist/patterns/llm-proposed.js +66 -0
  97. package/dist/patterns/llm-proposed.js.map +1 -0
  98. package/dist/patterns/utils.d.ts +8 -7
  99. package/dist/patterns/utils.d.ts.map +1 -1
  100. package/dist/patterns/utils.js +13 -12
  101. package/dist/patterns/utils.js.map +1 -1
  102. package/dist/resolver/adapters/strict-node.d.ts +32 -0
  103. package/dist/resolver/adapters/strict-node.d.ts.map +1 -0
  104. package/dist/resolver/adapters/strict-node.js +117 -0
  105. package/dist/resolver/adapters/strict-node.js.map +1 -0
  106. package/dist/resolver/index.d.ts +20 -1
  107. package/dist/resolver/index.d.ts.map +1 -1
  108. package/dist/resolver/index.js +106 -5
  109. package/dist/resolver/index.js.map +1 -1
  110. package/dist/resolver/llm-pipeline.d.ts +33 -0
  111. package/dist/resolver/llm-pipeline.d.ts.map +1 -0
  112. package/dist/resolver/llm-pipeline.js +218 -0
  113. package/dist/resolver/llm-pipeline.js.map +1 -0
  114. package/dist/resolver/policy.d.ts.map +1 -1
  115. package/dist/resolver/policy.js +5 -0
  116. package/dist/resolver/policy.js.map +1 -1
  117. package/dist/resolver/validate-parse-tree.d.ts +52 -0
  118. package/dist/resolver/validate-parse-tree.d.ts.map +1 -0
  119. package/dist/resolver/validate-parse-tree.js +87 -0
  120. package/dist/resolver/validate-parse-tree.js.map +1 -0
  121. package/dist/resolver/validate-strict.d.ts +27 -0
  122. package/dist/resolver/validate-strict.d.ts.map +1 -0
  123. package/dist/resolver/validate-strict.js +41 -0
  124. package/dist/resolver/validate-strict.js.map +1 -0
  125. package/dist/resolver/validation.d.ts.map +1 -1
  126. package/dist/resolver/validation.js +15 -1
  127. package/dist/resolver/validation.js.map +1 -1
  128. package/dist/resolvers/dispatcher.d.ts.map +1 -1
  129. package/dist/resolvers/dispatcher.js.map +1 -1
  130. package/dist/resolvers/llm-fallback.d.ts +41 -0
  131. package/dist/resolvers/llm-fallback.d.ts.map +1 -0
  132. package/dist/resolvers/llm-fallback.js +231 -0
  133. package/dist/resolvers/llm-fallback.js.map +1 -0
  134. package/dist/types.d.ts +183 -4
  135. package/dist/types.d.ts.map +1 -1
  136. package/package.json +1 -1
@@ -0,0 +1,203 @@
1
+ /**
2
+ * Tests du resolver YAML (GitWand)
3
+ *
4
+ * Fixtures :
5
+ * F1 — clé ajoutée d'un seul côté
6
+ * F2 — même clé modifiée des deux côtés → conflit non résolvable
7
+ * F3 — YAML minimal (1 ligne)
8
+ * F4 — conflit dans values.yaml Helm (clés indépendantes)
9
+ * F5 — conflit dans un workflow GitHub Actions
10
+ */
11
+ import { describe, it, expect } from "vitest";
12
+ import { resolve } from "../../resolver.js";
13
+ // ─── F1 — clé ajoutée d'un seul côté ─────────────────────────────────────────
14
+ describe("F1 — YAML : clé ajoutée d'un seul côté (diff3)", () => {
15
+ const input = [
16
+ `<<<<<<< ours`,
17
+ `app:`,
18
+ ` name: my-app`,
19
+ ` version: 1.0.0`,
20
+ ` debug: true`,
21
+ `||||||| base`,
22
+ `app:`,
23
+ ` name: my-app`,
24
+ ` version: 1.0.0`,
25
+ `=======`,
26
+ `app:`,
27
+ ` name: my-app`,
28
+ ` version: 1.0.0`,
29
+ `>>>>>>> theirs`,
30
+ ].join("\n");
31
+ it("auto-résout via le resolver yaml", () => {
32
+ const result = resolve(input, "config.yaml");
33
+ expect(result.stats.autoResolved).toBe(1);
34
+ });
35
+ it("le résultat contient la clé ajoutée", () => {
36
+ const result = resolve(input, "config.yaml");
37
+ expect(result.mergedContent).toContain("debug");
38
+ });
39
+ it("la raison mentionne [yaml]", () => {
40
+ const result = resolve(input, "config.yaml");
41
+ expect(result.resolutions[0].resolutionReason).toMatch(/\[yaml\]/i);
42
+ });
43
+ });
44
+ // ─── F2 — même clé modifiée des deux côtés ────────────────────────────────────
45
+ describe("F2 — YAML : même clé modifiée des deux côtés → conflit non résolvable", () => {
46
+ const input = [
47
+ `<<<<<<< ours`,
48
+ `app:`,
49
+ ` name: my-app`,
50
+ ` port: 8080`,
51
+ `||||||| base`,
52
+ `app:`,
53
+ ` name: my-app`,
54
+ ` port: 3000`,
55
+ `=======`,
56
+ `app:`,
57
+ ` name: my-app`,
58
+ ` port: 9090`,
59
+ `>>>>>>> theirs`,
60
+ ].join("\n");
61
+ it("ne lève pas d'exception", () => {
62
+ expect(() => resolve(input, "config.yaml")).not.toThrow();
63
+ });
64
+ it("la raison mentionne [yaml]", () => {
65
+ const result = resolve(input, "config.yaml");
66
+ expect(result.resolutions[0].resolutionReason).toMatch(/\[yaml\]/i);
67
+ });
68
+ });
69
+ // ─── F3 — YAML minimal ───────────────────────────────────────────────────────
70
+ describe("F3 — YAML minimal : ne plante pas", () => {
71
+ const input = [
72
+ `<<<<<<< ours`,
73
+ `key: value-ours`,
74
+ `||||||| base`,
75
+ `key: value-base`,
76
+ `=======`,
77
+ `key: value-theirs`,
78
+ `>>>>>>> theirs`,
79
+ ].join("\n");
80
+ it("ne lève pas d'exception", () => {
81
+ expect(() => resolve(input, "minimal.yaml")).not.toThrow();
82
+ });
83
+ it("produit un résultat avec au moins un hunk", () => {
84
+ const result = resolve(input, "minimal.yaml");
85
+ expect(result.hunks.length).toBeGreaterThanOrEqual(1);
86
+ });
87
+ });
88
+ // ─── F4 — conflit dans values.yaml Helm (clés indépendantes) ─────────────────
89
+ describe("F4 — values.yaml Helm : merge de clés indépendantes (diff3)", () => {
90
+ const input = [
91
+ `<<<<<<< ours`,
92
+ `replicaCount: 2`,
93
+ ``,
94
+ `image:`,
95
+ ` repository: my-registry/my-app`,
96
+ ` tag: v1.2.0`,
97
+ ``,
98
+ `resources:`,
99
+ ` limits:`,
100
+ ` cpu: 500m`,
101
+ ` memory: 512Mi`,
102
+ `||||||| base`,
103
+ `replicaCount: 1`,
104
+ ``,
105
+ `image:`,
106
+ ` repository: my-registry/my-app`,
107
+ ` tag: v1.1.0`,
108
+ `||||||| base`,
109
+ `replicaCount: 1`,
110
+ ``,
111
+ `image:`,
112
+ ` repository: my-registry/my-app`,
113
+ ` tag: v1.1.0`,
114
+ `=======`,
115
+ `replicaCount: 1`,
116
+ ``,
117
+ `image:`,
118
+ ` repository: my-registry/my-app`,
119
+ ` tag: v1.2.0`,
120
+ ``,
121
+ `service:`,
122
+ ` type: ClusterIP`,
123
+ ` port: 80`,
124
+ `>>>>>>> theirs`,
125
+ ].join("\n");
126
+ it("ne lève pas d'exception", () => {
127
+ expect(() => resolve(input, "values.yaml")).not.toThrow();
128
+ });
129
+ it("la raison mentionne [yaml]", () => {
130
+ const result = resolve(input, "values.yaml");
131
+ expect(result.resolutions[0].resolutionReason).toMatch(/\[yaml\]/i);
132
+ });
133
+ });
134
+ describe("F4b — values.yml Helm simple : merge de clés indépendantes (diff3)", () => {
135
+ const input = [
136
+ `<<<<<<< ours`,
137
+ `replicaCount: 2`,
138
+ `image:`,
139
+ ` repository: my-registry/my-app`,
140
+ ` tag: v1.2.0`,
141
+ `resources:`,
142
+ ` limits:`,
143
+ ` cpu: 500m`,
144
+ `||||||| base`,
145
+ `replicaCount: 1`,
146
+ `image:`,
147
+ ` repository: my-registry/my-app`,
148
+ ` tag: v1.1.0`,
149
+ `=======`,
150
+ `replicaCount: 1`,
151
+ `image:`,
152
+ ` repository: my-registry/my-app`,
153
+ ` tag: v1.2.0`,
154
+ `service:`,
155
+ ` type: ClusterIP`,
156
+ `>>>>>>> theirs`,
157
+ ].join("\n");
158
+ it("auto-résout ou ne plante pas", () => {
159
+ expect(() => resolve(input, "values.yml")).not.toThrow();
160
+ });
161
+ it("la raison mentionne [yaml]", () => {
162
+ const result = resolve(input, "values.yml");
163
+ expect(result.resolutions[0].resolutionReason).toMatch(/\[yaml\]/i);
164
+ });
165
+ });
166
+ // ─── F5 — clé ajoutée d'un seul côté (conflit YAML réel nécessitant le resolver) ─
167
+ describe("F5 — YAML : clé de config ajoutée d'un seul côté (diff3)", () => {
168
+ // Ours ajoute `cache:`, theirs n'a pas changé la base → one_side_change trop simple,
169
+ // on utilise deux clés imbriquées différentes pour forcer le resolver YAML.
170
+ const input = [
171
+ `<<<<<<< ours`,
172
+ `database:`,
173
+ ` host: localhost`,
174
+ ` port: 5432`,
175
+ ` name: mydb`,
176
+ ` pool: 10`,
177
+ `||||||| base`,
178
+ `database:`,
179
+ ` host: localhost`,
180
+ ` port: 5432`,
181
+ ` name: mydb`,
182
+ `=======`,
183
+ `database:`,
184
+ ` host: localhost`,
185
+ ` port: 5432`,
186
+ ` name: mydb`,
187
+ ` timeout: 30`,
188
+ `>>>>>>> theirs`,
189
+ ].join("\n");
190
+ it("ne lève pas d'exception", () => {
191
+ expect(() => resolve(input, "config.yml")).not.toThrow();
192
+ });
193
+ it("auto-résout (deux ajouts indépendants)", () => {
194
+ const result = resolve(input, "config.yml");
195
+ expect(result.stats.autoResolved).toBe(1);
196
+ });
197
+ it("le résultat contient les deux nouvelles clés", () => {
198
+ const result = resolve(input, "config.yml");
199
+ expect(result.mergedContent).toContain("pool: 10");
200
+ expect(result.mergedContent).toContain("timeout: 30");
201
+ });
202
+ });
203
+ //# sourceMappingURL=yaml.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml.test.js","sourceRoot":"","sources":["../../../src/__tests__/resolvers/yaml.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Tests d'intégration "grandeur nature" v2.x — scénarios de régression
3
+ *
4
+ * Couvre les apports majeurs de chaque release mineure du moteur :
5
+ *
6
+ * v2.1 — Histogram diff & block-move detection
7
+ * · `same_change` (renommage a,b→x,y) isolé malgré des insertions adjacentes
8
+ * · `insertion_at_boundary` (multiply vs divide) résolu sans conflit
9
+ * · `detectBlockMove` détecte un déplacement de bloc
10
+ *
11
+ * v2.2 — Format profile registry + JSON Patch arrays
12
+ * · `package.json` /dependencies, /keywords, /scripts résolu via profil
13
+ * · `tsconfig.json` /include résolu via stratégie "set"
14
+ * · `disableFormatProfiles` rétablit le comportement v2.1
15
+ *
16
+ * v2.3 — Structural TypeScript merge (tree-sitter)
17
+ * · Deux branches ajoutent des fonctions TS différentes → merge structural
18
+ * · Conflit sur le corps d'une même fonction → structural retourne null
19
+ *
20
+ * v2.4 — Validation parse-tree post-merge & rétraction
21
+ * · parseTreeValid: true après résolution propre
22
+ * · parseTreeValid: false + rétraction sur fichier syntaxiquement cassé
23
+ * · parseTreeValid: null sur fichier non supporté (.json)
24
+ * · resolve() synchrone → parseTreeValid toujours null
25
+ *
26
+ * Convention de non-flakiness (héritée de grandeur-nature.test.ts) :
27
+ * Les assertions qui requièrent WASM sont gardées par
28
+ * `if (merged === null) return;` ou `if (!WASM) return;`
29
+ * afin que les tests restent verts en CI sans peer optionnels.
30
+ *
31
+ * Le contenu hardcodé correspond exactement aux fichiers créés dans
32
+ * `_tmp_split_scenario` par `setup-v2-scenarios.sh`.
33
+ */
34
+ export {};
35
+ //# sourceMappingURL=v2-core-scenarios.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v2-core-scenarios.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/v2-core-scenarios.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG"}