@sudocode-ai/local-server 0.1.7 → 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/README.md +6 -0
- package/dist/errors/agent-errors.d.ts +43 -0
- package/dist/errors/agent-errors.d.ts.map +1 -0
- package/dist/errors/agent-errors.js +69 -0
- package/dist/errors/agent-errors.js.map +1 -0
- package/dist/execution/adapters/claude-adapter.d.ts +63 -0
- package/dist/execution/adapters/claude-adapter.d.ts.map +1 -0
- package/dist/execution/adapters/claude-adapter.js +82 -0
- package/dist/execution/adapters/claude-adapter.js.map +1 -0
- package/dist/execution/adapters/codex-adapter.d.ts +67 -0
- package/dist/execution/adapters/codex-adapter.d.ts.map +1 -0
- package/dist/execution/adapters/codex-adapter.js +183 -0
- package/dist/execution/adapters/codex-adapter.js.map +1 -0
- package/dist/execution/adapters/codex-config-builder.d.ts +30 -0
- package/dist/execution/adapters/codex-config-builder.d.ts.map +1 -0
- package/dist/execution/adapters/codex-config-builder.js +110 -0
- package/dist/execution/adapters/codex-config-builder.js.map +1 -0
- package/dist/execution/adapters/copilot-adapter.d.ts +94 -0
- package/dist/execution/adapters/copilot-adapter.d.ts.map +1 -0
- package/dist/execution/adapters/copilot-adapter.js +163 -0
- package/dist/execution/adapters/copilot-adapter.js.map +1 -0
- package/dist/execution/adapters/copilot-config-builder.d.ts +48 -0
- package/dist/execution/adapters/copilot-config-builder.d.ts.map +1 -0
- package/dist/execution/adapters/copilot-config-builder.js +125 -0
- package/dist/execution/adapters/copilot-config-builder.js.map +1 -0
- package/dist/execution/adapters/cursor-adapter.d.ts +66 -0
- package/dist/execution/adapters/cursor-adapter.d.ts.map +1 -0
- package/dist/execution/adapters/cursor-adapter.js +121 -0
- package/dist/execution/adapters/cursor-adapter.js.map +1 -0
- package/dist/execution/adapters/cursor-config-builder.d.ts +29 -0
- package/dist/execution/adapters/cursor-config-builder.d.ts.map +1 -0
- package/dist/execution/adapters/cursor-config-builder.js +49 -0
- package/dist/execution/adapters/cursor-config-builder.js.map +1 -0
- package/dist/execution/adapters/shared/config-presets.d.ts +102 -0
- package/dist/execution/adapters/shared/config-presets.d.ts.map +1 -0
- package/dist/execution/adapters/shared/config-presets.js +205 -0
- package/dist/execution/adapters/shared/config-presets.js.map +1 -0
- package/dist/execution/adapters/shared/config-utils.d.ts +95 -0
- package/dist/execution/adapters/shared/config-utils.d.ts.map +1 -0
- package/dist/execution/adapters/shared/config-utils.js +163 -0
- package/dist/execution/adapters/shared/config-utils.js.map +1 -0
- package/dist/execution/adapters/shared/index.d.ts +8 -0
- package/dist/execution/adapters/shared/index.d.ts.map +1 -0
- package/dist/execution/adapters/shared/index.js +8 -0
- package/dist/execution/adapters/shared/index.js.map +1 -0
- package/dist/execution/executors/agent-executor-wrapper.d.ts +153 -0
- package/dist/execution/executors/agent-executor-wrapper.d.ts.map +1 -0
- package/dist/execution/executors/agent-executor-wrapper.js +652 -0
- package/dist/execution/executors/agent-executor-wrapper.js.map +1 -0
- package/dist/execution/executors/executor-factory.d.ts +95 -0
- package/dist/execution/executors/executor-factory.d.ts.map +1 -0
- package/dist/execution/executors/executor-factory.js +120 -0
- package/dist/execution/executors/executor-factory.js.map +1 -0
- package/dist/execution/output/ag-ui-adapter.d.ts +0 -2
- package/dist/execution/output/ag-ui-adapter.d.ts.map +1 -1
- package/dist/execution/output/ag-ui-adapter.js +0 -2
- package/dist/execution/output/ag-ui-adapter.js.map +1 -1
- package/dist/execution/output/index.d.ts +0 -3
- package/dist/execution/output/index.d.ts.map +1 -1
- package/dist/execution/output/index.js +0 -2
- package/dist/execution/output/index.js.map +1 -1
- package/dist/execution/output/normalized-to-ag-ui-adapter.d.ts +108 -0
- package/dist/execution/output/normalized-to-ag-ui-adapter.d.ts.map +1 -0
- package/dist/execution/output/normalized-to-ag-ui-adapter.js +321 -0
- package/dist/execution/output/normalized-to-ag-ui-adapter.js.map +1 -0
- package/dist/execution/process/builders/claude.d.ts +24 -57
- package/dist/execution/process/builders/claude.d.ts.map +1 -1
- package/dist/execution/process/builders/claude.js +153 -19
- package/dist/execution/process/builders/claude.js.map +1 -1
- package/dist/execution/transport/ipc-transport-manager.d.ts +74 -0
- package/dist/execution/transport/ipc-transport-manager.d.ts.map +1 -0
- package/dist/execution/transport/ipc-transport-manager.js +104 -0
- package/dist/execution/transport/ipc-transport-manager.js.map +1 -0
- package/dist/execution/transport/transport-manager.d.ts.map +1 -1
- package/dist/execution/transport/transport-manager.js +3 -0
- package/dist/execution/transport/transport-manager.js.map +1 -1
- package/dist/execution/worktree/conflict-detector.d.ts +85 -0
- package/dist/execution/worktree/conflict-detector.d.ts.map +1 -0
- package/dist/execution/worktree/conflict-detector.js +129 -0
- package/dist/execution/worktree/conflict-detector.js.map +1 -0
- package/dist/execution/worktree/git-cli.d.ts +9 -0
- package/dist/execution/worktree/git-cli.d.ts.map +1 -1
- package/dist/execution/worktree/git-cli.js +10 -0
- package/dist/execution/worktree/git-cli.js.map +1 -1
- package/dist/execution/worktree/git-sync-cli.d.ts +198 -0
- package/dist/execution/worktree/git-sync-cli.d.ts.map +1 -0
- package/dist/execution/worktree/git-sync-cli.js +401 -0
- package/dist/execution/worktree/git-sync-cli.js.map +1 -0
- package/dist/execution/worktree/manager.d.ts +18 -0
- package/dist/execution/worktree/manager.d.ts.map +1 -1
- package/dist/execution/worktree/manager.js +9 -3
- package/dist/execution/worktree/manager.js.map +1 -1
- package/dist/index.d.ts +1 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +124 -229
- package/dist/index.js.map +1 -1
- package/dist/middleware/project-context.d.ts +37 -0
- package/dist/middleware/project-context.d.ts.map +1 -0
- package/dist/middleware/project-context.js +91 -0
- package/dist/middleware/project-context.js.map +1 -0
- 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/assets/{react-vendor-ByUx1V_q.js → react-vendor-DiL5hC7l.js} +2 -2
- package/dist/public/assets/{react-vendor-ByUx1V_q.js.map → react-vendor-DiL5hC7l.js.map} +1 -1
- package/dist/public/assets/ui-vendor-B4WMPEfa.js +54 -0
- package/dist/public/assets/ui-vendor-B4WMPEfa.js.map +1 -0
- package/dist/public/index.html +4 -4
- package/dist/routes/agents.d.ts +3 -0
- package/dist/routes/agents.d.ts.map +1 -0
- package/dist/routes/agents.js +62 -0
- package/dist/routes/agents.js.map +1 -0
- package/dist/routes/config.d.ts +3 -0
- package/dist/routes/config.d.ts.map +1 -0
- package/dist/routes/config.js +25 -0
- package/dist/routes/config.js.map +1 -0
- package/dist/routes/editors.d.ts +15 -0
- package/dist/routes/editors.d.ts.map +1 -0
- package/dist/routes/editors.js +98 -0
- package/dist/routes/editors.js.map +1 -0
- package/dist/routes/executions-stream.d.ts +8 -5
- package/dist/routes/executions-stream.d.ts.map +1 -1
- package/dist/routes/executions-stream.js +10 -6
- package/dist/routes/executions-stream.js.map +1 -1
- package/dist/routes/executions.d.ts +6 -10
- package/dist/routes/executions.d.ts.map +1 -1
- package/dist/routes/executions.js +792 -37
- package/dist/routes/executions.js.map +1 -1
- package/dist/routes/feedback.d.ts +3 -2
- package/dist/routes/feedback.d.ts.map +1 -1
- package/dist/routes/feedback.js +12 -10
- package/dist/routes/feedback.js.map +1 -1
- package/dist/routes/files.d.ts +18 -0
- package/dist/routes/files.d.ts.map +1 -0
- package/dist/routes/files.js +89 -0
- package/dist/routes/files.js.map +1 -0
- package/dist/routes/issues.d.ts +3 -2
- package/dist/routes/issues.d.ts.map +1 -1
- package/dist/routes/issues.js +19 -18
- package/dist/routes/issues.js.map +1 -1
- package/dist/routes/projects.d.ts +11 -0
- package/dist/routes/projects.d.ts.map +1 -0
- package/dist/routes/projects.js +447 -0
- package/dist/routes/projects.js.map +1 -0
- package/dist/routes/relationships.d.ts +3 -2
- package/dist/routes/relationships.d.ts.map +1 -1
- package/dist/routes/relationships.js +12 -10
- package/dist/routes/relationships.js.map +1 -1
- package/dist/routes/repo-info.d.ts +3 -0
- package/dist/routes/repo-info.d.ts.map +1 -0
- package/dist/routes/repo-info.js +203 -0
- package/dist/routes/repo-info.js.map +1 -0
- package/dist/routes/specs.d.ts +3 -2
- package/dist/routes/specs.d.ts.map +1 -1
- package/dist/routes/specs.js +19 -18
- package/dist/routes/specs.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/agent-registry.d.ts +140 -0
- package/dist/services/agent-registry.d.ts.map +1 -0
- package/dist/services/agent-registry.js +272 -0
- package/dist/services/agent-registry.js.map +1 -0
- package/dist/services/editor-service.d.ts +57 -0
- package/dist/services/editor-service.d.ts.map +1 -0
- package/dist/services/editor-service.js +204 -0
- package/dist/services/editor-service.js.map +1 -0
- package/dist/services/execution-changes-service.d.ts +110 -0
- package/dist/services/execution-changes-service.d.ts.map +1 -0
- package/dist/services/execution-changes-service.js +700 -0
- package/dist/services/execution-changes-service.js.map +1 -0
- package/dist/services/execution-lifecycle.d.ts +1 -0
- package/dist/services/execution-lifecycle.d.ts.map +1 -1
- package/dist/services/execution-lifecycle.js +37 -7
- package/dist/services/execution-lifecycle.js.map +1 -1
- package/dist/services/execution-logs-store.d.ts +75 -0
- package/dist/services/execution-logs-store.d.ts.map +1 -1
- package/dist/services/execution-logs-store.js +142 -2
- package/dist/services/execution-logs-store.js.map +1 -1
- package/dist/services/execution-service.d.ts +82 -59
- package/dist/services/execution-service.d.ts.map +1 -1
- package/dist/services/execution-service.js +514 -469
- package/dist/services/execution-service.js.map +1 -1
- package/dist/services/execution-worker-pool.d.ts +116 -0
- package/dist/services/execution-worker-pool.d.ts.map +1 -0
- package/dist/services/execution-worker-pool.js +326 -0
- package/dist/services/execution-worker-pool.js.map +1 -0
- package/dist/services/executions.d.ts +3 -0
- package/dist/services/executions.d.ts.map +1 -1
- package/dist/services/executions.js +11 -17
- package/dist/services/executions.js.map +1 -1
- package/dist/services/export.d.ts +8 -2
- package/dist/services/export.d.ts.map +1 -1
- package/dist/services/export.js +29 -23
- package/dist/services/export.js.map +1 -1
- package/dist/services/file-search/git-ls-files-strategy.d.ts +72 -0
- package/dist/services/file-search/git-ls-files-strategy.d.ts.map +1 -0
- package/dist/services/file-search/git-ls-files-strategy.js +176 -0
- package/dist/services/file-search/git-ls-files-strategy.js.map +1 -0
- package/dist/services/file-search/index.d.ts +9 -0
- package/dist/services/file-search/index.d.ts.map +1 -0
- package/dist/services/file-search/index.js +10 -0
- package/dist/services/file-search/index.js.map +1 -0
- package/dist/services/file-search/registry.d.ts +97 -0
- package/dist/services/file-search/registry.d.ts.map +1 -0
- package/dist/services/file-search/registry.js +140 -0
- package/dist/services/file-search/registry.js.map +1 -0
- package/dist/services/file-search/strategy.d.ts +58 -0
- package/dist/services/file-search/strategy.d.ts.map +1 -0
- package/dist/services/file-search/strategy.js +8 -0
- package/dist/services/file-search/strategy.js.map +1 -0
- package/dist/services/project-context.d.ts +69 -0
- package/dist/services/project-context.d.ts.map +1 -0
- package/dist/services/project-context.js +113 -0
- package/dist/services/project-context.js.map +1 -0
- package/dist/services/project-manager.d.ts +95 -0
- package/dist/services/project-manager.d.ts.map +1 -0
- package/dist/services/project-manager.js +388 -0
- package/dist/services/project-manager.js.map +1 -0
- package/dist/services/project-registry.d.ts +98 -0
- package/dist/services/project-registry.d.ts.map +1 -0
- package/dist/services/project-registry.js +289 -0
- package/dist/services/project-registry.js.map +1 -0
- package/dist/services/prompt-resolver.d.ts +97 -0
- package/dist/services/prompt-resolver.d.ts.map +1 -0
- package/dist/services/prompt-resolver.js +377 -0
- package/dist/services/prompt-resolver.js.map +1 -0
- package/dist/services/repo-info.d.ts +12 -0
- package/dist/services/repo-info.d.ts.map +1 -1
- package/dist/services/repo-info.js +46 -0
- package/dist/services/repo-info.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/watcher.d.ts +3 -4
- package/dist/services/watcher.d.ts.map +1 -1
- package/dist/services/watcher.js +18 -35
- package/dist/services/watcher.js.map +1 -1
- package/dist/services/websocket.d.ts +30 -16
- package/dist/services/websocket.d.ts.map +1 -1
- package/dist/services/websocket.js +102 -37
- package/dist/services/websocket.js.map +1 -1
- package/dist/services/worktree-sync-service.d.ts +326 -0
- package/dist/services/worktree-sync-service.d.ts.map +1 -0
- package/dist/services/worktree-sync-service.js +1091 -0
- package/dist/services/worktree-sync-service.js.map +1 -0
- package/dist/types/editor.d.ts +49 -0
- package/dist/types/editor.d.ts.map +1 -0
- package/dist/types/editor.js +50 -0
- package/dist/types/editor.js.map +1 -0
- package/dist/types/project.d.ts +58 -0
- package/dist/types/project.d.ts.map +1 -0
- package/dist/types/project.js +10 -0
- package/dist/types/project.js.map +1 -0
- package/dist/utils/executable-check.d.ts +36 -0
- package/dist/utils/executable-check.d.ts.map +1 -0
- package/dist/utils/executable-check.js +79 -0
- package/dist/utils/executable-check.js.map +1 -0
- package/dist/workers/execution-worker.d.ts +18 -0
- package/dist/workers/execution-worker.d.ts.map +1 -0
- package/dist/workers/execution-worker.js +340 -0
- package/dist/workers/execution-worker.js.map +1 -0
- package/dist/workers/worker-ipc.d.ts +84 -0
- package/dist/workers/worker-ipc.d.ts.map +1 -0
- package/dist/workers/worker-ipc.js +29 -0
- package/dist/workers/worker-ipc.js.map +1 -0
- package/package.json +6 -5
- package/dist/execution/output/ag-ui-integration.d.ts +0 -96
- package/dist/execution/output/ag-ui-integration.d.ts.map +0 -1
- package/dist/execution/output/ag-ui-integration.js +0 -96
- package/dist/execution/output/ag-ui-integration.js.map +0 -1
- package/dist/execution/output/claude-code-output-processor.d.ts +0 -321
- package/dist/execution/output/claude-code-output-processor.d.ts.map +0 -1
- package/dist/execution/output/claude-code-output-processor.js +0 -769
- package/dist/execution/output/claude-code-output-processor.js.map +0 -1
- package/dist/public/assets/index-B3SEMufD.js +0 -580
- package/dist/public/assets/index-B3SEMufD.js.map +0 -1
- package/dist/public/assets/index-D2YGL3gX.css +0 -1
- package/dist/public/assets/ui-vendor-CotR6bx9.js +0 -54
- package/dist/public/assets/ui-vendor-CotR6bx9.js.map +0 -1
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git Sync CLI Wrapper
|
|
3
|
+
*
|
|
4
|
+
* Extends git CLI operations with sync-specific functionality for worktree-to-local synchronization.
|
|
5
|
+
* Provides conflict detection, diff analysis, and merge operations without modifying the working tree.
|
|
6
|
+
*
|
|
7
|
+
* @module execution/worktree/git-sync-cli
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Result of diff operation between two commits
|
|
11
|
+
*/
|
|
12
|
+
export interface DiffResult {
|
|
13
|
+
files: string[];
|
|
14
|
+
additions: number;
|
|
15
|
+
deletions: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Result of conflict check operation
|
|
19
|
+
*/
|
|
20
|
+
export interface ConflictCheckResult {
|
|
21
|
+
hasConflicts: boolean;
|
|
22
|
+
conflictingFiles: string[];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Result of cherry-pick operation
|
|
26
|
+
*/
|
|
27
|
+
export interface CherryPickResult {
|
|
28
|
+
success: boolean;
|
|
29
|
+
conflictingCommit?: string;
|
|
30
|
+
conflictingFiles?: string[];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Commit information
|
|
34
|
+
*/
|
|
35
|
+
export interface Commit {
|
|
36
|
+
sha: string;
|
|
37
|
+
author: string;
|
|
38
|
+
email: string;
|
|
39
|
+
timestamp: number;
|
|
40
|
+
message: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* GitSyncCli - Git operations for worktree sync
|
|
44
|
+
*
|
|
45
|
+
* Provides sync-specific git operations:
|
|
46
|
+
* - Merge base detection
|
|
47
|
+
* - Diff analysis
|
|
48
|
+
* - Conflict detection (dry-run)
|
|
49
|
+
* - Squash merge
|
|
50
|
+
* - Cherry-pick operations
|
|
51
|
+
* - Working tree status checks
|
|
52
|
+
*/
|
|
53
|
+
export declare class GitSyncCli {
|
|
54
|
+
private repoPath;
|
|
55
|
+
constructor(repoPath: string);
|
|
56
|
+
/**
|
|
57
|
+
* Execute a git command
|
|
58
|
+
*
|
|
59
|
+
* @param command - Git command to execute
|
|
60
|
+
* @param cwd - Working directory (defaults to repoPath)
|
|
61
|
+
* @returns Command output
|
|
62
|
+
* @throws WorktreeError on failure
|
|
63
|
+
*/
|
|
64
|
+
protected execGit(command: string, cwd?: string): string;
|
|
65
|
+
/**
|
|
66
|
+
* Escape shell argument
|
|
67
|
+
*
|
|
68
|
+
* @param arg - Argument to escape
|
|
69
|
+
* @returns Escaped argument
|
|
70
|
+
*/
|
|
71
|
+
private escapeShellArg;
|
|
72
|
+
/**
|
|
73
|
+
* Validate commit SHA format
|
|
74
|
+
*
|
|
75
|
+
* @param sha - Commit SHA to validate
|
|
76
|
+
* @returns true if valid SHA format
|
|
77
|
+
*/
|
|
78
|
+
private isValidSha;
|
|
79
|
+
/**
|
|
80
|
+
* Find common ancestor between two branches
|
|
81
|
+
* Equivalent to: git merge-base <branch1> <branch2>
|
|
82
|
+
*
|
|
83
|
+
* @param branch1 - First branch name or commit SHA
|
|
84
|
+
* @param branch2 - Second branch name or commit SHA
|
|
85
|
+
* @returns Commit SHA of merge base
|
|
86
|
+
* @throws WorktreeError if merge base cannot be found
|
|
87
|
+
*/
|
|
88
|
+
getMergeBase(branch1: string, branch2: string): string;
|
|
89
|
+
/**
|
|
90
|
+
* Get diff between two commits
|
|
91
|
+
* Equivalent to: git diff --name-status --numstat <from>..<to>
|
|
92
|
+
*
|
|
93
|
+
* @param fromCommit - Starting commit SHA
|
|
94
|
+
* @param toCommit - Ending commit SHA
|
|
95
|
+
* @returns Diff result with file list and line counts
|
|
96
|
+
*/
|
|
97
|
+
getDiff(fromCommit: string, toCommit: string): DiffResult;
|
|
98
|
+
/**
|
|
99
|
+
* Check if merge would conflict WITHOUT modifying working tree
|
|
100
|
+
* Detects files that changed in both branches since merge base
|
|
101
|
+
*
|
|
102
|
+
* @param sourceBranch - Source branch to merge from
|
|
103
|
+
* @param targetBranch - Target branch to merge into
|
|
104
|
+
* @returns Conflict check result
|
|
105
|
+
*/
|
|
106
|
+
checkMergeConflicts(sourceBranch: string, targetBranch: string): ConflictCheckResult;
|
|
107
|
+
/**
|
|
108
|
+
* Get list of files changed between two refs
|
|
109
|
+
* Equivalent to: git diff --name-only <fromRef>..<toRef>
|
|
110
|
+
*
|
|
111
|
+
* @param fromRef - Starting reference
|
|
112
|
+
* @param toRef - Ending reference
|
|
113
|
+
* @returns Array of changed file paths
|
|
114
|
+
*/
|
|
115
|
+
private getChangedFiles;
|
|
116
|
+
/**
|
|
117
|
+
* Perform squash merge
|
|
118
|
+
* Equivalent to: git merge --squash <source>
|
|
119
|
+
*
|
|
120
|
+
* Note: This modifies the working tree. Caller should ensure clean state.
|
|
121
|
+
* The target branch must be the current checked-out branch.
|
|
122
|
+
*
|
|
123
|
+
* @param sourceBranch - Source branch to squash merge
|
|
124
|
+
* @param message - Commit message for the squash commit
|
|
125
|
+
* @throws WorktreeError if merge fails
|
|
126
|
+
*/
|
|
127
|
+
squashMerge(sourceBranch: string, message: string): void;
|
|
128
|
+
/**
|
|
129
|
+
* Cherry-pick range of commits
|
|
130
|
+
* Equivalent to: git cherry-pick <start>..<end>
|
|
131
|
+
*
|
|
132
|
+
* Note: This modifies the working tree. May stop on conflicts.
|
|
133
|
+
*
|
|
134
|
+
* @param startCommit - Starting commit SHA (exclusive)
|
|
135
|
+
* @param endCommit - Ending commit SHA (inclusive)
|
|
136
|
+
* @returns Cherry-pick result
|
|
137
|
+
*/
|
|
138
|
+
cherryPickRange(startCommit: string, endCommit: string): CherryPickResult;
|
|
139
|
+
/**
|
|
140
|
+
* Get list of commits between two refs
|
|
141
|
+
* Equivalent to: git log --format='%H|%an|%ae|%at|%s' <base>..<head>
|
|
142
|
+
*
|
|
143
|
+
* @param baseRef - Base reference (exclusive)
|
|
144
|
+
* @param headRef - Head reference (inclusive)
|
|
145
|
+
* @returns Array of commits
|
|
146
|
+
*/
|
|
147
|
+
getCommitList(baseRef: string, headRef: string): Commit[];
|
|
148
|
+
/**
|
|
149
|
+
* Check if working tree is clean (no uncommitted changes)
|
|
150
|
+
* Equivalent to: git status --porcelain
|
|
151
|
+
*
|
|
152
|
+
* @returns true if working tree is clean, false otherwise
|
|
153
|
+
*/
|
|
154
|
+
isWorkingTreeClean(): boolean;
|
|
155
|
+
/**
|
|
156
|
+
* Create safety tag for rollback
|
|
157
|
+
* Equivalent to: git tag -a <tagName> <ref> -m "message"
|
|
158
|
+
*
|
|
159
|
+
* @param tagName - Name of the tag (e.g., "sudocode-sync-before-abc123")
|
|
160
|
+
* @param ref - Reference to tag (commit SHA or branch name)
|
|
161
|
+
* @throws WorktreeError if tag creation fails
|
|
162
|
+
*/
|
|
163
|
+
createSafetyTag(tagName: string, ref: string): void;
|
|
164
|
+
/**
|
|
165
|
+
* Get list of uncommitted files, optionally filtered by pattern
|
|
166
|
+
* Equivalent to: git status --porcelain [pattern]
|
|
167
|
+
*
|
|
168
|
+
* @param pattern - Optional glob pattern to filter files (e.g., "*.jsonl")
|
|
169
|
+
* @returns Array of uncommitted file paths
|
|
170
|
+
*/
|
|
171
|
+
getUncommittedFiles(pattern?: string): string[];
|
|
172
|
+
/**
|
|
173
|
+
* Get uncommitted file stats including additions and deletions
|
|
174
|
+
* Combines both modified and untracked files
|
|
175
|
+
*
|
|
176
|
+
* @returns Stats about uncommitted changes
|
|
177
|
+
*/
|
|
178
|
+
getUncommittedStats(): {
|
|
179
|
+
files: string[];
|
|
180
|
+
additions: number;
|
|
181
|
+
deletions: number;
|
|
182
|
+
};
|
|
183
|
+
/**
|
|
184
|
+
* Get current HEAD commit SHA
|
|
185
|
+
* Equivalent to: git rev-parse HEAD
|
|
186
|
+
*
|
|
187
|
+
* @returns Current HEAD commit SHA
|
|
188
|
+
*/
|
|
189
|
+
private getCurrentCommit;
|
|
190
|
+
/**
|
|
191
|
+
* Get list of files with merge conflicts
|
|
192
|
+
* Equivalent to: git diff --name-only --diff-filter=U
|
|
193
|
+
*
|
|
194
|
+
* @returns Array of conflicting file paths
|
|
195
|
+
*/
|
|
196
|
+
private getConflictingFiles;
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=git-sync-cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-sync-cli.d.ts","sourceRoot":"","sources":["../../../src/execution/worktree/git-sync-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;GAUG;AACH,qBAAa,UAAU;IACT,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,MAAM;IAEpC;;;;;;;OAOG;IACH,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM;IAoBxD;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAKtB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAIlB;;;;;;;;OAQG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAkBtD;;;;;;;OAOG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU;IAyCzD;;;;;;;OAOG;IACH,mBAAmB,CACjB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,mBAAmB;IAyBtB;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IAavB;;;;;;;;;;OAUG;IACH,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAaxD;;;;;;;;;OASG;IACH,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB;IAkCzE;;;;;;;OAOG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IA6BzD;;;;;OAKG;IACH,kBAAkB,IAAI,OAAO;IAU7B;;;;;;;OAOG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAUnD;;;;;;OAMG;IACH,mBAAmB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAkB/C;;;;;OAKG;IACH,mBAAmB,IAAI;QACrB,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB;IAmDD;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;CAW5B"}
|
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git Sync CLI Wrapper
|
|
3
|
+
*
|
|
4
|
+
* Extends git CLI operations with sync-specific functionality for worktree-to-local synchronization.
|
|
5
|
+
* Provides conflict detection, diff analysis, and merge operations without modifying the working tree.
|
|
6
|
+
*
|
|
7
|
+
* @module execution/worktree/git-sync-cli
|
|
8
|
+
*/
|
|
9
|
+
import { execSync } from 'child_process';
|
|
10
|
+
import { WorktreeError, WorktreeErrorCode } from './types.js';
|
|
11
|
+
/**
|
|
12
|
+
* GitSyncCli - Git operations for worktree sync
|
|
13
|
+
*
|
|
14
|
+
* Provides sync-specific git operations:
|
|
15
|
+
* - Merge base detection
|
|
16
|
+
* - Diff analysis
|
|
17
|
+
* - Conflict detection (dry-run)
|
|
18
|
+
* - Squash merge
|
|
19
|
+
* - Cherry-pick operations
|
|
20
|
+
* - Working tree status checks
|
|
21
|
+
*/
|
|
22
|
+
export class GitSyncCli {
|
|
23
|
+
repoPath;
|
|
24
|
+
constructor(repoPath) {
|
|
25
|
+
this.repoPath = repoPath;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Execute a git command
|
|
29
|
+
*
|
|
30
|
+
* @param command - Git command to execute
|
|
31
|
+
* @param cwd - Working directory (defaults to repoPath)
|
|
32
|
+
* @returns Command output
|
|
33
|
+
* @throws WorktreeError on failure
|
|
34
|
+
*/
|
|
35
|
+
execGit(command, cwd) {
|
|
36
|
+
try {
|
|
37
|
+
return execSync(command, {
|
|
38
|
+
cwd: cwd || this.repoPath,
|
|
39
|
+
encoding: 'utf8',
|
|
40
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
const stderr = error.stderr?.toString() || '';
|
|
45
|
+
const stdout = error.stdout?.toString() || '';
|
|
46
|
+
const message = stderr || stdout || error.message || 'Unknown git error';
|
|
47
|
+
throw new WorktreeError(`Git command failed: ${command}\n${message}`, WorktreeErrorCode.GIT_ERROR, error);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Escape shell argument
|
|
52
|
+
*
|
|
53
|
+
* @param arg - Argument to escape
|
|
54
|
+
* @returns Escaped argument
|
|
55
|
+
*/
|
|
56
|
+
escapeShellArg(arg) {
|
|
57
|
+
// Escape single quotes and wrap in single quotes
|
|
58
|
+
return `'${arg.replace(/'/g, "'\\''")}'`;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Validate commit SHA format
|
|
62
|
+
*
|
|
63
|
+
* @param sha - Commit SHA to validate
|
|
64
|
+
* @returns true if valid SHA format
|
|
65
|
+
*/
|
|
66
|
+
isValidSha(sha) {
|
|
67
|
+
return /^[0-9a-f]{40}$/.test(sha);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Find common ancestor between two branches
|
|
71
|
+
* Equivalent to: git merge-base <branch1> <branch2>
|
|
72
|
+
*
|
|
73
|
+
* @param branch1 - First branch name or commit SHA
|
|
74
|
+
* @param branch2 - Second branch name or commit SHA
|
|
75
|
+
* @returns Commit SHA of merge base
|
|
76
|
+
* @throws WorktreeError if merge base cannot be found
|
|
77
|
+
*/
|
|
78
|
+
getMergeBase(branch1, branch2) {
|
|
79
|
+
const escapedBranch1 = this.escapeShellArg(branch1);
|
|
80
|
+
const escapedBranch2 = this.escapeShellArg(branch2);
|
|
81
|
+
const command = `git merge-base ${escapedBranch1} ${escapedBranch2}`;
|
|
82
|
+
const output = this.execGit(command);
|
|
83
|
+
const sha = output.trim();
|
|
84
|
+
if (!this.isValidSha(sha)) {
|
|
85
|
+
throw new WorktreeError(`Invalid merge base SHA: ${sha}`, WorktreeErrorCode.GIT_ERROR);
|
|
86
|
+
}
|
|
87
|
+
return sha;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get diff between two commits
|
|
91
|
+
* Equivalent to: git diff --name-status --numstat <from>..<to>
|
|
92
|
+
*
|
|
93
|
+
* @param fromCommit - Starting commit SHA
|
|
94
|
+
* @param toCommit - Ending commit SHA
|
|
95
|
+
* @returns Diff result with file list and line counts
|
|
96
|
+
*/
|
|
97
|
+
getDiff(fromCommit, toCommit) {
|
|
98
|
+
const escapedFrom = this.escapeShellArg(fromCommit);
|
|
99
|
+
const escapedTo = this.escapeShellArg(toCommit);
|
|
100
|
+
// Get file list with status
|
|
101
|
+
const nameStatusCmd = `git diff --name-status ${escapedFrom}..${escapedTo}`;
|
|
102
|
+
const nameStatusOutput = this.execGit(nameStatusCmd);
|
|
103
|
+
const files = nameStatusOutput
|
|
104
|
+
.split('\n')
|
|
105
|
+
.filter((line) => line.trim())
|
|
106
|
+
.map((line) => {
|
|
107
|
+
// Format: "M\tpath/to/file.ts" or "A\tpath/to/file.ts"
|
|
108
|
+
const parts = line.split('\t');
|
|
109
|
+
return parts[1] || '';
|
|
110
|
+
})
|
|
111
|
+
.filter((file) => file.length > 0);
|
|
112
|
+
// Get line counts
|
|
113
|
+
const numstatCmd = `git diff --numstat ${escapedFrom}..${escapedTo}`;
|
|
114
|
+
const numstatOutput = this.execGit(numstatCmd);
|
|
115
|
+
let additions = 0;
|
|
116
|
+
let deletions = 0;
|
|
117
|
+
numstatOutput
|
|
118
|
+
.split('\n')
|
|
119
|
+
.filter((line) => line.trim())
|
|
120
|
+
.forEach((line) => {
|
|
121
|
+
// Format: "5\t3\tpath/to/file.ts"
|
|
122
|
+
const parts = line.split('\t');
|
|
123
|
+
const add = parseInt(parts[0], 10);
|
|
124
|
+
const del = parseInt(parts[1], 10);
|
|
125
|
+
if (!isNaN(add))
|
|
126
|
+
additions += add;
|
|
127
|
+
if (!isNaN(del))
|
|
128
|
+
deletions += del;
|
|
129
|
+
});
|
|
130
|
+
return { files, additions, deletions };
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Check if merge would conflict WITHOUT modifying working tree
|
|
134
|
+
* Detects files that changed in both branches since merge base
|
|
135
|
+
*
|
|
136
|
+
* @param sourceBranch - Source branch to merge from
|
|
137
|
+
* @param targetBranch - Target branch to merge into
|
|
138
|
+
* @returns Conflict check result
|
|
139
|
+
*/
|
|
140
|
+
checkMergeConflicts(sourceBranch, targetBranch) {
|
|
141
|
+
try {
|
|
142
|
+
// Find merge base
|
|
143
|
+
const mergeBase = this.getMergeBase(sourceBranch, targetBranch);
|
|
144
|
+
// Get files changed in source branch since merge base
|
|
145
|
+
const sourceFiles = this.getChangedFiles(mergeBase, sourceBranch);
|
|
146
|
+
// Get files changed in target branch since merge base
|
|
147
|
+
const targetFiles = this.getChangedFiles(mergeBase, targetBranch);
|
|
148
|
+
// Files that changed in both branches are potential conflicts
|
|
149
|
+
const conflictingFiles = sourceFiles.filter((file) => targetFiles.includes(file));
|
|
150
|
+
return {
|
|
151
|
+
hasConflicts: conflictingFiles.length > 0,
|
|
152
|
+
conflictingFiles,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
throw error;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Get list of files changed between two refs
|
|
161
|
+
* Equivalent to: git diff --name-only <fromRef>..<toRef>
|
|
162
|
+
*
|
|
163
|
+
* @param fromRef - Starting reference
|
|
164
|
+
* @param toRef - Ending reference
|
|
165
|
+
* @returns Array of changed file paths
|
|
166
|
+
*/
|
|
167
|
+
getChangedFiles(fromRef, toRef) {
|
|
168
|
+
const escapedFrom = this.escapeShellArg(fromRef);
|
|
169
|
+
const escapedTo = this.escapeShellArg(toRef);
|
|
170
|
+
const command = `git diff --name-only ${escapedFrom}..${escapedTo}`;
|
|
171
|
+
const output = this.execGit(command);
|
|
172
|
+
return output
|
|
173
|
+
.split('\n')
|
|
174
|
+
.map((line) => line.trim())
|
|
175
|
+
.filter((line) => line.length > 0);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Perform squash merge
|
|
179
|
+
* Equivalent to: git merge --squash <source>
|
|
180
|
+
*
|
|
181
|
+
* Note: This modifies the working tree. Caller should ensure clean state.
|
|
182
|
+
* The target branch must be the current checked-out branch.
|
|
183
|
+
*
|
|
184
|
+
* @param sourceBranch - Source branch to squash merge
|
|
185
|
+
* @param message - Commit message for the squash commit
|
|
186
|
+
* @throws WorktreeError if merge fails
|
|
187
|
+
*/
|
|
188
|
+
squashMerge(sourceBranch, message) {
|
|
189
|
+
const escapedSource = this.escapeShellArg(sourceBranch);
|
|
190
|
+
const escapedMessage = this.escapeShellArg(message);
|
|
191
|
+
// Perform squash merge
|
|
192
|
+
const mergeCommand = `git merge --squash ${escapedSource}`;
|
|
193
|
+
this.execGit(mergeCommand);
|
|
194
|
+
// Create commit with provided message
|
|
195
|
+
const commitCommand = `git commit -m ${escapedMessage}`;
|
|
196
|
+
this.execGit(commitCommand);
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Cherry-pick range of commits
|
|
200
|
+
* Equivalent to: git cherry-pick <start>..<end>
|
|
201
|
+
*
|
|
202
|
+
* Note: This modifies the working tree. May stop on conflicts.
|
|
203
|
+
*
|
|
204
|
+
* @param startCommit - Starting commit SHA (exclusive)
|
|
205
|
+
* @param endCommit - Ending commit SHA (inclusive)
|
|
206
|
+
* @returns Cherry-pick result
|
|
207
|
+
*/
|
|
208
|
+
cherryPickRange(startCommit, endCommit) {
|
|
209
|
+
const escapedStart = this.escapeShellArg(startCommit);
|
|
210
|
+
const escapedEnd = this.escapeShellArg(endCommit);
|
|
211
|
+
try {
|
|
212
|
+
// Cherry-pick the range
|
|
213
|
+
// Format: start..end means all commits reachable from end but not from start
|
|
214
|
+
const command = `git cherry-pick ${escapedStart}..${escapedEnd}`;
|
|
215
|
+
this.execGit(command);
|
|
216
|
+
return { success: true };
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
// Check if it's a conflict
|
|
220
|
+
const stderr = error.cause?.stderr?.toString() || '';
|
|
221
|
+
if (stderr.includes('conflict') || stderr.includes('CONFLICT')) {
|
|
222
|
+
// Get the commit that caused conflict
|
|
223
|
+
const conflictingCommit = this.getCurrentCommit();
|
|
224
|
+
// Get conflicting files
|
|
225
|
+
const conflictingFiles = this.getConflictingFiles();
|
|
226
|
+
return {
|
|
227
|
+
success: false,
|
|
228
|
+
conflictingCommit,
|
|
229
|
+
conflictingFiles,
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
// Some other error
|
|
233
|
+
throw error;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Get list of commits between two refs
|
|
238
|
+
* Equivalent to: git log --format='%H|%an|%ae|%at|%s' <base>..<head>
|
|
239
|
+
*
|
|
240
|
+
* @param baseRef - Base reference (exclusive)
|
|
241
|
+
* @param headRef - Head reference (inclusive)
|
|
242
|
+
* @returns Array of commits
|
|
243
|
+
*/
|
|
244
|
+
getCommitList(baseRef, headRef) {
|
|
245
|
+
const escapedBase = this.escapeShellArg(baseRef);
|
|
246
|
+
const escapedHead = this.escapeShellArg(headRef);
|
|
247
|
+
// Format: SHA|author name|author email|timestamp|subject
|
|
248
|
+
const command = `git log --format='%H|%an|%ae|%at|%s' ${escapedBase}..${escapedHead}`;
|
|
249
|
+
const output = this.execGit(command);
|
|
250
|
+
const commits = [];
|
|
251
|
+
output
|
|
252
|
+
.split('\n')
|
|
253
|
+
.filter((line) => line.trim())
|
|
254
|
+
.forEach((line) => {
|
|
255
|
+
const parts = line.split('|');
|
|
256
|
+
if (parts.length >= 5) {
|
|
257
|
+
commits.push({
|
|
258
|
+
sha: parts[0],
|
|
259
|
+
author: parts[1],
|
|
260
|
+
email: parts[2],
|
|
261
|
+
timestamp: parseInt(parts[3], 10),
|
|
262
|
+
message: parts.slice(4).join('|'), // In case message contains |
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
return commits;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Check if working tree is clean (no uncommitted changes)
|
|
270
|
+
* Equivalent to: git status --porcelain
|
|
271
|
+
*
|
|
272
|
+
* @returns true if working tree is clean, false otherwise
|
|
273
|
+
*/
|
|
274
|
+
isWorkingTreeClean() {
|
|
275
|
+
try {
|
|
276
|
+
const output = this.execGit('git status --porcelain');
|
|
277
|
+
return output.trim().length === 0;
|
|
278
|
+
}
|
|
279
|
+
catch (error) {
|
|
280
|
+
// If git status fails, assume not clean
|
|
281
|
+
return false;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Create safety tag for rollback
|
|
286
|
+
* Equivalent to: git tag -a <tagName> <ref> -m "message"
|
|
287
|
+
*
|
|
288
|
+
* @param tagName - Name of the tag (e.g., "sudocode-sync-before-abc123")
|
|
289
|
+
* @param ref - Reference to tag (commit SHA or branch name)
|
|
290
|
+
* @throws WorktreeError if tag creation fails
|
|
291
|
+
*/
|
|
292
|
+
createSafetyTag(tagName, ref) {
|
|
293
|
+
const escapedTag = this.escapeShellArg(tagName);
|
|
294
|
+
const escapedRef = this.escapeShellArg(ref);
|
|
295
|
+
const message = this.escapeShellArg(`Safety snapshot before sync at ${ref}`);
|
|
296
|
+
// Use -f to force update if tag already exists (e.g., after revert and re-sync)
|
|
297
|
+
const command = `git tag -f -a ${escapedTag} ${escapedRef} -m ${message}`;
|
|
298
|
+
this.execGit(command);
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Get list of uncommitted files, optionally filtered by pattern
|
|
302
|
+
* Equivalent to: git status --porcelain [pattern]
|
|
303
|
+
*
|
|
304
|
+
* @param pattern - Optional glob pattern to filter files (e.g., "*.jsonl")
|
|
305
|
+
* @returns Array of uncommitted file paths
|
|
306
|
+
*/
|
|
307
|
+
getUncommittedFiles(pattern) {
|
|
308
|
+
const escapedPattern = pattern ? this.escapeShellArg(pattern) : '';
|
|
309
|
+
const command = `git status --porcelain ${escapedPattern}`.trim();
|
|
310
|
+
const output = this.execGit(command);
|
|
311
|
+
return output
|
|
312
|
+
.split('\n')
|
|
313
|
+
.filter((line) => line.trim())
|
|
314
|
+
.map((line) => {
|
|
315
|
+
// Format: "XY filename" where XY is status code
|
|
316
|
+
// Extract filename (handle spaces in filenames)
|
|
317
|
+
const match = line.match(/^..\s+(.+)$/);
|
|
318
|
+
return match ? match[1] : '';
|
|
319
|
+
})
|
|
320
|
+
.filter((file) => file.length > 0);
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Get uncommitted file stats including additions and deletions
|
|
324
|
+
* Combines both modified and untracked files
|
|
325
|
+
*
|
|
326
|
+
* @returns Stats about uncommitted changes
|
|
327
|
+
*/
|
|
328
|
+
getUncommittedStats() {
|
|
329
|
+
try {
|
|
330
|
+
// Get modified files with stats
|
|
331
|
+
const modifiedOutput = this.execGit('git diff --numstat');
|
|
332
|
+
// Get untracked files
|
|
333
|
+
const untrackedFiles = this.execGit('git ls-files --others --exclude-standard')
|
|
334
|
+
.split('\n')
|
|
335
|
+
.filter((line) => line.trim().length > 0);
|
|
336
|
+
// Parse modified file stats
|
|
337
|
+
let additions = 0;
|
|
338
|
+
let deletions = 0;
|
|
339
|
+
const modifiedFiles = [];
|
|
340
|
+
for (const line of modifiedOutput.split('\n')) {
|
|
341
|
+
if (!line.trim())
|
|
342
|
+
continue;
|
|
343
|
+
const parts = line.split('\t');
|
|
344
|
+
if (parts.length >= 3) {
|
|
345
|
+
const add = parts[0] === '-' ? 0 : parseInt(parts[0], 10) || 0;
|
|
346
|
+
const del = parts[1] === '-' ? 0 : parseInt(parts[1], 10) || 0;
|
|
347
|
+
additions += add;
|
|
348
|
+
deletions += del;
|
|
349
|
+
modifiedFiles.push(parts[2]);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
// Count lines in untracked files as additions (simplified)
|
|
353
|
+
// In production, you might want to actually read and count lines
|
|
354
|
+
additions += untrackedFiles.length * 10; // Rough estimate
|
|
355
|
+
// Combine all files
|
|
356
|
+
const allFiles = [...new Set([...modifiedFiles, ...untrackedFiles])];
|
|
357
|
+
return {
|
|
358
|
+
files: allFiles,
|
|
359
|
+
additions,
|
|
360
|
+
deletions,
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
catch (error) {
|
|
364
|
+
// Return empty stats on error
|
|
365
|
+
return {
|
|
366
|
+
files: [],
|
|
367
|
+
additions: 0,
|
|
368
|
+
deletions: 0,
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Get current HEAD commit SHA
|
|
374
|
+
* Equivalent to: git rev-parse HEAD
|
|
375
|
+
*
|
|
376
|
+
* @returns Current HEAD commit SHA
|
|
377
|
+
*/
|
|
378
|
+
getCurrentCommit() {
|
|
379
|
+
const output = this.execGit('git rev-parse HEAD');
|
|
380
|
+
return output.trim();
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Get list of files with merge conflicts
|
|
384
|
+
* Equivalent to: git diff --name-only --diff-filter=U
|
|
385
|
+
*
|
|
386
|
+
* @returns Array of conflicting file paths
|
|
387
|
+
*/
|
|
388
|
+
getConflictingFiles() {
|
|
389
|
+
try {
|
|
390
|
+
const output = this.execGit('git diff --name-only --diff-filter=U');
|
|
391
|
+
return output
|
|
392
|
+
.split('\n')
|
|
393
|
+
.map((line) => line.trim())
|
|
394
|
+
.filter((line) => line.length > 0);
|
|
395
|
+
}
|
|
396
|
+
catch (error) {
|
|
397
|
+
return [];
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
//# sourceMappingURL=git-sync-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-sync-cli.js","sourceRoot":"","sources":["../../../src/execution/worktree/git-sync-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -96,6 +96,22 @@ export interface IWorktreeManager {
|
|
|
96
96
|
* @returns Promise resolving to array of branch names
|
|
97
97
|
*/
|
|
98
98
|
listBranches(repoPath: string): Promise<string[]>;
|
|
99
|
+
/**
|
|
100
|
+
* Get the current branch name
|
|
101
|
+
*
|
|
102
|
+
* @param repoPath - Path to the git repository
|
|
103
|
+
* @returns Promise resolving to current branch name
|
|
104
|
+
*/
|
|
105
|
+
getCurrentBranch(repoPath: string): Promise<string>;
|
|
106
|
+
/**
|
|
107
|
+
* Create a new branch
|
|
108
|
+
*
|
|
109
|
+
* @param repoPath - Path to the git repository
|
|
110
|
+
* @param branchName - Name of the branch to create
|
|
111
|
+
* @param baseBranch - Branch or commit to base the new branch on
|
|
112
|
+
* @returns Promise that resolves when branch is created
|
|
113
|
+
*/
|
|
114
|
+
createBranch(repoPath: string, branchName: string, baseBranch: string): Promise<void>;
|
|
99
115
|
}
|
|
100
116
|
/**
|
|
101
117
|
* WorktreeManager - Implementation of IWorktreeManager
|
|
@@ -164,6 +180,8 @@ export declare class WorktreeManager implements IWorktreeManager {
|
|
|
164
180
|
getConfig(): WorktreeConfig;
|
|
165
181
|
isValidRepo(repoPath: string): Promise<boolean>;
|
|
166
182
|
listBranches(repoPath: string): Promise<string[]>;
|
|
183
|
+
getCurrentBranch(repoPath: string): Promise<string>;
|
|
184
|
+
createBranch(repoPath: string, branchName: string, baseBranch: string): Promise<void>;
|
|
167
185
|
/**
|
|
168
186
|
* Recreate a worktree (internal method)
|
|
169
187
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/execution/worktree/manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAKH,OAAO,KAAK,EACV,oBAAoB,EACpB,cAAc,EACd,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAU,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAKpD;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;OAMG;IACH,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5D;;;;;;;;;OASG;IACH,oBAAoB,CAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;;;OAOG;IACH,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExE;;;;;;;OAOG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1E;;;;;;OAMG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAEzD;;;;OAIG;IACH,SAAS,IAAI,cAAc,CAAC;IAE5B;;;;;OAKG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhD;;;;;OAKG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/execution/worktree/manager.ts"],"names":[],"mappings":"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"}
|