From fffd51c68730bb021f1dd2023a97a840adedeb3a Mon Sep 17 00:00:00 2001 From: jujn <2087687391@qq.com> Date: Tue, 7 Apr 2026 21:52:29 +0800 Subject: [PATCH 1/2] refactor(hook): change PreCallEvent related comments from read-only to modifiable, aligning with PreReasoningEvent --- .../java/io/agentscope/core/hook/Hook.java | 2 +- .../io/agentscope/core/hook/PreCallEvent.java | 26 ++++++++++++++++--- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/agentscope-core/src/main/java/io/agentscope/core/hook/Hook.java b/agentscope-core/src/main/java/io/agentscope/core/hook/Hook.java index a48465be5..7cdaf939d 100644 --- a/agentscope-core/src/main/java/io/agentscope/core/hook/Hook.java +++ b/agentscope-core/src/main/java/io/agentscope/core/hook/Hook.java @@ -124,12 +124,12 @@ public interface Hook { *
  • {@link PostReasoningEvent} - Modify reasoning results
  • *
  • {@link PreActingEvent} - Modify tool parameters before execution
  • *
  • {@link PostActingEvent} - Modify tool results
  • + *
  • {@link PreCallEvent} - Modify messages before agent starts
  • *
  • {@link PostCallEvent} - Modify final agent response
  • * * *

    Notification Events: Events without setters are read-only: *

    */ public final class PreCallEvent extends HookEvent { @@ -45,18 +49,32 @@ public final class PreCallEvent extends HookEvent { * Constructor for PreCallEvent. * * @param agent The agent instance (must not be null) - * @throws NullPointerException if agent is null + * @param inputMessages The messages input to the agent (must not be null) + * @throws NullPointerException if agent or inputMessages is null */ public PreCallEvent(Agent agent, List inputMessages) { super(HookEventType.PRE_CALL, agent); - this.inputMessages = inputMessages; + this.inputMessages = + new ArrayList<>( + Objects.requireNonNull(inputMessages, "inputMessages cannot be null")); } + /** + * Get the input messages for the agent call. + * + * @return The input messages + */ public List getInputMessages() { return inputMessages; } + /** + * Modify the input messages for the agent call. + * + * @param inputMessages The new message list (must not be null) + * @throws NullPointerException if inputMessages is null + */ public void setInputMessages(List inputMessages) { - this.inputMessages = inputMessages; + this.inputMessages = Objects.requireNonNull(inputMessages, "inputMessages cannot be null"); } } From 37282c9519d2a4111b228f177018aaed58871ace Mon Sep 17 00:00:00 2001 From: jujn <2087687391@qq.com> Date: Tue, 7 Apr 2026 22:07:53 +0800 Subject: [PATCH 2/2] fix: copilot review --- .../src/main/java/io/agentscope/core/hook/PreCallEvent.java | 4 ++-- .../src/test/java/io/agentscope/core/hook/HookEventTest.java | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/agentscope-core/src/main/java/io/agentscope/core/hook/PreCallEvent.java b/agentscope-core/src/main/java/io/agentscope/core/hook/PreCallEvent.java index 7d53620c4..aba975512 100644 --- a/agentscope-core/src/main/java/io/agentscope/core/hook/PreCallEvent.java +++ b/agentscope-core/src/main/java/io/agentscope/core/hook/PreCallEvent.java @@ -29,7 +29,7 @@ *

    Context: *

      *
    • {@link #getAgent()} - The agent instance
    • - *
    • {@link #getMemory()} - Agent's memory (includes input messages already added)
    • + *
    • {@link #getMemory()} - Agent's existing memory or conversation history prior to processing this call
    • *
    • {@link #getInputMessages()} - Messages input to the agent (modifiable)
    • *
    * @@ -38,7 +38,7 @@ *
  • Log the start of agent execution
  • *
  • Initialize execution-specific resources
  • *
  • Track agent invocation metrics
  • - *
  • Filter or modify input messages before agent processing
  • + *
  • Filter or modify input messages before agent processing
  • * */ public final class PreCallEvent extends HookEvent { diff --git a/agentscope-core/src/test/java/io/agentscope/core/hook/HookEventTest.java b/agentscope-core/src/test/java/io/agentscope/core/hook/HookEventTest.java index b229f612d..958023215 100644 --- a/agentscope-core/src/test/java/io/agentscope/core/hook/HookEventTest.java +++ b/agentscope-core/src/test/java/io/agentscope/core/hook/HookEventTest.java @@ -30,6 +30,7 @@ import io.agentscope.core.message.ToolUseBlock; import io.agentscope.core.model.GenerateOptions; import io.agentscope.core.tool.Toolkit; +import java.util.ArrayList; import java.util.List; import java.util.Map; import org.junit.jupiter.api.BeforeEach; @@ -102,7 +103,7 @@ class PreCallEventTests { @Test @DisplayName("Should create and access event") void testCreationAndAccess() { - PreCallEvent event = new PreCallEvent(testAgent, null); + PreCallEvent event = new PreCallEvent(testAgent, new ArrayList<>()); assertEquals(HookEventType.PRE_CALL, event.getType()); assertEquals(testAgent, event.getAgent());