11import { formatErrorMessage } from "../infra/errors.js" ;
2+ import { getGlobalHookRunner } from "../plugins/hook-runner-global.js" ;
23import { loadCliSessionHistoryMessages } from "./cli-runner/session-history.js" ;
34import type { PreparedCliRunContext , RunCliAgentParams } from "./cli-runner/types.js" ;
45import { FailoverError , isFailoverError , resolveFailoverStatus } from "./failover-error.js" ;
6+ import { buildAgentHookConversationMessages } from "./harness/hook-history.js" ;
57import {
68 runAgentHarnessAgentEndHook ,
79 runAgentHarnessLlmInputHook ,
@@ -53,13 +55,20 @@ export async function runPreparedCliAgent(
5355) : Promise < EmbeddedPiRunResult > {
5456 const { executePreparedCliRun } = await import ( "./cli-runner/execute.runtime.js" ) ;
5557 const { params } = context ;
56- const historyMessages = loadCliSessionHistoryMessages ( {
57- sessionId : params . sessionId ,
58- sessionFile : params . sessionFile ,
59- sessionKey : params . sessionKey ,
60- agentId : params . agentId ,
61- config : params . config ,
62- } ) ;
58+ const hookRunner = getGlobalHookRunner ( ) ;
59+ const hasLlmInputHooks = hookRunner ?. hasHooks ( "llm_input" ) === true ;
60+ const hasLlmOutputHooks = hookRunner ?. hasHooks ( "llm_output" ) === true ;
61+ const hasAgentEndHooks = hookRunner ?. hasHooks ( "agent_end" ) === true ;
62+ const historyMessages =
63+ hasLlmInputHooks || hasAgentEndHooks
64+ ? loadCliSessionHistoryMessages ( {
65+ sessionId : params . sessionId ,
66+ sessionFile : params . sessionFile ,
67+ sessionKey : params . sessionKey ,
68+ agentId : params . agentId ,
69+ config : params . config ,
70+ } )
71+ : [ ] ;
6372 const llmInputEvent = {
6473 runId : params . runId ,
6574 sessionId : params . sessionId ,
@@ -82,9 +91,13 @@ export async function runPreparedCliAgent(
8291 } as const ;
8392
8493 const buildAgentEndMessages = ( lastAssistant ?: unknown ) : unknown [ ] => [
85- ...historyMessages ,
86- buildCliHookUserMessage ( params . prompt ) ,
87- ...( lastAssistant ? [ lastAssistant ] : [ ] ) ,
94+ ...buildAgentHookConversationMessages ( {
95+ historyMessages,
96+ currentTurnMessages : [
97+ buildCliHookUserMessage ( params . prompt ) ,
98+ ...( lastAssistant ? [ lastAssistant ] : [ ] ) ,
99+ ] ,
100+ } ) ,
88101 ] ;
89102
90103 const buildFailedAgentEndEvent = ( error : string ) => ( {
@@ -125,18 +138,20 @@ export async function runPreparedCliAgent(
125138 usage : output . usage ,
126139 } )
127140 : undefined ;
128- runAgentHarnessLlmOutputHook ( {
129- event : {
130- runId : params . runId ,
131- sessionId : params . sessionId ,
132- provider : params . provider ,
133- model : context . modelId ,
134- assistantTexts,
135- ...( lastAssistant ? { lastAssistant } : { } ) ,
136- ...( output . usage ? { usage : output . usage } : { } ) ,
137- } ,
138- ctx : hookContext ,
139- } ) ;
141+ if ( assistantText . length > 0 && hasLlmOutputHooks ) {
142+ runAgentHarnessLlmOutputHook ( {
143+ event : {
144+ runId : params . runId ,
145+ sessionId : params . sessionId ,
146+ provider : params . provider ,
147+ model : context . modelId ,
148+ assistantTexts,
149+ ...( lastAssistant ? { lastAssistant } : { } ) ,
150+ ...( output . usage ? { usage : output . usage } : { } ) ,
151+ } ,
152+ ctx : hookContext ,
153+ } ) ;
154+ }
140155 return { output, assistantText, lastAssistant } ;
141156 } ;
142157
0 commit comments