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
This commit is contained in:
210
design/behavior-tree-implementation-status.md
Normal file
210
design/behavior-tree-implementation-status.md
Normal file
@@ -0,0 +1,210 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user