CtrlK
CommunityDocumentationLog inGet started
Tessl Logo

tessl/maven-com-embabel-agent--embabel-agent-starter

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.

Overview
Eval results
Files

concepts-agents.mddocs/

Agents Concept

Agents are autonomous components that achieve goals through planning and action execution using GOAP (Goal-Oriented Action Planning).

Definition

@Agent(
    description = "Agent purpose",           // Required
    planner = PlannerType.GOAP,             // Planning algorithm
    version = "1.0.0",                      // Agent version
    actionRetryPolicy = ActionRetryPolicy.exponential(3, 1000)
)
@Component
public class MyAgent {
    // Actions and conditions
}

Key Attributes

  • description (required): Agent purpose
  • planner: Planning algorithm (default: GOAP)
  • scan: Enable scanning for actions/conditions (default: true)
  • opaque: Hide internal details when used as subagent (default: false)
  • actionRetryPolicy: Default retry strategy for actions
  • provider: Namespace for organizing agents
  • beanName: Override Spring bean name

Planning

GOAP planner:

  • Evaluates action preconditions and postconditions
  • Uses cost and value to select optimal action sequence
  • Dynamically adapts based on blackboard state

Agent Types

Regular Agent: Full GOAP planning with actions and conditions

@Agent(description = "Data processor", planner = PlannerType.GOAP)
public class DataAgent {
    @Action(description = "Load data", post = {"dataLoaded"})
    public Data loadData(String source) { }

    @Action(description = "Process data", pre = {"dataLoaded"})
    public Result process(Data data) { }
}

Component: Provides capabilities without being a full agent

@EmbabelComponent(scan = true)
public class FileOperations {
    @Action(description = "Read file")
    public String readFile(String path) { }
}

Subagents

Agents can invoke other agents:

@Action(description = "Delegate to subagent")
public Result delegateWork(Input input, @Provided AgentPlatform platform) {
    Subagent subagent = new Subagent("SpecializedAgent");
    Agent resolved = subagent.resolve(platform);
    return invokeSubagent(resolved, input);
}

Best Practices

  1. Clear, specific descriptions for LLM understanding
  2. Use GOAP for complex multi-step workflows
  3. Set appropriate retry policies per action criticality
  4. Mark internal agents as opaque when used as subagents
  5. Place agents in scanned packages (com.embabel.agent.*) for auto-discovery

See Also: Actions | Goals | API Reference

tessl i tessl/maven-com-embabel-agent--embabel-agent-starter@0.3.1

docs

api-annotations.md

api-domain-model.md

api-invocation.md

api-tools.md

concepts-actions.md

concepts-agents.md

concepts-goals.md

concepts-invocation.md

concepts-tools.md

guides-creating-agents.md

guides-creating-tools.md

guides-defining-actions.md

guides-goal-achievement.md

guides-human-in-loop.md

guides-multimodal.md

index.md

integration-mcp.md

integration-model-providers.md

integration-spring-boot.md

LlmTool.md

quickstart.md

reference-component-scanning.md

reference-configuration-properties.md

reference-installation.md

reference-logging.md

reference-resilience.md

reference-streaming.md

tile.json