1pub fn harness_stdio_ambient(method: &str) -> Option<&'static str> {
6 match method {
7 "print" => Some("print"),
8 "println" => Some("println"),
9 "eprint" => Some("eprint"),
10 "eprintln" => Some("eprintln"),
11 "read_line" => Some("read_line"),
12 "prompt" => Some("prompt_user"),
13 _ => None,
14 }
15}
16
17pub fn harness_term_ambient(method: &str) -> Option<&'static str> {
18 match method {
19 "width" => Some("term_width"),
20 "height" => Some("term_height"),
21 "read_password" => Some("read_password"),
22 _ => None,
23 }
24}
25
26pub fn harness_clock_ambient(method: &str) -> Option<&'static str> {
27 match method {
28 "now_ms" => Some("now_ms"),
29 "monotonic_ms" | "elapsed" => Some("monotonic_ms"),
30 "sleep_ms" => Some("sleep_ms"),
31 "timestamp" => Some("timestamp"),
32 _ => None,
33 }
34}
35
36pub fn harness_fs_ambient(method: &str) -> Option<&'static str> {
37 match method {
38 "read_text" | "read" | "read_file" => Some("read_file"),
39 "read_text_result" | "read_result" => Some("read_file_result"),
40 "read_bytes" | "read_file_bytes" => Some("read_file_bytes"),
41 "write_text" | "write" | "write_file" => Some("write_file"),
42 "write_bytes" | "write_file_bytes" => Some("write_file_bytes"),
43 "exists" | "file_exists" => Some("file_exists"),
44 "delete" | "delete_file" | "remove" => Some("delete_file"),
45 "append" | "append_file" => Some("append_file"),
46 "list_dir" | "list" => Some("list_dir"),
47 "mkdir" | "create_dir" => Some("mkdir"),
48 "path_join" => Some("path_join"),
49 "copy" | "copy_file" => Some("copy_file"),
50 "temp_dir" => Some("temp_dir"),
51 "mkdtemp" => Some("mkdtemp"),
52 "stat" => Some("stat"),
53 "rename" | "move" | "move_file" => Some("move_file"),
54 "read_lines" => Some("read_lines"),
55 "walk" | "walk_dir" => Some("walk_dir"),
56 "glob" => Some("glob"),
57 _ => None,
58 }
59}
60
61pub fn harness_env_ambient(method: &str) -> Option<&'static str> {
62 match method {
63 "get" => Some("env"),
64 "get_or" => Some("env_or"),
65 _ => None,
66 }
67}
68
69pub fn harness_random_ambient(method: &str) -> Option<&'static str> {
70 match method {
71 "gen_f64" | "f64" | "random" => Some("random"),
72 "gen_u64" | "u64" => Some("random_int"),
73 "gen_range" | "range" | "random_int" | "int" => Some("random_int"),
74 "choice" | "random_choice" => Some("random_choice"),
75 "shuffle" | "random_shuffle" => Some("random_shuffle"),
76 _ => None,
77 }
78}
79
80pub fn harness_net_ambient(method: &str) -> Option<&'static str> {
81 match method {
82 "get" | "http_get" => Some("http_get"),
83 "post" | "http_post" => Some("http_post"),
84 "put" | "http_put" => Some("http_put"),
85 "patch" | "http_patch" => Some("http_patch"),
86 "delete" | "http_delete" => Some("http_delete"),
87 "request" | "http_request" => Some("http_request"),
88 "download" | "http_download" => Some("http_download"),
89 _ => None,
90 }
91}
92
93pub fn harness_process_ambient(method: &str) -> Option<&'static str> {
94 match method {
95 "spawn_captured" => Some("spawn_captured"),
96 _ => None,
97 }
98}
99
100pub fn harness_crypto_ambient(method: &str) -> Option<&'static str> {
101 match method {
102 "sha256" => Some("sha256_hex"),
103 _ => None,
104 }
105}
106
107pub fn harness_system_ambient(method: &str) -> Option<&'static str> {
108 match method {
109 "platform" => Some("system_platform"),
110 "cpu" => Some("system_cpu"),
111 "memory" => Some("system_memory"),
112 "gpus" => Some("system_gpus"),
113 "temperature" => Some("system_temperature"),
114 "processes" => Some("system_processes"),
115 _ => None,
116 }
117}
118
119pub fn harness_llm_ambient(method: &str) -> Option<&'static str> {
120 match method {
121 "catalog" => Some("llm_catalog"),
122 "providers" => Some("llm_provider_status"),
123 _ => None,
124 }
125}
126
127pub fn harness_tenant_ambient(method: &str) -> Option<&'static str> {
128 match method {
129 "id" => Some("harness_tenant_id"),
130 "try_id" => Some("harness_tenant_try_id"),
131 _ => None,
132 }
133}
134
135pub fn harness_sub_handle_ambient(sub_handle: &str, method: &str) -> Option<&'static str> {
136 match sub_handle {
137 "stdio" => harness_stdio_ambient(method),
138 "term" => harness_term_ambient(method),
139 "clock" => harness_clock_ambient(method),
140 "fs" => harness_fs_ambient(method),
141 "env" => harness_env_ambient(method),
142 "random" => harness_random_ambient(method),
143 "net" => harness_net_ambient(method),
144 "process" => harness_process_ambient(method),
145 "crypto" => harness_crypto_ambient(method),
146 "system" => harness_system_ambient(method),
147 "llm" => harness_llm_ambient(method),
148 "tenant" => harness_tenant_ambient(method),
149 _ => None,
150 }
151}
152
153pub fn harness_type_sub_handle(type_name: &str) -> Option<&'static str> {
154 match type_name {
155 "HarnessStdio" => Some("stdio"),
156 "HarnessTerm" => Some("term"),
157 "HarnessClock" => Some("clock"),
158 "HarnessFs" => Some("fs"),
159 "HarnessEnv" => Some("env"),
160 "HarnessRandom" => Some("random"),
161 "HarnessNet" => Some("net"),
162 "HarnessProcess" => Some("process"),
163 "HarnessCrypto" => Some("crypto"),
164 "HarnessSystem" => Some("system"),
165 "HarnessLlm" => Some("llm"),
166 "HarnessTenant" => Some("tenant"),
167 _ => None,
168 }
169}
170
171pub fn harness_fs_replacement(name: &str) -> Option<&'static str> {
172 match name {
173 "read_file" => Some("harness.fs.read_text"),
174 "read_file_result" => Some("harness.fs.read_text_result"),
175 "read_file_bytes" => Some("harness.fs.read_bytes"),
176 "write_file" => Some("harness.fs.write_text"),
177 "write_file_bytes" => Some("harness.fs.write_bytes"),
178 "file_exists" => Some("harness.fs.exists"),
179 "delete_file" => Some("harness.fs.delete"),
180 "append_file" => Some("harness.fs.append"),
181 "list_dir" => Some("harness.fs.list_dir"),
182 "mkdir" => Some("harness.fs.mkdir"),
183 "copy_file" => Some("harness.fs.copy"),
184 "temp_dir" => Some("harness.fs.temp_dir"),
185 "mkdtemp" => Some("harness.fs.mkdtemp"),
186 "stat" => Some("harness.fs.stat"),
187 "move_file" => Some("harness.fs.rename"),
188 "read_lines" => Some("harness.fs.read_lines"),
189 "walk_dir" => Some("harness.fs.walk"),
190 "glob" => Some("harness.fs.glob"),
191 _ => None,
192 }
193}