Skip to content
This repository was archived by the owner on Jul 22, 2025. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ def index
LocalizedAiPersonaSerializer.new(persona, root: false)
end
tools =
DiscourseAi::AiBot::Personas::Persona.all_available_tools.map do |tool|
DiscourseAi::Personas::Persona.all_available_tools.map do |tool|
AiToolSerializer.new(tool, root: false)
end
AiTool
Expand Down
4 changes: 2 additions & 2 deletions app/jobs/regular/create_ai_chat_reply.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ def execute(args)
return if message.blank?

personaClass =
DiscourseAi::AiBot::Personas::Persona.find_by(id: args[:persona_id], user: message.user)
DiscourseAi::Personas::Persona.find_by(id: args[:persona_id], user: message.user)
return if personaClass.blank?

user = User.find_by(id: personaClass.user_id)
bot = DiscourseAi::AiBot::Bot.as(user, persona: personaClass.new)
bot = DiscourseAi::Personas::Bot.as(user, persona: personaClass.new)

DiscourseAi::AiBot::Playground.new(bot).reply_to_chat_message(
message,
Expand Down
8 changes: 4 additions & 4 deletions app/jobs/regular/create_ai_reply.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ def execute(args)
persona_id = args[:persona_id]

begin
persona = DiscourseAi::AiBot::Personas::Persona.find_by(user: post.user, id: persona_id)
raise DiscourseAi::AiBot::Bot::BOT_NOT_FOUND if persona.nil?
persona = DiscourseAi::Personas::Persona.find_by(user: post.user, id: persona_id)
raise DiscourseAi::Personas::Bot::BOT_NOT_FOUND if persona.nil?

bot = DiscourseAi::AiBot::Bot.as(bot_user, persona: persona.new)
bot = DiscourseAi::Personas::Bot.as(bot_user, persona: persona.new)

DiscourseAi::AiBot::Playground.new(bot).reply_to(post)
rescue DiscourseAi::AiBot::Bot::BOT_NOT_FOUND
rescue DiscourseAi::Personas::Bot::BOT_NOT_FOUND
Rails.logger.warn(
"Bot not found for post #{post.id} - perhaps persona was deleted or bot was disabled",
)
Expand Down
2 changes: 1 addition & 1 deletion app/jobs/regular/stream_discover_reply.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ def execute(args)
return if (llm_model = LlmModel.find_by(id: ai_persona_klass.default_llm_id)).nil?

bot =
DiscourseAi::AiBot::Bot.as(
DiscourseAi::Personas::Bot.as(
Discourse.system_user,
persona: ai_persona_klass.new,
model: llm_model,
Expand Down
8 changes: 4 additions & 4 deletions app/models/ai_persona.rb
Original file line number Diff line number Diff line change
Expand Up @@ -201,14 +201,14 @@ def class_instance
if inner_name.start_with?("custom-")
custom_tool_id = inner_name.split("-", 2).last.to_i
if AiTool.exists?(id: custom_tool_id, enabled: true)
klass = DiscourseAi::AiBot::Tools::Custom.class_instance(custom_tool_id)
klass = DiscourseAi::Personas::Tools::Custom.class_instance(custom_tool_id)
end
else
inner_name = inner_name.gsub("Tool", "")
inner_name = "List#{inner_name}" if %w[Categories Tags].include?(inner_name)

begin
klass = "DiscourseAi::AiBot::Tools::#{inner_name}".constantize
klass = "DiscourseAi::Personas::Tools::#{inner_name}".constantize
options[klass] = current_options if current_options
rescue StandardError
end
Expand All @@ -218,7 +218,7 @@ def class_instance
klass
end

persona_class = DiscourseAi::AiBot::Personas::Persona.system_personas_by_id[self.id]
persona_class = DiscourseAi::Personas::Persona.system_personas_by_id[self.id]
if persona_class
instance_attributes.each do |key, value|
# description/name are localized
Expand All @@ -230,7 +230,7 @@ def class_instance

ai_persona_id = self.id

Class.new(DiscourseAi::AiBot::Personas::Persona) do
Class.new(DiscourseAi::Personas::Persona) do
instance_attributes.each { |key, value| define_singleton_method(key) { value } }

define_singleton_method(:to_s) do
Expand Down
6 changes: 3 additions & 3 deletions db/fixtures/ai_bot/603_bot_ai_personas.rb
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
# frozen_string_literal: true

DiscourseAi::AiBot::Personas::Persona.system_personas.each do |persona_class, id|
DiscourseAi::Personas::Persona.system_personas.each do |persona_class, id|
persona = AiPersona.find_by(id: id)
if !persona
persona = AiPersona.new
persona.id = id
if persona_class == DiscourseAi::AiBot::Personas::WebArtifactCreator
if persona_class == DiscourseAi::Personas::WebArtifactCreator
# this is somewhat sensitive, so we default it to staff
persona.allowed_group_ids = [Group::AUTO_GROUPS[:staff]]
else
persona.allowed_group_ids = [Group::AUTO_GROUPS[:trust_level_0]]
end
persona.enabled = true
persona.priority = true if persona_class == DiscourseAi::AiBot::Personas::General
persona.priority = true if persona_class == DiscourseAi::Personas::General
end

names = [
Expand Down
5 changes: 2 additions & 3 deletions lib/ai_bot/entry_point.rb
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ def inject_into(plugin)
scope.user.in_any_groups?(SiteSetting.ai_bot_allowed_groups_map)
end,
) do
DiscourseAi::AiBot::Personas::Persona
DiscourseAi::Personas::Persona
.all(user: scope.user)
.map do |persona|
{
Expand Down Expand Up @@ -205,8 +205,7 @@ def inject_into(plugin)
include_condition: -> { SiteSetting.ai_bot_enabled && object.topic.private_message? },
) do
id = topic.custom_fields["ai_persona_id"]
name =
DiscourseAi::AiBot::Personas::Persona.find_by(user: scope.user, id: id.to_i)&.name if id
name = DiscourseAi::Personas::Persona.find_by(user: scope.user, id: id.to_i)&.name if id
name || topic.custom_fields["ai_persona"]
end

Expand Down
19 changes: 0 additions & 19 deletions lib/ai_bot/personas/creative.rb

This file was deleted.

Loading