From af66b8de0be2622df9f477c8e8c9123c1066fa94 Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Mon, 18 May 2026 12:37:45 +0900 Subject: [PATCH] refactor(hooks): replace direct output.args mutation with replaceToolArgs (env + prompt injectors) Replace output.args.command and output.args.prompt direct assignments with replaceToolArgs() in non-interactive-env, prometheus-md-only, and sisyphus-junior-notepad hooks. Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus --- src/hooks/non-interactive-env/non-interactive-env-hook.ts | 4 ++-- src/hooks/prometheus-md-only/hook.ts | 3 ++- src/hooks/sisyphus-junior-notepad/hook.ts | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/hooks/non-interactive-env/non-interactive-env-hook.ts b/src/hooks/non-interactive-env/non-interactive-env-hook.ts index 6fc42aea9..42cb25122 100644 --- a/src/hooks/non-interactive-env/non-interactive-env-hook.ts +++ b/src/hooks/non-interactive-env/non-interactive-env-hook.ts @@ -1,6 +1,6 @@ import type { PluginInput } from "@opencode-ai/plugin" import { HOOK_NAME, NON_INTERACTIVE_ENV, SHELL_COMMAND_PATTERNS } from "./constants" -import { log, buildEnvPrefix } from "../../shared" +import { log, buildEnvPrefix, replaceToolArgs } from "../../shared" import { detectShellType, type ShellType } from "../../shared/shell-env" export * from "./constants" @@ -97,7 +97,7 @@ export function createNonInteractiveEnvHook(_ctx: PluginInput) { return } - output.args.command = `${envPrefix} ${command}` + replaceToolArgs(output, { command: `${envPrefix} ${command}` }) log(`[${HOOK_NAME}] Prepended non-interactive env vars to git command`, { sessionID: input.sessionID, diff --git a/src/hooks/prometheus-md-only/hook.ts b/src/hooks/prometheus-md-only/hook.ts index 96f5093bd..57ee04a3d 100644 --- a/src/hooks/prometheus-md-only/hook.ts +++ b/src/hooks/prometheus-md-only/hook.ts @@ -1,6 +1,7 @@ import type { PluginInput } from "@opencode-ai/plugin" import { HOOK_NAME, BLOCKED_TOOLS, PLANNING_CONSULT_WARNING, PROMETHEUS_WORKFLOW_REMINDER } from "./constants" import { log } from "../../shared/logger" +import { replaceToolArgs } from "../../shared/replace-tool-args" import { SYSTEM_DIRECTIVE_PREFIX } from "../../shared/system-directive" import { getAgentDisplayName } from "../../shared/agent-display-names" import { getAgentFromSession } from "./agent-resolution" @@ -27,7 +28,7 @@ export function createPrometheusMdOnlyHook(ctx: PluginInput) { if (TASK_TOOLS.includes(toolName)) { const prompt = output.args.prompt as string | undefined if (prompt && !prompt.includes(SYSTEM_DIRECTIVE_PREFIX)) { - output.args.prompt = PLANNING_CONSULT_WARNING + prompt + replaceToolArgs(output, { prompt: PLANNING_CONSULT_WARNING + prompt }) log(`[${HOOK_NAME}] Injected planning warning to ${toolName}`, { sessionID: input.sessionID, tool: toolName, diff --git a/src/hooks/sisyphus-junior-notepad/hook.ts b/src/hooks/sisyphus-junior-notepad/hook.ts index 28a284e6f..5e9c00456 100644 --- a/src/hooks/sisyphus-junior-notepad/hook.ts +++ b/src/hooks/sisyphus-junior-notepad/hook.ts @@ -3,6 +3,7 @@ import type { PluginInput } from "@opencode-ai/plugin" import { isCallerOrchestrator } from "../../shared/session-utils" import { SYSTEM_DIRECTIVE_PREFIX } from "../../shared/system-directive" import { log } from "../../shared/logger" +import { replaceToolArgs } from "../../shared/replace-tool-args" import { HOOK_NAME, NOTEPAD_DIRECTIVE } from "./constants" export function createSisyphusJuniorNotepadHook(ctx: PluginInput) { @@ -33,7 +34,7 @@ export function createSisyphusJuniorNotepadHook(ctx: PluginInput) { } // 5. Prepend directive - output.args.prompt = NOTEPAD_DIRECTIVE + prompt + replaceToolArgs(output, { prompt: NOTEPAD_DIRECTIVE + prompt }) // 6. Log injection log(`[${HOOK_NAME}] Injected notepad directive to task`, {