@@ -55,11 +55,16 @@ export async function loadAgentFiles(state: AgentFilesState, agentId: string) {
5555 }
5656}
5757
58- export async function loadAgentFileContent ( state : AgentFilesState , agentId : string , name : string ) {
58+ export async function loadAgentFileContent (
59+ state : AgentFilesState ,
60+ agentId : string ,
61+ name : string ,
62+ opts ?: { force ?: boolean ; preserveDraft ?: boolean } ,
63+ ) {
5964 if ( ! state . client || ! state . connected || state . agentFilesLoading ) {
6065 return ;
6166 }
62- if ( Object . hasOwn ( state . agentFileContents , name ) ) {
67+ if ( ! opts ?. force && Object . hasOwn ( state . agentFileContents , name ) ) {
6368 return ;
6469 }
6570 state . agentFilesLoading = true ;
@@ -71,9 +76,16 @@ export async function loadAgentFileContent(state: AgentFilesState, agentId: stri
7176 } ) ;
7277 if ( res ?. file ) {
7378 const content = res . file . content ?? "" ;
79+ const previousBase = state . agentFileContents [ name ] ?? "" ;
80+ const currentDraft = state . agentFileDrafts [ name ] ;
81+ const preserveDraft = opts ?. preserveDraft ?? true ;
7482 state . agentFilesList = mergeFileEntry ( state . agentFilesList , res . file ) ;
7583 state . agentFileContents = { ...state . agentFileContents , [ name ] : content } ;
76- if ( ! Object . hasOwn ( state . agentFileDrafts , name ) ) {
84+ if (
85+ ! preserveDraft ||
86+ ! Object . hasOwn ( state . agentFileDrafts , name ) ||
87+ currentDraft === previousBase
88+ ) {
7789 state . agentFileDrafts = { ...state . agentFileDrafts , [ name ] : content } ;
7890 }
7991 }
0 commit comments