@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.
- package/dist/__tests__/corpus.d.ts.map +1 -1
- package/dist/__tests__/corpus.js +377 -0
- package/dist/__tests__/corpus.js.map +1 -1
- package/dist/__tests__/patterns/complex.test.d.ts +9 -0
- package/dist/__tests__/patterns/complex.test.d.ts.map +1 -0
- package/dist/__tests__/patterns/complex.test.js +198 -0
- package/dist/__tests__/patterns/complex.test.js.map +1 -0
- package/dist/__tests__/patterns/delete-no-change.test.d.ts +11 -0
- package/dist/__tests__/patterns/delete-no-change.test.d.ts.map +1 -0
- package/dist/__tests__/patterns/delete-no-change.test.js +178 -0
- package/dist/__tests__/patterns/delete-no-change.test.js.map +1 -0
- package/dist/__tests__/patterns/llm-proposed.test.d.ts +10 -0
- package/dist/__tests__/patterns/llm-proposed.test.d.ts.map +1 -0
- package/dist/__tests__/patterns/llm-proposed.test.js +306 -0
- package/dist/__tests__/patterns/llm-proposed.test.js.map +1 -0
- package/dist/__tests__/patterns/non-overlapping.test.d.ts +11 -0
- package/dist/__tests__/patterns/non-overlapping.test.d.ts.map +1 -0
- package/dist/__tests__/patterns/non-overlapping.test.js +240 -0
- package/dist/__tests__/patterns/non-overlapping.test.js.map +1 -0
- package/dist/__tests__/patterns/one-side-change.test.d.ts +10 -0
- package/dist/__tests__/patterns/one-side-change.test.d.ts.map +1 -0
- package/dist/__tests__/patterns/one-side-change.test.js +191 -0
- package/dist/__tests__/patterns/one-side-change.test.js.map +1 -0
- package/dist/__tests__/patterns/same-change.test.d.ts +9 -0
- package/dist/__tests__/patterns/same-change.test.d.ts.map +1 -0
- package/dist/__tests__/patterns/same-change.test.js +173 -0
- package/dist/__tests__/patterns/same-change.test.js.map +1 -0
- package/dist/__tests__/patterns/value-only-change.test.d.ts +11 -0
- package/dist/__tests__/patterns/value-only-change.test.d.ts.map +1 -0
- package/dist/__tests__/patterns/value-only-change.test.js +159 -0
- package/dist/__tests__/patterns/value-only-change.test.js.map +1 -0
- package/dist/__tests__/patterns/whitespace-only.test.d.ts +10 -0
- package/dist/__tests__/patterns/whitespace-only.test.d.ts.map +1 -0
- package/dist/__tests__/patterns/whitespace-only.test.js +177 -0
- package/dist/__tests__/patterns/whitespace-only.test.js.map +1 -0
- package/dist/__tests__/resolvers/css.test.d.ts +12 -0
- package/dist/__tests__/resolvers/css.test.d.ts.map +1 -0
- package/dist/__tests__/resolvers/css.test.js +171 -0
- package/dist/__tests__/resolvers/css.test.js.map +1 -0
- package/dist/__tests__/resolvers/imports.test.d.ts +12 -0
- package/dist/__tests__/resolvers/imports.test.d.ts.map +1 -0
- package/dist/__tests__/resolvers/imports.test.js +135 -0
- package/dist/__tests__/resolvers/imports.test.js.map +1 -0
- package/dist/__tests__/resolvers/json.test.d.ts +12 -0
- package/dist/__tests__/resolvers/json.test.d.ts.map +1 -0
- package/dist/__tests__/resolvers/json.test.js +184 -0
- package/dist/__tests__/resolvers/json.test.js.map +1 -0
- package/dist/__tests__/resolvers/lockfile-npm.test.d.ts +12 -0
- package/dist/__tests__/resolvers/lockfile-npm.test.d.ts.map +1 -0
- package/dist/__tests__/resolvers/lockfile-npm.test.js +187 -0
- package/dist/__tests__/resolvers/lockfile-npm.test.js.map +1 -0
- package/dist/__tests__/resolvers/lockfile-pnpm.test.d.ts +12 -0
- package/dist/__tests__/resolvers/lockfile-pnpm.test.d.ts.map +1 -0
- package/dist/__tests__/resolvers/lockfile-pnpm.test.js +175 -0
- package/dist/__tests__/resolvers/lockfile-pnpm.test.js.map +1 -0
- package/dist/__tests__/resolvers/lockfile-yarn.test.d.ts +12 -0
- package/dist/__tests__/resolvers/lockfile-yarn.test.d.ts.map +1 -0
- package/dist/__tests__/resolvers/lockfile-yarn.test.js +165 -0
- package/dist/__tests__/resolvers/lockfile-yarn.test.js.map +1 -0
- package/dist/__tests__/resolvers/markdown.test.d.ts +12 -0
- package/dist/__tests__/resolvers/markdown.test.d.ts.map +1 -0
- package/dist/__tests__/resolvers/markdown.test.js +188 -0
- package/dist/__tests__/resolvers/markdown.test.js.map +1 -0
- package/dist/__tests__/resolvers/vue.test.d.ts +12 -0
- package/dist/__tests__/resolvers/vue.test.d.ts.map +1 -0
- package/dist/__tests__/resolvers/vue.test.js +225 -0
- package/dist/__tests__/resolvers/vue.test.js.map +1 -0
- package/dist/__tests__/resolvers/yaml.test.d.ts +12 -0
- package/dist/__tests__/resolvers/yaml.test.d.ts.map +1 -0
- package/dist/__tests__/resolvers/yaml.test.js +203 -0
- package/dist/__tests__/resolvers/yaml.test.js.map +1 -0
- package/dist/__tests__/v2-core-scenarios.test.d.ts +35 -0
- package/dist/__tests__/v2-core-scenarios.test.d.ts.map +1 -0
- package/dist/__tests__/v2-core-scenarios.test.js +692 -0
- package/dist/__tests__/v2-core-scenarios.test.js.map +1 -0
- package/dist/__tests__/validation-parse-tree.test.d.ts +15 -0
- package/dist/__tests__/validation-parse-tree.test.d.ts.map +1 -0
- package/dist/__tests__/validation-parse-tree.test.js +243 -0
- package/dist/__tests__/validation-parse-tree.test.js.map +1 -0
- package/dist/classifier.d.ts.map +1 -1
- package/dist/classifier.js +3 -0
- package/dist/classifier.js.map +1 -1
- package/dist/config.d.ts +54 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +42 -0
- package/dist/config.js.map +1 -1
- package/dist/diff/index.d.ts.map +1 -1
- package/dist/diff/index.js +1 -3
- package/dist/diff/index.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/patterns/llm-proposed.d.ts +8 -0
- package/dist/patterns/llm-proposed.d.ts.map +1 -0
- package/dist/patterns/llm-proposed.js +66 -0
- package/dist/patterns/llm-proposed.js.map +1 -0
- package/dist/patterns/utils.d.ts +8 -7
- package/dist/patterns/utils.d.ts.map +1 -1
- package/dist/patterns/utils.js +13 -12
- package/dist/patterns/utils.js.map +1 -1
- package/dist/resolver/adapters/strict-node.d.ts +32 -0
- package/dist/resolver/adapters/strict-node.d.ts.map +1 -0
- package/dist/resolver/adapters/strict-node.js +117 -0
- package/dist/resolver/adapters/strict-node.js.map +1 -0
- package/dist/resolver/index.d.ts +20 -1
- package/dist/resolver/index.d.ts.map +1 -1
- package/dist/resolver/index.js +106 -5
- package/dist/resolver/index.js.map +1 -1
- package/dist/resolver/llm-pipeline.d.ts +33 -0
- package/dist/resolver/llm-pipeline.d.ts.map +1 -0
- package/dist/resolver/llm-pipeline.js +218 -0
- package/dist/resolver/llm-pipeline.js.map +1 -0
- package/dist/resolver/policy.d.ts.map +1 -1
- package/dist/resolver/policy.js +5 -0
- package/dist/resolver/policy.js.map +1 -1
- package/dist/resolver/validate-parse-tree.d.ts +52 -0
- package/dist/resolver/validate-parse-tree.d.ts.map +1 -0
- package/dist/resolver/validate-parse-tree.js +87 -0
- package/dist/resolver/validate-parse-tree.js.map +1 -0
- package/dist/resolver/validate-strict.d.ts +27 -0
- package/dist/resolver/validate-strict.d.ts.map +1 -0
- package/dist/resolver/validate-strict.js +41 -0
- package/dist/resolver/validate-strict.js.map +1 -0
- package/dist/resolver/validation.d.ts.map +1 -1
- package/dist/resolver/validation.js +15 -1
- package/dist/resolver/validation.js.map +1 -1
- package/dist/resolvers/dispatcher.d.ts.map +1 -1
- package/dist/resolvers/dispatcher.js.map +1 -1
- package/dist/resolvers/llm-fallback.d.ts +41 -0
- package/dist/resolvers/llm-fallback.d.ts.map +1 -0
- package/dist/resolvers/llm-fallback.js +231 -0
- package/dist/resolvers/llm-fallback.js.map +1 -0
- package/dist/types.d.ts +183 -4
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests du pattern complex (priority 999)
|
|
3
|
+
*
|
|
4
|
+
* Fallback universel — toujours détecté quand aucun autre pattern ne s'applique.
|
|
5
|
+
* Jamais auto-résolu : stats.autoResolved === 0.
|
|
6
|
+
* Ne pas utiliser toBe sur mergedContent pour complex (ne résout pas).
|
|
7
|
+
*/
|
|
8
|
+
import { describe, it, expect } from "vitest";
|
|
9
|
+
import { resolve } from "../../resolver.js";
|
|
10
|
+
// ─── Cas qui doivent matcher complex ─────────────────────────
|
|
11
|
+
describe("complex : modifications conflictuelles sur la même zone (diff3)", () => {
|
|
12
|
+
const input = [
|
|
13
|
+
`<<<<<<< ours`,
|
|
14
|
+
` level: "warn",`,
|
|
15
|
+
` format: "json",`,
|
|
16
|
+
`||||||| base`,
|
|
17
|
+
` level: "info",`,
|
|
18
|
+
` format: "text",`,
|
|
19
|
+
`=======`,
|
|
20
|
+
` level: "error",`,
|
|
21
|
+
` format: "logfmt",`,
|
|
22
|
+
`>>>>>>> theirs`,
|
|
23
|
+
].join("\n");
|
|
24
|
+
it("classifie en complex", () => {
|
|
25
|
+
const result = resolve(input, "src/logger.ts");
|
|
26
|
+
expect(result.hunks[0].type).toBe("complex");
|
|
27
|
+
});
|
|
28
|
+
it("n'est pas auto-résolu (autoResolved === 0)", () => {
|
|
29
|
+
const result = resolve(input, "src/logger.ts");
|
|
30
|
+
expect(result.stats.autoResolved).toBe(0);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
describe("complex : restructuration incompatible (diff2)", () => {
|
|
34
|
+
const input = [
|
|
35
|
+
`<<<<<<< ours`,
|
|
36
|
+
`export default class UserService {`,
|
|
37
|
+
` constructor(private db: Database) {}`,
|
|
38
|
+
` async getUser(id: string) {`,
|
|
39
|
+
` return this.db.find(id);`,
|
|
40
|
+
` }`,
|
|
41
|
+
`}`,
|
|
42
|
+
`=======`,
|
|
43
|
+
`export const userService = {`,
|
|
44
|
+
` getUser: async (id: string, db: Database) => db.find(id),`,
|
|
45
|
+
`};`,
|
|
46
|
+
`>>>>>>> theirs`,
|
|
47
|
+
].join("\n");
|
|
48
|
+
it("classifie en complex", () => {
|
|
49
|
+
const result = resolve(input, "src/user-service.ts");
|
|
50
|
+
expect(result.hunks[0].type).toBe("complex");
|
|
51
|
+
});
|
|
52
|
+
it("n'est pas auto-résolu", () => {
|
|
53
|
+
const result = resolve(input, "src/user-service.ts");
|
|
54
|
+
expect(result.stats.autoResolved).toBe(0);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
describe("complex : logique métier conflictuelle (diff3)", () => {
|
|
58
|
+
const input = [
|
|
59
|
+
`<<<<<<< ours`,
|
|
60
|
+
` if (user.role === "admin") {`,
|
|
61
|
+
` return true;`,
|
|
62
|
+
` }`,
|
|
63
|
+
` return user.permissions.includes("write");`,
|
|
64
|
+
`||||||| base`,
|
|
65
|
+
` return user.isAdmin;`,
|
|
66
|
+
`=======`,
|
|
67
|
+
` const allowed = ["admin", "editor", "moderator"];`,
|
|
68
|
+
` return allowed.includes(user.role);`,
|
|
69
|
+
`>>>>>>> theirs`,
|
|
70
|
+
].join("\n");
|
|
71
|
+
it("classifie en complex", () => {
|
|
72
|
+
const result = resolve(input, "src/auth.ts");
|
|
73
|
+
expect(result.hunks[0].type).toBe("complex");
|
|
74
|
+
});
|
|
75
|
+
it("n'est pas auto-résolu", () => {
|
|
76
|
+
const result = resolve(input, "src/auth.ts");
|
|
77
|
+
expect(result.stats.autoResolved).toBe(0);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
describe("complex : renommages incompatibles (diff2)", () => {
|
|
81
|
+
const input = [
|
|
82
|
+
`<<<<<<< ours`,
|
|
83
|
+
` const fetchUserData = async (userId: string) => {`,
|
|
84
|
+
` const response = await apiClient.get(\`/users/\${userId}\`);`,
|
|
85
|
+
` return response.data;`,
|
|
86
|
+
` };`,
|
|
87
|
+
`=======`,
|
|
88
|
+
` const loadProfile = async (profileId: string) => {`,
|
|
89
|
+
` const res = await http.request("GET", \`/profiles/\${profileId}\`);`,
|
|
90
|
+
` return res.json();`,
|
|
91
|
+
` };`,
|
|
92
|
+
`>>>>>>> theirs`,
|
|
93
|
+
].join("\n");
|
|
94
|
+
it("classifie en complex", () => {
|
|
95
|
+
const result = resolve(input, "src/api.ts");
|
|
96
|
+
expect(result.hunks[0].type).toBe("complex");
|
|
97
|
+
});
|
|
98
|
+
it("n'est pas auto-résolu", () => {
|
|
99
|
+
const result = resolve(input, "src/api.ts");
|
|
100
|
+
expect(result.stats.autoResolved).toBe(0);
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
describe("complex : changements structurels incompatibles sur le même bloc (diff3)", () => {
|
|
104
|
+
const input = [
|
|
105
|
+
`<<<<<<< ours`,
|
|
106
|
+
`type Status = "active" | "inactive" | "pending" | "banned";`,
|
|
107
|
+
`||||||| base`,
|
|
108
|
+
`type Status = "active" | "inactive";`,
|
|
109
|
+
`=======`,
|
|
110
|
+
`enum Status {`,
|
|
111
|
+
` Active = "active",`,
|
|
112
|
+
` Inactive = "inactive",`,
|
|
113
|
+
` Archived = "archived",`,
|
|
114
|
+
`}`,
|
|
115
|
+
`>>>>>>> theirs`,
|
|
116
|
+
].join("\n");
|
|
117
|
+
it("classifie en complex", () => {
|
|
118
|
+
const result = resolve(input, "src/types.ts");
|
|
119
|
+
expect(result.hunks[0].type).toBe("complex");
|
|
120
|
+
});
|
|
121
|
+
it("n'est pas auto-résolu", () => {
|
|
122
|
+
const result = resolve(input, "src/types.ts");
|
|
123
|
+
expect(result.stats.autoResolved).toBe(0);
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
// ─── Vérification que complex n'absorbe pas les patterns auto-résolubles ────
|
|
127
|
+
describe("complex : ne capture pas les patterns auto-résolubles", () => {
|
|
128
|
+
it("same_change (prio 10) ne tombe pas en complex", () => {
|
|
129
|
+
const input = [
|
|
130
|
+
`<<<<<<< ours`,
|
|
131
|
+
`const x = 1;`,
|
|
132
|
+
`=======`,
|
|
133
|
+
`const x = 1;`,
|
|
134
|
+
`>>>>>>> theirs`,
|
|
135
|
+
].join("\n");
|
|
136
|
+
const result = resolve(input, "src/test.ts");
|
|
137
|
+
expect(result.hunks[0].type).not.toBe("complex");
|
|
138
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
139
|
+
});
|
|
140
|
+
it("delete_no_change (prio 20) ne tombe pas en complex", () => {
|
|
141
|
+
const input = [
|
|
142
|
+
`<<<<<<< ours`,
|
|
143
|
+
`=======`,
|
|
144
|
+
` someOldLine: true,`,
|
|
145
|
+
`>>>>>>> theirs`,
|
|
146
|
+
].join("\n");
|
|
147
|
+
const result = resolve(input, "src/test.ts");
|
|
148
|
+
// delete_no_change détecté en diff2 avec confiance "medium" (48) — non auto-résolu
|
|
149
|
+
// par défaut (seuil "high"), mais le type est bien delete_no_change, PAS complex.
|
|
150
|
+
expect(result.hunks[0].type).not.toBe("complex");
|
|
151
|
+
expect(result.hunks[0].type).toBe("delete_no_change");
|
|
152
|
+
});
|
|
153
|
+
it("one_side_change (prio 30) ne tombe pas en complex", () => {
|
|
154
|
+
const input = [
|
|
155
|
+
`<<<<<<< ours`,
|
|
156
|
+
` timeout: 3000,`,
|
|
157
|
+
`||||||| base`,
|
|
158
|
+
` timeout: 3000,`,
|
|
159
|
+
`=======`,
|
|
160
|
+
` timeout: 9000,`,
|
|
161
|
+
`>>>>>>> theirs`,
|
|
162
|
+
].join("\n");
|
|
163
|
+
const result = resolve(input, "src/test.ts");
|
|
164
|
+
expect(result.hunks[0].type).not.toBe("complex");
|
|
165
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
166
|
+
});
|
|
167
|
+
it("whitespace_only (prio 50) ne tombe pas en complex", () => {
|
|
168
|
+
const input = [
|
|
169
|
+
`<<<<<<< ours`,
|
|
170
|
+
` const y = 2;`,
|
|
171
|
+
`=======`,
|
|
172
|
+
` const y = 2;`,
|
|
173
|
+
`>>>>>>> theirs`,
|
|
174
|
+
].join("\n");
|
|
175
|
+
const result = resolve(input, "src/test.ts");
|
|
176
|
+
expect(result.hunks[0].type).not.toBe("complex");
|
|
177
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
178
|
+
});
|
|
179
|
+
it("complex a un score sous le seuil high (non auto-résolu)", () => {
|
|
180
|
+
const input = [
|
|
181
|
+
`<<<<<<< ours`,
|
|
182
|
+
` foo: "completely",`,
|
|
183
|
+
` bar: "different",`,
|
|
184
|
+
`||||||| base`,
|
|
185
|
+
` foo: "original",`,
|
|
186
|
+
`=======`,
|
|
187
|
+
` baz: "also",`,
|
|
188
|
+
` qux: "different",`,
|
|
189
|
+
`>>>>>>> theirs`,
|
|
190
|
+
].join("\n");
|
|
191
|
+
const result = resolve(input, "src/test.ts");
|
|
192
|
+
expect(result.hunks[0].type).toBe("complex");
|
|
193
|
+
// makeScore(100, 100, 0) → 100 − 100×0.40 = 60 — sous le seuil "high" (68)
|
|
194
|
+
expect(result.hunks[0].confidence.score).toBeLessThan(68);
|
|
195
|
+
expect(result.stats.autoResolved).toBe(0);
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
//# sourceMappingURL=complex.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"complex.test.js","sourceRoot":"","sources":["../../../src/__tests__/patterns/complex.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,gEAAgE;AAEhE,QAAQ,CAAC,iEAAiE,EAAE,GAAG,EAAE;IAC/E,MAAM,KAAK,GAAG;QACZ,cAAc;QACd,kBAAkB;QAClB,mBAAmB;QACnB,cAAc;QACd,kBAAkB;QAClB,mBAAmB;QACnB,SAAS;QACT,mBAAmB;QACnB,qBAAqB;QACrB,gBAAgB;KACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gDAAgD,EAAE,GAAG,EAAE;IAC9D,MAAM,KAAK,GAAG;QACZ,cAAc;QACd,oCAAoC;QACpC,wCAAwC;QACxC,+BAA+B;QAC/B,8BAA8B;QAC9B,KAAK;QACL,GAAG;QACH,SAAS;QACT,8BAA8B;QAC9B,6DAA6D;QAC7D,IAAI;QACJ,gBAAgB;KACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gDAAgD,EAAE,GAAG,EAAE;IAC9D,MAAM,KAAK,GAAG;QACZ,cAAc;QACd,gCAAgC;QAChC,kBAAkB;QAClB,KAAK;QACL,8CAA8C;QAC9C,cAAc;QACd,wBAAwB;QACxB,SAAS;QACT,qDAAqD;QACrD,uCAAuC;QACvC,gBAAgB;KACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,4CAA4C,EAAE,GAAG,EAAE;IAC1D,MAAM,KAAK,GAAG;QACZ,cAAc;QACd,qDAAqD;QACrD,kEAAkE;QAClE,2BAA2B;QAC3B,MAAM;QACN,SAAS;QACT,sDAAsD;QACtD,yEAAyE;QACzE,wBAAwB;QACxB,MAAM;QACN,gBAAgB;KACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,0EAA0E,EAAE,GAAG,EAAE;IACxF,MAAM,KAAK,GAAG;QACZ,cAAc;QACd,6DAA6D;QAC7D,cAAc;QACd,sCAAsC;QACtC,SAAS;QACT,eAAe;QACf,sBAAsB;QACtB,0BAA0B;QAC1B,0BAA0B;QAC1B,GAAG;QACH,gBAAgB;KACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,+EAA+E;AAE/E,QAAQ,CAAC,uDAAuD,EAAE,GAAG,EAAE;IACrE,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,KAAK,GAAG;YACZ,cAAc;YACd,cAAc;YACd,SAAS;YACT,cAAc;YACd,gBAAgB;SACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,KAAK,GAAG;YACZ,cAAc;YACd,SAAS;YACT,sBAAsB;YACtB,gBAAgB;SACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAC7C,mFAAmF;QACnF,kFAAkF;QAClF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,KAAK,GAAG;YACZ,cAAc;YACd,kBAAkB;YAClB,cAAc;YACd,kBAAkB;YAClB,SAAS;YACT,kBAAkB;YAClB,gBAAgB;SACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,KAAK,GAAG;YACZ,cAAc;YACd,kBAAkB;YAClB,SAAS;YACT,gBAAgB;YAChB,gBAAgB;SACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,KAAK,GAAG;YACZ,cAAc;YACd,sBAAsB;YACtB,qBAAqB;YACrB,cAAc;YACd,oBAAoB;YACpB,SAAS;YACT,gBAAgB;YAChB,qBAAqB;YACrB,gBAAgB;SACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,2EAA2E;QAC3E,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests du pattern delete_no_change (priority 20)
|
|
3
|
+
*
|
|
4
|
+
* Détection (diff3) : un côté supprime (vide), l'autre n'a pas changé par
|
|
5
|
+
* rapport à la base. Cas : (ours vide ET theirs === base) OU (theirs vide
|
|
6
|
+
* ET ours === base).
|
|
7
|
+
* Détection (diff2) : ours vide OU theirs vide.
|
|
8
|
+
* Auto-résolu (la suppression gagne).
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=delete-no-change.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-no-change.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/patterns/delete-no-change.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests du pattern delete_no_change (priority 20)
|
|
3
|
+
*
|
|
4
|
+
* Détection (diff3) : un côté supprime (vide), l'autre n'a pas changé par
|
|
5
|
+
* rapport à la base. Cas : (ours vide ET theirs === base) OU (theirs vide
|
|
6
|
+
* ET ours === base).
|
|
7
|
+
* Détection (diff2) : ours vide OU theirs vide.
|
|
8
|
+
* Auto-résolu (la suppression gagne).
|
|
9
|
+
*/
|
|
10
|
+
import { describe, it, expect } from "vitest";
|
|
11
|
+
import { resolve } from "../../resolver.js";
|
|
12
|
+
// ─── Cas qui doivent matcher delete_no_change ─────────────────
|
|
13
|
+
describe("delete_no_change : ours supprime, theirs inchangé (diff3)", () => {
|
|
14
|
+
const input = [
|
|
15
|
+
`<<<<<<< ours`,
|
|
16
|
+
`||||||| base`,
|
|
17
|
+
` legacyFlag: true,`,
|
|
18
|
+
`=======`,
|
|
19
|
+
` legacyFlag: true,`,
|
|
20
|
+
`>>>>>>> theirs`,
|
|
21
|
+
].join("\n");
|
|
22
|
+
it("classifie en delete_no_change", () => {
|
|
23
|
+
const result = resolve(input, "src/config.ts");
|
|
24
|
+
expect(result.hunks[0].type).toBe("delete_no_change");
|
|
25
|
+
});
|
|
26
|
+
it("auto-résout (autoResolved === 1)", () => {
|
|
27
|
+
const result = resolve(input, "src/config.ts");
|
|
28
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
describe("delete_no_change : theirs supprime, ours inchangé (diff3)", () => {
|
|
32
|
+
const input = [
|
|
33
|
+
`<<<<<<< ours`,
|
|
34
|
+
` deprecatedOption: false,`,
|
|
35
|
+
`||||||| base`,
|
|
36
|
+
` deprecatedOption: false,`,
|
|
37
|
+
`=======`,
|
|
38
|
+
`>>>>>>> theirs`,
|
|
39
|
+
].join("\n");
|
|
40
|
+
it("classifie en delete_no_change", () => {
|
|
41
|
+
const result = resolve(input, "src/config.ts");
|
|
42
|
+
expect(result.hunks[0].type).toBe("delete_no_change");
|
|
43
|
+
});
|
|
44
|
+
it("auto-résout", () => {
|
|
45
|
+
const result = resolve(input, "src/config.ts");
|
|
46
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
describe("delete_no_change : ours supprime multi-lignes (diff3)", () => {
|
|
50
|
+
const input = [
|
|
51
|
+
`<<<<<<< ours`,
|
|
52
|
+
`||||||| base`,
|
|
53
|
+
` // Old comment block`,
|
|
54
|
+
` // that spans multiple lines`,
|
|
55
|
+
` oldVar = 42;`,
|
|
56
|
+
`=======`,
|
|
57
|
+
` // Old comment block`,
|
|
58
|
+
` // that spans multiple lines`,
|
|
59
|
+
` oldVar = 42;`,
|
|
60
|
+
`>>>>>>> theirs`,
|
|
61
|
+
].join("\n");
|
|
62
|
+
it("classifie en delete_no_change", () => {
|
|
63
|
+
const result = resolve(input, "src/legacy.ts");
|
|
64
|
+
expect(result.hunks[0].type).toBe("delete_no_change");
|
|
65
|
+
});
|
|
66
|
+
it("auto-résout", () => {
|
|
67
|
+
const result = resolve(input, "src/legacy.ts");
|
|
68
|
+
expect(result.stats.autoResolved).toBe(1);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
describe("delete_no_change : ours vide (diff2)", () => {
|
|
72
|
+
const input = [
|
|
73
|
+
`<<<<<<< ours`,
|
|
74
|
+
`=======`,
|
|
75
|
+
` someRemovedLine: true,`,
|
|
76
|
+
`>>>>>>> theirs`,
|
|
77
|
+
].join("\n");
|
|
78
|
+
it("classifie en delete_no_change", () => {
|
|
79
|
+
const result = resolve(input, "src/test.ts");
|
|
80
|
+
expect(result.hunks[0].type).toBe("delete_no_change");
|
|
81
|
+
});
|
|
82
|
+
// En diff2, le score de confiance est "low" (60 − pénalité 30 = 30) — sous le seuil
|
|
83
|
+
// auto-résolution par défaut (high = 68). Le pattern est détecté mais pas appliqué.
|
|
84
|
+
it("ne plante pas — confiance low en diff2", () => {
|
|
85
|
+
const result = resolve(input, "src/test.ts");
|
|
86
|
+
expect(result.hunks[0].type).toBe("delete_no_change");
|
|
87
|
+
// makeScore(60, 30, 0) → 60 − 30×0.40 = 48 → "medium" (sous le seuil "high" pour auto-résolution)
|
|
88
|
+
expect(result.hunks[0].confidence.label).toBe("medium");
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
describe("delete_no_change : theirs vide (diff2)", () => {
|
|
92
|
+
const input = [
|
|
93
|
+
`<<<<<<< ours`,
|
|
94
|
+
` anotherOldLine = "legacy";`,
|
|
95
|
+
`=======`,
|
|
96
|
+
`>>>>>>> theirs`,
|
|
97
|
+
].join("\n");
|
|
98
|
+
it("classifie en delete_no_change", () => {
|
|
99
|
+
const result = resolve(input, "src/test.ts");
|
|
100
|
+
expect(result.hunks[0].type).toBe("delete_no_change");
|
|
101
|
+
});
|
|
102
|
+
// En diff2, confiance "low" — pas auto-résolu par défaut
|
|
103
|
+
it("ne plante pas — confiance low en diff2", () => {
|
|
104
|
+
const result = resolve(input, "src/test.ts");
|
|
105
|
+
expect(result.hunks[0].type).toBe("delete_no_change");
|
|
106
|
+
// makeScore(60, 30, 0) → 60 − 30×0.40 = 48 → "medium" (sous le seuil "high" pour auto-résolution)
|
|
107
|
+
expect(result.hunks[0].confidence.label).toBe("medium");
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
// ─── Cas qui ne doivent PAS matcher delete_no_change ─────────
|
|
111
|
+
describe("delete_no_change : cas qui ne doivent pas matcher", () => {
|
|
112
|
+
it("ne matche pas si les deux côtés ont du contenu différent (les deux ont modifié)", () => {
|
|
113
|
+
const input = [
|
|
114
|
+
`<<<<<<< ours`,
|
|
115
|
+
` flag: true,`,
|
|
116
|
+
`||||||| base`,
|
|
117
|
+
` flag: false,`,
|
|
118
|
+
`=======`,
|
|
119
|
+
` flag: "maybe",`,
|
|
120
|
+
`>>>>>>> theirs`,
|
|
121
|
+
].join("\n");
|
|
122
|
+
const result = resolve(input, "src/test.ts");
|
|
123
|
+
expect(result.hunks[0].type).not.toBe("delete_no_change");
|
|
124
|
+
});
|
|
125
|
+
it("ne matche pas si ours modifie (sans supprimer) et theirs === base", () => {
|
|
126
|
+
const input = [
|
|
127
|
+
`<<<<<<< ours`,
|
|
128
|
+
` value: 99,`,
|
|
129
|
+
`||||||| base`,
|
|
130
|
+
` value: 1,`,
|
|
131
|
+
`=======`,
|
|
132
|
+
` value: 1,`,
|
|
133
|
+
`>>>>>>> theirs`,
|
|
134
|
+
].join("\n");
|
|
135
|
+
// ours modifie, theirs inchangé → one_side_change (prio 30)
|
|
136
|
+
const result = resolve(input, "src/test.ts");
|
|
137
|
+
expect(result.hunks[0].type).not.toBe("delete_no_change");
|
|
138
|
+
});
|
|
139
|
+
it("ne matche pas si les deux côtés suppriment (same_change)", () => {
|
|
140
|
+
const input = [
|
|
141
|
+
`<<<<<<< ours`,
|
|
142
|
+
`||||||| base`,
|
|
143
|
+
` removed: true,`,
|
|
144
|
+
`=======`,
|
|
145
|
+
`>>>>>>> theirs`,
|
|
146
|
+
].join("\n");
|
|
147
|
+
// Les deux suppriment → same_change (prio 10)
|
|
148
|
+
const result = resolve(input, "src/test.ts");
|
|
149
|
+
expect(result.hunks[0].type).toBe("same_change");
|
|
150
|
+
});
|
|
151
|
+
it("ne matche pas si ours et theirs ont des contenus distincts non vides", () => {
|
|
152
|
+
const input = [
|
|
153
|
+
`<<<<<<< ours`,
|
|
154
|
+
` optionA: 1,`,
|
|
155
|
+
`=======`,
|
|
156
|
+
` optionB: 2,`,
|
|
157
|
+
`>>>>>>> theirs`,
|
|
158
|
+
].join("\n");
|
|
159
|
+
const result = resolve(input, "src/test.ts");
|
|
160
|
+
expect(result.hunks[0].type).not.toBe("delete_no_change");
|
|
161
|
+
});
|
|
162
|
+
it("ne matche pas si ours ajoute par rapport à la base (theirs garde la base)", () => {
|
|
163
|
+
const input = [
|
|
164
|
+
`<<<<<<< ours`,
|
|
165
|
+
` existing: true,`,
|
|
166
|
+
` newField: "added",`,
|
|
167
|
+
`||||||| base`,
|
|
168
|
+
` existing: true,`,
|
|
169
|
+
`=======`,
|
|
170
|
+
` existing: true,`,
|
|
171
|
+
`>>>>>>> theirs`,
|
|
172
|
+
].join("\n");
|
|
173
|
+
// ours ajoute une ligne → insertion, pas suppression
|
|
174
|
+
const result = resolve(input, "src/test.ts");
|
|
175
|
+
expect(result.hunks[0].type).not.toBe("delete_no_change");
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
//# sourceMappingURL=delete-no-change.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-no-change.test.js","sourceRoot":"","sources":["../../../src/__tests__/patterns/delete-no-change.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests du pattern llm_proposed (v2.5) et de la pipeline LLM fallback.
|
|
3
|
+
*
|
|
4
|
+
* Couvre :
|
|
5
|
+
* 1. Comportement du PatternPlugin (flag module-level, confidence, priority)
|
|
6
|
+
* 2. tryLlmFallbackResolve (endpoint mock, parsing, validation, trace)
|
|
7
|
+
* 3. Intégration resolveAsync avec mock endpoint déterministe
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=llm-proposed.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-proposed.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/patterns/llm-proposed.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|