metacoding 1.1.1 → 1.1.3
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/CHANGELOG.md +22 -2
- package/README.md +162 -80
- package/lib/cli.d.ts.map +1 -1
- package/lib/cli.js +4 -18
- package/lib/cli.js.map +1 -1
- package/lib/commands/update.d.ts +12 -1
- package/lib/commands/update.d.ts.map +1 -1
- package/lib/commands/update.js +395 -7
- package/lib/commands/update.js.map +1 -1
- package/lib/services/backup.d.ts +11 -0
- package/lib/services/backup.d.ts.map +1 -0
- package/lib/services/backup.js +127 -0
- package/lib/services/backup.js.map +1 -0
- package/lib/services/conflict-resolution.d.ts +16 -0
- package/lib/services/conflict-resolution.d.ts.map +1 -0
- package/lib/services/conflict-resolution.js +166 -0
- package/lib/services/conflict-resolution.js.map +1 -0
- package/lib/types/index.d.ts +19 -4
- package/lib/types/index.d.ts.map +1 -1
- package/package.json +6 -2
- package/templates/general/copilot-instructions.md +5 -2
- package/templates/general/docs-update.instructions.md +32 -0
- package/lib/commands/validate.d.ts +0 -5
- package/lib/commands/validate.d.ts.map +0 -1
- package/lib/commands/validate.js +0 -20
- package/lib/commands/validate.js.map +0 -1
package/lib/commands/update.js
CHANGED
|
@@ -1,19 +1,407 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
37
|
};
|
|
5
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
39
|
exports.UpdateCommand = void 0;
|
|
7
40
|
const chalk_1 = __importDefault(require("chalk"));
|
|
41
|
+
const ora_1 = __importDefault(require("ora"));
|
|
42
|
+
const fs = __importStar(require("fs-extra"));
|
|
43
|
+
const path = __importStar(require("path"));
|
|
44
|
+
const template_manager_1 = require("../services/template-manager");
|
|
45
|
+
const backup_1 = require("../services/backup");
|
|
46
|
+
const conflict_resolution_1 = require("../services/conflict-resolution");
|
|
47
|
+
const vscode_1 = require("../services/vscode");
|
|
48
|
+
const project_detector_1 = require("../services/project-detector");
|
|
8
49
|
class UpdateCommand {
|
|
9
|
-
|
|
50
|
+
constructor() {
|
|
51
|
+
this.templateManager = new template_manager_1.TemplateManager();
|
|
52
|
+
this.backupService = new backup_1.BackupService();
|
|
53
|
+
this.conflictService = new conflict_resolution_1.ConflictResolutionService();
|
|
54
|
+
this.vscodeService = new vscode_1.VSCodeService();
|
|
55
|
+
this.projectDetector = new project_detector_1.ProjectDetector();
|
|
56
|
+
}
|
|
57
|
+
async execute(options) {
|
|
58
|
+
if (options.dryRun) {
|
|
59
|
+
return this.validateSetup(options);
|
|
60
|
+
}
|
|
10
61
|
console.log(chalk_1.default.cyan('🔄 Updating metacoding setup...\n'));
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
62
|
+
try {
|
|
63
|
+
const spinner = (0, ora_1.default)('Detecting current template...').start();
|
|
64
|
+
const currentTemplate = await this.detectCurrentTemplate(options.template);
|
|
65
|
+
spinner.succeed(`Current template: ${currentTemplate}`);
|
|
66
|
+
if (options.backup !== false) {
|
|
67
|
+
const backupSpinner = (0, ora_1.default)('Creating backup...').start();
|
|
68
|
+
const backupResult = await this.backupService.createBackup();
|
|
69
|
+
backupSpinner.succeed(`Backup created at: ${backupResult.backupPath}`);
|
|
70
|
+
}
|
|
71
|
+
const templateSpinner = (0, ora_1.default)('Loading template files...').start();
|
|
72
|
+
const projectConfig = await this.getProjectConfig(currentTemplate);
|
|
73
|
+
const template = await this.templateManager.getTemplate(currentTemplate, projectConfig);
|
|
74
|
+
const templateFiles = await this.templateManager.processTemplate(template, projectConfig);
|
|
75
|
+
templateSpinner.succeed(`Loaded ${templateFiles.length} template files`);
|
|
76
|
+
const existingFiles = await this.getExistingMetacodingFiles();
|
|
77
|
+
const conflictSpinner = (0, ora_1.default)('Checking for conflicts...').start();
|
|
78
|
+
const conflicts = await this.conflictService.detectConflicts(templateFiles.map((f) => ({ path: f.path, content: f.content })), existingFiles);
|
|
79
|
+
if (conflicts.length > 0) {
|
|
80
|
+
conflictSpinner.warn(`Found ${conflicts.length} conflicts`);
|
|
81
|
+
if (!options.force) {
|
|
82
|
+
const resolutions = await this.conflictService.getConflictResolution(conflicts);
|
|
83
|
+
const { preservedFiles } = await this.conflictService.applyResolutions(conflicts, resolutions);
|
|
84
|
+
if (preservedFiles.length > 0) {
|
|
85
|
+
console.log(chalk_1.default.yellow(`💾 Preserved ${preservedFiles.length} user files with user. prefix`));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
for (const conflict of conflicts) {
|
|
90
|
+
await fs.writeFile(conflict.filePath, conflict.templateContent);
|
|
91
|
+
}
|
|
92
|
+
console.log(chalk_1.default.yellow(`⚠️ Force mode: Replaced ${conflicts.length} conflicted files`));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
conflictSpinner.succeed('No conflicts detected');
|
|
97
|
+
}
|
|
98
|
+
const updateSpinner = (0, ora_1.default)('Updating template files...').start();
|
|
99
|
+
let filesUpdated = 0;
|
|
100
|
+
for (const file of templateFiles) {
|
|
101
|
+
const isConflicted = conflicts.some((c) => c.filePath === file.path);
|
|
102
|
+
if (!isConflicted) {
|
|
103
|
+
await fs.ensureDir(path.dirname(file.path));
|
|
104
|
+
await fs.writeFile(file.path, file.content);
|
|
105
|
+
filesUpdated++;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
updateSpinner.succeed(`Updated ${filesUpdated} files`);
|
|
109
|
+
const vscodeSpinner = (0, ora_1.default)('Updating VS Code settings...').start();
|
|
110
|
+
await this.vscodeService.updateSettings(template.vscodeSettings || {});
|
|
111
|
+
vscodeSpinner.succeed('VS Code settings updated');
|
|
112
|
+
await this.backupService.cleanupOldBackups();
|
|
113
|
+
console.log(chalk_1.default.green.bold('\n✅ metacoding update complete!\n'));
|
|
114
|
+
this.displayUpdateSummary({
|
|
115
|
+
template: currentTemplate,
|
|
116
|
+
filesUpdated,
|
|
117
|
+
conflictsResolved: conflicts.length,
|
|
118
|
+
backupCreated: options.backup !== false,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
123
|
+
console.error(chalk_1.default.red('\n❌ Update failed:'), errorMessage);
|
|
124
|
+
if (process.env.NODE_ENV !== 'test') {
|
|
125
|
+
process.exit(1);
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
throw error;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
async detectCurrentTemplate(specifiedTemplate) {
|
|
133
|
+
if (specifiedTemplate) {
|
|
134
|
+
return specifiedTemplate;
|
|
135
|
+
}
|
|
136
|
+
if (!(await fs.pathExists('.github'))) {
|
|
137
|
+
throw new Error('No metacoding setup found. Run "metacoding init" first.');
|
|
138
|
+
}
|
|
139
|
+
const projectInfo = await this.projectDetector.detectProject();
|
|
140
|
+
return projectInfo.projectType || 'general';
|
|
141
|
+
}
|
|
142
|
+
async getProjectConfig(templateType) {
|
|
143
|
+
const projectInfo = await this.projectDetector.detectProject();
|
|
144
|
+
return {
|
|
145
|
+
name: projectInfo.name || path.basename(process.cwd()),
|
|
146
|
+
description: projectInfo.description || 'A guided development project',
|
|
147
|
+
techStack: projectInfo.techStack || [],
|
|
148
|
+
projectType: templateType,
|
|
149
|
+
testFramework: projectInfo.testFramework,
|
|
150
|
+
buildTool: projectInfo.buildTool,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
async getExistingMetacodingFiles() {
|
|
154
|
+
const files = [];
|
|
155
|
+
const githubDir = '.github';
|
|
156
|
+
if (!(await fs.pathExists(githubDir))) {
|
|
157
|
+
return files;
|
|
158
|
+
}
|
|
159
|
+
const mainFile = path.join(githubDir, 'copilot-instructions.md');
|
|
160
|
+
if (await fs.pathExists(mainFile)) {
|
|
161
|
+
files.push(mainFile);
|
|
162
|
+
}
|
|
163
|
+
const instructionsDir = path.join(githubDir, 'instructions');
|
|
164
|
+
if (await fs.pathExists(instructionsDir)) {
|
|
165
|
+
const instructionFiles = await fs.readdir(instructionsDir);
|
|
166
|
+
for (const file of instructionFiles) {
|
|
167
|
+
files.push(path.join(instructionsDir, file));
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return files;
|
|
171
|
+
}
|
|
172
|
+
async validateSetup(options) {
|
|
173
|
+
console.log(chalk_1.default.cyan('🔍 Validating metacoding setup...\n'));
|
|
174
|
+
const validationResults = [];
|
|
175
|
+
let hasErrors = false;
|
|
176
|
+
let hasWarnings = false;
|
|
177
|
+
try {
|
|
178
|
+
const fileSpinner = (0, ora_1.default)('Checking file structure...').start();
|
|
179
|
+
const requiredFiles = [
|
|
180
|
+
'.github/copilot-instructions.md',
|
|
181
|
+
'.github/instructions/code-review.instructions.md',
|
|
182
|
+
'.github/instructions/docs-update.instructions.md',
|
|
183
|
+
'.github/instructions/release.instructions.md',
|
|
184
|
+
'.github/instructions/test-runner.instructions.md',
|
|
185
|
+
];
|
|
186
|
+
let missingFiles = 0;
|
|
187
|
+
for (const file of requiredFiles) {
|
|
188
|
+
if (!(await fs.pathExists(file))) {
|
|
189
|
+
validationResults.push({
|
|
190
|
+
check: `File ${file}`,
|
|
191
|
+
status: 'fail',
|
|
192
|
+
message: 'Missing required file',
|
|
193
|
+
});
|
|
194
|
+
missingFiles++;
|
|
195
|
+
hasErrors = true;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
if (missingFiles === 0) {
|
|
199
|
+
fileSpinner.succeed('File structure complete');
|
|
200
|
+
validationResults.push({
|
|
201
|
+
check: 'File structure',
|
|
202
|
+
status: 'pass',
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
fileSpinner.fail(`Missing ${missingFiles} required files`);
|
|
207
|
+
}
|
|
208
|
+
const vscodeSpinner = (0, ora_1.default)('Checking VS Code configuration...').start();
|
|
209
|
+
try {
|
|
210
|
+
const vscodeSettingsPath = '.vscode/settings.json';
|
|
211
|
+
if (await fs.pathExists(vscodeSettingsPath)) {
|
|
212
|
+
const settings = await fs.readJson(vscodeSettingsPath);
|
|
213
|
+
const requiredSettings = ['github.copilot.chat.promptFiles'];
|
|
214
|
+
let missingSettings = 0;
|
|
215
|
+
for (const setting of requiredSettings) {
|
|
216
|
+
if (!settings[setting]) {
|
|
217
|
+
validationResults.push({
|
|
218
|
+
check: `VS Code setting '${setting}'`,
|
|
219
|
+
status: options.strict ? 'fail' : 'warn',
|
|
220
|
+
message: 'Not configured',
|
|
221
|
+
});
|
|
222
|
+
missingSettings++;
|
|
223
|
+
if (options.strict) {
|
|
224
|
+
hasErrors = true;
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
hasWarnings = true;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
if (missingSettings === 0) {
|
|
232
|
+
vscodeSpinner.succeed('VS Code configuration valid');
|
|
233
|
+
validationResults.push({
|
|
234
|
+
check: 'VS Code configuration',
|
|
235
|
+
status: 'pass',
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
else if (options.strict) {
|
|
239
|
+
vscodeSpinner.fail(`Missing ${missingSettings} required settings`);
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
vscodeSpinner.warn(`Missing ${missingSettings} recommended settings`);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
vscodeSpinner.warn('VS Code settings file not found');
|
|
247
|
+
validationResults.push({
|
|
248
|
+
check: 'VS Code settings file',
|
|
249
|
+
status: 'warn',
|
|
250
|
+
message: 'File not found',
|
|
251
|
+
});
|
|
252
|
+
hasWarnings = true;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
catch {
|
|
256
|
+
vscodeSpinner.fail('Error reading VS Code settings');
|
|
257
|
+
validationResults.push({
|
|
258
|
+
check: 'VS Code configuration',
|
|
259
|
+
status: 'fail',
|
|
260
|
+
message: 'Error reading settings file',
|
|
261
|
+
});
|
|
262
|
+
hasErrors = true;
|
|
263
|
+
}
|
|
264
|
+
const gitSpinner = (0, ora_1.default)('Checking Git repository...').start();
|
|
265
|
+
if (await fs.pathExists('.git')) {
|
|
266
|
+
gitSpinner.succeed('Git repository configured');
|
|
267
|
+
validationResults.push({
|
|
268
|
+
check: 'Git repository',
|
|
269
|
+
status: 'pass',
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
const message = 'No Git repository found';
|
|
274
|
+
if (options.strict) {
|
|
275
|
+
gitSpinner.fail(message);
|
|
276
|
+
validationResults.push({
|
|
277
|
+
check: 'Git repository',
|
|
278
|
+
status: 'fail',
|
|
279
|
+
message,
|
|
280
|
+
});
|
|
281
|
+
hasErrors = true;
|
|
282
|
+
}
|
|
283
|
+
else {
|
|
284
|
+
gitSpinner.warn(message);
|
|
285
|
+
validationResults.push({
|
|
286
|
+
check: 'Git repository',
|
|
287
|
+
status: 'warn',
|
|
288
|
+
message,
|
|
289
|
+
});
|
|
290
|
+
hasWarnings = true;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
const templateSpinner = (0, ora_1.default)('Checking template integrity...').start();
|
|
294
|
+
try {
|
|
295
|
+
await this.detectCurrentTemplate(options.template);
|
|
296
|
+
if (await fs.pathExists('.github/copilot-instructions.md')) {
|
|
297
|
+
const content = await fs.readFile('.github/copilot-instructions.md', 'utf-8');
|
|
298
|
+
const hasPlaceholders = content.includes('{{') && content.includes('}}');
|
|
299
|
+
if (hasPlaceholders) {
|
|
300
|
+
templateSpinner.fail('Template variables not substituted');
|
|
301
|
+
validationResults.push({
|
|
302
|
+
check: 'Template integrity',
|
|
303
|
+
status: 'fail',
|
|
304
|
+
message: 'Unprocessed template variables found',
|
|
305
|
+
});
|
|
306
|
+
hasErrors = true;
|
|
307
|
+
}
|
|
308
|
+
else {
|
|
309
|
+
templateSpinner.succeed('Template integrity verified');
|
|
310
|
+
validationResults.push({
|
|
311
|
+
check: 'Template integrity',
|
|
312
|
+
status: 'pass',
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
templateSpinner.warn('Cannot verify template integrity - main file missing');
|
|
318
|
+
validationResults.push({
|
|
319
|
+
check: 'Template integrity',
|
|
320
|
+
status: 'warn',
|
|
321
|
+
message: 'Main instruction file missing',
|
|
322
|
+
});
|
|
323
|
+
hasWarnings = true;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
catch {
|
|
327
|
+
templateSpinner.fail('Error checking template integrity');
|
|
328
|
+
validationResults.push({
|
|
329
|
+
check: 'Template integrity',
|
|
330
|
+
status: 'fail',
|
|
331
|
+
message: 'Error during template validation',
|
|
332
|
+
});
|
|
333
|
+
hasErrors = true;
|
|
334
|
+
}
|
|
335
|
+
console.log('');
|
|
336
|
+
for (const result of validationResults) {
|
|
337
|
+
const icon = result.status === 'pass'
|
|
338
|
+
? '✅'
|
|
339
|
+
: result.status === 'warn'
|
|
340
|
+
? '⚠️'
|
|
341
|
+
: '❌';
|
|
342
|
+
const message = result.message ? ` - ${result.message}` : '';
|
|
343
|
+
console.log(`${icon} ${result.check}${message}`);
|
|
344
|
+
}
|
|
345
|
+
console.log('');
|
|
346
|
+
const totalChecks = validationResults.length;
|
|
347
|
+
const passedChecks = validationResults.filter((r) => r.status === 'pass').length;
|
|
348
|
+
if (hasErrors) {
|
|
349
|
+
console.log(chalk_1.default.red.bold('❌ Validation failed with errors\n'));
|
|
350
|
+
console.log(chalk_1.default.cyan('Suggestions:'));
|
|
351
|
+
console.log("- Run 'metacoding update' to restore missing files");
|
|
352
|
+
console.log('- Check VS Code settings configuration');
|
|
353
|
+
console.log("- Ensure you're in a Git repository");
|
|
354
|
+
console.log(chalk_1.default.dim(`\nSummary: ${passedChecks}/${totalChecks} checks passed`));
|
|
355
|
+
if (process.env.NODE_ENV !== 'test') {
|
|
356
|
+
process.exit(1);
|
|
357
|
+
}
|
|
358
|
+
else {
|
|
359
|
+
throw new Error('Validation failed');
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
else if (hasWarnings && options.strict) {
|
|
363
|
+
console.log(chalk_1.default.yellow.bold('⚠️ Validation completed with warnings\n'));
|
|
364
|
+
console.log(chalk_1.default.cyan('Suggestions:'));
|
|
365
|
+
console.log('- Configure recommended VS Code settings');
|
|
366
|
+
console.log('- Consider initializing a Git repository');
|
|
367
|
+
console.log(chalk_1.default.dim(`\nSummary: ${passedChecks}/${totalChecks} checks passed`));
|
|
368
|
+
if (process.env.NODE_ENV !== 'test') {
|
|
369
|
+
process.exit(2);
|
|
370
|
+
}
|
|
371
|
+
else {
|
|
372
|
+
throw new Error('Validation completed with warnings');
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
else {
|
|
376
|
+
console.log(chalk_1.default.green.bold('🎉 metacoding setup is valid and ready to use!\n'));
|
|
377
|
+
console.log(chalk_1.default.dim(`Summary: ${passedChecks}/${totalChecks} checks passed`));
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
catch (error) {
|
|
381
|
+
if (error instanceof Error && error.message.includes('Validation')) {
|
|
382
|
+
throw error;
|
|
383
|
+
}
|
|
384
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
385
|
+
console.error(chalk_1.default.red('\n❌ Validation failed:'), errorMessage);
|
|
386
|
+
if (process.env.NODE_ENV !== 'test') {
|
|
387
|
+
process.exit(1);
|
|
388
|
+
}
|
|
389
|
+
else {
|
|
390
|
+
throw error;
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
displayUpdateSummary(summary) {
|
|
395
|
+
console.log(chalk_1.default.cyan('Update Summary:'));
|
|
396
|
+
console.log(` Template: ${summary.template}`);
|
|
397
|
+
console.log(` Files updated: ${summary.filesUpdated}`);
|
|
398
|
+
if (summary.conflictsResolved > 0) {
|
|
399
|
+
console.log(` Conflicts resolved: ${summary.conflictsResolved}`);
|
|
400
|
+
}
|
|
401
|
+
if (summary.backupCreated) {
|
|
402
|
+
console.log(` Backup: Created in .backup/ directory`);
|
|
403
|
+
}
|
|
404
|
+
console.log('\n' + chalk_1.default.dim('Your metacoding setup is now up to date!'));
|
|
17
405
|
}
|
|
18
406
|
}
|
|
19
407
|
exports.UpdateCommand = UpdateCommand;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAM1B,MAAa,aAAa;IACxB,KAAK,CAAC,OAAO,CAAC,QAAuB;QACnC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAG7D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,4CAA4C,CAAC,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACrD,CAAC;CACF;AAZD,sCAYC"}
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BackupResult } from '../types';
|
|
2
|
+
export declare class BackupService {
|
|
3
|
+
private readonly backupBaseDir;
|
|
4
|
+
createBackup(): Promise<BackupResult>;
|
|
5
|
+
private generateTimestamp;
|
|
6
|
+
private listAllFiles;
|
|
7
|
+
getFileHash(filePath: string): Promise<string | null>;
|
|
8
|
+
hasFileChanged(filePath: string, originalContent: string): Promise<boolean>;
|
|
9
|
+
cleanupOldBackups(): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=backup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/services/backup.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAKxC,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAa;IAKrC,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC;IA6B3C,OAAO,CAAC,iBAAiB;YAYX,YAAY;IA2BpB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAYrD,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,OAAO,CAAC;IAqBb,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;CAmBzC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.BackupService = void 0;
|
|
37
|
+
const path = __importStar(require("path"));
|
|
38
|
+
const fs = __importStar(require("fs-extra"));
|
|
39
|
+
const crypto = __importStar(require("crypto"));
|
|
40
|
+
class BackupService {
|
|
41
|
+
constructor() {
|
|
42
|
+
this.backupBaseDir = '.backup';
|
|
43
|
+
}
|
|
44
|
+
async createBackup() {
|
|
45
|
+
const timestamp = this.generateTimestamp();
|
|
46
|
+
const backupPath = path.join(this.backupBaseDir, timestamp);
|
|
47
|
+
const githubDir = '.github';
|
|
48
|
+
await fs.ensureDir(backupPath);
|
|
49
|
+
const filesBackedUp = [];
|
|
50
|
+
if (await fs.pathExists(githubDir)) {
|
|
51
|
+
await fs.copy(githubDir, path.join(backupPath, githubDir));
|
|
52
|
+
const allFiles = await this.listAllFiles(githubDir);
|
|
53
|
+
filesBackedUp.push(...allFiles);
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
backupPath,
|
|
57
|
+
timestamp,
|
|
58
|
+
filesBackedUp,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
generateTimestamp() {
|
|
62
|
+
const now = new Date();
|
|
63
|
+
return now
|
|
64
|
+
.toISOString()
|
|
65
|
+
.replace(/[-:]/g, '')
|
|
66
|
+
.replace(/\..+/, '')
|
|
67
|
+
.replace('T', '_');
|
|
68
|
+
}
|
|
69
|
+
async listAllFiles(dirPath) {
|
|
70
|
+
const files = [];
|
|
71
|
+
if (!(await fs.pathExists(dirPath))) {
|
|
72
|
+
return files;
|
|
73
|
+
}
|
|
74
|
+
const items = await fs.readdir(dirPath);
|
|
75
|
+
for (const item of items) {
|
|
76
|
+
const itemPath = path.join(dirPath, item);
|
|
77
|
+
const stat = await fs.stat(itemPath);
|
|
78
|
+
if (stat.isDirectory()) {
|
|
79
|
+
const subFiles = await this.listAllFiles(itemPath);
|
|
80
|
+
files.push(...subFiles);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
files.push(itemPath);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return files;
|
|
87
|
+
}
|
|
88
|
+
async getFileHash(filePath) {
|
|
89
|
+
if (!(await fs.pathExists(filePath))) {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
const content = await fs.readFile(filePath, 'utf8');
|
|
93
|
+
return crypto.createHash('md5').update(content).digest('hex');
|
|
94
|
+
}
|
|
95
|
+
async hasFileChanged(filePath, originalContent) {
|
|
96
|
+
if (!(await fs.pathExists(filePath))) {
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
const currentContent = await fs.readFile(filePath, 'utf8');
|
|
100
|
+
const currentHash = crypto
|
|
101
|
+
.createHash('md5')
|
|
102
|
+
.update(currentContent)
|
|
103
|
+
.digest('hex');
|
|
104
|
+
const originalHash = crypto
|
|
105
|
+
.createHash('md5')
|
|
106
|
+
.update(originalContent)
|
|
107
|
+
.digest('hex');
|
|
108
|
+
return currentHash !== originalHash;
|
|
109
|
+
}
|
|
110
|
+
async cleanupOldBackups() {
|
|
111
|
+
if (!(await fs.pathExists(this.backupBaseDir))) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const backupDirs = await fs.readdir(this.backupBaseDir);
|
|
115
|
+
const sortedDirs = backupDirs
|
|
116
|
+
.filter((dir) => /^\d{8}_\d{6}$/.test(dir))
|
|
117
|
+
.sort()
|
|
118
|
+
.reverse();
|
|
119
|
+
const dirsToDelete = sortedDirs.slice(5);
|
|
120
|
+
for (const dir of dirsToDelete) {
|
|
121
|
+
const dirPath = path.join(this.backupBaseDir, dir);
|
|
122
|
+
await fs.remove(dirPath);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
exports.BackupService = BackupService;
|
|
127
|
+
//# sourceMappingURL=backup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/services/backup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { UpdateConflict, ConflictResolution } from '../types';
|
|
2
|
+
export declare class ConflictResolutionService {
|
|
3
|
+
private backupService;
|
|
4
|
+
constructor();
|
|
5
|
+
detectConflicts(templateFiles: Array<{
|
|
6
|
+
path: string;
|
|
7
|
+
content: string;
|
|
8
|
+
}>, existingFiles: string[]): Promise<UpdateConflict[]>;
|
|
9
|
+
getConflictResolution(conflicts: UpdateConflict[]): Promise<ConflictResolution[]>;
|
|
10
|
+
private getUserFileName;
|
|
11
|
+
applyResolutions(conflicts: UpdateConflict[], resolutions: ConflictResolution[]): Promise<{
|
|
12
|
+
preservedFiles: string[];
|
|
13
|
+
updatedFiles: string[];
|
|
14
|
+
}>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=conflict-resolution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conflict-resolution.d.ts","sourceRoot":"","sources":["../../src/services/conflict-resolution.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAM9D,qBAAa,yBAAyB;IACpC,OAAO,CAAC,aAAa,CAAgB;;IAS/B,eAAe,CACnB,aAAa,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,EACvD,aAAa,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,cAAc,EAAE,CAAC;IA8BtB,qBAAqB,CACzB,SAAS,EAAE,cAAc,EAAE,GAC1B,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAiFhC,OAAO,CAAC,eAAe;IASjB,gBAAgB,CACpB,SAAS,EAAE,cAAc,EAAE,EAC3B,WAAW,EAAE,kBAAkB,EAAE,GAChC,OAAO,CAAC;QAAE,cAAc,EAAE,MAAM,EAAE,CAAC;QAAC,YAAY,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAuCjE"}
|