@@ -70,7 +70,9 @@ type Engine struct {
7070 prURL string
7171 branchName string
7272 traceID string
73- toolMap map [string ]iteragent.Tool // cached at construction to avoid re-init per call
73+ toolMap map [string ]iteragent.Tool // cached at construction — avoids re-init per call
74+ tools []iteragent.Tool // cached tool slice for agent construction
75+ skills * iteragent.SkillSet // cached skills — loaded once per engine
7476}
7577
7678// generateTraceID creates a random hex trace ID for request correlation.
@@ -106,12 +108,15 @@ func New(repoPath string, logger *slog.Logger) *Engine {
106108 }
107109 tid := generateTraceID ()
108110 tools := iteragent .DefaultTools (repoPath )
111+ skills , _ := iteragent .LoadSkills ([]string {filepath .Join (repoPath , "skills" )})
109112 e := & Engine {
110113 repoPath : repoPath ,
111114 repo : repo ,
112115 logger : logger .With ("traceID" , tid ),
113116 traceID : tid ,
114117 toolMap : iteragent .ToolMap (tools ),
118+ tools : tools ,
119+ skills : skills ,
115120 }
116121 // Load PR state from previous phase if exists
117122 e .loadPRState ()
@@ -206,9 +211,7 @@ func (e *Engine) Run(ctx context.Context, p iteragent.Provider, issues string) (
206211 systemPrompt := buildSystemPrompt (e .repoPath , string (identity ))
207212 userMessage := buildUserMessage (e .repoPath , string (journal ), issues )
208213
209- tools := iteragent .DefaultTools (e .repoPath )
210- skills , _ := iteragent .LoadSkills ([]string {filepath .Join (e .repoPath , "skills" )})
211- a := e .newAgent (p , tools , systemPrompt , skills )
214+ a := e .newAgent (p , e .tools , systemPrompt , e .skills )
212215
213216 output , runErr := e .runAgentAndCollectEvents (ctx , a , userMessage )
214217 a .Finish ()
@@ -227,7 +230,7 @@ func (e *Engine) Run(ctx context.Context, p iteragent.Provider, issues string) (
227230 return result , nil
228231 }
229232
230- if err := e .handlePostRunTests (ctx , day , output , p , tools , skills , result ); err != nil {
233+ if err := e .handlePostRunTests (ctx , day , output , p , e . tools , e . skills , result ); err != nil {
231234 return result , err
232235 }
233236
@@ -392,5 +395,5 @@ func (e *Engine) auditLog(eventType, tool, detail string) {
392395 return
393396 }
394397 defer f .Close ()
395- f .Write (append (data , '\n' ))
398+ _ , _ = f .Write (append (data , '\n' ))
396399}
0 commit comments