[Refactor] Encapsulate Web IDE extension state management
Description
Currently the Web IDE extension doesn't have it's state management encapsulated. As a result:
- We aren't able to easily share state across the other extensions (i.e. the
ai-code-assistanceextension has to re-fetch the project). - Every component (i.e. source control) currently assumes the state doesn't change so it has to be disposed and reinitialized when the state changes.
- Adding new state is a pain because it has to be explicitly passed along everywhere.
- Certain changes are more difficult than necessary (&10559).
Proposal
Look at the ps-rx-experiment branch. Let's introduce a type-safe package which will house the extension's current state and handle subscribing to state updates from different components.