From 1fce8d1183f08e4eef0a94d3cddf78fc2fa49116 Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Tue, 15 Jul 2025 13:58:18 +0530 Subject: [PATCH] feat: use new tools --- .../jobs/captain/conversation/response_builder_job.rb | 11 +---------- enterprise/app/models/captain/scenario.rb | 4 ++-- enterprise/app/models/concerns/agentable.rb | 2 +- .../captain/assistant/agent_runner_service.rb | 8 +++----- 4 files changed, 7 insertions(+), 18 deletions(-) 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) }