@herbcaudill/ralph 0.4.1 → 0.4.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"cleanupAllWorktrees.d.ts","sourceRoot":"","sources":["../../src/lib/cleanupAllWorktrees.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAe1D"}
1
+ {"version":3,"file":"cleanupAllWorktrees.d.ts","sourceRoot":"","sources":["../../src/lib/cleanupAllWorktrees.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAe1D"}
@@ -1,14 +1,12 @@
1
1
  import { execSync } from "child_process";
2
2
  import { existsSync, rmSync } from "fs";
3
- import { tmpdir } from "os";
4
- import { join } from "path";
5
- import { execOptions } from "./types.js";
3
+ import { execOptions, getWorktreesDir } from "./types.js";
6
4
  /**
7
5
  * Clean up all ralph worktrees (useful for recovery)
8
6
  */
9
7
  export function cleanupAllWorktrees(repoRoot) {
10
8
  try {
11
- const worktreesDir = join(tmpdir(), "ralph-worktrees");
9
+ const worktreesDir = getWorktreesDir(repoRoot);
12
10
  if (existsSync(worktreesDir)) {
13
11
  rmSync(worktreesDir, { recursive: true, force: true });
14
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cleanupAllWorktrees.js","sourceRoot":"","sources":["../../src/lib/cleanupAllWorktrees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAA;QACtD,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACxD,CAAC;QAED,sCAAsC;QACtC,QAAQ,CAAC,oBAAoB,EAAE;YAC7B,GAAG,WAAW;YACd,GAAG,EAAE,QAAQ;SACd,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,6CAA6C,KAAK,EAAE,CAAC,CAAA;IACrE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"cleanupAllWorktrees.js","sourceRoot":"","sources":["../../src/lib/cleanupAllWorktrees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEzD;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;QAC9C,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACxD,CAAC;QAED,sCAAsC;QACtC,QAAQ,CAAC,oBAAoB,EAAE;YAC7B,GAAG,WAAW;YACd,GAAG,EAAE,QAAQ;SACd,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,6CAA6C,KAAK,EAAE,CAAC,CAAA;IACrE,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createWorktree.d.ts","sourceRoot":"","sources":["../../src/lib/createWorktree.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAe,MAAM,YAAY,CAAA;AAEtD;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAyB7D"}
1
+ {"version":3,"file":"createWorktree.d.ts","sourceRoot":"","sources":["../../src/lib/createWorktree.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAgC,MAAM,YAAY,CAAA;AAEvE;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAyB7D"}
@@ -1,9 +1,8 @@
1
1
  import { execSync } from "child_process";
2
2
  import { mkdirSync } from "fs";
3
- import { tmpdir } from "os";
4
3
  import { join } from "path";
5
4
  import { randomUUID } from "crypto";
6
- import { execOptions } from "./types.js";
5
+ import { execOptions, getWorktreesDir } from "./types.js";
7
6
  /**
8
7
  * Create a new git worktree for an iteration
9
8
  */
@@ -11,7 +10,7 @@ export function createWorktree(repoRoot) {
11
10
  const guid = randomUUID();
12
11
  const shortId = guid.slice(-6);
13
12
  const branch = `ralph-${shortId}`;
14
- const worktreesDir = join(tmpdir(), "ralph-worktrees");
13
+ const worktreesDir = getWorktreesDir(repoRoot);
15
14
  const worktreePath = join(worktreesDir, shortId);
16
15
  try {
17
16
  // Ensure worktrees directory exists
@@ -1 +1 @@
1
- {"version":3,"file":"createWorktree.js","sourceRoot":"","sources":["../../src/lib/createWorktree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAgB,WAAW,EAAE,MAAM,YAAY,CAAA;AAEtD;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,IAAI,GAAG,UAAU,EAAE,CAAA;IACzB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9B,MAAM,MAAM,GAAG,SAAS,OAAO,EAAE,CAAA;IACjC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAA;IACtD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAEhD,IAAI,CAAC;QACH,oCAAoC;QACpC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAE5C,oDAAoD;QACpD,QAAQ,CAAC,uBAAuB,MAAM,KAAK,YAAY,GAAG,EAAE;YAC1D,GAAG,WAAW;YACd,GAAG,EAAE,QAAQ;SACd,CAAC,CAAA;QAEF,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,MAAM;YACN,IAAI;SACL,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAA;IACxD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"createWorktree.js","sourceRoot":"","sources":["../../src/lib/createWorktree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAA;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAgB,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEvE;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,IAAI,GAAG,UAAU,EAAE,CAAA;IACzB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9B,MAAM,MAAM,GAAG,SAAS,OAAO,EAAE,CAAA;IACjC,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;IAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAEhD,IAAI,CAAC;QACH,oCAAoC;QACpC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAE5C,oDAAoD;QACpD,QAAQ,CAAC,uBAAuB,MAAM,KAAK,YAAY,GAAG,EAAE;YAC1D,GAAG,WAAW;YACd,GAAG,EAAE,QAAQ;SACd,CAAC,CAAA;QAEF,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,MAAM;YACN,IAAI;SACL,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAA;IACxD,CAAC;AACH,CAAC"}
@@ -5,4 +5,9 @@ export interface WorktreeInfo {
5
5
  guid: string;
6
6
  }
7
7
  export declare const execOptions: ExecSyncOptions;
8
+ /**
9
+ * Get the worktrees directory for a given repo root.
10
+ * Creates a sibling directory named `<repo-name>-worktrees`.
11
+ */
12
+ export declare function getWorktreesDir(repoRoot: string): string;
8
13
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE/C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACb;AAED,eAAO,MAAM,WAAW,EAAE,eAGzB,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAG/C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACb;AAED,eAAO,MAAM,WAAW,EAAE,eAGzB,CAAA;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIxD"}
package/dist/lib/types.js CHANGED
@@ -1,5 +1,15 @@
1
+ import { basename, dirname, join } from "path";
1
2
  export const execOptions = {
2
3
  stdio: "pipe",
3
4
  encoding: "utf-8",
4
5
  };
6
+ /**
7
+ * Get the worktrees directory for a given repo root.
8
+ * Creates a sibling directory named `<repo-name>-worktrees`.
9
+ */
10
+ export function getWorktreesDir(repoRoot) {
11
+ const repoName = basename(repoRoot);
12
+ const parentDir = dirname(repoRoot);
13
+ return join(parentDir, `${repoName}-worktrees`);
14
+ }
5
15
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,WAAW,GAAoB;IAC1C,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,OAAO;CAClB,CAAA"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAQ9C,MAAM,CAAC,MAAM,WAAW,GAAoB;IAC1C,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,OAAO;CAClB,CAAA;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACnC,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACnC,OAAO,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,YAAY,CAAC,CAAA;AACjD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@herbcaudill/ralph",
3
- "version": "0.4.1",
3
+ "version": "0.4.3",
4
4
  "description": "Autonomous AI iteration engine for Claude CLI",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -13,18 +13,6 @@
13
13
  "bin",
14
14
  "templates"
15
15
  ],
16
- "scripts": {
17
- "build": "tsc",
18
- "dev": "tsc --watch",
19
- "ralph": "tsx src/index.ts",
20
- "test": "vitest run",
21
- "test:unit": "pnpm test --exclude test/e2e/**",
22
- "test:e2e": "pnpm test --config vitest.e2e.config.ts",
23
- "test:watch": "vitest --watch",
24
- "test:ui": "vitest --ui",
25
- "format": "prettier --write .",
26
- "prepublishOnly": "pnpm build"
27
- },
28
16
  "keywords": [
29
17
  "claude",
30
18
  "ai",
@@ -62,5 +50,16 @@
62
50
  },
63
51
  "engines": {
64
52
  "node": ">=18.0.0"
53
+ },
54
+ "scripts": {
55
+ "build": "tsc",
56
+ "dev": "tsc --watch",
57
+ "ralph": "tsx src/index.ts",
58
+ "test": "vitest run",
59
+ "test:unit": "pnpm test --exclude test/e2e/**",
60
+ "test:e2e": "pnpm test --config vitest.e2e.config.ts",
61
+ "test:watch": "vitest --watch",
62
+ "test:ui": "vitest --ui",
63
+ "format": "prettier --write ."
65
64
  }
66
- }
65
+ }