@andrebuzeli/git-mcp 5.3.0 → 5.4.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 (64) hide show
  1. package/dist/config.d.ts +10 -0
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +28 -1
  4. package/dist/config.js.map +1 -1
  5. package/dist/providers/provider-factory.d.ts +4 -0
  6. package/dist/providers/provider-factory.d.ts.map +1 -1
  7. package/dist/providers/provider-factory.js +15 -0
  8. package/dist/providers/provider-factory.js.map +1 -1
  9. package/dist/providers/provider-operation-handler.d.ts +22 -0
  10. package/dist/providers/provider-operation-handler.d.ts.map +1 -1
  11. package/dist/providers/provider-operation-handler.js +74 -2
  12. package/dist/providers/provider-operation-handler.js.map +1 -1
  13. package/dist/server.d.ts.map +1 -1
  14. package/dist/server.js +18 -2
  15. package/dist/server.js.map +1 -1
  16. package/dist/tools/git-analytics.d.ts.map +1 -1
  17. package/dist/tools/git-analytics.js.map +1 -1
  18. package/dist/tools/git-branches.d.ts.map +1 -1
  19. package/dist/tools/git-branches.js +9 -2
  20. package/dist/tools/git-branches.js.map +1 -1
  21. package/dist/tools/git-config.d.ts.map +1 -1
  22. package/dist/tools/git-config.js.map +1 -1
  23. package/dist/tools/git-files.d.ts.map +1 -1
  24. package/dist/tools/git-files.js +9 -2
  25. package/dist/tools/git-files.js.map +1 -1
  26. package/dist/tools/git-issues.d.ts.map +1 -1
  27. package/dist/tools/git-issues.js +9 -2
  28. package/dist/tools/git-issues.js.map +1 -1
  29. package/dist/tools/git-monitor.d.ts.map +1 -1
  30. package/dist/tools/git-monitor.js.map +1 -1
  31. package/dist/tools/git-packages.d.ts.map +1 -1
  32. package/dist/tools/git-packages.js +9 -2
  33. package/dist/tools/git-packages.js.map +1 -1
  34. package/dist/tools/git-pulls.d.ts.map +1 -1
  35. package/dist/tools/git-pulls.js +9 -2
  36. package/dist/tools/git-pulls.js.map +1 -1
  37. package/dist/tools/git-release.d.ts.map +1 -1
  38. package/dist/tools/git-release.js +9 -2
  39. package/dist/tools/git-release.js.map +1 -1
  40. package/dist/tools/git-remote.d.ts.map +1 -1
  41. package/dist/tools/git-remote.js.map +1 -1
  42. package/dist/tools/git-reset.d.ts.map +1 -1
  43. package/dist/tools/git-reset.js.map +1 -1
  44. package/dist/tools/git-stash.d.ts.map +1 -1
  45. package/dist/tools/git-stash.js.map +1 -1
  46. package/dist/tools/git-sync.d.ts.map +1 -1
  47. package/dist/tools/git-sync.js.map +1 -1
  48. package/dist/tools/git-tags.d.ts.map +1 -1
  49. package/dist/tools/git-tags.js +9 -2
  50. package/dist/tools/git-tags.js.map +1 -1
  51. package/dist/tools/git-update.d.ts.map +1 -1
  52. package/dist/tools/git-update.js.map +1 -1
  53. package/dist/tools/git-workflow.d.ts.map +1 -1
  54. package/dist/tools/git-workflow.js +9 -2
  55. package/dist/tools/git-workflow.js.map +1 -1
  56. package/dist/utils/data-merger.d.ts +49 -0
  57. package/dist/utils/data-merger.d.ts.map +1 -0
  58. package/dist/utils/data-merger.js +233 -0
  59. package/dist/utils/data-merger.js.map +1 -0
  60. package/dist/utils/repository-sync.d.ts +65 -0
  61. package/dist/utils/repository-sync.d.ts.map +1 -0
  62. package/dist/utils/repository-sync.js +322 -0
  63. package/dist/utils/repository-sync.js.map +1 -0
  64. package/package.json +4 -2
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Data Merger
3
+ *
4
+ * Handles intelligent merging of data from multiple providers for read operations.
5
+ * Removes duplicates, combines unique fields, and maintains data integrity.
6
+ */
7
+ import { ProviderResult } from '../providers/types.js';
8
+ export declare class DataMerger {
9
+ /**
10
+ * Merges list operation results from multiple providers
11
+ * Removes duplicates based on name/id fields and combines arrays
12
+ */
13
+ static mergeListResults(results: ProviderResult[]): any[];
14
+ /**
15
+ * Merges get operation results from multiple providers
16
+ * Combines unique fields from different providers into a single object
17
+ */
18
+ static mergeGetResults(results: ProviderResult[]): any;
19
+ /**
20
+ * Merges search operation results from multiple providers
21
+ * Combines search results, removes duplicates, and ranks by relevance
22
+ */
23
+ static mergeSearchResults(results: ProviderResult[]): any[];
24
+ /**
25
+ * Generates a unique key for an item based on common identifier fields
26
+ */
27
+ private static getItemKey;
28
+ /**
29
+ * Merges two objects, preserving unique fields from each provider
30
+ */
31
+ private static mergeObjects;
32
+ /**
33
+ * Calculates relevance score for search results
34
+ */
35
+ private static calculateRelevance;
36
+ /**
37
+ * Sorts items by date field (updated_at, created_at, etc.)
38
+ */
39
+ private static sortItemsByDate;
40
+ /**
41
+ * Compares two items by date fields
42
+ */
43
+ private static compareByDate;
44
+ /**
45
+ * Removes duplicate items from an array based on a field
46
+ */
47
+ static removeDuplicates(items: any[], field: string): any[];
48
+ }
49
+ //# sourceMappingURL=data-merger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-merger.d.ts","sourceRoot":"","sources":["../../src/utils/data-merger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,qBAAa,UAAU;IACrB;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,GAAG,EAAE;IAkCzD;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,GAAG;IAiCtD;;;OAGG;IACH,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,GAAG,EAAE;IAuD3D;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IAsBzB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAmB3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAyBjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAI9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAe5B;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE;CAW5D"}
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+ /**
3
+ * Data Merger
4
+ *
5
+ * Handles intelligent merging of data from multiple providers for read operations.
6
+ * Removes duplicates, combines unique fields, and maintains data integrity.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.DataMerger = void 0;
10
+ class DataMerger {
11
+ /**
12
+ * Merges list operation results from multiple providers
13
+ * Removes duplicates based on name/id fields and combines arrays
14
+ */
15
+ static mergeListResults(results) {
16
+ const allItems = [];
17
+ const seen = new Set();
18
+ // Collect all items from successful results
19
+ for (const result of results) {
20
+ if (result.success && result.data) {
21
+ const items = Array.isArray(result.data) ? result.data : [result.data];
22
+ for (const item of items) {
23
+ const key = this.getItemKey(item);
24
+ if (!seen.has(key)) {
25
+ seen.add(key);
26
+ // Add provider information to each item
27
+ allItems.push({
28
+ ...item,
29
+ _providers: [result.provider]
30
+ });
31
+ }
32
+ else {
33
+ // Item already exists, add provider to existing item
34
+ const existingItem = allItems.find(i => this.getItemKey(i) === key);
35
+ if (existingItem && !existingItem._providers.includes(result.provider)) {
36
+ existingItem._providers.push(result.provider);
37
+ }
38
+ }
39
+ }
40
+ }
41
+ }
42
+ // Sort by updated_at or created_at if available
43
+ return this.sortItemsByDate(allItems);
44
+ }
45
+ /**
46
+ * Merges get operation results from multiple providers
47
+ * Combines unique fields from different providers into a single object
48
+ */
49
+ static mergeGetResults(results) {
50
+ if (results.length === 0)
51
+ return null;
52
+ if (results.length === 1)
53
+ return results[0].success ? results[0].data : null;
54
+ // Start with the first successful result
55
+ let mergedData = null;
56
+ const providers = [];
57
+ for (const result of results) {
58
+ if (result.success && result.data) {
59
+ providers.push(result.provider);
60
+ if (!mergedData) {
61
+ mergedData = { ...result.data };
62
+ }
63
+ else {
64
+ // Merge unique fields from this provider
65
+ mergedData = this.mergeObjects(mergedData, result.data, result.provider);
66
+ }
67
+ }
68
+ }
69
+ if (mergedData) {
70
+ mergedData._providers = providers;
71
+ mergedData._mergeInfo = {
72
+ totalProviders: results.length,
73
+ successfulProviders: providers.length,
74
+ merged: true
75
+ };
76
+ }
77
+ return mergedData;
78
+ }
79
+ /**
80
+ * Merges search operation results from multiple providers
81
+ * Combines search results, removes duplicates, and ranks by relevance
82
+ */
83
+ static mergeSearchResults(results) {
84
+ const allItems = [];
85
+ const seen = new Set();
86
+ // Collect all items from successful results
87
+ for (const result of results) {
88
+ if (result.success && result.data) {
89
+ const items = Array.isArray(result.data) ? result.data : [result.data];
90
+ for (const item of items) {
91
+ const key = this.getItemKey(item);
92
+ if (!seen.has(key)) {
93
+ seen.add(key);
94
+ // Add provider information and search metadata
95
+ allItems.push({
96
+ ...item,
97
+ _providers: [result.provider],
98
+ _search: {
99
+ provider: result.provider,
100
+ relevance: this.calculateRelevance(item, result.provider)
101
+ }
102
+ });
103
+ }
104
+ else {
105
+ // Item already exists, add provider to existing item
106
+ const existingItem = allItems.find(i => this.getItemKey(i) === key);
107
+ if (existingItem) {
108
+ if (!existingItem._providers.includes(result.provider)) {
109
+ existingItem._providers.push(result.provider);
110
+ }
111
+ // Update search info if this provider has better relevance
112
+ const newRelevance = this.calculateRelevance(item, result.provider);
113
+ if (newRelevance > existingItem._search.relevance) {
114
+ existingItem._search = {
115
+ provider: result.provider,
116
+ relevance: newRelevance
117
+ };
118
+ }
119
+ }
120
+ }
121
+ }
122
+ }
123
+ }
124
+ // Sort by relevance score, then by date
125
+ return allItems.sort((a, b) => {
126
+ // Higher relevance first
127
+ if (b._search.relevance !== a._search.relevance) {
128
+ return b._search.relevance - a._search.relevance;
129
+ }
130
+ // Then by date if available
131
+ return this.compareByDate(a, b);
132
+ });
133
+ }
134
+ /**
135
+ * Generates a unique key for an item based on common identifier fields
136
+ */
137
+ static getItemKey(item) {
138
+ // Try different identifier fields in order of preference
139
+ const possibleKeys = [
140
+ item.id,
141
+ item.name,
142
+ item.full_name,
143
+ item.title,
144
+ `${item.owner?.login || item.owner}/${item.name || item.repo}`,
145
+ item.sha, // for commits
146
+ item.number, // for issues/PRs
147
+ JSON.stringify(item) // fallback
148
+ ];
149
+ for (const key of possibleKeys) {
150
+ if (key && typeof key === 'string') {
151
+ return key;
152
+ }
153
+ }
154
+ return Math.random().toString(36); // ultimate fallback
155
+ }
156
+ /**
157
+ * Merges two objects, preserving unique fields from each provider
158
+ */
159
+ static mergeObjects(baseObj, newObj, provider) {
160
+ const merged = { ...baseObj };
161
+ for (const [key, value] of Object.entries(newObj)) {
162
+ // If field doesn't exist in base, add it
163
+ if (!(key in merged)) {
164
+ merged[key] = value;
165
+ merged[`_${key}_${provider}`] = value; // Also keep provider-specific version
166
+ }
167
+ // If field exists but is different, keep both versions
168
+ else if (merged[key] !== value) {
169
+ merged[`_${key}_${provider}`] = value;
170
+ merged[`_${key}_conflict`] = true;
171
+ }
172
+ }
173
+ return merged;
174
+ }
175
+ /**
176
+ * Calculates relevance score for search results
177
+ */
178
+ static calculateRelevance(item, provider) {
179
+ let score = 0;
180
+ // Base score by provider (GitHub slightly preferred)
181
+ if (provider === 'github') {
182
+ score += 1;
183
+ }
184
+ // Score by item type
185
+ if (item.stargazers_count !== undefined) {
186
+ score += Math.min(item.stargazers_count / 100, 10); // Max 10 points
187
+ }
188
+ if (item.forks_count !== undefined) {
189
+ score += Math.min(item.forks_count / 50, 5); // Max 5 points
190
+ }
191
+ if (item.updated_at) {
192
+ const daysSinceUpdate = (Date.now() - new Date(item.updated_at).getTime()) / (1000 * 60 * 60 * 24);
193
+ score += Math.max(0, 5 - daysSinceUpdate / 30); // Max 5 points, decays over time
194
+ }
195
+ return score;
196
+ }
197
+ /**
198
+ * Sorts items by date field (updated_at, created_at, etc.)
199
+ */
200
+ static sortItemsByDate(items) {
201
+ return items.sort((a, b) => this.compareByDate(a, b));
202
+ }
203
+ /**
204
+ * Compares two items by date fields
205
+ */
206
+ static compareByDate(a, b) {
207
+ const dateFields = ['updated_at', 'created_at', 'pushed_at', 'committed_date'];
208
+ for (const field of dateFields) {
209
+ const dateA = a[field] ? new Date(a[field]).getTime() : 0;
210
+ const dateB = b[field] ? new Date(b[field]).getTime() : 0;
211
+ if (dateA !== dateB) {
212
+ return dateB - dateA; // Newest first
213
+ }
214
+ }
215
+ return 0;
216
+ }
217
+ /**
218
+ * Removes duplicate items from an array based on a field
219
+ */
220
+ static removeDuplicates(items, field) {
221
+ const seen = new Set();
222
+ return items.filter(item => {
223
+ const value = item[field];
224
+ if (seen.has(value)) {
225
+ return false;
226
+ }
227
+ seen.add(value);
228
+ return true;
229
+ });
230
+ }
231
+ }
232
+ exports.DataMerger = DataMerger;
233
+ //# sourceMappingURL=data-merger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-merger.js","sourceRoot":"","sources":["../../src/utils/data-merger.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAIH,MAAa,UAAU;IACrB;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAyB;QAC/C,MAAM,QAAQ,GAAU,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAE/B,4CAA4C;QAC5C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAClC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAEvE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBAElC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;wBACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBACd,wCAAwC;wBACxC,QAAQ,CAAC,IAAI,CAAC;4BACZ,GAAG,IAAI;4BACP,UAAU,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;yBAC9B,CAAC,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACN,qDAAqD;wBACrD,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;wBACpE,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;4BACvE,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;wBAChD,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,gDAAgD;QAChD,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,OAAyB;QAC9C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAE7E,yCAAyC;QACzC,IAAI,UAAU,GAAQ,IAAI,CAAC;QAC3B,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAClC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAEhC,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,UAAU,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;gBAClC,CAAC;qBAAM,CAAC;oBACN,yCAAyC;oBACzC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC3E,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,UAAU,GAAG,SAAS,CAAC;YAClC,UAAU,CAAC,UAAU,GAAG;gBACtB,cAAc,EAAE,OAAO,CAAC,MAAM;gBAC9B,mBAAmB,EAAE,SAAS,CAAC,MAAM;gBACrC,MAAM,EAAE,IAAI;aACb,CAAC;QACJ,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,kBAAkB,CAAC,OAAyB;QACjD,MAAM,QAAQ,GAAU,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAE/B,4CAA4C;QAC5C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAClC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAEvE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBAElC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;wBACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBACd,+CAA+C;wBAC/C,QAAQ,CAAC,IAAI,CAAC;4BACZ,GAAG,IAAI;4BACP,UAAU,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;4BAC7B,OAAO,EAAE;gCACP,QAAQ,EAAE,MAAM,CAAC,QAAQ;gCACzB,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC;6BAC1D;yBACF,CAAC,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACN,qDAAqD;wBACrD,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;wBACpE,IAAI,YAAY,EAAE,CAAC;4BACjB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gCACvD,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;4BAChD,CAAC;4BACD,2DAA2D;4BAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;4BACpE,IAAI,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gCAClD,YAAY,CAAC,OAAO,GAAG;oCACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oCACzB,SAAS,EAAE,YAAY;iCACxB,CAAC;4BACJ,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,wCAAwC;QACxC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC5B,yBAAyB;YACzB,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBAChD,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;YACnD,CAAC;YACD,4BAA4B;YAC5B,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,UAAU,CAAC,IAAS;QACjC,yDAAyD;QACzD,MAAM,YAAY,GAAG;YACnB,IAAI,CAAC,EAAE;YACP,IAAI,CAAC,IAAI;YACT,IAAI,CAAC,SAAS;YACd,IAAI,CAAC,KAAK;YACV,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;YAC9D,IAAI,CAAC,GAAG,EAAE,cAAc;YACxB,IAAI,CAAC,MAAM,EAAE,iBAAiB;YAC9B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW;SACjC,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACnC,OAAO,GAAG,CAAC;YACb,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB;IACzD,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,YAAY,CAAC,OAAY,EAAE,MAAW,EAAE,QAAgB;QACrE,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAE9B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,yCAAyC;YACzC,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC;gBACrB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACpB,MAAM,CAAC,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,sCAAsC;YAC/E,CAAC;YACD,uDAAuD;iBAClD,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;gBAC/B,MAAM,CAAC,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC;gBACtC,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC;YACpC,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,kBAAkB,CAAC,IAAS,EAAE,QAAgB;QAC3D,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,qDAAqD;QACrD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;QAED,qBAAqB;QACrB,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACxC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB;QACtE,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACnC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe;QAC9D,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YACnG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC,iCAAiC;QACnF,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,eAAe,CAAC,KAAY;QACzC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,aAAa,CAAC,CAAM,EAAE,CAAM;QACzC,MAAM,UAAU,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;QAE/E,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1D,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAE1D,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;gBACpB,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,eAAe;YACvC,CAAC;QACH,CAAC;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAY,EAAE,KAAa;QACjD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpB,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAChB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAzPD,gCAyPC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Repository Synchronizer
3
+ *
4
+ * Handles automatic synchronization of repositories between GitHub and Gitea providers.
5
+ * Ensures repositories exist on both providers and keeps settings in sync.
6
+ */
7
+ import { ProviderConfig } from '../providers/types.js';
8
+ export interface SyncResult {
9
+ success: boolean;
10
+ synchronized: boolean;
11
+ actions: string[];
12
+ errors: string[];
13
+ details?: any;
14
+ }
15
+ export declare class RepositorySynchronizer {
16
+ private githubProvider?;
17
+ private giteaProvider?;
18
+ private gitExecutor;
19
+ constructor(config: ProviderConfig);
20
+ /**
21
+ * Ensures repository exists on both providers, creating if necessary
22
+ */
23
+ ensureRepositoryExists(repoName: string, owner: string): Promise<SyncResult>;
24
+ /**
25
+ * Syncs repository settings (description, visibility, etc.) between providers
26
+ */
27
+ syncRepositorySettings(repoName: string, owner: string): Promise<SyncResult>;
28
+ /**
29
+ * Configures local git remotes for both providers
30
+ */
31
+ syncRemotes(projectPath: string, repoName: string, owner: string): Promise<SyncResult>;
32
+ /**
33
+ * Attempts to recover from operation failures by creating missing resources
34
+ */
35
+ attemptRecovery(operation: string, params: any, failedProvider: string): Promise<boolean>;
36
+ /**
37
+ * Checks if repository exists on specified provider
38
+ */
39
+ private checkRepositoryExists;
40
+ /**
41
+ * Creates repository on specified provider
42
+ */
43
+ private createRepository;
44
+ /**
45
+ * Gets repository information from specified provider
46
+ */
47
+ private getRepositoryInfo;
48
+ /**
49
+ * Gets repository clone URL from specified provider
50
+ */
51
+ private getRepositoryUrl;
52
+ /**
53
+ * Syncs repository settings from source to target
54
+ */
55
+ private syncSettingsFromSource;
56
+ /**
57
+ * Updates repository settings on specified provider
58
+ */
59
+ private updateRepositorySettings;
60
+ /**
61
+ * Check if a remote exists in the repository
62
+ */
63
+ private checkRemoteExists;
64
+ }
65
+ //# sourceMappingURL=repository-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository-sync.d.ts","sourceRoot":"","sources":["../../src/utils/repository-sync.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAKvD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,GAAG,CAAC;CACf;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,WAAW,CAAqB;gBAE5B,MAAM,EAAE,cAAc;IAUlC;;OAEG;IACG,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAkDlF;;OAEG;IACG,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAkClF;;OAEG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAsD5F;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAkB/F;;OAEG;YACW,qBAAqB;IAYnC;;OAEG;YACW,gBAAgB;IAoB9B;;OAEG;YACW,iBAAiB;IAiB/B;;OAEG;YACW,gBAAgB;IAuB9B;;OAEG;YACW,sBAAsB;IA+BpC;;OAEG;YACW,wBAAwB;IAiBtC;;OAEG;YACW,iBAAiB;CAYhC"}