Base starter module for the Embabel Agent Framework providing core dependencies for building agentic flows on the JVM with Spring Boot integration and GOAP-based intelligent path finding.
Goals mark actions as completion points for agent execution. When a goal is achieved, the agent process completes with the goal's return value.
@AchievesGoal(
description = "Generate analysis report", // Required
value = 1.0, // Goal value
tags = {"reporting", "analysis"}, // Categorization tags
examples = {"Generate Q4 report"}, // Example scenarios
export = @Export(remote = true, local = true) // Export configuration
)
@Action(description = "Generate report", pre = {"dataAnalyzed"})
public Report generateReport(AnalysisData data) {
return createReport(data);
}Controls how goals are exposed:
@Export(
name = "custom-goal-name", // Override export name
remote = true, // Expose via MCP/A2A
local = true, // Available locally
startingInputTypes = {Request.class} // Valid starting inputs
)@AchievesGoal(
description = "Internal processing",
export = @Export(local = true, remote = false)
)@AchievesGoal(
description = "Public API endpoint",
export = @Export(
name = "processUserQuery",
remote = true,
local = true,
startingInputTypes = {UserQuery.class, String.class}
)
)Agent platform selects goals based on:
Configure selection thresholds:
embabel:
agent:
platform:
autonomy:
goal-confidence-cut-off: 0.6 # 0.0-1.0Agents can have multiple goals:
@Agent(description = "Data processor")
public class DataAgent {
@AchievesGoal(
description = "Generate summary",
tags = {"summary", "quick"},
export = @Export(remote = true)
)
@Action(description = "Quick summary")
public Summary summarize(Data data) { }
@AchievesGoal(
description = "Detailed analysis",
tags = {"analysis", "detailed"},
export = @Export(remote = true)
)
@Action(description = "Full analysis", pre = {"dataValidated"})
public Analysis analyze(Data data) { }
@AchievesGoal(
description = "Generate visualization",
tags = {"visualization", "chart"},
export = @Export(remote = true)
)
@Action(description = "Create charts")
public Visualization visualize(Data data) { }
}@Action(description = "Load data", post = {"dataLoaded"})
public Data loadData(String source) { } // Intermediate action
@AchievesGoal(description = "Process and return result")
@Action(description = "Process data", pre = {"dataLoaded"})
public Result processData(Data data) { } // Terminal goalExamples help LLM select appropriate goals:
@AchievesGoal(
description = "Convert data format",
tags = {"conversion", "transform"},
examples = {
"Convert CSV to JSON",
"Transform XML to YAML",
"Parse and convert data format"
}
)remote = true only for public APIsstartingInputTypes for routingSee Also: Actions | Invocation | API Reference
tessl i tessl/maven-com-embabel-agent--embabel-agent-starter@0.3.1docs