Implement the BECOME primitive for changing actor behavior.
Overview
This is Phase 3 of the actor-native agent orchestration system. BECOME allows an actor to change how it responds to the next message it receives.
Requirements
Become Tool
Add a become tool to the agent toolset:
become:
description: Change your behavior for the next message you receive
parameters:
prompt: New system prompt or instructions (required)
tools: New tool whitelist (optional, defaults to current)
context: Additional context to carry forward (optional)
reason: Why you're changing behavior (for logging)
Behavior State
- Store current behavior in actor state file
- Behavior = system prompt + tool whitelist + context
- On next message, load behavior from state
Behavior Changes
BECOME does NOT change:
- Actor identity (actor_id stays the same)
- Capabilities (can't expand via BECOME)
- Customer relationships
BECOME DOES change:
- System prompt for next message
- Which tools are active (within capability limits)
- Context/state carried forward
Use Cases
- State machines: planning -> implementing -> reviewing
- Iteration: process_item -> process_item -> done
- Focus shift: "now review what you wrote"
Implementation Notes
Files to modify/create
Omni/Agent/Actor.hs - BECOME implementation, behavior stateOmni/Agent/Tools.hs - Add become toolOmni/Agent/Engine.hs - Load behavior on message receipt
State Storage
_/actors/{actor_id}/behavior.json - current behavior- Updated when BECOME is called
- Read at start of each message processing
Testing
- Test behavior persists across messages
- Test tool whitelist change works
- Test capabilities still enforced after BECOME
- Test context carried forward
Dependencies
- Task: Actor model: Message passing infrastructure (messages trigger behavior)
- Task: Actor model: CREATE primitive (actor state infrastructure)
References
- Spec:
_/llm/actors.md (BECOME primitive, Behaviors section)