code wiki / (root) / nx_docgen.nx

nx_docgen.nx source

↩ module page · 50 lines · 2644 B

1// nx_docgen.nx -- Nishi Office DOCUMENT ASSEMBLY (F505) CLI/MCP organ: self-verifying demo 2// over nx_docgen_lib. Seeds a clause library + engagement template, assembles a real merged 3// engagement letter, content-addresses it, and proves determinism. license_tier: ORIGINAL 4 5import "nx_docgen_lib.nx" 6const K_MAGIC_2048: i64 = 2048 7const K_MAGIC_4096: i64 = 4096 8const K_MAGIC_1024: i64 = 1024 9 10func main() -> i64 { 11 let p: *u8 = "/tmp/nx_docgen_demo-" as *u8 12 dg_clause_put(p, "scope" as *u8, "1. SCOPE. Attorney represents {client} in the matter {matter}." as *u8) 13 dg_clause_put(p, "fee" as *u8, "2. FEES. Client shall pay {fee} for services rendered." as *u8) 14 dg_clause_put(p, "term" as *u8, "3. TERMINATION. Either party may terminate upon written notice." as *u8) 15 dg_clause_put(p, "conf" as *u8, "4. CONFIDENTIALITY. Communications are privileged. Dated {date}." as *u8) 16 dg_tmpl_put(p, "engagement" as *u8, "scope,fee,term,conf" as *u8) 17 let k: *i64 = sys_mmap(8 * 4) as *i64 18 let v: *i64 = sys_mmap(8 * 4) as *i64 19 k[0] = ("client" as *u8) as i64; v[0] = ("Acme Corp" as *u8) as i64 20 k[1] = ("matter" as *u8) as i64; v[1] = ("Acme v. Baker" as *u8) as i64 21 k[2] = ("fee" as *u8) as i64; v[2] = ("$300/hr" as *u8) as i64 22 k[3] = ("date" as *u8) as i64; v[3] = ("2026-07-19" as *u8) as i64 23 let mrec: *u8 = sys_mmap(K_MAGIC_2048) 24 let mlen: i64 = canon_encode(k, v, 4, mrec) 25 let doc: *u8 = sys_mmap(K_MAGIC_4096) 26 let n: i64 = dg_assemble(p, "engagement" as *u8, mrec, mlen, doc) 27 if n < 0 { return __syscall(93, 61, 0, 0, 0, 0, 0) } 28 if dg_unmerged(doc, n) != 0 { return __syscall(93, 62, 0, 0, 0, 0, 0) } 29 let cid: *u8 = sys_mmap(128) 30 cid_of(doc, n, cid) 31 let doc2: *u8 = sys_mmap(K_MAGIC_4096) 32 let n2: i64 = dg_assemble(p, "engagement" as *u8, mrec, mlen, doc2) 33 let cid2: *u8 = sys_mmap(128) 34 cid_of(doc2, n2, cid2) 35 if mt_streq(cid, cid2) != 1 { return __syscall(93, 63, 0, 0, 0, 0, 0) } 36 sys_write(1, "--- assembled engagement letter (merged, content-addressed) ---\n" as *u8, 63) 37 sys_write(1, doc, n) 38 let out: *u8 = sys_mmap(K_MAGIC_1024) 39 var o: i64 = 0 40 o = mt_catcopy(out, o, "NISHI-DOCGEN OK clauses=4(data-driven) template=engagement assembled=" as *u8) 41 o = mt_catn(out, o, n) 42 o = mt_catcopy(out, o, "B cid=" as *u8) 43 var z: i64 = 0 44 while z < 24 { out[o] = cid[z]; o = o + 1; z = z + 1 } 45 o = mt_catcopy(out, o, "... merge(client,matter,fee,date)=applied no-unmerged-braces determinism=OK" as *u8) 46 out[o] = 10 as u8 47 o = o + 1 48 sys_write(1, out, o) 49 return __syscall(93, 0, 0, 0, 0, 0, 0) 50}