@dunnewold-labs/mr-manager 0.4.28 → 0.4.30

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 (2) hide show
  1. package/dist/index.mjs +7 -17
  2. 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.28",
188
+ version: "0.4.30",
189
189
  description: "Mr. Manager - Task and project management CLI",
190
190
  bin: {
191
191
  mr: "./dist/index.mjs"
@@ -2619,14 +2619,13 @@ function spawnAgent(agent, repoDir, prompt2, prefix, onActivity, sessionId, name
2619
2619
  }
2620
2620
  var watchCommand = new Command8("watch").description(
2621
2621
  "Watch for in-progress tasks and autonomously dispatch an AI coding agent to work on them"
2622
- ).option("--interval <seconds>", "Polling interval in seconds", "15").option("--dry-run", "Show what would be dispatched without spawning the agent", false).option("--plan-approval", "Show the agent's plan and ask for approval before executing", false).option("--root <dir>", "Root directory filter for linked repos (default: cwd)").option("--agent <agent>", "AI agent to use: claude, codex, or gemini", "claude").option("--scan-at <HH:MM>", "Run a product scan daily at this time (e.g., 02:00)").option("--quiet", "Run all tasks in quiet mode (agent outputs only status updates, no conversation)", false).action(async (opts) => {
2622
+ ).option("--interval <seconds>", "Polling interval in seconds", "15").option("--dry-run", "Show what would be dispatched without spawning the agent", false).option("--plan-approval", "Show the agent's plan and ask for approval before executing", false).option("--root <dir>", "Root directory filter for linked repos (default: cwd)").option("--agent <agent>", "AI agent to use: claude, codex, or gemini", "claude").option("--scan-at <HH:MM>", "Run a product scan daily at this time (e.g., 02:00)").action(async (opts) => {
2623
2623
  const intervalMs = parseInt(opts.interval, 10) * 1e3;
2624
2624
  const dryRun = opts.dryRun;
2625
2625
  const planApproval = opts.planApproval;
2626
2626
  const rootDir = opts.root ? resolve2(opts.root) : process.cwd();
2627
2627
  const agent = opts.agent === "codex" ? "codex" : opts.agent === "gemini" ? "gemini" : "claude";
2628
2628
  const scanAt = opts.scanAt;
2629
- const globalQuietMode = opts.quiet;
2630
2629
  const taskStallTimeoutMs = getTaskStallTimeoutMs();
2631
2630
  const hungTaskTimeoutMinutes = Math.max(5, parseInt(process.env.MR_WATCH_HUNG_TASK_TIMEOUT_MINUTES ?? "60", 10) || 60);
2632
2631
  const hungTaskTimeoutMs = hungTaskTimeoutMinutes * 6e4;
@@ -2647,7 +2646,6 @@ var watchCommand = new Command8("watch").description(
2647
2646
  `stall-timeout=${paint("cyan", formatTimeoutMinutes(taskStallTimeoutMs))}`,
2648
2647
  ...planApproval ? [paint("yellow", "plan-approval")] : [],
2649
2648
  ...dryRun ? [paint("yellow", "dry-run")] : [],
2650
- ...globalQuietMode ? [paint("yellow", "quiet")] : [],
2651
2649
  ...scanAt ? [`scan-at=${paint("cyan", scanAt)}`] : [],
2652
2650
  `hung-timeout=${paint("cyan", `${hungTaskTimeoutMinutes}m`)}`
2653
2651
  ].join(" ");
@@ -2772,9 +2770,8 @@ var watchCommand = new Command8("watch").description(
2772
2770
  const legacyBranchName = `mr/${sid}/${slug}`;
2773
2771
  const prefix = taskTag(sid);
2774
2772
  const vcs = detectVcs(repoDir)?.provider ?? "github";
2775
- const taskIsQuiet = task.quietMode || globalQuietMode;
2776
- logDispatch(prefix, `"${paint("bold", task.title)}" ${paint("gray", repoDir)} ${paint("dim", `[${vcs}]`)}${taskIsQuiet ? ` ${paint("yellow", "[quiet]")}` : ""}`);
2777
- await postTaskUpdate(task.id, `Agent dispatched${taskIsQuiet ? " (quiet mode)" : ""} \u2014 starting work on "${task.title}"`, "system");
2773
+ logDispatch(prefix, `"${paint("bold", task.title)}" ${paint("gray", repoDir)} ${paint("dim", `[${vcs}]`)}`);
2774
+ await postTaskUpdate(task.id, `Agent dispatched \u2014 starting work on "${task.title}"`, "system");
2778
2775
  let subtasks = [];
2779
2776
  try {
2780
2777
  subtasks = await api.get(`/api/tasks/${task.id}/subtasks`);
@@ -2840,7 +2837,6 @@ var watchCommand = new Command8("watch").description(
2840
2837
  );
2841
2838
  }
2842
2839
  const prompt2 = buildExecutionPrompt(task, repoDir, subtasks, vcs, protoRefs, feedbackUpdates, existingResources, skillRefs, executionDir, startWithoutWorktree, !startWithoutWorktree && isGitRepo(repoDir) ? branchName : void 0);
2843
- const taskIsQuietForEntry = task.quietMode || globalQuietMode;
2844
2840
  const activeEntry = {
2845
2841
  process: void 0,
2846
2842
  title: task.title,
@@ -2849,8 +2845,7 @@ var watchCommand = new Command8("watch").description(
2849
2845
  cleanupWorktreePath,
2850
2846
  startedAt: Date.now(),
2851
2847
  lastActivityAt: Date.now(),
2852
- outputBytes: 0,
2853
- quietMode: taskIsQuietForEntry
2848
+ outputBytes: 0
2854
2849
  };
2855
2850
  const touchActivity = () => {
2856
2851
  activeEntry.lastActivityAt = Date.now();
@@ -2879,12 +2874,8 @@ var watchCommand = new Command8("watch").description(
2879
2874
  const shouldResumeClaudeSession = attemptAgent === "claude" && !!task.claudeSessionId && !resumeAlreadyRetried && (hasFeedback || pausedForNetwork?.resumeSession === true);
2880
2875
  const sessionId = attemptAgent === "claude" ? shouldResumeClaudeSession ? task.claudeSessionId : randomUUID() : void 0;
2881
2876
  const effectiveClaudeModel = attemptAgent === "claude" ? taskClaudeModel : void 0;
2882
- const isQuiet = task.quietMode || globalQuietMode;
2883
- const systemSections = isQuiet ? ["quiet-mode", ...EXECUTION_SYSTEM_SECTIONS] : [...EXECUTION_SYSTEM_SECTIONS];
2877
+ const systemSections = ["quiet-mode", ...EXECUTION_SYSTEM_SECTIONS];
2884
2878
  const executionSystemPrompt = composeSystemPrompt(systemSections);
2885
- if (isQuiet) {
2886
- logInfo(prefix, `${paint("yellow", "quiet mode")} \u2014 agent will suppress conversational output`);
2887
- }
2888
2879
  const child = spawnAgent(
2889
2880
  attemptAgent,
2890
2881
  executionDir,
@@ -2958,10 +2949,9 @@ var watchCommand = new Command8("watch").description(
2958
2949
  }
2959
2950
  finishing.add(task.id);
2960
2951
  const elapsedMs = Date.now() - activeEntry.startedAt;
2961
- const modeLabel = activeEntry.quietMode ? "quiet" : "standard";
2962
2952
  const outputTokenEstimate = Math.ceil(activeEntry.outputBytes / 4);
2963
2953
  console.log(
2964
- `${timestamp()} ${prefix} ${paint("dim", `[output] mode=${modeLabel} output=~${formatTokenCount(outputTokenEstimate)} elapsed=${Math.round(elapsedMs / 1e3)}s exit=${code}`)}`
2954
+ `${timestamp()} ${prefix} ${paint("dim", `[output] output=~${formatTokenCount(outputTokenEstimate)} elapsed=${Math.round(elapsedMs / 1e3)}s exit=${code}`)}`
2965
2955
  );
2966
2956
  try {
2967
2957
  if (code === 0) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dunnewold-labs/mr-manager",
3
- "version": "0.4.28",
3
+ "version": "0.4.30",
4
4
  "description": "Mr. Manager - Task and project management CLI",
5
5
  "bin": {
6
6
  "mr": "./dist/index.mjs"