1mod agent_sessions;
4pub mod agent_state;
5pub(crate) mod agents;
6mod agents_daemon;
7pub(crate) mod assemble;
8pub mod asset_paths;
9mod bytes;
10mod calendar;
11pub(crate) mod clock;
12mod collections;
13mod command_policy;
14mod compression;
15mod concurrency;
16mod connectors;
17mod cookies;
18mod crypto;
19mod csv;
20mod datetime;
21mod event_log;
22pub(crate) mod files;
23mod flow;
24mod fs;
25mod git;
26pub(crate) mod harn_entry;
27pub(crate) mod hitl;
28mod hitl_read;
29pub mod host;
30pub(crate) mod io;
31mod iter;
32pub(crate) mod json;
33mod json_query;
34pub(crate) mod json_stream;
35mod junit;
36mod logging;
37pub mod long_running;
38mod math;
39mod memory;
40mod monitors;
41mod multipart;
42mod options;
43mod path;
44mod pool;
45mod postgres;
46pub mod process;
47mod project;
48mod project_catalog;
49mod project_enrich;
50mod regex;
51pub(crate) mod registration;
52mod review;
53mod runtime_scope;
54pub(crate) mod sandbox;
55pub mod secret_scan;
56mod sets;
57pub(crate) mod shapes;
58mod skills;
59mod strings;
60pub(crate) mod supervisor;
61pub mod template;
62mod testbench;
63mod testing;
64pub(crate) mod tool_hooks;
65pub(crate) mod tools;
66pub mod tracing;
67mod transcript_compact;
68mod triggers_stdlib;
69mod tui;
70mod types;
71mod url_parse;
72mod vision;
73pub(crate) mod waitpoint;
74mod waitpoints;
75mod web;
76pub mod workflow_messages;
77
78use crate::http::register_http_builtins;
79use crate::llm::register_llm_builtins;
80use crate::mcp::register_mcp_builtins;
81use crate::mcp_server::register_mcp_server_builtins;
82use crate::vm::Vm;
83
84pub(crate) use crate::schema::{json_to_vm_value, schema_result_value};
85pub(crate) fn set_thread_source_dir(dir: &std::path::Path) {
86 process::set_thread_source_dir(dir);
87}
88
89pub fn register_core_stdlib(vm: &mut Vm) {
91 crate::runtime_context::register_runtime_context_builtins(vm);
92 types::register_type_builtins(vm);
93 math::register_math_builtins(vm);
94 strings::register_string_builtins(vm);
95 json::register_json_builtins(vm);
96 json_stream::register_json_stream_builtins(vm);
97 datetime::register_datetime_builtins(vm);
98 calendar::register_calendar_builtins(vm);
99 regex::register_regex_builtins(vm);
100 bytes::register_bytes_builtins(vm);
101 compression::register_compression_builtins(vm);
102 command_policy::register_command_policy_builtins(vm);
103 runtime_scope::register_runtime_scope_builtins(vm);
104 crypto::register_crypto_builtins(vm);
105 csv::register_csv_builtins(vm);
106 junit::register_junit_builtins(vm);
107 multipart::register_multipart_builtins(vm);
108 url_parse::register_url_builtins(vm);
109 web::register_web_builtins(vm);
110 cookies::register_cookie_builtins(vm);
111 path::register_path_helper_builtins(vm);
112 sets::register_set_builtins(vm);
113 collections::register_collection_builtins(vm);
114 iter::register_iter_builtins(vm);
115 event_log::register_event_log_builtins(vm);
116 shapes::register_shape_builtins(vm);
117 testing::register_testing_builtins(vm);
118 flow::register_flow_builtins(vm);
119}
120
121pub fn register_io_stdlib(vm: &mut Vm) {
123 io::register_io_builtins(vm);
124 host::register_host_builtins(vm);
125 fs::register_fs_builtins(vm);
126 files::register_file_builtins(vm);
127 git::register_git_builtins(vm);
128 vision::register_vision_builtins(vm);
129 agent_state::register_agent_state_builtins(vm);
130 memory::register_memory_builtins(vm);
131 process::register_process_builtins(vm);
132 process::register_path_builtins(vm);
133 sandbox::register_sandbox_builtins(vm);
134 clock::register_clock_builtins(vm);
137 testbench::register_testbench_builtins(vm);
138 project::register_project_builtins(vm);
139 tracing::register_tracing_builtins(vm);
140 tui::register_tui_builtins(vm);
141}
142
143pub fn register_agent_stdlib(vm: &mut Vm) {
145 concurrency::register_concurrency_builtins(vm);
146 connectors::register_connector_builtins(vm);
147 review::register_review_builtins(vm);
148 secret_scan::register_secret_scan_builtins(vm);
149 tools::register_tool_builtins(vm);
150 tool_hooks::register_tool_hooks_builtins(vm);
151 crate::composition::register_composition_builtins(vm);
152 skills::register_skill_builtins(vm);
153 agents_daemon::register_daemon_builtins(vm);
154 triggers_stdlib::register_trigger_builtins(vm);
155 postgres::register_postgres_builtins(vm);
156 waitpoints::register_waitpoint_builtins(vm);
157 monitors::register_monitor_builtins(vm);
158 hitl::register_hitl_builtins(vm);
159 hitl_read::register_hitl_read_builtins(vm);
160 waitpoint::register_waitpoint_builtins(vm);
161 supervisor::register_supervisor_builtins(vm);
162 agents::register_agent_builtins(vm);
163 pool::register_pool_builtins(vm);
164 agent_sessions::register_agent_session_builtins(vm);
165 workflow_messages::register_workflow_message_builtins(vm);
166 transcript_compact::register_transcript_compaction_builtins(vm);
167 assemble::register_assemble_context_builtin(vm);
168 crate::egress::register_egress_builtins(vm);
169 register_http_builtins(vm);
170 register_llm_builtins(vm);
171 register_mcp_builtins(vm);
172 register_mcp_server_builtins(vm);
173 crate::step_runtime::register_step_builtins(vm);
174}
175
176pub fn register_vm_stdlib(vm: &mut Vm) {
178 register_core_stdlib(vm);
179 register_io_stdlib(vm);
180 register_agent_stdlib(vm);
181}
182
183pub(crate) fn rebind_execution_state_builtins(vm: &mut Vm) {
184 concurrency::register_concurrency_builtins(vm);
185}
186
187fn stdlib_probe_vm() -> Vm {
188 let mut vm = Vm::new();
189 register_vm_stdlib(&mut vm);
190 let tmp = std::env::temp_dir();
194 crate::store::register_store_builtins(&mut vm, &tmp);
195 crate::checkpoint::register_checkpoint_builtins(&mut vm, &tmp, "default");
196 crate::metadata::register_metadata_builtins(&mut vm, &tmp);
197 crate::metadata::register_scan_builtins(&mut vm);
198 vm
199}
200
201pub fn stdlib_builtin_names() -> Vec<String> {
204 let vm = stdlib_probe_vm();
205 let mut names = vm.builtin_names();
206 for extra in [
209 "spawn",
210 "await",
211 "cancel",
212 "cancel_graceful",
213 "__signal_interrupted",
214 "__signal_off_interrupt",
215 "__signal_on_interrupt",
216 "__signal_raise",
217 "is_cancelled",
218 ] {
219 names.push(extra.to_string());
220 }
221 names
222}
223
224pub fn stdlib_builtin_metadata() -> Vec<crate::vm::VmBuiltinMetadata> {
226 stdlib_probe_vm().builtin_metadata()
227}
228
229pub fn reset_stdlib_state() {
242 logging::reset_logging_state();
243 process::reset_process_state();
244 clock::reset_clock_state();
245 io::reset_io_state();
246 sandbox::reset_sandbox_state();
247 fs::reset_fs_state();
248 json::reset_json_state();
249 json_stream::reset_json_stream_state();
250 host::reset_host_state();
251 crate::egress::reset_egress_policy_for_host();
252 hitl::reset_hitl_state();
253 crate::http::reset_http_state();
254 monitors::reset_monitor_state();
255 waitpoints::reset_waitpoint_state();
256 waitpoint::reset_waitpoint_state();
257 triggers_stdlib::reset_auto_resume_timeouts();
258 postgres::reset_postgres_state();
259 supervisor::reset_supervisor_state();
260 agents::records::reset_eval_metrics();
261 agents::records::reset_friction_events();
262 tools::clear_current_tool_registry();
263 tools::clear_tool_synthesis_cache();
264 vision::reset_vision_state();
265 crate::skills::clear_current_skill_registry();
266 template::reset_prompt_registry();
267 crate::triggers::clear_webhook_intake_state();
268 crate::llm::cache::reset_in_process_cache_state();
269}