@herbcaudill/ralph 1.0.1 → 1.1.0
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 +93 -0
- package/dist/index.js +2480 -6
- package/dist/index.js.map +1 -1
- package/package.json +10 -9
- package/templates/core-prompt.md +3 -19
- package/templates/skills/manage-tasks/SKILL.md +0 -3
- package/templates/workflow.md +5 -19
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -102
- package/dist/cli.js.map +0 -1
- package/dist/components/App.d.ts +0 -17
- package/dist/components/App.d.ts.map +0 -1
- package/dist/components/App.js +0 -18
- package/dist/components/App.js.map +0 -1
- package/dist/components/EnhancedTextInput.d.ts +0 -22
- package/dist/components/EnhancedTextInput.d.ts.map +0 -1
- package/dist/components/EnhancedTextInput.js +0 -130
- package/dist/components/EnhancedTextInput.js.map +0 -1
- package/dist/components/EnhancedTextInput.test.d.ts +0 -2
- package/dist/components/EnhancedTextInput.test.d.ts.map +0 -1
- package/dist/components/EnhancedTextInput.test.js +0 -99
- package/dist/components/EnhancedTextInput.test.js.map +0 -1
- package/dist/components/EventDisplay.d.ts +0 -14
- package/dist/components/EventDisplay.d.ts.map +0 -1
- package/dist/components/EventDisplay.js +0 -91
- package/dist/components/EventDisplay.js.map +0 -1
- package/dist/components/EventDisplay.replay.test.d.ts +0 -2
- package/dist/components/EventDisplay.replay.test.d.ts.map +0 -1
- package/dist/components/EventDisplay.replay.test.js +0 -379
- package/dist/components/EventDisplay.replay.test.js.map +0 -1
- package/dist/components/EventDisplay.test.d.ts +0 -2
- package/dist/components/EventDisplay.test.d.ts.map +0 -1
- package/dist/components/EventDisplay.test.js +0 -349
- package/dist/components/EventDisplay.test.js.map +0 -1
- package/dist/components/FullScreenLayout.d.ts +0 -15
- package/dist/components/FullScreenLayout.d.ts.map +0 -1
- package/dist/components/FullScreenLayout.js +0 -20
- package/dist/components/FullScreenLayout.js.map +0 -1
- package/dist/components/Header.d.ts +0 -10
- package/dist/components/Header.d.ts.map +0 -1
- package/dist/components/Header.js +0 -22
- package/dist/components/Header.js.map +0 -1
- package/dist/components/Header.test.d.ts +0 -2
- package/dist/components/Header.test.d.ts.map +0 -1
- package/dist/components/Header.test.js +0 -27
- package/dist/components/Header.test.js.map +0 -1
- package/dist/components/InitRalph.d.ts +0 -8
- package/dist/components/InitRalph.d.ts.map +0 -1
- package/dist/components/InitRalph.js +0 -136
- package/dist/components/InitRalph.js.map +0 -1
- package/dist/components/IterationRunner.d.ts +0 -10
- package/dist/components/IterationRunner.d.ts.map +0 -1
- package/dist/components/IterationRunner.js +0 -536
- package/dist/components/IterationRunner.js.map +0 -1
- package/dist/components/IterationRunner.test.d.ts +0 -46
- package/dist/components/IterationRunner.test.d.ts.map +0 -1
- package/dist/components/IterationRunner.test.js +0 -69
- package/dist/components/IterationRunner.test.js.map +0 -1
- package/dist/components/IterationRunner.types.d.ts +0 -30
- package/dist/components/IterationRunner.types.d.ts.map +0 -1
- package/dist/components/IterationRunner.types.js +0 -2
- package/dist/components/IterationRunner.types.js.map +0 -1
- package/dist/components/JsonOutput.d.ts +0 -13
- package/dist/components/JsonOutput.d.ts.map +0 -1
- package/dist/components/JsonOutput.js +0 -269
- package/dist/components/JsonOutput.js.map +0 -1
- package/dist/components/JsonOutput.test.d.ts +0 -2
- package/dist/components/JsonOutput.test.d.ts.map +0 -1
- package/dist/components/JsonOutput.test.js +0 -39
- package/dist/components/JsonOutput.test.js.map +0 -1
- package/dist/components/ProgressBar.d.ts +0 -18
- package/dist/components/ProgressBar.d.ts.map +0 -1
- package/dist/components/ProgressBar.js +0 -30
- package/dist/components/ProgressBar.js.map +0 -1
- package/dist/components/ProgressBar.test.d.ts +0 -2
- package/dist/components/ProgressBar.test.d.ts.map +0 -1
- package/dist/components/ProgressBar.test.js +0 -55
- package/dist/components/ProgressBar.test.js.map +0 -1
- package/dist/components/ReplayLog.d.ts +0 -7
- package/dist/components/ReplayLog.d.ts.map +0 -1
- package/dist/components/ReplayLog.js +0 -57
- package/dist/components/ReplayLog.js.map +0 -1
- package/dist/components/StreamingText.d.ts +0 -11
- package/dist/components/StreamingText.d.ts.map +0 -1
- package/dist/components/StreamingText.js +0 -37
- package/dist/components/StreamingText.js.map +0 -1
- package/dist/components/StreamingText.test.d.ts +0 -2
- package/dist/components/StreamingText.test.d.ts.map +0 -1
- package/dist/components/StreamingText.test.js +0 -125
- package/dist/components/StreamingText.test.js.map +0 -1
- package/dist/components/ToolUse.d.ts +0 -16
- package/dist/components/ToolUse.d.ts.map +0 -1
- package/dist/components/ToolUse.js +0 -11
- package/dist/components/ToolUse.js.map +0 -1
- package/dist/components/ToolUse.test.d.ts +0 -2
- package/dist/components/ToolUse.test.d.ts.map +0 -1
- package/dist/components/ToolUse.test.js +0 -43
- package/dist/components/ToolUse.test.js.map +0 -1
- package/dist/components/blocksToLines.d.ts +0 -6
- package/dist/components/blocksToLines.d.ts.map +0 -1
- package/dist/components/blocksToLines.js +0 -15
- package/dist/components/blocksToLines.js.map +0 -1
- package/dist/components/eventToBlocks.d.ts +0 -22
- package/dist/components/eventToBlocks.d.ts.map +0 -1
- package/dist/components/eventToBlocks.js +0 -166
- package/dist/components/eventToBlocks.js.map +0 -1
- package/dist/components/eventToBlocks.test.d.ts +0 -2
- package/dist/components/eventToBlocks.test.d.ts.map +0 -1
- package/dist/components/eventToBlocks.test.js +0 -466
- package/dist/components/eventToBlocks.test.js.map +0 -1
- package/dist/components/findNextWordBoundary.d.ts +0 -10
- package/dist/components/findNextWordBoundary.d.ts.map +0 -1
- package/dist/components/findNextWordBoundary.js +0 -23
- package/dist/components/findNextWordBoundary.js.map +0 -1
- package/dist/components/findPreviousWordBoundary.d.ts +0 -10
- package/dist/components/findPreviousWordBoundary.d.ts.map +0 -1
- package/dist/components/findPreviousWordBoundary.js +0 -23
- package/dist/components/findPreviousWordBoundary.js.map +0 -1
- package/dist/components/processEvents.d.ts +0 -11
- package/dist/components/processEvents.d.ts.map +0 -1
- package/dist/components/processEvents.js +0 -87
- package/dist/components/processEvents.js.map +0 -1
- package/dist/components/renderStaticItem.d.ts +0 -7
- package/dist/components/renderStaticItem.d.ts.map +0 -1
- package/dist/components/renderStaticItem.js +0 -23
- package/dist/components/renderStaticItem.js.map +0 -1
- package/dist/components/replay.d.ts +0 -5
- package/dist/components/replay.d.ts.map +0 -1
- package/dist/components/replay.js +0 -49
- package/dist/components/replay.js.map +0 -1
- package/dist/components/test-helpers/ControlledInput.d.ts +0 -14
- package/dist/components/test-helpers/ControlledInput.d.ts.map +0 -1
- package/dist/components/test-helpers/ControlledInput.js +0 -15
- package/dist/components/test-helpers/ControlledInput.js.map +0 -1
- package/dist/components/useContentHeight.d.ts +0 -9
- package/dist/components/useContentHeight.d.ts.map +0 -1
- package/dist/components/useContentHeight.js +0 -16
- package/dist/components/useContentHeight.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
- package/dist/lib/MessageQueue.d.ts +0 -33
- package/dist/lib/MessageQueue.d.ts.map +0 -1
- package/dist/lib/MessageQueue.js +0 -96
- package/dist/lib/MessageQueue.js.map +0 -1
- package/dist/lib/MessageQueue.test.d.ts +0 -2
- package/dist/lib/MessageQueue.test.d.ts.map +0 -1
- package/dist/lib/MessageQueue.test.js +0 -224
- package/dist/lib/MessageQueue.test.js.map +0 -1
- package/dist/lib/StdinCommandHandler.d.ts +0 -48
- package/dist/lib/StdinCommandHandler.d.ts.map +0 -1
- package/dist/lib/StdinCommandHandler.js +0 -95
- package/dist/lib/StdinCommandHandler.js.map +0 -1
- package/dist/lib/StdinCommandHandler.test.d.ts +0 -2
- package/dist/lib/StdinCommandHandler.test.d.ts.map +0 -1
- package/dist/lib/StdinCommandHandler.test.js +0 -93
- package/dist/lib/StdinCommandHandler.test.js.map +0 -1
- package/dist/lib/WorktreeManager.d.ts +0 -114
- package/dist/lib/WorktreeManager.d.ts.map +0 -1
- package/dist/lib/WorktreeManager.js +0 -350
- package/dist/lib/WorktreeManager.js.map +0 -1
- package/dist/lib/WorktreeManager.test.d.ts +0 -2
- package/dist/lib/WorktreeManager.test.d.ts.map +0 -1
- package/dist/lib/WorktreeManager.test.js +0 -261
- package/dist/lib/WorktreeManager.test.js.map +0 -1
- package/dist/lib/addTodo.d.ts +0 -11
- package/dist/lib/addTodo.d.ts.map +0 -1
- package/dist/lib/addTodo.js +0 -51
- package/dist/lib/addTodo.js.map +0 -1
- package/dist/lib/beadsClient.d.ts +0 -46
- package/dist/lib/beadsClient.d.ts.map +0 -1
- package/dist/lib/beadsClient.js +0 -172
- package/dist/lib/beadsClient.js.map +0 -1
- package/dist/lib/captureBeadsSnapshot.d.ts +0 -4
- package/dist/lib/captureBeadsSnapshot.d.ts.map +0 -1
- package/dist/lib/captureBeadsSnapshot.js +0 -24
- package/dist/lib/captureBeadsSnapshot.js.map +0 -1
- package/dist/lib/captureStartupSnapshot.d.ts +0 -10
- package/dist/lib/captureStartupSnapshot.d.ts.map +0 -1
- package/dist/lib/captureStartupSnapshot.js +0 -29
- package/dist/lib/captureStartupSnapshot.js.map +0 -1
- package/dist/lib/captureTodoSnapshot.d.ts +0 -4
- package/dist/lib/captureTodoSnapshot.d.ts.map +0 -1
- package/dist/lib/captureTodoSnapshot.js +0 -24
- package/dist/lib/captureTodoSnapshot.js.map +0 -1
- package/dist/lib/copyTemplates.d.ts +0 -22
- package/dist/lib/copyTemplates.d.ts.map +0 -1
- package/dist/lib/copyTemplates.js +0 -32
- package/dist/lib/copyTemplates.js.map +0 -1
- package/dist/lib/createStdinCommandHandler.d.ts +0 -28
- package/dist/lib/createStdinCommandHandler.d.ts.map +0 -1
- package/dist/lib/createStdinCommandHandler.js +0 -67
- package/dist/lib/createStdinCommandHandler.js.map +0 -1
- package/dist/lib/createUserMessage.d.ts +0 -6
- package/dist/lib/createUserMessage.d.ts.map +0 -1
- package/dist/lib/createUserMessage.js +0 -13
- package/dist/lib/createUserMessage.js.map +0 -1
- package/dist/lib/debug.d.ts +0 -19
- package/dist/lib/debug.d.ts.map +0 -1
- package/dist/lib/debug.js +0 -54
- package/dist/lib/debug.js.map +0 -1
- package/dist/lib/findMaxLogNumber.d.ts +0 -6
- package/dist/lib/findMaxLogNumber.d.ts.map +0 -1
- package/dist/lib/findMaxLogNumber.js +0 -26
- package/dist/lib/findMaxLogNumber.js.map +0 -1
- package/dist/lib/findMaxLogNumber.test.d.ts +0 -2
- package/dist/lib/findMaxLogNumber.test.d.ts.map +0 -1
- package/dist/lib/findMaxLogNumber.test.js +0 -39
- package/dist/lib/findMaxLogNumber.test.js.map +0 -1
- package/dist/lib/formatContentBlock.d.ts +0 -6
- package/dist/lib/formatContentBlock.d.ts.map +0 -1
- package/dist/lib/formatContentBlock.js +0 -18
- package/dist/lib/formatContentBlock.js.map +0 -1
- package/dist/lib/formatIterationHeader.d.ts +0 -5
- package/dist/lib/formatIterationHeader.d.ts.map +0 -1
- package/dist/lib/formatIterationHeader.js +0 -8
- package/dist/lib/formatIterationHeader.js.map +0 -1
- package/dist/lib/formatText.d.ts +0 -5
- package/dist/lib/formatText.d.ts.map +0 -1
- package/dist/lib/formatText.js +0 -33
- package/dist/lib/formatText.js.map +0 -1
- package/dist/lib/formatToolUse.d.ts +0 -7
- package/dist/lib/formatToolUse.d.ts.map +0 -1
- package/dist/lib/formatToolUse.js +0 -14
- package/dist/lib/formatToolUse.js.map +0 -1
- package/dist/lib/formatUserMessage.d.ts +0 -5
- package/dist/lib/formatUserMessage.d.ts.map +0 -1
- package/dist/lib/formatUserMessage.js +0 -8
- package/dist/lib/formatUserMessage.js.map +0 -1
- package/dist/lib/getBaseCwd.d.ts +0 -6
- package/dist/lib/getBaseCwd.d.ts.map +0 -1
- package/dist/lib/getBaseCwd.js +0 -6
- package/dist/lib/getBaseCwd.js.map +0 -1
- package/dist/lib/getBeadsProgress.d.ts +0 -8
- package/dist/lib/getBeadsProgress.d.ts.map +0 -1
- package/dist/lib/getBeadsProgress.js +0 -35
- package/dist/lib/getBeadsProgress.js.map +0 -1
- package/dist/lib/getClaudeVersion.d.ts +0 -6
- package/dist/lib/getClaudeVersion.d.ts.map +0 -1
- package/dist/lib/getClaudeVersion.js +0 -21
- package/dist/lib/getClaudeVersion.js.map +0 -1
- package/dist/lib/getClaudeVersion.test.d.ts +0 -2
- package/dist/lib/getClaudeVersion.test.d.ts.map +0 -1
- package/dist/lib/getClaudeVersion.test.js +0 -39
- package/dist/lib/getClaudeVersion.test.js.map +0 -1
- package/dist/lib/getDefaultIterations.d.ts +0 -6
- package/dist/lib/getDefaultIterations.d.ts.map +0 -1
- package/dist/lib/getDefaultIterations.js +0 -14
- package/dist/lib/getDefaultIterations.js.map +0 -1
- package/dist/lib/getDefaultIterations.test.d.ts +0 -2
- package/dist/lib/getDefaultIterations.test.d.ts.map +0 -1
- package/dist/lib/getDefaultIterations.test.js +0 -39
- package/dist/lib/getDefaultIterations.test.js.map +0 -1
- package/dist/lib/getLatestLogFile.d.ts +0 -6
- package/dist/lib/getLatestLogFile.d.ts.map +0 -1
- package/dist/lib/getLatestLogFile.js +0 -15
- package/dist/lib/getLatestLogFile.js.map +0 -1
- package/dist/lib/getNextLogFile.d.ts +0 -7
- package/dist/lib/getNextLogFile.d.ts.map +0 -1
- package/dist/lib/getNextLogFile.js +0 -18
- package/dist/lib/getNextLogFile.js.map +0 -1
- package/dist/lib/getNextLogFile.test.d.ts +0 -2
- package/dist/lib/getNextLogFile.test.d.ts.map +0 -1
- package/dist/lib/getNextLogFile.test.js +0 -66
- package/dist/lib/getNextLogFile.test.js.map +0 -1
- package/dist/lib/getOpenIssueCount.d.ts +0 -6
- package/dist/lib/getOpenIssueCount.d.ts.map +0 -1
- package/dist/lib/getOpenIssueCount.js +0 -19
- package/dist/lib/getOpenIssueCount.js.map +0 -1
- package/dist/lib/getOpenIssueCount.test.d.ts +0 -2
- package/dist/lib/getOpenIssueCount.test.d.ts.map +0 -1
- package/dist/lib/getOpenIssueCount.test.js +0 -31
- package/dist/lib/getOpenIssueCount.test.js.map +0 -1
- package/dist/lib/getProgress.d.ts +0 -14
- package/dist/lib/getProgress.d.ts.map +0 -1
- package/dist/lib/getProgress.js +0 -30
- package/dist/lib/getProgress.js.map +0 -1
- package/dist/lib/getProgress.test.d.ts +0 -2
- package/dist/lib/getProgress.test.d.ts.map +0 -1
- package/dist/lib/getProgress.test.js +0 -218
- package/dist/lib/getProgress.test.js.map +0 -1
- package/dist/lib/getPromptContent.d.ts +0 -8
- package/dist/lib/getPromptContent.d.ts.map +0 -1
- package/dist/lib/getPromptContent.js +0 -31
- package/dist/lib/getPromptContent.js.map +0 -1
- package/dist/lib/getTerminalSize.d.ts +0 -8
- package/dist/lib/getTerminalSize.d.ts.map +0 -1
- package/dist/lib/getTerminalSize.js +0 -10
- package/dist/lib/getTerminalSize.js.map +0 -1
- package/dist/lib/getTodoProgress.d.ts +0 -4
- package/dist/lib/getTodoProgress.d.ts.map +0 -1
- package/dist/lib/getTodoProgress.js +0 -22
- package/dist/lib/getTodoProgress.js.map +0 -1
- package/dist/lib/insertTodo.d.ts +0 -7
- package/dist/lib/insertTodo.d.ts.map +0 -1
- package/dist/lib/insertTodo.js +0 -22
- package/dist/lib/insertTodo.js.map +0 -1
- package/dist/lib/outputEvent.d.ts +0 -5
- package/dist/lib/outputEvent.d.ts.map +0 -1
- package/dist/lib/outputEvent.js +0 -7
- package/dist/lib/outputEvent.js.map +0 -1
- package/dist/lib/parseStdinCommand.d.ts +0 -25
- package/dist/lib/parseStdinCommand.d.ts.map +0 -1
- package/dist/lib/parseStdinCommand.js +0 -43
- package/dist/lib/parseStdinCommand.js.map +0 -1
- package/dist/lib/parseStdinCommand.test.d.ts +0 -2
- package/dist/lib/parseStdinCommand.test.d.ts.map +0 -1
- package/dist/lib/parseStdinCommand.test.js +0 -93
- package/dist/lib/parseStdinCommand.test.js.map +0 -1
- package/dist/lib/parseTaskLifecycle.d.ts +0 -18
- package/dist/lib/parseTaskLifecycle.d.ts.map +0 -1
- package/dist/lib/parseTaskLifecycle.js +0 -30
- package/dist/lib/parseTaskLifecycle.js.map +0 -1
- package/dist/lib/parseTaskLifecycle.test.d.ts +0 -2
- package/dist/lib/parseTaskLifecycle.test.d.ts.map +0 -1
- package/dist/lib/parseTaskLifecycle.test.js +0 -122
- package/dist/lib/parseTaskLifecycle.test.js.map +0 -1
- package/dist/lib/parseWorktreeFromBranch.d.ts +0 -13
- package/dist/lib/parseWorktreeFromBranch.d.ts.map +0 -1
- package/dist/lib/parseWorktreeFromBranch.js +0 -19
- package/dist/lib/parseWorktreeFromBranch.js.map +0 -1
- package/dist/lib/processEvents.d.ts +0 -12
- package/dist/lib/processEvents.d.ts.map +0 -1
- package/dist/lib/processEvents.js +0 -113
- package/dist/lib/processEvents.js.map +0 -1
- package/dist/lib/rel.d.ts +0 -8
- package/dist/lib/rel.d.ts.map +0 -1
- package/dist/lib/rel.js +0 -19
- package/dist/lib/rel.js.map +0 -1
- package/dist/lib/rel.test.d.ts +0 -2
- package/dist/lib/rel.test.d.ts.map +0 -1
- package/dist/lib/rel.test.js +0 -51
- package/dist/lib/rel.test.js.map +0 -1
- package/dist/lib/sdkMessageToEvent.d.ts +0 -6
- package/dist/lib/sdkMessageToEvent.d.ts.map +0 -1
- package/dist/lib/sdkMessageToEvent.js +0 -12
- package/dist/lib/sdkMessageToEvent.js.map +0 -1
- package/dist/lib/shortenTempPaths.d.ts +0 -8
- package/dist/lib/shortenTempPaths.d.ts.map +0 -1
- package/dist/lib/shortenTempPaths.js +0 -12
- package/dist/lib/shortenTempPaths.js.map +0 -1
- package/dist/lib/shortenTempPaths.test.d.ts +0 -2
- package/dist/lib/shortenTempPaths.test.d.ts.map +0 -1
- package/dist/lib/shortenTempPaths.test.js +0 -46
- package/dist/lib/shortenTempPaths.test.js.map +0 -1
- package/dist/lib/types.d.ts +0 -19
- package/dist/lib/types.d.ts.map +0 -1
- package/dist/lib/types.js +0 -2
- package/dist/lib/types.js.map +0 -1
- package/dist/lib/useTerminalSize.d.ts +0 -6
- package/dist/lib/useTerminalSize.d.ts.map +0 -1
- package/dist/lib/useTerminalSize.js +0 -19
- package/dist/lib/useTerminalSize.js.map +0 -1
|
@@ -1,350 +0,0 @@
|
|
|
1
|
-
import { spawn } from "node:child_process";
|
|
2
|
-
import { stat, mkdir } from "node:fs/promises";
|
|
3
|
-
import { join, dirname, basename } from "node:path";
|
|
4
|
-
import { createDebugLogger } from "./debug.js";
|
|
5
|
-
import { parseWorktreeFromBranch } from "./parseWorktreeFromBranch.js";
|
|
6
|
-
const log = createDebugLogger("worktree");
|
|
7
|
-
/**
|
|
8
|
-
* Manages git worktrees for concurrent Ralph instances.
|
|
9
|
-
*
|
|
10
|
-
* Each Ralph instance gets its own worktree in a sibling folder,
|
|
11
|
-
* allowing parallel work without conflicts:
|
|
12
|
-
*
|
|
13
|
-
* ```
|
|
14
|
-
* project/ # Main worktree (main branch)
|
|
15
|
-
* project-worktrees/ # Sibling folder
|
|
16
|
-
* alice-abc123/ # Alice's worktree (branch: ralph/alice-abc123)
|
|
17
|
-
* bob-def456/ # Bob's worktree (branch: ralph/bob-def456)
|
|
18
|
-
* ```
|
|
19
|
-
*/
|
|
20
|
-
export class WorktreeManager {
|
|
21
|
-
mainWorkspacePath;
|
|
22
|
-
worktreesBasePath;
|
|
23
|
-
constructor(mainWorkspacePath) {
|
|
24
|
-
this.mainWorkspacePath = mainWorkspacePath;
|
|
25
|
-
// Worktrees stored in sibling folder: {project}-worktrees/
|
|
26
|
-
const projectName = basename(mainWorkspacePath);
|
|
27
|
-
this.worktreesBasePath = join(dirname(mainWorkspacePath), `${projectName}-worktrees`);
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Get the path to the worktrees base directory.
|
|
31
|
-
*/
|
|
32
|
-
getWorktreesBasePath() {
|
|
33
|
-
return this.worktreesBasePath;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Get the path for a specific instance's worktree.
|
|
37
|
-
*/
|
|
38
|
-
getWorktreePath(instanceId, instanceName) {
|
|
39
|
-
return join(this.worktreesBasePath, `${instanceName}-${instanceId}`);
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Get the branch name for a specific instance.
|
|
43
|
-
*/
|
|
44
|
-
getBranchName(instanceId, instanceName) {
|
|
45
|
-
return `ralph/${instanceName}-${instanceId}`;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Create a new worktree for an instance.
|
|
49
|
-
*/
|
|
50
|
-
async create(
|
|
51
|
-
/** Instance ID and name */
|
|
52
|
-
options) {
|
|
53
|
-
const { instanceId, instanceName } = options;
|
|
54
|
-
const worktreePath = this.getWorktreePath(instanceId, instanceName);
|
|
55
|
-
const branchName = this.getBranchName(instanceId, instanceName);
|
|
56
|
-
log(`Creating worktree at ${worktreePath} with branch ${branchName}`);
|
|
57
|
-
// Ensure the worktrees base directory exists
|
|
58
|
-
await this.ensureWorktreesDirectory();
|
|
59
|
-
// Create the worktree with a new branch
|
|
60
|
-
await this.git(["worktree", "add", worktreePath, "-b", branchName]);
|
|
61
|
-
log(`Worktree created successfully`);
|
|
62
|
-
return {
|
|
63
|
-
path: worktreePath,
|
|
64
|
-
branch: branchName,
|
|
65
|
-
instanceId,
|
|
66
|
-
instanceName,
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Merge the worktree branch back to main.
|
|
71
|
-
*/
|
|
72
|
-
async merge(
|
|
73
|
-
/** The instance ID */
|
|
74
|
-
instanceId,
|
|
75
|
-
/** The instance name */
|
|
76
|
-
instanceName) {
|
|
77
|
-
const branchName = this.getBranchName(instanceId, instanceName);
|
|
78
|
-
log(`Merging branch ${branchName} to main`);
|
|
79
|
-
try {
|
|
80
|
-
// First, make sure we're on main
|
|
81
|
-
const mainBranch = await this.getMainBranch();
|
|
82
|
-
await this.git(["checkout", mainBranch]);
|
|
83
|
-
// Attempt to merge
|
|
84
|
-
await this.git(["merge", branchName, "--no-ff", "-m", `Merge ${branchName}`]);
|
|
85
|
-
log(`Merge successful`);
|
|
86
|
-
return {
|
|
87
|
-
success: true,
|
|
88
|
-
hadConflicts: false,
|
|
89
|
-
message: `Successfully merged ${branchName} to ${mainBranch}`,
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
catch (error) {
|
|
93
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
94
|
-
// Check if it's a merge conflict
|
|
95
|
-
if (errorMessage.includes("CONFLICT") || errorMessage.includes("Automatic merge failed")) {
|
|
96
|
-
log(`Merge had conflicts`);
|
|
97
|
-
return {
|
|
98
|
-
success: false,
|
|
99
|
-
hadConflicts: true,
|
|
100
|
-
message: `Merge conflicts detected in ${branchName}`,
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
log(`Merge failed: ${errorMessage}`);
|
|
104
|
-
return {
|
|
105
|
-
success: false,
|
|
106
|
-
hadConflicts: false,
|
|
107
|
-
message: `Merge failed: ${errorMessage}`,
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Rebase the worktree branch on top of main.
|
|
113
|
-
*/
|
|
114
|
-
async rebase(
|
|
115
|
-
/** The instance ID */
|
|
116
|
-
instanceId,
|
|
117
|
-
/** The instance name */
|
|
118
|
-
instanceName) {
|
|
119
|
-
const worktreePath = this.getWorktreePath(instanceId, instanceName);
|
|
120
|
-
const mainBranch = await this.getMainBranch();
|
|
121
|
-
log(`Rebasing worktree ${worktreePath} on ${mainBranch}`);
|
|
122
|
-
try {
|
|
123
|
-
// Rebase the worktree branch on main
|
|
124
|
-
await this.gitInDir(worktreePath, ["rebase", mainBranch]);
|
|
125
|
-
log(`Rebase successful`);
|
|
126
|
-
return {
|
|
127
|
-
success: true,
|
|
128
|
-
hadConflicts: false,
|
|
129
|
-
message: `Successfully rebased on ${mainBranch}`,
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
catch (error) {
|
|
133
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
134
|
-
// Check if it's a rebase conflict
|
|
135
|
-
if (errorMessage.includes("CONFLICT") || errorMessage.includes("Cannot rebase")) {
|
|
136
|
-
log(`Rebase had conflicts`);
|
|
137
|
-
// Abort the rebase
|
|
138
|
-
try {
|
|
139
|
-
await this.gitInDir(worktreePath, ["rebase", "--abort"]);
|
|
140
|
-
}
|
|
141
|
-
catch {
|
|
142
|
-
// Ignore abort errors
|
|
143
|
-
}
|
|
144
|
-
return {
|
|
145
|
-
success: false,
|
|
146
|
-
hadConflicts: true,
|
|
147
|
-
message: `Rebase conflicts detected`,
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
log(`Rebase failed: ${errorMessage}`);
|
|
151
|
-
return {
|
|
152
|
-
success: false,
|
|
153
|
-
hadConflicts: false,
|
|
154
|
-
message: `Rebase failed: ${errorMessage}`,
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Remove a worktree and optionally delete its branch.
|
|
160
|
-
*/
|
|
161
|
-
async remove(
|
|
162
|
-
/** The instance ID */
|
|
163
|
-
instanceId,
|
|
164
|
-
/** The instance name */
|
|
165
|
-
instanceName,
|
|
166
|
-
/** Whether to delete the branch (default: true) */
|
|
167
|
-
deleteBranch = true) {
|
|
168
|
-
const worktreePath = this.getWorktreePath(instanceId, instanceName);
|
|
169
|
-
const branchName = this.getBranchName(instanceId, instanceName);
|
|
170
|
-
log(`Removing worktree at ${worktreePath}`);
|
|
171
|
-
// Remove the worktree
|
|
172
|
-
try {
|
|
173
|
-
await this.git(["worktree", "remove", worktreePath, "--force"]);
|
|
174
|
-
}
|
|
175
|
-
catch (error) {
|
|
176
|
-
// If the worktree doesn't exist, that's fine
|
|
177
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
178
|
-
if (!errorMessage.includes("is not a working tree")) {
|
|
179
|
-
throw error;
|
|
180
|
-
}
|
|
181
|
-
log(`Worktree ${worktreePath} doesn't exist, skipping removal`);
|
|
182
|
-
}
|
|
183
|
-
// Delete the branch if requested
|
|
184
|
-
if (deleteBranch) {
|
|
185
|
-
log(`Deleting branch ${branchName}`);
|
|
186
|
-
try {
|
|
187
|
-
await this.git(["branch", "-D", branchName]);
|
|
188
|
-
}
|
|
189
|
-
catch (error) {
|
|
190
|
-
// If the branch doesn't exist, that's fine
|
|
191
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
192
|
-
if (!errorMessage.includes("not found")) {
|
|
193
|
-
throw error;
|
|
194
|
-
}
|
|
195
|
-
log(`Branch ${branchName} doesn't exist, skipping deletion`);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
log(`Worktree removed successfully`);
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* List all worktrees managed by this WorktreeManager.
|
|
202
|
-
*/
|
|
203
|
-
async list() {
|
|
204
|
-
log(`Listing worktrees`);
|
|
205
|
-
const output = await this.git(["worktree", "list", "--porcelain"]);
|
|
206
|
-
const worktrees = [];
|
|
207
|
-
// Parse porcelain output
|
|
208
|
-
const lines = output.split("\n");
|
|
209
|
-
let currentPath = null;
|
|
210
|
-
let currentBranch = null;
|
|
211
|
-
for (const line of lines) {
|
|
212
|
-
if (line.startsWith("worktree ")) {
|
|
213
|
-
// Process previous worktree before starting new one
|
|
214
|
-
this.addWorktreeIfValid(currentPath, currentBranch, worktrees);
|
|
215
|
-
currentPath = line.slice("worktree ".length);
|
|
216
|
-
}
|
|
217
|
-
else if (line.startsWith("branch refs/heads/")) {
|
|
218
|
-
currentBranch = line.slice("branch refs/heads/".length);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
// Process the last worktree
|
|
222
|
-
this.addWorktreeIfValid(currentPath, currentBranch, worktrees);
|
|
223
|
-
log(`Found ${worktrees.length} worktrees`);
|
|
224
|
-
return worktrees;
|
|
225
|
-
}
|
|
226
|
-
/**
|
|
227
|
-
* Check if a worktree exists for an instance.
|
|
228
|
-
*/
|
|
229
|
-
async exists(
|
|
230
|
-
/** The instance ID */
|
|
231
|
-
instanceId,
|
|
232
|
-
/** The instance name */
|
|
233
|
-
instanceName) {
|
|
234
|
-
const worktreePath = this.getWorktreePath(instanceId, instanceName);
|
|
235
|
-
try {
|
|
236
|
-
const stats = await stat(worktreePath);
|
|
237
|
-
return stats.isDirectory();
|
|
238
|
-
}
|
|
239
|
-
catch {
|
|
240
|
-
return false;
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
/**
|
|
244
|
-
* Prune worktrees that no longer exist on disk.
|
|
245
|
-
*/
|
|
246
|
-
async prune() {
|
|
247
|
-
log(`Pruning stale worktree entries`);
|
|
248
|
-
await this.git(["worktree", "prune"]);
|
|
249
|
-
}
|
|
250
|
-
/**
|
|
251
|
-
* Add a worktree to the list if it's a valid ralph worktree.
|
|
252
|
-
*/
|
|
253
|
-
addWorktreeIfValid(
|
|
254
|
-
/** Current path being processed */
|
|
255
|
-
currentPath,
|
|
256
|
-
/** Current branch being processed */
|
|
257
|
-
currentBranch,
|
|
258
|
-
/** Worktrees list to add to */
|
|
259
|
-
worktrees) {
|
|
260
|
-
if (currentPath && currentBranch) {
|
|
261
|
-
// Check if this is a ralph worktree
|
|
262
|
-
if (currentBranch.startsWith("ralph/") && currentPath.startsWith(this.worktreesBasePath)) {
|
|
263
|
-
const parsed = parseWorktreeFromBranch(currentBranch.slice("ralph/".length));
|
|
264
|
-
if (parsed) {
|
|
265
|
-
worktrees.push({
|
|
266
|
-
path: currentPath,
|
|
267
|
-
branch: currentBranch,
|
|
268
|
-
...parsed,
|
|
269
|
-
});
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
/**
|
|
275
|
-
* Get the main branch name (main or master).
|
|
276
|
-
*/
|
|
277
|
-
async getMainBranch() {
|
|
278
|
-
// Check for main first, then master
|
|
279
|
-
try {
|
|
280
|
-
await this.git(["show-ref", "--verify", "--quiet", "refs/heads/main"]);
|
|
281
|
-
return "main";
|
|
282
|
-
}
|
|
283
|
-
catch {
|
|
284
|
-
try {
|
|
285
|
-
await this.git(["show-ref", "--verify", "--quiet", "refs/heads/master"]);
|
|
286
|
-
return "master";
|
|
287
|
-
}
|
|
288
|
-
catch {
|
|
289
|
-
// Default to main
|
|
290
|
-
return "main";
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
/**
|
|
295
|
-
* Ensure the worktrees base directory exists.
|
|
296
|
-
*/
|
|
297
|
-
async ensureWorktreesDirectory() {
|
|
298
|
-
try {
|
|
299
|
-
await stat(this.worktreesBasePath);
|
|
300
|
-
}
|
|
301
|
-
catch {
|
|
302
|
-
log(`Creating worktrees directory at ${this.worktreesBasePath}`);
|
|
303
|
-
await mkdir(this.worktreesBasePath, { recursive: true });
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
/**
|
|
307
|
-
* Execute a git command in the main workspace.
|
|
308
|
-
*/
|
|
309
|
-
git(args) {
|
|
310
|
-
return this.gitInDir(this.mainWorkspacePath, args);
|
|
311
|
-
}
|
|
312
|
-
/**
|
|
313
|
-
* Execute a git command in a specific directory.
|
|
314
|
-
*/
|
|
315
|
-
gitInDir(
|
|
316
|
-
/** Working directory for the git command */
|
|
317
|
-
cwd,
|
|
318
|
-
/** Git command arguments */
|
|
319
|
-
args) {
|
|
320
|
-
return new Promise((resolve, reject) => {
|
|
321
|
-
log(`Running: git ${args.join(" ")} in ${cwd}`);
|
|
322
|
-
const proc = spawn("git", args, {
|
|
323
|
-
cwd,
|
|
324
|
-
stdio: ["ignore", "pipe", "pipe"],
|
|
325
|
-
});
|
|
326
|
-
let stdout = "";
|
|
327
|
-
let stderr = "";
|
|
328
|
-
proc.stdout.on("data", data => {
|
|
329
|
-
stdout += data.toString();
|
|
330
|
-
});
|
|
331
|
-
proc.stderr.on("data", data => {
|
|
332
|
-
stderr += data.toString();
|
|
333
|
-
});
|
|
334
|
-
proc.on("close", code => {
|
|
335
|
-
if (code === 0) {
|
|
336
|
-
resolve(stdout.trim());
|
|
337
|
-
}
|
|
338
|
-
else {
|
|
339
|
-
// Include both stdout and stderr in error message for better conflict detection
|
|
340
|
-
const combinedOutput = [stdout.trim(), stderr.trim()].filter(Boolean).join("\n");
|
|
341
|
-
reject(new Error(combinedOutput || `git ${args[0]} failed with code ${code}`));
|
|
342
|
-
}
|
|
343
|
-
});
|
|
344
|
-
proc.on("error", error => {
|
|
345
|
-
reject(error);
|
|
346
|
-
});
|
|
347
|
-
});
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
//# sourceMappingURL=WorktreeManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WorktreeManager.js","sourceRoot":"","sources":["../../src/lib/WorktreeManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WorktreeManager.test.d.ts","sourceRoot":"","sources":["../../src/lib/WorktreeManager.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach, afterEach } from "vitest";
|
|
2
|
-
import { WorktreeManager } from "./WorktreeManager.js";
|
|
3
|
-
import { mkdir, rm, writeFile } from "node:fs/promises";
|
|
4
|
-
import { join } from "node:path";
|
|
5
|
-
import { spawn } from "node:child_process";
|
|
6
|
-
/**
|
|
7
|
-
* Run a git command in the specified directory and return its stdout.
|
|
8
|
-
* Rejects with an error if the command fails.
|
|
9
|
-
*/
|
|
10
|
-
function git(
|
|
11
|
-
/** Working directory for the git command */
|
|
12
|
-
cwd,
|
|
13
|
-
/** Git command arguments (e.g., ["add", "."]) */
|
|
14
|
-
args) {
|
|
15
|
-
return new Promise((resolve, reject) => {
|
|
16
|
-
const proc = spawn("git", args, {
|
|
17
|
-
cwd,
|
|
18
|
-
stdio: ["ignore", "pipe", "pipe"],
|
|
19
|
-
});
|
|
20
|
-
let stdout = "";
|
|
21
|
-
let stderr = "";
|
|
22
|
-
proc.stdout.on("data", data => {
|
|
23
|
-
stdout += data.toString();
|
|
24
|
-
});
|
|
25
|
-
proc.stderr.on("data", data => {
|
|
26
|
-
stderr += data.toString();
|
|
27
|
-
});
|
|
28
|
-
proc.on("close", code => {
|
|
29
|
-
if (code === 0) {
|
|
30
|
-
resolve(stdout.trim());
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
reject(new Error(stderr.trim() || `git ${args[0]} failed with code ${code}`));
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
describe("WorktreeManager", () => {
|
|
39
|
-
const testDir = join(process.cwd(), ".test-worktrees");
|
|
40
|
-
const mainWorkspacePath = join(testDir, "project");
|
|
41
|
-
const worktreesPath = join(testDir, "project-worktrees");
|
|
42
|
-
let manager;
|
|
43
|
-
beforeEach(async () => {
|
|
44
|
-
// Clean up any existing test directories
|
|
45
|
-
try {
|
|
46
|
-
await rm(testDir, { recursive: true });
|
|
47
|
-
}
|
|
48
|
-
catch {
|
|
49
|
-
// Ignore if doesn't exist
|
|
50
|
-
}
|
|
51
|
-
// Create test directory structure
|
|
52
|
-
await mkdir(mainWorkspacePath, { recursive: true });
|
|
53
|
-
// Initialize a git repo
|
|
54
|
-
await git(mainWorkspacePath, ["init"]);
|
|
55
|
-
await git(mainWorkspacePath, ["config", "user.email", "test@test.com"]);
|
|
56
|
-
await git(mainWorkspacePath, ["config", "user.name", "Test User"]);
|
|
57
|
-
// Create an initial commit (required for worktrees)
|
|
58
|
-
await writeFile(join(mainWorkspacePath, "README.md"), "# Test Project");
|
|
59
|
-
await git(mainWorkspacePath, ["add", "."]);
|
|
60
|
-
await git(mainWorkspacePath, ["commit", "-m", "Initial commit"]);
|
|
61
|
-
manager = new WorktreeManager(mainWorkspacePath);
|
|
62
|
-
});
|
|
63
|
-
afterEach(async () => {
|
|
64
|
-
// Clean up test directories
|
|
65
|
-
try {
|
|
66
|
-
// First prune any worktrees
|
|
67
|
-
await git(mainWorkspacePath, ["worktree", "prune"]);
|
|
68
|
-
}
|
|
69
|
-
catch {
|
|
70
|
-
// Ignore
|
|
71
|
-
}
|
|
72
|
-
try {
|
|
73
|
-
await rm(testDir, { recursive: true });
|
|
74
|
-
}
|
|
75
|
-
catch {
|
|
76
|
-
// Ignore
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
describe("constructor", () => {
|
|
80
|
-
it("sets worktrees base path in sibling folder", () => {
|
|
81
|
-
expect(manager.getWorktreesBasePath()).toBe(worktreesPath);
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
describe("getWorktreePath", () => {
|
|
85
|
-
it("returns correct path for instance", () => {
|
|
86
|
-
const path = manager.getWorktreePath("abc123", "alice");
|
|
87
|
-
expect(path).toBe(join(worktreesPath, "alice-abc123"));
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
describe("getBranchName", () => {
|
|
91
|
-
it("returns correct branch name for instance", () => {
|
|
92
|
-
const branch = manager.getBranchName("abc123", "alice");
|
|
93
|
-
expect(branch).toBe("ralph/alice-abc123");
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
describe("create", () => {
|
|
97
|
-
it("creates a worktree with new branch", async () => {
|
|
98
|
-
const result = await manager.create({
|
|
99
|
-
instanceId: "abc123",
|
|
100
|
-
instanceName: "alice",
|
|
101
|
-
});
|
|
102
|
-
expect(result.path).toBe(join(worktreesPath, "alice-abc123"));
|
|
103
|
-
expect(result.branch).toBe("ralph/alice-abc123");
|
|
104
|
-
expect(result.instanceId).toBe("abc123");
|
|
105
|
-
expect(result.instanceName).toBe("alice");
|
|
106
|
-
// Verify worktree exists
|
|
107
|
-
const worktreeList = await git(mainWorkspacePath, ["worktree", "list"]);
|
|
108
|
-
expect(worktreeList).toContain("alice-abc123");
|
|
109
|
-
// Verify branch exists
|
|
110
|
-
const branches = await git(mainWorkspacePath, ["branch", "-a"]);
|
|
111
|
-
expect(branches).toContain("ralph/alice-abc123");
|
|
112
|
-
});
|
|
113
|
-
it("creates worktrees directory if it doesn't exist", async () => {
|
|
114
|
-
await manager.create({
|
|
115
|
-
instanceId: "abc123",
|
|
116
|
-
instanceName: "alice",
|
|
117
|
-
});
|
|
118
|
-
// Worktrees directory should exist
|
|
119
|
-
const exists = await manager.exists("abc123", "alice");
|
|
120
|
-
expect(exists).toBe(true);
|
|
121
|
-
});
|
|
122
|
-
});
|
|
123
|
-
describe("exists", () => {
|
|
124
|
-
it("returns false for non-existent worktree", async () => {
|
|
125
|
-
const exists = await manager.exists("nonexistent", "fake");
|
|
126
|
-
expect(exists).toBe(false);
|
|
127
|
-
});
|
|
128
|
-
it("returns true for existing worktree", async () => {
|
|
129
|
-
await manager.create({
|
|
130
|
-
instanceId: "abc123",
|
|
131
|
-
instanceName: "alice",
|
|
132
|
-
});
|
|
133
|
-
const exists = await manager.exists("abc123", "alice");
|
|
134
|
-
expect(exists).toBe(true);
|
|
135
|
-
});
|
|
136
|
-
});
|
|
137
|
-
describe("list", () => {
|
|
138
|
-
it("returns empty array when no ralph worktrees exist", async () => {
|
|
139
|
-
const worktrees = await manager.list();
|
|
140
|
-
expect(worktrees).toEqual([]);
|
|
141
|
-
});
|
|
142
|
-
it("returns list of ralph worktrees", async () => {
|
|
143
|
-
await manager.create({ instanceId: "abc123", instanceName: "alice" });
|
|
144
|
-
await manager.create({ instanceId: "def456", instanceName: "bob" });
|
|
145
|
-
const worktrees = await manager.list();
|
|
146
|
-
expect(worktrees).toHaveLength(2);
|
|
147
|
-
expect(worktrees).toContainEqual(expect.objectContaining({
|
|
148
|
-
instanceId: "abc123",
|
|
149
|
-
instanceName: "alice",
|
|
150
|
-
branch: "ralph/alice-abc123",
|
|
151
|
-
}));
|
|
152
|
-
expect(worktrees).toContainEqual(expect.objectContaining({
|
|
153
|
-
instanceId: "def456",
|
|
154
|
-
instanceName: "bob",
|
|
155
|
-
branch: "ralph/bob-def456",
|
|
156
|
-
}));
|
|
157
|
-
});
|
|
158
|
-
});
|
|
159
|
-
describe("remove", () => {
|
|
160
|
-
it("removes worktree and branch", async () => {
|
|
161
|
-
await manager.create({ instanceId: "abc123", instanceName: "alice" });
|
|
162
|
-
await manager.remove("abc123", "alice");
|
|
163
|
-
// Worktree should be gone
|
|
164
|
-
const exists = await manager.exists("abc123", "alice");
|
|
165
|
-
expect(exists).toBe(false);
|
|
166
|
-
// Branch should be gone
|
|
167
|
-
const branches = await git(mainWorkspacePath, ["branch", "-a"]);
|
|
168
|
-
expect(branches).not.toContain("ralph/alice-abc123");
|
|
169
|
-
});
|
|
170
|
-
it("removes worktree but keeps branch when deleteBranch is false", async () => {
|
|
171
|
-
await manager.create({ instanceId: "abc123", instanceName: "alice" });
|
|
172
|
-
await manager.remove("abc123", "alice", false);
|
|
173
|
-
// Worktree should be gone
|
|
174
|
-
const exists = await manager.exists("abc123", "alice");
|
|
175
|
-
expect(exists).toBe(false);
|
|
176
|
-
// Branch should still exist
|
|
177
|
-
const branches = await git(mainWorkspacePath, ["branch", "-a"]);
|
|
178
|
-
expect(branches).toContain("ralph/alice-abc123");
|
|
179
|
-
});
|
|
180
|
-
it("succeeds even if worktree doesn't exist", async () => {
|
|
181
|
-
// Should not throw
|
|
182
|
-
await manager.remove("nonexistent", "fake");
|
|
183
|
-
});
|
|
184
|
-
});
|
|
185
|
-
describe("merge", () => {
|
|
186
|
-
it("merges worktree branch to main", async () => {
|
|
187
|
-
// Create worktree
|
|
188
|
-
const worktree = await manager.create({ instanceId: "abc123", instanceName: "alice" });
|
|
189
|
-
// Make a change in the worktree
|
|
190
|
-
await writeFile(join(worktree.path, "feature.txt"), "new feature");
|
|
191
|
-
await git(worktree.path, ["add", "."]);
|
|
192
|
-
await git(worktree.path, ["commit", "-m", "Add feature"]);
|
|
193
|
-
// Merge back to main
|
|
194
|
-
const result = await manager.merge("abc123", "alice");
|
|
195
|
-
expect(result.success).toBe(true);
|
|
196
|
-
expect(result.hadConflicts).toBe(false);
|
|
197
|
-
// Verify merge happened (we should be back on main with the changes)
|
|
198
|
-
const currentBranch = await git(mainWorkspacePath, ["rev-parse", "--abbrev-ref", "HEAD"]);
|
|
199
|
-
expect(currentBranch).toMatch(/^(main|master)$/);
|
|
200
|
-
});
|
|
201
|
-
it("reports conflicts when they occur", async () => {
|
|
202
|
-
// Create worktree
|
|
203
|
-
const worktree = await manager.create({ instanceId: "abc123", instanceName: "alice" });
|
|
204
|
-
// Make conflicting changes in main
|
|
205
|
-
await writeFile(join(mainWorkspacePath, "conflict.txt"), "main version");
|
|
206
|
-
await git(mainWorkspacePath, ["add", "."]);
|
|
207
|
-
await git(mainWorkspacePath, ["commit", "-m", "Add conflict file on main"]);
|
|
208
|
-
// Make conflicting changes in worktree
|
|
209
|
-
await writeFile(join(worktree.path, "conflict.txt"), "worktree version");
|
|
210
|
-
await git(worktree.path, ["add", "."]);
|
|
211
|
-
await git(worktree.path, ["commit", "-m", "Add conflict file in worktree"]);
|
|
212
|
-
// Attempt merge
|
|
213
|
-
const result = await manager.merge("abc123", "alice");
|
|
214
|
-
expect(result.success).toBe(false);
|
|
215
|
-
expect(result.hadConflicts).toBe(true);
|
|
216
|
-
// Clean up merge state
|
|
217
|
-
await git(mainWorkspacePath, ["merge", "--abort"]);
|
|
218
|
-
});
|
|
219
|
-
});
|
|
220
|
-
describe("rebase", () => {
|
|
221
|
-
it("rebases worktree branch on main", async () => {
|
|
222
|
-
// Create worktree
|
|
223
|
-
const worktree = await manager.create({ instanceId: "abc123", instanceName: "alice" });
|
|
224
|
-
// Make a change in main
|
|
225
|
-
await writeFile(join(mainWorkspacePath, "main-change.txt"), "main change");
|
|
226
|
-
await git(mainWorkspacePath, ["add", "."]);
|
|
227
|
-
await git(mainWorkspacePath, ["commit", "-m", "Add main change"]);
|
|
228
|
-
// Make a change in the worktree
|
|
229
|
-
await writeFile(join(worktree.path, "feature.txt"), "new feature");
|
|
230
|
-
await git(worktree.path, ["add", "."]);
|
|
231
|
-
await git(worktree.path, ["commit", "-m", "Add feature"]);
|
|
232
|
-
// Rebase worktree on main
|
|
233
|
-
const result = await manager.rebase("abc123", "alice");
|
|
234
|
-
expect(result.success).toBe(true);
|
|
235
|
-
expect(result.hadConflicts).toBe(false);
|
|
236
|
-
});
|
|
237
|
-
it("reports conflicts when they occur", async () => {
|
|
238
|
-
// Create worktree
|
|
239
|
-
const worktree = await manager.create({ instanceId: "abc123", instanceName: "alice" });
|
|
240
|
-
// Make conflicting changes in main
|
|
241
|
-
await writeFile(join(mainWorkspacePath, "conflict.txt"), "main version");
|
|
242
|
-
await git(mainWorkspacePath, ["add", "."]);
|
|
243
|
-
await git(mainWorkspacePath, ["commit", "-m", "Add conflict file on main"]);
|
|
244
|
-
// Make conflicting changes in worktree
|
|
245
|
-
await writeFile(join(worktree.path, "conflict.txt"), "worktree version");
|
|
246
|
-
await git(worktree.path, ["add", "."]);
|
|
247
|
-
await git(worktree.path, ["commit", "-m", "Add conflict file in worktree"]);
|
|
248
|
-
// Attempt rebase
|
|
249
|
-
const result = await manager.rebase("abc123", "alice");
|
|
250
|
-
expect(result.success).toBe(false);
|
|
251
|
-
expect(result.hadConflicts).toBe(true);
|
|
252
|
-
});
|
|
253
|
-
});
|
|
254
|
-
describe("prune", () => {
|
|
255
|
-
it("prunes stale worktree entries", async () => {
|
|
256
|
-
// This mainly verifies the command doesn't error
|
|
257
|
-
await manager.prune();
|
|
258
|
-
});
|
|
259
|
-
});
|
|
260
|
-
});
|
|
261
|
-
//# sourceMappingURL=WorktreeManager.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WorktreeManager.test.js","sourceRoot":"","sources":["../../src/lib/WorktreeManager.test.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/addTodo.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Adds a todo item to the todo.md file and commits just that line.
|
|
3
|
-
* Inserts the todo into the working directory, stages only that line, and commits.
|
|
4
|
-
* Creates the file if it doesn't exist.
|
|
5
|
-
*/
|
|
6
|
-
export declare const addTodo: (
|
|
7
|
-
/** The description of the todo item to add */
|
|
8
|
-
description: string,
|
|
9
|
-
/** The working directory to use (defaults to current directory) */
|
|
10
|
-
cwd?: string) => void;
|
|
11
|
-
//# sourceMappingURL=addTodo.d.ts.map
|