@@ -4,9 +4,21 @@ import { requireUserId } from "~/services/session.server";
4
4
import { EnvironmentParamSchema } from "~/utils/pathBuilder" ;
5
5
import { findProjectBySlug } from "~/models/project.server" ;
6
6
import { findEnvironmentBySlug } from "~/models/runtimeEnvironment.server" ;
7
- import { processAIFilter } from "~/v3/services/aiRunFilterService.server" ;
8
7
import { type TaskRunListSearchFilters } from "~/components/runs/v3/RunFilters" ;
9
8
import { 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" ;
10
22
11
23
const RequestSchema = z . object ( {
12
24
text : z . string ( ) . min ( 1 ) ,
@@ -48,7 +60,84 @@ export async function action({ request, params }: ActionFunctionArgs) {
48
60
49
61
const { text } = submission . data ;
50
62
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 ) ) ;
52
141
if ( error ) {
53
142
return json ( { success : false , error : error . message } , { status : 400 } ) ;
54
143
}
0 commit comments