| 
						
						
						
					 | 
				
				 | 
				
					@ -1,5 +1,6 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorator'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { ApiService } from '@ghostfolio/api/services/api/api.service'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  DEFAULT_CURRENCY, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  DEFAULT_LANGUAGE_CODE | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -8,7 +9,14 @@ import { AiPromptResponse } from '@ghostfolio/common/interfaces'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { permissions } from '@ghostfolio/common/permissions'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import type { AiPromptMode, RequestWithUser } from '@ghostfolio/common/types'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { Controller, Get, Inject, Param, UseGuards } from '@nestjs/common'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  Controller, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  Get, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  Inject, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  Param, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  Query, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  UseGuards | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} from '@nestjs/common'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { REQUEST } from '@nestjs/core'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { AuthGuard } from '@nestjs/passport'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -18,6 +26,7 @@ import { AiService } from './ai.service'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					export class AiController { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  public constructor( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    private readonly aiService: AiService, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    private readonly apiService: ApiService, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    @Inject(REQUEST) private readonly request: RequestWithUser | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  ) {} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -25,9 +34,23 @@ export class AiController { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  @HasPermission(permissions.readAiPrompt) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  @UseGuards(AuthGuard('jwt'), HasPermissionGuard) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  public async getPrompt( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    @Param('mode') mode: AiPromptMode | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    @Param('mode') mode: AiPromptMode, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    @Query('accounts') filterByAccounts?: string, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    @Query('assetClasses') filterByAssetClasses?: string, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    @Query('dataSource') filterByDataSource?: string, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    @Query('symbol') filterBySymbol?: string, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    @Query('tags') filterByTags?: string | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  ): Promise<AiPromptResponse> { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    const filters = this.apiService.buildFiltersFromQueryParams({ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      filterByAccounts, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      filterByAssetClasses, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      filterByDataSource, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      filterBySymbol, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      filterByTags | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    }); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    const prompt = await this.aiService.getPrompt({ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      filters, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      mode, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      impersonationId: undefined, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      languageCode: | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |