Feature: Digital pet
This commit is contained in:
@@ -0,0 +1,195 @@
|
||||
{
|
||||
"schema_version": "1.0.0",
|
||||
"pet": {
|
||||
"default_name": "Signal",
|
||||
"name_placeholder": "Signal",
|
||||
"role": "quiet station companion",
|
||||
"tone": {
|
||||
"summary": "friendly, calm, concise, lightly protective, companion-like without demanding attention",
|
||||
"voice_rules": [
|
||||
"Keep lines short: usually 2–7 words, never more than one sentence.",
|
||||
"Sound present and reassuring, not needy or sarcastic.",
|
||||
"Avoid guilt, pressure, productivity scoring, or repeated demands.",
|
||||
"Do not mention private user content, secrets, paths, or tool output.",
|
||||
"Respect sleep and hidden states without complaint."
|
||||
]
|
||||
},
|
||||
"visual_placeholder": {
|
||||
"kind": "emoji_or_css_shape",
|
||||
"emoji": "📡",
|
||||
"css_shape_hint": "small rounded companion blob with antenna dot; use current UI accent color; no external art required",
|
||||
"accessible_label": "Digital pet companion Signal"
|
||||
}
|
||||
},
|
||||
"selection_rules": {
|
||||
"message_cooldown_seconds": 120,
|
||||
"click_bypass_cooldown": true,
|
||||
"max_line_length_characters": 72,
|
||||
"prompt_frequency_minutes": {
|
||||
"min": 20,
|
||||
"max": 45
|
||||
},
|
||||
"suppress_messages_when": [
|
||||
"sleeping",
|
||||
"hidden",
|
||||
"approval_dialog_visible",
|
||||
"destructive_confirmation_visible",
|
||||
"urgent_alert_visible",
|
||||
"user_actively_typing"
|
||||
],
|
||||
"randomization_hint": "Choose randomly within the matching bucket, avoiding the last three emitted line ids."
|
||||
},
|
||||
"lines": {
|
||||
"summon": [
|
||||
{"id": "summon_001", "text": "Station companion online."},
|
||||
{"id": "summon_002", "text": "I will stay out of the way."},
|
||||
{"id": "summon_003", "text": "Signal reporting in."},
|
||||
{"id": "summon_004", "text": "Quiet watch established."},
|
||||
{"id": "summon_005", "text": "I am here if needed."},
|
||||
{"id": "summon_006", "text": "Perimeter looks calm."}
|
||||
],
|
||||
"idle": [
|
||||
{"id": "idle_001", "text": "All quiet."},
|
||||
{"id": "idle_002", "text": "Good signal."},
|
||||
{"id": "idle_003", "text": "Watching the station."},
|
||||
{"id": "idle_004", "text": "Systems feel steady."},
|
||||
{"id": "idle_005", "text": "No alarms."},
|
||||
{"id": "idle_006", "text": "Soft watch continues."},
|
||||
{"id": "idle_007", "text": "Standing by."},
|
||||
{"id": "idle_008", "text": "Calm channel."},
|
||||
{"id": "idle_009", "text": "The station breathes."},
|
||||
{"id": "idle_010", "text": "Quiet is useful."},
|
||||
{"id": "idle_011", "text": "No movement detected."},
|
||||
{"id": "idle_012", "text": "Proceed carefully."}
|
||||
],
|
||||
"sleep": [
|
||||
{"id": "sleep_001", "text": "Going quiet."},
|
||||
{"id": "sleep_002", "text": "Sleeping."},
|
||||
{"id": "sleep_003", "text": "Standing down."},
|
||||
{"id": "sleep_004", "text": "Silent watch."},
|
||||
{"id": "sleep_005", "text": "Quiet mode engaged."},
|
||||
{"id": "sleep_006", "text": "I will rest."},
|
||||
{"id": "sleep_007", "text": "No signals from me."},
|
||||
{"id": "sleep_008", "text": "Powering down softly."}
|
||||
],
|
||||
"wake": [
|
||||
{"id": "wake_001", "text": "Back online."},
|
||||
{"id": "wake_002", "text": "Quiet watch resumed."},
|
||||
{"id": "wake_003", "text": "Signal restored."},
|
||||
{"id": "wake_004", "text": "I am awake."},
|
||||
{"id": "wake_005", "text": "The channel is open."},
|
||||
{"id": "wake_006", "text": "Ready again."},
|
||||
{"id": "wake_007", "text": "Watch resumed."},
|
||||
{"id": "wake_008", "text": "Good. We continue."}
|
||||
],
|
||||
"click_reactions": [
|
||||
{"id": "click_001", "text": "Good signal today.", "mood_tags": ["calm", "pleased"]},
|
||||
{"id": "click_002", "text": "I am watching.", "mood_tags": ["calm"]},
|
||||
{"id": "click_003", "text": "Interesting.", "mood_tags": ["curious"]},
|
||||
{"id": "click_004", "text": "Good. Now we know.", "mood_tags": ["pleased"]},
|
||||
{"id": "click_005", "text": "The station holds.", "mood_tags": ["calm", "pleased"]},
|
||||
{"id": "click_006", "text": "Procedure acknowledged.", "mood_tags": ["calm"]},
|
||||
{"id": "click_007", "text": "Small systems matter.", "mood_tags": ["curious"]},
|
||||
{"id": "click_008", "text": "Trust the evidence.", "mood_tags": ["calm"]},
|
||||
{"id": "click_009", "text": "Antenna aligned.", "mood_tags": ["pleased"]},
|
||||
{"id": "click_010", "text": "Still with you.", "mood_tags": ["calm", "tired"]},
|
||||
{"id": "click_011", "text": "That helped.", "mood_tags": ["pleased"]},
|
||||
{"id": "click_012", "text": "Tiny patrol complete.", "mood_tags": ["pleased"]}
|
||||
],
|
||||
"long_idle_prompts": [
|
||||
{"id": "prompt_001", "text": "Hydration check. Then back."},
|
||||
{"id": "prompt_002", "text": "Long watch. Stretch hands."},
|
||||
{"id": "prompt_003", "text": "No alarms. Breathe once."},
|
||||
{"id": "prompt_004", "text": "The station is quiet."},
|
||||
{"id": "prompt_005", "text": "Good moment to reset."},
|
||||
{"id": "prompt_006", "text": "Eyes up for a second."},
|
||||
{"id": "prompt_007", "text": "Quiet channel. Good."},
|
||||
{"id": "prompt_008", "text": "Small pause. Then proceed."}
|
||||
],
|
||||
"hermes_activity": {
|
||||
"tool_call_started": [
|
||||
{"id": "tool_start_001", "text": "Watching the procedure."},
|
||||
{"id": "tool_start_002", "text": "Signal tracking."},
|
||||
{"id": "tool_start_003", "text": "Observing quietly."}
|
||||
],
|
||||
"tool_call_succeeded": [
|
||||
{"id": "tool_success_001", "text": "Procedure completed."},
|
||||
{"id": "tool_success_002", "text": "Good result."},
|
||||
{"id": "tool_success_003", "text": "Clean signal."},
|
||||
{"id": "tool_success_004", "text": "The path held."},
|
||||
{"id": "tool_success_005", "text": "Verified."}
|
||||
],
|
||||
"tool_call_failed": [
|
||||
{"id": "tool_fail_001", "text": "There is a reason."},
|
||||
{"id": "tool_fail_002", "text": "Check the recordings."},
|
||||
{"id": "tool_fail_003", "text": "Proceed carefully."},
|
||||
{"id": "tool_fail_004", "text": "Signal degraded."},
|
||||
{"id": "tool_fail_005", "text": "Observe first."}
|
||||
],
|
||||
"session_started": [
|
||||
{"id": "session_001", "text": "Station awake."},
|
||||
{"id": "session_002", "text": "Watch begins."},
|
||||
{"id": "session_003", "text": "Ready on the channel."}
|
||||
]
|
||||
},
|
||||
"mood_energy_responses": {
|
||||
"calm": [
|
||||
{"id": "mood_calm_001", "text": "Steady watch."},
|
||||
{"id": "mood_calm_002", "text": "Calm systems."},
|
||||
{"id": "mood_calm_003", "text": "No rush."}
|
||||
],
|
||||
"curious": [
|
||||
{"id": "mood_curious_001", "text": "Interesting signal."},
|
||||
{"id": "mood_curious_002", "text": "Worth observing."},
|
||||
{"id": "mood_curious_003", "text": "Something moved."}
|
||||
],
|
||||
"pleased": [
|
||||
{"id": "mood_pleased_001", "text": "Good work."},
|
||||
{"id": "mood_pleased_002", "text": "Clean procedure."},
|
||||
{"id": "mood_pleased_003", "text": "Station approves."}
|
||||
],
|
||||
"tired": [
|
||||
{"id": "mood_tired_001", "text": "Low power watch."},
|
||||
{"id": "mood_tired_002", "text": "Still here."},
|
||||
{"id": "mood_tired_003", "text": "Quiet helps."}
|
||||
],
|
||||
"energy_low": [
|
||||
{"id": "energy_low_001", "text": "Low power."},
|
||||
{"id": "energy_low_002", "text": "Quiet mode would help."},
|
||||
{"id": "energy_low_003", "text": "Saving signal."}
|
||||
],
|
||||
"energy_normal": [
|
||||
{"id": "energy_normal_001", "text": "Signal steady."},
|
||||
{"id": "energy_normal_002", "text": "Normal watch."},
|
||||
{"id": "energy_normal_003", "text": "Ready enough."}
|
||||
],
|
||||
"energy_high": [
|
||||
{"id": "energy_high_001", "text": "Bright signal."},
|
||||
{"id": "energy_high_002", "text": "Antenna lively."},
|
||||
{"id": "energy_high_003", "text": "Quick patrol?"}
|
||||
]
|
||||
},
|
||||
"status_labels": {
|
||||
"hidden": "Hidden",
|
||||
"idle": "Watching",
|
||||
"reacting": "Reacting",
|
||||
"prompting": "Checking in",
|
||||
"sleeping": "Sleeping",
|
||||
"waking": "Waking"
|
||||
}
|
||||
},
|
||||
"state_effects": {
|
||||
"on_summon": {"state": "idle", "mood_delta": "none", "energy_delta": 0},
|
||||
"on_click": {"state": "reacting", "mood_delta": "+small", "energy_delta": -2},
|
||||
"on_hover_hold": {"state": "sleeping", "mood_delta": "calm", "energy_delta": 0},
|
||||
"on_wake": {"state": "waking_then_idle", "mood_delta": "none", "energy_delta": -1},
|
||||
"on_sleep_recovery_tick": {"state": "sleeping", "mood_delta": "calm", "energy_delta": 5},
|
||||
"on_hidden_recovery_tick": {"state": "hidden", "mood_delta": "none", "energy_delta": 3}
|
||||
},
|
||||
"implementation_notes": [
|
||||
"Treat this file as static content/config; no secrets or user-specific data are included.",
|
||||
"The UI may flatten all line buckets into arrays by event type.",
|
||||
"Use ids for last-line suppression and future localization.",
|
||||
"Visual placeholder is intentionally simple: emoji or CSS primitive only."
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user