Skip to content

[v0.2] Add LPP client, provider discovery, and process lifecycle #142

Description

@Teakowa

Protocol dependency: language-provider-protocol#1
Release coordination: #135

Goal

Add the Wright-owned client/runtime side of the Language Provider Protocol without importing source-language compiler ownership back into Wright.

Scope

  • Consume the versioned LPP contract and conformance fixtures from wrightkit/language-provider-protocol.
  • Add provider configuration/discovery by opaque language/provider identity rather than OPY/DEL-specific branches.
  • Spawn and manage long-running stdio provider processes.
  • Implement initialize/handshake, protocol-version checks, capability negotiation, request correlation, shutdown, timeout/process-exit/error handling, and structured diagnostics.
  • Keep the client transport-neutral above the process adapter so ToolService and language services consume provider capabilities rather than raw JSON-RPC details.
  • Verify interoperability against the LPP conformance/mock provider, including a deliberately non-OPY/DEL language id.
  • Do not silently fall back to embedded compiler semantics when a required provider capability is unavailable.

Non-goals

  • Full opy-rs or del-rs production cutover.
  • Provider package management, auto-download, marketplace, or network transport.
  • Exposing provider AST/HIR or Workshop internal IR.
  • New source-language features.

Acceptance criteria

  • Wright initializes and queries a conforming provider without OPY/DEL-specific protocol schema logic.
  • Capability absence, provider failure, protocol mismatch, malformed responses, and clean shutdown are deterministic and tested.
  • The LPP conformance/mock provider passes end-to-end through Wright's client path.
  • Tooling layers can depend on a stable provider-client abstraction rather than process/JSON-RPC implementation details.
  • No source-language compiler implementation is added to the LPP client layer.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions