ridgeline 0.1.5

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.
Files changed (111) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +137 -0
  3. package/dist/__tests__/cli.test.d.ts +1 -0
  4. package/dist/__tests__/cli.test.js +151 -0
  5. package/dist/__tests__/cli.test.js.map +1 -0
  6. package/dist/__tests__/git.test.d.ts +1 -0
  7. package/dist/__tests__/git.test.js +152 -0
  8. package/dist/__tests__/git.test.js.map +1 -0
  9. package/dist/__tests__/logging.test.d.ts +1 -0
  10. package/dist/__tests__/logging.test.js +119 -0
  11. package/dist/__tests__/logging.test.js.map +1 -0
  12. package/dist/agents/agents/builder.md +99 -0
  13. package/dist/agents/agents/planner.md +87 -0
  14. package/dist/agents/agents/reviewer.md +146 -0
  15. package/dist/agents/builder.md +99 -0
  16. package/dist/agents/planner.md +87 -0
  17. package/dist/agents/reviewer.md +146 -0
  18. package/dist/cli.d.ts +5 -0
  19. package/dist/cli.js +252 -0
  20. package/dist/cli.js.map +1 -0
  21. package/dist/commands/__tests__/dryRun.test.d.ts +1 -0
  22. package/dist/commands/__tests__/dryRun.test.js +105 -0
  23. package/dist/commands/__tests__/dryRun.test.js.map +1 -0
  24. package/dist/commands/__tests__/init.test.d.ts +1 -0
  25. package/dist/commands/__tests__/init.test.js +99 -0
  26. package/dist/commands/__tests__/init.test.js.map +1 -0
  27. package/dist/commands/__tests__/plan.test.d.ts +1 -0
  28. package/dist/commands/__tests__/plan.test.js +125 -0
  29. package/dist/commands/__tests__/plan.test.js.map +1 -0
  30. package/dist/commands/__tests__/resume.test.d.ts +1 -0
  31. package/dist/commands/__tests__/resume.test.js +141 -0
  32. package/dist/commands/__tests__/resume.test.js.map +1 -0
  33. package/dist/commands/__tests__/run.test.d.ts +1 -0
  34. package/dist/commands/__tests__/run.test.js +157 -0
  35. package/dist/commands/__tests__/run.test.js.map +1 -0
  36. package/dist/commands/dryRun.d.ts +2 -0
  37. package/dist/commands/dryRun.js +81 -0
  38. package/dist/commands/dryRun.js.map +1 -0
  39. package/dist/commands/init.d.ts +1 -0
  40. package/dist/commands/init.js +119 -0
  41. package/dist/commands/init.js.map +1 -0
  42. package/dist/commands/plan.d.ts +2 -0
  43. package/dist/commands/plan.js +78 -0
  44. package/dist/commands/plan.js.map +1 -0
  45. package/dist/commands/resume.d.ts +2 -0
  46. package/dist/commands/resume.js +25 -0
  47. package/dist/commands/resume.js.map +1 -0
  48. package/dist/commands/run.d.ts +2 -0
  49. package/dist/commands/run.js +80 -0
  50. package/dist/commands/run.js.map +1 -0
  51. package/dist/git.d.ts +9 -0
  52. package/dist/git.js +75 -0
  53. package/dist/git.js.map +1 -0
  54. package/dist/logging.d.ts +13 -0
  55. package/dist/logging.js +66 -0
  56. package/dist/logging.js.map +1 -0
  57. package/dist/runner/__tests__/claudeInvoker.test.d.ts +1 -0
  58. package/dist/runner/__tests__/claudeInvoker.test.js +138 -0
  59. package/dist/runner/__tests__/claudeInvoker.test.js.map +1 -0
  60. package/dist/runner/__tests__/phaseRunner.test.d.ts +1 -0
  61. package/dist/runner/__tests__/phaseRunner.test.js +225 -0
  62. package/dist/runner/__tests__/phaseRunner.test.js.map +1 -0
  63. package/dist/runner/__tests__/planInvoker.test.d.ts +1 -0
  64. package/dist/runner/__tests__/planInvoker.test.js +101 -0
  65. package/dist/runner/__tests__/planInvoker.test.js.map +1 -0
  66. package/dist/runner/__tests__/reviewerInvoker.test.d.ts +1 -0
  67. package/dist/runner/__tests__/reviewerInvoker.test.js +90 -0
  68. package/dist/runner/__tests__/reviewerInvoker.test.js.map +1 -0
  69. package/dist/runner/buildInvoker.d.ts +2 -0
  70. package/dist/runner/buildInvoker.js +110 -0
  71. package/dist/runner/buildInvoker.js.map +1 -0
  72. package/dist/runner/claudeInvoker.d.ts +11 -0
  73. package/dist/runner/claudeInvoker.js +135 -0
  74. package/dist/runner/claudeInvoker.js.map +1 -0
  75. package/dist/runner/phaseRunner.d.ts +2 -0
  76. package/dist/runner/phaseRunner.js +145 -0
  77. package/dist/runner/phaseRunner.js.map +1 -0
  78. package/dist/runner/planInvoker.d.ts +6 -0
  79. package/dist/runner/planInvoker.js +117 -0
  80. package/dist/runner/planInvoker.js.map +1 -0
  81. package/dist/runner/reviewerInvoker.d.ts +10 -0
  82. package/dist/runner/reviewerInvoker.js +144 -0
  83. package/dist/runner/reviewerInvoker.js.map +1 -0
  84. package/dist/state/__tests__/budget.test.d.ts +1 -0
  85. package/dist/state/__tests__/budget.test.js +130 -0
  86. package/dist/state/__tests__/budget.test.js.map +1 -0
  87. package/dist/state/__tests__/handoff.test.d.ts +1 -0
  88. package/dist/state/__tests__/handoff.test.js +70 -0
  89. package/dist/state/__tests__/handoff.test.js.map +1 -0
  90. package/dist/state/__tests__/snapshot.test.d.ts +1 -0
  91. package/dist/state/__tests__/snapshot.test.js +105 -0
  92. package/dist/state/__tests__/snapshot.test.js.map +1 -0
  93. package/dist/state/__tests__/stateManager.test.d.ts +1 -0
  94. package/dist/state/__tests__/stateManager.test.js +166 -0
  95. package/dist/state/__tests__/stateManager.test.js.map +1 -0
  96. package/dist/state/budget.d.ts +5 -0
  97. package/dist/state/budget.js +72 -0
  98. package/dist/state/budget.js.map +1 -0
  99. package/dist/state/handoff.d.ts +2 -0
  100. package/dist/state/handoff.js +54 -0
  101. package/dist/state/handoff.js.map +1 -0
  102. package/dist/state/snapshot.d.ts +1 -0
  103. package/dist/state/snapshot.js +154 -0
  104. package/dist/state/snapshot.js.map +1 -0
  105. package/dist/state/stateManager.d.ts +6 -0
  106. package/dist/state/stateManager.js +94 -0
  107. package/dist/state/stateManager.js.map +1 -0
  108. package/dist/types.d.ts +87 -0
  109. package/dist/types.js +3 -0
  110. package/dist/types.js.map +1 -0
  111. package/package.json +34 -0
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runResume = void 0;
4
+ const logging_1 = require("../logging");
5
+ const stateManager_1 = require("../state/stateManager");
6
+ const planInvoker_1 = require("../runner/planInvoker");
7
+ const run_1 = require("./run");
8
+ const runResume = async (config) => {
9
+ const state = (0, stateManager_1.loadState)(config.buildDir);
10
+ if (!state) {
11
+ (0, logging_1.logError)(`No state found for build '${config.buildName}'. Run 'ridgeline run ${config.buildName}' instead.`);
12
+ process.exit(1);
13
+ }
14
+ const phases = (0, planInvoker_1.scanPhases)(config.phasesDir);
15
+ if (phases.length === 0) {
16
+ (0, logging_1.logError)(`No phase files found for build '${config.buildName}'.`);
17
+ process.exit(1);
18
+ }
19
+ const completedCount = state.phases.filter((p) => p.status === "complete").length;
20
+ (0, logging_1.logInfo)(`Resuming build '${config.buildName}' from phase ${completedCount + 1}/${state.phases.length}`);
21
+ // Delegate to run, which skips completed phases
22
+ await (0, run_1.runBuild)(config);
23
+ };
24
+ exports.runResume = runResume;
25
+ //# sourceMappingURL=resume.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume.js","sourceRoot":"","sources":["../../src/commands/resume.ts"],"names":[],"mappings":";;;AACA,wCAA8C;AAC9C,wDAAiD;AACjD,uDAAkD;AAClD,+BAAgC;AAEzB,MAAM,SAAS,GAAG,KAAK,EAAE,MAAuB,EAAiB,EAAE;IACxE,MAAM,KAAK,GAAG,IAAA,wBAAS,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IACxC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,IAAA,kBAAQ,EAAC,6BAA6B,MAAM,CAAC,SAAS,yBAAyB,MAAM,CAAC,SAAS,YAAY,CAAC,CAAA;QAC5G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,wBAAU,EAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAC3C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,IAAA,kBAAQ,EAAC,mCAAmC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAA;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,MAAM,CAAA;IACjF,IAAA,iBAAO,EAAC,mBAAmB,MAAM,CAAC,SAAS,gBAAgB,cAAc,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;IAEvG,gDAAgD;IAChD,MAAM,IAAA,cAAQ,EAAC,MAAM,CAAC,CAAA;AACxB,CAAC,CAAA;AAlBY,QAAA,SAAS,aAkBrB"}
@@ -0,0 +1,2 @@
1
+ import { RidgelineConfig } from "../types";
2
+ export declare const runBuild: (config: RidgelineConfig) => Promise<void>;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runBuild = void 0;
4
+ const logging_1 = require("../logging");
5
+ const planInvoker_1 = require("../runner/planInvoker");
6
+ const phaseRunner_1 = require("../runner/phaseRunner");
7
+ const stateManager_1 = require("../state/stateManager");
8
+ const budget_1 = require("../state/budget");
9
+ const plan_1 = require("./plan");
10
+ const runBuild = async (config) => {
11
+ let phases = (0, planInvoker_1.scanPhases)(config.phasesDir);
12
+ // Plan if no phases exist
13
+ if (phases.length === 0) {
14
+ (0, logging_1.logInfo)("No phases found. Running planner first...\n");
15
+ await (0, plan_1.runPlan)(config);
16
+ phases = (0, planInvoker_1.scanPhases)(config.phasesDir);
17
+ }
18
+ if (phases.length === 0) {
19
+ throw new Error("No phases generated");
20
+ }
21
+ // Load or init state
22
+ let state = (0, stateManager_1.loadState)(config.buildDir);
23
+ if (!state) {
24
+ state = (0, stateManager_1.initState)(config.buildName, phases);
25
+ (0, stateManager_1.saveState)(config.buildDir, state);
26
+ }
27
+ const startTime = Date.now();
28
+ let completed = 0;
29
+ let failed = 0;
30
+ (0, logging_1.logInfo)(`Starting build: ${config.buildName} (${phases.length} phases)\n`);
31
+ // Run phases
32
+ let nextPhaseState = (0, stateManager_1.getNextIncompletePhase)(state);
33
+ while (nextPhaseState) {
34
+ const phase = phases.find((p) => p.id === nextPhaseState.id);
35
+ if (!phase) {
36
+ (0, logging_1.logError)(`Phase ${nextPhaseState.id} not found in filesystem`);
37
+ failed++;
38
+ break;
39
+ }
40
+ const result = await (0, phaseRunner_1.runPhase)(phase, config, state);
41
+ if (result === "passed") {
42
+ completed++;
43
+ }
44
+ else {
45
+ failed++;
46
+ break; // Halt on failure
47
+ }
48
+ // Budget check after phase
49
+ if (config.maxBudgetUsd) {
50
+ const totalCost = (0, budget_1.getTotalCost)(config.buildDir);
51
+ if (totalCost > config.maxBudgetUsd) {
52
+ (0, logging_1.logInfo)(`Budget limit reached: $${totalCost.toFixed(2)} > $${config.maxBudgetUsd}`);
53
+ break;
54
+ }
55
+ }
56
+ nextPhaseState = (0, stateManager_1.getNextIncompletePhase)(state);
57
+ }
58
+ // Summary
59
+ const duration = Date.now() - startTime;
60
+ const totalCost = (0, budget_1.getTotalCost)(config.buildDir);
61
+ console.log("");
62
+ (0, logging_1.logInfo)("=".repeat(40));
63
+ (0, logging_1.logInfo)(`Build: ${config.buildName}`);
64
+ (0, logging_1.logInfo)(`Phases completed: ${completed}/${phases.length}`);
65
+ if (failed > 0)
66
+ (0, logging_1.logInfo)(`Phases failed: ${failed}`);
67
+ (0, logging_1.logInfo)(`Duration: ${(duration / 1000 / 60).toFixed(1)} minutes`);
68
+ (0, logging_1.logInfo)(`Total cost: $${totalCost.toFixed(2)}`);
69
+ (0, logging_1.logInfo)("=".repeat(40));
70
+ if (failed > 0) {
71
+ (0, logging_1.logInfo)("\nCleanup: git tag -l 'ridgeline/*' | xargs git tag -d");
72
+ process.exit(1);
73
+ }
74
+ if (completed === phases.length) {
75
+ (0, logging_1.logInfo)("\nAll phases complete!");
76
+ (0, logging_1.logInfo)("Cleanup: git tag -l 'ridgeline/*' | xargs git tag -d");
77
+ }
78
+ };
79
+ exports.runBuild = runBuild;
80
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
package/dist/git.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ export declare const getCurrentSha: (cwd?: string) => string;
2
+ export declare const isWorkingTreeDirty: (cwd?: string) => boolean;
3
+ export declare const commitAll: (message: string, cwd?: string) => void;
4
+ export declare const createTag: (tagName: string, cwd?: string) => void;
5
+ export declare const tagExists: (tagName: string, cwd?: string) => boolean;
6
+ export declare const getDiff: (fromTag: string, cwd?: string) => string;
7
+ export declare const getChangedFileNames: (fromTag: string, cwd?: string) => string[];
8
+ export declare const getChangedFileContents: (fromTag: string, cwd?: string) => Map<string, string>;
9
+ export declare const deleteTag: (tagName: string, cwd?: string) => void;
package/dist/git.js ADDED
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deleteTag = exports.getChangedFileContents = exports.getChangedFileNames = exports.getDiff = exports.tagExists = exports.createTag = exports.commitAll = exports.isWorkingTreeDirty = exports.getCurrentSha = void 0;
4
+ const node_child_process_1 = require("node:child_process");
5
+ const run = (cmd, cwd) => (0, node_child_process_1.execSync)(cmd, { cwd, encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"] }).trim();
6
+ const getCurrentSha = (cwd) => run("git rev-parse HEAD", cwd);
7
+ exports.getCurrentSha = getCurrentSha;
8
+ const isWorkingTreeDirty = (cwd) => run("git status --porcelain", cwd).length > 0;
9
+ exports.isWorkingTreeDirty = isWorkingTreeDirty;
10
+ const commitAll = (message, cwd) => {
11
+ run("git add -A", cwd);
12
+ try {
13
+ run(`git commit -m ${JSON.stringify(message)}`, cwd);
14
+ }
15
+ catch {
16
+ // Nothing to commit (working tree clean)
17
+ }
18
+ };
19
+ exports.commitAll = commitAll;
20
+ const createTag = (tagName, cwd) => {
21
+ run(`git tag ${tagName}`, cwd);
22
+ };
23
+ exports.createTag = createTag;
24
+ const tagExists = (tagName, cwd) => {
25
+ const result = run(`git tag -l ${tagName}`, cwd);
26
+ return result.length > 0;
27
+ };
28
+ exports.tagExists = tagExists;
29
+ const getDiff = (fromTag, cwd) => {
30
+ try {
31
+ return run(`git diff ${fromTag}..HEAD`, cwd);
32
+ }
33
+ catch {
34
+ return "";
35
+ }
36
+ };
37
+ exports.getDiff = getDiff;
38
+ const getChangedFileNames = (fromTag, cwd) => {
39
+ try {
40
+ const output = run(`git diff --name-only ${fromTag}..HEAD`, cwd);
41
+ return output ? output.split("\n").filter(Boolean) : [];
42
+ }
43
+ catch {
44
+ return [];
45
+ }
46
+ };
47
+ exports.getChangedFileNames = getChangedFileNames;
48
+ const getChangedFileContents = (fromTag, cwd) => {
49
+ const files = (0, exports.getChangedFileNames)(fromTag, cwd);
50
+ const contents = new Map();
51
+ const fs = require("node:fs");
52
+ const path = require("node:path");
53
+ const root = cwd ?? process.cwd();
54
+ for (const file of files) {
55
+ const fullPath = path.join(root, file);
56
+ try {
57
+ contents.set(file, fs.readFileSync(fullPath, "utf-8"));
58
+ }
59
+ catch {
60
+ // File was deleted in the diff
61
+ }
62
+ }
63
+ return contents;
64
+ };
65
+ exports.getChangedFileContents = getChangedFileContents;
66
+ const deleteTag = (tagName, cwd) => {
67
+ try {
68
+ run(`git tag -d ${tagName}`, cwd);
69
+ }
70
+ catch {
71
+ // Tag doesn't exist
72
+ }
73
+ };
74
+ exports.deleteTag = deleteTag;
75
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { TrajectoryEntry } from "./types";
2
+ export declare const logInfo: (msg: string) => void;
3
+ export declare const logError: (msg: string) => void;
4
+ export declare const logPhase: (phaseId: string, msg: string) => void;
5
+ export declare const logTrajectory: (buildDir: string, entry: TrajectoryEntry) => void;
6
+ export declare const makeTrajectoryEntry: (type: TrajectoryEntry["type"], phaseId: string | null, summary: string, opts?: {
7
+ duration?: number;
8
+ tokens?: {
9
+ input: number;
10
+ output: number;
11
+ };
12
+ costUsd?: number;
13
+ }) => TrajectoryEntry;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.makeTrajectoryEntry = exports.logTrajectory = exports.logPhase = exports.logError = exports.logInfo = void 0;
37
+ const fs = __importStar(require("node:fs"));
38
+ const path = __importStar(require("node:path"));
39
+ const logInfo = (msg) => {
40
+ console.log(`[ridgeline] ${msg}`);
41
+ };
42
+ exports.logInfo = logInfo;
43
+ const logError = (msg) => {
44
+ console.error(`[ridgeline] ERROR: ${msg}`);
45
+ };
46
+ exports.logError = logError;
47
+ const logPhase = (phaseId, msg) => {
48
+ console.log(`[ridgeline] [${phaseId}] ${msg}`);
49
+ };
50
+ exports.logPhase = logPhase;
51
+ const logTrajectory = (buildDir, entry) => {
52
+ const filepath = path.join(buildDir, "trajectory.jsonl");
53
+ fs.appendFileSync(filepath, JSON.stringify(entry) + "\n");
54
+ };
55
+ exports.logTrajectory = logTrajectory;
56
+ const makeTrajectoryEntry = (type, phaseId, summary, opts) => ({
57
+ timestamp: new Date().toISOString(),
58
+ type,
59
+ phaseId,
60
+ duration: opts?.duration ?? null,
61
+ tokens: opts?.tokens ?? null,
62
+ costUsd: opts?.costUsd ?? null,
63
+ summary,
64
+ });
65
+ exports.makeTrajectoryEntry = makeTrajectoryEntry;
66
+ //# sourceMappingURL=logging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../src/logging.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA6B;AAC7B,gDAAiC;AAG1B,MAAM,OAAO,GAAG,CAAC,GAAW,EAAQ,EAAE;IAC3C,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,EAAE,CAAC,CAAA;AACnC,CAAC,CAAA;AAFY,QAAA,OAAO,WAEnB;AAEM,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAQ,EAAE;IAC5C,OAAO,CAAC,KAAK,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAA;AAC5C,CAAC,CAAA;AAFY,QAAA,QAAQ,YAEpB;AAEM,MAAM,QAAQ,GAAG,CAAC,OAAe,EAAE,GAAW,EAAQ,EAAE;IAC7D,OAAO,CAAC,GAAG,CAAC,gBAAgB,OAAO,KAAK,GAAG,EAAE,CAAC,CAAA;AAChD,CAAC,CAAA;AAFY,QAAA,QAAQ,YAEpB;AAEM,MAAM,aAAa,GAAG,CAAC,QAAgB,EAAE,KAAsB,EAAQ,EAAE;IAC9E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAA;IACxD,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;AAC3D,CAAC,CAAA;AAHY,QAAA,aAAa,iBAGzB;AAEM,MAAM,mBAAmB,GAAG,CACjC,IAA6B,EAC7B,OAAsB,EACtB,OAAe,EACf,IAIC,EACgB,EAAE,CAAC,CAAC;IACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;IACnC,IAAI;IACJ,OAAO;IACP,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,IAAI;IAChC,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,IAAI;IAC5B,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,IAAI;IAC9B,OAAO;CACR,CAAC,CAAA;AAjBW,QAAA,mBAAmB,uBAiB9B"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ // Mock child_process before importing
5
+ vitest_1.vi.mock("node:child_process", () => {
6
+ const EventEmitter = require("node:events");
7
+ const createMockProc = () => {
8
+ const proc = new EventEmitter();
9
+ proc.stdin = { write: vitest_1.vi.fn(), end: vitest_1.vi.fn() };
10
+ proc.stdout = new EventEmitter();
11
+ proc.stderr = new EventEmitter();
12
+ proc.kill = vitest_1.vi.fn();
13
+ return proc;
14
+ };
15
+ return {
16
+ spawn: vitest_1.vi.fn(() => createMockProc()),
17
+ };
18
+ });
19
+ const node_child_process_1 = require("node:child_process");
20
+ const claudeInvoker_1 = require("../claudeInvoker");
21
+ const baseOpts = {
22
+ systemPrompt: "You are a test assistant",
23
+ userPrompt: "Hello",
24
+ model: "opus",
25
+ cwd: "/tmp",
26
+ verbose: false,
27
+ };
28
+ const sampleJsonOutput = JSON.stringify({
29
+ is_error: false,
30
+ result: "All done",
31
+ duration_ms: 3000,
32
+ total_cost_usd: 0.05,
33
+ usage: {
34
+ input_tokens: 100,
35
+ output_tokens: 50,
36
+ cache_read_input_tokens: 10,
37
+ cache_creation_input_tokens: 5,
38
+ },
39
+ session_id: "sess-123",
40
+ });
41
+ (0, vitest_1.describe)("claudeInvoker", () => {
42
+ (0, vitest_1.beforeEach)(() => {
43
+ vitest_1.vi.clearAllMocks();
44
+ });
45
+ (0, vitest_1.describe)("invokeClaude", () => {
46
+ (0, vitest_1.it)("spawns claude with correct arguments", () => {
47
+ const promise = (0, claudeInvoker_1.invokeClaude)(baseOpts);
48
+ (0, vitest_1.expect)(node_child_process_1.spawn).toHaveBeenCalledWith("claude", vitest_1.expect.arrayContaining(["-p", "--output-format", "json", "--model", "opus"]), vitest_1.expect.objectContaining({ cwd: "/tmp" }));
49
+ // Resolve the promise to avoid unhandled rejection
50
+ const proc = vitest_1.vi.mocked(node_child_process_1.spawn).mock.results[0].value;
51
+ proc.stdout.emit("data", Buffer.from(sampleJsonOutput));
52
+ proc.emit("close", 0);
53
+ return promise;
54
+ });
55
+ (0, vitest_1.it)("passes allowed tools when specified", () => {
56
+ const promise = (0, claudeInvoker_1.invokeClaude)({ ...baseOpts, allowedTools: ["Read", "Write"] });
57
+ (0, vitest_1.expect)(node_child_process_1.spawn).toHaveBeenCalledWith("claude", vitest_1.expect.arrayContaining(["--allowedTools", "Read,Write"]), vitest_1.expect.any(Object));
58
+ const proc = vitest_1.vi.mocked(node_child_process_1.spawn).mock.results[0].value;
59
+ proc.stdout.emit("data", Buffer.from(sampleJsonOutput));
60
+ proc.emit("close", 0);
61
+ return promise;
62
+ });
63
+ (0, vitest_1.it)("pipes user prompt to stdin", () => {
64
+ const promise = (0, claudeInvoker_1.invokeClaude)({ ...baseOpts, userPrompt: "Do something" });
65
+ const proc = vitest_1.vi.mocked(node_child_process_1.spawn).mock.results[0].value;
66
+ (0, vitest_1.expect)(proc.stdin.write).toHaveBeenCalledWith("Do something");
67
+ (0, vitest_1.expect)(proc.stdin.end).toHaveBeenCalled();
68
+ proc.stdout.emit("data", Buffer.from(sampleJsonOutput));
69
+ proc.emit("close", 0);
70
+ return promise;
71
+ });
72
+ (0, vitest_1.it)("parses JSON response correctly", async () => {
73
+ const promise = (0, claudeInvoker_1.invokeClaude)(baseOpts);
74
+ const proc = vitest_1.vi.mocked(node_child_process_1.spawn).mock.results[0].value;
75
+ proc.stdout.emit("data", Buffer.from(sampleJsonOutput));
76
+ proc.emit("close", 0);
77
+ const result = await promise;
78
+ (0, vitest_1.expect)(result.success).toBe(true);
79
+ (0, vitest_1.expect)(result.result).toBe("All done");
80
+ (0, vitest_1.expect)(result.durationMs).toBe(3000);
81
+ (0, vitest_1.expect)(result.costUsd).toBe(0.05);
82
+ (0, vitest_1.expect)(result.usage.inputTokens).toBe(100);
83
+ (0, vitest_1.expect)(result.usage.outputTokens).toBe(50);
84
+ (0, vitest_1.expect)(result.sessionId).toBe("sess-123");
85
+ });
86
+ (0, vitest_1.it)("rejects on non-zero exit with no stdout", async () => {
87
+ const promise = (0, claudeInvoker_1.invokeClaude)(baseOpts);
88
+ const proc = vitest_1.vi.mocked(node_child_process_1.spawn).mock.results[0].value;
89
+ proc.stderr.emit("data", Buffer.from("error output"));
90
+ proc.emit("close", 1);
91
+ await (0, vitest_1.expect)(promise).rejects.toThrow("claude exited with code 1");
92
+ });
93
+ (0, vitest_1.it)("still resolves if exit code is non-zero but stdout has content", async () => {
94
+ const promise = (0, claudeInvoker_1.invokeClaude)(baseOpts);
95
+ const proc = vitest_1.vi.mocked(node_child_process_1.spawn).mock.results[0].value;
96
+ proc.stdout.emit("data", Buffer.from(sampleJsonOutput));
97
+ proc.emit("close", 1);
98
+ const result = await promise;
99
+ (0, vitest_1.expect)(result.success).toBe(true);
100
+ });
101
+ (0, vitest_1.it)("rejects on timeout", async () => {
102
+ vitest_1.vi.useFakeTimers();
103
+ const promise = (0, claudeInvoker_1.invokeClaude)({ ...baseOpts, timeoutMs: 5000 });
104
+ const proc = vitest_1.vi.mocked(node_child_process_1.spawn).mock.results[0].value;
105
+ vitest_1.vi.advanceTimersByTime(5001);
106
+ // The timeout handler calls proc.kill, then the close event fires
107
+ proc.emit("close", null);
108
+ await (0, vitest_1.expect)(promise).rejects.toThrow("timed out");
109
+ vitest_1.vi.useRealTimers();
110
+ });
111
+ (0, vitest_1.it)("handles is_error flag in response", async () => {
112
+ const errorOutput = JSON.stringify({
113
+ is_error: true,
114
+ result: "Something went wrong",
115
+ duration_ms: 1000,
116
+ total_cost_usd: 0.01,
117
+ usage: { input_tokens: 10, output_tokens: 5 },
118
+ session_id: "sess-err",
119
+ });
120
+ const promise = (0, claudeInvoker_1.invokeClaude)(baseOpts);
121
+ const proc = vitest_1.vi.mocked(node_child_process_1.spawn).mock.results[0].value;
122
+ proc.stdout.emit("data", Buffer.from(errorOutput));
123
+ proc.emit("close", 0);
124
+ const result = await promise;
125
+ (0, vitest_1.expect)(result.success).toBe(false);
126
+ });
127
+ (0, vitest_1.it)("uses stream-json format in verbose mode", () => {
128
+ const promise = (0, claudeInvoker_1.invokeClaude)({ ...baseOpts, verbose: true });
129
+ (0, vitest_1.expect)(node_child_process_1.spawn).toHaveBeenCalledWith("claude", vitest_1.expect.arrayContaining(["--output-format", "stream-json"]), vitest_1.expect.any(Object));
130
+ const proc = vitest_1.vi.mocked(node_child_process_1.spawn).mock.results[0].value;
131
+ // In stream mode, last line is the result JSON
132
+ proc.stdout.emit("data", Buffer.from('{"type":"assistant","subtype":"text","text":"hello"}\n' + sampleJsonOutput + "\n"));
133
+ proc.emit("close", 0);
134
+ return promise;
135
+ });
136
+ });
137
+ });
138
+ //# sourceMappingURL=claudeInvoker.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claudeInvoker.test.js","sourceRoot":"","sources":["../../../src/runner/__tests__/claudeInvoker.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};