@dunnewold-labs/mr-manager 0.4.9 → 0.4.14
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/index.mjs +20 -10
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -185,7 +185,7 @@ import { fileURLToPath } from "url";
|
|
|
185
185
|
// cli/package.json
|
|
186
186
|
var package_default = {
|
|
187
187
|
name: "@dunnewold-labs/mr-manager",
|
|
188
|
-
version: "0.4.
|
|
188
|
+
version: "0.4.14",
|
|
189
189
|
description: "Mr. Manager - Task and project management CLI",
|
|
190
190
|
bin: {
|
|
191
191
|
mr: "./dist/index.mjs"
|
|
@@ -1000,6 +1000,7 @@ var NON_CODE_TASK_PATTERNS = [
|
|
|
1000
1000
|
];
|
|
1001
1001
|
function taskLikelyDoesNotNeedCodeChanges(task) {
|
|
1002
1002
|
if (task.mode && task.mode !== "development") return true;
|
|
1003
|
+
if (task.mode === "development") return false;
|
|
1003
1004
|
const haystack = normalizeWhitespace(
|
|
1004
1005
|
[task.title, task.notes, task.prdContent].filter(Boolean).join(" ").toLowerCase()
|
|
1005
1006
|
);
|
|
@@ -2193,7 +2194,7 @@ function buildIdeaPrompt(idea, repoDir) {
|
|
|
2193
2194
|
`- Do NOT exit until both files have been written and verified`
|
|
2194
2195
|
].join("\n");
|
|
2195
2196
|
}
|
|
2196
|
-
function buildAgentArgs(agent, prompt2, mode, sessionId, name, resumeSession = false, systemPrompt) {
|
|
2197
|
+
function buildAgentArgs(agent, prompt2, mode, sessionId, name, resumeSession = false, systemPrompt, maxTurns) {
|
|
2197
2198
|
if (agent === "codex") {
|
|
2198
2199
|
const args = [];
|
|
2199
2200
|
if (mode === "execute") {
|
|
@@ -2222,10 +2223,11 @@ ${systemPrompt}` : prompt2;
|
|
|
2222
2223
|
const sessionArgs = sessionId ? resumeSession ? ["--resume", sessionId] : ["--session-id", sessionId] : [];
|
|
2223
2224
|
const nameArgs = name ? ["--name", name] : [];
|
|
2224
2225
|
const systemArgs = systemPrompt ? ["--append-system-prompt", systemPrompt] : [];
|
|
2226
|
+
const turnsArgs = maxTurns ? ["--max-turns", String(maxTurns)] : [];
|
|
2225
2227
|
if (mode === "plan") {
|
|
2226
|
-
return { bin: "claude", args: [...sessionArgs, ...nameArgs, ...systemArgs, "--permission-mode", "plan", "-p", prompt2] };
|
|
2228
|
+
return { bin: "claude", args: [...sessionArgs, ...nameArgs, ...systemArgs, ...turnsArgs, "--permission-mode", "plan", "-p", prompt2] };
|
|
2227
2229
|
}
|
|
2228
|
-
return { bin: "claude", args: [...sessionArgs, ...nameArgs, ...systemArgs, "-p", "--dangerously-skip-permissions", prompt2] };
|
|
2230
|
+
return { bin: "claude", args: [...sessionArgs, ...nameArgs, ...systemArgs, ...turnsArgs, "-p", "--dangerously-skip-permissions", prompt2] };
|
|
2229
2231
|
}
|
|
2230
2232
|
function commandExists(cmd) {
|
|
2231
2233
|
return new Promise((resolve8) => {
|
|
@@ -2280,10 +2282,10 @@ function askYesNo(question) {
|
|
|
2280
2282
|
});
|
|
2281
2283
|
});
|
|
2282
2284
|
}
|
|
2283
|
-
function spawnAgent(agent, repoDir, prompt2, prefix, onActivity, sessionId, name, resumeSession = false, onSpawnError, systemPrompt) {
|
|
2285
|
+
function spawnAgent(agent, repoDir, prompt2, prefix, onActivity, sessionId, name, resumeSession = false, onSpawnError, systemPrompt, maxTurns) {
|
|
2284
2286
|
const jobLabel = name ?? "unknown";
|
|
2285
2287
|
console.log(`${timestamp()} ${prefix} ${paint("dim", tokenLogLine("agent", jobLabel, prompt2, systemPrompt))}`);
|
|
2286
|
-
const { bin, args } = buildAgentArgs(agent, prompt2, "execute", sessionId, name, resumeSession, systemPrompt);
|
|
2288
|
+
const { bin, args } = buildAgentArgs(agent, prompt2, "execute", sessionId, name, resumeSession, systemPrompt, maxTurns);
|
|
2287
2289
|
const child = spawn4(bin, args, { cwd: repoDir, stdio: ["ignore", "pipe", "pipe"] });
|
|
2288
2290
|
child.on("error", (err) => {
|
|
2289
2291
|
logError(prefix, `Failed to spawn ${agent}: ${err.message}`);
|
|
@@ -2621,7 +2623,9 @@ var watchCommand = new Command8("watch").description(
|
|
|
2621
2623
|
...prUrl ? { link: prUrl } : {}
|
|
2622
2624
|
});
|
|
2623
2625
|
logSuccess(prefix, `"${paint("bold", task.title)}" marked ready for review`);
|
|
2624
|
-
|
|
2626
|
+
if (noMrRequested) {
|
|
2627
|
+
await postTaskUpdate(task.id, `No ${prLabel} required: ${noMrDescription}`, "system");
|
|
2628
|
+
}
|
|
2625
2629
|
} catch (err) {
|
|
2626
2630
|
logError(prefix, `Failed to update task: ${err.message}`);
|
|
2627
2631
|
}
|
|
@@ -2766,7 +2770,7 @@ var watchCommand = new Command8("watch").description(
|
|
|
2766
2770
|
...prdContent ? { prdContent } : {}
|
|
2767
2771
|
});
|
|
2768
2772
|
logSuccess(prefix, `"${paint("bold", task.title)}" PRD generated and marked ready for review`);
|
|
2769
|
-
await postTaskUpdate(task.id, "PRD generated
|
|
2773
|
+
await postTaskUpdate(task.id, "PRD generated", "system");
|
|
2770
2774
|
} catch (err) {
|
|
2771
2775
|
logError(prefix, `Failed to update task: ${err.message}`);
|
|
2772
2776
|
}
|
|
@@ -2949,7 +2953,10 @@ var watchCommand = new Command8("watch").description(
|
|
|
2949
2953
|
false,
|
|
2950
2954
|
(err) => {
|
|
2951
2955
|
spawnFailureReason = err.message;
|
|
2952
|
-
}
|
|
2956
|
+
},
|
|
2957
|
+
void 0,
|
|
2958
|
+
25
|
|
2959
|
+
// max turns — prevent the agent from looping internally
|
|
2953
2960
|
);
|
|
2954
2961
|
activeEntry.process = child;
|
|
2955
2962
|
activeEntry.currentAgent = attemptAgent;
|
|
@@ -2975,11 +2982,14 @@ var watchCommand = new Command8("watch").description(
|
|
|
2975
2982
|
logSuccess(prefix, `"${paint("bold", project.name)}" repo creation complete`);
|
|
2976
2983
|
try {
|
|
2977
2984
|
await api.patch(`/api/projects/${project.id}`, { repoCreationStatus: "created" });
|
|
2978
|
-
} catch {
|
|
2985
|
+
} catch (err) {
|
|
2986
|
+
logError(prefix, `Failed to mark repo as created: ${err.message}`);
|
|
2987
|
+
failed.set(key, "status update failed after successful creation");
|
|
2979
2988
|
}
|
|
2980
2989
|
} else {
|
|
2981
2990
|
const failureDetail = spawnFailureReason ?? `exit code ${code}`;
|
|
2982
2991
|
logError(prefix, `"${paint("bold", project.name)}" repo creation failed via ${attemptAgent} (${failureDetail})`);
|
|
2992
|
+
failed.set(key, failureDetail);
|
|
2983
2993
|
try {
|
|
2984
2994
|
await api.patch(`/api/projects/${project.id}`, { repoCreationStatus: "failed" });
|
|
2985
2995
|
} catch {
|