@@ -140,6 +140,21 @@ function cleanEvents(events: string[]): string[] {
140140 return clean ;
141141}
142142
143+ function changesTriggerSource (
144+ current : EventTask [ "trigger" ] ,
145+ next : EventTask [ "trigger" ] ,
146+ ) : boolean {
147+ const currentEvents = [ ...current . events ] . sort ( ) ;
148+ const nextEvents = [ ...next . events ] . sort ( ) ;
149+ return (
150+ current . provider !== next . provider ||
151+ current . resourceRef !== next . resourceRef ||
152+ current . resourceType !== next . resourceType ||
153+ currentEvents . length !== nextEvents . length ||
154+ currentEvents . some ( ( event , index ) => event !== nextEvents [ index ] )
155+ ) ;
156+ }
157+
143158function nextUpdatedAtMs ( task : EventTask ) : number {
144159 return Math . max ( Date . now ( ) , task . updatedAtMs + 1 ) ;
145160}
@@ -316,24 +331,26 @@ export function createUpdateEventTaskTool(context: ToolRuntimeContext) {
316331 ) {
317332 throw new ToolInputError ( "Event task update requires a change." ) ;
318333 }
334+ const nextTrigger = input . trigger
335+ ? {
336+ provider : input . trigger . provider ,
337+ resourceRef : input . trigger . resourceRef ,
338+ resourceType : input . trigger . resourceType ,
339+ label : input . trigger . label ,
340+ events : cleanEvents ( input . trigger . events ) ,
341+ }
342+ : current . trigger ;
319343 const changesExecution =
320- input . task !== undefined && input . task !== current . task . text ;
344+ ( input . task !== undefined && input . task !== current . task . text ) ||
345+ changesTriggerSource ( current . trigger , nextTrigger ) ;
321346 const next : EventTask = {
322347 ...current ,
323348 credentialMode :
324349 changesExecution && ! isCreator
325350 ? "system"
326351 : ( input . credentialMode ?? current . credentialMode ) ,
327352 task : input . task ? { text : input . task } : current . task ,
328- trigger : input . trigger
329- ? {
330- provider : input . trigger . provider ,
331- resourceRef : input . trigger . resourceRef ,
332- resourceType : input . trigger . resourceType ,
333- label : input . trigger . label ,
334- events : cleanEvents ( input . trigger . events ) ,
335- }
336- : current . trigger ,
353+ trigger : nextTrigger ,
337354 updatedAtMs : nextUpdatedAtMs ( current ) ,
338355 } ;
339356 const saved = await updateActiveEventTask (
0 commit comments