Browse Source

fix: address code review feedback — applyLayout comment, orchestrator recovery log, herdr doc note

Michael Henke 1 month ago
parent
commit
8a46b166c7

+ 2 - 0
docs/multiplexer-integration.md

@@ -225,6 +225,8 @@ For Herdr:
 | `even-vertical` | Opens new subagent panes down |
 | `tiled` | Opens new subagent panes to the right |
 
+> **Note:** `main_pane_size` is ignored by herdr. All layouts split from the parent pane.
+
 **Example: wide-screen layout**
 
 ```jsonc

+ 1 - 2
src/hooks/task-session-manager/index.test.ts

@@ -29,8 +29,7 @@ function createHook(options?: {
       readContextMaxFiles: options?.readContextMaxFiles,
       backgroundJobBoard: options?.backgroundJobBoard,
       shouldManageSession: options?.shouldManageSession ?? (() => true),
-      registerSessionAsOrchestrator:
-        options?.registerSessionAsOrchestrator,
+      registerSessionAsOrchestrator: options?.registerSessionAsOrchestrator,
       isFallbackInProgress: options?.isFallbackInProgress,
       coordinator: options?.coordinator,
     },

+ 6 - 0
src/hooks/task-session-manager/index.ts

@@ -334,7 +334,13 @@ export function createTaskSessionManagerHook(
       if (toolName !== 'task') return;
       if (!input.sessionID) return;
       if (!options.shouldManageSession(input.sessionID)) {
+        // No agent-type guard here: at tool.execute.before time there's no
+        // message to inspect. The transform hook (messages.transform) has
+        // the message.info.agent guard instead.
         options.registerSessionAsOrchestrator?.(input.sessionID);
+        log('[task-session-manager] recovered stale orchestrator mapping', {
+          sessionID: input.sessionID,
+        });
         if (!options.shouldManageSession(input.sessionID)) return;
       }
       if (!isObjectRecord(output.args)) return;

+ 3 - 3
src/multiplexer/herdr/index.ts

@@ -39,6 +39,8 @@ export class HerdrMultiplexer implements Multiplexer {
   constructor(layout: MultiplexerLayout = 'main-vertical', mainPaneSize = 60) {
     // Herdr does not support exact main pane sizing like tmux.
     // Layout config is mapped to pane split direction.
+    // ponytail: direction computed once; runtime reconfiguration requires
+    // storing layout and updating paneDirection.
     void mainPaneSize;
     this.paneDirection = getPaneDirection(layout);
   }
@@ -203,9 +205,7 @@ export class HerdrMultiplexer implements Multiplexer {
     _layout: MultiplexerLayout,
     _mainPaneSize: number,
   ): Promise<void> {
-    // No-op for herdr. Herdr does not support tmux-like exact main pane
-    // sizing/rebalancing; layout is applied to future pane creation by
-    // mapping configured layouts to pane split directions.
+    // No-op. Layout direction is set at construction time.
   }
 
   private targetPaneArg(): string[] {