builder: add native Cargo service and world CLI

This commit is contained in:
2026-11-07 11:59:28 +00:00
parent f74b16dea9
commit c96e59417a
26 changed files with 1278 additions and 36 deletions
+8 -3
View File
@@ -45,9 +45,14 @@ impl WasiHttpHooks for Hooks {
.is_some_and(|h| h.eq_ignore_ascii_case("host.sausage"))
{
let bytes = body.collect().await?.to_bytes();
return Ok(response(
crate::api::handle(&router, caller, Request::from_parts(parts, bytes)).await,
));
let request = Request::from_parts(parts, bytes);
if request.method() == http::Method::POST && request.uri().path() == "/cargo" {
return Ok((
crate::api::stream(&router, request),
Box::new(async { Ok(()) }),
));
}
return Ok(response(crate::api::handle(&router, caller, request).await));
}
if !matches!(parts.uri.scheme_str(), Some("http" | "https")) {
while let Some(frame) = body.frame().await {
+4
View File
@@ -191,6 +191,10 @@ impl Runtime {
"http://localhost:8081",
)?),
};
let _ = router.builder.set(Arc::new(crate::builder::Builder::new(
world.root.clone(),
&world.host_dir,
)?));
let network = Arc::new(net::NetPolicy::open(&world.host_dir)?);
let engine = compiler.engine.clone();
let alive = Arc::new(AtomicBool::new(true));