runtime: sync from foundation/el; HEAD method support, plus all uncommitted runtime work from prior sessions
This commit is contained in:
+1741
-110
File diff suppressed because it is too large
Load Diff
@@ -364,6 +364,19 @@ el_val_t engram_node(el_val_t content, el_val_t node_type, el_val_t salience);
|
|||||||
el_val_t engram_node_full(el_val_t content, el_val_t node_type, el_val_t label,
|
el_val_t engram_node_full(el_val_t content, el_val_t node_type, el_val_t label,
|
||||||
el_val_t salience, el_val_t importance, el_val_t confidence,
|
el_val_t salience, el_val_t importance, el_val_t confidence,
|
||||||
el_val_t tier, el_val_t tags);
|
el_val_t tier, el_val_t tags);
|
||||||
|
/* Layered consciousness — see el_runtime.c for the layered architecture
|
||||||
|
* design notes (search "Layered consciousness architecture"). The five
|
||||||
|
* canonical layers (safety / core-identity / domain-knowledge / imprint /
|
||||||
|
* suit) are seeded automatically; engram_add_layer extends the registry
|
||||||
|
* with imprint or suit overlays at runtime. Nodes default to layer 1
|
||||||
|
* (core-identity) when created via engram_node / engram_node_full. */
|
||||||
|
el_val_t engram_node_layered(el_val_t content, el_val_t node_type, el_val_t label,
|
||||||
|
el_val_t salience, el_val_t certainty, el_val_t confidence,
|
||||||
|
el_val_t status, el_val_t tags, el_val_t layer_id);
|
||||||
|
el_val_t engram_add_layer(el_val_t name, el_val_t priority, el_val_t suppressible,
|
||||||
|
el_val_t transparent, el_val_t injectable);
|
||||||
|
el_val_t engram_remove_layer(el_val_t layer_id);
|
||||||
|
el_val_t engram_list_layers(void);
|
||||||
el_val_t engram_get_node(el_val_t id);
|
el_val_t engram_get_node(el_val_t id);
|
||||||
void engram_strengthen(el_val_t node_id);
|
void engram_strengthen(el_val_t node_id);
|
||||||
void engram_forget(el_val_t node_id);
|
void engram_forget(el_val_t node_id);
|
||||||
@@ -375,6 +388,8 @@ el_val_t engram_edge_between(el_val_t from_id, el_val_t to_id);
|
|||||||
el_val_t engram_neighbors(el_val_t node_id);
|
el_val_t engram_neighbors(el_val_t node_id);
|
||||||
el_val_t engram_neighbors_filtered(el_val_t node_id, el_val_t max_depth, el_val_t direction);
|
el_val_t engram_neighbors_filtered(el_val_t node_id, el_val_t max_depth, el_val_t direction);
|
||||||
el_val_t engram_edge_count(void);
|
el_val_t engram_edge_count(void);
|
||||||
|
/* Three-pass activation: background fan-out → working-memory promotion →
|
||||||
|
* Layer 0 override. See "Three-pass activation" in el_runtime.c. */
|
||||||
el_val_t engram_activate(el_val_t query, el_val_t depth);
|
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_save(el_val_t path);
|
||||||
el_val_t engram_load(el_val_t path);
|
el_val_t engram_load(el_val_t path);
|
||||||
@@ -388,6 +403,12 @@ 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_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_activate_json(el_val_t query, el_val_t depth);
|
||||||
el_val_t engram_stats_json(void);
|
el_val_t engram_stats_json(void);
|
||||||
|
el_val_t engram_list_layers_json(void);
|
||||||
|
/* engram_compile_layered_json — produce a prompt-ready text block split
|
||||||
|
* into "[LAYER 0 — STRUCTURAL]" (non-suppressible layers, sacred fire)
|
||||||
|
* and "[ENGRAM CONTEXT]" (standard suppressible layers). Returns "" if
|
||||||
|
* no nodes promoted to working memory. */
|
||||||
|
el_val_t engram_compile_layered_json(el_val_t intent, el_val_t depth);
|
||||||
|
|
||||||
/* ── LLM (Anthropic API client) ─────────────────────────────────────────────
|
/* ── LLM (Anthropic API client) ─────────────────────────────────────────────
|
||||||
* All functions call https://api.anthropic.com/v1/messages with the API key
|
* All functions call https://api.anthropic.com/v1/messages with the API key
|
||||||
@@ -476,6 +497,21 @@ el_val_t pq_hybrid_handshake(el_val_t remote_pub_combined);
|
|||||||
|
|
||||||
el_val_t sha3_256_hex(el_val_t input);
|
el_val_t sha3_256_hex(el_val_t input);
|
||||||
|
|
||||||
|
/* ── AEAD: AES-256-GCM (libcrypto-backed) ───────────────────────────────────
|
||||||
|
* Symmetric authenticated encryption used to wrap envelopes after a KEM
|
||||||
|
* handshake. Caller MUST supply a 32-byte key (64 hex chars) — typically the
|
||||||
|
* Kyber-768 / hybrid shared_secret, optionally normalized via SHA3-256.
|
||||||
|
*
|
||||||
|
* aead_encrypt returns a JSON map {"nonce":"...","ciphertext":"..."} where
|
||||||
|
* ciphertext is the AES-256-GCM output with the 16-byte auth tag appended.
|
||||||
|
* Nonce is a fresh 12-byte CSPRNG draw — callers never pick the nonce, which
|
||||||
|
* structurally rules out the GCM nonce-reuse footgun.
|
||||||
|
*
|
||||||
|
* aead_decrypt returns the plaintext String, or "" on any failure (including
|
||||||
|
* auth-tag mismatch). Callers MUST check for "" before trusting the result. */
|
||||||
|
el_val_t aead_encrypt(el_val_t key_hex, el_val_t plaintext);
|
||||||
|
el_val_t aead_decrypt(el_val_t key_hex, el_val_t nonce_hex, el_val_t ciphertext_hex);
|
||||||
|
|
||||||
/* ── Native VM builtin aliases (for compiled El source) ─────────────────────
|
/* ── Native VM builtin aliases (for compiled El source) ─────────────────────
|
||||||
* These match the El VM's native_* builtins so that El source compiled
|
* These match the El VM's native_* builtins so that El source compiled
|
||||||
* to C can call the same names without modification. */
|
* to C can call the same names without modification. */
|
||||||
@@ -502,6 +538,16 @@ el_val_t get(el_val_t list, el_val_t index); /* el_list_get */
|
|||||||
el_val_t map_get(el_val_t map, el_val_t key); /* el_map_get */
|
el_val_t map_get(el_val_t map, el_val_t key); /* el_map_get */
|
||||||
el_val_t map_set(el_val_t map, el_val_t key, el_val_t value); /* el_map_set */
|
el_val_t map_set(el_val_t map, el_val_t key, el_val_t value); /* el_map_set */
|
||||||
|
|
||||||
|
/* ── OTLP/HTTP Observability ─────────────────────────────────────────────── */
|
||||||
|
/* See bottom of el_runtime.c for the implementation.
|
||||||
|
* Configured by env vars OTLP_ENDPOINT, OTEL_SERVICE_NAME, OTEL_SERVICE_VERSION.
|
||||||
|
* No-op when OTLP_ENDPOINT is unset. Drop-on-failure semantics. */
|
||||||
|
el_val_t emit_log(el_val_t level, el_val_t msg, el_val_t fields_json);
|
||||||
|
el_val_t emit_metric(el_val_t name, el_val_t value, el_val_t tags_json);
|
||||||
|
el_val_t trace_span_start(el_val_t name);
|
||||||
|
el_val_t trace_span_end(el_val_t span_handle);
|
||||||
|
el_val_t emit_event(el_val_t name, el_val_t duration_ms);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user