2b8782de85
External review on PR #4074 noted that adding setSessionAgent for child sessions left sessionAgentMap holding entries after the session was deleted or after the sync call_omo_agent executor cleaned up other owned state. The map only grows; entries never get reused but they do accumulate across long-running plugin instances. Close both gaps: - BackgroundManager.handleEvent for session.deleted now calls clearSessionAgent for the deleted session id on both the early-return no-task branch and the cascade tail. This pairs with the existing clearDelegatedChildSessionBootstrap and SessionCategoryRegistry.remove so all owned session state is dropped together. - sync-executor finally for createdSessionForExecution now calls clearSessionAgent alongside the existing subagentSessions, syncSubagentSessions, and deleteSessionTools cleanup so sessions this executor created cannot leak their agent mapping. Adds focused tests: - BackgroundManager.handleEvent - session.deleted cascade > should clear session agent state for deleted sessions to prevent map leak - executeSync > registers child-session bootstrap and tracked prompt state before sync prompt dispatch (extended assertion for cleanup)