nx_writehub_research_fetch.nx source
↩ module page · 108 lines · 9544 B
1// nx_writehub_research_fetch.nx -- SOVEREIGN research round for the WRITING HUB (operator 2026-06-30:
2// "use nishi researcher to ingest these and other good repos research papers etc ... census on autonomous
3// writing from erotica to novels to fiction to non-fiction ... match google's alpha series and go s-class
4// exceed ... a writing hub for all our systems ... growing on its own and autonomously improving").
5// Mirrors nx_asr_research_fetch EXACTLY: own TLS-1.3 + Mozilla CA, idempotent have-skip, nx_cc->nxasm.
6// Banks the autonomous-writing frontier -- the named repos, the SOTA papers, the narrative-craft canon,
7// and the four new HUB axes (companion/persona, D&D/interactive-fiction, image-prompt synthesis, eval) --
8// -> knowledge/fetched/write_*.raw so the census + ladder are grounded in cited sources before a line of
9// hub code is written. Third-party repos/papers are YARDSTICKS we measure-and-exceed, never dependencies.
10// expect_exit: 0 license_tier: ORIGINAL module: nishi-core.writehub.research
11import "nx_syscalls.nx"
12import "nx_x509_trust_store.nx"
13import "nx_trust_store_load_from_certdata.nx"
14import "nx_https_fetch_follow.nx"
15const K_MAGIC_4194304: i64 = 4194304
16const K_MAGIC_8388608: i64 = 8388608
17
18func df_puts(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 }
19func df_putn(v: i64) -> i64 {
20 if v == 0 { sys_write(1, "0" as *u8, 1); return 0 }
21 var m: i64 = v
22 if m < 0 { sys_write(1, "-" as *u8, 1); m = 0 - m }
23 let d: *u8 = sys_mmap(24); var k: i64 = 0
24 while m > 0 { d[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 }
25 var j: i64 = k - 1
26 while j >= 0 { sys_write(1, ((d as i64)+j) as *u8, 1); j = j - 1 }
27 return 0
28}
29func have_file(path: *u8) -> i64 { let fd: i64 = sys_openat_rd(path); if fd < 0 { return 0 } sys_close(fd); return 1 }
30func fetch_save(url: *u8, opath: *u8, store: *TrustStore, out: *u8, cap: i64) -> i64 {
31 if have_file(opath) == 1 { df_puts(opath); df_puts(" [have-skip]\n" as *u8); return 1 }
32 let status: *i64 = sys_mmap(8) as *i64
33 let n: i64 = nx_https_fetch_follow(url, store, out, cap, 6, status)
34 df_puts(url); df_puts(" status=" as *u8); df_putn(status[0]); df_puts(" bytes=" as *u8); df_putn(n)
35 if n <= 0 { df_puts(" FETCH-FAIL\n" as *u8); return 0 }
36 var gz: i64 = 0
37 if n >= 2 { if out[0] == 0x1f as u8 { if out[1] == 0x8b as u8 { gz = 1 } } }
38 if gz == 1 { df_puts(" [GZIP-skip]\n" as *u8); return 0 }
39 let fd: i64 = sys_openat_wr(opath, 0x1a4)
40 if fd < 0 { df_puts(" SAVE-FAIL\n" as *u8); return 0 }
41 sys_write(fd, out, n); sys_close(fd)
42 df_puts(" SAVED\n" as *u8)
43 return 1
44}
45
46func main() -> i64 {
47 let r: i64 = nx_trust_store_load_from_certdata("data/mozilla_certdata.txt" as *u8, 512, K_MAGIC_4194304)
48 if r <= 0 { df_puts("WRITEHUB: certdata load failed\n" as *u8); return 1 }
49 let store: *TrustStore = r as *TrustStore
50 df_puts("CA roots=" as *u8); df_putn(trust_store_count(store)); df_puts("\n" as *u8)
51 let cap: i64 = K_MAGIC_8388608
52 let out: *u8 = sys_mmap(cap)
53 var ok: i64 = 0
54
55 df_puts("== AUTONOMOUS-WRITING SYSTEMS (the named repos + frontier, ingest as yardsticks) ==\n" as *u8)
56 ok = ok + fetch_save("https://github.com/NousResearch/autonovel" as *u8, "knowledge/fetched/write_repo_autonovel.raw" as *u8, store, out, cap)
57 ok = ok + fetch_save("https://github.com/karpathy/autoresearch" as *u8, "knowledge/fetched/write_repo_autoresearch.raw" as *u8, store, out, cap)
58 ok = ok + fetch_save("https://github.com/guerra2fernando/libriscribe" as *u8, "knowledge/fetched/write_repo_libriscribe.raw" as *u8, store, out, cap)
59 ok = ok + fetch_save("https://github.com/forsonny/Claude-Code-Novel-Writer" as *u8, "knowledge/fetched/write_repo_ccnovel.raw" as *u8, store, out, cap)
60 ok = ok + fetch_save("https://github.com/KudoShusak/NovelWriter" as *u8, "knowledge/fetched/write_repo_novelwriter.raw" as *u8, store, out, cap)
61 ok = ok + fetch_save("https://github.com/principia-ai/WriteHERE" as *u8, "knowledge/fetched/write_repo_writehere.raw" as *u8, store, out, cap)
62 ok = ok + fetch_save("https://github.com/Aftabbs/Book-Writing-AI-Agent" as *u8, "knowledge/fetched/write_repo_bookagent.raw" as *u8, store, out, cap)
63 ok = ok + fetch_save("https://github.com/raestrada/storycraftr" as *u8, "knowledge/fetched/write_repo_storycraftr.raw" as *u8, store, out, cap)
64
65 df_puts("== SOTA PAPERS (multi-agent narrative, long-form, benchmarks) ==\n" as *u8)
66 ok = ok + fetch_save("https://arxiv.org/abs/2410.02603" as *u8, "knowledge/fetched/write_paper_agentsroom.raw" as *u8, store, out, cap)
67 ok = ok + fetch_save("https://arxiv.org/abs/2305.13304" as *u8, "knowledge/fetched/write_paper_recurrentgpt.raw" as *u8, store, out, cap)
68 ok = ok + fetch_save("https://arxiv.org/abs/2510.11618" as *u8, "knowledge/fetched/write_paper_storybox.raw" as *u8, store, out, cap)
69 ok = ok + fetch_save("https://arxiv.org/abs/2506.16445" as *u8, "knowledge/fetched/write_paper_multiagent_longstory.raw" as *u8, store, out, cap)
70 ok = ok + fetch_save("https://arxiv.org/abs/2506.18841" as *u8, "knowledge/fetched/write_paper_longwriterzero.raw" as *u8, store, out, cap)
71 ok = ok + fetch_save("https://arxiv.org/abs/2409.02076" as *u8, "knowledge/fetched/write_paper_longgenbench.raw" as *u8, store, out, cap)
72 ok = ok + fetch_save("https://arxiv.org/abs/2505.14818" as *u8, "knowledge/fetched/write_paper_webnovelbench.raw" as *u8, store, out, cap)
73 ok = ok + fetch_save("https://arxiv.org/abs/2503.05244" as *u8, "knowledge/fetched/write_paper_writingbench.raw" as *u8, store, out, cap)
74
75 df_puts("== NARRATIVE CRAFT (the deterministic craft canon) ==\n" as *u8)
76 ok = ok + fetch_save("https://en.wikipedia.org/wiki/Three-act_structure" as *u8, "knowledge/fetched/write_craft_threeact.raw" as *u8, store, out, cap)
77 ok = ok + fetch_save("https://en.wikipedia.org/wiki/Dramatic_structure" as *u8, "knowledge/fetched/write_craft_dramatic.raw" as *u8, store, out, cap)
78 ok = ok + fetch_save("https://en.wikipedia.org/wiki/Hero%27s_journey" as *u8, "knowledge/fetched/write_craft_herojourney.raw" as *u8, store, out, cap)
79 ok = ok + fetch_save("https://en.wikipedia.org/wiki/Characterization" as *u8, "knowledge/fetched/write_craft_characterization.raw" as *u8, store, out, cap)
80 ok = ok + fetch_save("https://en.wikipedia.org/wiki/Worldbuilding" as *u8, "knowledge/fetched/write_craft_worldbuilding.raw" as *u8, store, out, cap)
81 ok = ok + fetch_save("https://en.wikipedia.org/wiki/Show,_don%27t_tell" as *u8, "knowledge/fetched/write_craft_showdonttell.raw" as *u8, store, out, cap)
82 ok = ok + fetch_save("https://en.wikipedia.org/wiki/Dialogue" as *u8, "knowledge/fetched/write_craft_dialogue.raw" as *u8, store, out, cap)
83 ok = ok + fetch_save("https://en.wikipedia.org/wiki/Creative_writing" as *u8, "knowledge/fetched/write_craft_creativewriting.raw" as *u8, store, out, cap)
84
85 df_puts("== COMPANION / PERSONA (Elara-class interactive persona) ==\n" as *u8)
86 ok = ok + fetch_save("https://en.wikipedia.org/wiki/Chatbot" as *u8, "knowledge/fetched/write_comp_chatbot.raw" as *u8, store, out, cap)
87 ok = ok + fetch_save("https://en.wikipedia.org/wiki/Virtual_assistant" as *u8, "knowledge/fetched/write_comp_assistant.raw" as *u8, store, out, cap)
88 ok = ok + fetch_save("https://en.wikipedia.org/wiki/Affective_computing" as *u8, "knowledge/fetched/write_comp_affective.raw" as *u8, store, out, cap)
89 ok = ok + fetch_save("https://en.wikipedia.org/wiki/Character.ai" as *u8, "knowledge/fetched/write_comp_characterai.raw" as *u8, store, out, cap)
90
91 df_puts("== D&D / INTERACTIVE FICTION (the game-master surface) ==\n" as *u8)
92 ok = ok + fetch_save("https://en.wikipedia.org/wiki/Dungeons_%26_Dragons" as *u8, "knowledge/fetched/write_dnd_dnd.raw" as *u8, store, out, cap)
93 ok = ok + fetch_save("https://en.wikipedia.org/wiki/Game_master" as *u8, "knowledge/fetched/write_dnd_gm.raw" as *u8, store, out, cap)
94 ok = ok + fetch_save("https://en.wikipedia.org/wiki/Tabletop_role-playing_game" as *u8, "knowledge/fetched/write_dnd_ttrpg.raw" as *u8, store, out, cap)
95 ok = ok + fetch_save("https://en.wikipedia.org/wiki/Interactive_fiction" as *u8, "knowledge/fetched/write_dnd_if.raw" as *u8, store, out, cap)
96 ok = ok + fetch_save("https://en.wikipedia.org/wiki/Gamebook" as *u8, "knowledge/fetched/write_dnd_gamebook.raw" as *u8, store, out, cap)
97
98 df_puts("== IMAGE-PROMPT SYNTHESIS (writer -> local image-gen) + EVAL ==\n" as *u8)
99 ok = ok + fetch_save("https://en.wikipedia.org/wiki/Text-to-image_model" as *u8, "knowledge/fetched/write_img_t2i.raw" as *u8, store, out, cap)
100 ok = ok + fetch_save("https://en.wikipedia.org/wiki/Prompt_engineering" as *u8, "knowledge/fetched/write_img_prompt.raw" as *u8, store, out, cap)
101 ok = ok + fetch_save("https://en.wikipedia.org/wiki/Diffusion_model" as *u8, "knowledge/fetched/write_img_diffusion.raw" as *u8, store, out, cap)
102 ok = ok + fetch_save("https://en.wikipedia.org/wiki/Automated_essay_scoring" as *u8, "knowledge/fetched/write_eval_aes.raw" as *u8, store, out, cap)
103
104 df_puts("writehub research: fetched/have=" as *u8); df_putn(ok); df_puts(" / 35\n" as *u8)
105 if ok >= 27 { df_puts("verdict=GREEN (writing-hub corpus on disk; grep knowledge/fetched/write_*.raw to ground the census + ladder)\n" as *u8); sys_exit(0); return 0 }
106 df_puts("verdict=PARTIAL (re-run to resume -- idempotent have-skip)\n" as *u8)
107 sys_exit(1); return 1
108}