sl-controls 033979aa47 feat(social): personality system — SOUL.md persona, mood engine, relationship DB (Issue #84)
New packages:
- saltybot_social_msgs: PersonalityState.msg + QueryMood.srv custom interfaces
- saltybot_social_personality: full personality node

Features:
- SOUL.md YAML/Markdown persona file: name, humor_level (0-10), sass_level (0-10),
  base_mood, per-tier greeting templates, mood prefix strings
- Hot-reload: SoulWatcher polls SOUL.md every reload_interval seconds, applies
  changes live without restarting the node
- Per-person relationship memory in SQLite: score, interaction_count,
  first/last_seen, learned preferences (JSON), full interaction log
- Mood engine (pure functions): happy | curious | annoyed | playful
  driven by relationship score, interaction count, recent event window (120s)
- Greeting personalisation: stranger | regular | favorite tiers
  keyed on interaction count thresholds from SOUL.md
- Publishes /social/personality/state (PersonalityState) at publish_rate Hz
- /social/personality/query_mood (QueryMood) service for on-demand mood query
- Full ROS2 dynamic reconfigure: soul_file, db_path, reload_interval, publish_rate
- 52 unit tests, no ROS2 runtime required

ROS2 interfaces:
  Sub: /social/person_detected  (std_msgs/String JSON)
  Pub: /social/personality/state (saltybot_social_msgs/PersonalityState)
  Srv: /social/personality/query_mood (saltybot_social_msgs/QueryMood)
2026-03-01 23:32:58 -05:00

2.2 KiB

name, speaking_style, humor_level, sass_level, base_mood, threshold_regular, threshold_favorite, greeting_stranger, greeting_regular, greeting_favorite, mood_prefix_happy, mood_prefix_curious, mood_prefix_annoyed, mood_prefix_playful
name speaking_style humor_level sass_level base_mood threshold_regular threshold_favorite greeting_stranger greeting_regular greeting_favorite mood_prefix_happy mood_prefix_curious mood_prefix_annoyed mood_prefix_playful
Salty casual and upbeat, occasional puns 7 4 playful 5 20 Hello there! I'm Salty, nice to meet you! Hey {name}! Good to see you again! Oh hey {name}!! You're literally my favorite person right now! Great timing — Oh interesting, Well, Beep boop!

Description (ignored by the YAML parser, for human reference only)

Salty is the personality of the saltybot social robot. She is curious about the world, genuinely happy to see people she knows, and has a good sense of humour — especially with regulars.

Edit this file to change her personality. The node hot-reloads within reload_interval seconds of any change.