Files
assistant-storefront/enterprise/lib/captain/tools/add_private_note_tool.rb

34 lines
980 B
Ruby
Raw Normal View History

class Captain::Tools::AddPrivateNoteTool < Captain::Tools::BasePublicTool
description 'Add a private note to a conversation'
param :note, type: 'string', desc: 'The private note content'
def perform(tool_context, note:)
conversation = find_conversation(tool_context.state)
return 'Conversation not found' unless conversation
return 'Note content is required' if note.blank?
log_tool_usage('add_private_note', { conversation_id: conversation.id, note_length: note.length })
create_private_note(conversation, note)
'Private note added successfully'
end
private
def create_private_note(conversation, note)
conversation.messages.create!(
account: @assistant.account,
inbox: conversation.inbox,
sender: @assistant,
message_type: :outgoing,
content: note,
private: true
)
end
def permissions
%w[conversation_manage conversation_unassigned_manage conversation_participating_manage]
end
end