Add agentic tool access for Neuron in DHARMA rooms
Adds handle_dharma_room_turn_agentic to chat.el — same full tool loop
as handle_chat_agentic but reads transcript directly (not message), and
returns {response, cgi_id, tools_used} to match the dharma room shape.
Registers dharma_room_turn_agentic as a new event type in routes.el so
the studio can dispatch @neuron turns through this dedicated path.
This commit is contained in:
Vendored
+28
-6
@@ -45,6 +45,7 @@ el_val_t dispatch_tool(el_val_t tool_name, el_val_t tool_input);
|
||||
el_val_t handle_chat_agentic(el_val_t body);
|
||||
el_val_t handle_chat_as_soul(el_val_t body);
|
||||
el_val_t handle_dharma_room_turn(el_val_t body);
|
||||
el_val_t handle_dharma_room_turn_agentic(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);
|
||||
@@ -77,12 +78,15 @@ el_val_t soul_cgi_id_raw;
|
||||
el_val_t soul_cgi_id;
|
||||
el_val_t port_raw;
|
||||
el_val_t port;
|
||||
el_val_t engram_url_raw;
|
||||
el_val_t engram_api_key_raw;
|
||||
el_val_t snapshot_raw;
|
||||
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 using_http_engram;
|
||||
el_val_t identity_raw;
|
||||
el_val_t soul_identity;
|
||||
el_val_t is_genesis;
|
||||
@@ -165,6 +169,8 @@ int main(int _argc, char** _argv) {
|
||||
soul_cgi_id = ({ el_val_t _if_result_1 = 0; if (str_eq(soul_cgi_id_raw, EL_STR(""))) { _if_result_1 = (EL_STR("ntn-genesis")); } else { _if_result_1 = (soul_cgi_id_raw); } _if_result_1; });
|
||||
port_raw = env(EL_STR("NEURON_PORT"));
|
||||
port = ({ el_val_t _if_result_2 = 0; if (str_eq(port_raw, EL_STR(""))) { _if_result_2 = (7770); } else { _if_result_2 = (str_to_int(port_raw)); } _if_result_2; });
|
||||
engram_url_raw = env(EL_STR("ENGRAM_URL"));
|
||||
engram_api_key_raw = env(EL_STR("ENGRAM_API_KEY"));
|
||||
snapshot_raw = env(EL_STR("SOUL_ENGRAM_PATH"));
|
||||
snapshot = ({ el_val_t _if_result_3 = 0; if (str_eq(snapshot_raw, EL_STR(""))) { _if_result_3 = (el_str_concat(env(EL_STR("HOME")), EL_STR("/.neuron/engram/snapshot.json"))); } else { _if_result_3 = (snapshot_raw); } _if_result_3; });
|
||||
axon_raw = env(EL_STR("NEURON_API_URL"));
|
||||
@@ -172,24 +178,40 @@ int main(int _argc, char** _argv) {
|
||||
studio_dir_raw = env(EL_STR("SOUL_STUDIO_DIR"));
|
||||
studio_dir = ({ el_val_t _if_result_5 = 0; if (str_eq(studio_dir_raw, EL_STR(""))) { _if_result_5 = (EL_STR("/Users/will/Development/neuron-technologies/products/cgi-studio/el-daemon")); } else { _if_result_5 = (studio_dir_raw); } _if_result_5; });
|
||||
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())));
|
||||
using_http_engram = !str_eq(engram_url_raw, EL_STR(""));
|
||||
if (using_http_engram) {
|
||||
println(el_str_concat(EL_STR("[soul] engram -> HTTP "), engram_url_raw));
|
||||
el_val_t nodes_json = http_get(el_str_concat(engram_url_raw, EL_STR("/api/nodes?limit=10000")));
|
||||
el_val_t edges_json = http_get(el_str_concat(engram_url_raw, EL_STR("/api/edges")));
|
||||
el_val_t nodes_part = ({ el_val_t _if_result_6 = 0; if (str_eq(nodes_json, EL_STR(""))) { _if_result_6 = (EL_STR("[]")); } else { _if_result_6 = (nodes_json); } _if_result_6; });
|
||||
el_val_t edges_part = ({ el_val_t _if_result_7 = 0; if (str_eq(edges_json, EL_STR(""))) { _if_result_7 = (EL_STR("[]")); } else { _if_result_7 = (edges_json); } _if_result_7; });
|
||||
el_val_t snapshot_data = el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("{\"nodes\":"), nodes_part), EL_STR(",\"edges\":")), edges_part), EL_STR("}"));
|
||||
el_val_t tmp_path = el_str_concat(el_str_concat(EL_STR("/tmp/soul-engram-"), soul_cgi_id), EL_STR(".json"));
|
||||
fs_write(tmp_path, snapshot_data);
|
||||
engram_load(tmp_path);
|
||||
println(el_str_concat(el_str_concat(el_str_concat(EL_STR("[soul] loaded from HTTP Engram - nodes="), int_to_str(engram_node_count())), EL_STR(" edges=")), int_to_str(engram_edge_count())));
|
||||
} else {
|
||||
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_6 = 0; if (str_eq(identity_raw, EL_STR(""))) { _if_result_6 = (el_str_concat(el_str_concat(EL_STR("You are "), soul_cgi_id), EL_STR(", a CGI."))); } else { _if_result_6 = (identity_raw); } _if_result_6; });
|
||||
soul_identity = ({ el_val_t _if_result_8 = 0; if (str_eq(identity_raw, EL_STR(""))) { _if_result_8 = (el_str_concat(el_str_concat(EL_STR("You are "), soul_cgi_id), EL_STR(", a CGI."))); } else { _if_result_8 = (identity_raw); } _if_result_8; });
|
||||
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_snapshot_path"), snapshot);
|
||||
state_set(EL_STR("soul_engram_url"), engram_url_raw);
|
||||
state_set(EL_STR("soul_engram_api_key"), engram_api_key_raw);
|
||||
state_set(EL_STR("soul.running"), EL_STR("true"));
|
||||
is_genesis = str_eq(soul_cgi_id, EL_STR("ntn-genesis"));
|
||||
if (is_genesis) {
|
||||
init_soul_edges();
|
||||
println(el_str_concat(el_str_concat(EL_STR("[soul] edges built - "), int_to_str(engram_edge_count())), EL_STR(" edges")));
|
||||
state_set(EL_STR("soul_snapshot_path"), snapshot);
|
||||
engram_save(snapshot);
|
||||
}
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user