code wiki / _hdl_build / nx_ws_manifest_emit.nx

nx_ws_manifest_emit.nx source

↩ module page · 36 lines · 1787 B

1// nx_ws_manifest_emit.nx -- WMS durability RUNNER: regenerate the live workstream auto-index in 2// the resume manifest from the memory dir. This is what the session Stop-hook runs (and what the 3// operator can run by hand) so the front door is ALWAYS current with every project-*.md -- the 4// fix for "the manifest doesn't write live and we lose work on a crash". 5// nx_ws_manifest_emit [memdir] [manifest] 6// defaults target the live Claude memory dir (overridable = config hierarchy #17). Sovereign. 7// license_tier: ORIGINAL 8import "nx_syscalls.nx" 9import "nx_ws_index_lib.nx" 10 11const WME_DEF_MEMDIR: *u8 = "/mnt/c/Users/elder/.claude/projects/C--Users-elder/memory" 12const WME_DEF_MANIFEST: *u8 = "/mnt/c/Users/elder/.claude/projects/C--Users-elder/memory/workstream-resume-manifest.md" 13 14func wmep(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } 15func wmen(v: i64) -> i64 { 16 let bb: *u8 = sys_mmap(28); var m: i64 = v 17 if m < 0 { sys_write(1, "-" as *u8, 1); m = 0 - m } 18 let t: *u8 = sys_mmap(28); var k: i64 = 0 19 if m == 0 { t[0] = 48 as u8; k = 1 } 20 while m > 0 { t[k] = ((48 + (m % 10)) as u8); m = m / 10; k = k + 1 } 21 var i: i64 = 0; while i < k { bb[i] = t[k - 1 - i]; i = i + 1 } 22 sys_write(1, bb, k); return 0 23} 24 25func main(argc: i64, argv: *i64) -> i64 { 26 var memdir: *u8 = WME_DEF_MEMDIR 27 var manifest: *u8 = WME_DEF_MANIFEST 28 if argc >= 2 { memdir = argv[1] as *u8 } 29 if argc >= 3 { manifest = argv[2] as *u8 } 30 let n: i64 = wme_emit(memdir, manifest) 31 wmep("WS-MANIFEST-EMIT memdir=" as *u8); wmep(memdir) 32 wmep(" indexed=" as *u8); wmen(n) 33 if n < 0 { wmep(" verdict=FAIL\n" as *u8); sys_exit(1); return 1 } 34 wmep(" verdict=OK\n" as *u8) 35 sys_exit(0); return 0 36}