Class: Assistant::TechnicalArticleManagementToolBuilder::RemoveRelatedMaterialTool
- Inherits:
-
ManagementTool
- Object
- RubyLLM::Tool
- ManagementTool
- Assistant::TechnicalArticleManagementToolBuilder::RemoveRelatedMaterialTool
- Defined in:
- app/services/assistant/technical_article_management_tool_builder.rb
Overview
Removes one curated link from a current draft.
Instance Method Summary collapse
-
#execute(id:, edit_token:, content_link_id: nil, content_link_key: nil) ⇒ String
JSON removal 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:, edit_token:, content_link_id: nil, content_link_key: nil) ⇒ String
Returns JSON removal result.
777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 |
# File 'app/services/assistant/technical_article_management_tool_builder.rb', line 777 def execute(id:, edit_token:, content_link_id: nil, content_link_key: nil, **) safely('remove related material') do raise ToolError, 'Provide content_link_id or content_link_key.' if content_link_id.blank? && content_link_key.blank? (id, edit_token) do |article, revision| if revision require_actor! preferred_id = content_link_key.present? ? nil : content_link_id removed = revision.unstage_content_link!(key: content_link_key, id: preferred_id) return revision_response( article, revision, { removed_content_link_id: removed['id'], removed_content_link_key: removed['key'] }.compact ) end raise ToolError, 'A live ContentLink ID is required for a new draft.' if content_link_id.blank? link = article.outbound_content_links.find(content_link_id) raise ToolError, 'Consolidation source links are workflow-managed and cannot be removed directly.' if link.workflow_managed? link.destroy! article.update!(updater_id: require_actor!.id, updated_at: Time.current) return response(article, removed_content_link_id: content_link_id.to_i) end end end |
#name ⇒ String
Returns stable tool name.
770 |
# File 'app/services/assistant/technical_article_management_tool_builder.rb', line 770 def name = 'remove_technical_article_related_material' |