{"version":"2.1.242","anchor":"session-wiring-moved-into-one-controller-with-a-cached-tool-","canonical_anchor":"session-wiring-moved-into-one-controller-with-a-cached-tool-","heading":"Session wiring moved into one controller with a cached tool list","tier":"internal","area":"Session Lifecycle","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.242\/e\/session-wiring-moved-into-one-controller-with-a-cached-tool-","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.242","markdown":"### Session wiring moved into one controller with a cached tool list\n\nSession start, resume and adoption now live in one controller, and the tool list is recomputed less often.\n\n**What**\n\nSession start, resume, adoption of agents, shells and workflows, orphan resume and Artifact live-watch rearming now live in a single controller class, and the tool list is recomputed only when its inputs change rather than on every pass.\n\n**Details**\n\n- The cache is keyed on the identity of the permission context, MCP tools and clients, skill tools, agent definitions, repl bridge flags and slack tag.\n- App state gained `artifactRoomJoinConsentSlugs`, which records per-Artifact consent to join its comment room.\n\n**Evidence**\n\n`SessionController: used before its screen bound a host`\n\n- Area: Session Lifecycle\n- Tier: Under the hood\n- Useful: 2\/5\n- Signal: 2\/5"}