-
Notifications
You must be signed in to change notification settings - Fork 0
feat: user-defined personality preset CRUD API #756
Copy link
Copy link
Closed
Labels
prio:mediumShould do, but not blockingShould do, but not blockingscope:large3+ days of work3+ days of workspec:agent-systemDESIGN_SPEC Section 3 - Agent SystemDESIGN_SPEC Section 3 - Agent Systemspec:apispec:persistencetype:featureNew feature implementationNew feature implementationv0.5Minor version v0.5Minor version v0.5v0.5.5Patch release v0.5.5Patch release v0.5.5
Description
Summary
Allow users to create, update, and delete custom personality presets via the REST API, persisted to the database alongside builtin presets.
Motivation
Users need to define organization-specific personality profiles beyond the builtin presets. The underlying PersonalityConfig model already validates arbitrary personality dicts, and templates already support inline personality dicts -- but there's no way to save reusable custom presets.
Proposed Endpoints
POST /api/v1/personalities/presets-- create a custom preset (validated against PersonalityConfig)PUT /api/v1/personalities/presets/{name}-- update a custom presetDELETE /api/v1/personalities/presets/{name}-- delete a custom preset (builtin presets cannot be deleted)
Design Considerations
- Custom presets persisted via
PersistenceBackend(SQLite initially) - Builtin presets remain frozen in code; custom presets overlay at runtime
- Name collisions: custom presets cannot shadow builtin preset names (reject on create)
- Validation: all custom presets must pass
PersonalityConfig(**preset)before persistence - API responses should include a
source: "builtin" | "custom"field to distinguish origin
Dependencies
- Personality preset discovery API (list/get endpoints) -- for the read side
PersistenceBackendalready supports generic key-value storage patterns
Current State
- Templates support
personality_preset(name lookup) andpersonality(inline dict) -- seesrc/synthorg/templates/schema.py PersonalityConfiginsrc/synthorg/core/agent.pyvalidates all fields with Pydantic- No persistence layer for custom presets exists yet
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
prio:mediumShould do, but not blockingShould do, but not blockingscope:large3+ days of work3+ days of workspec:agent-systemDESIGN_SPEC Section 3 - Agent SystemDESIGN_SPEC Section 3 - Agent Systemspec:apispec:persistencetype:featureNew feature implementationNew feature implementationv0.5Minor version v0.5Minor version v0.5v0.5.5Patch release v0.5.5Patch release v0.5.5