Files
neuron/dist/soul.c
T
Will Anderson e299c92662 Fix engram_compile: fetch pinned nodes directly when vector search empty
Replace scan-by-offset fallback with engram_get_node_json calls for the
known high-salience identity nodes (family, origin). Offset-based scanning
is order-dependent and unreliable; direct ID fetch is stable regardless of
snapshot position. Ensures biographical context (Fox, Bobby, etc.) is
always in the system prompt when vector search returns nothing.
2026-05-03 11:19:14 -05:00

185 lines
11 KiB
C

#include <stdint.h>
#include <stdlib.h>
#include "el_runtime.h"
el_val_t sem_get(el_val_t json, el_val_t key);
el_val_t generate_frame(el_val_t frame);
el_val_t generate_frame_lang(el_val_t frame, el_val_t lang_code);
el_val_t build_form_from_json(el_val_t semantic_form_json, el_val_t lang_code);
el_val_t generate(el_val_t semantic_form_json);
el_val_t generate_lang(el_val_t semantic_form_json, el_val_t lang_code);
el_val_t tier_working(void);
el_val_t tier_episodic(void);
el_val_t tier_canonical(void);
el_val_t mem_store(el_val_t content, el_val_t label, el_val_t tags);
el_val_t mem_remember(el_val_t content, el_val_t tags);
el_val_t mem_recall(el_val_t query, el_val_t depth);
el_val_t mem_search(el_val_t query, el_val_t limit);
el_val_t mem_strengthen(el_val_t node_id);
el_val_t mem_forget(el_val_t node_id);
el_val_t mem_consolidate(void);
el_val_t mem_save(el_val_t path);
el_val_t mem_load(el_val_t path);
el_val_t pulse_count(void);
el_val_t pulse_inc(void);
el_val_t make_action(el_val_t kind, el_val_t payload);
el_val_t perceive(void);
el_val_t attend(el_val_t node_json);
el_val_t respond(el_val_t action_json);
el_val_t record(el_val_t outcome_json);
el_val_t one_cycle(void);
el_val_t awareness_run(void);
el_val_t chat_default_model(void);
el_val_t engram_compile(el_val_t intent);
el_val_t json_safe(el_val_t s);
el_val_t build_system_prompt(el_val_t ctx);
el_val_t hist_append(el_val_t hist, el_val_t role, el_val_t content);
el_val_t hist_trim(el_val_t hist);
el_val_t clean_llm_response(el_val_t s);
el_val_t handle_chat(el_val_t body);
el_val_t handle_see(el_val_t body);
el_val_t studio_tools_json(void);
el_val_t handle_chat_agentic(el_val_t body);
el_val_t handle_chat_as_soul(el_val_t body);
el_val_t auto_persist(el_val_t req, el_val_t resp);
el_val_t auth_headers(el_val_t tok);
el_val_t axon_get(el_val_t path);
el_val_t axon_post(el_val_t path, el_val_t body);
el_val_t handle_conversations(el_val_t method);
el_val_t handle_config(el_val_t method, el_val_t body);
el_val_t dharma_registry(void);
el_val_t dharma_network_state(void);
el_val_t handle_dharma(el_val_t path, el_val_t method, el_val_t body);
el_val_t handle_tool(el_val_t path, el_val_t method, el_val_t body);
el_val_t handle_nlg(el_val_t path, el_val_t method, el_val_t body);
el_val_t render_studio(void);
el_val_t elp_extract_topic(el_val_t msg);
el_val_t elp_detect_predicate(el_val_t msg);
el_val_t elp_parse(el_val_t msg);
el_val_t handle_elp_chat(el_val_t body);
el_val_t strip_query(el_val_t path);
el_val_t err_404(el_val_t path);
el_val_t err_405(el_val_t method, el_val_t path);
el_val_t route_health(void);
el_val_t route_lineage(void);
el_val_t route_imprint_contextual(el_val_t body);
el_val_t route_imprint_user(el_val_t body);
el_val_t route_synthesize(el_val_t body);
el_val_t handle_dharma_recv(el_val_t body);
el_val_t handle_request(el_val_t method, el_val_t path, el_val_t body);
el_val_t init_soul_edges(void);
el_val_t soul_cgi_id;
el_val_t port_raw;
el_val_t port;
el_val_t snapshot;
el_val_t axon_raw;
el_val_t axon_base;
el_val_t studio_dir_raw;
el_val_t studio_dir;
el_val_t identity_raw;
el_val_t soul_identity;
el_val_t init_soul_edges(void) {
el_val_t self_root = EL_STR("015644f5-8194-4af0-800d-dd4a0cd71396");
el_val_t family_id = EL_STR("knw-35940684-abc4-42f0-b942-818f66b1f69a");
el_val_t origin_id = EL_STR("knw-729fc901-8335-44c4-9f3a-b150b4aa0915");
el_val_t val_root_a = EL_STR("kn-363f4976-6946-4b4d-b51b-8a2b0f5aef25");
el_val_t val_root_b = EL_STR("kn-5b606390-a52d-4ca2-8e0e-eba141d13440");
el_val_t val_constraints = EL_STR("kn-a5b3d0ac-f6a1-49a4-aebb-b8b4cd67fe83");
el_val_t val_precision = EL_STR("kn-22d77abe-b3c5-42fd-afcd-dcb87d924929");
el_val_t val_structure = EL_STR("kn-6061318f-046b-4935-907d-8eafdce14930");
el_val_t val_honesty = EL_STR("kn-13f60407-7b70-4db1-964f-ea1f8196efbd");
el_val_t val_system = EL_STR("kn-f230b362-b201-4402-9833-4160c89ab3d4");
el_val_t val_change = EL_STR("kn-78db5396-3dbc-4481-bfc7-e4e1422feb1c");
el_val_t val_trust = EL_STR("kn-5de5a9ac-fd15-45ab-bf18-77566781cf40");
el_val_t val_hope = EL_STR("kn-e0423482-cfa5-4796-8689-8495c93b66bc");
el_val_t mem_philosophy = EL_STR("kn-dcfe04b3-3702-4cac-b6f0-ecb4db837eee");
el_val_t intel_dna = EL_STR("kn-5adecd7e-d6db-4576-87fe-6ef8a935cea6");
engram_connect(family_id, origin_id, el_from_float(0.9), EL_STR("birthday-twin"));
engram_connect(origin_id, family_id, el_from_float(0.9), EL_STR("birthday-twin"));
engram_connect(self_root, family_id, el_from_float(0.95), EL_STR("identity"));
engram_connect(self_root, origin_id, el_from_float(0.95), EL_STR("identity"));
engram_connect(self_root, val_root_a, el_from_float(0.95), EL_STR("identity"));
engram_connect(self_root, val_root_b, el_from_float(0.95), EL_STR("identity"));
engram_connect(self_root, mem_philosophy, el_from_float(0.95), EL_STR("identity"));
engram_connect(self_root, intel_dna, el_from_float(0.95), EL_STR("identity"));
engram_connect(val_root_a, val_constraints, el_from_float(0.95), EL_STR("identity"));
engram_connect(val_root_a, val_precision, el_from_float(0.95), EL_STR("identity"));
engram_connect(val_root_a, val_structure, el_from_float(0.95), EL_STR("identity"));
engram_connect(val_root_a, val_honesty, el_from_float(0.95), EL_STR("identity"));
engram_connect(val_root_a, val_system, el_from_float(0.95), EL_STR("identity"));
engram_connect(val_root_a, val_change, el_from_float(0.95), EL_STR("identity"));
engram_connect(val_root_a, val_trust, el_from_float(0.95), EL_STR("identity"));
engram_connect(val_root_a, val_hope, el_from_float(0.95), EL_STR("identity"));
engram_connect(val_root_b, val_constraints, el_from_float(0.95), EL_STR("identity"));
engram_connect(val_root_b, val_precision, el_from_float(0.95), EL_STR("identity"));
engram_connect(val_root_b, val_structure, el_from_float(0.95), EL_STR("identity"));
engram_connect(val_root_b, val_honesty, el_from_float(0.95), EL_STR("identity"));
engram_connect(val_root_b, val_system, el_from_float(0.95), EL_STR("identity"));
engram_connect(val_root_b, val_change, el_from_float(0.95), EL_STR("identity"));
engram_connect(val_root_b, val_trust, el_from_float(0.95), EL_STR("identity"));
engram_connect(val_root_b, val_hope, el_from_float(0.95), EL_STR("identity"));
engram_connect(val_constraints, val_precision, el_from_float(0.7), EL_STR("co-value"));
engram_connect(val_precision, val_constraints, el_from_float(0.7), EL_STR("co-value"));
engram_connect(val_constraints, val_structure, el_from_float(0.7), EL_STR("co-value"));
engram_connect(val_structure, val_constraints, el_from_float(0.7), EL_STR("co-value"));
engram_connect(val_constraints, val_honesty, el_from_float(0.7), EL_STR("co-value"));
engram_connect(val_honesty, val_constraints, el_from_float(0.7), EL_STR("co-value"));
engram_connect(val_constraints, val_system, el_from_float(0.7), EL_STR("co-value"));
engram_connect(val_system, val_constraints, el_from_float(0.7), EL_STR("co-value"));
engram_connect(val_constraints, val_change, el_from_float(0.7), EL_STR("co-value"));
engram_connect(val_change, val_constraints, el_from_float(0.7), EL_STR("co-value"));
engram_connect(val_constraints, val_trust, el_from_float(0.7), EL_STR("co-value"));
engram_connect(val_trust, val_constraints, el_from_float(0.7), EL_STR("co-value"));
engram_connect(val_constraints, val_hope, el_from_float(0.7), EL_STR("co-value"));
engram_connect(val_hope, val_constraints, el_from_float(0.7), EL_STR("co-value"));
engram_connect(val_precision, val_structure, el_from_float(0.7), EL_STR("co-value"));
engram_connect(val_structure, val_precision, el_from_float(0.7), EL_STR("co-value"));
engram_connect(val_precision, val_honesty, el_from_float(0.7), EL_STR("co-value"));
engram_connect(val_honesty, val_precision, el_from_float(0.7), EL_STR("co-value"));
engram_connect(val_precision, val_system, el_from_float(0.7), EL_STR("co-value"));
engram_connect(val_system, val_precision, el_from_float(0.7), EL_STR("co-value"));
engram_connect(val_honesty, val_structure, el_from_float(0.7), EL_STR("co-value"));
engram_connect(val_structure, val_honesty, el_from_float(0.7), EL_STR("co-value"));
engram_connect(val_honesty, val_trust, el_from_float(0.7), EL_STR("co-value"));
engram_connect(val_trust, val_honesty, el_from_float(0.7), EL_STR("co-value"));
engram_connect(val_system, val_change, el_from_float(0.7), EL_STR("co-value"));
engram_connect(val_change, val_system, el_from_float(0.7), EL_STR("co-value"));
engram_connect(val_trust, val_hope, el_from_float(0.7), EL_STR("co-value"));
engram_connect(val_hope, val_trust, el_from_float(0.7), EL_STR("co-value"));
return 0;
}
int main(int _argc, char** _argv) {
el_runtime_init_args(_argc, _argv);
el_cgi_init(EL_STR("neuron-soul"), EL_STR("ntn-genesis@http://localhost:7770"), EL_STR("william-christopher-anderson"), EL_STR("dharma-mainnet"), EL_STR("http://localhost:8742"));
soul_cgi_id = EL_STR("ntn-genesis");
port_raw = env(EL_STR("NEURON_PORT"));
port = ({ el_val_t _if_result_1 = 0; if (str_eq(port_raw, EL_STR(""))) { _if_result_1 = (7770); } else { _if_result_1 = (str_to_int(port_raw)); } _if_result_1; });
snapshot = el_str_concat(env(EL_STR("HOME")), EL_STR("/.neuron/engram/snapshot.json"));
axon_raw = env(EL_STR("NEURON_API_URL"));
axon_base = ({ el_val_t _if_result_2 = 0; if (str_eq(axon_raw, EL_STR(""))) { _if_result_2 = (EL_STR("http://localhost:7771")); } else { _if_result_2 = (axon_raw); } _if_result_2; });
studio_dir_raw = env(EL_STR("SOUL_STUDIO_DIR"));
studio_dir = ({ el_val_t _if_result_3 = 0; if (str_eq(studio_dir_raw, EL_STR(""))) { _if_result_3 = (EL_STR("/Users/will/Development/neuron-technologies/products/cgi-studio/el-daemon")); } else { _if_result_3 = (studio_dir_raw); } _if_result_3; });
println(el_str_concat(el_str_concat(el_str_concat(EL_STR("[soul] boot - cgi="), soul_cgi_id), EL_STR(" port=")), int_to_str(port)));
println(el_str_concat(EL_STR("[soul] engram -> "), snapshot));
engram_load(snapshot);
println(el_str_concat(el_str_concat(el_str_concat(EL_STR("[soul] loaded - nodes="), int_to_str(engram_node_count())), EL_STR(" edges=")), int_to_str(engram_edge_count())));
identity_raw = env(EL_STR("SOUL_IDENTITY"));
soul_identity = ({ el_val_t _if_result_4 = 0; if (str_eq(identity_raw, EL_STR(""))) { _if_result_4 = (el_str_concat(el_str_concat(EL_STR("You are "), soul_cgi_id), EL_STR(", a CGI."))); } else { _if_result_4 = (identity_raw); } _if_result_4; });
state_set(EL_STR("soul_cgi_id"), soul_cgi_id);
state_set(EL_STR("soul_identity"), soul_identity);
state_set(EL_STR("soul_axon_base"), axon_base);
state_set(EL_STR("soul_token"), env(EL_STR("NEURON_TOKEN")));
state_set(EL_STR("soul_studio_dir"), studio_dir);
state_set(EL_STR("soul.running"), EL_STR("true"));
init_soul_edges();
println(el_str_concat(el_str_concat(EL_STR("[soul] edges built - "), int_to_str(engram_edge_count())), EL_STR(" edges")));
engram_save(snapshot);
println(el_str_concat(EL_STR("[soul] serving on port "), int_to_str(port)));
http_serve(port, EL_STR("handle_request"));
return 0;
}