2260480c81
The headline P4 piece (clean redesign): the Agent persona noun, decoupled from its Discord shell. - agent.go/storage.go/builtin_loader.go moved from mort's pkg/logic/agents; the Storage seam drops the Discord CommandBindingStorage embedding (a host concern). The host-entangled files (commands, chatbot_provider, command- binding dispatcher, personalization, system) stay in mort. - runnable.go: Agent.ToRunnable() lowers a persona into run.RunnableAgent — the bridge that lets run.Executor run a persona without importing this battery (the inversion of agentexec.Run(*agents.Agent)). - memory.go: NewMemory() — zero-dep in-process persona Storage (all 11 CRUD + trigger-query methods). Tests: ToRunnable field/phase mapping; Memory round-trip. CI invariant: core imports ZERO from persona. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
38 lines
1.2 KiB
Go
38 lines
1.2 KiB
Go
package persona
|
|
|
|
import "gitea.stevedudenhoeffer.com/steve/executus/run"
|
|
|
|
// ToRunnable lowers an Agent persona into the kernel's run.RunnableAgent DTO —
|
|
// the bridge that lets run.Executor run a persona WITHOUT importing this
|
|
// battery (the inversion of mort's agentexec.Run(*agents.Agent)). It maps the
|
|
// static shape only; per-run personalization, palette resolution, the critic,
|
|
// audit, etc. are supplied separately via run.Ports.
|
|
func (a *Agent) ToRunnable() run.RunnableAgent {
|
|
ra := run.RunnableAgent{
|
|
ID: a.ID,
|
|
Name: a.Name,
|
|
SystemPrompt: a.SystemPrompt,
|
|
ModelTier: a.ModelTier,
|
|
MaxIterations: a.MaxIterations,
|
|
MaxRuntime: a.MaxRuntime,
|
|
LowLevelTools: a.LowLevelTools,
|
|
SkillPalette: a.SkillPalette,
|
|
SubAgentPalette: a.SubAgentPalette,
|
|
Critic: run.CriticConfig{
|
|
Enabled: a.CriticEnabled,
|
|
BackstopMultiplier: a.CriticBackstopMultiplier,
|
|
},
|
|
}
|
|
for _, p := range a.Phases {
|
|
ra.Phases = append(ra.Phases, run.Phase{
|
|
Name: p.Name,
|
|
SystemPrompt: p.SystemPrompt,
|
|
ModelTier: p.ModelTier,
|
|
MaxIterations: p.MaxIter,
|
|
Tools: p.Tools,
|
|
Optional: p.Optional,
|
|
})
|
|
}
|
|
return ra
|
|
}
|