Files
neuron/dist/semantics.c
T
will.anderson 00f15b094b
Deploy Soul to GKE / deploy (push) Failing after 12m39s
Neuron Soul CI / build (push) Failing after 12m49s
feat(soul): add sessions layer, MCP connectors, conversation continuity fix
- sessions.el: new sessions module with session management and approval gate
- routes.el: wire /api/sessions routes (list, get, create, approve, tool_result)
- chat.el: thread-aware activation — short messages anchor to last reply
  before engram compilation so follow-ups stay on-topic
- chat.el: agentic path tracks per-session history (session_hist_{id})
  instead of shared conv_history, seeding each turn with prior context
- chat.el: add call_neuron_mcp, dispatch_tool, is_builtin_tool, next_bridge_id
  agentic_loop, bridge_save, agentic_resume, handle_tool_result
- dist/soul: rebuild with all of the above
2026-06-15 12:40:47 -05:00

299 lines
10 KiB
C
Generated

#include <stdint.h>
#include <stdlib.h>
#include "el_runtime.h"
el_val_t sem_frame(el_val_t intent, el_val_t subject, el_val_t obj, el_val_t modifiers);
el_val_t sem_frame_lang(el_val_t intent, el_val_t subject, el_val_t obj, el_val_t modifiers, el_val_t lang_code);
el_val_t sem_frame_simple(el_val_t intent, el_val_t subject);
el_val_t sem_frame_obj(el_val_t intent, el_val_t subject, el_val_t obj);
el_val_t sem_intent(el_val_t frame);
el_val_t sem_subject(el_val_t frame);
el_val_t sem_object(el_val_t frame);
el_val_t sem_modifiers(el_val_t frame);
el_val_t sem_lang(el_val_t frame);
el_val_t sem_first_modifier(el_val_t mods);
el_val_t sem_intent_to_realize(el_val_t intent);
el_val_t sem_to_spec(el_val_t frame);
el_val_t sem_to_spec_full(el_val_t frame, el_val_t verb, el_val_t tense, el_val_t aspect);
el_val_t sem_realize_greet(el_val_t subject);
el_val_t sem_realize(el_val_t frame);
el_val_t sem_realize_full(el_val_t frame, el_val_t verb, el_val_t tense, el_val_t aspect);
el_val_t sem_realize_lang(el_val_t frame, el_val_t lang_code);
el_val_t sem_frame(el_val_t intent, el_val_t subject, el_val_t obj, el_val_t modifiers) {
el_val_t r = native_list_empty();
r = native_list_append(r, EL_STR("intent"));
r = native_list_append(r, intent);
r = native_list_append(r, EL_STR("subject"));
r = native_list_append(r, subject);
r = native_list_append(r, EL_STR("object"));
r = native_list_append(r, obj);
r = native_list_append(r, EL_STR("modifiers"));
r = native_list_append(r, modifiers);
r = native_list_append(r, EL_STR("lang"));
r = native_list_append(r, EL_STR("en"));
return r;
return 0;
}
el_val_t sem_frame_lang(el_val_t intent, el_val_t subject, el_val_t obj, el_val_t modifiers, el_val_t lang_code) {
el_val_t r = native_list_empty();
r = native_list_append(r, EL_STR("intent"));
r = native_list_append(r, intent);
r = native_list_append(r, EL_STR("subject"));
r = native_list_append(r, subject);
r = native_list_append(r, EL_STR("object"));
r = native_list_append(r, obj);
r = native_list_append(r, EL_STR("modifiers"));
r = native_list_append(r, modifiers);
r = native_list_append(r, EL_STR("lang"));
r = native_list_append(r, lang_code);
return r;
return 0;
}
el_val_t sem_frame_simple(el_val_t intent, el_val_t subject) {
return sem_frame(intent, subject, EL_STR(""), EL_STR(""));
return 0;
}
el_val_t sem_frame_obj(el_val_t intent, el_val_t subject, el_val_t obj) {
return sem_frame(intent, subject, obj, EL_STR(""));
return 0;
}
el_val_t sem_intent(el_val_t frame) {
return slots_get(frame, EL_STR("intent"));
return 0;
}
el_val_t sem_subject(el_val_t frame) {
return slots_get(frame, EL_STR("subject"));
return 0;
}
el_val_t sem_object(el_val_t frame) {
return slots_get(frame, EL_STR("object"));
return 0;
}
el_val_t sem_modifiers(el_val_t frame) {
return slots_get(frame, EL_STR("modifiers"));
return 0;
}
el_val_t sem_lang(el_val_t frame) {
el_val_t code = slots_get(frame, EL_STR("lang"));
if (str_eq(code, EL_STR(""))) {
return EL_STR("en");
}
return code;
return 0;
}
el_val_t sem_first_modifier(el_val_t mods) {
el_val_t n = str_len(mods);
if (n == 0) {
return EL_STR("");
}
el_val_t i = 0;
el_val_t running = 1;
while (running) {
if (i >= n) {
running = 0;
} else {
el_val_t c = str_slice(mods, i, (i + 1));
if (str_eq(c, EL_STR(";"))) {
running = 0;
} else {
i = (i + 1);
}
}
}
return str_slice(mods, 0, i);
return 0;
}
el_val_t sem_intent_to_realize(el_val_t intent) {
if (str_eq(intent, EL_STR("assert"))) {
return EL_STR("assert");
}
if (str_eq(intent, EL_STR("query"))) {
return EL_STR("question");
}
if (str_eq(intent, EL_STR("describe"))) {
return EL_STR("assert");
}
if (str_eq(intent, EL_STR("greet"))) {
return EL_STR("greet");
}
return EL_STR("assert");
return 0;
}
el_val_t sem_to_spec(el_val_t frame) {
el_val_t intent = sem_intent(frame);
el_val_t subject = sem_subject(frame);
el_val_t obj = sem_object(frame);
el_val_t mods = sem_modifiers(frame);
el_val_t lang_code = sem_lang(frame);
el_val_t location = sem_first_modifier(mods);
if (str_eq(intent, EL_STR("greet"))) {
el_val_t spec = native_list_empty();
spec = native_list_append(spec, EL_STR("intent"));
spec = native_list_append(spec, EL_STR("greet"));
spec = native_list_append(spec, EL_STR("agent"));
spec = native_list_append(spec, subject);
spec = native_list_append(spec, EL_STR("predicate"));
spec = native_list_append(spec, EL_STR(""));
spec = native_list_append(spec, EL_STR("patient"));
spec = native_list_append(spec, EL_STR(""));
spec = native_list_append(spec, EL_STR("location"));
spec = native_list_append(spec, EL_STR(""));
spec = native_list_append(spec, EL_STR("tense"));
spec = native_list_append(spec, EL_STR("present"));
spec = native_list_append(spec, EL_STR("aspect"));
spec = native_list_append(spec, EL_STR("simple"));
spec = native_list_append(spec, EL_STR("lang"));
spec = native_list_append(spec, lang_code);
return spec;
}
if (str_eq(intent, EL_STR("describe"))) {
el_val_t spec = native_list_empty();
spec = native_list_append(spec, EL_STR("intent"));
spec = native_list_append(spec, EL_STR("assert"));
spec = native_list_append(spec, EL_STR("agent"));
spec = native_list_append(spec, subject);
spec = native_list_append(spec, EL_STR("predicate"));
spec = native_list_append(spec, EL_STR("be"));
spec = native_list_append(spec, EL_STR("patient"));
spec = native_list_append(spec, obj);
spec = native_list_append(spec, EL_STR("location"));
spec = native_list_append(spec, location);
spec = native_list_append(spec, EL_STR("tense"));
spec = native_list_append(spec, EL_STR("present"));
spec = native_list_append(spec, EL_STR("aspect"));
spec = native_list_append(spec, EL_STR("simple"));
spec = native_list_append(spec, EL_STR("lang"));
spec = native_list_append(spec, lang_code);
return spec;
}
el_val_t realize_intent = sem_intent_to_realize(intent);
el_val_t spec = native_list_empty();
spec = native_list_append(spec, EL_STR("intent"));
spec = native_list_append(spec, realize_intent);
spec = native_list_append(spec, EL_STR("agent"));
spec = native_list_append(spec, subject);
spec = native_list_append(spec, EL_STR("predicate"));
spec = native_list_append(spec, obj);
spec = native_list_append(spec, EL_STR("patient"));
spec = native_list_append(spec, EL_STR(""));
spec = native_list_append(spec, EL_STR("location"));
spec = native_list_append(spec, location);
spec = native_list_append(spec, EL_STR("tense"));
spec = native_list_append(spec, EL_STR("present"));
spec = native_list_append(spec, EL_STR("aspect"));
spec = native_list_append(spec, EL_STR("simple"));
spec = native_list_append(spec, EL_STR("lang"));
spec = native_list_append(spec, lang_code);
return spec;
return 0;
}
el_val_t sem_to_spec_full(el_val_t frame, el_val_t verb, el_val_t tense, el_val_t aspect) {
el_val_t intent = sem_intent(frame);
el_val_t subject = sem_subject(frame);
el_val_t obj = sem_object(frame);
el_val_t mods = sem_modifiers(frame);
el_val_t lang_code = sem_lang(frame);
el_val_t location = sem_first_modifier(mods);
if (str_eq(intent, EL_STR("greet"))) {
return sem_to_spec(frame);
}
if (str_eq(intent, EL_STR("describe"))) {
el_val_t spec = native_list_empty();
spec = native_list_append(spec, EL_STR("intent"));
spec = native_list_append(spec, EL_STR("assert"));
spec = native_list_append(spec, EL_STR("agent"));
spec = native_list_append(spec, subject);
spec = native_list_append(spec, EL_STR("predicate"));
spec = native_list_append(spec, EL_STR("be"));
spec = native_list_append(spec, EL_STR("patient"));
spec = native_list_append(spec, obj);
spec = native_list_append(spec, EL_STR("location"));
spec = native_list_append(spec, location);
spec = native_list_append(spec, EL_STR("tense"));
spec = native_list_append(spec, tense);
spec = native_list_append(spec, EL_STR("aspect"));
spec = native_list_append(spec, aspect);
spec = native_list_append(spec, EL_STR("lang"));
spec = native_list_append(spec, lang_code);
return spec;
}
el_val_t realize_intent = sem_intent_to_realize(intent);
el_val_t spec = native_list_empty();
spec = native_list_append(spec, EL_STR("intent"));
spec = native_list_append(spec, realize_intent);
spec = native_list_append(spec, EL_STR("agent"));
spec = native_list_append(spec, subject);
spec = native_list_append(spec, EL_STR("predicate"));
spec = native_list_append(spec, verb);
spec = native_list_append(spec, EL_STR("patient"));
spec = native_list_append(spec, obj);
spec = native_list_append(spec, EL_STR("location"));
spec = native_list_append(spec, location);
spec = native_list_append(spec, EL_STR("tense"));
spec = native_list_append(spec, tense);
spec = native_list_append(spec, EL_STR("aspect"));
spec = native_list_append(spec, aspect);
spec = native_list_append(spec, EL_STR("lang"));
spec = native_list_append(spec, lang_code);
return spec;
return 0;
}
el_val_t sem_realize_greet(el_val_t subject) {
if (str_eq(subject, EL_STR(""))) {
return EL_STR("Hello.");
}
return el_str_concat(el_str_concat(EL_STR("Hello, "), subject), EL_STR("."));
return 0;
}
el_val_t sem_realize(el_val_t frame) {
el_val_t intent = sem_intent(frame);
if (str_eq(intent, EL_STR("greet"))) {
return sem_realize_greet(sem_subject(frame));
}
el_val_t spec = sem_to_spec(frame);
return realize(spec);
return 0;
}
el_val_t sem_realize_full(el_val_t frame, el_val_t verb, el_val_t tense, el_val_t aspect) {
el_val_t intent = sem_intent(frame);
if (str_eq(intent, EL_STR("greet"))) {
return sem_realize_greet(sem_subject(frame));
}
el_val_t spec = sem_to_spec_full(frame, verb, tense, aspect);
return realize(spec);
return 0;
}
el_val_t sem_realize_lang(el_val_t frame, el_val_t lang_code) {
el_val_t intent = sem_intent(frame);
if (str_eq(intent, EL_STR("greet"))) {
return sem_realize_greet(sem_subject(frame));
}
el_val_t patched = slots_set(frame, EL_STR("lang"), lang_code);
el_val_t spec = sem_to_spec(patched);
return realize(spec);
return 0;
}
int main(int _argc, char** _argv) {
el_runtime_init_args(_argc, _argv);
return 0;
}