BREAKING CHANGES: - Relationship syntax now requires blocks for all participants - Removed self/other perspective blocks from relationships - Replaced 'guard' keyword with 'if' for behavior tree decorators Language Features: - Add tree-sitter grammar with improved if/condition disambiguation - Add comprehensive tutorial and reference documentation - Add SBIR v0.2.0 binary format specification - Add resource linking system for behaviors and schedules - Add year-long schedule patterns (day, season, recurrence) - Add behavior tree enhancements (named nodes, decorators) Documentation: - Complete tutorial series (9 chapters) with baker family examples - Complete reference documentation for all language features - SBIR v0.2.0 specification with binary format details - Added locations and institutions documentation Examples: - Convert all examples to baker family scenario - Add comprehensive working examples Tooling: - Zed extension with LSP integration - Tree-sitter grammar for syntax highlighting - Build scripts and development tools Version Updates: - Main package: 0.1.0 → 0.2.0 - Tree-sitter grammar: 0.1.0 → 0.2.0 - Zed extension: 0.1.0 → 0.2.0 - Storybook editor: 0.1.0 → 0.2.0
14 KiB
14 KiB
Baker Family Complete
This example demonstrates a complete Storybook project modeling Martha's bakery and the people around it. It showcases all major language features working together.
Project Structure
baker-family/
schema/
core_enums.sb # Enum definitions
templates.sb # Reusable templates
beings.sb # Species definitions
world/
characters/
martha.sb # Martha, master baker
jane.sb # Jane, pastry specialist
elena.sb # Elena, apprentice
gregory.sb # Gregory, regular customer
family.sb # David, Tommy, Emma
behaviors/
bakery_behaviors.sb
relationships/
bakery_relationships.sb
locations/
bakery_places.sb
institutions/
bakery_institutions.sb
schedules/
bakery_schedules.sb
Schema Layer
Enums
// schema/core_enums.sb
enum SkillLevel {
novice,
beginner,
intermediate,
advanced,
expert,
master
}
enum Specialty {
sourdough,
pastries,
cakes,
general,
bread
}
enum Confidence {
timid,
uncertain,
growing,
steady,
confident,
commanding
}
enum DayPart {
early_morning,
morning,
midday,
afternoon,
evening,
night
}
Species
// schema/beings.sb
species Human {
lifespan: 80
---description
Bipedal mammals with complex language and tool use.
---
}
species Cat {
lifespan: 15
---description
Domestic cats often found in bakeries for pest control
and companionship.
---
}
Templates
// schema/templates.sb
template SkilledWorker {
skill_level: SkillLevel
confidence: Confidence
years_experience: 0..50
can_work_independently: false
}
template Baker {
include SkilledWorker
specialty: Specialty
recipes_mastered: 0..200
sourdough_starter_health: 0.0..1.0
}
template BusinessOwner {
include SkilledWorker
revenue_monthly: 0..100000
employees: 0..20
years_in_business: 0..50
}
template Apprentice {
include SkilledWorker
skill_level: novice
confidence: timid
mentor: string
dedication: 0.0..1.0
}
Characters
Martha
// world/characters/martha.sb
use schema::core_enums::{SkillLevel, Specialty, Confidence};
use schema::templates::{Baker, BusinessOwner};
use schema::beings::Human;
character Martha: Human from Baker, BusinessOwner {
uses behaviors: [
{ tree: BakerMorningRoutine },
{ tree: HandleEmergency, when: emergency_detected, priority: critical }
]
age: 34
specialty: sourdough
skill_level: master
confidence: commanding
recipes_mastered: 85
years_experience: 22
sourdough_starter_health: 0.95
revenue_monthly: 12000
employees: 3
years_in_business: 8
---backstory
Martha learned to bake from her grandmother, starting at age twelve.
By twenty she had won regional competitions. At twenty-six she opened
her own bakery, which quickly became the most popular in town. Her
sourdough is legendary -- she maintains a starter that is fifteen
years old.
---
}
life_arc MarthaCareerArc {
---description
Tracks Martha's evolution from established baker to community leader.
---
state running_bakery {
on enter {
Martha.confidence: commanding
Martha.skill_level: master
}
on employees > 5 -> expanding
}
state expanding {
on enter {
Martha.revenue_monthly: 20000
}
on second_location_opened -> community_leader
}
state community_leader {
on enter {
Martha.can_teach: true
Martha.mentors_count: 3
}
---narrative
Martha's bakery has become a training ground for the next
generation of bakers. She sits on the guild board and her
sourdough recipe is studied at culinary schools.
---
}
}
Jane
// world/characters/jane.sb
use schema::core_enums::{SkillLevel, Specialty, Confidence};
use schema::templates::Baker;
use schema::beings::Human;
character Jane: Human from Baker {
age: 36
specialty: pastries
skill_level: expert
confidence: confident
recipes_mastered: 120
years_experience: 18
can_work_independently: true
---backstory
Jane trained at a prestigious culinary school before joining
Martha's bakery as co-owner. Where Martha excels at bread, Jane
is a pastry artist. Her croissants draw customers from three
towns over.
---
---appearance
A focused woman with flour-dusted apron and steady hands.
Known for her intricate pastry decorations and precise
temperature control.
---
}
Elena
// world/characters/elena.sb
use schema::core_enums::{SkillLevel, Confidence};
use schema::templates::Apprentice;
use schema::beings::Human;
character Elena: Human from Apprentice {
age: 16
skill_level: novice
confidence: timid
mentor: "Martha"
dedication: 0.9
natural_talent: 0.8
recipes_mastered: 2
---backstory
Elena comes from a family of farmers who could never afford to
buy bread from the bakery. When Martha offered her an apprenticeship,
she jumped at the chance to learn a trade.
---
}
life_arc ElenaCareer {
---description
Tracks Elena's progression from nervous apprentice to confident
master baker. Each state represents a key phase of her career.
---
state early_apprentice {
on enter {
Elena.skill_level: novice
Elena.confidence: timid
}
on recipes_mastered > 5 -> growing_apprentice
---narrative
Elena's hands shake as she measures flour. She checks the
recipe three times before adding each ingredient. Martha
patiently corrects her technique.
---
}
state growing_apprentice {
on enter {
Elena.skill_level: beginner
Elena.confidence: uncertain
}
on recipes_mastered > 15 -> journeyman
---narrative
The shaking stops. Elena can make basic breads without
looking at the recipe. She still doubts herself but
Martha's encouragement is taking root.
---
}
state journeyman {
on enter {
Elena.skill_level: intermediate
Elena.confidence: growing
Elena.can_work_independently: true
}
on recipes_mastered > 30 -> senior_journeyman
---narrative
Elena runs the morning shift alone while Martha handles
special orders. Customers start asking for "Elena's rolls."
She begins experimenting with her own recipes.
---
}
state senior_journeyman {
on enter {
Elena.skill_level: advanced
Elena.confidence: steady
}
on recipes_mastered > 50 -> master
---narrative
Elena develops her signature recipe: rosemary olive bread
that becomes the bakery's bestseller. She handles difficult
customers with grace and trains new helpers.
---
}
state master {
on enter {
Elena.skill_level: master
Elena.confidence: commanding
Elena.can_teach: true
}
---narrative
Master Baker Elena. She has earned it. The guild acknowledges
her mastery, and Martha beams with pride. Elena begins
mentoring her own apprentice.
---
}
}
Gregory
// world/characters/gregory.sb
use schema::beings::Human;
character Gregory: Human {
age: 68
occupation: "retired_teacher"
always_orders: "sourdough_loaf"
visits_daily: true
years_as_customer: 15
knows_everyone: true
---backstory
Gregory has been buying Martha's bread every morning for
fifteen years. Their brief daily exchanges about the weather
and local gossip are a comforting routine for both of them.
---
}
Behaviors
// world/behaviors/bakery_behaviors.sb
behavior BakerMorningRoutine {
---description
Martha's morning routine: prepare dough step by step,
from mixing to shaping to baking.
---
then morning_baking {
// Start with sourdough
then prepare_starter {
CheckStarter
FeedStarter
WaitForActivity
}
// Mix the dough
then mix_dough {
MeasureFlour
AddWater
IncorporateStarter
}
// Knead and shape
then shape_loaves {
KneadDough
FirstRise
ShapeLoaves
}
// Bake
then bake {
PreHeatOven
LoadLoaves
MonitorBaking
}
}
}
behavior CustomerServiceLoop {
---description
The bakery's continuous customer service loop. Uses infinite
repeat decorator to serve customers throughout the day.
---
repeat {
then service_cycle {
// Check for customers
choose service_mode {
then serve_waiting {
if(customer_waiting)
GreetCustomer
TakeOrder
}
then restock_display {
if(display_low)
FetchFromKitchen
ArrangeOnShelves
}
}
// Process payment
CollectPayment
ThankCustomer
// Brief pause between customers
timeout(5s) {
CleanCounter
}
PrepareForNextCustomer
}
}
}
Relationships
// world/relationships/bakery_relationships.sb
relationship MarthaAndGregory {
Martha {
role: shopkeeper
values_loyalty: 0.9
---perspective
Martha appreciates Gregory's unwavering loyalty. He has
been buying her sourdough loaf every morning for fifteen
years. Their brief daily exchanges about the weather and
local gossip are a comforting routine.
---
}
Gregory {
role: regular_customer
always_orders: "sourdough_loaf"
---perspective
Gregory considers Martha's bakery a cornerstone of his
daily routine. The bread is excellent, but it is the brief
human connection that keeps him coming back.
---
}
}
relationship MentorApprentice {
Martha {
role: mentor
teaching_style: "patient"
investment: 0.9
---perspective
Martha sees Elena as the daughter she might have had in
the trade. She recognizes the same passion she felt at
that age and pushes Elena harder because she knows the
talent is there. Every correction comes from love.
---
}
Elena {
role: apprentice
dedication: 0.9
anxiety: 0.4
---perspective
Elena idolizes Martha's skill but fears disappointing
her. Every morning she arrives thirty minutes early to
practice techniques before Martha gets in. She keeps a
notebook of every correction, reviewing them each night.
---
}
bond: 0.85
}
relationship BakeryPartnership {
Martha {
role: co_owner
specialty: "bread"
handles_finances: true
---perspective
Martha and Jane complement each other perfectly. Martha
handles the bread and business side while Jane creates
the pastries that draw customers in. Together they have
built something neither could alone.
---
}
Jane {
role: co_owner
specialty: "pastries"
handles_creativity: true
---perspective
Jane considers Martha the steady foundation of their
partnership. While Jane experiments and creates, Martha
ensures the bakery runs like clockwork. Their different
strengths make the bakery stronger.
---
}
bond: 0.9
}
Locations
// world/locations/bakery_places.sb
location MarthasBakery {
type: "commercial"
established: "2018"
square_feet: 1200
has_kitchen: true
has_storefront: true
seating_capacity: 12
---description
A warm, inviting bakery on Main Street. The aroma of fresh
bread wafts out the door every morning at 4 AM. Exposed brick
walls, a glass display case, and a view into the kitchen where
customers can watch the bakers at work.
---
}
location FarmersMarket {
type: "outdoor_market"
operates_on: "saturday"
stalls: 30
foot_traffic: "high"
---description
The weekly Saturday market where Martha sells her bread directly
to the community. Her stall is always the first to sell out.
---
}
location BakeryKitchen {
type: "commercial_kitchen"
ovens: 3
prep_stations: 4
walk_in_cooler: true
---description
The heart of the bakery. Three professional ovens line the back
wall, each at a different temperature for different breads. The
sourdough starter sits on a shelf near the warmest oven, bubbling
contentedly in its ceramic crock.
---
}
Institutions
// world/institutions/bakery_institutions.sb
institution BakersGuild {
type: professional_guild
members: 45
founded: "1952"
meets_monthly: true
---description
The local bakers' guild that sets quality standards, organizes
competitions, and mentors apprentices. Martha has been a board
member for three years.
---
}
Key Takeaways
This example demonstrates:
- Layered architecture: Schema (types) separated from world (instances)
- Species + Templates:
Humanspecies combined withBakerandBusinessOwnertemplates - Rich behavior trees: Morning routine and customer service with choose, then, and repeat
- Asymmetric relationships: Martha and Elena see their mentorship differently
- Life arcs: Elena's career journey modeled as a state machine
- Prose everywhere: Every declaration includes narrative context
Cross-References
- Tutorial - Step-by-step learning
- Characters Reference - Character syntax
- Behavior Trees Reference - Behavior syntax