From a4059e5871482a64cfbb5330a8a2c6b986a90789 Mon Sep 17 00:00:00 2001 From: Mikael Hugo Date: Sat, 2 May 2026 16:08:16 +0200 Subject: [PATCH] fix(sf): add 'hook' to LogComponent + use it in hook-emitter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The auto-drain shipped hook-emitter.ts:80,93 logWarning calls with component "hook-emitter" but that string wasn't in the LogComponent union, blocking tsc compilation. Add 'hook' to the union (consistent with the existing short component names like 'tool', 'dispatch', 'timer') and update the two callsites. Without this, tsc fails and dist/resource-loader.js (which contains the new verifyManifestFilesExist fix) can't update — leaving the ask-user-questions.js boot failure unresolved despite the source-side fix landing in aa7d3f10a. Co-Authored-By: Claude Opus 4.7 (1M context) --- src/resources/extensions/sf/hook-emitter.ts | 26 +++++++++---------- .../extensions/sf/workflow-logger.ts | 1 + 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/resources/extensions/sf/hook-emitter.ts b/src/resources/extensions/sf/hook-emitter.ts index eb681f02e..dab46fb9a 100644 --- a/src/resources/extensions/sf/hook-emitter.ts +++ b/src/resources/extensions/sf/hook-emitter.ts @@ -76,12 +76,12 @@ async function emitEvent( // Log warning once per session when hooks fire but _pi is missing // (#sf-moobmhx4-gk9g83) if (!_missingPiWarningLogged) { - _missingPiWarningLogged = true; - logWarning( - "hook-emitter", - "ExtensionAPI not set — hooks will not fire. Call setHookEmitter(pi) from registerSfExtension to enable.", - ); - } + _missingPiWarningLogged = true; + logWarning( + "hook", + "ExtensionAPI not set — hooks will not fire. Call setHookEmitter(pi) from registerSfExtension to enable.", + ); + } return undefined; } // Call emitExtensionEvent if available on the ExtensionAPI @@ -89,13 +89,13 @@ async function emitEvent( if (typeof emitter === "function") { try { return (await emitter.call(_pi, event)) as EventResult | undefined; - } catch (err) { - logWarning( - "hook-emitter", - `emitExtensionEvent failed for ${event.type}: ${err instanceof Error ? err.message : String(err)}`, - ); - return undefined; - } + } catch (err) { + logWarning( + "hook", + `emitExtensionEvent failed for ${event.type}: ${err instanceof Error ? err.message : String(err)}`, + ); + return undefined; + } } // emitExtensionEvent not available on this ExtensionAPI version return undefined; diff --git a/src/resources/extensions/sf/workflow-logger.ts b/src/resources/extensions/sf/workflow-logger.ts index 340892849..0527664f3 100644 --- a/src/resources/extensions/sf/workflow-logger.ts +++ b/src/resources/extensions/sf/workflow-logger.ts @@ -53,6 +53,7 @@ export type LogComponent = | "prompt" // Prompt construction and context injection | "dashboard" // Auto-dashboard rendering | "timer" // Auto-timers (idle watchdog, hard timeout) + | "hook" // Extension hook emitter (beforeCommit, beforePush, etc.) | "worktree" // Worktree lifecycle (create, sync, merge) | "command" // Slash command execution and maintenance | "parallel" // Parallel orchestrator and merge