@sudocode-ai/cli 0.1.4 → 0.1.6

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.
@@ -0,0 +1,42 @@
1
+ /**
2
+ * CLI handlers for merge conflict resolution
3
+ */
4
+ import type Database from "better-sqlite3";
5
+ export interface CommandContext {
6
+ db: Database.Database;
7
+ outputDir: string;
8
+ jsonOutput: boolean;
9
+ }
10
+ export interface ResolveConflictsOptions {
11
+ dryRun?: boolean;
12
+ verbose?: boolean;
13
+ }
14
+ export interface MergeDriverOptions {
15
+ base: string;
16
+ ours: string;
17
+ theirs: string;
18
+ markerSize?: number;
19
+ }
20
+ export interface InitMergeDriverOptions {
21
+ global?: boolean;
22
+ }
23
+ export interface RemoveMergeDriverOptions {
24
+ global?: boolean;
25
+ }
26
+ /**
27
+ * Handle manual conflict resolution command
28
+ */
29
+ export declare function handleResolveConflicts(ctx: CommandContext, options: ResolveConflictsOptions): Promise<void>;
30
+ /**
31
+ * Handle git merge driver command
32
+ */
33
+ export declare function handleMergeDriver(options: MergeDriverOptions): Promise<void>;
34
+ /**
35
+ * Handle init merge driver setup command
36
+ */
37
+ export declare function handleInitMergeDriver(options: InitMergeDriverOptions): Promise<void>;
38
+ /**
39
+ * Handle remove merge driver command
40
+ */
41
+ export declare function handleRemoveMergeDriver(options: RemoveMergeDriverOptions): Promise<void>;
42
+ //# sourceMappingURL=merge-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-commands.d.ts","sourceRoot":"","sources":["../../src/cli/merge-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAU3C,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAiBD;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAsDf;AAyGD;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CA8Cf;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAkFf;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CA8Ff"}
@@ -0,0 +1,401 @@
1
+ /**
2
+ * CLI handlers for merge conflict resolution
3
+ */
4
+ import chalk from "chalk";
5
+ import * as fs from "fs";
6
+ import * as path from "path";
7
+ import * as os from "os";
8
+ import { hasGitConflictMarkers, parseMergeConflictFile, resolveEntities, mergeThreeWay, } from "../merge-resolver.js";
9
+ import { readJSONL, writeJSONL } from "../jsonl.js";
10
+ import { importFromJSONL } from "../import.js";
11
+ /**
12
+ * Handle manual conflict resolution command
13
+ */
14
+ export async function handleResolveConflicts(ctx, options) {
15
+ const issuesPath = path.join(ctx.outputDir, "issues.jsonl");
16
+ const specsPath = path.join(ctx.outputDir, "specs.jsonl");
17
+ // Check for conflicts
18
+ const issuesHasConflict = fs.existsSync(issuesPath) && hasGitConflictMarkers(issuesPath);
19
+ const specsHasConflict = fs.existsSync(specsPath) && hasGitConflictMarkers(specsPath);
20
+ if (!issuesHasConflict && !specsHasConflict) {
21
+ if (!ctx.jsonOutput) {
22
+ console.log(chalk.green("✓ No merge conflicts found in JSONL files"));
23
+ }
24
+ else {
25
+ console.log(JSON.stringify({ success: true, conflicts: 0 }));
26
+ }
27
+ return;
28
+ }
29
+ const results = [];
30
+ // Resolve issues.jsonl
31
+ if (issuesHasConflict) {
32
+ if (!ctx.jsonOutput && !options.dryRun) {
33
+ console.log(chalk.blue("Resolving conflicts in issues.jsonl..."));
34
+ }
35
+ const result = await resolveFile(issuesPath, "issue", options);
36
+ results.push({ file: "issues.jsonl", ...result });
37
+ }
38
+ // Resolve specs.jsonl
39
+ if (specsHasConflict) {
40
+ if (!ctx.jsonOutput && !options.dryRun) {
41
+ console.log(chalk.blue("Resolving conflicts in specs.jsonl..."));
42
+ }
43
+ const result = await resolveFile(specsPath, "spec", options);
44
+ results.push({ file: "specs.jsonl", ...result });
45
+ }
46
+ // Re-import to database if not dry-run
47
+ if (!options.dryRun) {
48
+ await importFromJSONL(ctx.db, { inputDir: ctx.outputDir });
49
+ if (!ctx.jsonOutput) {
50
+ console.log(chalk.green("\n✓ Re-imported to database"));
51
+ }
52
+ }
53
+ // Output results
54
+ if (ctx.jsonOutput) {
55
+ console.log(JSON.stringify({ success: true, results }));
56
+ }
57
+ else {
58
+ printResolveResults(results, options);
59
+ }
60
+ }
61
+ /**
62
+ * Resolve conflicts in a single JSONL file
63
+ */
64
+ async function resolveFile(filePath, entityType, options) {
65
+ // Read file with conflict markers
66
+ const content = fs.readFileSync(filePath, "utf8");
67
+ // Parse conflicts
68
+ const sections = parseMergeConflictFile(content);
69
+ // Extract all entities (from both clean and conflict sections)
70
+ const allEntities = [];
71
+ for (const section of sections) {
72
+ if (section.type === "clean") {
73
+ for (const line of section.lines) {
74
+ if (line.trim()) {
75
+ try {
76
+ allEntities.push(JSON.parse(line));
77
+ }
78
+ catch (e) {
79
+ console.warn(chalk.yellow(`Warning: Skipping malformed line: ${line.slice(0, 50)}...`));
80
+ }
81
+ }
82
+ }
83
+ }
84
+ else {
85
+ // Conflict section - include both ours and theirs
86
+ for (const line of [...(section.ours || []), ...(section.theirs || [])]) {
87
+ if (line.trim()) {
88
+ try {
89
+ allEntities.push(JSON.parse(line));
90
+ }
91
+ catch (e) {
92
+ console.warn(chalk.yellow(`Warning: Skipping malformed line: ${line.slice(0, 50)}...`));
93
+ }
94
+ }
95
+ }
96
+ }
97
+ }
98
+ // Resolve conflicts
99
+ const { entities: resolved, stats } = resolveEntities(allEntities, {
100
+ verbose: options.verbose,
101
+ });
102
+ // Write back if not dry-run
103
+ if (!options.dryRun) {
104
+ await writeJSONL(filePath, resolved);
105
+ }
106
+ return { stats, entityType };
107
+ }
108
+ /**
109
+ * Print resolution results to console
110
+ */
111
+ function printResolveResults(results, options) {
112
+ for (const result of results) {
113
+ const { file, stats, entityType } = result;
114
+ console.log(chalk.bold(`\n${file}:`));
115
+ console.log(` Input: ${stats.totalInput} ${entityType}s`);
116
+ console.log(` Output: ${stats.totalOutput} ${entityType}s`);
117
+ if (stats.conflicts.length > 0) {
118
+ console.log(chalk.yellow(` Resolved ${stats.conflicts.length} conflict(s):`));
119
+ for (const conflict of stats.conflicts) {
120
+ if (options.verbose) {
121
+ console.log(` - ${conflict.action}`);
122
+ console.log(` UUID: ${conflict.uuid}`);
123
+ console.log(` IDs: ${conflict.originalIds.join(", ")} → ${conflict.resolvedIds.join(", ")}`);
124
+ }
125
+ else {
126
+ console.log(` - ${conflict.action}`);
127
+ }
128
+ }
129
+ }
130
+ if (options.dryRun) {
131
+ console.log(chalk.gray(" (dry-run - no changes written)"));
132
+ }
133
+ else {
134
+ console.log(chalk.green(" ✓ Resolved and written"));
135
+ }
136
+ }
137
+ }
138
+ /**
139
+ * Handle git merge driver command
140
+ */
141
+ export async function handleMergeDriver(options) {
142
+ const logPath = path.join(process.cwd(), ".sudocode", "merge-driver.log");
143
+ try {
144
+ // Read all three versions
145
+ const baseEntities = fs.existsSync(options.base)
146
+ ? await readJSONL(options.base, { skipErrors: true })
147
+ : [];
148
+ const ourEntities = await readJSONL(options.ours, { skipErrors: true });
149
+ const theirEntities = await readJSONL(options.theirs, {
150
+ skipErrors: true,
151
+ });
152
+ // Perform three-way merge
153
+ const { entities: merged } = mergeThreeWay(baseEntities, ourEntities, theirEntities);
154
+ // Write result to output (ours file)
155
+ await writeJSONL(options.ours, merged);
156
+ // Exit 0 = success, git will use this result
157
+ // Note: We don't log successful merges to avoid cluttering the repo
158
+ process.exit(0);
159
+ }
160
+ catch (error) {
161
+ // Only log on failure for debugging
162
+ const logDir = path.dirname(logPath);
163
+ if (!fs.existsSync(logDir)) {
164
+ fs.mkdirSync(logDir, { recursive: true });
165
+ }
166
+ fs.appendFileSync(logPath, `[${new Date().toISOString()}] Merge failed for: ${options.ours}\n` +
167
+ ` Error: ${error instanceof Error ? error.message : String(error)}\n` +
168
+ ` Base: ${options.base}\n` +
169
+ ` Ours: ${options.ours}\n` +
170
+ ` Theirs: ${options.theirs}\n\n`);
171
+ // Exit 1 = failure, git will leave conflict markers
172
+ console.error("Merge driver failed:", error);
173
+ process.exit(1);
174
+ }
175
+ }
176
+ /**
177
+ * Handle init merge driver setup command
178
+ */
179
+ export async function handleInitMergeDriver(options) {
180
+ const configFile = options.global
181
+ ? path.join(os.homedir(), ".gitconfig")
182
+ : path.join(process.cwd(), ".git", "config");
183
+ // Check if .git exists (not in global mode)
184
+ if (!options.global && !fs.existsSync(path.join(process.cwd(), ".git"))) {
185
+ console.error(chalk.red("Error: Not in a git repository"));
186
+ console.error("Run this command from a git repository, or use --global");
187
+ process.exit(1);
188
+ }
189
+ // Add merge driver config
190
+ const configSection = `
191
+ [merge "sudocode-jsonl"]
192
+ \tname = Sudocode JSONL automatic merge resolver
193
+ \tdriver = sudocode merge-driver --base=%O --ours=%A --theirs=%B
194
+ \trecursive = binary
195
+ `;
196
+ // Check if already configured
197
+ if (fs.existsSync(configFile)) {
198
+ const content = fs.readFileSync(configFile, "utf8");
199
+ if (content.includes('[merge "sudocode-jsonl"]')) {
200
+ console.log(chalk.yellow("Merge driver already configured in git config"));
201
+ }
202
+ else {
203
+ fs.appendFileSync(configFile, configSection);
204
+ console.log(chalk.green(`✓ Added merge driver to ${configFile}`));
205
+ }
206
+ }
207
+ else {
208
+ fs.writeFileSync(configFile, configSection);
209
+ console.log(chalk.green(`✓ Created ${configFile} with merge driver`));
210
+ }
211
+ // Add .gitattributes (only for local, not global)
212
+ if (!options.global) {
213
+ const gitattributesPath = path.join(process.cwd(), ".gitattributes");
214
+ const attributesLine = ".sudocode/*.jsonl merge=sudocode-jsonl\n";
215
+ if (fs.existsSync(gitattributesPath)) {
216
+ const content = fs.readFileSync(gitattributesPath, "utf8");
217
+ if (!content.includes("merge=sudocode-jsonl")) {
218
+ fs.appendFileSync(gitattributesPath, attributesLine);
219
+ console.log(chalk.green("✓ Added merge driver to .gitattributes"));
220
+ }
221
+ else {
222
+ console.log(chalk.yellow("Merge driver already configured in .gitattributes"));
223
+ }
224
+ }
225
+ else {
226
+ fs.writeFileSync(gitattributesPath, attributesLine);
227
+ console.log(chalk.green("✓ Created .gitattributes with merge driver"));
228
+ }
229
+ // Add merge-driver.log to .gitignore
230
+ const gitignorePath = path.join(process.cwd(), ".gitignore");
231
+ const ignoreEntry = ".sudocode/merge-driver.log";
232
+ if (fs.existsSync(gitignorePath)) {
233
+ const content = fs.readFileSync(gitignorePath, "utf8");
234
+ if (!content.includes(ignoreEntry)) {
235
+ fs.appendFileSync(gitignorePath, `\n${ignoreEntry}\n`);
236
+ console.log(chalk.green("✓ Added merge-driver.log to .gitignore"));
237
+ }
238
+ }
239
+ else {
240
+ fs.writeFileSync(gitignorePath, `${ignoreEntry}\n`);
241
+ console.log(chalk.green("✓ Created .gitignore with merge-driver.log"));
242
+ }
243
+ }
244
+ // Test the setup
245
+ console.log(chalk.bold("\nTesting merge driver setup..."));
246
+ const testResult = await testMergeDriver();
247
+ if (testResult.success) {
248
+ console.log(chalk.green("✓ Merge driver is working correctly"));
249
+ }
250
+ else {
251
+ console.log(chalk.red("✗ Merge driver test failed:"));
252
+ console.log(chalk.red(` ${testResult.error}`));
253
+ }
254
+ }
255
+ /**
256
+ * Handle remove merge driver command
257
+ */
258
+ export async function handleRemoveMergeDriver(options) {
259
+ const configFile = options.global
260
+ ? path.join(os.homedir(), ".gitconfig")
261
+ : path.join(process.cwd(), ".git", "config");
262
+ // Check if .git exists (not in global mode)
263
+ if (!options.global && !fs.existsSync(path.join(process.cwd(), ".git"))) {
264
+ console.error(chalk.red("Error: Not in a git repository"));
265
+ console.error("Run this command from a git repository, or use --global");
266
+ process.exit(1);
267
+ }
268
+ let removed = false;
269
+ // Remove from git config
270
+ if (fs.existsSync(configFile)) {
271
+ const content = fs.readFileSync(configFile, "utf8");
272
+ if (content.includes('[merge "sudocode-jsonl"]')) {
273
+ // Remove the merge driver section
274
+ const lines = content.split("\n");
275
+ const filtered = [];
276
+ let inSection = false;
277
+ for (const line of lines) {
278
+ if (line.trim() === '[merge "sudocode-jsonl"]') {
279
+ inSection = true;
280
+ continue;
281
+ }
282
+ // Check if we've hit the next section
283
+ if (inSection && line.startsWith("[") && !line.includes("sudocode")) {
284
+ inSection = false;
285
+ }
286
+ if (!inSection) {
287
+ filtered.push(line);
288
+ }
289
+ }
290
+ fs.writeFileSync(configFile, filtered.join("\n"));
291
+ console.log(chalk.green(`✓ Removed merge driver from ${configFile}`));
292
+ removed = true;
293
+ }
294
+ else {
295
+ console.log(chalk.yellow("Merge driver not found in git config"));
296
+ }
297
+ }
298
+ else {
299
+ console.log(chalk.yellow("Git config file not found"));
300
+ }
301
+ // Remove from .gitattributes (only for local, not global)
302
+ if (!options.global) {
303
+ const gitattributesPath = path.join(process.cwd(), ".gitattributes");
304
+ if (fs.existsSync(gitattributesPath)) {
305
+ const content = fs.readFileSync(gitattributesPath, "utf8");
306
+ if (content.includes("merge=sudocode-jsonl")) {
307
+ const lines = content
308
+ .split("\n")
309
+ .filter((line) => !line.includes("merge=sudocode-jsonl"));
310
+ // Remove file if it's now empty, otherwise update it
311
+ if (lines.every((line) => !line.trim())) {
312
+ fs.unlinkSync(gitattributesPath);
313
+ console.log(chalk.green("✓ Removed .gitattributes (was only used for merge driver)"));
314
+ }
315
+ else {
316
+ fs.writeFileSync(gitattributesPath, lines.join("\n"));
317
+ console.log(chalk.green("✓ Removed merge driver from .gitattributes"));
318
+ }
319
+ removed = true;
320
+ }
321
+ else {
322
+ console.log(chalk.yellow("Merge driver not found in .gitattributes"));
323
+ }
324
+ }
325
+ }
326
+ if (removed) {
327
+ console.log(chalk.cyan("\n✓ Merge driver removed. Git will now use default conflict handling for JSONL files."));
328
+ }
329
+ else {
330
+ console.log(chalk.yellow("\nNo merge driver configuration found to remove."));
331
+ }
332
+ }
333
+ /**
334
+ * Test merge driver setup
335
+ */
336
+ async function testMergeDriver() {
337
+ // Create temp files for testing
338
+ const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "sudocode-merge-test-"));
339
+ // Save original process.exit
340
+ const originalExit = process.exit;
341
+ let exitCode;
342
+ try {
343
+ const base = path.join(tmpDir, "base.jsonl");
344
+ const ours = path.join(tmpDir, "ours.jsonl");
345
+ const theirs = path.join(tmpDir, "theirs.jsonl");
346
+ // Write test data
347
+ const testEntity = {
348
+ id: "TEST-001",
349
+ uuid: "test-uuid-123",
350
+ title: "Test",
351
+ content: "Test",
352
+ created_at: "2025-01-01T00:00:00Z",
353
+ updated_at: "2025-01-01T00:00:00Z",
354
+ relationships: [],
355
+ tags: [],
356
+ };
357
+ await writeJSONL(base, [testEntity]);
358
+ await writeJSONL(ours, [testEntity]);
359
+ await writeJSONL(theirs, [testEntity]);
360
+ // Mock process.exit to capture exit code
361
+ process.exit = ((code) => {
362
+ exitCode = code;
363
+ throw new Error(`process.exit called with code ${code}`);
364
+ });
365
+ // Test merge driver
366
+ try {
367
+ await handleMergeDriver({ base, ours, theirs });
368
+ }
369
+ catch (error) {
370
+ // Expected - handleMergeDriver calls process.exit
371
+ if (error instanceof Error && !error.message.includes("process.exit")) {
372
+ throw error;
373
+ }
374
+ }
375
+ // Restore process.exit
376
+ process.exit = originalExit;
377
+ // Check exit code
378
+ if (exitCode !== 0) {
379
+ throw new Error(`Merge driver exited with code ${exitCode}`);
380
+ }
381
+ // Check result
382
+ const result = await readJSONL(ours);
383
+ if (result.length !== 1 || result[0].id !== "TEST-001") {
384
+ throw new Error("Unexpected merge result");
385
+ }
386
+ return { success: true };
387
+ }
388
+ catch (error) {
389
+ return {
390
+ success: false,
391
+ error: error instanceof Error ? error.message : String(error),
392
+ };
393
+ }
394
+ finally {
395
+ // Restore process.exit
396
+ process.exit = originalExit;
397
+ // Cleanup
398
+ fs.rmSync(tmpDir, { recursive: true, force: true });
399
+ }
400
+ }
401
+ //# sourceMappingURL=merge-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-commands.js","sourceRoot":"","sources":["../../src/cli/merge-commands.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server-commands.d.ts","sourceRoot":"","sources":["../../src/cli/server-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,GAAG,CAAC;IACR,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAqBD;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAqFf"}
1
+ {"version":3,"file":"server-commands.d.ts","sourceRoot":"","sources":["../../src/cli/server-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,GAAG,CAAC;IACR,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAqBD;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAwFf"}
@@ -27,16 +27,19 @@ async function isServerInstalled() {
27
27
  */
28
28
  export async function handleServerStart(ctx, options) {
29
29
  // Check for updates before starting server
30
- try {
31
- const updateNotification = await getUpdateNotification();
32
- if (updateNotification) {
33
- console.log();
34
- console.log(chalk.yellow(updateNotification));
35
- console.log();
30
+ // Skip if SUDOCODE_DISABLE_UPDATE_CHECK environment variable is set
31
+ if (process.env.SUDOCODE_DISABLE_UPDATE_CHECK !== "true") {
32
+ try {
33
+ const updateNotification = await getUpdateNotification();
34
+ if (updateNotification) {
35
+ console.log();
36
+ console.log(chalk.yellow(updateNotification));
37
+ console.log();
38
+ }
39
+ }
40
+ catch {
41
+ // Silently ignore update check failures
36
42
  }
37
- }
38
- catch {
39
- // Silently ignore update check failures
40
43
  }
41
44
  // Check if server is installed first
42
45
  const serverInstalled = await isServerInstalled();
@@ -1 +1 @@
1
- {"version":3,"file":"server-commands.js","sourceRoot":"","sources":["../../src/cli/server-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server-commands.js","sourceRoot":"","sources":["../../src/cli/server-commands.ts"],"names":[],"mappings":"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"}
@@ -9,4 +9,8 @@ export declare function handleUpdateCheck(): Promise<void>;
9
9
  * Handle update install command
10
10
  */
11
11
  export declare function handleUpdate(): Promise<void>;
12
+ /**
13
+ * Handle update dismiss command
14
+ */
15
+ export declare function handleUpdateDismiss(): Promise<void>;
12
16
  //# sourceMappingURL=update-commands.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"update-commands.d.ts","sourceRoot":"","sources":["../../src/cli/update-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CA0BvD;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CA2ClD;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAqBzD"}
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import chalk from "chalk";
5
5
  import { execSync } from "child_process";
6
- import { checkForUpdates } from "../update-checker.js";
6
+ import { checkForUpdates, dismissUpdate } from "../update-checker.js";
7
7
  const PACKAGE_NAME = "@sudocode-ai/cli";
8
8
  /**
9
9
  * Handle update check command
@@ -75,4 +75,24 @@ export async function handleUpdate() {
75
75
  process.exit(1);
76
76
  }
77
77
  }
78
+ /**
79
+ * Handle update dismiss command
80
+ */
81
+ export async function handleUpdateDismiss() {
82
+ const info = await checkForUpdates();
83
+ if (!info) {
84
+ console.log(chalk.yellow("Unable to check for updates"));
85
+ return;
86
+ }
87
+ if (!info.updateAvailable) {
88
+ console.log(chalk.green("✓ Already on latest version:"), info.current);
89
+ console.log("No update notifications to dismiss");
90
+ return;
91
+ }
92
+ dismissUpdate(info.latest);
93
+ console.log(chalk.green("✓ Update notifications dismissed for 30 days"));
94
+ console.log();
95
+ console.log(`You won't be notified about version ${info.latest} for the next 30 days`);
96
+ console.log("To update now, run:", chalk.cyan("sudocode update"));
97
+ }
78
98
  //# sourceMappingURL=update-commands.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update-commands.js","sourceRoot":"","sources":["../../src/cli/update-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update-commands.js","sourceRoot":"","sources":["../../src/cli/update-commands.ts"],"names":[],"mappings":"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"}