@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.
- package/dist/execution/worktree/git-sync-cli.d.ts +11 -0
- package/dist/execution/worktree/git-sync-cli.d.ts.map +1 -1
- package/dist/execution/worktree/git-sync-cli.js +52 -1
- package/dist/execution/worktree/git-sync-cli.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -29
- package/dist/index.js.map +1 -1
- package/dist/public/assets/index-DV9Tbujb.css +1 -0
- package/dist/public/assets/index-DcDX9-Ad.js +740 -0
- package/dist/public/assets/index-DcDX9-Ad.js.map +1 -0
- package/dist/public/index.html +2 -2
- package/dist/routes/executions.d.ts.map +1 -1
- package/dist/routes/executions.js +327 -24
- package/dist/routes/executions.js.map +1 -1
- package/dist/routes/repo-info.d.ts.map +1 -1
- package/dist/routes/repo-info.js +77 -0
- package/dist/routes/repo-info.js.map +1 -1
- package/dist/routes/version.d.ts +3 -0
- package/dist/routes/version.d.ts.map +1 -0
- package/dist/routes/version.js +25 -0
- package/dist/routes/version.js.map +1 -0
- package/dist/services/execution-changes-service.d.ts +18 -0
- package/dist/services/execution-changes-service.d.ts.map +1 -1
- package/dist/services/execution-changes-service.js +155 -1
- package/dist/services/execution-changes-service.js.map +1 -1
- package/dist/services/execution-service.d.ts +32 -1
- package/dist/services/execution-service.d.ts.map +1 -1
- package/dist/services/execution-service.js +81 -0
- package/dist/services/execution-service.js.map +1 -1
- package/dist/services/version-service.d.ts +14 -0
- package/dist/services/version-service.d.ts.map +1 -0
- package/dist/services/version-service.js +57 -0
- package/dist/services/version-service.js.map +1 -0
- package/dist/services/worktree-sync-service.d.ts +111 -13
- package/dist/services/worktree-sync-service.d.ts.map +1 -1
- package/dist/services/worktree-sync-service.js +610 -82
- package/dist/services/worktree-sync-service.js.map +1 -1
- package/package.json +3 -3
- package/dist/public/assets/index-Bb_W5bUr.css +0 -1
- package/dist/public/assets/index-CFKL113G.js +0 -710
- 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
|
-
|
|
58
|
-
|
|
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
|
|
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
|
-
*
|
|
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
|
|
153
|
+
* @returns Uncommitted file stats
|
|
124
154
|
*/
|
|
125
|
-
private
|
|
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
|
-
|
|
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
|
|
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
|
|
219
|
-
*
|
|
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":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAIrE,OAAO,
|
|
1
|
+
{"version":3,"file":"worktree-sync-service.d.ts","sourceRoot":"","sources":["../../src/services/worktree-sync-service.ts"],"names":[],"mappings":"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"}
|