Add terminal control builtins: term_clear, cursor_to/up/down/col, term_size, term_save/restore_cursor, term_clear_line, print_inline, http_sse_post
Enables full TUI rendering from Engram programs — cursor positioning, screen clearing, inline (no-newline) printing, terminal size detection via TIOCGWINSZ, and SSE streaming with inline token output.
This commit is contained in:
@@ -250,6 +250,18 @@ impl TypeEnv {
|
||||
env.functions.insert(name.to_string(), str_fn(vec![s.clone()], s.clone()));
|
||||
}
|
||||
|
||||
// Terminal control builtins
|
||||
for name in &["term_clear", "term_save_cursor", "term_restore_cursor", "term_clear_line"] {
|
||||
env.functions.insert(name.to_string(), str_fn(vec![], Type::Void));
|
||||
}
|
||||
env.functions.insert("print_inline".into(), str_fn(vec![u.clone()], Type::Void));
|
||||
env.functions.insert("term_size".into(), str_fn(vec![], Type::Unknown));
|
||||
env.functions.insert("cursor_to".into(), str_fn(vec![i.clone(), i.clone()], Type::Void));
|
||||
env.functions.insert("cursor_up".into(), str_fn(vec![i.clone()], Type::Void));
|
||||
env.functions.insert("cursor_down".into(), str_fn(vec![i.clone()], Type::Void));
|
||||
env.functions.insert("cursor_col".into(), str_fn(vec![i.clone()], Type::Void));
|
||||
env.functions.insert("http_sse_post".into(), str_fn(vec![s.clone(), s.clone(), s.clone()], s.clone()));
|
||||
|
||||
// Math
|
||||
for name in &["math_abs","math_floor","math_ceil","math_round","math_sqrt"] {
|
||||
env.functions.insert(name.to_string(), str_fn(vec![u.clone()], u.clone()));
|
||||
|
||||
Reference in New Issue
Block a user