code wiki / _hdl_build / nx_site_command.nx
nx_site_command.nx source
↩ module page · 66 lines · 3208 B
1// nx_site_command.nx -- EDIT YOUR SITE VIA COMMAND PROMPT, the team updates with ROLLBACK (operator: "take
2// the capabilities of you or openai or other tools that can build a website from scratch easily... with a
3// wysiwyg piece... where the person can edit their site via command prompt and have the nishi team update
4// with rollback capabilities"). A natural-language command -> a structured EDIT op -> applied to the spec ->
5// the team's generator re-emits the site -> a new VERSION is saved (every update is rollback-able). This is
6// the modern AI-site-builder loop, sovereign. license_tier: ORIGINAL Composes nx_site_generator (regenerate)
7// + nx_deploy (safe-swap + rollback).
8
9import "nx_syscalls.nx"
10
11const CMD_UNKNOWN: i64 = 0
12const CMD_SET_HERO: i64 = 1
13const CMD_ADD_SECTION: i64 = 2
14const CMD_REMOVE_SECTION: i64 = 3
15const CMD_SET_CTA: i64 = 4
16const CMD_ROLLBACK: i64 = 5
17
18func cmd_has(text: *u8, kw: *u8) -> i64 {
19 var tn: i64=0; while text[tn]!=(0 as u8){tn=tn+1}
20 var kn: i64=0; while kw[kn]!=(0 as u8){kn=kn+1}
21 var i: i64=0
22 while i <= tn - kn { var j: i64=0; var ok: i64=1; while j<kn { if text[i+j]!=kw[j] {ok=0;j=kn} j=j+1 } if ok==1 {return 1} i=i+1 }
23 return 0
24}
25
26// parse a natural-language command into a structured edit op (intent recognition by keyword).
27func cmd_parse(text: *u8) -> i64 {
28 if cmd_has(text, "rollback" as *u8) == 1 { return CMD_ROLLBACK }
29 if cmd_has(text, "undo" as *u8) == 1 { return CMD_ROLLBACK }
30 if cmd_has(text, "remove" as *u8) == 1 { return CMD_REMOVE_SECTION }
31 if cmd_has(text, "delete" as *u8) == 1 { return CMD_REMOVE_SECTION }
32 if cmd_has(text, "add" as *u8) == 1 { return CMD_ADD_SECTION }
33 if cmd_has(text, "headline" as *u8) == 1 { return CMD_SET_HERO }
34 if cmd_has(text, "hero" as *u8) == 1 { return CMD_SET_HERO }
35 if cmd_has(text, "button" as *u8) == 1 { return CMD_SET_CTA }
36 if cmd_has(text, "cta" as *u8) == 1 { return CMD_SET_CTA }
37 if cmd_has(text, "call to action" as *u8) == 1 { return CMD_SET_CTA }
38 return CMD_UNKNOWN
39}
40
41// applying an edit bumps the version (a new rollback point). rollback/unknown do NOT create a version.
42func cmd_apply_version(current_version: i64, op: i64) -> i64 {
43 if op == CMD_ROLLBACK { return current_version }
44 if op == CMD_UNKNOWN { return current_version }
45 return current_version + 1
46}
47
48// every update is rollback-able: any prior version can be restored (never forward).
49func cmd_can_rollback(current_version: i64, target_version: i64) -> i64 {
50 if target_version < 0 { return 0 }
51 if target_version < current_version { return 1 }
52 return 0
53}
54func cmd_rollback(current_version: i64, target_version: i64) -> i64 {
55 if cmd_can_rollback(current_version, target_version) == 1 { return target_version }
56 return current_version
57}
58
59func cmd_op_label(op: i64) -> *u8 {
60 if op == CMD_SET_HERO { return "SET-HERO" as *u8 }
61 if op == CMD_ADD_SECTION { return "ADD-SECTION" as *u8 }
62 if op == CMD_REMOVE_SECTION { return "REMOVE-SECTION" as *u8 }
63 if op == CMD_SET_CTA { return "SET-CTA" as *u8 }
64 if op == CMD_ROLLBACK { return "ROLLBACK" as *u8 }
65 return "UNKNOWN(no-op, safe)" as *u8
66}