nx_mcp_envelope_gate.nx source
↩ module page · 30 lines · 2771 B
1import "nx_mcp_envelope.nx"
2import "nx_gate_verdict.nx"
3func nmeg_len(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n=n+1 }; return n }
4func nmeg_case(name: *u8, src: *u8, expected: i64, id: *u8, ctr: *i64) -> i64 {
5 let e: *NxMcpEnvelope = sys_mmap(NX_MCP_ENVELOPE_BYTES) as *NxMcpEnvelope
6 let actual: i64 = nme_read(src,nmeg_len(src),e)
7 gv_check_eq(name,actual,expected,ctr)
8 if expected == 1 { gv_check_eq("exact request identity",nx_value_bytes_equal(((src as i64)+e.id_off) as *u8,e.id_len,id,nmeg_len(id)),1,ctr) }
9 return 0
10}
11func main() -> i64 {
12 let ctr: *i64 = gv_ctr()
13 gv_head("MCP envelope regression: actual native parser")
14 nmeg_case("integer request","{\"jsonrpc\":\"2.0\",\"id\":73,\"method\":\"tools/list\"}",1,"73",ctr)
15 nmeg_case("nested identity","{\"params\":{\"id\":99,\"method\":\"tools/call\"},\"jsonrpc\":\"2.0\",\"id\":-24,\"method\":\"tools/list\"}",1,"-24",ctr)
16 nmeg_case("string identity","{\"jsonrpc\":\"2.0\",\"id\":\"session-abc\",\"method\":\"initialize\"}",1,"\"session-abc\"",ctr)
17 nmeg_case("initialized","{\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\"}",2,"",ctr)
18 nmeg_case("nested notification id","{\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\",\"params\":{\"id\":8}}",2,"",ctr)
19 nmeg_case("notification request","{\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\",\"id\":4}",1,"4",ctr)
20 nmeg_case("unidentified execution","{\"jsonrpc\":\"2.0\",\"method\":\"tools/call\",\"params\":{}}",0,"",ctr)
21 nmeg_case("duplicate identity","{\"jsonrpc\":\"2.0\",\"id\":1,\"id\":2,\"method\":\"tools/list\"}",0,"",ctr)
22 nmeg_case("duplicate method","{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\",\"method\":\"tools/call\"}",0,"",ctr)
23 nmeg_case("wrong version","{\"jsonrpc\":\"1.0\",\"id\":1,\"method\":\"tools/list\"}",0,"",ctr)
24 nmeg_case("missing method","{\"jsonrpc\":\"2.0\",\"id\":1}",0,"",ctr)
25 nmeg_case("trailing junk","{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\"}x",0,"",ctr)
26 nmeg_case("malformed","{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":",0,"",ctr)
27 nmeg_case("bad initialized params","{\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\",\"params\":[]}",0,"",ctr)
28 nmeg_case("long identity","{\"jsonrpc\":\"2.0\",\"id\":\"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz\",\"method\":\"tools/list\"}",1,"\"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz\"",ctr)
29 return gv_verdict("MCP-ENVELOPE",ctr,"envelope-only; transport integration pending")
30}