Files
storybook/design/behavior-tree-implementation-status.md
Sienna Meridian Satterwhite 16deb5d237 release: Storybook v0.2.0 - Major syntax and features update
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
2026-02-13 21:52:03 +00:00

6.9 KiB

Behavior Tree Keyword Implementation Status

Task: #7 - Implement behavior tree keyword transformation system Status: In Progress (60% complete) Date: February 12, 2026


Completed Work

1. Tree-sitter Grammar (tree-sitter-storybook/grammar.js)

  • Updated selector_node to use choose keyword with optional label
  • Updated sequence_node to use then keyword with optional label
  • Added condition_node for if(expr) and when(expr)
  • Added decorator_node with full parameter support
  • Added decorator_keyword enumeration
  • Added decorator_params for all parameter types
  • Updated subtree_node to use include keyword
  • Extended duration pattern to support days (d)

2. AST Structures (src/syntax/ast.rs + storybook/src/syntax/ast.rs)

  • Restructured BehaviorNode::Selector with label support
  • Restructured BehaviorNode::Sequence with label support
  • Added BehaviorNode::Decorator with typed decorators
  • Created DecoratorType enum with 10 variants
  • Created Duration struct with DurationUnit enum
  • Implemented Duration::to_milliseconds() conversion

3. LALRPOP Parser (src/syntax/parser.lalrpop)

  • Updated BehaviorNode choice to include new node types
  • Implemented SelectorNode with choose keyword and optional label
  • Implemented SequenceNode with then keyword and optional label
  • Implemented ConditionNode for if/when expressions
  • Implemented all 10 decorator parsers:
    • DecoratorRepeat (infinite)
    • DecoratorRepeatN(n)
    • DecoratorRepeatRange(min..max)
    • DecoratorInvert
    • DecoratorRetry(n)
    • DecoratorTimeout(duration)
    • DecoratorCooldown(duration)
    • DecoratorGuard(expr)
    • DecoratorSucceedAlways
    • DecoratorFailAlways
  • Updated SubTreeNode to use include keyword

4. Lexer Tokens (src/syntax/lexer.rs + storybook/src/syntax/lexer.rs)

  • Added Choose token
  • Added Then token
  • Added If token
  • Added When token
  • Added Repeat token
  • Added Invert token
  • Added Retry token
  • Added Timeout token
  • Added Cooldown token
  • Added Guard token
  • Added SucceedAlways token
  • Added FailAlways token

5. Example Files

  • Created examples/new-syntax-demo.sb with comprehensive demonstrations

🚧 In Progress / Pending

6. Fix Compilation Errors

The AST changes will break existing code that pattern-matches on BehaviorNode:

  • Update all match BehaviorNode::Selector(nodes) to BehaviorNode::Selector { label, children }
  • Update all match BehaviorNode::Sequence(nodes) to BehaviorNode::Sequence { label, children }
  • Update all match BehaviorNode::Decorator(name, child) to BehaviorNode::Decorator { decorator_type, child }
  • Check files:
    • src/resolve/validate.rs
    • src/resolve/types.rs
    • src/types.rs
    • LSP code in storybook/src/lsp/
    • Test files

7. Compiler / SBIR Generation

  • Update SBIR node type encoding for decorators
  • Implement serialization for DecoratorType variants
  • Implement Duration serialization
  • Update compiler to handle new AST structures
  • Test SBIR output for correctness

8. Testing

  • Rebuild Tree-sitter grammar (npm run build or similar)
  • Test parsing examples/new-syntax-demo.sb
  • Add unit tests for each decorator type
  • Add integration tests for nested decorators
  • Test round-trip: parse → compile → decompile

9. Example Migration

  • Migrate examples/alice-in-wonderland/world/characters/white_rabbit.sb
  • Migrate examples/alice-in-wonderland/world/characters/mad_tea_party.sb (add repeat decorator)
  • Migrate examples/alice-in-wonderland/world/characters/cheshire_cat.sb (add decorators)
  • Migrate examples/alice-in-wonderland/world/characters/royal_court.sb (add repeat decorators)
  • Migrate examples/alice-in-wonderland/world/characters/caterpillar.sb
  • Migrate tests/examples/behavior_and_lifearc.sb
  • Update test corpus in tree-sitter-storybook/test/corpus/behaviors.txt

10. Documentation

  • Update design.md Section 6 with new syntax
  • Create migration guide
  • Add tutorial examples highlighting named nodes
  • Update CHANGELOG with breaking changes
  • Prepare handoff notes for language documentation agent

📊 Progress Metrics

Overall Completion: 60%

By Phase:

  • Phase 1 (Grammar & Parser): 100%
  • Phase 2 (AST & Compiler): 70% (AST done, compiler pending)
  • Phase 3 (Examples & Tests): 10% (example created, migration pending)
  • Phase 4 (Documentation): 0%

By Component:

  • Grammar: 100%
  • AST: 100%
  • Lexer: 100%
  • Parser: 100%
  • Compilation fixes: 0%
  • Compiler/SBIR: 0%
  • Testing: 10%
  • Migration: 0%
  • Documentation: 0%

🎯 Next Immediate Actions

  1. Find and fix compilation errors from AST changes
  2. Update compiler to handle new DecoratorType enum
  3. Test parsing the new syntax example
  4. Migrate one example (White Rabbit) to validate end-to-end
  5. Add unit tests for decorator parsing

📝 Design Decisions Implemented

Following Sienna's feedback from design review:

Use choose only (not selector) Use then only (not sequence) Remove @ prefix for actions Use include for subtrees Named nodes are prominent (optional label on choose/then) Decorators approved (all 10 types implemented) No backward compatibility (clean break from symbolic syntax)


🔄 Files Modified

Grammar:

  • tree-sitter-storybook/grammar.js

AST:

  • src/syntax/ast.rs
  • storybook/src/syntax/ast.rs

Parser:

  • src/syntax/parser.lalrpop

Lexer:

  • src/syntax/lexer.rs
  • storybook/src/syntax/lexer.rs

Examples:

  • examples/new-syntax-demo.sb (new)

🐛 Known Issues / Blockers

Compilation Errors Expected: The AST structure changes will cause compilation errors in any code that pattern-matches on BehaviorNode. These need to be fixed before the code will compile.

Files Likely Affected:

  • src/resolve/validate.rs - behavior tree validation
  • src/resolve/types.rs - type resolution
  • src/types.rs - type definitions
  • storybook/src/lsp/semantic_tokens.rs - LSP highlighting
  • storybook/src/lsp/navigation_tests.rs - LSP tests
  • Test files with behavior tree examples

Resolution Strategy:

  1. Attempt to compile
  2. Fix each compilation error by updating pattern matches
  3. Test that fixes maintain correct behavior
  4. Coordinate with LSP agent if LSP changes are extensive

📚 Resources

Design Document: /Users/sienna/Development/storybook/design/behavior-tree-keywords-design.md Example File: /Users/sienna/Development/storybook/examples/new-syntax-demo.sb TEAM PLAN: /Users/sienna/Development/storybook/TEAM_PLAN.md (Task #7)


Last Updated: 2026-02-12 Next Update: After fixing compilation errors