@gitwand/core 1.6.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/LICENSE +21 -0
- package/README.md +52 -0
- package/dist/__tests__/bench.bench.d.ts +14 -0
- package/dist/__tests__/bench.bench.d.ts.map +1 -0
- package/dist/__tests__/bench.bench.js +137 -0
- package/dist/__tests__/bench.bench.js.map +1 -0
- package/dist/__tests__/confidence-v14.test.d.ts +13 -0
- package/dist/__tests__/confidence-v14.test.d.ts.map +1 -0
- package/dist/__tests__/confidence-v14.test.js +284 -0
- package/dist/__tests__/confidence-v14.test.js.map +1 -0
- package/dist/__tests__/config.test.d.ts +2 -0
- package/dist/__tests__/config.test.d.ts.map +1 -0
- package/dist/__tests__/config.test.js +317 -0
- package/dist/__tests__/config.test.js.map +1 -0
- package/dist/__tests__/corpus.d.ts +36 -0
- package/dist/__tests__/corpus.d.ts.map +1 -0
- package/dist/__tests__/corpus.js +541 -0
- package/dist/__tests__/corpus.js.map +1 -0
- package/dist/__tests__/corpus.test.d.ts +17 -0
- package/dist/__tests__/corpus.test.d.ts.map +1 -0
- package/dist/__tests__/corpus.test.js +179 -0
- package/dist/__tests__/corpus.test.js.map +1 -0
- package/dist/__tests__/diff.test.d.ts +10 -0
- package/dist/__tests__/diff.test.d.ts.map +1 -0
- package/dist/__tests__/diff.test.js +178 -0
- package/dist/__tests__/diff.test.js.map +1 -0
- package/dist/__tests__/format-resolvers.test.d.ts +2 -0
- package/dist/__tests__/format-resolvers.test.d.ts.map +1 -0
- package/dist/__tests__/format-resolvers.test.js +577 -0
- package/dist/__tests__/format-resolvers.test.js.map +1 -0
- package/dist/__tests__/imports-extended.test.d.ts +2 -0
- package/dist/__tests__/imports-extended.test.d.ts.map +1 -0
- package/dist/__tests__/imports-extended.test.js +94 -0
- package/dist/__tests__/imports-extended.test.js.map +1 -0
- package/dist/__tests__/lockfile-resolvers.test.d.ts +2 -0
- package/dist/__tests__/lockfile-resolvers.test.d.ts.map +1 -0
- package/dist/__tests__/lockfile-resolvers.test.js +200 -0
- package/dist/__tests__/lockfile-resolvers.test.js.map +1 -0
- package/dist/__tests__/patterns/insertion-at-boundary.test.d.ts +10 -0
- package/dist/__tests__/patterns/insertion-at-boundary.test.d.ts.map +1 -0
- package/dist/__tests__/patterns/insertion-at-boundary.test.js +185 -0
- package/dist/__tests__/patterns/insertion-at-boundary.test.js.map +1 -0
- package/dist/__tests__/patterns/reorder-only.test.d.ts +10 -0
- package/dist/__tests__/patterns/reorder-only.test.d.ts.map +1 -0
- package/dist/__tests__/patterns/reorder-only.test.js +181 -0
- package/dist/__tests__/patterns/reorder-only.test.js.map +1 -0
- package/dist/__tests__/phase-7-2-3b.test.d.ts +6 -0
- package/dist/__tests__/phase-7-2-3b.test.d.ts.map +1 -0
- package/dist/__tests__/phase-7-2-3b.test.js +730 -0
- package/dist/__tests__/phase-7-2-3b.test.js.map +1 -0
- package/dist/__tests__/resolver.test.d.ts +2 -0
- package/dist/__tests__/resolver.test.d.ts.map +1 -0
- package/dist/__tests__/resolver.test.js +927 -0
- package/dist/__tests__/resolver.test.js.map +1 -0
- package/dist/__tests__/resolvers/cargo.test.d.ts +10 -0
- package/dist/__tests__/resolvers/cargo.test.d.ts.map +1 -0
- package/dist/__tests__/resolvers/cargo.test.js +158 -0
- package/dist/__tests__/resolvers/cargo.test.js.map +1 -0
- package/dist/__tests__/resolvers/dockerfile.test.d.ts +8 -0
- package/dist/__tests__/resolvers/dockerfile.test.d.ts.map +1 -0
- package/dist/__tests__/resolvers/dockerfile.test.js +120 -0
- package/dist/__tests__/resolvers/dockerfile.test.js.map +1 -0
- package/dist/__tests__/resolvers/dotenv.test.d.ts +9 -0
- package/dist/__tests__/resolvers/dotenv.test.d.ts.map +1 -0
- package/dist/__tests__/resolvers/dotenv.test.js +113 -0
- package/dist/__tests__/resolvers/dotenv.test.js.map +1 -0
- package/dist/__tests__/resolvers/improvements-v14.test.d.ts +8 -0
- package/dist/__tests__/resolvers/improvements-v14.test.d.ts.map +1 -0
- package/dist/__tests__/resolvers/improvements-v14.test.js +306 -0
- package/dist/__tests__/resolvers/improvements-v14.test.js.map +1 -0
- package/dist/__tests__/validation.test.d.ts +12 -0
- package/dist/__tests__/validation.test.d.ts.map +1 -0
- package/dist/__tests__/validation.test.js +136 -0
- package/dist/__tests__/validation.test.js.map +1 -0
- package/dist/classifier.d.ts +21 -0
- package/dist/classifier.d.ts.map +1 -0
- package/dist/classifier.js +127 -0
- package/dist/classifier.js.map +1 -0
- package/dist/config.d.ts +108 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +200 -0
- package/dist/config.js.map +1 -0
- package/dist/diff.d.ts +69 -0
- package/dist/diff.d.ts.map +1 -0
- package/dist/diff.js +328 -0
- package/dist/diff.js.map +1 -0
- package/dist/index.d.ts +47 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/dist/parser.d.ts +39 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +164 -0
- package/dist/parser.js.map +1 -0
- package/dist/patterns/complex.d.ts +5 -0
- package/dist/patterns/complex.d.ts.map +1 -0
- package/dist/patterns/complex.js +27 -0
- package/dist/patterns/complex.js.map +1 -0
- package/dist/patterns/delete-no-change.d.ts +4 -0
- package/dist/patterns/delete-no-change.d.ts.map +1 -0
- package/dist/patterns/delete-no-change.js +75 -0
- package/dist/patterns/delete-no-change.js.map +1 -0
- package/dist/patterns/insertion-at-boundary.d.ts +22 -0
- package/dist/patterns/insertion-at-boundary.d.ts.map +1 -0
- package/dist/patterns/insertion-at-boundary.js +164 -0
- package/dist/patterns/insertion-at-boundary.js.map +1 -0
- package/dist/patterns/non-overlapping.d.ts +4 -0
- package/dist/patterns/non-overlapping.d.ts.map +1 -0
- package/dist/patterns/non-overlapping.js +28 -0
- package/dist/patterns/non-overlapping.js.map +1 -0
- package/dist/patterns/one-side-change.d.ts +4 -0
- package/dist/patterns/one-side-change.d.ts.map +1 -0
- package/dist/patterns/one-side-change.js +45 -0
- package/dist/patterns/one-side-change.js.map +1 -0
- package/dist/patterns/reorder-only.d.ts +14 -0
- package/dist/patterns/reorder-only.d.ts.map +1 -0
- package/dist/patterns/reorder-only.js +81 -0
- package/dist/patterns/reorder-only.js.map +1 -0
- package/dist/patterns/same-change.d.ts +4 -0
- package/dist/patterns/same-change.d.ts.map +1 -0
- package/dist/patterns/same-change.js +25 -0
- package/dist/patterns/same-change.js.map +1 -0
- package/dist/patterns/utils.d.ts +70 -0
- package/dist/patterns/utils.d.ts.map +1 -0
- package/dist/patterns/utils.js +206 -0
- package/dist/patterns/utils.js.map +1 -0
- package/dist/patterns/value-only-change.d.ts +4 -0
- package/dist/patterns/value-only-change.d.ts.map +1 -0
- package/dist/patterns/value-only-change.js +34 -0
- package/dist/patterns/value-only-change.js.map +1 -0
- package/dist/patterns/whitespace-only.d.ts +4 -0
- package/dist/patterns/whitespace-only.d.ts.map +1 -0
- package/dist/patterns/whitespace-only.js +32 -0
- package/dist/patterns/whitespace-only.js.map +1 -0
- package/dist/resolver/assemble.d.ts +25 -0
- package/dist/resolver/assemble.d.ts.map +1 -0
- package/dist/resolver/assemble.js +170 -0
- package/dist/resolver/assemble.js.map +1 -0
- package/dist/resolver/format-dispatch.d.ts +40 -0
- package/dist/resolver/format-dispatch.d.ts.map +1 -0
- package/dist/resolver/format-dispatch.js +51 -0
- package/dist/resolver/format-dispatch.js.map +1 -0
- package/dist/resolver/generated-detection.d.ts +48 -0
- package/dist/resolver/generated-detection.d.ts.map +1 -0
- package/dist/resolver/generated-detection.js +123 -0
- package/dist/resolver/generated-detection.js.map +1 -0
- package/dist/resolver/index.d.ts +26 -0
- package/dist/resolver/index.d.ts.map +1 -0
- package/dist/resolver/index.js +147 -0
- package/dist/resolver/index.js.map +1 -0
- package/dist/resolver/policy.d.ts +53 -0
- package/dist/resolver/policy.d.ts.map +1 -0
- package/dist/resolver/policy.js +99 -0
- package/dist/resolver/policy.js.map +1 -0
- package/dist/resolver/validation.d.ts +28 -0
- package/dist/resolver/validation.d.ts.map +1 -0
- package/dist/resolver/validation.js +96 -0
- package/dist/resolver/validation.js.map +1 -0
- package/dist/resolver.d.ts +18 -0
- package/dist/resolver.d.ts.map +1 -0
- package/dist/resolver.js +18 -0
- package/dist/resolver.js.map +1 -0
- package/dist/resolvers/cargo.d.ts +34 -0
- package/dist/resolvers/cargo.d.ts.map +1 -0
- package/dist/resolvers/cargo.js +262 -0
- package/dist/resolvers/cargo.js.map +1 -0
- package/dist/resolvers/css.d.ts +60 -0
- package/dist/resolvers/css.d.ts.map +1 -0
- package/dist/resolvers/css.js +531 -0
- package/dist/resolvers/css.js.map +1 -0
- package/dist/resolvers/dispatcher.d.ts +78 -0
- package/dist/resolvers/dispatcher.d.ts.map +1 -0
- package/dist/resolvers/dispatcher.js +290 -0
- package/dist/resolvers/dispatcher.js.map +1 -0
- package/dist/resolvers/dockerfile.d.ts +24 -0
- package/dist/resolvers/dockerfile.d.ts.map +1 -0
- package/dist/resolvers/dockerfile.js +221 -0
- package/dist/resolvers/dockerfile.js.map +1 -0
- package/dist/resolvers/dotenv.d.ts +27 -0
- package/dist/resolvers/dotenv.d.ts.map +1 -0
- package/dist/resolvers/dotenv.js +114 -0
- package/dist/resolvers/dotenv.js.map +1 -0
- package/dist/resolvers/imports.d.ts +63 -0
- package/dist/resolvers/imports.d.ts.map +1 -0
- package/dist/resolvers/imports.js +513 -0
- package/dist/resolvers/imports.js.map +1 -0
- package/dist/resolvers/json.d.ts +48 -0
- package/dist/resolvers/json.d.ts.map +1 -0
- package/dist/resolvers/json.js +363 -0
- package/dist/resolvers/json.js.map +1 -0
- package/dist/resolvers/lockfile-npm.d.ts +38 -0
- package/dist/resolvers/lockfile-npm.d.ts.map +1 -0
- package/dist/resolvers/lockfile-npm.js +267 -0
- package/dist/resolvers/lockfile-npm.js.map +1 -0
- package/dist/resolvers/lockfile-pnpm.d.ts +44 -0
- package/dist/resolvers/lockfile-pnpm.d.ts.map +1 -0
- package/dist/resolvers/lockfile-pnpm.js +277 -0
- package/dist/resolvers/lockfile-pnpm.js.map +1 -0
- package/dist/resolvers/lockfile-yarn.d.ts +40 -0
- package/dist/resolvers/lockfile-yarn.d.ts.map +1 -0
- package/dist/resolvers/lockfile-yarn.js +184 -0
- package/dist/resolvers/lockfile-yarn.js.map +1 -0
- package/dist/resolvers/markdown.d.ts +64 -0
- package/dist/resolvers/markdown.d.ts.map +1 -0
- package/dist/resolvers/markdown.js +335 -0
- package/dist/resolvers/markdown.js.map +1 -0
- package/dist/resolvers/vue.d.ts +65 -0
- package/dist/resolvers/vue.d.ts.map +1 -0
- package/dist/resolvers/vue.js +258 -0
- package/dist/resolvers/vue.js.map +1 -0
- package/dist/resolvers/yaml.d.ts +65 -0
- package/dist/resolvers/yaml.d.ts.map +1 -0
- package/dist/resolvers/yaml.js +405 -0
- package/dist/resolvers/yaml.js.map +1 -0
- package/dist/types.d.ts +256 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/package.json +57 -0
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitWand Core Types
|
|
3
|
+
*
|
|
4
|
+
* Représente les structures de données pour l'analyse
|
|
5
|
+
* et la résolution automatique de conflits Git.
|
|
6
|
+
*/
|
|
7
|
+
/** Les trois versions d'un fichier en conflit */
|
|
8
|
+
export interface MergeInput {
|
|
9
|
+
/** Contenu de la version ancêtre commune (base) */
|
|
10
|
+
base: string;
|
|
11
|
+
/** Contenu de la branche courante (ours / current) */
|
|
12
|
+
ours: string;
|
|
13
|
+
/** Contenu de la branche entrante (theirs / incoming) */
|
|
14
|
+
theirs: string;
|
|
15
|
+
/** Chemin du fichier (pour le reporting) */
|
|
16
|
+
filePath: string;
|
|
17
|
+
}
|
|
18
|
+
/** Classification du type de conflit */
|
|
19
|
+
export type ConflictType = "one_side_change" | "same_change" | "non_overlapping" | "whitespace_only" | "delete_no_change" | "generated_file" | "value_only_change" | "reorder_only" | "insertion_at_boundary" | "complex";
|
|
20
|
+
/** Niveau de confiance discret (label seuil, utilisé dans les options) */
|
|
21
|
+
export type Confidence = "certain" | "high" | "medium" | "low";
|
|
22
|
+
/**
|
|
23
|
+
* Score de confiance composite pour la résolution automatique.
|
|
24
|
+
*
|
|
25
|
+
* Dimensions du score :
|
|
26
|
+
* - `typeClassification` : certitude du type détecté (0–100)
|
|
27
|
+
* - `dataRisk` : risque de perte de données si résolution auto (0–100, 0 = sûr)
|
|
28
|
+
* - `scopeImpact` : impact de la taille du changement (0–100, 0 = petit)
|
|
29
|
+
* - `fileFrequency` : v1.4 — pénalité si le fichier a déjà des hunks complexes (0–100)
|
|
30
|
+
* - `baseAvailability` : v1.4 — bonus si la base diff3/zdiff3 est disponible (0 ou 100)
|
|
31
|
+
*
|
|
32
|
+
* Formule v1.4 :
|
|
33
|
+
* `score = typeClassification
|
|
34
|
+
* − dataRisk × 0.40
|
|
35
|
+
* − scopeImpact × 0.15
|
|
36
|
+
* − fileFrequency × 0.10
|
|
37
|
+
* + baseAvailability × 0.05`
|
|
38
|
+
*
|
|
39
|
+
* Label dérivé :
|
|
40
|
+
* - score ≥ 92 → `"certain"`
|
|
41
|
+
* - score ≥ 68 → `"high"`
|
|
42
|
+
* - score ≥ 44 → `"medium"`
|
|
43
|
+
* - score < 44 → `"low"`
|
|
44
|
+
*/
|
|
45
|
+
export interface ConfidenceScore {
|
|
46
|
+
/** Score global normalisé 0–100 */
|
|
47
|
+
score: number;
|
|
48
|
+
/** Label seuil backward-compatible, dérivé du score */
|
|
49
|
+
label: Confidence;
|
|
50
|
+
/** Dimensions explicatives du score */
|
|
51
|
+
dimensions: {
|
|
52
|
+
/** Certitude de la classification du type de conflit (0–100) */
|
|
53
|
+
typeClassification: number;
|
|
54
|
+
/** Risque de corruption/perte de données (0–100, 0 = sans risque) */
|
|
55
|
+
dataRisk: number;
|
|
56
|
+
/** Impact de la taille du changement (0–100, 0 = petit) */
|
|
57
|
+
scopeImpact: number;
|
|
58
|
+
/**
|
|
59
|
+
* v1.4 — Pénalité "zone chaude" : nombre de hunks complexes déjà vus dans le même fichier.
|
|
60
|
+
* Réduit la confiance pour éviter la sur-résolution dans les fichiers très conflictuels.
|
|
61
|
+
* `fileFrequency = min(100, priorComplexHunksInFile × 20)`
|
|
62
|
+
*/
|
|
63
|
+
fileFrequency: number;
|
|
64
|
+
/**
|
|
65
|
+
* v1.4 — Bonus de disponibilité de la base diff3/zdiff3.
|
|
66
|
+
* 100 si la base est disponible (diff3 ou zdiff3), 0 sinon (diff2).
|
|
67
|
+
*/
|
|
68
|
+
baseAvailability: number;
|
|
69
|
+
};
|
|
70
|
+
/** Facteurs ayant augmenté le score (justifications de haute confiance) */
|
|
71
|
+
boosters: string[];
|
|
72
|
+
/** Facteurs ayant diminué le score (raisons de prudence) */
|
|
73
|
+
penalties: string[];
|
|
74
|
+
}
|
|
75
|
+
/** Une étape de l'évaluation de la classification */
|
|
76
|
+
export interface TraceStep {
|
|
77
|
+
/** Type de conflit évalué à cette étape */
|
|
78
|
+
type: ConflictType;
|
|
79
|
+
/** Cette étape a-t-elle produit la classification finale ? */
|
|
80
|
+
passed: boolean;
|
|
81
|
+
/** Raison lisible — pourquoi ce type a été accepté ou rejeté */
|
|
82
|
+
reason: string;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Trace complète du raisonnement de classification d'un hunk.
|
|
86
|
+
*
|
|
87
|
+
* Exemple d'utilisation :
|
|
88
|
+
* result.resolutions[0].hunk.trace.steps.forEach(s =>
|
|
89
|
+
* console.log(`[${s.passed ? '✅' : '❌'}] ${s.type}: ${s.reason}`)
|
|
90
|
+
* );
|
|
91
|
+
*/
|
|
92
|
+
export interface DecisionTrace {
|
|
93
|
+
/** Étapes d'évaluation dans l'ordre d'exécution */
|
|
94
|
+
steps: TraceStep[];
|
|
95
|
+
/** Type finalement sélectionné */
|
|
96
|
+
selected: ConflictType;
|
|
97
|
+
/** Résumé en une ligne lisible */
|
|
98
|
+
summary: string;
|
|
99
|
+
/** La base (diff3) était-elle disponible ? Conditionne les vérifications fines */
|
|
100
|
+
hasBase: boolean;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Input canonique pour la classification d'un hunk.
|
|
104
|
+
* Identique à RawConflict (défini dans parser.ts comme alias de ce type).
|
|
105
|
+
*/
|
|
106
|
+
export interface ClassifyInput {
|
|
107
|
+
oursLines: string[];
|
|
108
|
+
baseLines: string[];
|
|
109
|
+
theirsLines: string[];
|
|
110
|
+
startLine: number;
|
|
111
|
+
endLine: number;
|
|
112
|
+
}
|
|
113
|
+
/** Résultat complet de la classification d'un hunk */
|
|
114
|
+
export interface ClassifyResult {
|
|
115
|
+
type: ConflictType;
|
|
116
|
+
confidence: ConfidenceScore;
|
|
117
|
+
explanation: string;
|
|
118
|
+
trace: DecisionTrace;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Interface implémentée par chaque pattern du registre.
|
|
122
|
+
*
|
|
123
|
+
* - `priority` : ordre d'évaluation (plus petit = testé en premier)
|
|
124
|
+
* - `requires` : diff3 (base disponible), diff2 (pas de base), both (toujours évalué)
|
|
125
|
+
* - `detect` : vrai si le pattern s'applique à ce hunk
|
|
126
|
+
* - `confidence` : score composite quand le pattern a matché
|
|
127
|
+
* - `explanation` : texte lisible pour l'UI (mode explain)
|
|
128
|
+
* - `passReason` : raison dans la DecisionTrace quand passed=true
|
|
129
|
+
* - `failReason` : raison dans la DecisionTrace quand passed=false
|
|
130
|
+
*/
|
|
131
|
+
export interface PatternPlugin {
|
|
132
|
+
type: ConflictType;
|
|
133
|
+
priority: number;
|
|
134
|
+
requires: "diff3" | "diff2" | "both";
|
|
135
|
+
detect(h: ClassifyInput): boolean;
|
|
136
|
+
confidence(h: ClassifyInput): ConfidenceScore;
|
|
137
|
+
explanation(h: ClassifyInput): string;
|
|
138
|
+
passReason(h: ClassifyInput): string;
|
|
139
|
+
failReason(h: ClassifyInput): string;
|
|
140
|
+
}
|
|
141
|
+
/** Un bloc (hunk) de différence identifié */
|
|
142
|
+
export interface ConflictHunk {
|
|
143
|
+
/** Lignes dans la version base */
|
|
144
|
+
baseLines: string[];
|
|
145
|
+
/** Lignes dans la version ours */
|
|
146
|
+
oursLines: string[];
|
|
147
|
+
/** Lignes dans la version theirs */
|
|
148
|
+
theirsLines: string[];
|
|
149
|
+
/** Numéro de ligne de début dans le fichier original (base) */
|
|
150
|
+
startLine: number;
|
|
151
|
+
/** Type de conflit détecté */
|
|
152
|
+
type: ConflictType;
|
|
153
|
+
/** Score de confiance composite pour la résolution automatique */
|
|
154
|
+
confidence: ConfidenceScore;
|
|
155
|
+
/** Explication lisible de la résolution (pour l'audit) */
|
|
156
|
+
explanation: string;
|
|
157
|
+
/** Trace de la décision de classification (Phase 7.1) */
|
|
158
|
+
trace: DecisionTrace;
|
|
159
|
+
/**
|
|
160
|
+
* v1.4 — Le conflit a-t-il été détecté en format zdiff3 ?
|
|
161
|
+
* zdiff3 (Git 2.35+) produit une section base tronquée aux seules lignes divergentes.
|
|
162
|
+
* Quand true, `baseAvailability` est fixé à 100 (même traitement que diff3).
|
|
163
|
+
*/
|
|
164
|
+
zdiff3?: boolean;
|
|
165
|
+
}
|
|
166
|
+
/** Résultat de la résolution d'un seul hunk */
|
|
167
|
+
export interface HunkResolution {
|
|
168
|
+
/** Le hunk d'origine */
|
|
169
|
+
hunk: ConflictHunk;
|
|
170
|
+
/** Les lignes résolues (null si non résolu) */
|
|
171
|
+
resolvedLines: string[] | null;
|
|
172
|
+
/** Est-ce que la résolution est automatique ? */
|
|
173
|
+
autoResolved: boolean;
|
|
174
|
+
/** Raison lisible de la résolution (ou du refus de résolution) */
|
|
175
|
+
resolutionReason: string;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Résultat de la validation du contenu fusionné.
|
|
179
|
+
* Détecte les problèmes résiduels après résolution.
|
|
180
|
+
*/
|
|
181
|
+
export interface ValidationResult {
|
|
182
|
+
/** Des marqueurs de conflit résiduels ont-ils été détectés ? */
|
|
183
|
+
hasResidualMarkers: boolean;
|
|
184
|
+
/** Marqueurs trouvés (exemples, pas la liste exhaustive) */
|
|
185
|
+
residualMarkerLines: number[];
|
|
186
|
+
/** Erreur de syntaxe pour les fichiers structurés (JSON) — null si valide ou non applicable */
|
|
187
|
+
syntaxError: string | null;
|
|
188
|
+
/** Le contenu fusionné est-il valide ? */
|
|
189
|
+
isValid: boolean;
|
|
190
|
+
}
|
|
191
|
+
/** Résultat complet de l'analyse et résolution d'un fichier */
|
|
192
|
+
export interface MergeResult {
|
|
193
|
+
/** Chemin du fichier */
|
|
194
|
+
filePath: string;
|
|
195
|
+
/** Le fichier fusionné complet (null si des conflits restent) */
|
|
196
|
+
mergedContent: string | null;
|
|
197
|
+
/** Tous les hunks détectés */
|
|
198
|
+
hunks: ConflictHunk[];
|
|
199
|
+
/** Résolutions appliquées */
|
|
200
|
+
resolutions: HunkResolution[];
|
|
201
|
+
/** Statistiques */
|
|
202
|
+
stats: MergeStats;
|
|
203
|
+
/** Validation du contenu fusionné (Phase 7.2) */
|
|
204
|
+
validation: ValidationResult;
|
|
205
|
+
}
|
|
206
|
+
/** Statistiques de résolution */
|
|
207
|
+
export interface MergeStats {
|
|
208
|
+
/** Nombre total de conflits détectés */
|
|
209
|
+
totalConflicts: number;
|
|
210
|
+
/** Nombre de conflits résolus automatiquement */
|
|
211
|
+
autoResolved: number;
|
|
212
|
+
/** Nombre de conflits restants (nécessitent intervention) */
|
|
213
|
+
remaining: number;
|
|
214
|
+
/** Répartition par type */
|
|
215
|
+
byType: Record<ConflictType, number>;
|
|
216
|
+
}
|
|
217
|
+
/** Options de configuration pour le moteur de résolution */
|
|
218
|
+
export interface GitWandOptions {
|
|
219
|
+
/** Résoudre les conflits whitespace-only (défaut: true) */
|
|
220
|
+
resolveWhitespace?: boolean;
|
|
221
|
+
/** Résoudre les conflits d'imports non-overlapping (défaut: true) */
|
|
222
|
+
resolveNonOverlapping?: boolean;
|
|
223
|
+
/** Niveau de confiance minimum pour auto-résolution (défaut: "high") */
|
|
224
|
+
minConfidence?: Confidence;
|
|
225
|
+
/** Mode verbose pour le logging (défaut: false) */
|
|
226
|
+
verbose?: boolean;
|
|
227
|
+
/**
|
|
228
|
+
* Mode dry-run : classifier et tracer les hunks mais ne pas appliquer de résolution.
|
|
229
|
+
* Utile pour afficher le raisonnement sans toucher au fichier.
|
|
230
|
+
* (Phase 7.1 — explain-only mode)
|
|
231
|
+
*/
|
|
232
|
+
explainOnly?: boolean;
|
|
233
|
+
/**
|
|
234
|
+
* Politique de résolution automatique (Phase 7.4).
|
|
235
|
+
* Contrôle les choix ambigus et le niveau d'agressivité.
|
|
236
|
+
* - "prefer-ours" : choix ambigus → ours
|
|
237
|
+
* - "prefer-theirs" : choix ambigus → theirs (défaut du moteur)
|
|
238
|
+
* - "prefer-merge" : résoudre le plus possible (minConfidence: medium)
|
|
239
|
+
* - "prefer-safety" : ne résoudre que l'évident (whitespace/value_only skippés)
|
|
240
|
+
* - "strict" : seulement same_change, one_side_change, delete_no_change
|
|
241
|
+
*/
|
|
242
|
+
policy?: import("./config.js").MergePolicy;
|
|
243
|
+
/**
|
|
244
|
+
* Overrides de politique par pattern glob (Phase 7.4).
|
|
245
|
+
* La clé est un pattern glob, la valeur une MergePolicy.
|
|
246
|
+
* Exemple : `{ "*.lock": "prefer-theirs", "src/**\/*.ts": "prefer-ours" }`
|
|
247
|
+
*/
|
|
248
|
+
patternOverrides?: Record<string, import("./config.js").MergePolicy>;
|
|
249
|
+
/**
|
|
250
|
+
* Patterns glob de fichiers auto-générés (P2.4).
|
|
251
|
+
* S'ajoutent aux built-ins (lockfiles, bundles, `dist/`…) sans les remplacer.
|
|
252
|
+
* Exemple : `["src/**\/*.generated.ts", "*.pb.go", "api/openapi-client/**"]`.
|
|
253
|
+
*/
|
|
254
|
+
generatedFiles?: string[];
|
|
255
|
+
}
|
|
256
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
package/package.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@gitwand/core",
|
|
3
|
+
"version": "1.6.0",
|
|
4
|
+
"description": "GitWand core — automatic Git conflict resolution engine (powers @gitwand/cli, @gitwand/mcp, and the GitWand desktop app)",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"README.md"
|
|
17
|
+
],
|
|
18
|
+
"keywords": [
|
|
19
|
+
"git",
|
|
20
|
+
"merge",
|
|
21
|
+
"conflict",
|
|
22
|
+
"conflict-resolution",
|
|
23
|
+
"diff3",
|
|
24
|
+
"engine",
|
|
25
|
+
"gitwand"
|
|
26
|
+
],
|
|
27
|
+
"homepage": "https://github.com/devlint/GitWand#conflict-resolution-engine",
|
|
28
|
+
"bugs": {
|
|
29
|
+
"url": "https://github.com/devlint/GitWand/issues"
|
|
30
|
+
},
|
|
31
|
+
"repository": {
|
|
32
|
+
"type": "git",
|
|
33
|
+
"url": "git+https://github.com/devlint/GitWand.git",
|
|
34
|
+
"directory": "packages/core"
|
|
35
|
+
},
|
|
36
|
+
"publishConfig": {
|
|
37
|
+
"access": "public"
|
|
38
|
+
},
|
|
39
|
+
"license": "MIT",
|
|
40
|
+
"author": "Laurent Guitton <lb.guitton@gmail.com>",
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"smol-toml": "^1.3.0",
|
|
43
|
+
"yaml": "^2.5.0"
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"@types/node": "^25.5.0",
|
|
47
|
+
"typescript": "^5.4.0",
|
|
48
|
+
"vitest": "^3.0.0"
|
|
49
|
+
},
|
|
50
|
+
"scripts": {
|
|
51
|
+
"build": "tsc",
|
|
52
|
+
"test": "vitest run",
|
|
53
|
+
"test:watch": "vitest",
|
|
54
|
+
"test:bench": "vitest bench",
|
|
55
|
+
"clean": "rm -rf dist"
|
|
56
|
+
}
|
|
57
|
+
}
|