lspz 0.11.7

AI-friendly LSP compression proxy
Documentation
# language: en
# capability: codec
# purpose: 编解码层,实现 JSON-RPC 2.0 协议编解码和多种输出格式(TOON、compact、passthrough)。
# scope: src/codec/, tests/

Feature: codec

  @req:r15 @human
  Scenario: JSON-RPC 编解码
    - 系统 MUST 正确编解码 JSON-RPC 2.0 协议消息。

  @req:r25 @human
  Scenario: TOON 格式
    - 系统 MUST 支持 TOON 输出:通知与响应均可编码为 TOON;响应 MUST 保留原 JSON-RPC id 并将 TOON 文本置于 result。

  @req:r34 @human
  Scenario: Compact 格式
    - 系统 MUST 支持 compact 格式,使用缩短的字段名。

  @req:r43 @human
  Scenario: Passthrough 格式
    - 系统 MUST 支持 passthrough:Proxy 在该模式下不得改写消息体,原样转发原始 LSP JSON。

  @req:r15 @human
  Scenario: encode-request
    - MUST hold: Given JSON-RPC 请求; When 编码; Then 输出符合 JSON-RPC 2.0 规范的字节.
    Given JSON-RPC 请求
    When 编码
    Then 输出符合 JSON-RPC 2.0 规范的字节

  @req:r15 @human
  Scenario: decode-response
    - MUST hold: Given JSON-RPC 响应字节; When 解码; Then 输出 serde_json::Value.
    Given JSON-RPC 响应字节
    When 解码
    Then 输出 serde_json::Value

  @req:r25 @human
  Scenario: toon-response-shape
    - MUST hold: Given 已压缩的 completion result 与请求 id; When 编码为 TOON 响应; Then JSON-RPC 含相同 id 且 result 含 format=toon 与 text.
    Given 已压缩的 completion result 与请求 id
    When 编码为 TOON 响应
    Then JSON-RPC 含相同 id 且 result 含 format=toon 与 text

  @req:r34 @human
  Scenario: compact-diagnostics
    - MUST hold: Given 诊断数据; When compact 编码; Then 输出缩短字段名的 JSON.
    Given 诊断数据
    When compact 编码
    Then 输出缩短字段名的 JSON

  @req:r43 @human
  Scenario: proxy-passthrough
    - MUST hold: Given Config.output_format=passthrough; When 拦截路径处理任意 ServerToClient 消息; Then 输出字节与输入 raw 帧语义一致且无压缩字段.
    Given Config.output_format=passthrough
    When 拦截路径处理任意 ServerToClient 消息
    Then 输出字节与输入 raw 帧语义一致且无压缩字段