@herbcaudill/ralph 0.8.3 → 1.0.1
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/cli.d.ts.map +1 -1
- package/dist/cli.js +26 -5
- package/dist/cli.js.map +1 -1
- package/dist/components/App.d.ts +6 -1
- package/dist/components/App.d.ts.map +1 -1
- package/dist/components/App.js +7 -3
- package/dist/components/App.js.map +1 -1
- package/dist/components/EnhancedTextInput.d.ts +8 -8
- package/dist/components/EnhancedTextInput.d.ts.map +1 -1
- package/dist/components/EnhancedTextInput.js +2 -36
- package/dist/components/EnhancedTextInput.js.map +1 -1
- package/dist/components/EnhancedTextInput.test.js +2 -10
- package/dist/components/EnhancedTextInput.test.js.map +1 -1
- package/dist/components/EventDisplay.d.ts +1 -1
- package/dist/components/EventDisplay.d.ts.map +1 -1
- package/dist/components/EventDisplay.js +3 -94
- package/dist/components/EventDisplay.js.map +1 -1
- package/dist/components/EventDisplay.replay.test.js +34 -68
- package/dist/components/EventDisplay.replay.test.js.map +1 -1
- package/dist/components/EventDisplay.test.js +30 -0
- package/dist/components/EventDisplay.test.js.map +1 -1
- package/dist/components/FullScreenLayout.d.ts +5 -4
- package/dist/components/FullScreenLayout.d.ts.map +1 -1
- package/dist/components/FullScreenLayout.js +2 -12
- package/dist/components/FullScreenLayout.js.map +1 -1
- package/dist/components/Header.d.ts +2 -1
- package/dist/components/Header.d.ts.map +1 -1
- package/dist/components/Header.js +8 -1
- package/dist/components/Header.js.map +1 -1
- package/dist/components/InitRalph.d.ts +6 -1
- package/dist/components/InitRalph.d.ts.map +1 -1
- package/dist/components/InitRalph.js +71 -89
- package/dist/components/InitRalph.js.map +1 -1
- package/dist/components/IterationRunner.d.ts +6 -13
- package/dist/components/IterationRunner.d.ts.map +1 -1
- package/dist/components/IterationRunner.js +84 -168
- package/dist/components/IterationRunner.js.map +1 -1
- package/dist/components/IterationRunner.test.d.ts +44 -0
- package/dist/components/IterationRunner.test.d.ts.map +1 -1
- package/dist/components/IterationRunner.test.js +66 -126
- package/dist/components/IterationRunner.test.js.map +1 -1
- package/dist/components/IterationRunner.types.d.ts +30 -0
- package/dist/components/IterationRunner.types.d.ts.map +1 -0
- package/dist/components/IterationRunner.types.js +2 -0
- package/dist/components/IterationRunner.types.js.map +1 -0
- package/dist/components/JsonOutput.d.ts +5 -6
- package/dist/components/JsonOutput.d.ts.map +1 -1
- package/dist/components/JsonOutput.js +57 -34
- package/dist/components/JsonOutput.js.map +1 -1
- package/dist/components/JsonOutput.test.d.ts +2 -0
- package/dist/components/JsonOutput.test.d.ts.map +1 -0
- package/dist/components/JsonOutput.test.js +39 -0
- package/dist/components/JsonOutput.test.js.map +1 -0
- package/dist/components/ReplayLog.d.ts +1 -1
- package/dist/components/ReplayLog.d.ts.map +1 -1
- package/dist/components/ReplayLog.js +9 -2
- package/dist/components/ReplayLog.js.map +1 -1
- package/dist/components/StreamingText.d.ts +4 -0
- package/dist/components/StreamingText.d.ts.map +1 -1
- package/dist/components/StreamingText.js +4 -3
- package/dist/components/StreamingText.js.map +1 -1
- package/dist/components/StreamingText.test.js +39 -0
- package/dist/components/StreamingText.test.js.map +1 -1
- package/dist/components/ToolUse.d.ts +8 -0
- package/dist/components/ToolUse.d.ts.map +1 -1
- package/dist/components/ToolUse.js +1 -0
- package/dist/components/ToolUse.js.map +1 -1
- package/dist/components/blocksToLines.d.ts +6 -0
- package/dist/components/blocksToLines.d.ts.map +1 -0
- package/dist/components/blocksToLines.js +15 -0
- package/dist/components/blocksToLines.js.map +1 -0
- package/dist/components/eventToBlocks.d.ts +7 -1
- package/dist/components/eventToBlocks.d.ts.map +1 -1
- package/dist/components/eventToBlocks.js +7 -1
- package/dist/components/eventToBlocks.js.map +1 -1
- package/dist/components/findNextWordBoundary.d.ts +10 -0
- package/dist/components/findNextWordBoundary.d.ts.map +1 -0
- package/dist/components/findNextWordBoundary.js +23 -0
- package/dist/components/findNextWordBoundary.js.map +1 -0
- package/dist/components/findPreviousWordBoundary.d.ts +10 -0
- package/dist/components/findPreviousWordBoundary.d.ts.map +1 -0
- package/dist/components/findPreviousWordBoundary.js +23 -0
- package/dist/components/findPreviousWordBoundary.js.map +1 -0
- package/dist/components/processEvents.d.ts +11 -0
- package/dist/components/processEvents.d.ts.map +1 -0
- package/dist/components/processEvents.js +87 -0
- package/dist/components/processEvents.js.map +1 -0
- package/dist/components/renderStaticItem.d.ts +7 -0
- package/dist/components/renderStaticItem.d.ts.map +1 -0
- package/dist/components/renderStaticItem.js +23 -0
- package/dist/components/renderStaticItem.js.map +1 -0
- package/dist/components/replay.d.ts +5 -0
- package/dist/components/replay.d.ts.map +1 -0
- package/dist/components/replay.js +49 -0
- package/dist/components/replay.js.map +1 -0
- package/dist/components/test-helpers/ControlledInput.d.ts +14 -0
- package/dist/components/test-helpers/ControlledInput.d.ts.map +1 -0
- package/dist/components/test-helpers/ControlledInput.js +15 -0
- package/dist/components/test-helpers/ControlledInput.js.map +1 -0
- package/dist/components/useContentHeight.d.ts +9 -0
- package/dist/components/useContentHeight.d.ts.map +1 -0
- package/dist/components/useContentHeight.js +16 -0
- package/dist/components/useContentHeight.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/MessageQueue.d.ts +18 -5
- package/dist/lib/MessageQueue.d.ts.map +1 -1
- package/dist/lib/MessageQueue.js +21 -14
- package/dist/lib/MessageQueue.js.map +1 -1
- package/dist/lib/StdinCommandHandler.d.ts +26 -20
- package/dist/lib/StdinCommandHandler.js +78 -85
- package/dist/lib/StdinCommandHandler.test.d.ts +2 -2
- package/dist/lib/StdinCommandHandler.test.js +92 -92
- package/dist/lib/WorktreeManager.d.ts +114 -0
- package/dist/lib/WorktreeManager.d.ts.map +1 -0
- package/dist/lib/WorktreeManager.js +350 -0
- package/dist/lib/WorktreeManager.js.map +1 -0
- package/dist/lib/WorktreeManager.test.d.ts +2 -0
- package/dist/lib/WorktreeManager.test.d.ts.map +1 -0
- package/dist/lib/WorktreeManager.test.js +261 -0
- package/dist/lib/WorktreeManager.test.js.map +1 -0
- package/dist/lib/addTodo.d.ts +5 -5
- package/dist/lib/addTodo.d.ts.map +1 -1
- package/dist/lib/addTodo.js +6 -20
- package/dist/lib/addTodo.js.map +1 -1
- package/dist/lib/beadsClient.d.ts +6 -12
- package/dist/lib/beadsClient.d.ts.map +1 -1
- package/dist/lib/beadsClient.js +3 -2
- package/dist/lib/beadsClient.js.map +1 -1
- package/dist/lib/captureBeadsSnapshot.d.ts +4 -0
- package/dist/lib/captureBeadsSnapshot.d.ts.map +1 -0
- package/dist/lib/captureBeadsSnapshot.js +24 -0
- package/dist/lib/captureBeadsSnapshot.js.map +1 -0
- package/dist/lib/captureStartupSnapshot.d.ts +10 -0
- package/dist/lib/captureStartupSnapshot.d.ts.map +1 -0
- package/dist/lib/captureStartupSnapshot.js +29 -0
- package/dist/lib/captureStartupSnapshot.js.map +1 -0
- package/dist/lib/captureTodoSnapshot.d.ts +4 -0
- package/dist/lib/captureTodoSnapshot.d.ts.map +1 -0
- package/dist/lib/captureTodoSnapshot.js +24 -0
- package/dist/lib/captureTodoSnapshot.js.map +1 -0
- package/dist/lib/copyTemplates.d.ts +22 -0
- package/dist/lib/copyTemplates.d.ts.map +1 -0
- package/dist/lib/copyTemplates.js +32 -0
- package/dist/lib/copyTemplates.js.map +1 -0
- package/dist/lib/createStdinCommandHandler.d.ts +28 -0
- package/dist/lib/createStdinCommandHandler.d.ts.map +1 -0
- package/dist/lib/createStdinCommandHandler.js +67 -0
- package/dist/lib/createStdinCommandHandler.js.map +1 -0
- package/dist/lib/createUserMessage.d.ts +6 -0
- package/dist/lib/createUserMessage.d.ts.map +1 -0
- package/dist/lib/createUserMessage.js +13 -0
- package/dist/lib/createUserMessage.js.map +1 -0
- package/dist/lib/debug.d.ts +17 -16
- package/dist/lib/debug.d.ts.map +1 -1
- package/dist/lib/debug.js +25 -15
- package/dist/lib/debug.js.map +1 -1
- package/dist/lib/findMaxLogNumber.d.ts +6 -0
- package/dist/lib/findMaxLogNumber.d.ts.map +1 -0
- package/dist/lib/findMaxLogNumber.js +26 -0
- package/dist/lib/findMaxLogNumber.js.map +1 -0
- package/dist/lib/findMaxLogNumber.test.d.ts +2 -0
- package/dist/lib/findMaxLogNumber.test.d.ts.map +1 -0
- package/dist/lib/findMaxLogNumber.test.js +39 -0
- package/dist/lib/findMaxLogNumber.test.js.map +1 -0
- package/dist/lib/formatContentBlock.d.ts +4 -8
- package/dist/lib/formatContentBlock.d.ts.map +1 -1
- package/dist/lib/formatContentBlock.js +7 -58
- package/dist/lib/formatContentBlock.js.map +1 -1
- package/dist/lib/formatIterationHeader.d.ts +5 -0
- package/dist/lib/formatIterationHeader.d.ts.map +1 -0
- package/dist/lib/formatIterationHeader.js +8 -0
- package/dist/lib/formatIterationHeader.js.map +1 -0
- package/dist/lib/formatText.d.ts +5 -0
- package/dist/lib/formatText.d.ts.map +1 -0
- package/dist/lib/formatText.js +33 -0
- package/dist/lib/formatText.js.map +1 -0
- package/dist/lib/formatToolUse.d.ts +7 -0
- package/dist/lib/formatToolUse.d.ts.map +1 -0
- package/dist/lib/formatToolUse.js +14 -0
- package/dist/lib/formatToolUse.js.map +1 -0
- package/dist/lib/formatUserMessage.d.ts +5 -0
- package/dist/lib/formatUserMessage.d.ts.map +1 -0
- package/dist/lib/formatUserMessage.js +8 -0
- package/dist/lib/formatUserMessage.js.map +1 -0
- package/dist/lib/getBaseCwd.d.ts +6 -0
- package/dist/lib/getBaseCwd.d.ts.map +1 -0
- package/dist/lib/getBaseCwd.js +6 -0
- package/dist/lib/getBaseCwd.js.map +1 -0
- package/dist/lib/getBeadsProgress.d.ts +8 -0
- package/dist/lib/getBeadsProgress.d.ts.map +1 -0
- package/dist/lib/getBeadsProgress.js +35 -0
- package/dist/lib/getBeadsProgress.js.map +1 -0
- package/dist/lib/getClaudeVersion.d.ts +4 -0
- package/dist/lib/getClaudeVersion.d.ts.map +1 -1
- package/dist/lib/getClaudeVersion.js +4 -0
- package/dist/lib/getClaudeVersion.js.map +1 -1
- package/dist/lib/getDefaultIterations.d.ts +6 -0
- package/dist/lib/getDefaultIterations.d.ts.map +1 -0
- package/dist/lib/getDefaultIterations.js +14 -0
- package/dist/lib/getDefaultIterations.js.map +1 -0
- package/dist/lib/getDefaultIterations.test.d.ts +2 -0
- package/dist/lib/getDefaultIterations.test.d.ts.map +1 -0
- package/dist/lib/getDefaultIterations.test.js +39 -0
- package/dist/lib/getDefaultIterations.test.js.map +1 -0
- package/dist/lib/getLatestLogFile.d.ts +6 -0
- package/dist/lib/getLatestLogFile.d.ts.map +1 -0
- package/dist/lib/getLatestLogFile.js +15 -0
- package/dist/lib/getLatestLogFile.js.map +1 -0
- package/dist/lib/getNextLogFile.d.ts +0 -5
- package/dist/lib/getNextLogFile.d.ts.map +1 -1
- package/dist/lib/getNextLogFile.js +2 -36
- package/dist/lib/getNextLogFile.js.map +1 -1
- package/dist/lib/getNextLogFile.test.js +2 -1
- package/dist/lib/getNextLogFile.test.js.map +1 -1
- package/dist/lib/getOpenIssueCount.d.ts +0 -5
- package/dist/lib/getOpenIssueCount.d.ts.map +1 -1
- package/dist/lib/getOpenIssueCount.js +0 -12
- package/dist/lib/getOpenIssueCount.js.map +1 -1
- package/dist/lib/getOpenIssueCount.test.js +1 -35
- package/dist/lib/getOpenIssueCount.test.js.map +1 -1
- package/dist/lib/getProgress.d.ts +6 -26
- package/dist/lib/getProgress.d.ts.map +1 -1
- package/dist/lib/getProgress.js +8 -109
- package/dist/lib/getProgress.js.map +1 -1
- package/dist/lib/getProgress.test.js +2 -1
- package/dist/lib/getProgress.test.js.map +1 -1
- package/dist/lib/getPromptContent.d.ts +8 -0
- package/dist/lib/getPromptContent.d.ts.map +1 -0
- package/dist/lib/getPromptContent.js +31 -0
- package/dist/lib/getPromptContent.js.map +1 -0
- package/dist/lib/getTerminalSize.d.ts +8 -0
- package/dist/lib/getTerminalSize.d.ts.map +1 -0
- package/dist/lib/getTerminalSize.js +10 -0
- package/dist/lib/getTerminalSize.js.map +1 -0
- package/dist/lib/getTodoProgress.d.ts +4 -0
- package/dist/lib/getTodoProgress.d.ts.map +1 -0
- package/dist/lib/getTodoProgress.js +22 -0
- package/dist/lib/getTodoProgress.js.map +1 -0
- package/dist/lib/insertTodo.d.ts +7 -0
- package/dist/lib/insertTodo.d.ts.map +1 -0
- package/dist/lib/insertTodo.js +22 -0
- package/dist/lib/insertTodo.js.map +1 -0
- package/dist/lib/outputEvent.d.ts +5 -0
- package/dist/lib/outputEvent.d.ts.map +1 -0
- package/dist/lib/outputEvent.js +7 -0
- package/dist/lib/outputEvent.js.map +1 -0
- package/dist/lib/parseStdinCommand.d.ts +25 -0
- package/dist/lib/parseStdinCommand.d.ts.map +1 -0
- package/dist/lib/parseStdinCommand.js +43 -0
- package/dist/lib/parseStdinCommand.js.map +1 -0
- package/dist/lib/parseStdinCommand.test.d.ts +2 -0
- package/dist/lib/parseStdinCommand.test.d.ts.map +1 -0
- package/dist/lib/parseStdinCommand.test.js +93 -0
- package/dist/lib/parseStdinCommand.test.js.map +1 -0
- package/dist/lib/parseTaskLifecycle.d.ts +18 -0
- package/dist/lib/parseTaskLifecycle.d.ts.map +1 -0
- package/dist/lib/parseTaskLifecycle.js +30 -0
- package/dist/lib/parseTaskLifecycle.js.map +1 -0
- package/dist/lib/parseTaskLifecycle.test.d.ts +2 -0
- package/dist/lib/parseTaskLifecycle.test.d.ts.map +1 -0
- package/dist/lib/parseTaskLifecycle.test.js +122 -0
- package/dist/lib/parseTaskLifecycle.test.js.map +1 -0
- package/dist/lib/parseWorktreeFromBranch.d.ts +13 -0
- package/dist/lib/parseWorktreeFromBranch.d.ts.map +1 -0
- package/dist/lib/parseWorktreeFromBranch.js +19 -0
- package/dist/lib/parseWorktreeFromBranch.js.map +1 -0
- package/dist/lib/processEvents.d.ts +12 -0
- package/dist/lib/processEvents.d.ts.map +1 -0
- package/dist/lib/processEvents.js +113 -0
- package/dist/lib/processEvents.js.map +1 -0
- package/dist/lib/rel.d.ts +7 -1
- package/dist/lib/rel.d.ts.map +1 -1
- package/dist/lib/rel.js +13 -4
- package/dist/lib/rel.js.map +1 -1
- package/dist/lib/rel.test.js +16 -1
- package/dist/lib/rel.test.js.map +1 -1
- package/dist/lib/sdkMessageToEvent.d.ts +6 -0
- package/dist/lib/sdkMessageToEvent.d.ts.map +1 -0
- package/dist/lib/sdkMessageToEvent.js +12 -0
- package/dist/lib/sdkMessageToEvent.js.map +1 -0
- package/dist/lib/shortenTempPaths.d.ts +7 -1
- package/dist/lib/shortenTempPaths.d.ts.map +1 -1
- package/dist/lib/shortenTempPaths.js +7 -2
- package/dist/lib/shortenTempPaths.js.map +1 -1
- package/dist/lib/types.d.ts +19 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +2 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/useTerminalSize.d.ts +3 -2
- package/dist/lib/useTerminalSize.d.ts.map +1 -1
- package/dist/lib/useTerminalSize.js +4 -6
- package/dist/lib/useTerminalSize.js.map +1 -1
- package/package.json +4 -3
- package/templates/core-prompt.md +77 -0
- package/templates/skills/manage-tasks/SKILL.md +113 -0
- package/templates/workflow.md +46 -0
- package/templates/prompt-beads.md +0 -44
- package/templates/prompt-todos.md +0 -17
- package/templates/todo.md +0 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorktreeManager.js","sourceRoot":"","sources":["../../src/lib/WorktreeManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAEtE,MAAM,GAAG,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAA;AAEzC;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,eAAe;IAClB,iBAAiB,CAAQ;IACzB,iBAAiB,CAAQ;IAEjC,YAAY,iBAAyB;QACnC,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;QAC1C,2DAA2D;QAC3D,MAAM,WAAW,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAA;QAC/C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,GAAG,WAAW,YAAY,CAAC,CAAA;IACvF,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAA;IAC/B,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,UAAkB,EAAE,YAAoB;QACtD,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,YAAY,IAAI,UAAU,EAAE,CAAC,CAAA;IACtE,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,UAAkB,EAAE,YAAoB;QACpD,OAAO,SAAS,YAAY,IAAI,UAAU,EAAE,CAAA;IAC9C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;IACV,2BAA2B;IAC3B,OAA8B;QAE9B,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,OAAO,CAAA;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;QACnE,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;QAE/D,GAAG,CAAC,wBAAwB,YAAY,gBAAgB,UAAU,EAAE,CAAC,CAAA;QAErE,6CAA6C;QAC7C,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAA;QAErC,wCAAwC;QACxC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAA;QAEnE,GAAG,CAAC,+BAA+B,CAAC,CAAA;QAEpC,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,UAAU;YAClB,UAAU;YACV,YAAY;SACb,CAAA;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;IACT,sBAAsB;IACtB,UAAkB;IAClB,wBAAwB;IACxB,YAAoB;QAEpB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;QAE/D,GAAG,CAAC,kBAAkB,UAAU,UAAU,CAAC,CAAA;QAE3C,IAAI,CAAC;YACH,iCAAiC;YACjC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;YAC7C,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAA;YAExC,mBAAmB;YACnB,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,UAAU,EAAE,CAAC,CAAC,CAAA;YAE7E,GAAG,CAAC,kBAAkB,CAAC,CAAA;YAEvB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,KAAK;gBACnB,OAAO,EAAE,uBAAuB,UAAU,OAAO,UAAU,EAAE;aAC9D,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAE3E,iCAAiC;YACjC,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;gBACzF,GAAG,CAAC,qBAAqB,CAAC,CAAA;gBAC1B,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,YAAY,EAAE,IAAI;oBAClB,OAAO,EAAE,+BAA+B,UAAU,EAAE;iBACrD,CAAA;YACH,CAAC;YAED,GAAG,CAAC,iBAAiB,YAAY,EAAE,CAAC,CAAA;YACpC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,KAAK;gBACnB,OAAO,EAAE,iBAAiB,YAAY,EAAE;aACzC,CAAA;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;IACV,sBAAsB;IACtB,UAAkB;IAClB,wBAAwB;IACxB,YAAoB;QAEpB,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;QACnE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;QAE7C,GAAG,CAAC,qBAAqB,YAAY,OAAO,UAAU,EAAE,CAAC,CAAA;QAEzD,IAAI,CAAC;YACH,qCAAqC;YACrC,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAA;YAEzD,GAAG,CAAC,mBAAmB,CAAC,CAAA;YAExB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,KAAK;gBACnB,OAAO,EAAE,2BAA2B,UAAU,EAAE;aACjD,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAE3E,kCAAkC;YAClC,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;gBAChF,GAAG,CAAC,sBAAsB,CAAC,CAAA;gBAE3B,mBAAmB;gBACnB,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAA;gBAC1D,CAAC;gBAAC,MAAM,CAAC;oBACP,sBAAsB;gBACxB,CAAC;gBAED,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,YAAY,EAAE,IAAI;oBAClB,OAAO,EAAE,2BAA2B;iBACrC,CAAA;YACH,CAAC;YAED,GAAG,CAAC,kBAAkB,YAAY,EAAE,CAAC,CAAA;YACrC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,KAAK;gBACnB,OAAO,EAAE,kBAAkB,YAAY,EAAE;aAC1C,CAAA;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;IACV,sBAAsB;IACtB,UAAkB;IAClB,wBAAwB;IACxB,YAAoB;IACpB,mDAAmD;IACnD,YAAY,GAAG,IAAI;QAEnB,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;QACnE,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;QAE/D,GAAG,CAAC,wBAAwB,YAAY,EAAE,CAAC,CAAA;QAE3C,sBAAsB;QACtB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,CAAA;QACjE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,6CAA6C;YAC7C,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC3E,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBACpD,MAAM,KAAK,CAAA;YACb,CAAC;YACD,GAAG,CAAC,YAAY,YAAY,kCAAkC,CAAC,CAAA;QACjE,CAAC;QAED,iCAAiC;QACjC,IAAI,YAAY,EAAE,CAAC;YACjB,GAAG,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAA;YACpC,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAA;YAC9C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,2CAA2C;gBAC3C,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBAC3E,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;oBACxC,MAAM,KAAK,CAAA;gBACb,CAAC;gBACD,GAAG,CAAC,UAAU,UAAU,mCAAmC,CAAC,CAAA;YAC9D,CAAC;QACH,CAAC;QAED,GAAG,CAAC,+BAA+B,CAAC,CAAA;IACtC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,GAAG,CAAC,mBAAmB,CAAC,CAAA;QAExB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAA;QAClE,MAAM,SAAS,GAAmB,EAAE,CAAA;QAEpC,yBAAyB;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChC,IAAI,WAAW,GAAkB,IAAI,CAAA;QACrC,IAAI,aAAa,GAAkB,IAAI,CAAA;QAEvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACjC,oDAAoD;gBACpD,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,aAAa,EAAE,SAAS,CAAC,CAAA;gBAC9D,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;YAC9C,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBACjD,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;YACzD,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,aAAa,EAAE,SAAS,CAAC,CAAA;QAE9D,GAAG,CAAC,SAAS,SAAS,CAAC,MAAM,YAAY,CAAC,CAAA;QAC1C,OAAO,SAAS,CAAA;IAClB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;IACV,sBAAsB;IACtB,UAAkB;IAClB,wBAAwB;IACxB,YAAoB;QAEpB,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;QACnE,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,CAAA;YACtC,OAAO,KAAK,CAAC,WAAW,EAAE,CAAA;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,GAAG,CAAC,gCAAgC,CAAC,CAAA;QACrC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAA;IACvC,CAAC;IAED;;OAEG;IACK,kBAAkB;IACxB,mCAAmC;IACnC,WAA0B;IAC1B,qCAAqC;IACrC,aAA4B;IAC5B,+BAA+B;IAC/B,SAAyB;QAEzB,IAAI,WAAW,IAAI,aAAa,EAAE,CAAC;YACjC,oCAAoC;YACpC,IAAI,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACzF,MAAM,MAAM,GAAG,uBAAuB,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;gBAC5E,IAAI,MAAM,EAAE,CAAC;oBACX,SAAS,CAAC,IAAI,CAAC;wBACb,IAAI,EAAE,WAAW;wBACjB,MAAM,EAAE,aAAa;wBACrB,GAAG,MAAM;qBACV,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa;QACzB,oCAAoC;QACpC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAA;YACtE,OAAO,MAAM,CAAA;QACf,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAA;gBACxE,OAAO,QAAQ,CAAA;YACjB,CAAC;YAAC,MAAM,CAAC;gBACP,kBAAkB;gBAClB,OAAO,MAAM,CAAA;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,wBAAwB;QACpC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,mCAAmC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAA;YAChE,MAAM,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC1D,CAAC;IACH,CAAC;IAED;;OAEG;IACK,GAAG,CAAC,IAAc;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAA;IACpD,CAAC;IAED;;OAEG;IACK,QAAQ;IACd,4CAA4C;IAC5C,GAAW;IACX,4BAA4B;IAC5B,IAAc;QAEd,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,GAAG,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAA;YAE/C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE;gBAC9B,GAAG;gBACH,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;aAClC,CAAC,CAAA;YAEF,IAAI,MAAM,GAAG,EAAE,CAAA;YACf,IAAI,MAAM,GAAG,EAAE,CAAA;YAEf,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;gBAC5B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAA;YAC3B,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;gBAC5B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAA;YAC3B,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;gBACtB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;gBACxB,CAAC;qBAAM,CAAC;oBACN,gFAAgF;oBAChF,MAAM,cAAc,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBAChF,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAA;gBAChF,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;gBACvB,MAAM,CAAC,KAAK,CAAC,CAAA;YACf,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorktreeManager.test.d.ts","sourceRoot":"","sources":["../../src/lib/WorktreeManager.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,261 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* Inserts the todo into the working directory, stages only that line, and commits.
|
|
4
4
|
* Creates the file if it doesn't exist.
|
|
5
5
|
*/
|
|
6
|
-
export declare const addTodo: (
|
|
7
|
-
/**
|
|
8
|
-
|
|
9
|
-
*/
|
|
10
|
-
|
|
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
11
|
//# sourceMappingURL=addTodo.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addTodo.d.ts","sourceRoot":"","sources":["../../src/lib/addTodo.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"addTodo.d.ts","sourceRoot":"","sources":["../../src/lib/addTodo.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,eAAO,MAAM,OAAO;AAClB,8CAA8C;AAC9C,aAAa,MAAM;AACnB,mEAAmE;AACnE,MAAK,MAAsB,KAC1B,IA6CF,CAAA"}
|
package/dist/lib/addTodo.js
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import { execSync } from "child_process";
|
|
2
2
|
import { existsSync, readFileSync, writeFileSync } from "fs";
|
|
3
3
|
import { join } from "path";
|
|
4
|
+
import { insertTodo } from "./insertTodo.js";
|
|
4
5
|
/**
|
|
5
6
|
* Adds a todo item to the todo.md file and commits just that line.
|
|
6
7
|
* Inserts the todo into the working directory, stages only that line, and commits.
|
|
7
8
|
* Creates the file if it doesn't exist.
|
|
8
9
|
*/
|
|
9
|
-
export const addTodo = (
|
|
10
|
+
export const addTodo = (
|
|
11
|
+
/** The description of the todo item to add */
|
|
12
|
+
description,
|
|
13
|
+
/** The working directory to use (defaults to current directory) */
|
|
14
|
+
cwd = process.cwd()) => {
|
|
10
15
|
const todoPath = join(cwd, ".ralph", "todo.md");
|
|
11
16
|
// Read current working directory file (or empty string if it doesn't exist) and insert the new todo
|
|
12
17
|
const content = existsSync(todoPath) ? readFileSync(todoPath, "utf-8") : "";
|
|
@@ -43,23 +48,4 @@ export const addTodo = (description, cwd = process.cwd()) => {
|
|
|
43
48
|
execSync(`git commit -m "todo: ${escapedDescription}"`, { cwd, stdio: "pipe" });
|
|
44
49
|
console.log(`✅ added`);
|
|
45
50
|
};
|
|
46
|
-
/**
|
|
47
|
-
* Inserts a todo item into the content, right after the "To do" header.
|
|
48
|
-
*/
|
|
49
|
-
export const insertTodo = (content, description) => {
|
|
50
|
-
const lines = content.split("\n");
|
|
51
|
-
const todoHeaderIndex = lines.findIndex(line => /^###?\s*To\s*do/i.test(line));
|
|
52
|
-
if (todoHeaderIndex === -1) {
|
|
53
|
-
// No "To do" section found, add one at the beginning
|
|
54
|
-
return `### To do\n\n- [ ] ${description}\n\n${content}`;
|
|
55
|
-
}
|
|
56
|
-
// Find the first line after the header (skip empty lines)
|
|
57
|
-
let insertIndex = todoHeaderIndex + 1;
|
|
58
|
-
while (insertIndex < lines.length && lines[insertIndex].trim() === "") {
|
|
59
|
-
insertIndex++;
|
|
60
|
-
}
|
|
61
|
-
// Insert the new todo item
|
|
62
|
-
lines.splice(insertIndex, 0, `- [ ] ${description}`);
|
|
63
|
-
return lines.join("\n");
|
|
64
|
-
};
|
|
65
51
|
//# sourceMappingURL=addTodo.js.map
|
package/dist/lib/addTodo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addTodo.js","sourceRoot":"","sources":["../../src/lib/addTodo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"addTodo.js","sourceRoot":"","sources":["../../src/lib/addTodo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;AACrB,8CAA8C;AAC9C,WAAmB;AACnB,mEAAmE;AACnE,MAAc,OAAO,CAAC,GAAG,EAAE,EACrB,EAAE;IACR,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;IAE/C,oGAAoG;IACpG,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC3E,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IAEnD,6CAA6C;IAC7C,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;IAEnC,2FAA2F;IAC3F,IAAI,YAAY,GAAG,EAAE,CAAA;IACrB,IAAI,CAAC;QACH,YAAY,GAAG,QAAQ,CACrB,+FAA+F,EAC/F;YACE,GAAG;YACH,QAAQ,EAAE,OAAO;SAClB,CACF,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QACP,kDAAkD;QAClD,YAAY,GAAG,EAAE,CAAA;IACnB,CAAC;IAED,8DAA8D;IAC9D,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;IAC3D,MAAM,QAAQ,GAAG,QAAQ,CAAC,4BAA4B,EAAE;QACtD,GAAG;QACH,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,aAAa;KACrB,CAAC,CAAC,IAAI,EAAE,CAAA;IAET,2DAA2D;IAC3D,qCAAqC;IACrC,QAAQ,CAAC,6CAA6C,QAAQ,iBAAiB,EAAE;QAC/E,GAAG;QACH,KAAK,EAAE,MAAM;KACd,CAAC,CAAA;IAEF,sFAAsF;IACtF,MAAM,kBAAkB,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAClF,QAAQ,CAAC,wBAAwB,kBAAkB,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IAE/E,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;AACxB,CAAC,CAAA"}
|
|
@@ -1,13 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
IssueID: string;
|
|
5
|
-
Title?: string;
|
|
6
|
-
old_status?: string;
|
|
7
|
-
new_status?: string;
|
|
8
|
-
parent_id?: string;
|
|
9
|
-
Actor?: string;
|
|
10
|
-
};
|
|
1
|
+
import type { MutationEvent } from "@herbcaudill/ralph-shared";
|
|
2
|
+
/** Re-export MutationEvent for backward compatibility */
|
|
3
|
+
export type { MutationEvent } from "@herbcaudill/ralph-shared";
|
|
11
4
|
/**
|
|
12
5
|
* Simple RPC client for beads daemon.
|
|
13
6
|
* Connects to .beads/bd.sock and sends JSON-over-newline requests.
|
|
@@ -29,9 +22,10 @@ export declare class BeadsClient {
|
|
|
29
22
|
private execute;
|
|
30
23
|
/**
|
|
31
24
|
* Get mutations since a given timestamp.
|
|
32
|
-
* @param since Unix timestamp in milliseconds (0 for all recent)
|
|
33
25
|
*/
|
|
34
|
-
getMutations(
|
|
26
|
+
getMutations(
|
|
27
|
+
/** Unix timestamp in milliseconds (0 for all recent) */
|
|
28
|
+
since?: number): Promise<MutationEvent[]>;
|
|
35
29
|
/**
|
|
36
30
|
* Get ready issues (no blockers).
|
|
37
31
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beadsClient.d.ts","sourceRoot":"","sources":["../../src/lib/beadsClient.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"beadsClient.d.ts","sourceRoot":"","sources":["../../src/lib/beadsClient.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAE9D,0DAA0D;AAC1D,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAe9D;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,SAAS,CAAQ;IAEzB;;OAEG;IACH,MAAM,CAAC,YAAY,IAAI,OAAO;IAI9B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IA4BjC;;OAEG;YACW,OAAO;IAqDrB;;OAEG;IACG,YAAY;IAChB,wDAAwD;IACxD,KAAK,GAAE,MAAU,GAChB,OAAO,CAAC,aAAa,EAAE,CAAC;IAK3B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAK1D;;OAEG;IACH,KAAK,IAAI,IAAI;CAOd;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,EAC1C,QAAQ,GAAE,MAAa,GACtB,MAAM,IAAI,CAsDZ"}
|
package/dist/lib/beadsClient.js
CHANGED
|
@@ -90,9 +90,10 @@ export class BeadsClient {
|
|
|
90
90
|
}
|
|
91
91
|
/**
|
|
92
92
|
* Get mutations since a given timestamp.
|
|
93
|
-
* @param since Unix timestamp in milliseconds (0 for all recent)
|
|
94
93
|
*/
|
|
95
|
-
async getMutations(
|
|
94
|
+
async getMutations(
|
|
95
|
+
/** Unix timestamp in milliseconds (0 for all recent) */
|
|
96
|
+
since = 0) {
|
|
96
97
|
const result = await this.execute("get_mutations", { since });
|
|
97
98
|
return result ?? [];
|
|
98
99
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beadsClient.js","sourceRoot":"","sources":["../../src/lib/beadsClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAU,MAAM,KAAK,CAAA;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"beadsClient.js","sourceRoot":"","sources":["../../src/lib/beadsClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"captureBeadsSnapshot.d.ts","sourceRoot":"","sources":["../../src/lib/captureBeadsSnapshot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,yDAAyD;AACzD,eAAO,MAAM,oBAAoB,QAAO,eAAe,GAAG,SA2BzD,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { execSync } from "child_process";
|
|
2
|
+
/** Capture a startup snapshot for a beads workspace. */
|
|
3
|
+
export const captureBeadsSnapshot = () => {
|
|
4
|
+
try {
|
|
5
|
+
const timestamp = new Date().toISOString();
|
|
6
|
+
const openCount = parseInt(execSync("bd count --status=open", {
|
|
7
|
+
encoding: "utf-8",
|
|
8
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
9
|
+
}).trim(), 10);
|
|
10
|
+
const inProgressCount = parseInt(execSync("bd count --status=in_progress", {
|
|
11
|
+
encoding: "utf-8",
|
|
12
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
13
|
+
}).trim(), 10);
|
|
14
|
+
return {
|
|
15
|
+
initialCount: openCount + inProgressCount,
|
|
16
|
+
timestamp,
|
|
17
|
+
type: "beads",
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=captureBeadsSnapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"captureBeadsSnapshot.js","sourceRoot":"","sources":["../../src/lib/captureBeadsSnapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAGxC,yDAAyD;AACzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAgC,EAAE;IACpE,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAE1C,MAAM,SAAS,GAAG,QAAQ,CACxB,QAAQ,CAAC,wBAAwB,EAAE;YACjC,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC,IAAI,EAAE,EACT,EAAE,CACH,CAAA;QACD,MAAM,eAAe,GAAG,QAAQ,CAC9B,QAAQ,CAAC,+BAA+B,EAAE;YACxC,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC,IAAI,EAAE,EACT,EAAE,CACH,CAAA;QAED,OAAO;YACL,YAAY,EAAE,SAAS,GAAG,eAAe;YACzC,SAAS;YACT,IAAI,EAAE,OAAO;SACd,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { StartupSnapshot } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Capture a startup snapshot for beads workspaces.
|
|
4
|
+
* Call this once at startup to capture the baseline count and timestamp.
|
|
5
|
+
* Returns undefined if not a beads workspace.
|
|
6
|
+
*/
|
|
7
|
+
export declare const captureStartupSnapshot: () => StartupSnapshot | undefined;
|
|
8
|
+
/** @deprecated Use captureStartupSnapshot instead */
|
|
9
|
+
export declare const getInitialBeadsCount: () => number | undefined;
|
|
10
|
+
//# sourceMappingURL=captureStartupSnapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"captureStartupSnapshot.d.ts","sourceRoot":"","sources":["../../src/lib/captureStartupSnapshot.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAMjD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,QAAO,eAAe,GAAG,SAY3D,CAAA;AAED,sDAAsD;AACtD,eAAO,MAAM,oBAAoB,QAAO,MAAM,GAAG,SAGhD,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { existsSync } from "fs";
|
|
2
|
+
import { join } from "path";
|
|
3
|
+
import { captureBeadsSnapshot } from "./captureBeadsSnapshot.js";
|
|
4
|
+
import { captureTodoSnapshot } from "./captureTodoSnapshot.js";
|
|
5
|
+
const beadsDir = join(process.cwd(), ".beads");
|
|
6
|
+
const ralphDir = join(process.cwd(), ".ralph");
|
|
7
|
+
const todoFile = join(ralphDir, "todo.md");
|
|
8
|
+
/**
|
|
9
|
+
* Capture a startup snapshot for beads workspaces.
|
|
10
|
+
* Call this once at startup to capture the baseline count and timestamp.
|
|
11
|
+
* Returns undefined if not a beads workspace.
|
|
12
|
+
*/
|
|
13
|
+
export const captureStartupSnapshot = () => {
|
|
14
|
+
// Check for beads workspace
|
|
15
|
+
if (existsSync(beadsDir)) {
|
|
16
|
+
return captureBeadsSnapshot();
|
|
17
|
+
}
|
|
18
|
+
// Check for todo.md workspace
|
|
19
|
+
if (existsSync(todoFile)) {
|
|
20
|
+
return captureTodoSnapshot();
|
|
21
|
+
}
|
|
22
|
+
return undefined;
|
|
23
|
+
};
|
|
24
|
+
/** @deprecated Use captureStartupSnapshot instead */
|
|
25
|
+
export const getInitialBeadsCount = () => {
|
|
26
|
+
const snapshot = captureStartupSnapshot();
|
|
27
|
+
return snapshot?.initialCount;
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=captureStartupSnapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"captureStartupSnapshot.js","sourceRoot":"","sources":["../../src/lib/captureStartupSnapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAG9D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAA;AAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAA;AAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;AAE1C;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAgC,EAAE;IACtE,4BAA4B;IAC5B,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,OAAO,oBAAoB,EAAE,CAAA;IAC/B,CAAC;IAED,8BAA8B;IAC9B,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,OAAO,mBAAmB,EAAE,CAAA;IAC9B,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED,sDAAsD;AACtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAuB,EAAE;IAC3D,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAA;IACzC,OAAO,QAAQ,EAAE,YAAY,CAAA;AAC/B,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"captureTodoSnapshot.d.ts","sourceRoot":"","sources":["../../src/lib/captureTodoSnapshot.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAKjD,2DAA2D;AAC3D,eAAO,MAAM,mBAAmB,QAAO,eAAe,GAAG,SAmBxD,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { readFileSync } from "fs";
|
|
2
|
+
import { join } from "path";
|
|
3
|
+
const ralphDir = join(process.cwd(), ".ralph");
|
|
4
|
+
const todoFile = join(ralphDir, "todo.md");
|
|
5
|
+
/** Capture a startup snapshot for a todo.md workspace. */
|
|
6
|
+
export const captureTodoSnapshot = () => {
|
|
7
|
+
try {
|
|
8
|
+
const content = readFileSync(todoFile, "utf-8");
|
|
9
|
+
// Count all items (checked + unchecked)
|
|
10
|
+
const uncheckedMatches = content.match(/- \[ \]/g);
|
|
11
|
+
const unchecked = uncheckedMatches ? uncheckedMatches.length : 0;
|
|
12
|
+
const checkedMatches = content.match(/- \[[xX]\]/g);
|
|
13
|
+
const checked = checkedMatches ? checkedMatches.length : 0;
|
|
14
|
+
return {
|
|
15
|
+
initialCount: unchecked + checked,
|
|
16
|
+
timestamp: new Date().toISOString(),
|
|
17
|
+
type: "todo",
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=captureTodoSnapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"captureTodoSnapshot.js","sourceRoot":"","sources":["../../src/lib/captureTodoSnapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAA;AAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;AAE1C,2DAA2D;AAC3D,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAgC,EAAE;IACnE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAE/C,wCAAwC;QACxC,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QAClD,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAEhE,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QACnD,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAE1D,OAAO;YACL,YAAY,EAAE,SAAS,GAAG,OAAO;YACjC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,IAAI,EAAE,MAAM;SACb,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** Copy files from templates to destination, creating directories as needed. */
|
|
2
|
+
export declare function copyTemplates(
|
|
3
|
+
/** Directory containing template files */
|
|
4
|
+
templatesDir: string,
|
|
5
|
+
/** Destination directory for copied files */
|
|
6
|
+
destDir: string,
|
|
7
|
+
/** Array of source and destination path pairs */
|
|
8
|
+
files: Array<{
|
|
9
|
+
src: string;
|
|
10
|
+
dest: string;
|
|
11
|
+
}>): CopyResult;
|
|
12
|
+
/** Result of copying template files. */
|
|
13
|
+
interface CopyResult {
|
|
14
|
+
/** Files successfully created */
|
|
15
|
+
created: string[];
|
|
16
|
+
/** Files that already existed and were skipped */
|
|
17
|
+
skipped: string[];
|
|
18
|
+
/** Error messages for files that could not be copied */
|
|
19
|
+
errors: string[];
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=copyTemplates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copyTemplates.d.ts","sourceRoot":"","sources":["../../src/lib/copyTemplates.ts"],"names":[],"mappings":"AAGA,iFAAiF;AACjF,wBAAgB,aAAa;AAC3B,0CAA0C;AAC1C,YAAY,EAAE,MAAM;AACpB,6CAA6C;AAC7C,OAAO,EAAE,MAAM;AACf,iDAAiD;AACjD,KAAK,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAC1C,UAAU,CAuBZ;AAED,yCAAyC;AACzC,UAAU,UAAU;IAClB,iCAAiC;IACjC,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,kDAAkD;IAClD,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,wDAAwD;IACxD,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB"}
|