Add Embabel Agent Framework skill for Copilot cloud agent#334
Merged
Conversation
Agent-Logs-Url: https://github.com/elasticsoftwarefoundation/akces-framework/sessions/3059f0f5-8335-46f1-bccf-04b574889b02 Co-authored-by: jwijgerd <914840+jwijgerd@users.noreply.github.com>
Copilot created this pull request from a session on behalf of
jwijgerd
April 11, 2026 11:29
View session
jwijgerd
marked this pull request as ready for review
April 11, 2026 11:29
Contributor
There was a problem hiding this comment.
Pull request overview
Adds a new GitHub Copilot skill document describing Embabel Agent Framework concepts and how Akces’ akces-agentic module integrates with Embabel (agentic aggregates, memory/tasks, and the tick-based runtime model).
Changes:
- Introduces a new skill at
.github/skills/embabel-agent-framework/SKILL.mdwith Embabel concepts (@Agent,@Action, GOAP/Blackboard, lifecycle, execution modes). - Documents Akces agentic integration components (
@AgenticAggregateInfo, built-in commands/events, memory/tasks state interfaces). - Provides a step-by-step guide and “design rules” for building an agentic aggregate backed by an Embabel agent.
| - **Akces** provides the CQRS/Event Sourcing infrastructure (Kafka, state management, schema registry). | ||
| - **Embabel** provides the AI agent runtime (GOAP planning, LLM integration, Blackboard). | ||
|
|
||
| When a command or event arrives at an agentic aggregate, the Akces runtime creates an Embabel `AgentProcess`, populates its Blackboard with the aggregate's current state, memories, and context, then lets the Embabel planning engine decide which actions to execute. The resulting `DomainEvent` objects are collected from the Blackboard and fed back into the Akces event-sourcing pipeline. |
| - `"state"` — the current aggregate state | ||
| - `"agenticAggregateId"` — the aggregate identifier | ||
| - `"memories"` — the list of current memories from state | ||
| - `"aggregateServices"` — all known aggregate service records |
| Extends `Aggregate<S>` with: | ||
|
|
||
| - `getCreateDomainEvent()` — returns the domain event to auto-create initial state (agentic aggregates are singletons). | ||
| - `getMemories(S state)` — extracts memories from the state. |
Comment on lines
+338
to
+346
| The state must be a Java record implementing `AggregateState`, `TaskAwareState`, and optionally `MemoryAwareState`: | ||
|
|
||
| ```java | ||
| @AggregateStateInfo(type = "MyAgentState", version = 1) | ||
| public record MyAgentState( | ||
| String id, | ||
| List<AssignedTask> assignedTasks, | ||
| List<AgenticAggregateMemory> memories | ||
| ) implements AggregateState, TaskAwareState, MemoryAwareState { |
Comment on lines
+329
to
+332
| 3. The process is **not** ticked immediately. The partition's idle-poll cycle (`resumeAgentTasks`) exclusively drives all `AgentProcess` advancement via `AgentProcessSingleTickRunner.tick()`. | ||
| 4. After each tick, `AgentProcessResultTranslator.collectEvents()` drains `DomainEvent` objects from the Blackboard and hides them. | ||
| 5. Collected events are fed into the Akces event-sourcing pipeline. | ||
| 6. When `AgentProcess.getFinished()` returns `true`, an `AgentTaskFinishedEvent` is emitted with the `AgentProcessStatusCode`. |
Comment on lines
+510
to
+511
| 4. **Domain events produced by agents must be registered** — either as produced events on the `@CommandHandler`/`@EventHandler` or declared in `agentProducedErrors`. | ||
| 5. **Undeclared error events are silently excluded** — they are logged at WARN level but not persisted. Always declare error events in `agentProducedErrors`. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a Copilot agent skill describing Embabel Agent Framework concepts and how to build agents with Embabel, including the current
akces-agenticmodule integration.Skill contents
@Agent,@Action,@AchievesGoal,@Condition, Blackboard pattern, GOAP planning,AgentProcesslifecycle, domain objects with@Tool, execution modes (Focused/Closed/Open), subagents,@State, configuration@AgenticAggregateInfo,AgenticAggregate<S>,TaskAwareState/MemoryAwareState, built-in commands/events (AssignTaskCommand,AgentTaskAssignedEvent,AgentTaskFinishedEvent,MemoryStoredEvent,MemoryRevokedEvent), agent resolution logic, Blackboard population, tick-based execution flowLocation
.github/skills/embabel-agent-framework/SKILL.md— automatically discovered by Copilot when relevant to the user's prompt.