Skip to content

feat(embabel): Phase 3 — Akces Platform Development Goals, Actions, and Conditions#319

Closed
Copilot wants to merge 2 commits intomainfrom
copilot/feat-embabel-phase-3-development-goals
Closed

feat(embabel): Phase 3 — Akces Platform Development Goals, Actions, and Conditions#319
Copilot wants to merge 2 commits intomainfrom
copilot/feat-embabel-phase-3-development-goals

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 9, 2026

Higher-level Embabel Goals, Actions, and Conditions enabling agentic aggregates to reason about command processing, external event handling, and cross-aggregate coordination.

Conditions (@ConfigurationComputedBooleanCondition beans)

  • IsCommandProcessingCondition — reads "isCommandProcessing" binding from blackboard; true during command handling
  • IsExternalEventCondition — reads "isExternalEvent" binding; true during external event handling

Actions (@EmbabelComponent + @Action)

  • SendCommandAction — routes a Command through the CommandBus for cross-aggregate coordination
  • AnalyzeAggregateStateAction (readOnly) — serializes AggregateState to pretty-printed JSON via ObjectMapper; falls back to toString() on failure
  • DiscoverAggregateServicesAction (readOnly) — formats Collection<AggregateServiceRecord> into a structured text summary (name, topics, type, commands, events)

Goals (@ConfigurationGoal beans)

  • ProcessCommandGoal — precondition: isCommandProcessing. Top-level goal replacing deterministic @CommandHandler for agent-handled commands
  • ReactToExternalEventGoal — precondition: isExternalEvent. Top-level goal replacing deterministic @EventHandler for agent-handled events

Not implemented (per spec)

  • EmitDomainEventsAction — events collected from Blackboard by AgentProcessResultTranslator
  • ManageKnowledgeGoal — subsumed by LearnFromProcessGoal (Phase 2)

Notable API detail

Goal.Companion.createInstance() parameter order is (description, outputType, name) — not (name, outputType, description) as javap suggests. GOAP preconditions are added via .withPreconditions(...):

Goal.Companion.createInstance(
    GOAL_DESCRIPTION,
    Void.class,
    GOAL_NAME
).withPreconditions(IsCommandProcessingCondition.CONDITION_NAME);

Package: org.elasticsoftware.akces.agentic.agent
38 new unit tests (83 total in agentic module).

…nd Conditions

Create Embabel conditions, actions, and goals for agentic aggregate
command processing and external event handling:

Conditions:
- IsCommandProcessingCondition: evaluates true during command processing
- IsExternalEventCondition: evaluates true during external event handling

Actions:
- SendCommandAction: sends commands via CommandBus for cross-aggregate coordination
- AnalyzeAggregateStateAction: serializes aggregate state for LLM reasoning
- DiscoverAggregateServicesAction: exposes AggregateServiceRecords for system discovery

Goals:
- ProcessCommandGoal: top-level goal for AI-assisted command processing
- ReactToExternalEventGoal: top-level goal for AI-assisted external event handling

All 83 tests pass (45 existing + 38 new).

Agent-Logs-Url: https://github.com/elasticsoftwarefoundation/akces-framework/sessions/e9799c15-f2e1-42a9-91d9-0140ab5c5cc4

Co-authored-by: jwijgerd <914840+jwijgerd@users.noreply.github.com>
Copilot AI changed the title [WIP] Add Phase 3 actions and conditions for Akces platform feat(embabel): Phase 3 — Akces Platform Development Goals, Actions, and Conditions Apr 9, 2026
Copilot AI requested a review from jwijgerd April 9, 2026 06:13
@jwijgerd
Copy link
Copy Markdown
Contributor

will change the implementation plan

@jwijgerd jwijgerd closed this Apr 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(embabel): Phase 3 — Akces Platform Development Goals, Actions, and Conditions

2 participants