diff --git a/enterprise/app/jobs/captain/conversation/response_builder_job.rb b/enterprise/app/jobs/captain/conversation/response_builder_job.rb index 25832f991..fa511bab2 100644 --- a/enterprise/app/jobs/captain/conversation/response_builder_job.rb +++ b/enterprise/app/jobs/captain/conversation/response_builder_job.rb @@ -27,7 +27,7 @@ class Captain::Conversation::ResponseBuilderJob < ApplicationJob def generate_and_process_response @response = if captain_v2_enabled? - Captain::Assistant::AgentRunnerService.new(assistant: @assistant, user: find_conversation_user).generate_response( + Captain::Assistant::AgentRunnerService.new(assistant: @assistant).generate_response( message_history: collect_previous_messages ) else @@ -114,13 +114,4 @@ class Captain::Conversation::ResponseBuilderJob < ApplicationJob def captain_v2_enabled? true end - - def find_conversation_user - # TODO: IMPORTANT - The assistant agents are user-facing and their tools should NOT need permission limits. - # The tools themselves must be built to ensure they don't perform any wrong/harmful actions. - # Currently returning first admin as a temporary solution. - # Future: Consider creating a dedicated system user for assistant operations. - - account.administrators.first - end end diff --git a/enterprise/app/models/captain/scenario.rb b/enterprise/app/models/captain/scenario.rb index ea2729a1c..94e6411db 100644 --- a/enterprise/app/models/captain/scenario.rb +++ b/enterprise/app/models/captain/scenario.rb @@ -54,8 +54,8 @@ class Captain::Scenario < ApplicationRecord "#{title} Agent".titleize end - def agent_tools(user) - resolved_tools.map { |tool| self.class.resolve_tool_class(tool[:id]) }.map { |tool| tool.new(assistant, user: user) } + def agent_tools + resolved_tools.map { |tool| self.class.resolve_tool_class(tool[:id]) }.map { |tool| tool.new(assistant) } end def resolved_instructions diff --git a/enterprise/app/models/concerns/agentable.rb b/enterprise/app/models/concerns/agentable.rb index 91f0a2c46..2df4d5e18 100644 --- a/enterprise/app/models/concerns/agentable.rb +++ b/enterprise/app/models/concerns/agentable.rb @@ -36,7 +36,7 @@ module Agentable self.class.name.demodulize.underscore end - def agent_tools(_user) + def agent_tools [] # Default implementation, override if needed end diff --git a/enterprise/app/services/captain/assistant/agent_runner_service.rb b/enterprise/app/services/captain/assistant/agent_runner_service.rb index fa9a0807f..dea53fa23 100644 --- a/enterprise/app/services/captain/assistant/agent_runner_service.rb +++ b/enterprise/app/services/captain/assistant/agent_runner_service.rb @@ -6,9 +6,8 @@ class Captain::Assistant::AgentRunnerService label_list custom_attributes additional_attributes ].freeze - def initialize(assistant:, user: nil, conversation: nil) + def initialize(assistant:, conversation: nil) @assistant = assistant - @user = user @conversation = conversation end @@ -100,7 +99,6 @@ class Captain::Assistant::AgentRunnerService def build_state state = { account_id: @assistant.account_id, - user_id: @user&.id, assistant_id: @assistant.id, assistant_config: @assistant.config } @@ -111,8 +109,8 @@ class Captain::Assistant::AgentRunnerService end def build_and_wire_agents - assistant_agent = @assistant.agent(@user) - scenario_agents = @assistant.scenarios.enabled.map { |scenario| scenario.agent(@user) } + assistant_agent = @assistant.agent(nil) + scenario_agents = @assistant.scenarios.enabled.map { |scenario| scenario.agent(nil) } assistant_agent.register_handoffs(*scenario_agents) if scenario_agents.any? scenario_agents.each { |scenario_agent| scenario_agent.register_handoffs(assistant_agent) }