@@ -43,7 +43,11 @@ import { createSubsystemLogger } from "../../logging/subsystem.js";
4343import { closeTrackedBrowserTabsForSessions } from "../../plugin-sdk/browser-maintenance.js" ;
4444import { getGlobalHookRunner } from "../../plugins/hook-runner-global.js" ;
4545import type { PluginHookSessionEndReason } from "../../plugins/hook-types.js" ;
46- import { isAcpSessionKey , normalizeMainKey } from "../../routing/session-key.js" ;
46+ import {
47+ isAcpSessionKey ,
48+ isSubagentSessionKey ,
49+ normalizeMainKey ,
50+ } from "../../routing/session-key.js" ;
4751import { isInterSessionInputProvenance } from "../../sessions/input-provenance.js" ;
4852import { createLazyImportLoader } from "../../shared/lazy-promise.js" ;
4953import {
@@ -628,6 +632,7 @@ export async function initSessionState(params: {
628632 const lastTo = deliveryFields . lastTo ?? lastToRaw ;
629633 const lastAccountId = deliveryFields . lastAccountId ?? lastAccountIdRaw ;
630634 const lastThreadId = deliveryFields . lastThreadId ?? lastThreadIdRaw ;
635+ const preserveSpawnLineage = isSubagentSessionKey ( sessionKey ) || isAcpSessionKey ( sessionKey ) ;
631636 sessionEntry = {
632637 ...baseEntry ,
633638 sessionId,
@@ -659,14 +664,20 @@ export async function initSessionState(params: {
659664 cliSessionBindings : baseEntry ?. cliSessionBindings ,
660665 claudeCliSessionId : baseEntry ?. claudeCliSessionId ,
661666 label : persistedLabel ?? baseEntry ?. label ,
662- spawnedBy : persistedSpawnedBy ?? baseEntry ?. spawnedBy ,
663- spawnedWorkspaceDir : persistedSpawnedWorkspaceDir ?? baseEntry ?. spawnedWorkspaceDir ,
664- spawnedCwd : persistedSpawnedCwd ?? baseEntry ?. spawnedCwd ,
667+ spawnedBy : preserveSpawnLineage ? ( persistedSpawnedBy ?? baseEntry ?. spawnedBy ) : undefined ,
668+ spawnedWorkspaceDir : preserveSpawnLineage
669+ ? ( persistedSpawnedWorkspaceDir ?? baseEntry ?. spawnedWorkspaceDir )
670+ : undefined ,
671+ spawnedCwd : preserveSpawnLineage ? ( persistedSpawnedCwd ?? baseEntry ?. spawnedCwd ) : undefined ,
665672 parentSessionKey : persistedParentSessionKey ?? baseEntry ?. parentSessionKey ,
666673 forkedFromParent : persistedForkedFromParent ?? baseEntry ?. forkedFromParent ,
667- spawnDepth : persistedSpawnDepth ?? baseEntry ?. spawnDepth ,
668- subagentRole : persistedSubagentRole ?? baseEntry ?. subagentRole ,
669- subagentControlScope : persistedSubagentControlScope ?? baseEntry ?. subagentControlScope ,
674+ spawnDepth : preserveSpawnLineage ? ( persistedSpawnDepth ?? baseEntry ?. spawnDepth ) : undefined ,
675+ subagentRole : preserveSpawnLineage
676+ ? ( persistedSubagentRole ?? baseEntry ?. subagentRole )
677+ : undefined ,
678+ subagentControlScope : preserveSpawnLineage
679+ ? ( persistedSubagentControlScope ?? baseEntry ?. subagentControlScope )
680+ : undefined ,
670681 sendPolicy : baseEntry ?. sendPolicy ,
671682 queueMode : baseEntry ?. queueMode ,
672683 queueDebounceMs : baseEntry ?. queueDebounceMs ,
0 commit comments