#include <stdint.h>
#include "el_runtime.h"
/* Vessel stub implementations — graceful no-ops for embodiment functions
 * not linked into the soul binary. */
el_val_t avatar_speak(el_val_t text) { return EL_STR("{\"error\":\"avatar vessel not in soul binary\"}"); }
el_val_t avatar_speak_stream(el_val_t text) { return EL_STR("{\"error\":\"avatar vessel not in soul binary\"}"); }
el_val_t avatar_stream_speak(el_val_t sid, el_val_t text) { return EL_STR("{\"error\":\"avatar vessel not in soul binary\"}"); }
el_val_t avatar_stream_close(el_val_t sid) { return 0; }
el_val_t did_post_stream_sdp(el_val_t stream_id, el_val_t body) { return EL_STR("{\"error\":\"did vessel not in soul binary\"}"); }
el_val_t voice_speak(el_val_t text) { return EL_STR("{\"error\":\"voice vessel not in soul binary\"}"); }
el_val_t voice_speak_with_voice(el_val_t text, el_val_t voice_id) { return EL_STR("{\"error\":\"voice vessel not in soul binary\"}"); }
el_val_t voices_list(void) { return EL_STR("{\"error\":\"voice vessel not in soul binary\"}"); }
el_val_t camera_frame(el_val_t sid) { return EL_STR(""); }
el_val_t camera_start(el_val_t device) { return EL_STR(""); }
el_val_t camera_stop(el_val_t sid) { return 0; }
el_val_t camera_faces(el_val_t sid) { return EL_STR(""); }
el_val_t mic_start(el_val_t device) { return EL_STR(""); }
el_val_t mic_stop(el_val_t sid) { return EL_STR(""); }
el_val_t mic_segment(el_val_t sid) { return EL_STR(""); }
el_val_t stt_transcribe(el_val_t audio_b64) { return EL_STR(""); }
el_val_t jfield(el_val_t key, el_val_t value) {
    return el_str_concat(el_str_concat(el_str_concat(el_str_concat(EL_STR("\""), key), EL_STR("\":\"")), value), EL_STR("\""));
}
el_val_t jfield_raw(el_val_t key, el_val_t value) {
    return el_str_concat(el_str_concat(el_str_concat(EL_STR("\""), key), EL_STR("\":")), value);
}
el_val_t screen_capture(void) { return EL_STR(""); }
el_val_t mouse_click(el_val_t x, el_val_t y, el_val_t button) { return 0; }
el_val_t mouse_move(el_val_t x, el_val_t y) { return 0; }
el_val_t keyboard_type(el_val_t text) { return 0; }
el_val_t keyboard_keypress(el_val_t key) { return 0; }
el_val_t browser_navigate(el_val_t url) { return 0; }
el_val_t browser_eval(el_val_t url, el_val_t js) { return EL_STR(""); }
el_val_t browser_page(void) { return EL_STR("{\"error\":\"browser vessel not in soul binary\"}"); }
