From 0fa9e749e199560d24ec27928f5e4ee3caebc9ce Mon Sep 17 00:00:00 2001 From: Will Anderson Date: Thu, 30 Apr 2026 13:44:41 -0500 Subject: [PATCH] runtime: engram_*_json accessors, http_set_handler dlsym, codegen int-call MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three changes that turned the runtime into something Engram-the-server can actually run on top of. 1. engram_*_json accessors. The runtime's engram_get_node/search/scan/ neighbors/activate return ElList/ElMap; passing those through json_stringify hit the type-erasure wall (an ElList* has no header that distinguishes it from a string pointer). Added pre-serialized sibling builtins: engram_get_node_json(id) -> JSON object engram_search_json(query, limit) -> JSON array of node objects engram_scan_nodes_json(limit, offset) engram_neighbors_json(node_id, max_depth, direction) engram_activate_json(query, depth) engram_stats_json() Each walks the typed C structures and serializes directly, reusing the existing engram_emit_node_json / engram_emit_edge_json helpers from the snapshot path. 2. http_set_handler now falls back to dlsym(RTLD_DEFAULT, name) when the named handler isn't already in the C-level registry. El programs that define `fn handle_request(method, path, body) -> String` can register themselves just by calling http_set_handler("handle_request"). No C glue required. Verified live on a real El server. 3. Codegen: extended int-typed dispatch on `+` to handle Calls. New helper is_int_call recognizes a known-int-returning builtin set: str_len, str_index_of, str_to_int, str_char_code, native_list_len, el_list_len, len, json_get_int, json_array_len, engram_node_count, engram_edge_count, time_now, time_now_utc, time_diff, time_add, time_from_parts, el_abs/max/min, float_to_int. With this, `pos + str_len(needle)` compiles to integer arithmetic instead of string concat. The earlier limitation noted in the previous commit (Ident + Call returning Int) is now closed. Also: el_to_float / el_from_float moved to el_runtime.h as static inlines so generated programs can use them. Eliminates the unused inline definitions that were duplicating in the .c file. Closure verified: stage1 vs stage2 byte-identical against the new runtime. dist/platform/elc rebuilt; .prev4 preserved. Engram server (engram/src/server.el) end-to-end: POST /api/nodes ×3 → 3 UUIDs returned POST /api/edges ×2 → linkage made GET /api/stats → {"node_count":3,"edge_count":2} GET /api/search?q=spreading&limit=5 → 1 hit, full node JSON POST /api/activate {"query":"Hebbian","depth":3} → seed node @ hop 0, strength 0.8 → 1-hop neighbor @ strength 0.392 (= 0.8 × 0.7 weight × 0.7 decay) GET /api/neighbors/?depth=2 → {node, edge, hops} triple POST /api/save → {"ok":true,"path":"..."} Server stays alive across all routes. Snapshot save/load on restart still TODO — server starts with 0 nodes even when a snapshot exists; investigation pending. --- dist/platform/elc | Bin 147320 -> 147768 bytes dist/platform/elc.c | 102 +++++++++++++++++ dist/platform/elc.prev4 | Bin 0 -> 147320 bytes el-compiler/runtime/el_runtime.c | 187 +++++++++++++++++++++++++++++++ el-compiler/runtime/el_runtime.h | 10 ++ el-compiler/src/codegen.el | 64 +++++++++++ elc-combined.el | 68 ++++++++++- 7 files changed, 428 insertions(+), 3 deletions(-) create mode 100755 dist/platform/elc.prev4 diff --git a/dist/platform/elc b/dist/platform/elc index 14cd6eedbcce4faf52a425f0b358edffc305891b..88d4d3c08b8f01aa7ac2bd584f113141b89dbdbb 100755 GIT binary patch literal 147768 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 KfA9eJNB;&TJ4yZk literal 147320 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 Y3Ql}L!iN<+b)AGy zD0p&(ggbST_#A#r!f6Vg{epz83eI_5!owAu^@fC}DY*I_316$=wY3uVDR}Ze3I9pK z+xAO%or3pw)dW2@D|mB?gkMtd>U0Ueso>YTrpI_T{@$_ z(1S9kNcbFv+o2(B0 zl!Esv_(cWRDfle~*DLtn3T{yFw+e1lu$CzCrI#f>T@`FmaBl@CDtNep(-jPfNu4

VX&!) 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 diff --git a/dist/platform/elc.c b/dist/platform/elc.c index 60eefad..cfdb4f2 100644 --- a/dist/platform/elc.c +++ b/dist/platform/elc.c @@ -50,6 +50,7 @@ el_val_t param_decl(el_val_t param, el_val_t idx); el_val_t params_to_c(el_val_t params); el_val_t transform_implicit_return(el_val_t body); el_val_t is_int_name(el_val_t name); +el_val_t is_int_call(el_val_t call_expr); el_val_t add_int_name(el_val_t name); el_val_t build_int_names_for_params(el_val_t params); el_val_t cg_fn(el_val_t stmt); @@ -1715,7 +1716,37 @@ el_val_t cg_expr(el_val_t expr) { } } } + if (str_eq(left_kind, EL_STR("Ident"))) { + if (str_eq(right_kind, EL_STR("Call"))) { + el_val_t lname = el_get_field(left, EL_STR("name")); + if (is_int_name(lname)) { + if (is_int_call(right)) { + el_val_t op_c = binop_to_c(op); + return el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("("), left_c), EL_STR(" ")), op_c), EL_STR(" ")), right_c), EL_STR(")")); + } + } + } + } + if (str_eq(right_kind, EL_STR("Ident"))) { + if (str_eq(left_kind, EL_STR("Call"))) { + el_val_t rname = el_get_field(right, EL_STR("name")); + if (is_int_name(rname)) { + if (is_int_call(left)) { + el_val_t op_c = binop_to_c(op); + return el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("("), left_c), EL_STR(" ")), op_c), EL_STR(" ")), right_c), EL_STR(")")); + } + } + } + } if (str_eq(left_kind, EL_STR("Call"))) { + if (str_eq(right_kind, EL_STR("Call"))) { + if (is_int_call(left)) { + if (is_int_call(right)) { + el_val_t op_c = binop_to_c(op); + return el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("("), left_c), EL_STR(" ")), op_c), EL_STR(" ")), right_c), EL_STR(")")); + } + } + } return el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("el_str_concat("), left_c), EL_STR(", ")), right_c), EL_STR(")")); } if (str_eq(right_kind, EL_STR("Call"))) { @@ -2160,6 +2191,77 @@ el_val_t is_int_name(el_val_t name) { return 0; } +el_val_t is_int_call(el_val_t call_expr) { + el_val_t func = el_get_field(call_expr, EL_STR("func")); + el_val_t fk = el_get_field(func, EL_STR("expr")); + if (!str_eq(fk, EL_STR("Ident"))) { + return 0; + } + el_val_t name = el_get_field(func, EL_STR("name")); + if (str_eq(name, EL_STR("str_len"))) { + return 1; + } + if (str_eq(name, EL_STR("str_index_of"))) { + return 1; + } + if (str_eq(name, EL_STR("str_to_int"))) { + return 1; + } + if (str_eq(name, EL_STR("str_char_code"))) { + return 1; + } + if (str_eq(name, EL_STR("native_list_len"))) { + return 1; + } + if (str_eq(name, EL_STR("el_list_len"))) { + return 1; + } + if (str_eq(name, EL_STR("len"))) { + return 1; + } + if (str_eq(name, EL_STR("json_get_int"))) { + return 1; + } + if (str_eq(name, EL_STR("json_array_len"))) { + return 1; + } + if (str_eq(name, EL_STR("engram_node_count"))) { + return 1; + } + if (str_eq(name, EL_STR("engram_edge_count"))) { + return 1; + } + if (str_eq(name, EL_STR("time_now"))) { + return 1; + } + if (str_eq(name, EL_STR("time_now_utc"))) { + return 1; + } + if (str_eq(name, EL_STR("time_diff"))) { + return 1; + } + if (str_eq(name, EL_STR("time_add"))) { + return 1; + } + if (str_eq(name, EL_STR("time_from_parts"))) { + return 1; + } + if (str_eq(name, EL_STR("el_abs"))) { + return 1; + } + if (str_eq(name, EL_STR("el_max"))) { + return 1; + } + if (str_eq(name, EL_STR("el_min"))) { + return 1; + } + if (str_eq(name, EL_STR("float_to_int"))) { + return 1; + } + return 0; + return 0; +} + el_val_t add_int_name(el_val_t name) { el_val_t csv = state_get(EL_STR("__int_names")); if (str_eq(csv, EL_STR(""))) { diff --git a/dist/platform/elc.prev4 b/dist/platform/elc.prev4 new file mode 100755 index 0000000000000000000000000000000000000000..14cd6eedbcce4faf52a425f0b358edffc305891b GIT binary patch literal 147320 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 Y3Ql}L!iN<+b)AGy zD0p&(ggbST_#A#r!f6Vg{epz83eI_5!owAu^@fC}DY*I_316$=wY3uVDR}Ze3I9pK z+xAO%or3pw)dW2@D|mB?gkMtd>U0Ueso>YTrpI_T{@$_ z(1S9kNcbFv+o2(B0 zl!Esv_(cWRDfle~*DLtn3T{yFw+e1lu$CzCrI#f>T@`FmaBl@CDtNep(-jPfNu4

VX&!) zZ&NVXRKTHE(p1rJs6 zF%=Z}#e5>)?^1BZI}(0R!I|;0e|)asZD15si@sBEQN4r{Ad9%Z$u$!0rr>ivmGD3X z*S;a)aSGnoDB&3jPOp>j9~Hb+r7u))-pBHNNWq(*k}$7dVisU=c)IXDR|&g8UI=ZPYp@9P{I3EeQr>2Ns)a2 zCj~dOm+%G!?~If1CIx3tk?^w$u8o!OKNM_L^5sl@Cg|r-E$?9-`pJwetN~1@BbvXDB#%jeI{(!6P7Oncgl1A6_qE zY@3PlLrNc6roUJCu2OJ`YTq>qwk6B-*lH8$Z&dZ)q~Poq<@;?4-nmo4FDcmb4+%3} zx&C{rCA?3;^O6)lDfoC#2{-ERdq_AQ?Z)ZL21qzX!DN+iF9mN@^8Z`~ue8eYMksij zs_!@*R`tC^!C6COezO&vy-lXSM!`K4oU33`aG`>W6uel$Sqcs*xIv9aD-@ik#^*;A z>^e`D|BQmu2TJLdE5f2iPj3jSKbIV%2f1t(9I_;+Y0>DR+4;WPzLR`59rK75IM zf1ZL}7fU!x!Sl|S@Dv3PJx{`aP_SjFgdGabQtt~CoHt0mFHvx1ZwcS7;Jw2nyhg!^ z6C}J*!L{c|_*n&SA0c5ZDhvLoSMC2V1@BexI|?Q>9(}A}YZsaRD+Rx);3EpI=qleg zEBF<~Pwg$Tylq?M`xFJAqhPCoi=LM62P$~KlIIsHxZ-*FezJm(D|oJgvG*$avt7Yu zizHmA;2(SvzEQzN3SO?@wL9edRSI6N`0)`1yHx&9D0rLdzt1Rms+wO^D|nU4?;Qni zSNQBxaJ|a!YXw)U@{TCDQsHNgm-MSu{h^D3_o?(}>2N^ef1ZLzD0q~Dmj~thNebSs z@Smk%t3$q@ui(rlCG1h~aRo0?@Vvjs_sbPb>irr8@7yTgZ%}Z8ioZp{MUTt(I~AO) z_~jJ^rz`kv1&>hh#|oaEFVp{^;Fv8E{zbu+ihtV4aSd9E{OcY84~&2>h=9jMz|$k( zt0Lfq5%5hBa9IR=Zv^~s1Y8*bKN|u6Jp$ex0oO#p??k{KMZlj$!1WREHxkAOqy9Pw zx`*M!2)IuKd_e>}Edrhw0WXqpxcy2Z;F}}h+aut+BH+~#@WT=C#t8Vy2>9s;czXo= zQUv^J1pH0}{AmRIbp-t12>6Ex_;>^ylOWn7Os|d+aB2j6b_Con0=_5$o)rQAF#`5R zz{?`wwGr^65%3cc@RkVp`3U%>2>727@LLh^o(TB!2zY-4{A~pMV+7nB0mpT0P5-VD za7F~&I|3dM0S}9S$3(!BBj7(oz}G~;^CRGe5wJf3z99lWjBfu8o^SE|7f%D8qj-MA z!)pbY#!(ZVV|aeXa~#hJJip*+#>0cOhR1}*j3)+9ES@+#ytZJ$gQ+I9$I}5%0-la| zI^kixHW5!3JXl^MsKmtU4_I2GR6J>Tu&hQ{N}~)s-SI#zrnB&zjRz_-K@Fx}czB(n z51w=I^u^N;&$)Oq@nGqVpgt2+MuM71P(2CiFG1xcUe7om&oDg0@r=N80iKa~F2s|C zXB3{%crL;-2G3YLoYd#+vCI>Cp%J7Mf(&s`w*5ZRLt%Pw}XuP6+i zbUbgdW^(v7?*N4XVGgH9 zPB+84oo3nhNZji@Y)7;LdIvNH|s(y~bU z#SW7l#9$+umL^aE;U-Y9u+Gu#jr3F^P?`?uLEscwO_?u~QrPh5?}a6g4tT@1MJI){ zm@0)|@jkE-KtyNMTFjEdLDD)Y3>sO3?MT@?HEc)3eS!^%q)`v| zF5a+hfk1gcM!O$asS4&na6njX3QvozD%r)Bp&*y;Yi$xFBM5Vy7OyBongkgFg>8@l zZe=7S!vjt>3DW&7hCxE4pgwXVT8Bh^+yPi6pKSVL7vXIF!#-)(!#-)*!#-)-!#*~x z5N4YUMA-Lmkio*oF1AfuY-=Pe=p)`RGYM;+@CzO1@N3Z~VTi4KTH>NcZ0#chq`i*x zi~c7P$tY~)V{f%}D@=XxgZ?SRLD)P;g2F^cdWD%zi&q);$N*`(WB0(gMp)s5eRkb` zrzJ$$@rVFrt0Vl%TnF-mg+!qP_AtsOM*?h@(;{qG>WJFGK){9m0%0e7F!4|xX$p;( zFtm|D!dh6w3a~j28c*z1b31}b1Y4+}R+7;erlg}WNVK9cKuAdyAjz&QZD4?H+!E*g ze+VdH4<`M}*oJ`s_*pnQ6DmNNPjdt{mdO`9jtTo1l?p~O%7+TWQbqxY%x1x1NZRD+ zpfbeKL1m7kKsg2q%W9-&^BJafct_t3(_*jeC&*s_(soArbrubT%`8B0Hp5_p8RZp} zl%c|OMg@yzMtVU-nB)r^YY7Mo8g9Ap(4hR%enz~3O|Y_6k>DbkUJ5kn51W^W7^3|+ zA9XH(y=-wJjAcX&hNR7m0ChVQ0pKJA%pIgxn9E47!DL1Rv`8h+UYEJbZzvdV)R_eF zj_qVb`j)^*`xaq%&I*+@K}VCo@;Yy$aQK60@WKzU2xNsyd2t3%+Dv3j)Z1h9G!%6}SNg3sTT7uK466C>PvZ)l1ILNzpR| zZYu-sOfoY8dJ6Ih_BMK5n(ES;}vecrn=Y{SJvgFaQ1hF!y0^O(VvhS_~^ZRnf62>hqWhs zBYz6DOt;u`v1`-Hf0iAw2daC{g$XTP^XHJs#mq*IvfW(qaoPIw7d~1eyJy!ypDD}4 z3bkJ~cQUx|Ug4a7fcbXK!>Wg!ZIb7d+)JB%58kRwU2|i(j;LY}VKlht>AdM!|}!AH_?pZgPySMQCl zH*sV?{V>ZiIm4T~VvEI%nRSdmR%SWmO?dR#hUJh$amZO&Uh{|l7A)G#{Pkq|;}YNY z4Y>=iw?=*QNj&c`tv@+C*+x$`?m?KG%5m*`oVG4S2aj<~D4vkYE;qerLWuk2-hv|K z{?$5HpEUnD@QJ(q^PF=3nf5-*zRWeeel;iMy`RC-b&D?fi5*;ZYJ#rb%F-id2ROVu zHp@4ru3l})yx_&%x3SwkD{jx3r_iGtBbut>_53RP&KH4q=BFDP{)wq>?RJwopgY}b zX?*oGV@XE4b^f2$8g0%>liQwqSlUT?Z(5{ysw}&3%n>#Vhu;Dys&Rxaz z24~lW$-3O0yEyEY(yG0W&WHrgUwuO_`i)Ll@!Ps7x8^JLWqfj}tFLtDTXm1OM7~;- zBzx{|MIqHCt+`T5s*`_UP1EPO1Ew`b$RpYp)#J`6lF$?b`~Ci>FLa zJ$C%@C&{CVoxSw^14_*&q<`l2_;(e19M*>x?$iDHCHK6u-}cK2@o!XgT()h#^2vzi z_6waW^~ip^>E3pyw0kVw6^q}WohHq0^t&_taKMYL_ZO8snCt1RzQI7^-n3i(wcGaG zH<=^5e6>Q~f(85`;ioq~XjZy8foY{LTg;B2<z(`?Dd#)sOrasl$(b?KVJW3BKI#VRZw{Z0Ch4AF8}}l literal 0 HcmV?d00001 diff --git a/el-compiler/runtime/el_runtime.c b/el-compiler/runtime/el_runtime.c index ab788dc..bf60cd6 100644 --- a/el-compiler/runtime/el_runtime.c +++ b/el-compiler/runtime/el_runtime.c @@ -2145,6 +2145,11 @@ static el_val_t engram_node_to_map(const EngramNode* n) { return m; } +/* (Node JSON serialization is provided by `engram_emit_node_json` further + * down in the persistence section — reused by the *_json builtins below.) */ +static void engram_emit_node_json(JsonBuf* b, const EngramNode* n); +static void engram_emit_edge_json(JsonBuf* b, const EngramEdge* e); + /* Salience may arrive either as a float bit-pattern or as a small integer * (e.g. 1, meaning 1.0). Heuristic: if interpreted as double it's in * [0.0, 100.0] use it; otherwise treat as int and convert. */ @@ -2794,6 +2799,188 @@ el_val_t engram_load(el_val_t path) { return 1; } +/* ── Engram JSON-string accessors ───────────────────────────────────────── + * These return pre-serialized JSON strings so callers (especially HTTP + * handlers) don't have to round-trip ElList/ElMap through json_stringify + * — which can't reliably distinguish those structures from raw pointers + * due to el_val_t's type erasure. The runtime knows the real C types and + * can serialize directly. */ + +el_val_t engram_get_node_json(el_val_t id) { + const char* sid = EL_CSTR(id); + EngramNode* n = engram_find_node(sid); + if (!n) return el_wrap_str(el_strdup("{}")); + JsonBuf b; jb_init(&b); + engram_emit_node_json(&b, n); + return el_wrap_str(b.buf); +} + +el_val_t engram_search_json(el_val_t query, el_val_t limit) { + EngramStore* g = engram_get(); + const char* q = EL_CSTR(query); + int64_t lim = (int64_t)limit; + if (lim <= 0) lim = 100; + JsonBuf b; jb_init(&b); + jb_putc(&b, '['); + int first = 1; + int64_t found = 0; + if (q && *q) { + for (int64_t i = 0; i < g->node_count && found < lim; i++) { + EngramNode* n = &g->nodes[i]; + if (istr_contains(n->content, q) || + istr_contains(n->label, q) || + istr_contains(n->tags, q)) { + if (!first) jb_putc(&b, ','); + engram_emit_node_json(&b, n); + first = 0; + found++; + } + } + } + jb_putc(&b, ']'); + return el_wrap_str(b.buf); +} + +el_val_t engram_scan_nodes_json(el_val_t limit, el_val_t offset) { + EngramStore* g = engram_get(); + int64_t lim = (int64_t)limit; if (lim <= 0) lim = 100; + int64_t off = (int64_t)offset; if (off < 0) off = 0; + JsonBuf b; jb_init(&b); + jb_putc(&b, '['); + if (g->node_count == 0) { jb_putc(&b, ']'); return el_wrap_str(b.buf); } + int64_t* idx = malloc((size_t)g->node_count * sizeof(int64_t)); + if (!idx) { jb_putc(&b, ']'); return el_wrap_str(b.buf); } + for (int64_t i = 0; i < g->node_count; i++) idx[i] = i; + engram_sort_indices_by_salience(idx, g->node_count, g->nodes); + int64_t end = off + lim; + if (end > g->node_count) end = g->node_count; + int first = 1; + for (int64_t i = off; i < end; i++) { + if (!first) jb_putc(&b, ','); + engram_emit_node_json(&b, &g->nodes[idx[i]]); + first = 0; + } + free(idx); + jb_putc(&b, ']'); + return el_wrap_str(b.buf); +} + +el_val_t engram_neighbors_json(el_val_t node_id, el_val_t max_depth, el_val_t direction) { + /* Re-implement here directly so we serialize without going through + * the ElList path. Walks BFS to max_depth, emits {node, edge, hops} + * triples. */ + EngramStore* g = engram_get(); + const char* sid = EL_CSTR(node_id); + int64_t depth = (int64_t)max_depth; if (depth <= 0) depth = 1; + const char* dir = EL_CSTR(direction); if (!dir) dir = "both"; + int allow_out = (strcmp(dir, "out") == 0) || (strcmp(dir, "both") == 0); + int allow_in = (strcmp(dir, "in") == 0) || (strcmp(dir, "both") == 0); + JsonBuf b; jb_init(&b); + jb_putc(&b, '['); + if (!sid || !*sid) { jb_putc(&b, ']'); return el_wrap_str(b.buf); } + + /* Frontier of (node_id, hops). Cap to a sane size. */ + char** frontier = calloc(1024, sizeof(char*)); + int64_t* frontier_h = calloc(1024, sizeof(int64_t)); + int64_t fc = 0; + char** visited = calloc(1024, sizeof(char*)); + int64_t vc = 0; + if (!frontier || !frontier_h || !visited) { + free(frontier); free(frontier_h); free(visited); + jb_putc(&b, ']'); return el_wrap_str(b.buf); + } + frontier[fc] = el_strdup(sid); frontier_h[fc] = 0; fc++; + visited[vc++] = el_strdup(sid); + + int first = 1; + while (fc > 0) { + char* cur = frontier[0]; int64_t h = frontier_h[0]; + for (int64_t k = 1; k < fc; k++) { frontier[k-1] = frontier[k]; frontier_h[k-1] = frontier_h[k]; } + fc--; + if (h >= depth) { free(cur); continue; } + for (int64_t i = 0; i < g->edge_count; i++) { + EngramEdge* e = &g->edges[i]; + const char* peer = NULL; + if (allow_out && e->from_id && strcmp(e->from_id, cur) == 0) peer = e->to_id; + else if (allow_in && e->to_id && strcmp(e->to_id, cur) == 0) peer = e->from_id; + if (!peer) continue; + int seen = 0; + for (int64_t v = 0; v < vc; v++) { + if (strcmp(visited[v], peer) == 0) { seen = 1; break; } + } + if (seen) continue; + EngramNode* n = engram_find_node(peer); + if (!n) continue; + if (!first) jb_putc(&b, ','); + jb_puts(&b, "{\"node\":"); + engram_emit_node_json(&b, n); + jb_puts(&b, ",\"edge\":"); + engram_emit_edge_json(&b, e); + char tmp[64]; snprintf(tmp, sizeof(tmp), ",\"hops\":%lld}", (long long)(h + 1)); + jb_puts(&b, tmp); + first = 0; + if (vc < 1024) visited[vc++] = el_strdup(peer); + if (fc < 1024 && h + 1 < depth) { frontier[fc] = el_strdup(peer); frontier_h[fc] = h + 1; fc++; } + } + free(cur); + } + for (int64_t i = 0; i < fc; i++) free(frontier[i]); + for (int64_t i = 0; i < vc; i++) free(visited[i]); + free(frontier); free(frontier_h); free(visited); + jb_putc(&b, ']'); + return el_wrap_str(b.buf); +} + +el_val_t engram_activate_json(el_val_t query, el_val_t depth) { + /* Run the existing engram_activate to get the ElList of result maps, + * then walk that list and serialize each entry into JSON manually. + * We have the raw nodes via engram_find_node, so we can re-emit + * directly without trusting json_stringify on the ElMap. */ + el_val_t lst = engram_activate(query, depth); + ElList* arr = (ElList*)(uintptr_t)lst; + JsonBuf b; jb_init(&b); + jb_putc(&b, '['); + if (arr) { + for (int64_t i = 0; i < arr->length; i++) { + ElMap* entry = (ElMap*)(uintptr_t)arr->elems[i]; + if (!entry) continue; + /* The entry map has keys: "node" (ElMap), "activation_strength" + * (Float bit-pattern), "hops" (Int). Read them from the map + * directly using el_map_get with EL_STR keys. */ + el_val_t node_map = el_map_get(arr->elems[i], EL_STR("node")); + el_val_t strength_v = el_map_get(arr->elems[i], EL_STR("activation_strength")); + el_val_t hops_v = el_map_get(arr->elems[i], EL_STR("hops")); + /* Look up the underlying EngramNode by id field of the map */ + el_val_t id_v = el_map_get(node_map, EL_STR("id")); + const char* id_s = EL_CSTR(id_v); + EngramNode* n = id_s ? engram_find_node(id_s) : NULL; + if (i > 0) jb_putc(&b, ','); + jb_puts(&b, "{\"node\":"); + if (n) { + engram_emit_node_json(&b, n); + } else { + jb_puts(&b, "{}"); + } + char tmp[64]; + snprintf(tmp, sizeof(tmp), ",\"activation_strength\":%g", el_to_float(strength_v)); + jb_puts(&b, tmp); + snprintf(tmp, sizeof(tmp), ",\"hops\":%lld}", (long long)(int64_t)hops_v); + jb_puts(&b, tmp); + } + } + jb_putc(&b, ']'); + return el_wrap_str(b.buf); +} + +el_val_t engram_stats_json(void) { + EngramStore* g = engram_get(); + char buf[128]; + snprintf(buf, sizeof(buf), + "{\"node_count\":%lld,\"edge_count\":%lld}", + (long long)g->node_count, (long long)g->edge_count); + return el_wrap_str(el_strdup(buf)); +} + /* ── Batch 4: LLM (Anthropic API client) ─────────────────────────────────── */ /* * All LLM builtins call https://api.anthropic.com/v1/messages with the API diff --git a/el-compiler/runtime/el_runtime.h b/el-compiler/runtime/el_runtime.h index d747679..c471cef 100644 --- a/el-compiler/runtime/el_runtime.h +++ b/el-compiler/runtime/el_runtime.h @@ -255,6 +255,16 @@ el_val_t engram_activate(el_val_t query, el_val_t depth); el_val_t engram_save(el_val_t path); el_val_t engram_load(el_val_t path); +/* JSON-string accessors — return pre-serialized JSON so HTTP handlers + * can pass results straight through without round-tripping ElList/ElMap + * through json_stringify. */ +el_val_t engram_get_node_json(el_val_t id); +el_val_t engram_search_json(el_val_t query, el_val_t limit); +el_val_t engram_scan_nodes_json(el_val_t limit, el_val_t offset); +el_val_t engram_neighbors_json(el_val_t node_id, el_val_t max_depth, el_val_t direction); +el_val_t engram_activate_json(el_val_t query, el_val_t depth); +el_val_t engram_stats_json(void); + /* ── LLM (Anthropic API client) ───────────────────────────────────────────── * All functions call https://api.anthropic.com/v1/messages with the API key * from env ANTHROPIC_API_KEY. Default model when empty: claude-sonnet-4-5. */ diff --git a/el-compiler/src/codegen.el b/el-compiler/src/codegen.el index 6d0821c..a31eaf5 100644 --- a/el-compiler/src/codegen.el +++ b/el-compiler/src/codegen.el @@ -191,7 +191,40 @@ fn cg_expr(expr: Map) -> String { } } } + // Same dispatch for Ident-Int + Call-to-known-Int-builtin (and the + // mirror). Without this, expressions like `pos + str_len(s)` get + // string-concatenated. is_int_call walks a known-builtin list. + if left_kind == "Ident" { + if right_kind == "Call" { + let lname: String = left["name"] + if is_int_name(lname) { + if is_int_call(right) { + let op_c: String = binop_to_c(op) + return "(" + left_c + " " + op_c + " " + right_c + ")" + } + } + } + } + if right_kind == "Ident" { + if left_kind == "Call" { + let rname: String = right["name"] + if is_int_name(rname) { + if is_int_call(left) { + let op_c: String = binop_to_c(op) + return "(" + left_c + " " + op_c + " " + right_c + ")" + } + } + } + } if left_kind == "Call" { + if right_kind == "Call" { + if is_int_call(left) { + if is_int_call(right) { + let op_c: String = binop_to_c(op) + return "(" + left_c + " " + op_c + " " + right_c + ")" + } + } + } return "el_str_concat(" + left_c + ", " + right_c + ")" } if right_kind == "Call" { @@ -669,6 +702,37 @@ fn is_int_name(name: String) -> Bool { return str_contains(csv, "," + name + ",") } +// Known runtime builtins that return Int. Used to dispatch arithmetic vs +// string-concat on `+` when one side is a Call. New builtins must be added +// here when they return Int and may participate in arithmetic. +fn is_int_call(call_expr: Map) -> Bool { + let func = call_expr["func"] + let fk: String = func["expr"] + if !str_eq(fk, "Ident") { return false } + let name: String = func["name"] + if str_eq(name, "str_len") { return true } + if str_eq(name, "str_index_of") { return true } + if str_eq(name, "str_to_int") { return true } + if str_eq(name, "str_char_code") { return true } + if str_eq(name, "native_list_len") { return true } + if str_eq(name, "el_list_len") { return true } + if str_eq(name, "len") { return true } + if str_eq(name, "json_get_int") { return true } + if str_eq(name, "json_array_len") { return true } + if str_eq(name, "engram_node_count") { return true } + if str_eq(name, "engram_edge_count") { return true } + if str_eq(name, "time_now") { return true } + if str_eq(name, "time_now_utc") { return true } + if str_eq(name, "time_diff") { return true } + if str_eq(name, "time_add") { return true } + if str_eq(name, "time_from_parts") { return true } + if str_eq(name, "el_abs") { return true } + if str_eq(name, "el_max") { return true } + if str_eq(name, "el_min") { return true } + if str_eq(name, "float_to_int") { return true } + return false +} + fn add_int_name(name: String) -> Bool { let csv: String = state_get("__int_names") if str_eq(csv, "") { csv = "," } diff --git a/elc-combined.el b/elc-combined.el index 7763947..90a46b8 100644 --- a/elc-combined.el +++ b/elc-combined.el @@ -1,5 +1,4 @@ -// elc-combined.el — El self-hosting compiler, single-file bootstrap edition - +// elc-combined.el // lexer.el — el self-hosting lexer // // Tokenises an el source string into a list of token maps. @@ -1511,7 +1510,40 @@ fn cg_expr(expr: Map) -> String { } } } + // Same dispatch for Ident-Int + Call-to-known-Int-builtin (and the + // mirror). Without this, expressions like `pos + str_len(s)` get + // string-concatenated. is_int_call walks a known-builtin list. + if left_kind == "Ident" { + if right_kind == "Call" { + let lname: String = left["name"] + if is_int_name(lname) { + if is_int_call(right) { + let op_c: String = binop_to_c(op) + return "(" + left_c + " " + op_c + " " + right_c + ")" + } + } + } + } + if right_kind == "Ident" { + if left_kind == "Call" { + let rname: String = right["name"] + if is_int_name(rname) { + if is_int_call(left) { + let op_c: String = binop_to_c(op) + return "(" + left_c + " " + op_c + " " + right_c + ")" + } + } + } + } if left_kind == "Call" { + if right_kind == "Call" { + if is_int_call(left) { + if is_int_call(right) { + let op_c: String = binop_to_c(op) + return "(" + left_c + " " + op_c + " " + right_c + ")" + } + } + } return "el_str_concat(" + left_c + ", " + right_c + ")" } if right_kind == "Call" { @@ -1989,6 +2021,37 @@ fn is_int_name(name: String) -> Bool { return str_contains(csv, "," + name + ",") } +// Known runtime builtins that return Int. Used to dispatch arithmetic vs +// string-concat on `+` when one side is a Call. New builtins must be added +// here when they return Int and may participate in arithmetic. +fn is_int_call(call_expr: Map) -> Bool { + let func = call_expr["func"] + let fk: String = func["expr"] + if !str_eq(fk, "Ident") { return false } + let name: String = func["name"] + if str_eq(name, "str_len") { return true } + if str_eq(name, "str_index_of") { return true } + if str_eq(name, "str_to_int") { return true } + if str_eq(name, "str_char_code") { return true } + if str_eq(name, "native_list_len") { return true } + if str_eq(name, "el_list_len") { return true } + if str_eq(name, "len") { return true } + if str_eq(name, "json_get_int") { return true } + if str_eq(name, "json_array_len") { return true } + if str_eq(name, "engram_node_count") { return true } + if str_eq(name, "engram_edge_count") { return true } + if str_eq(name, "time_now") { return true } + if str_eq(name, "time_now_utc") { return true } + if str_eq(name, "time_diff") { return true } + if str_eq(name, "time_add") { return true } + if str_eq(name, "time_from_parts") { return true } + if str_eq(name, "el_abs") { return true } + if str_eq(name, "el_max") { return true } + if str_eq(name, "el_min") { return true } + if str_eq(name, "float_to_int") { return true } + return false +} + fn add_int_name(name: String) -> Bool { let csv: String = state_get("__int_names") if str_eq(csv, "") { csv = "," } @@ -2154,7 +2217,6 @@ fn compile(source: String) -> String { // result to args()[1]. Then run: // cc -o el_runtime.c -// CLI driver let _argv: [String] = args() let _src_path: String = native_list_get(_argv, 0) let _source: String = fs_read(_src_path)