nx_memory_tool_register.nx source
↩ module page · 37 lines · 2601 B
1// nx_memory_tool_register.nx -- register nx_memory (consolidated memory tool, READ-ONLY increment)
2// into the discovery registry -> mcp__nishi__nx_memory stub. Idempotent; verifies by READBACK.
3// expect_exit: 0 license_tier: ORIGINAL
4import "nx_tool_registry.nx"
5
6const ASCII_0: i64 = 48 // named so this registrar is itself rule-11 clean
7
8func mr_puts(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 }
9func mr_putn(v: i64) -> i64 {
10 if v == 0 { sys_write(1, "0" as *u8, 1); return 0 }
11 var m: i64 = v
12 if m < 0 { sys_write(1, "-" as *u8, 1); m = 0 - m }
13 let d: *u8 = sys_mmap(24); var k: i64 = 0
14 while m > 0 { d[k] = (ASCII_0 + (m % 10)) as u8; m = m / 10; k = k + 1 }
15 let o: *u8 = sys_mmap(24); var i: i64 = 0
16 while i < k { o[i] = d[k - 1 - i]; i = i + 1 }
17 sys_write(1, o, k)
18 return 0
19}
20
21func main() -> i64 {
22 mr_puts("=== nx_memory_tool_register -- structured seg-store reads into the discovery registry ===\n" as *u8)
23 let w: i64 = tool_register("nx_memory" as *u8,
24 "Consolidated memory tool (READ-ONLY): STRUCTURED reads over the sovereign seg-stores (the ecosystem memory substrate) -- latest-version resolution, tombstone semantics, version history; what raw file reads cannot give. VERBS: stores <dir> = discover every seg-store + live segment count; get <prefix> <key> = LATEST value; history <prefix> <key> = per-version kind+len; index <prefix> <idxkey> = a registry id-index (e.g. __toolidx__). put/tombstone = later increment behind a write-cap." as *u8,
25 "over /mcp: tools/call name=nx_memory arguments={argv:[VERB,...]}. e.g. {argv:[\"stores\",\"knowledge\"]} ; {argv:[\"get\",\"knowledge/toolreg-\",\"tool:nx_fs\"]} -> latest record ; {argv:[\"index\",\"knowledge/toolreg-\",\"__toolidx__\"]}. exit in _meta: 0 ok | 3 absent | 4 tombstoned." as *u8,
26 "GREEN (nx_memory_gate 7/7 on a REAL fixture store: latest-version get, absent vs TOMBSTONED distinct, history count, index readback, store discovery + true uncapped segcount; rule-11 0-magic)" as *u8)
27 let p: *i64 = sys_mmap(8) as *i64
28 let l: *i64 = sys_mmap(8) as *i64
29 let g: i64 = tool_get("nx_memory" as *u8, p, l)
30 mr_puts(" nx_memory put-rc=" as *u8); mr_putn(w); mr_puts(" readback=" as *u8)
31 if g == 1 { if l[0] > 0 {
32 mr_puts("OK len=" as *u8); mr_putn(l[0]); mr_puts("\nverdict=GREEN (nx_memory discoverable -> mcp__nishi__nx_memory stub)\n" as *u8)
33 sys_exit(0); return 0
34 } }
35 mr_puts("MISSING -- REGISTER FAILED\nverdict=RED\n" as *u8)
36 sys_exit(1); return 1
37}