Class: Collavre::Creatives::TreeFormatter
- Inherits:
-
Object
- Object
- Collavre::Creatives::TreeFormatter
- Defined in:
- app/services/collavre/creatives/tree_formatter.rb
Overview
Compact markdown tree formatter for AI Agent consumption. Used by: creative_retrieval_service, GeminiParentRecommender, Agent context injection.
Output format (header declared once, rows are values only):
<!-- format: [id] description (progress%) -->
- [123] My Task (50%)
- [124] Subtask A (100%)
- [125] Subtask B (0%)
Options:
max_depth: Max tree depth (nil = unlimited)
include_header: Include format comment header (default: true)
include_comments: Include recent comments per node (default: false)
use_permissions: Use permission-filtered children (default: true)
Class Method Summary collapse
-
.plain_description(creative) ⇒ Object
Extract plain text description from a creative (shared helper).
Instance Method Summary collapse
- #format(creatives) ⇒ Object
-
#initialize(max_depth: nil, include_header: true, include_comments: false, use_permissions: true) ⇒ TreeFormatter
constructor
A new instance of TreeFormatter.
Constructor Details
#initialize(max_depth: nil, include_header: true, include_comments: false, use_permissions: true) ⇒ TreeFormatter
Returns a new instance of TreeFormatter.
18 19 20 21 22 23 |
# File 'app/services/collavre/creatives/tree_formatter.rb', line 18 def initialize(max_depth: nil, include_header: true, include_comments: false, use_permissions: true) @max_depth = max_depth @include_header = include_header @include_comments = include_comments @use_permissions = end |
Class Method Details
.plain_description(creative) ⇒ Object
Extract plain text description from a creative (shared helper)
38 39 40 41 |
# File 'app/services/collavre/creatives/tree_formatter.rb', line 38 def self.plain_description(creative) raw = creative.effective_description(nil, true) ActionView::Base.full_sanitizer.sanitize(raw).strip end |
Instance Method Details
#format(creatives) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 |
# File 'app/services/collavre/creatives/tree_formatter.rb', line 25 def format(creatives) roots = Array(creatives) lines = [] lines << "<!-- format: [id] description (progress%) -->" if @include_header roots.each do |root| format_node(root, 0, lines) end lines.join("\n") end |