feat(agent-core): add ReActAgentContext value holder

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
everywhere.z
2026-04-19 19:30:23 +08:00
parent 4574658f56
commit bb5969de75
2 changed files with 56 additions and 0 deletions

View File

@@ -0,0 +1,22 @@
package com.yomahub.liteflow.agent.component;
import com.yomahub.liteflow.slot.Slot;
import java.nio.file.Path;
import java.util.Objects;
public class ReActAgentContext {
private final Slot slot;
private final String sessionId;
private final Path workspaceDir;
public ReActAgentContext(Slot slot, String sessionId, Path workspaceDir) {
this.slot = Objects.requireNonNull(slot, "slot");
this.sessionId = Objects.requireNonNull(sessionId, "sessionId");
this.workspaceDir = Objects.requireNonNull(workspaceDir, "workspaceDir");
}
public Slot getSlot() { return slot; }
public String getSessionId() { return sessionId; }
public Path getWorkspaceDir() { return workspaceDir; }
}

View File

@@ -0,0 +1,34 @@
package com.yomahub.liteflow.agent.component;
import com.yomahub.liteflow.slot.Slot;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import java.nio.file.Path;
import static org.junit.jupiter.api.Assertions.*;
class ReActAgentContextTest {
@Test
void exposes_slot_sessionid_workspace() {
Slot slot = Mockito.mock(Slot.class);
Path ws = Path.of("/tmp/ws");
ReActAgentContext ctx = new ReActAgentContext(slot, "sess-1", ws);
assertSame(slot, ctx.getSlot());
assertEquals("sess-1", ctx.getSessionId());
assertEquals(ws, ctx.getWorkspaceDir());
}
@Test
void rejects_null_required_fields() {
Slot slot = Mockito.mock(Slot.class);
assertThrows(NullPointerException.class,
() -> new ReActAgentContext(null, "s", Path.of("/t")));
assertThrows(NullPointerException.class,
() -> new ReActAgentContext(slot, null, Path.of("/t")));
assertThrows(NullPointerException.class,
() -> new ReActAgentContext(slot, "s", null));
}
}