{"version":"2.1.248","anchor":"repl-session-state-consolidated-into-a-single-scoped-object","canonical_anchor":"repl-session-state-consolidated-into-a-single-scoped-object","heading":"REPL session state consolidated into a single scoped object","tier":"internal","area":"REPL","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.248\/e\/repl-session-state-consolidated-into-a-single-scoped-object","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.248","markdown":"### REPL session state consolidated into a single scoped object\n\nSession state for commands, tools and MCP config now lives in one object with a lifecycle.\n\n**What**\n\nThe per-session state that drives the interactive session, commands, tools, dynamic MCP configuration, allowed agent types and the main-thread agent definition, moved out of scattered React hooks into one object with an explicit connect and dispose lifecycle. This is how the REPL works on this build; there is no flag.\n\n**Details**\n\n- Exposes a subscribe\/snapshot interface, memoized derivations, and a tool-pool cache keyed on the current permission context and MCP state.\n- Must be bound to a host screen before use and throws otherwise.\n- Plugin toast and status notifications route through it under `plugin-toast-` and `plugin-status-` keys.\n\n**Evidence**\n\n`ReplSessionScope: used before its screen bound a host`\n\n- Area: REPL\n- Tier: Under the hood\n- Useful: 2\/5\n- Signal: 2\/5"}