@@ -13,6 +13,8 @@ import {
1313 type UpdateAgentRunScheduleRequest ,
1414} from '@/lib/agent-run-schedules' ;
1515
16+ import type { Agent } from 'agentex/resources' ;
17+
1618export const scheduleKeys = {
1719 all : [ 'agentRunSchedules' ] as const ,
1820 byAgentId : ( agentId : string | null ) =>
@@ -28,6 +30,18 @@ type ScheduleMutationContext = {
2830 agentId : string ;
2931} ;
3032
33+ type ScheduleActionInput =
34+ | string
35+ | {
36+ scheduleId : string ;
37+ scheduledTime ?: string ;
38+ } ;
39+
40+ export type AgentRunScheduleListItem = {
41+ agentId : string ;
42+ schedule : AgentRunSchedule ;
43+ } ;
44+
3145function errorMessage ( error : unknown ) {
3246 return error instanceof Error ? error . message : 'Please try again.' ;
3347}
@@ -46,21 +60,33 @@ export function useAgentRunSchedules(baseURL: string, agentId: string | null) {
4660 } ) ;
4761}
4862
49- export function useAgentRunScheduleDetails (
63+ export function useAgentRunSchedulesForAgents (
64+ baseURL : string ,
65+ agents : Agent [ ] ,
66+ enabled : boolean
67+ ) {
68+ return useQueries ( {
69+ queries : agents . map ( agent => ( {
70+ queryKey : scheduleKeys . byAgentId ( agent . id ) ,
71+ queryFn : async ( ) => {
72+ const response = await agentRunSchedulesAPI . list ( baseURL , agent . id ) ;
73+ return response . run_schedules ;
74+ } ,
75+ enabled,
76+ } ) ) ,
77+ } ) ;
78+ }
79+
80+ export function useAgentRunScheduleDetailsForItems (
5081 baseURL : string ,
51- agentId : string | null ,
52- schedules : AgentRunSchedule [ ]
82+ items : AgentRunScheduleListItem [ ]
5383) {
5484 return useQueries ( {
55- queries :
56- agentId == null
57- ? [ ]
58- : schedules . map ( schedule => ( {
59- queryKey : scheduleKeys . detail ( agentId , schedule . id ) ,
60- queryFn : ( ) =>
61- agentRunSchedulesAPI . get ( baseURL , agentId , schedule . id ) ,
62- staleTime : 30_000 ,
63- } ) ) ,
85+ queries : items . map ( ( { agentId, schedule } ) => ( {
86+ queryKey : scheduleKeys . detail ( agentId , schedule . id ) ,
87+ queryFn : ( ) => agentRunSchedulesAPI . get ( baseURL , agentId , schedule . id ) ,
88+ staleTime : 30_000 ,
89+ } ) ) ,
6490 } ) ;
6591}
6692
@@ -130,25 +156,45 @@ export function useScheduleAction({
130156 agentId,
131157 action,
132158} : ScheduleMutationContext & {
133- action : 'delete' | 'pause' | 'resume' | 'trigger' ;
159+ action : 'delete' | 'pause' | 'resume' | 'skip' | ' trigger' | 'unskip ';
134160} ) {
135161 const queryClient = useQueryClient ( ) ;
136162
137163 return useMutation <
138164 AgentRunSchedule | { id : string ; message : string } ,
139165 Error ,
140- string
166+ ScheduleActionInput
141167 > ( {
142- mutationFn : ( scheduleId : string ) => {
168+ mutationFn : input => {
169+ const scheduleId = typeof input === 'string' ? input : input . scheduleId ;
170+ const scheduledTime =
171+ typeof input === 'string' ? undefined : input . scheduledTime ;
143172 switch ( action ) {
144173 case 'delete' :
145174 return agentRunSchedulesAPI . delete ( baseURL , agentId , scheduleId ) ;
146175 case 'pause' :
147176 return agentRunSchedulesAPI . pause ( baseURL , agentId , scheduleId ) ;
148177 case 'resume' :
149178 return agentRunSchedulesAPI . resume ( baseURL , agentId , scheduleId ) ;
179+ case 'skip' :
180+ return agentRunSchedulesAPI . skip (
181+ baseURL ,
182+ agentId ,
183+ scheduleId ,
184+ scheduledTime
185+ ) ;
150186 case 'trigger' :
151187 return agentRunSchedulesAPI . trigger ( baseURL , agentId , scheduleId ) ;
188+ case 'unskip' :
189+ if ( ! scheduledTime ) {
190+ throw new Error ( 'scheduledTime is required to unskip a run' ) ;
191+ }
192+ return agentRunSchedulesAPI . unskip (
193+ baseURL ,
194+ agentId ,
195+ scheduleId ,
196+ scheduledTime
197+ ) ;
152198 }
153199 } ,
154200 onSuccess : result => {
@@ -163,7 +209,11 @@ export function useScheduleAction({
163209 toast . success (
164210 action === 'trigger'
165211 ? 'Scheduled task triggered'
166- : `Scheduled task ${ action === 'delete' ? 'deleted' : `${ action } d` } `
212+ : action === 'skip'
213+ ? 'Scheduled run skipped'
214+ : action === 'unskip'
215+ ? 'Scheduled run restored'
216+ : `Scheduled task ${ action === 'delete' ? 'deleted' : `${ action } d` } `
167217 ) ;
168218 } ,
169219 onError : error => {
0 commit comments