This adds support for projects, and also adds various flows needed for project support.
Make VirtualFile conform to ModificationTracker, and introduce VirtualFileManager to track changes
Introduce messaging API to propagate information between components, so each component can handle its own logic without interweaving dependencies
Introduce PklProjectManager, and data classes to model pkl projects. This component manages PklProject state, and persists it to .pkl-lsp/projects.json.
Change resolvers to use PklProject context to look for details
Introduce new ActionableNotification notification request, used to display messages with calls to action in the client
Add "Sync Project" and "Configure Pkl CLI" flows
Add logic to detect if PklProject files have been modified and project needs to be re-synced
Introduce lifecycle events for Component (initialize, dispose) and managed by Project
Move field package from PklModule to VirtualFile, to be consistent with where pklProjectDir is
Change custom virtual file scheme from pkl to pkl-lsp in order to avoid conflict with stdlib scheme (needed by VirtualFileManager)
This adds support for projects, and also adds various flows needed for project support.
.pkl-lsp/projects.json
.package
fromPklModule
toVirtualFile
, to be consistent with wherepklProjectDir
ispkl
topkl-lsp
in order to avoid conflict with stdlib scheme (needed by VirtualFileManager)