Hey everyone! Co-author of BSP here ![]()
It's exciting to see SourceKit-LSP building on some of the foundations of BSP, even if you don't fully implement the protocol. Please let me know if you have any questions or you'd like some clarifications about its current design. There are some non-obvious concepts or endpoints that might need some context.
Out of curiosity, what is this endpoint needed for?
I believe you could encode this information as a JSON object in the data field of the build target. In the Scala extension, we have an object called ScalaBuildTarget which enriches the build target information to provide Scala-specific data.. It sounds like this would be a good fit for this endpoint too.
I don't know what you mean exactly by "not currently implement all of BSP" but you can use BuildServerCapabilities to tell clients that some features are not supported by the server and vice versa with BuildClientCapabilities. If there was a capability your server doesn't support, you can announce that and then clients know they cannot query you with certain endpoints. You can also use this same infrastructure to add your own experimental capabilities.
BTW, when the dust settles and the exploratory phase is over, I encourage you to upstream some of the stuff you've worked on to build-server-protocol/build-server-protocol. We could merge this work under a Swift extension and make the necessary changes to the base protocol.
We have tried to make BSP as generic as possible (with lots of concepts from build tools such as Bazel) but it's still quite opinionated and Scala-centric. I'd be really happy to change some parts of the protocol to fit your requirements and be more broadly useful ![]()