Remove the per-platform model/factory/entry tests and the unit-style
tool/session/component tests; keep a single Spring Boot integration
test that exercises the full ReAct chain against Gemini.
The pruned tests were tightly coupled to the older ModelSpec/Builder
APIs and largely duplicated coverage now provided by the integration
flow plus the new logging hook visibility.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Subscribe to agentscope Pre/PostReasoningEvent, Pre/PostActingEvent
and ErrorEvent through a new ReActLoggingHook, surfacing the agent's
internal think-act loop in standard logs. Each line carries the
LiteFlow agent sessionId so concurrent sessions stay distinguishable.
ReActAgentComponent attaches the hook automatically alongside any
user-provided hooks. Toggle via liteflow.agent.logging.react-enabled
(default true) or override enableReActLogging() per component.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The module had hardcoded agentscope:1.0.9 and google-genai:1.0.0,
which conflicted with parent pom's 1.0.11/1.38.0 properties and
caused NoSuchMethodError on Part.thoughtSignature() at runtime.
Use the property placeholders so versions stay centrally managed.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Add MemoryStorageConfig/MemoryStorageMode and per-backend configs (Redis, MySQL, workspace file)
- Add AgentSessionFactoryRegistry with NONE, JVM, WORKSPACE_FILE, REDIS, MYSQL implementations
- Add integration test suite with EL-orchestrated Spring Boot tests
- Remove per-module READMEs in favor of unified guide
- Update POMs, CLAUDE.md, AGENTS.md
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Replaces buildModel(ctx) overrides with model(ctx) returning
DeepSeek/OpenAI/Anthropic/Gemini/DashScope spec instances.
Also updates TestAgent inner classes in ReActAgentComponentTest
and MemoryStoragePersistenceTest.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
ReActAgentComponent now requires subclasses to override model(ctx)
returning a ModelSpec. The legacy buildModel(ctx) becomes a
non-abstract escape hatch with a default implementation delegating
to model(ctx).resolve(agentConfig()).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
DashScope.of(modelName) returns DashScopeSpec with a thinking
sub-builder using DashScope's native budget term.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Gemini.of(modelName) returns GeminiSpec exposing a thinking sub-builder
that supports both Gemini 2.5's level() and the legacy budget() form.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Anthropic.of(modelName) and AnthropicCompatible.custom(configKey,
modelName) return AnthropicSpec, with a thinking sub-builder using
Anthropic's native budget/enabled terms.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
DeepSeek/Kimi/GLM/Minimax static entries with default baseUrls,
plus OpenAICompatible.custom() fallback for arbitrary vendors.
All read credentials from liteflow.agent.openai-compatible.<key>.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
OpenAI.of(modelName) returns an OpenAISpec exposing reasoningEffort,
frequencyPenalty, and presencePenalty in addition to the common
ModelSpec setters; resolve() reads liteflow.agent.openai credential.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Centralizes credential lookup with consistent AgentConfigException
messages that point at the relevant liteflow.agent.* config path.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
resolve() is the framework SPI: ReActAgentComponent (in a different
package) needs to call spec.resolve(cfg), which protected access
does not permit. The test's TestSpec override is widened in lockstep
since Java forbids narrowing visibility on override.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Vendor-neutral model descriptor with common fluent setters
(temperature/topP/topK/maxTokens/seed/stream/cacheControl) and an
abstract resolve(AgentConfig) SPI that provider modules implement.
10-task TDD plan covering ModelSpec/CredentialResolver in core, the
four provider modules (openai/anthropic/gemini/dashscope), the
ReActAgentComponent abstract-method switch, and migration of test cmps.
Move liteflow-react-agent from compile/release profiles to a dedicated
react-agent profile that auto-activates on JDK 21+. This keeps the
project buildable under Java 8 — react-agent is only included when
the JDK supports it.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The AgentConfig/SessionConfig/WorkspaceConfig POJOs belong in
liteflow-core, not liteflow-react-agent-core.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>