@@ -379,8 +379,18 @@ export async function runEmbeddedPiAgent(
379379 const sessionLane = resolveSessionLane ( params . sessionKey ?. trim ( ) || params . sessionId ) ;
380380 const globalLane = resolveGlobalLane ( params . lane ) ;
381381 const laneTaskTimeoutMs = resolveEmbeddedRunLaneTimeoutMs ( params . timeoutMs ) ;
382+ let laneTaskProgressAtMs = Date . now ( ) ;
383+ const noteLaneTaskProgress = ( ) => {
384+ laneTaskProgressAtMs = Date . now ( ) ;
385+ } ;
382386 const withLaneTimeout = ( opts ?: CommandQueueEnqueueOptions ) =>
383- withEmbeddedRunLaneTimeout ( opts , laneTaskTimeoutMs ) ;
387+ withEmbeddedRunLaneTimeout (
388+ {
389+ ...opts ,
390+ taskTimeoutProgressAtMs : ( ) => laneTaskProgressAtMs ,
391+ } ,
392+ laneTaskTimeoutMs ,
393+ ) ;
384394 const enqueueGlobal = < T > ( task : ( ) => Promise < T > , opts ?: CommandQueueEnqueueOptions ) =>
385395 params . enqueue
386396 ? params . enqueue ( task , withLaneTimeout ( opts ) )
@@ -429,8 +439,15 @@ export async function runEmbeddedPiAgent(
429439 "phase"
430440 > ,
431441 ) => {
442+ noteLaneTaskProgress ( ) ;
432443 params . onExecutionPhase ?.( { phase, ...extra } ) ;
433444 } ;
445+ const notifyRunProgress = (
446+ info : Parameters < NonNullable < RunEmbeddedPiAgentParams [ "onRunProgress" ] > > [ 0 ] ,
447+ ) => {
448+ noteLaneTaskProgress ( ) ;
449+ params . onRunProgress ?.( info ) ;
450+ } ;
434451 const emitStartupStageSummary = ( phase : string ) => {
435452 const summary = startupStages . snapshot ( ) ;
436453 const shouldWarn = shouldWarnEmbeddedRunStageSummary ( summary ) ;
@@ -1370,6 +1387,7 @@ export async function runEmbeddedPiAgent(
13701387 legacyBeforeAgentStartResult,
13711388 thinkLevel,
13721389 onToolOutcome : observePostCompactionToolOutcome ,
1390+ onRunProgress : notifyRunProgress ,
13731391 fastMode : params . fastMode ,
13741392 verboseLevel : params . verboseLevel ,
13751393 reasoningLevel : params . reasoningLevel ,
0 commit comments