@@ -4,7 +4,7 @@ import { fileURLToPath } from "url";
44import { run , runUserMessage , bootstrap , ensureProjectClaudeMd , loadHeartbeatPromptTemplate } from "../runner" ;
55import { writeState , type StateData } from "../statusline" ;
66import { cronMatches , nextCronMatch } from "../cron" ;
7- import { clearJobSchedule , loadJobs } from "../jobs" ;
7+ import { clearJobSchedule , loadJobs , snapshotJobFrontmatter } from "../jobs" ;
88import { writePidFile , cleanupPidFile , checkExistingDaemon } from "../pid" ;
99import { initConfig , loadSettings , reloadSettings , resolvePrompt , type HeartbeatConfig , type Settings } from "../config" ;
1010import { getDayAndMinuteAtOffset } from "../timezone" ;
@@ -693,23 +693,30 @@ export async function start(args: string[] = []) {
693693 const now = new Date ( ) ;
694694 for ( const job of currentJobs ) {
695695 if ( cronMatches ( job . schedule , now , currentSettings . timezoneOffsetMinutes ) ) {
696- resolvePrompt ( job . prompt )
697- . then ( ( prompt ) => run ( job . name , prompt ) )
698- . then ( ( r ) => {
699- if ( job . notify === false ) return ;
700- if ( job . notify === "error" && r . exitCode === 0 ) return ;
701- forwardToTelegram ( job . name , r ) ;
702- forwardToDiscord ( job . name , r ) ;
703- } )
704- . finally ( async ( ) => {
705- if ( job . recurring ) return ;
706- try {
707- await clearJobSchedule ( job . name ) ;
708- console . log ( `[${ ts ( ) } ] Cleared schedule for one-time job: ${ job . name } ` ) ;
709- } catch ( err ) {
710- console . error ( `[${ ts ( ) } ] Failed to clear schedule for ${ job . name } :` , err ) ;
711- }
712- } ) ;
696+ snapshotJobFrontmatter ( job . name )
697+ . then ( ( restoreFrontmatter ) =>
698+ resolvePrompt ( job . prompt )
699+ . then ( ( prompt ) => run ( job . name , prompt ) )
700+ . then ( async ( r ) => {
701+ const restored = await restoreFrontmatter ( ) ;
702+ if ( restored ) {
703+ console . log ( `[${ ts ( ) } ] Restored frontmatter for job: ${ job . name } ` ) ;
704+ }
705+ if ( job . notify === false ) return ;
706+ if ( job . notify === "error" && r . exitCode === 0 ) return ;
707+ forwardToTelegram ( job . name , r ) ;
708+ forwardToDiscord ( job . name , r ) ;
709+ } )
710+ . finally ( async ( ) => {
711+ if ( job . recurring ) return ;
712+ try {
713+ await clearJobSchedule ( job . name ) ;
714+ console . log ( `[${ ts ( ) } ] Cleared schedule for one-time job: ${ job . name } ` ) ;
715+ } catch ( err ) {
716+ console . error ( `[${ ts ( ) } ] Failed to clear schedule for ${ job . name } :` , err ) ;
717+ }
718+ } )
719+ ) ;
713720 }
714721 }
715722 updateState ( ) ;
0 commit comments