> */ public const TOOLS = [ CoolifyHelp::class, GetInfrastructureOverview::class, SearchResources::class, ListUnhealthyResources::class, GetCurrentTeam::class, ListTeamMembers::class, ListServers::class, GetServer::class, GetServerDomains::class, GetServerResources::class, ListDestinations::class, GetDestination::class, ListProjects::class, GetProject::class, GetEnvironment::class, ListResources::class, ListApplications::class, GetApplication::class, ListApplicationPreviews::class, ListDatabases::class, GetDatabase::class, ListDatabaseBackups::class, ListBackupExecutions::class, ListServices::class, GetService::class, ListServiceApplications::class, GetServiceApplication::class, ListServiceDatabases::class, GetServiceDatabase::class, ListDeployments::class, GetDeployment::class, GetLogs::class, ListEnvKeys::class, ListSharedEnvKeys::class, ListStorages::class, ListResourceTags::class, ListScheduledTasks::class, ListScheduledTaskExecutions::class, ListTags::class, ListGithubApps::class, ListGithubRepositories::class, ListGithubBranches::class, Control::class, Deploy::class, CancelDeployment::class, ManageProject::class, CreateDatabase::class, ManageDatabase::class, GetDatabaseImport::class, ListServiceTemplates::class, CreateService::class, ManageService::class, ManageEnv::class, ManageSharedEnv::class, GetEnvValues::class, CreateApplication::class, ManageApplication::class, ManagePreview::class, GetApplicationPreview::class, RollbackApplication::class, ListRollbackImages::class, ManageScheduledTask::class, ManageBackup::class, ManageStorage::class, ManageTags::class, ManageDns::class, ManageSecretManager::class, ManageServer::class, ManageProxy::class, ManageCloudflareTunnel::class, DockerCleanup::class, ManageDestination::class, ManageRegistry::class, ManagePrivateKey::class, ManageS3Storage::class, ManageGitSource::class, ManageIntegrationTokens::class, CloudProvider::class, ManageNotifications::class, ListAuditEvents::class, GetServerMetrics::class, GetVulnerabilities::class, ManageImageScanning::class, ]; /** * Tools for team-level objects. Tokens and members limited to some projects, environments, * or resources do not get them (same rule as ApiAbility::SCOPED_ACCESS_ROUTES for REST). * * @var array> */ public const TEAM_LEVEL_TOOLS = [ GetCurrentTeam::class, ListTeamMembers::class, ListServers::class, GetServer::class, GetServerDomains::class, GetServerResources::class, GetServerMetrics::class, ListDestinations::class, GetDestination::class, ListTags::class, ListGithubApps::class, ListGithubRepositories::class, ListGithubBranches::class, ListAuditEvents::class, ManageTags::class, ManageServer::class, ManageProxy::class, ManageImageScanning::class, ManageCloudflareTunnel::class, DockerCleanup::class, ManageDestination::class, ManageRegistry::class, ManagePrivateKey::class, ManageS3Storage::class, ManageGitSource::class, ManageIntegrationTokens::class, CloudProvider::class, ManageNotifications::class, ]; protected array $tools = self::TOOLS; /** * @return array> */ public static function toolsForCurrentActor(): array { $user = request()->user(); $teamId = $user?->currentAccessToken()?->team_id; if ($user !== null && $teamId !== null && app(AccessResolver::class)->coversWholeTeam($user, (int) $teamId)) { return self::TOOLS; } return array_values(array_diff(self::TOOLS, self::TEAM_LEVEL_TOOLS)); } public function createContext(): ServerContext { $this->tools = self::toolsForCurrentActor(); return parent::createContext(); } protected array $resources = [ InfrastructureOverviewResource::class, ApplicationResource::class, ]; protected array $prompts = [ TroubleshootApplication::class, ExplainFailedDeploy::class, ]; }