@@ -4,9 +4,21 @@ import { requireUserId } from "~/services/session.server";
44import { EnvironmentParamSchema } from "~/utils/pathBuilder" ;
55import { findProjectBySlug } from "~/models/project.server" ;
66import { findEnvironmentBySlug } from "~/models/runtimeEnvironment.server" ;
7- import { processAIFilter } from "~/v3/services/aiRunFilterService.server" ;
87import { type TaskRunListSearchFilters } from "~/components/runs/v3/RunFilters" ;
98import { tryCatch } from "@trigger.dev/core" ;
9+ import {
10+ AIRunFilterService ,
11+ QueryQueues ,
12+ QueryTags ,
13+ QueryTasks ,
14+ QueryVersions ,
15+ } from "~/v3/services/aiRunFilterService.server" ;
16+ import { RunTagListPresenter } from "~/presenters/v3/RunTagListPresenter.server" ;
17+ import { QueueListPresenter } from "~/presenters/v3/QueueListPresenter.server" ;
18+ import { VersionListPresenter } from "~/presenters/v3/VersionListPresenter.server" ;
19+ import { TaskListPresenter } from "~/presenters/v3/TaskListPresenter.server" ;
20+ import { getAllTaskIdentifiers } from "~/models/task.server" ;
21+ import { $replica } from "~/db.server" ;
1022
1123const RequestSchema = z . object ( {
1224 text : z . string ( ) . min ( 1 ) ,
@@ -48,7 +60,84 @@ export async function action({ request, params }: ActionFunctionArgs) {
4860
4961 const { text } = submission . data ;
5062
51- const [ error , result ] = await tryCatch ( processAIFilter ( text , environment ) ) ;
63+ //Tags querying
64+ const queryTags : QueryTags = {
65+ query : async ( search ) => {
66+ const tagPresenter = new RunTagListPresenter ( ) ;
67+ const tags = await tagPresenter . call ( {
68+ projectId : environment . projectId ,
69+ name : search ,
70+ page : 1 ,
71+ pageSize : 50 ,
72+ } ) ;
73+ return {
74+ tags : tags . tags . map ( ( t ) => t . name ) ,
75+ } ;
76+ } ,
77+ } ;
78+
79+ const queryQueues : QueryQueues = {
80+ query : async ( query , type ) => {
81+ const queuePresenter = new QueueListPresenter ( ) ;
82+ const queues = await queuePresenter . call ( {
83+ environment,
84+ query,
85+ page : 1 ,
86+ type,
87+ } ) ;
88+ return {
89+ queues : queues . success ? queues . queues . map ( ( q ) => q . name ) : [ ] ,
90+ } ;
91+ } ,
92+ } ;
93+
94+ const queryVersions : QueryVersions = {
95+ query : async ( versionPrefix , isCurrent ) => {
96+ const versionPresenter = new VersionListPresenter ( ) ;
97+ const versions = await versionPresenter . call ( {
98+ environment,
99+ query : versionPrefix ? versionPrefix : undefined ,
100+ } ) ;
101+
102+ if ( isCurrent ) {
103+ const currentVersion = versions . versions . find ( ( v ) => v . isCurrent ) ;
104+ if ( currentVersion ) {
105+ return {
106+ version : currentVersion . version ,
107+ } ;
108+ }
109+
110+ const newestVersion = versions . versions . at ( 0 ) ?. version ;
111+ if ( newestVersion ) {
112+ return {
113+ version : newestVersion ,
114+ } ;
115+ }
116+ }
117+
118+ return {
119+ versions : versions . versions . map ( ( v ) => v . version ) ,
120+ } ;
121+ } ,
122+ } ;
123+
124+ const queryTasks : QueryTasks = {
125+ query : async ( ) => {
126+ const tasks = await getAllTaskIdentifiers ( $replica , environment . id ) ;
127+ return {
128+ tasks,
129+ } ;
130+ } ,
131+ } ;
132+
133+ const service = new AIRunFilterService ( {
134+ queryTags,
135+ queryVersions,
136+ queryQueues,
137+ queryTasks,
138+ } ) ;
139+
140+ const [ error , result ] = await tryCatch ( service . call ( text , environment ) ) ;
52141 if ( error ) {
53142 return json ( { success : false , error : error . message } , { status : 400 } ) ;
54143 }
0 commit comments