@sudocode-ai/local-server 0.1.8 → 0.1.9

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 (41) hide show
  1. package/dist/execution/worktree/git-sync-cli.d.ts +11 -0
  2. package/dist/execution/worktree/git-sync-cli.d.ts.map +1 -1
  3. package/dist/execution/worktree/git-sync-cli.js +52 -1
  4. package/dist/execution/worktree/git-sync-cli.js.map +1 -1
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +3 -29
  7. package/dist/index.js.map +1 -1
  8. package/dist/public/assets/index-DV9Tbujb.css +1 -0
  9. package/dist/public/assets/index-DcDX9-Ad.js +740 -0
  10. package/dist/public/assets/index-DcDX9-Ad.js.map +1 -0
  11. package/dist/public/index.html +2 -2
  12. package/dist/routes/executions.d.ts.map +1 -1
  13. package/dist/routes/executions.js +327 -24
  14. package/dist/routes/executions.js.map +1 -1
  15. package/dist/routes/repo-info.d.ts.map +1 -1
  16. package/dist/routes/repo-info.js +77 -0
  17. package/dist/routes/repo-info.js.map +1 -1
  18. package/dist/routes/version.d.ts +3 -0
  19. package/dist/routes/version.d.ts.map +1 -0
  20. package/dist/routes/version.js +25 -0
  21. package/dist/routes/version.js.map +1 -0
  22. package/dist/services/execution-changes-service.d.ts +18 -0
  23. package/dist/services/execution-changes-service.d.ts.map +1 -1
  24. package/dist/services/execution-changes-service.js +155 -1
  25. package/dist/services/execution-changes-service.js.map +1 -1
  26. package/dist/services/execution-service.d.ts +32 -1
  27. package/dist/services/execution-service.d.ts.map +1 -1
  28. package/dist/services/execution-service.js +81 -0
  29. package/dist/services/execution-service.js.map +1 -1
  30. package/dist/services/version-service.d.ts +14 -0
  31. package/dist/services/version-service.d.ts.map +1 -0
  32. package/dist/services/version-service.js +57 -0
  33. package/dist/services/version-service.js.map +1 -0
  34. package/dist/services/worktree-sync-service.d.ts +111 -13
  35. package/dist/services/worktree-sync-service.d.ts.map +1 -1
  36. package/dist/services/worktree-sync-service.js +610 -82
  37. package/dist/services/worktree-sync-service.js.map +1 -1
  38. package/package.json +3 -3
  39. package/dist/public/assets/index-Bb_W5bUr.css +0 -1
  40. package/dist/public/assets/index-CFKL113G.js +0 -710
  41. package/dist/public/assets/index-CFKL113G.js.map +0 -1
@@ -0,0 +1,57 @@
1
+ import { readFileSync, existsSync } from "fs";
2
+ import * as path from "path";
3
+ import { fileURLToPath } from "url";
4
+ const __filename = fileURLToPath(import.meta.url);
5
+ const __dirname = path.dirname(__filename);
6
+ /**
7
+ * Get version information for all packages.
8
+ * Handles both development (monorepo) and production (installed npm package) environments.
9
+ *
10
+ * @param baseDir - Optional base directory for testing. Defaults to __dirname.
11
+ * @returns Version information for CLI, server, and frontend packages
12
+ */
13
+ export function getVersionInfo(baseDir = __dirname) {
14
+ // Determine if we're in development (monorepo) or production (installed package)
15
+ // In dev: baseDir is server/dist/services, workspace root has server/ and cli/ and frontend/
16
+ // In prod: baseDir is node_modules/@sudocode-ai/local-server/dist/services
17
+ // Check for monorepo structure by looking for both server/package.json (us) and frontend/package.json
18
+ const projectRoot = path.join(baseDir, "../../..");
19
+ const isDev = existsSync(path.join(projectRoot, "server/package.json")) &&
20
+ existsSync(path.join(projectRoot, "frontend/package.json"));
21
+ let cliPackage, serverPackage, frontendPackage;
22
+ if (isDev) {
23
+ // Development: Read from monorepo structure
24
+ // From server/dist/services -> server/dist -> server -> workspace root
25
+ const projectRoot = path.join(baseDir, "../../..");
26
+ const cliPackagePath = path.join(projectRoot, "cli/package.json");
27
+ const serverPackagePath = path.join(projectRoot, "server/package.json");
28
+ const frontendPackagePath = path.join(projectRoot, "frontend/package.json");
29
+ cliPackage = JSON.parse(readFileSync(cliPackagePath, "utf-8"));
30
+ serverPackage = JSON.parse(readFileSync(serverPackagePath, "utf-8"));
31
+ frontendPackage = JSON.parse(readFileSync(frontendPackagePath, "utf-8"));
32
+ }
33
+ else {
34
+ // Production: Read from installed npm packages
35
+ // From dist/services -> dist -> local-server (package root)
36
+ const serverPackagePath = path.join(baseDir, "../../package.json");
37
+ serverPackage = JSON.parse(readFileSync(serverPackagePath, "utf-8"));
38
+ // CLI package is in node_modules (sibling to local-server)
39
+ // From dist/services -> dist -> local-server -> @sudocode-ai -> cli
40
+ const cliPackagePath = path.join(baseDir, "../../../cli/package.json");
41
+ if (existsSync(cliPackagePath)) {
42
+ cliPackage = JSON.parse(readFileSync(cliPackagePath, "utf-8"));
43
+ }
44
+ else {
45
+ // Fallback: use server version if CLI package not found
46
+ cliPackage = serverPackage;
47
+ }
48
+ // Frontend is bundled with server, use server version
49
+ frontendPackage = serverPackage;
50
+ }
51
+ return {
52
+ cli: cliPackage.version,
53
+ server: serverPackage.version,
54
+ frontend: frontendPackage.version,
55
+ };
56
+ }
57
+ //# sourceMappingURL=version-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-service.js","sourceRoot":"","sources":["../../src/services/version-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAQ3C;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,UAAkB,SAAS;IACxD,iFAAiF;IACjF,6FAA6F;IAC7F,2EAA2E;IAC3E,sGAAsG;IACtG,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACnD,MAAM,KAAK,GACT,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;QACzD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAE9D,IAAI,UAAU,EAAE,aAAa,EAAE,eAAe,CAAC;IAE/C,IAAI,KAAK,EAAE,CAAC;QACV,4CAA4C;QAC5C,uEAAuE;QACvE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACnD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAClE,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;QACxE,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CACnC,WAAW,EACX,uBAAuB,CACxB,CAAC;QAEF,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/D,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC;QACrE,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3E,CAAC;SAAM,CAAC;QACN,+CAA+C;QAC/C,4DAA4D;QAC5D,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;QACnE,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC;QAErE,2DAA2D;QAC3D,oEAAoE;QACpE,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,2BAA2B,CAAC,CAAC;QAEvE,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAC/B,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,wDAAwD;YACxD,UAAU,GAAG,aAAa,CAAC;QAC7B,CAAC;QAED,sDAAsD;QACtD,eAAe,GAAG,aAAa,CAAC;IAClC,CAAC;IAED,OAAO;QACL,GAAG,EAAE,UAAU,CAAC,OAAO;QACvB,MAAM,EAAE,aAAa,CAAC,OAAO;QAC7B,QAAQ,EAAE,eAAe,CAAC,OAAO;KAClC,CAAC;AACJ,CAAC"}
@@ -34,6 +34,14 @@ export declare class WorktreeSyncError extends Error {
34
34
  cause?: Error | undefined;
35
35
  constructor(message: string, code: WorktreeSyncErrorCode, cause?: Error | undefined);
36
36
  }
37
+ /**
38
+ * Uncommitted file stats for preview
39
+ */
40
+ export interface UncommittedFileStats {
41
+ files: string[];
42
+ additions: number;
43
+ deletions: number;
44
+ }
37
45
  /**
38
46
  * Sync preview result
39
47
  */
@@ -43,7 +51,10 @@ export interface SyncPreviewResult {
43
51
  diff: DiffResult;
44
52
  commits: Commit[];
45
53
  mergeBase: string;
54
+ /** @deprecated Use uncommittedChanges instead */
46
55
  uncommittedJSONLChanges: string[];
56
+ /** Stats about uncommitted changes in worktree (not included in sync by default) */
57
+ uncommittedChanges?: UncommittedFileStats;
47
58
  executionStatus: ExecutionStatus;
48
59
  warnings: string[];
49
60
  }
@@ -54,8 +65,10 @@ export interface SyncResult {
54
65
  success: boolean;
55
66
  finalCommit?: string;
56
67
  filesChanged: number;
57
- conflictsResolved: number;
58
- uncommittedJSONLIncluded: boolean;
68
+ /** Whether there are unresolved merge conflicts (user must resolve manually) */
69
+ hasConflicts?: boolean;
70
+ /** Number of uncommitted files copied from worktree (stage sync only) */
71
+ uncommittedFilesIncluded?: number;
59
72
  error?: string;
60
73
  cleanupOffered?: boolean;
61
74
  }
@@ -68,7 +81,6 @@ export declare class WorktreeSyncService {
68
81
  private db;
69
82
  private repoPath;
70
83
  private gitSync;
71
- private conflictDetector;
72
84
  constructor(db: Database.Database, repoPath: string);
73
85
  /**
74
86
  * Preview sync without making changes
@@ -77,6 +89,16 @@ export declare class WorktreeSyncService {
77
89
  * @returns Preview result with conflicts, diff, and warnings
78
90
  */
79
91
  previewSync(executionId: string): Promise<SyncPreviewResult>;
92
+ /**
93
+ * Validate critical preconditions that prevent us from getting any sync info
94
+ *
95
+ * These are "hard" failures - if these fail, we can't get diff/commits info.
96
+ * Returns an error message if validation fails, null if validation passes.
97
+ *
98
+ * @param execution - Execution to validate
99
+ * @returns Error message if validation fails, null if validation passes
100
+ */
101
+ private _validateCriticalPreconditions;
80
102
  /**
81
103
  * Load execution from database and validate it exists
82
104
  *
@@ -115,14 +137,22 @@ export declare class WorktreeSyncService {
115
137
  */
116
138
  private _createSafetySnapshot;
117
139
  /**
118
- * Get uncommitted JSONL files from worktree
140
+ * Get all uncommitted files from worktree
141
+ *
142
+ * @param worktreePath - Path to worktree
143
+ * @returns Array of all uncommitted file paths
144
+ */
145
+ private _getUncommittedFiles;
146
+ /**
147
+ * Get uncommitted file stats from worktree
119
148
  *
120
- * Used by previewSync() and will be used in i-3wmx (JSONL conflict resolution)
149
+ * Returns list of files and aggregate additions/deletions stats
150
+ * for uncommitted changes in the worktree.
121
151
  *
122
152
  * @param worktreePath - Path to worktree
123
- * @returns Array of uncommitted JSONL file paths
153
+ * @returns Uncommitted file stats
124
154
  */
125
- private _getUncommittedJSONLFiles;
155
+ private _getUncommittedFileStats;
126
156
  /**
127
157
  * Check if local working tree is clean
128
158
  *
@@ -180,14 +210,41 @@ export declare class WorktreeSyncService {
180
210
  */
181
211
  commitUncommittedJSONL(worktreePath: string, uncommittedFiles: string[]): Promise<void>;
182
212
  /**
183
- * Perform git merge --squash operation
213
+ * Perform git merge --squash operation, allowing conflicts
214
+ *
215
+ * This method doesn't throw on conflicts.
216
+ * Instead, it returns information about whether conflicts occurred.
184
217
  *
185
218
  * @param sourceBranch - Branch to merge from (worktree branch)
186
219
  * @param targetBranch - Branch to merge into
187
- * @returns Object with filesChanged count
188
- * @throws WorktreeSyncError if merge fails
220
+ * @returns Object with filesChanged count and hasConflicts flag
221
+ */
222
+ private _performSquashMergeAllowConflicts;
223
+ /**
224
+ * Copy uncommitted files from worktree to local repo
225
+ *
226
+ * Copies files that are modified or untracked in the worktree
227
+ * to the local repository working directory.
228
+ *
229
+ * @param worktreePath - Path to the worktree
230
+ * @returns Number of files copied
189
231
  */
190
- private _performSquashMerge;
232
+ private _copyUncommittedFiles;
233
+ /**
234
+ * Resolve JSONL merge conflicts in the local repository
235
+ *
236
+ * Checks for git conflict markers in issues.jsonl and specs.jsonl,
237
+ * and resolves them using the merge-resolver logic.
238
+ *
239
+ * @returns Number of files resolved
240
+ */
241
+ private _resolveJSONLConflicts;
242
+ /**
243
+ * Resolve conflicts in a single JSONL file
244
+ *
245
+ * @param filePath - Path to the JSONL file with conflicts
246
+ */
247
+ private _resolveJSONLFile;
191
248
  /**
192
249
  * Generate commit message for squash sync
193
250
  *
@@ -215,8 +272,9 @@ export declare class WorktreeSyncService {
215
272
  /**
216
273
  * Perform squash sync operation
217
274
  *
218
- * Squashes all worktree commits into a single commit on the target branch.
219
- * Auto-resolves JSONL conflicts but blocks on code conflicts.
275
+ * Squashes all committed worktree changes into a single commit on the target branch.
276
+ * Only includes committed changes - uncommitted changes are excluded.
277
+ * If merge conflicts occur, they are left for the user to resolve manually.
220
278
  *
221
279
  * @param executionId - Execution ID to sync
222
280
  * @param customCommitMessage - Optional custom commit message
@@ -224,5 +282,45 @@ export declare class WorktreeSyncService {
224
282
  * @throws WorktreeSyncError if sync fails
225
283
  */
226
284
  squashSync(executionId: string, customCommitMessage?: string): Promise<SyncResult>;
285
+ /**
286
+ * Perform stage sync operation
287
+ *
288
+ * Applies committed worktree changes to the working directory without committing.
289
+ * Changes are left staged, ready for the user to commit manually.
290
+ * Only includes committed changes by default - uncommitted changes are excluded
291
+ * unless includeUncommitted is true.
292
+ *
293
+ * @param executionId - Execution ID to sync
294
+ * @param options - Optional settings
295
+ * @param options.includeUncommitted - If true, also copy uncommitted files from worktree
296
+ * @returns Sync result with details
297
+ * @throws WorktreeSyncError if sync fails
298
+ */
299
+ stageSync(executionId: string, options?: {
300
+ includeUncommitted?: boolean;
301
+ }): Promise<SyncResult>;
302
+ /**
303
+ * Check if worktree branch is an ancestor of target branch
304
+ *
305
+ * If the worktree branch is an ancestor, it means target already has all
306
+ * the commits from the worktree (e.g., via a previous sync).
307
+ *
308
+ * @param worktreeBranch - Worktree branch name
309
+ * @param targetBranch - Target branch name
310
+ * @returns true if worktree branch is an ancestor of target branch
311
+ */
312
+ private _isAncestor;
313
+ /**
314
+ * Perform preserve sync operation
315
+ *
316
+ * Merges all commits from worktree branch to target branch, preserving commit history.
317
+ * Only includes committed changes - uncommitted changes are excluded.
318
+ * If merge conflicts occur, they are left for the user to resolve manually.
319
+ *
320
+ * @param executionId - Execution ID to sync
321
+ * @returns Sync result with details
322
+ * @throws WorktreeSyncError if sync fails
323
+ */
324
+ preserveSync(executionId: string): Promise<SyncResult>;
227
325
  }
228
326
  //# sourceMappingURL=worktree-sync-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"worktree-sync-service.d.ts","sourceRoot":"","sources":["../../src/services/worktree-sync-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worktree-sync-service.d.ts","sourceRoot":"","sources":["../../src/services/worktree-sync-service.ts"],"names":[],"mappings":"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"}