Skip to content

feat: personality preset discovery API (list/get endpoints) #755

@Aureliolo

Description

@Aureliolo

Summary

Expose personality presets via REST API so clients can discover available presets without hardcoding names.

Motivation

Currently, preset names must be known in advance -- there's no API to list or inspect available presets. The setup wizard silently falls back to pragmatic_builder for unknown presets. Clients (dashboard, CLI, third-party integrations) need a way to discover what's available.

Proposed Endpoints

  • GET /api/v1/personalities/presets -- list all available presets (name, description, traits summary)
  • GET /api/v1/personalities/presets/{name} -- get full preset definition (all fields)
  • GET /api/v1/personalities/schema -- return the PersonalityConfig JSON schema (for client-side validation)

Current State

  • PERSONALITY_PRESETS is a frozen MappingProxyType in src/synthorg/templates/presets.py
  • get_personality_preset(name) exists but is internal-only (not exposed via API)
  • Templates already support both personality_preset (by name) and personality (inline dict)
  • PersonalityConfig model in src/synthorg/core/agent.py validates all personality data

Notes

  • Read-only endpoints for builtin presets; CRUD for user-defined presets is tracked separately
  • Should include pagination for future-proofing as custom presets are added
  • Response should distinguish builtin vs user-defined presets (via a source field)

Metadata

Metadata

Assignees

No one assigned

    Labels

    prio:mediumShould do, but not blockingscope:medium1-3 days of workspec:agent-systemDESIGN_SPEC Section 3 - Agent Systemspec:apitype:featureNew feature implementationv0.5Minor version v0.5v0.5.5Patch release v0.5.5

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions