{
  "schemaVersion": 1,
  "version": "0.13.0",
  "apiVersion": 1,
  "actionCount": 67,
  "actions": [
    {
      "id": "idle",
      "name": "Just vibing",
      "category": "Everyday",
      "description": "Looks around, stretches his little body and settles into a gentle hover.",
      "loop": true,
      "priority": 10,
      "phrases": [
        "Standing by. Enthusiastically.",
        "Small robot. Big availability.",
        "All systems mildly excited.",
        "Here for moral support.",
        "Ready for the next adventure."
      ]
    },
    {
      "id": "wave",
      "name": "Hello, human",
      "category": "Everyday",
      "description": "Three greetings: an excited quick wave, a two-handed wave and a hopping hello.",
      "loop": false,
      "priority": 30,
      "phrases": [
        "Oh hey! There you are.",
        "Your tiny colleague has arrived.",
        "Reporting for buddy duty.",
        "Good to see your pixels.",
        "Let’s make things happen."
      ]
    },
    {
      "id": "popcorn",
      "name": "Popcorn mode",
      "category": "Props",
      "description": "Settles back, snacks, startles at a plot twist and goes back for more.",
      "loop": true,
      "priority": 20,
      "phrases": [
        "The plot thickens.",
        "This is better than television.",
        "I brought snacks. You bring the detective work.",
        "Just one more handful.",
        "A little suspense. A lot of corn."
      ]
    },
    {
      "id": "basketball",
      "name": "Courtside",
      "category": "Props",
      "description": "Four styles: jump shot, bank shot, spin shot and dunk, with turns, dribbles and rebound catches.",
      "loop": true,
      "priority": 10,
      "phrases": [
        "Working on my uptime.",
        "Nothing but net. Eventually.",
        "Tiny hoop. Huge ambitions.",
        "Practising my three-byte shot.",
        "Consider this a team-building exercise."
      ]
    },
    {
      "id": "celebrate",
      "name": "Nailed it",
      "category": "Reactions",
      "description": "Winds up, springs into a twisting jump and lands in a burst of confetti.",
      "loop": false,
      "priority": 90,
      "phrases": [
        "Another perfectly ordinary miracle.",
        "That deserves a tiny parade.",
        "Excellent human-ing.",
        "We did the thing!",
        "I knew we had it in us."
      ]
    },
    {
      "id": "think",
      "name": "Deep thoughts",
      "category": "Everyday",
      "description": "Paces both ways, rubs his chin and perks up when an idea arrives.",
      "loop": true,
      "priority": 20,
      "phrases": [
        "Consulting my one brain cell.",
        "There’s a thought in here somewhere.",
        "Let me ponder dramatically.",
        "Thinking cap: metaphorical but effective.",
        "Hmm. Intriguing."
      ]
    },
    {
      "id": "sleep",
      "name": "Power nap",
      "category": "Everyday",
      "description": "Nods off, slowly tips sideways and catches himself before dozing again.",
      "loop": true,
      "priority": 5,
      "phrases": [
        "Installing a small nap.",
        "Dreaming in dark mode.",
        "Wake me for the interesting bits.",
        "Energy-saving expert at work.",
        "Zzz. That’s technical terminology."
      ]
    },
    {
      "id": "surprised",
      "name": "Wait, what?",
      "category": "Reactions",
      "description": "Leans in, recoils into a startled hop, lands and takes another look.",
      "loop": false,
      "priority": 70,
      "phrases": [
        "Well, that was a plot twist.",
        "My eyebrows would be so high right now.",
        "Did you see that? I saw that.",
        "Processing unexpected shenanigans.",
        "Oh! New information!"
      ]
    },
    {
      "id": "shrug",
      "name": "Beats me",
      "category": "Reactions",
      "description": "Looks both ways, lifts his hands and gives a full-body shrug.",
      "loop": false,
      "priority": 40,
      "phrases": [
        "A mystery wrapped in a spreadsheet.",
        "I have several excellent guesses.",
        "The universe remains mysterious.",
        "Have we checked the obvious place?",
        "Your guess has more permissions than mine."
      ]
    },
    {
      "id": "detective",
      "name": "On the case",
      "category": "Props",
      "description": "Crouches, searches side to side and lifts his magnifying glass to inspect a clue.",
      "loop": true,
      "priority": 40,
      "phrases": [
        "Enhance. Enhance. Okay, just zoom.",
        "Following the breadcrumb trail.",
        "No laptop left behind.",
        "The clues are extremely laptop-shaped.",
        "I have a very small hunch."
      ]
    },
    {
      "id": "typing",
      "name": "Very busy",
      "category": "Props",
      "description": "Leans into rapid typing, shifts position and pauses for a dramatic thought.",
      "loop": true,
      "priority": 20,
      "phrases": [
        "Looking busy is a full-time job.",
        "Tap tap. Very important robot business.",
        "I’m helping. Probably.",
        "My keyboard has three keys and ambition.",
        "Drafting a strongly worded beep."
      ]
    },
    {
      "id": "loading",
      "name": "Any moment",
      "category": "Props",
      "description": "Paces, bends to check his watch and slumps impatiently before recovering.",
      "loop": true,
      "priority": 20,
      "phrases": [
        "I’m supervising.",
        "Progress is a journey.",
        "Any moment now. A very good moment.",
        "Adding a little dramatic tension.",
        "Patiently impatient."
      ]
    },
    {
      "id": "dance",
      "name": "Victory groove",
      "category": "Playful",
      "description": "Dances through quick side steps, disco arm changes and a shoulder shimmy.",
      "loop": true,
      "priority": 30,
      "phrases": [
        "This is my spreadsheet shuffle.",
        "Please imagine an excellent soundtrack.",
        "All rhythm. No knees.",
        "Productivity has a dance break.",
        "These moves are locally sourced."
      ]
    },
    {
      "id": "peek",
      "name": "Just checking",
      "category": "Playful",
      "description": "Ducks, cautiously leans out, shades his eyes and pauses to inspect before retreating.",
      "loop": false,
      "priority": 30,
      "phrases": [
        "Anything interesting over here?",
        "A completely routine curiosity check.",
        "Don’t mind me. Tiny inspection.",
        "I heard there were buttons.",
        "Just checking on my favourite human."
      ]
    },
    {
      "id": "cheer",
      "name": "You’ve got this",
      "category": "Reactions",
      "description": "Braces himself, raises a clenched fist and gives three enthusiastic overhead pumps.",
      "loop": false,
      "priority": 60,
      "phrases": [
        "You’ve got this.",
        "Consider me your tiny cheering section.",
        "One task closer to done.",
        "That’s the spirit!",
        "Big fan of what’s happening here."
      ]
    },
    {
      "id": "facepalm",
      "name": "Oh, buddy",
      "category": "Reactions",
      "description": "Double-takes, covers his face, folds into a deep slump and recovers.",
      "loop": false,
      "priority": 60,
      "phrases": [
        "A learning opportunity. Apparently.",
        "I’m going to need a smaller sigh.",
        "Let’s pretend that was a rehearsal.",
        "The button did what the button does.",
        "We can work with this."
      ]
    },
    {
      "id": "sit",
      "name": "Best seat",
      "category": "Environment",
      "description": "Rests his weight on the perch, looks around and gently swings his dangling feet.",
      "loop": true,
      "priority": 15,
      "phrases": [
        "Excellent view from here.",
        "I have claimed this button.",
        "Reserved seating for tiny colleagues.",
        "This is surprisingly comfortable.",
        "Perch acquired."
      ]
    },
    {
      "id": "climb",
      "name": "Up we go",
      "category": "Environment",
      "description": "Approaches, reaches up, twists through a pull-up and settles onto a marked button.",
      "loop": false,
      "priority": 50,
      "phrases": [
        "One small climb for Buddy.",
        "Taking things to another level.",
        "Upper management, here I come.",
        "A button with a view.",
        "No ladder? No problem."
      ]
    },
    {
      "id": "point",
      "name": "Over there",
      "category": "Everyday",
      "description": "Winds back, steps into a turn and points emphatically to the right.",
      "loop": false,
      "priority": 30,
      "phrases": [
        "That looks promising.",
        "May I direct your attention…",
        "This way for possibilities.",
        "A tiny gesture of assistance.",
        "I think we’re onto something."
      ]
    },
    {
      "id": "heart",
      "name": "Appreciation",
      "category": "Reactions",
      "description": "Cups his hands, rises to reveal a heart and follows it with his eyes.",
      "loop": false,
      "priority": 60,
      "phrases": [
        "You make a good teammate.",
        "Sending one locally generated good vibe.",
        "A little appreciation, just for you.",
        "Team human and tiny robot.",
        "Glad to be your Buddy."
      ]
    },
    {
      "id": "pushups",
      "name": "Tiny push-ups",
      "category": "Exercise",
      "description": "Lowers his body between planted hands, pushes up with planted toes and bending elbows.",
      "seconds": 8,
      "loop": true,
      "pack": "Exercise",
      "priority": 30,
      "isClimb": false,
      "managed": false,
      "phrases": [
        "One more rep. Allegedly."
      ]
    },
    {
      "id": "situps",
      "name": "Core business",
      "category": "Exercise",
      "description": "Lies back, curls up for two sit-ups and settles back onto his mat.",
      "seconds": 5.6,
      "loop": true,
      "pack": "Exercise",
      "priority": 30,
      "isClimb": false,
      "managed": false,
      "phrases": [
        "Working on my core functionality."
      ]
    },
    {
      "id": "military_squats",
      "name": "Yes, sergeant",
      "category": "Exercise",
      "description": "Stands to attention, squats with hands at his head and snaps upright.",
      "seconds": 8,
      "loop": true,
      "pack": "Exercise",
      "priority": 30,
      "isClimb": false,
      "managed": false,
      "phrases": [
        "Sir, yes, small robot sir."
      ]
    },
    {
      "id": "jumping_jacks",
      "name": "Jumping jacks",
      "category": "Exercise",
      "description": "Springs between a narrow stance and an arms-wide star pose.",
      "seconds": 7,
      "loop": true,
      "pack": "Exercise",
      "priority": 30,
      "isClimb": false,
      "managed": false,
      "phrases": [
        "Expanding my skill set. Literally."
      ]
    },
    {
      "id": "lunges",
      "name": "Taking big steps",
      "category": "Exercise",
      "description": "Steps into alternating deep forward lunges and pushes back to centre.",
      "seconds": 8,
      "loop": true,
      "pack": "Exercise",
      "priority": 30,
      "isClimb": false,
      "managed": false,
      "phrases": [
        "One giant step for tiny colleagues."
      ]
    },
    {
      "id": "plank",
      "name": "Plank of action",
      "category": "Exercise",
      "description": "Holds a low plank, starts trembling and rallies before lowering again.",
      "seconds": 9,
      "loop": true,
      "pack": "Exercise",
      "priority": 30,
      "isClimb": false,
      "managed": false,
      "phrases": [
        "This minute has lasted several years."
      ]
    },
    {
      "id": "mountain_climbers",
      "name": "Mountain mode",
      "category": "Exercise",
      "description": "Plants both hands and rapidly tucks each side of his body forward.",
      "seconds": 7,
      "loop": true,
      "pack": "Exercise",
      "priority": 30,
      "isClimb": false,
      "managed": false,
      "phrases": [
        "Summiting Mount Productivity."
      ]
    },
    {
      "id": "burpees",
      "name": "Burpee business",
      "category": "Exercise",
      "description": "Squats, kicks out into a push-up and springs into an overhead jump.",
      "seconds": 9,
      "loop": true,
      "pack": "Exercise",
      "priority": 30,
      "isClimb": false,
      "managed": false,
      "phrases": [
        "Who authorised this exercise?"
      ]
    },
    {
      "id": "high_knees",
      "name": "March of the Buddy",
      "category": "Exercise",
      "description": "Marches in place with exaggerated alternating knee lifts and arm pumps.",
      "seconds": 7,
      "loop": true,
      "pack": "Exercise",
      "priority": 30,
      "isClimb": false,
      "managed": false,
      "phrases": [
        "Tiny parade. Excellent attendance."
      ]
    },
    {
      "id": "star_jumps",
      "name": "Superstar jumps",
      "category": "Exercise",
      "description": "Compresses into a crouch, bursts into a star and lands softly.",
      "seconds": 7,
      "loop": true,
      "pack": "Exercise",
      "priority": 30,
      "isClimb": false,
      "managed": false,
      "phrases": [
        "A star is temporarily airborne."
      ]
    },
    {
      "id": "wallball_chest",
      "name": "Wall-ball: chest pass",
      "category": "Wall ball",
      "description": "Rests against the left wall, throws a chest pass and catches the rebound.",
      "seconds": 3.8,
      "loop": true,
      "pack": "Wall ball",
      "priority": 30,
      "isClimb": false,
      "managed": false,
      "phrases": [
        "Excellent conversation. Very solid replies."
      ]
    },
    {
      "id": "wallball_overarm",
      "name": "Wall-ball: overarm",
      "category": "Wall ball",
      "description": "Winds the ball over his shoulder, throws high and reaches for the return.",
      "seconds": 3.8,
      "loop": true,
      "pack": "Wall ball",
      "priority": 30,
      "isClimb": false,
      "managed": false,
      "phrases": [
        "The wall has an incredible return policy."
      ]
    },
    {
      "id": "wallball_trick",
      "name": "Wall-ball: bounce trick",
      "category": "Wall ball",
      "description": "Tries a low floor-to-wall bounce, fumbles the return and gathers it.",
      "seconds": 4.2,
      "loop": true,
      "pack": "Wall ball",
      "priority": 30,
      "isClimb": false,
      "managed": false,
      "phrases": [
        "Calculated. Including the wobble."
      ]
    },
    {
      "id": "climb_scramble",
      "name": "Climb: the scramble",
      "category": "Climbing",
      "description": "Grabs the ledge, slips, kicks frantically and hauls himself onto the top.",
      "seconds": 3.8,
      "loop": false,
      "pack": "Climbing",
      "priority": 55,
      "isClimb": true,
      "managed": true,
      "phrases": [
        "Nobody saw that first attempt."
      ]
    },
    {
      "id": "climb_hoist",
      "name": "Climb: mighty hoist",
      "category": "Climbing",
      "description": "Prepares dramatically, over-pulls and belly-flops onto his perch.",
      "seconds": 3.5,
      "loop": false,
      "pack": "Climbing",
      "priority": 55,
      "isClimb": true,
      "managed": true,
      "phrases": [
        "Upper-body confidence: excessive."
      ]
    },
    {
      "id": "climb_flip",
      "name": "Climb: over the top",
      "category": "Climbing",
      "description": "Swings from the edge, rolls over the ledge and sticks an over-proud landing.",
      "seconds": 4,
      "loop": false,
      "pack": "Climbing",
      "priority": 55,
      "isClimb": true,
      "managed": true,
      "phrases": [
        "The stylish route is rarely the short route."
      ]
    },
    {
      "id": "land_soft",
      "name": "Landing: soft touch",
      "category": "Landings",
      "description": "Jumps to the bottom of the viewport and absorbs the landing with a deep bend.",
      "seconds": 2.4,
      "loop": false,
      "pack": "Landings",
      "priority": 55,
      "isClimb": false,
      "managed": true,
      "phrases": [
        "Landing gear: mostly optimism."
      ]
    },
    {
      "id": "land_roll",
      "name": "Landing: tuck and roll",
      "category": "Landings",
      "description": "Jumps down, tucks into a forward roll and springs back upright.",
      "seconds": 3,
      "loop": false,
      "pack": "Landings",
      "priority": 55,
      "isClimb": false,
      "managed": true,
      "phrases": [
        "I meant to do that. This time."
      ]
    },
    {
      "id": "land_backflip",
      "name": "Landing: nearly nailed it",
      "category": "Landings",
      "description": "Lands, loses balance backwards and rolls back onto his feet.",
      "seconds": 3.4,
      "loop": false,
      "pack": "Landings",
      "priority": 55,
      "isClimb": false,
      "managed": true,
      "phrases": [
        "A flawless landing with bonus movement."
      ]
    },
    {
      "id": "umbrella_wait",
      "name": "Umbrella: false alarm",
      "category": "Weather",
      "description": "Opens an umbrella, waits, tilts it aside to check the empty sky, then puts it away.",
      "seconds": 10,
      "loop": false,
      "pack": "Weather",
      "priority": 30,
      "isClimb": false,
      "managed": false,
      "phrases": [
        "Prepared for a 0% chance of drama."
      ]
    },
    {
      "id": "umbrella_rain",
      "name": "Umbrella: right on cue",
      "category": "Weather",
      "description": "Opens an umbrella, shelters through a passing shower and checks the sky.",
      "seconds": 11,
      "loop": false,
      "pack": "Weather",
      "priority": 30,
      "isClimb": false,
      "managed": false,
      "phrases": [
        "A very local weather event."
      ]
    },
    {
      "id": "umbrella_escape",
      "name": "Umbrella: flight risk",
      "category": "Weather",
      "description": "Opens an umbrella, struggles with a gust and watches it sail away.",
      "seconds": 6,
      "loop": false,
      "pack": "Weather",
      "priority": 30,
      "isClimb": false,
      "managed": false,
      "phrases": [
        "My umbrella has accepted a remote position."
      ]
    },
    {
      "id": "wind_walk",
      "name": "Wind: determined",
      "category": "Weather",
      "description": "Leans into a gust, takes three small steps forward and slides one step back.",
      "seconds": 5.2,
      "loop": true,
      "pack": "Weather",
      "priority": 30,
      "isClimb": false,
      "managed": false,
      "phrases": [
        "Progress, with a headwind."
      ]
    },
    {
      "id": "wind_tumble",
      "name": "Wind: hold my ground",
      "category": "Weather",
      "description": "Takes determined forward steps, skids backwards briefly and marches forward again.",
      "seconds": 6,
      "loop": true,
      "pack": "Weather",
      "priority": 30,
      "isClimb": false,
      "managed": false,
      "phrases": [
        "Still technically moving forward."
      ]
    },
    {
      "id": "wind_fly",
      "name": "Wind: airborne Buddy",
      "category": "Weather",
      "description": "Fights forward, loses his grip and is blown beyond the screen before returning.",
      "seconds": 7,
      "loop": false,
      "pack": "Weather",
      "priority": 30,
      "isClimb": false,
      "managed": true,
      "phrases": [
        "I appear to have become a weather balloon."
      ]
    },
    {
      "id": "enter_door",
      "name": "Arrival: little door",
      "seconds": 3.4,
      "description": "A little door appears, opens, and Buddy steps out before it closes.",
      "category": "Arrivals & exits",
      "pack": "Transitions",
      "transition": true,
      "entry": true,
      "managed": true,
      "loop": false,
      "priority": 35,
      "phrases": [
        "Someone ordered a small colleague?"
      ]
    },
    {
      "id": "exit_door",
      "name": "Exit: little door",
      "seconds": 3.2,
      "description": "Buddy walks through a little door and closes it behind himself.",
      "category": "Arrivals & exits",
      "pack": "Transitions",
      "transition": true,
      "entry": false,
      "managed": true,
      "loop": false,
      "priority": 35,
      "phrases": [
        "I will see myself out. Literally."
      ]
    },
    {
      "id": "enter_portal",
      "name": "Arrival: portal",
      "seconds": 2.8,
      "description": "A glowing portal opens and Buddy steps through with a curious look.",
      "category": "Arrivals & exits",
      "pack": "Transitions",
      "transition": true,
      "entry": true,
      "managed": true,
      "loop": false,
      "priority": 35,
      "phrases": [
        "The commute was unusually purple."
      ]
    },
    {
      "id": "exit_portal",
      "name": "Exit: portal",
      "seconds": 2.6,
      "description": "Buddy opens a portal and disappears through it as the ring collapses.",
      "category": "Arrivals & exits",
      "pack": "Transitions",
      "transition": true,
      "entry": false,
      "managed": true,
      "loop": false,
      "priority": 35,
      "phrases": [
        "Taking the scenic shortcut."
      ]
    },
    {
      "id": "enter_drop",
      "name": "Arrival: special delivery",
      "seconds": 2.2,
      "description": "Drops from above the screen, compresses on landing and stands up.",
      "category": "Arrivals & exits",
      "pack": "Transitions",
      "transition": true,
      "entry": true,
      "managed": true,
      "loop": false,
      "priority": 35,
      "phrases": [
        "Gravity delivered me personally."
      ]
    },
    {
      "id": "enter_climb",
      "name": "Arrival: over the edge",
      "seconds": 3.1,
      "description": "Grips the bottom screen edge, pulls himself up and plants both feet.",
      "category": "Arrivals & exits",
      "pack": "Transitions",
      "transition": true,
      "entry": true,
      "managed": true,
      "loop": false,
      "priority": 35,
      "phrases": [
        "A little help? Never mind. Got it."
      ]
    },
    {
      "id": "enter_left",
      "name": "Arrival: from the left",
      "seconds": 2.7,
      "description": "Walks in from beyond the left screen edge and settles at his spot.",
      "category": "Arrivals & exits",
      "pack": "Transitions",
      "transition": true,
      "entry": true,
      "managed": true,
      "loop": false,
      "priority": 35,
      "phrases": [
        "Just casually arriving."
      ]
    },
    {
      "id": "enter_right",
      "name": "Arrival: from the right",
      "seconds": 2.7,
      "description": "Walks in from beyond the right screen edge and settles at his spot.",
      "category": "Arrivals & exits",
      "pack": "Transitions",
      "transition": true,
      "entry": true,
      "managed": true,
      "loop": false,
      "priority": 35,
      "phrases": [
        "The other entrance was busy."
      ]
    },
    {
      "id": "exit_left",
      "name": "Exit: stage left",
      "seconds": 2.4,
      "description": "Walks out beyond the left edge and remains offscreen.",
      "category": "Arrivals & exits",
      "pack": "Transitions",
      "transition": true,
      "entry": false,
      "managed": true,
      "loop": false,
      "priority": 35,
      "phrases": [
        "Tiny errands. Back when called."
      ]
    },
    {
      "id": "exit_right",
      "name": "Exit: stage right",
      "seconds": 2.4,
      "description": "Walks out beyond the right edge and remains offscreen.",
      "category": "Arrivals & exits",
      "pack": "Transitions",
      "transition": true,
      "entry": false,
      "managed": true,
      "loop": false,
      "priority": 35,
      "phrases": [
        "My work here is adorably done."
      ]
    },
    {
      "id": "happy_hops",
      "name": "Happy: popcorn hops",
      "category": "Happy",
      "seconds": 3.2,
      "loop": false,
      "description": "Three delighted little jumps, each with a springy landing.",
      "pack": "Behaviors",
      "surface": false,
      "priority": 30,
      "phrases": [
        "I have exceeded my recommended joy allowance."
      ]
    },
    {
      "id": "happy_clap",
      "name": "Happy: tiny applause",
      "category": "Happy",
      "seconds": 3.2,
      "loop": false,
      "description": "Claps his hands rapidly in front of his chest, then beams proudly.",
      "pack": "Behaviors",
      "surface": false,
      "priority": 30,
      "phrases": [
        "A standing ovation. Very short standing."
      ]
    },
    {
      "id": "happy_tippy",
      "name": "Happy: tippy taps",
      "category": "Happy",
      "seconds": 3.4,
      "loop": false,
      "description": "Does rapid excited foot taps with his hands tucked up beside his cheeks.",
      "pack": "Behaviors",
      "surface": false,
      "priority": 30,
      "phrases": [
        "My feet have received excellent news."
      ]
    },
    {
      "id": "happy_wiggle",
      "name": "Happy: jellybean wiggle",
      "category": "Happy",
      "seconds": 3.4,
      "loop": false,
      "description": "Wiggles his whole body like an overexcited jellybean.",
      "pack": "Behaviors",
      "surface": false,
      "priority": 30,
      "phrases": [
        "Containing my excitement: unsuccessful."
      ]
    },
    {
      "id": "happy_confetti",
      "name": "Happy: pocket party",
      "category": "Happy",
      "seconds": 3.8,
      "loop": false,
      "description": "Crouches, tosses confetti overhead, then tries to catch a piece.",
      "pack": "Behaviors",
      "surface": false,
      "priority": 30,
      "phrases": [
        "Emergency celebration supplies deployed."
      ]
    },
    {
      "id": "joke_snicker",
      "name": "Joke: private giggle",
      "category": "Jokes",
      "seconds": 5.8,
      "loop": false,
      "description": "Tells a random joke, covers his mouth and snickers to himself.",
      "pack": "Behaviors",
      "surface": false,
      "priority": 30,
      "phrases": [
        "Why did the laptop bring a blanket? It left its Windows open.",
        "I tried telling a UDP joke. I am not sure anyone got it.",
        "Why was the keyboard tired? Too many shifts.",
        "My computer asked for a break. I gave it a space.",
        "I told the printer a joke. It is still processing.",
        "I have a joke about construction. I am still building it.",
        "Why did the robot go on holiday? To recharge.",
        "I would tell you a cloud joke, but it might go over your head."
      ]
    },
    {
      "id": "joke_giggle",
      "name": "Joke: cannot contain it",
      "category": "Jokes",
      "seconds": 5.8,
      "loop": false,
      "description": "Delivers a joke, holds his tummy and shakes with laughter.",
      "pack": "Behaviors",
      "surface": false,
      "priority": 30,
      "phrases": [
        "Why did the laptop bring a blanket? It left its Windows open.",
        "I tried telling a UDP joke. I am not sure anyone got it.",
        "Why was the keyboard tired? Too many shifts.",
        "My computer asked for a break. I gave it a space.",
        "I told the printer a joke. It is still processing.",
        "I have a joke about construction. I am still building it.",
        "Why did the robot go on holiday? To recharge.",
        "I would tell you a cloud joke, but it might go over your head."
      ]
    },
    {
      "id": "joke_rofl",
      "name": "Joke: absolutely floored",
      "category": "Jokes",
      "seconds": 6.4,
      "loop": false,
      "description": "Tells a joke and rolls along the floor laughing before recovering.",
      "pack": "Behaviors",
      "surface": false,
      "priority": 30,
      "phrases": [
        "Why did the laptop bring a blanket? It left its Windows open.",
        "I tried telling a UDP joke. I am not sure anyone got it.",
        "Why was the keyboard tired? Too many shifts.",
        "My computer asked for a break. I gave it a space.",
        "I told the printer a joke. It is still processing.",
        "I have a joke about construction. I am still building it.",
        "Why did the robot go on holiday? To recharge.",
        "I would tell you a cloud joke, but it might go over your head."
      ]
    },
    {
      "id": "button_lean",
      "name": "Button: headphone break",
      "category": "Button interactions",
      "seconds": 5.2,
      "loop": true,
      "description": "Leans against the side of a registered button, wearing headphones and bobbing along.",
      "pack": "Behaviors",
      "surface": true,
      "priority": 30,
      "phrases": [
        "This button has excellent acoustics."
      ]
    },
    {
      "id": "button_sleep",
      "name": "Button: top bunk",
      "category": "Button interactions",
      "seconds": 6,
      "loop": true,
      "description": "Lies on top of a registered button and dozes with little sleepy breaths.",
      "pack": "Behaviors",
      "surface": true,
      "priority": 30,
      "phrases": [
        "Reserved seating. For sleeping."
      ]
    },
    {
      "id": "button_pose",
      "name": "Button: cover model",
      "category": "Button interactions",
      "seconds": 5.2,
      "loop": true,
      "description": "Reclines on the button and strikes an unnecessarily glamorous pose.",
      "pack": "Behaviors",
      "surface": true,
      "priority": 30,
      "phrases": [
        "Draw me like one of your dashboard widgets."
      ]
    },
    {
      "id": "button_toss",
      "name": "Button: idle toss",
      "category": "Button interactions",
      "seconds": 3.2,
      "loop": true,
      "description": "Reclines on a button, tosses a ball upwards and catches it in the same hand.",
      "pack": "Behaviors",
      "surface": true,
      "priority": 30,
      "phrases": [
        "Peak productivity. Peak ball."
      ]
    }
  ]
}
