Merge v3-t50: subagents use the models service, every test module in the bundle script (T50)

# Conflicts:
#	host/js/package.json
#	host/js/subagents-test-bundle.js
This commit is contained in:
2026-11-07 13:51:34 +00:00
9 changed files with 112 additions and 53 deletions
+18 -9
View File
@@ -40,22 +40,31 @@ fn prepare(dir: &Path) -> anyhow::Result<()> {
target.join("wasm32-wasip2/release/git.wasm"),
disk.join("bin/git.wasm"),
)?;
for directory in ["extensions/subagents", "extensions/core", "agents"] {
for directory in [
"extensions/subagents",
"extensions/models",
"extensions/core",
"agents",
] {
std::fs::create_dir_all(repo.join(directory))?;
}
for entry in std::fs::read_dir(source.join("extensions/subagents"))? {
let entry = entry?;
if entry.path().extension().is_some_and(|ext| ext == "ts") {
std::fs::copy(
entry.path(),
repo.join("extensions/subagents").join(entry.file_name()),
)?;
for extension in ["subagents", "models"] {
for entry in std::fs::read_dir(source.join("extensions").join(extension))? {
let entry = entry?;
if entry.path().extension().is_some_and(|ext| ext == "ts") {
std::fs::copy(
entry.path(),
repo.join("extensions")
.join(extension)
.join(entry.file_name()),
)?;
}
}
}
std::fs::create_dir_all(repo.join("extensions/probe"))?;
std::fs::write(
repo.join("extensions/probe/server.ts"),
"export default host => { globalThis.subagentService = host.need({name:'subagents'}); return {name:'probe'}; }",
"export default host => { globalThis.subagentService = host.need({name:'subagents'}); host.implement({name:'models.pin'}, {pin:async()=>globalThis.childPin}); return {name:'probe'}; }",
)?;
std::fs::copy(
source.join("extensions/core/agents.ts"),