Skip to content

Annotations

The Embabel annotations used in ConfPlanner, with their member attributes and where each first appears. These are the typed surface the planner reads to derive a plan.

@Agent

Marks a class as an agent. An agent supports one goal type and plans only with its own actions.

Member Type Description
name String Agent name shown in the planning log and shell.
description String Human-readable summary of what the agent achieves.

@Action

Marks a method as a planning action. Each action is a typed function: it consumes its parameter types and produces its return type. The planner wires actions together by matching produced types to consumed types.

Member Type Description
pre String[] Names of conditions that must hold before the action can run.
post String[] Names of conditions promised after the action runs (a planning promise, not a runtime gate).
canRerun boolean Whether the planner may run the action more than once in a plan. Defaults to false; set true when the action must fire on every replan cycle — e.g. assembleSchedule at ConfPlannerAgent.java:95, which re-runs while noDoubleBooking is still FALSE.

Note

A post condition on an @AchievesGoal action is a planning promise, not a runtime gate. To make an invariant bite, the goal must require it as a pre — see guardrails and invariants.

@AchievesGoal

Marks the single action whose output is the agent's goal — the destination the planner searches backwards from.

Member Type Description
description String What reaching this goal means.

@Condition

Marks a method that evaluates to a boolean over typed state. Conditions are referenced by name in pre/post and are how guardrails are enforced.

Member Type Notes
name String The name by which pre/post reference this condition (e.g. @Condition(name = "noDoubleBooking")). Defaults to the method name.
cost double Optional relative cost hint for evaluation ordering.

Tool groups

@Action has no toolGroups member. Add tool groups on the prompt runner instead, for example withToolGroup(CoreToolGroups.WEB).

Where it connects

For the planning semantics behind these annotations, see actions, conditions, and goals and About goal-oriented planning. To add a new action hands-on, see how to add an action.