Class: Assistant::TechnicalArticleManagementToolBuilder::TransitionTool
- Inherits:
-
ManagementTool
- Object
- RubyLLM::Tool
- ManagementTool
- Assistant::TechnicalArticleManagementToolBuilder::TransitionTool
- Defined in:
- app/services/assistant/technical_article_management_tool_builder.rb
Overview
Applies only defined state-machine events.
Instance Method Summary collapse
-
#execute(id:, event:, confirm: false) ⇒ String
JSON transition result.
-
#name ⇒ String
Stable tool name.
Methods inherited from ManagementTool
Constructor Details
This class inherits a constructor from Assistant::TechnicalArticleManagementToolBuilder::ManagementTool
Instance Method Details
#execute(id:, event:, confirm: false) ⇒ String
Returns JSON transition result.
659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 |
# File 'app/services/assistant/technical_article_management_tool_builder.rb', line 659 def execute(id:, event:, confirm: false, **) safely('transition') do event = event.to_s raise ToolError, "Unknown Technical Article event: #{event}." unless event.in?(TRANSITION_EVENTS) article = find_article!(id) action = event.in?(APPROVAL_EVENTS) ? :approve : :update (action, article) raise ToolError, "Set confirm=true to #{event} Technical Article ##{article.id}." if event.in?(CONFIRMATION_EVENTS) && confirm != true if event == 'archive' && (replacement = article.active_replacement_draft) raise ToolError, "Review active replacement draft ##{replacement.id} before archiving." end raise ToolError, "Cannot #{event} a Technical Article in #{article.state} state." unless article.public_send(:"can_#{event}?") article.updater_id = require_actor!.id article.public_send(:"#{event}!") response(article, transition: event) end end |
#name ⇒ String
Returns stable tool name.
653 |
# File 'app/services/assistant/technical_article_management_tool_builder.rb', line 653 def name = 'transition_technical_article' |