1mod agent_sessions;
4pub mod agent_state;
5mod agents;
6mod agents_daemon;
7pub(crate) mod assemble;
8pub mod asset_paths;
9mod bytes;
10mod clock;
11mod collections;
12mod compression;
13mod concurrency;
14mod connectors;
15mod cookies;
16mod crypto;
17mod csv;
18mod datetime;
19mod flow;
20mod fs;
21pub(crate) mod hitl;
22mod hitl_read;
23pub mod host;
24pub(crate) mod io;
25mod iter;
26pub(crate) mod json;
27mod json_query;
28mod junit;
29mod logging;
30mod math;
31mod monitors;
32mod multipart;
33mod path;
34mod postgres;
35pub mod process;
36mod project;
37mod project_catalog;
38mod project_enrich;
39mod regex;
40mod review;
41pub(crate) mod sandbox;
42pub mod secret_scan;
43mod sets;
44mod shapes;
45mod skills;
46mod strings;
47pub(crate) mod supervisor;
48pub mod template;
49mod testing;
50pub(crate) mod tools;
51pub mod tracing;
52mod transcript_compact;
53mod triggers_stdlib;
54mod types;
55mod url_parse;
56mod vision;
57pub(crate) mod waitpoint;
58mod waitpoints;
59pub mod workflow_messages;
60
61use crate::http::register_http_builtins;
62use crate::llm::register_llm_builtins;
63use crate::mcp::register_mcp_builtins;
64use crate::mcp_server::register_mcp_server_builtins;
65use crate::vm::Vm;
66
67pub(crate) use crate::schema::{json_to_vm_value, schema_result_value};
68pub(crate) fn set_thread_source_dir(dir: &std::path::Path) {
69 process::set_thread_source_dir(dir);
70}
71
72pub fn register_core_stdlib(vm: &mut Vm) {
74 crate::runtime_context::register_runtime_context_builtins(vm);
75 types::register_type_builtins(vm);
76 math::register_math_builtins(vm);
77 strings::register_string_builtins(vm);
78 json::register_json_builtins(vm);
79 datetime::register_datetime_builtins(vm);
80 regex::register_regex_builtins(vm);
81 bytes::register_bytes_builtins(vm);
82 compression::register_compression_builtins(vm);
83 crypto::register_crypto_builtins(vm);
84 csv::register_csv_builtins(vm);
85 junit::register_junit_builtins(vm);
86 multipart::register_multipart_builtins(vm);
87 url_parse::register_url_builtins(vm);
88 cookies::register_cookie_builtins(vm);
89 path::register_path_helper_builtins(vm);
90 sets::register_set_builtins(vm);
91 collections::register_collection_builtins(vm);
92 iter::register_iter_builtins(vm);
93 shapes::register_shape_builtins(vm);
94 testing::register_testing_builtins(vm);
95 flow::register_flow_builtins(vm);
96}
97
98pub fn register_io_stdlib(vm: &mut Vm) {
100 io::register_io_builtins(vm);
101 host::register_host_builtins(vm);
102 fs::register_fs_builtins(vm);
103 vision::register_vision_builtins(vm);
104 agent_state::register_agent_state_builtins(vm);
105 process::register_process_builtins(vm);
106 process::register_path_builtins(vm);
107 clock::register_clock_builtins(vm);
110 project::register_project_builtins(vm);
111 tracing::register_tracing_builtins(vm);
112}
113
114pub fn register_agent_stdlib(vm: &mut Vm) {
116 concurrency::register_concurrency_builtins(vm);
117 connectors::register_connector_builtins(vm);
118 review::register_review_builtins(vm);
119 secret_scan::register_secret_scan_builtins(vm);
120 tools::register_tool_builtins(vm);
121 skills::register_skill_builtins(vm);
122 agents_daemon::register_daemon_builtins(vm);
123 triggers_stdlib::register_trigger_builtins(vm);
124 postgres::register_postgres_builtins(vm);
125 waitpoints::register_waitpoint_builtins(vm);
126 monitors::register_monitor_builtins(vm);
127 hitl::register_hitl_builtins(vm);
128 hitl_read::register_hitl_read_builtins(vm);
129 waitpoint::register_waitpoint_builtins(vm);
130 supervisor::register_supervisor_builtins(vm);
131 agents::register_agent_builtins(vm);
132 agent_sessions::register_agent_session_builtins(vm);
133 workflow_messages::register_workflow_message_builtins(vm);
134 transcript_compact::register_transcript_compaction_builtins(vm);
135 assemble::register_assemble_context_builtin(vm);
136 crate::egress::register_egress_builtins(vm);
137 register_http_builtins(vm);
138 register_llm_builtins(vm);
139 register_mcp_builtins(vm);
140 register_mcp_server_builtins(vm);
141}
142
143pub fn register_vm_stdlib(vm: &mut Vm) {
145 register_core_stdlib(vm);
146 register_io_stdlib(vm);
147 register_agent_stdlib(vm);
148}
149
150pub fn stdlib_builtin_names() -> Vec<String> {
153 let mut vm = Vm::new();
154 register_vm_stdlib(&mut vm);
155 let tmp = std::env::temp_dir();
159 crate::store::register_store_builtins(&mut vm, &tmp);
160 crate::checkpoint::register_checkpoint_builtins(&mut vm, &tmp, "default");
161 crate::metadata::register_metadata_builtins(&mut vm, &tmp);
162 crate::metadata::register_scan_builtins(&mut vm);
163 let mut names = vm.builtin_names();
164 for extra in [
167 "spawn",
168 "await",
169 "cancel",
170 "cancel_graceful",
171 "is_cancelled",
172 ] {
173 names.push(extra.to_string());
174 }
175 names
176}
177
178pub fn reset_stdlib_state() {
180 logging::reset_logging_state();
181 process::reset_process_state();
182 clock::reset_clock_state();
183 io::reset_io_state();
184 sandbox::reset_sandbox_state();
185 fs::reset_fs_state();
186 json::reset_json_state();
187 host::reset_host_state();
188 crate::egress::reset_egress_policy_for_host();
189 hitl::reset_hitl_state();
190 crate::http::reset_http_state();
191 monitors::reset_monitor_state();
192 waitpoints::reset_waitpoint_state();
193 waitpoint::reset_waitpoint_state();
194 postgres::reset_postgres_state();
195 supervisor::reset_supervisor_state();
196 agents::records::reset_eval_metrics();
197 agents::records::reset_friction_events();
198 tools::clear_current_tool_registry();
199 vision::reset_vision_state();
200 crate::skills::clear_current_skill_registry();
201 template::reset_prompt_registry();
202}