@sudocode-ai/cli 0.1.0 → 0.1.2
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/cli/feedback-commands.d.ts.map +1 -0
- package/dist/cli/feedback-commands.js +274 -0
- package/dist/cli/feedback-commands.js.map +1 -0
- package/dist/cli/init-commands.d.ts.map +1 -0
- package/dist/cli/init-commands.js +148 -0
- package/dist/cli/init-commands.js.map +1 -0
- package/dist/cli/issue-commands.d.ts.map +1 -0
- package/dist/cli/issue-commands.js +310 -0
- package/dist/cli/issue-commands.js.map +1 -0
- package/dist/cli/query-commands.d.ts.map +1 -0
- package/dist/cli/query-commands.js +61 -0
- package/dist/cli/query-commands.js.map +1 -0
- package/dist/cli/reference-commands.d.ts.map +1 -0
- package/dist/cli/reference-commands.js +136 -0
- package/dist/cli/reference-commands.js.map +1 -0
- package/dist/cli/relationship-commands.d.ts.map +1 -0
- package/dist/cli/relationship-commands.js +76 -0
- package/dist/cli/relationship-commands.js.map +1 -0
- package/dist/cli/server-commands.d.ts.map +1 -0
- package/dist/cli/server-commands.js +99 -0
- package/dist/cli/server-commands.js.map +1 -0
- package/dist/cli/spec-commands.d.ts.map +1 -0
- package/dist/cli/spec-commands.js +321 -0
- package/dist/cli/spec-commands.js.map +1 -0
- package/dist/cli/status-commands.d.ts.map +1 -0
- package/dist/cli/status-commands.js +131 -0
- package/dist/cli/status-commands.js.map +1 -0
- package/dist/cli/sync-commands.d.ts.map +1 -0
- package/dist/cli/sync-commands.js +416 -0
- package/dist/cli/sync-commands.js.map +1 -0
- package/dist/cli/update-commands.d.ts.map +1 -0
- package/dist/cli/update-commands.js +78 -0
- package/dist/cli/update-commands.js.map +1 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +425 -195
- package/dist/cli.js.map +1 -0
- package/dist/db.d.ts.map +1 -0
- package/dist/db.js +54 -0
- package/dist/db.js.map +1 -0
- package/dist/export.d.ts.map +1 -0
- package/dist/export.js +195 -0
- package/dist/export.js.map +1 -0
- package/dist/filename-generator.d.ts.map +1 -0
- package/dist/filename-generator.js +93 -0
- package/dist/filename-generator.js.map +1 -0
- package/dist/id-generator.d.ts.map +1 -0
- package/dist/id-generator.js +123 -0
- package/dist/id-generator.js.map +1 -0
- package/dist/import.d.ts.map +1 -0
- package/dist/import.js +608 -0
- package/dist/import.js.map +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -189
- package/dist/index.js.map +1 -0
- package/dist/jsonl.d.ts.map +1 -0
- package/dist/jsonl.js +333 -0
- package/dist/jsonl.js.map +1 -0
- package/dist/markdown.d.ts.map +1 -0
- package/dist/markdown.js +357 -0
- package/dist/markdown.js.map +1 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +57 -0
- package/dist/migrations.js.map +1 -0
- package/dist/operations/events.d.ts.map +1 -0
- package/dist/operations/events.js +108 -0
- package/dist/operations/events.js.map +1 -0
- package/dist/operations/feedback-anchors.d.ts.map +1 -0
- package/dist/operations/feedback-anchors.js +444 -0
- package/dist/operations/feedback-anchors.js.map +1 -0
- package/dist/operations/feedback.d.ts.map +1 -0
- package/dist/operations/feedback.js +234 -0
- package/dist/operations/feedback.js.map +1 -0
- package/dist/operations/index.d.ts.map +1 -0
- package/dist/operations/index.js +10 -0
- package/dist/operations/index.js.map +1 -0
- package/dist/operations/issues.d.ts.map +1 -0
- package/dist/operations/issues.js +411 -0
- package/dist/operations/issues.js.map +1 -0
- package/dist/operations/references.d.ts.map +1 -0
- package/dist/operations/references.js +117 -0
- package/dist/operations/references.js.map +1 -0
- package/dist/operations/relationships.d.ts.map +1 -0
- package/dist/operations/relationships.js +236 -0
- package/dist/operations/relationships.js.map +1 -0
- package/dist/operations/specs.d.ts.map +1 -0
- package/dist/operations/specs.js +290 -0
- package/dist/operations/specs.js.map +1 -0
- package/dist/operations/tags.d.ts.map +1 -0
- package/dist/operations/tags.js +127 -0
- package/dist/operations/tags.js.map +1 -0
- package/dist/operations/transactions.d.ts.map +1 -0
- package/dist/operations/transactions.js +111 -0
- package/dist/operations/transactions.js.map +1 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/sync.js +442 -0
- package/dist/sync.js.map +1 -0
- package/dist/test-schema.d.ts.map +1 -0
- package/dist/test-schema.js +46 -0
- package/dist/test-schema.js.map +1 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/dist/update-checker.d.ts.map +1 -0
- package/dist/update-checker.js +151 -0
- package/dist/update-checker.js.map +1 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +23 -0
- package/dist/version.js.map +1 -0
- package/dist/watcher.d.ts.map +1 -0
- package/dist/watcher.js +438 -0
- package/dist/watcher.js.map +1 -0
- package/package.json +4 -7
|
@@ -0,0 +1,416 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI handlers for sync commands
|
|
3
|
+
*/
|
|
4
|
+
import chalk from "chalk";
|
|
5
|
+
import * as fs from "fs";
|
|
6
|
+
import * as path from "path";
|
|
7
|
+
import { exportToJSONL } from "../export.js";
|
|
8
|
+
import { importFromJSONL } from "../import.js";
|
|
9
|
+
import { startWatcher, setupGracefulShutdown } from "../watcher.js";
|
|
10
|
+
import { syncMarkdownToJSONL, syncJSONLToMarkdown } from "../sync.js";
|
|
11
|
+
import { listSpecs } from "../operations/specs.js";
|
|
12
|
+
import { listIssues } from "../operations/issues.js";
|
|
13
|
+
import { generateUniqueFilename, findExistingSpecFile, } from "../filename-generator.js";
|
|
14
|
+
import { isInitialized, performInitialization } from "./init-commands.js";
|
|
15
|
+
export async function handleSync(ctx, options) {
|
|
16
|
+
// Check if sudocode is initialized, auto-initialize if not
|
|
17
|
+
if (!isInitialized(ctx.outputDir)) {
|
|
18
|
+
console.log(chalk.blue("Initializing sudocode..."));
|
|
19
|
+
console.log();
|
|
20
|
+
try {
|
|
21
|
+
await performInitialization({
|
|
22
|
+
specPrefix: "SPEC",
|
|
23
|
+
issuePrefix: "ISSUE",
|
|
24
|
+
dir: ctx.outputDir,
|
|
25
|
+
jsonOutput: ctx.jsonOutput,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
console.error(chalk.red("✗ Auto-initialization failed"));
|
|
30
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
console.log();
|
|
34
|
+
}
|
|
35
|
+
if (options.watch) {
|
|
36
|
+
// Start file watcher
|
|
37
|
+
console.log(chalk.blue("Starting file watcher..."));
|
|
38
|
+
console.log(chalk.gray(` Watching: ${ctx.outputDir}`));
|
|
39
|
+
console.log(chalk.gray(" Press Ctrl+C to stop"));
|
|
40
|
+
const control = startWatcher({
|
|
41
|
+
db: ctx.db,
|
|
42
|
+
baseDir: ctx.outputDir,
|
|
43
|
+
debounceDelay: 2000,
|
|
44
|
+
syncJSONLToMarkdown: true,
|
|
45
|
+
onLog: (message) => {
|
|
46
|
+
if (!ctx.jsonOutput) {
|
|
47
|
+
console.log(chalk.gray(message));
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
onError: (error) => {
|
|
51
|
+
console.error(chalk.red(`[watch] Error: ${error.message}`));
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
// Setup graceful shutdown
|
|
55
|
+
setupGracefulShutdown(control);
|
|
56
|
+
// Keep process alive
|
|
57
|
+
await new Promise(() => {
|
|
58
|
+
// This promise never resolves - the process will exit via SIGINT/SIGTERM
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
else if (options.fromMarkdown) {
|
|
62
|
+
// Manual sync from markdown to database
|
|
63
|
+
await handleSyncFromMarkdown(ctx);
|
|
64
|
+
}
|
|
65
|
+
else if (options.toMarkdown) {
|
|
66
|
+
// Manual sync from database to markdown
|
|
67
|
+
await handleSyncToMarkdown(ctx);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
// Auto-detect sync direction based on file modification times
|
|
71
|
+
// TODO: Independently handle sync direction from specs and issues.
|
|
72
|
+
const { direction, reason } = determineSyncDirection(ctx);
|
|
73
|
+
console.log(chalk.blue("Detecting sync direction..."));
|
|
74
|
+
console.log(chalk.gray(` ${reason}`));
|
|
75
|
+
console.log();
|
|
76
|
+
if (direction === "no-sync") {
|
|
77
|
+
console.log(chalk.green("✓ Everything is in sync"));
|
|
78
|
+
console.log(chalk.gray(" Use --from-markdown or --to-markdown to force a specific direction"));
|
|
79
|
+
}
|
|
80
|
+
else if (direction === "from-markdown") {
|
|
81
|
+
console.log(chalk.blue("→ Syncing FROM markdown TO database (markdown is newer)"));
|
|
82
|
+
console.log();
|
|
83
|
+
await handleSyncFromMarkdown(ctx);
|
|
84
|
+
}
|
|
85
|
+
else if (direction === "to-markdown") {
|
|
86
|
+
console.log(chalk.blue("→ Syncing FROM database TO markdown (database is newer)"));
|
|
87
|
+
console.log();
|
|
88
|
+
await handleSyncToMarkdown(ctx);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
export async function handleExport(ctx, options) {
|
|
93
|
+
try {
|
|
94
|
+
await exportToJSONL(ctx.db, { outputDir: options.output });
|
|
95
|
+
if (ctx.jsonOutput) {
|
|
96
|
+
console.log(JSON.stringify({ success: true, outputDir: options.output }, null, 2));
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
console.log(chalk.green("✓ Exported to JSONL"));
|
|
100
|
+
console.log(chalk.gray(` Output: ${options.output}`));
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
console.error(chalk.red("✗ Failed to export"));
|
|
105
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
106
|
+
process.exit(1);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
export async function handleImport(ctx, options) {
|
|
110
|
+
try {
|
|
111
|
+
await importFromJSONL(ctx.db, { inputDir: options.input });
|
|
112
|
+
if (ctx.jsonOutput) {
|
|
113
|
+
console.log(JSON.stringify({ success: true, inputDir: options.input }, null, 2));
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
console.log(chalk.green("✓ Imported from JSONL"));
|
|
117
|
+
console.log(chalk.gray(` Input: ${options.input}`));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
console.error(chalk.red("✗ Failed to import"));
|
|
122
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
123
|
+
process.exit(1);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Sync from markdown files to database
|
|
128
|
+
*/
|
|
129
|
+
async function handleSyncFromMarkdown(ctx) {
|
|
130
|
+
console.log(chalk.blue("Syncing from markdown to database..."));
|
|
131
|
+
const specsDir = path.join(ctx.outputDir, "specs");
|
|
132
|
+
const issuesDir = path.join(ctx.outputDir, "issues");
|
|
133
|
+
let syncedCount = 0;
|
|
134
|
+
let errorCount = 0;
|
|
135
|
+
const syncOptions = {
|
|
136
|
+
outputDir: ctx.outputDir,
|
|
137
|
+
autoExport: false,
|
|
138
|
+
autoInitialize: true,
|
|
139
|
+
writeBackFrontmatter: true,
|
|
140
|
+
};
|
|
141
|
+
// Sync specs
|
|
142
|
+
if (fs.existsSync(specsDir)) {
|
|
143
|
+
const specFiles = findMarkdownFiles(specsDir);
|
|
144
|
+
console.log(chalk.gray(` Found ${specFiles.length} spec files`));
|
|
145
|
+
for (const file of specFiles) {
|
|
146
|
+
const result = await syncMarkdownToJSONL(ctx.db, file, syncOptions);
|
|
147
|
+
if (result.success) {
|
|
148
|
+
syncedCount++;
|
|
149
|
+
console.log(chalk.gray(` ✓ ${result.action} ${result.entityType} ${result.entityId}`));
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
errorCount++;
|
|
153
|
+
console.log(chalk.red(` ✗ Failed to sync ${path.basename(file)}: ${result.error}`));
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// Sync issues
|
|
158
|
+
if (fs.existsSync(issuesDir)) {
|
|
159
|
+
const issueFiles = findMarkdownFiles(issuesDir);
|
|
160
|
+
console.log(chalk.gray(` Found ${issueFiles.length} issue files`));
|
|
161
|
+
for (const file of issueFiles) {
|
|
162
|
+
const result = await syncMarkdownToJSONL(ctx.db, file, syncOptions);
|
|
163
|
+
if (result.success) {
|
|
164
|
+
syncedCount++;
|
|
165
|
+
console.log(chalk.gray(` ✓ ${result.action} ${result.entityType} ${result.entityId}`));
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
errorCount++;
|
|
169
|
+
console.log(chalk.red(` ✗ Failed to sync ${path.basename(file)}: ${result.error}`));
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// Export to JSONL
|
|
174
|
+
if (syncedCount > 0) {
|
|
175
|
+
await exportToJSONL(ctx.db, { outputDir: ctx.outputDir });
|
|
176
|
+
}
|
|
177
|
+
console.log();
|
|
178
|
+
console.log(chalk.green(`✓ Synced ${syncedCount} files to database`));
|
|
179
|
+
if (errorCount > 0) {
|
|
180
|
+
console.log(chalk.yellow(` ${errorCount} errors`));
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Sync from database to markdown files
|
|
185
|
+
*/
|
|
186
|
+
async function handleSyncToMarkdown(ctx) {
|
|
187
|
+
console.log(chalk.blue("Syncing from database to markdown..."));
|
|
188
|
+
const specsDir = path.join(ctx.outputDir, "specs");
|
|
189
|
+
const issuesDir = path.join(ctx.outputDir, "issues");
|
|
190
|
+
// Ensure directories exist
|
|
191
|
+
fs.mkdirSync(specsDir, { recursive: true });
|
|
192
|
+
fs.mkdirSync(issuesDir, { recursive: true });
|
|
193
|
+
let syncedCount = 0;
|
|
194
|
+
let errorCount = 0;
|
|
195
|
+
// Sync all specs
|
|
196
|
+
const specs = listSpecs(ctx.db, {});
|
|
197
|
+
console.log(chalk.gray(` Found ${specs.length} specs in database`));
|
|
198
|
+
for (const spec of specs) {
|
|
199
|
+
let filePath = path.join(ctx.outputDir, spec.file_path);
|
|
200
|
+
if (!fs.existsSync(filePath)) {
|
|
201
|
+
const foundFile = findExistingSpecFile(spec.id, specsDir, spec.title);
|
|
202
|
+
if (foundFile) {
|
|
203
|
+
filePath = foundFile;
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
const fileName = generateUniqueFilename(spec.title, spec.id, specsDir);
|
|
207
|
+
filePath = path.join(specsDir, fileName);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
const result = await syncJSONLToMarkdown(ctx.db, spec.id, "spec", filePath);
|
|
211
|
+
if (result.success) {
|
|
212
|
+
syncedCount++;
|
|
213
|
+
console.log(chalk.gray(` ✓ ${result.action} spec ${spec.id} → ${path.basename(filePath)}`));
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
errorCount++;
|
|
217
|
+
console.log(chalk.red(` ✗ Failed to sync spec ${spec.id}: ${result.error}`));
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
// Sync all issues
|
|
221
|
+
const issues = listIssues(ctx.db, {});
|
|
222
|
+
console.log(chalk.gray(` Found ${issues.length} issues in database`));
|
|
223
|
+
for (const issue of issues) {
|
|
224
|
+
const fileName = `${issue.id}.md`;
|
|
225
|
+
const filePath = path.join(issuesDir, fileName);
|
|
226
|
+
const result = await syncJSONLToMarkdown(ctx.db, issue.id, "issue", filePath);
|
|
227
|
+
if (result.success) {
|
|
228
|
+
syncedCount++;
|
|
229
|
+
console.log(chalk.gray(` ✓ ${result.action} issue ${issue.id}`));
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
errorCount++;
|
|
233
|
+
console.log(chalk.red(` ✗ Failed to sync issue ${issue.id}: ${result.error}`));
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
console.log();
|
|
237
|
+
console.log(chalk.green(`✓ Synced ${syncedCount} entities to markdown`));
|
|
238
|
+
if (errorCount > 0) {
|
|
239
|
+
console.log(chalk.yellow(` ${errorCount} errors`));
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Helper: Find all markdown files in a directory recursively
|
|
244
|
+
*/
|
|
245
|
+
function findMarkdownFiles(dir) {
|
|
246
|
+
const results = [];
|
|
247
|
+
function scan(currentDir) {
|
|
248
|
+
const entries = fs.readdirSync(currentDir, { withFileTypes: true });
|
|
249
|
+
for (const entry of entries) {
|
|
250
|
+
const fullPath = path.join(currentDir, entry.name);
|
|
251
|
+
if (entry.isDirectory()) {
|
|
252
|
+
scan(fullPath);
|
|
253
|
+
}
|
|
254
|
+
else if (entry.isFile() && entry.name.endsWith(".md")) {
|
|
255
|
+
results.push(fullPath);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
scan(dir);
|
|
260
|
+
return results;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Get the most recent modification time from a list of files
|
|
264
|
+
* Returns null if no files exist
|
|
265
|
+
*/
|
|
266
|
+
function getMostRecentModTime(files) {
|
|
267
|
+
if (files.length === 0)
|
|
268
|
+
return null;
|
|
269
|
+
let mostRecent = null;
|
|
270
|
+
for (const file of files) {
|
|
271
|
+
try {
|
|
272
|
+
const stats = fs.statSync(file);
|
|
273
|
+
const mtime = stats.mtime;
|
|
274
|
+
if (!mostRecent || mtime > mostRecent) {
|
|
275
|
+
mostRecent = mtime;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
catch (error) {
|
|
279
|
+
// Ignore files that don't exist or can't be accessed
|
|
280
|
+
continue;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
return mostRecent;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Get modification time of a file
|
|
287
|
+
* Returns null if file doesn't exist
|
|
288
|
+
*/
|
|
289
|
+
function getFileModTime(filePath) {
|
|
290
|
+
try {
|
|
291
|
+
const stats = fs.statSync(filePath);
|
|
292
|
+
return stats.mtime;
|
|
293
|
+
}
|
|
294
|
+
catch (error) {
|
|
295
|
+
return null;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Determine sync direction based on file modification times
|
|
300
|
+
*/
|
|
301
|
+
function determineSyncDirection(ctx) {
|
|
302
|
+
const specsDir = path.join(ctx.outputDir, "specs");
|
|
303
|
+
const issuesDir = path.join(ctx.outputDir, "issues");
|
|
304
|
+
const specsJsonl = path.join(ctx.outputDir, "specs.jsonl");
|
|
305
|
+
const issuesJsonl = path.join(ctx.outputDir, "issues.jsonl");
|
|
306
|
+
// Get JSONL modification times
|
|
307
|
+
const specsJsonlTime = getFileModTime(specsJsonl);
|
|
308
|
+
const issuesJsonlTime = getFileModTime(issuesJsonl);
|
|
309
|
+
// Get markdown file times
|
|
310
|
+
let specMarkdownFiles = [];
|
|
311
|
+
let issueMarkdownFiles = [];
|
|
312
|
+
if (fs.existsSync(specsDir)) {
|
|
313
|
+
specMarkdownFiles = findMarkdownFiles(specsDir);
|
|
314
|
+
}
|
|
315
|
+
if (fs.existsSync(issuesDir)) {
|
|
316
|
+
issueMarkdownFiles = findMarkdownFiles(issuesDir);
|
|
317
|
+
}
|
|
318
|
+
const specsMarkdownTime = getMostRecentModTime(specMarkdownFiles);
|
|
319
|
+
const issuesMarkdownTime = getMostRecentModTime(issueMarkdownFiles);
|
|
320
|
+
// Determine sync direction
|
|
321
|
+
let syncToMarkdown = false;
|
|
322
|
+
let syncFromMarkdown = false;
|
|
323
|
+
const reasons = [];
|
|
324
|
+
// Check specs
|
|
325
|
+
if (!specsJsonlTime && !specsMarkdownTime) {
|
|
326
|
+
// Neither exists - no sync needed
|
|
327
|
+
reasons.push("No spec files or JSONL found");
|
|
328
|
+
}
|
|
329
|
+
else if (!specsJsonlTime && specsMarkdownTime) {
|
|
330
|
+
// Only markdown exists - sync from markdown
|
|
331
|
+
syncFromMarkdown = true;
|
|
332
|
+
reasons.push("Specs JSONL missing, markdown exists");
|
|
333
|
+
}
|
|
334
|
+
else if (specsJsonlTime && !specsMarkdownTime) {
|
|
335
|
+
// Only JSONL exists - sync to markdown
|
|
336
|
+
syncToMarkdown = true;
|
|
337
|
+
reasons.push("Spec markdown files missing, JSONL exists");
|
|
338
|
+
}
|
|
339
|
+
else if (specsJsonlTime && specsMarkdownTime) {
|
|
340
|
+
// Both exist - compare times
|
|
341
|
+
if (specsMarkdownTime > specsJsonlTime) {
|
|
342
|
+
syncFromMarkdown = true;
|
|
343
|
+
reasons.push(`Spec markdown files are newer (${formatTime(specsMarkdownTime)} > ${formatTime(specsJsonlTime)})`);
|
|
344
|
+
}
|
|
345
|
+
else if (specsJsonlTime > specsMarkdownTime) {
|
|
346
|
+
syncToMarkdown = true;
|
|
347
|
+
reasons.push(`Specs JSONL is newer (${formatTime(specsJsonlTime)} > ${formatTime(specsMarkdownTime)})`);
|
|
348
|
+
}
|
|
349
|
+
else {
|
|
350
|
+
reasons.push("Specs are in sync");
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
// Check issues
|
|
354
|
+
if (!issuesJsonlTime && !issuesMarkdownTime) {
|
|
355
|
+
// Neither exists - no sync needed
|
|
356
|
+
reasons.push("No issue files or JSONL found");
|
|
357
|
+
}
|
|
358
|
+
else if (!issuesJsonlTime && issuesMarkdownTime) {
|
|
359
|
+
// Only markdown exists - sync from markdown
|
|
360
|
+
syncFromMarkdown = true;
|
|
361
|
+
reasons.push("Issues JSONL missing, markdown exists");
|
|
362
|
+
}
|
|
363
|
+
else if (issuesJsonlTime && !issuesMarkdownTime) {
|
|
364
|
+
// Only JSONL exists - sync to markdown
|
|
365
|
+
syncToMarkdown = true;
|
|
366
|
+
reasons.push("Issue markdown files missing, JSONL exists");
|
|
367
|
+
}
|
|
368
|
+
else if (issuesJsonlTime && issuesMarkdownTime) {
|
|
369
|
+
// Both exist - compare times
|
|
370
|
+
if (issuesMarkdownTime > issuesJsonlTime) {
|
|
371
|
+
syncFromMarkdown = true;
|
|
372
|
+
reasons.push(`Issue markdown files are newer (${formatTime(issuesMarkdownTime)} > ${formatTime(issuesJsonlTime)})`);
|
|
373
|
+
}
|
|
374
|
+
else if (issuesJsonlTime > issuesMarkdownTime) {
|
|
375
|
+
syncToMarkdown = true;
|
|
376
|
+
reasons.push(`Issues JSONL is newer (${formatTime(issuesJsonlTime)} > ${formatTime(issuesMarkdownTime)})`);
|
|
377
|
+
}
|
|
378
|
+
else {
|
|
379
|
+
reasons.push("Issues are in sync");
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
// Decide direction (prefer from-markdown if there's a conflict)
|
|
383
|
+
if (syncFromMarkdown && syncToMarkdown) {
|
|
384
|
+
// Mixed state - some files newer in markdown, some in JSONL
|
|
385
|
+
// Prefer syncing from markdown to preserve user edits
|
|
386
|
+
return {
|
|
387
|
+
direction: "from-markdown",
|
|
388
|
+
reason: reasons.join("; ") + " (choosing markdown as source)",
|
|
389
|
+
};
|
|
390
|
+
}
|
|
391
|
+
else if (syncFromMarkdown) {
|
|
392
|
+
return {
|
|
393
|
+
direction: "from-markdown",
|
|
394
|
+
reason: reasons.join("; "),
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
else if (syncToMarkdown) {
|
|
398
|
+
return {
|
|
399
|
+
direction: "to-markdown",
|
|
400
|
+
reason: reasons.join("; "),
|
|
401
|
+
};
|
|
402
|
+
}
|
|
403
|
+
else {
|
|
404
|
+
return {
|
|
405
|
+
direction: "no-sync",
|
|
406
|
+
reason: reasons.join("; "),
|
|
407
|
+
};
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* Format timestamp for display
|
|
412
|
+
*/
|
|
413
|
+
function formatTime(date) {
|
|
414
|
+
return date.toISOString().replace("T", " ").substring(0, 19);
|
|
415
|
+
}
|
|
416
|
+
//# sourceMappingURL=sync-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-commands.js","sourceRoot":"","sources":["../../src/cli/sync-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-commands.d.ts","sourceRoot":"","sources":["../../src/cli/update-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CA0BvD;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CA2ClD"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Update command handlers
|
|
3
|
+
*/
|
|
4
|
+
import chalk from "chalk";
|
|
5
|
+
import { execSync } from "child_process";
|
|
6
|
+
import { checkForUpdates } from "../update-checker.js";
|
|
7
|
+
const PACKAGE_NAME = "@sudocode-ai/cli";
|
|
8
|
+
/**
|
|
9
|
+
* Handle update check command
|
|
10
|
+
*/
|
|
11
|
+
export async function handleUpdateCheck() {
|
|
12
|
+
console.log(chalk.cyan("Checking for updates..."));
|
|
13
|
+
const info = await checkForUpdates();
|
|
14
|
+
if (!info) {
|
|
15
|
+
console.log(chalk.yellow("Unable to check for updates"));
|
|
16
|
+
console.log("Please try again later or check manually:");
|
|
17
|
+
console.log(` npm view ${PACKAGE_NAME} version`);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
console.log(`Current version: ${chalk.cyan(info.current)}`);
|
|
21
|
+
console.log(`Latest version: ${chalk.cyan(info.latest)}`);
|
|
22
|
+
if (info.updateAvailable) {
|
|
23
|
+
console.log();
|
|
24
|
+
console.log(chalk.green("✓ Update available!"));
|
|
25
|
+
console.log();
|
|
26
|
+
console.log("To update, run:");
|
|
27
|
+
console.log(chalk.yellow(` npm install -g ${PACKAGE_NAME}`));
|
|
28
|
+
console.log(chalk.yellow(` sudocode update`));
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
console.log();
|
|
32
|
+
console.log(chalk.green("✓ You are using the latest version"));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Handle update install command
|
|
37
|
+
*/
|
|
38
|
+
export async function handleUpdate() {
|
|
39
|
+
console.log(chalk.cyan("Checking for updates..."));
|
|
40
|
+
const info = await checkForUpdates();
|
|
41
|
+
if (!info) {
|
|
42
|
+
console.log(chalk.yellow("Unable to check for updates"));
|
|
43
|
+
console.log("Attempting to update anyway...");
|
|
44
|
+
}
|
|
45
|
+
else if (!info.updateAvailable) {
|
|
46
|
+
console.log(chalk.green("✓ Already on latest version:"), info.current);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
console.log(`Updating from ${info.current} to ${info.latest}...`);
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
console.log();
|
|
54
|
+
console.log(chalk.cyan("Running: npm install -g " + PACKAGE_NAME));
|
|
55
|
+
console.log();
|
|
56
|
+
execSync(`npm install -g ${PACKAGE_NAME}`, {
|
|
57
|
+
stdio: "inherit",
|
|
58
|
+
});
|
|
59
|
+
console.log();
|
|
60
|
+
console.log(chalk.green("✓ Update completed successfully!"));
|
|
61
|
+
console.log();
|
|
62
|
+
console.log("Run 'sudocode --version' to verify the new version");
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
console.log();
|
|
66
|
+
console.error(chalk.red("✗ Update failed"));
|
|
67
|
+
console.log();
|
|
68
|
+
console.log("Please try updating manually:");
|
|
69
|
+
console.log(chalk.yellow(` npm install -g ${PACKAGE_NAME}`));
|
|
70
|
+
console.log();
|
|
71
|
+
if (error instanceof Error) {
|
|
72
|
+
console.log("Error details:");
|
|
73
|
+
console.log(chalk.dim(error.message));
|
|
74
|
+
}
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=update-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-commands.js","sourceRoot":"","sources":["../../src/cli/update-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;GAEG"}
|