refactor(core): migrate to Bun and converge acquisition policies and Agent boundaries
This commit is contained in:
1 parent
3f1c6d02f6
commit
27c0f27434
268 files changed
+7468
-7852
No files matched your search
@@ -1,25 +1,30 @@
|
||||
#!/bin/sh
|
||||
# 编译产物自检(deno task ci 的最后一步):deno compile 的 --exclude-unused-npm 可能漏嵌 npm 包/子路径,
|
||||
# 开发态与测试全绿但二进制启动即 ERR_MODULE_NOT_FOUND。这里用空环境跑 `--role preflight`:
|
||||
# 它会先加载完整的服务端模块图(db/任务引擎/全部模块),然后才因缺配置以退出码 2 结束;
|
||||
# 模块缺失会以退出码 1 + ERR_MODULE_NOT_FOUND 结束。
|
||||
# 编译产物必须在空环境、其它工作目录下加载完整模块图与解析沙箱。
|
||||
# preflight 缺配置以 2 退出;模块图加载失败以 1 退出。
|
||||
set -u
|
||||
bin="${1:-dist/umt-server}"
|
||||
case "$bin" in /*) ;; *) bin="$PWD/$bin" ;; esac
|
||||
[ -x "$bin" ] || { echo "check-compiled-binary: 找不到编译产物 $bin(先跑 deno task build)" >&2; exit 1; }
|
||||
[ -x "$bin" ] || { echo "check-compiled-binary: 找不到编译产物 $bin(先跑 bun run build)" >&2; exit 1; }
|
||||
out=$(cd /tmp && env -i PATH="$PATH" "$bin" --role preflight 2>&1)
|
||||
code=$?
|
||||
if [ "$code" -eq 2 ] && printf '%s' "$out" | grep -q '配置无效'; then
|
||||
# 沙箱子进程:与 sandbox/client.ts 同样的环境(只有 PATH)拉起 `--role sandbox`,请求一个不存在的任务,
|
||||
# 应回一行 {"ok":false,...};入口就崩(如 --allow-run 解析失败)会没有这行
|
||||
sb=$(cd /tmp && printf '{"job":"__check__","input":null}' | env -i PATH="$PATH" "$bin" --role sandbox 2>&1)
|
||||
if printf '%s' "$sb" | grep -q '"ok":false'; then
|
||||
echo "check-compiled-binary: ok(模块图加载完整,沙箱子进程能启动)"
|
||||
exit 0
|
||||
# 正常任务与拒绝策略都必须在空环境、/tmp 下成立。
|
||||
sb=$(cd /tmp && printf '{"id":"1","task":"self.test","input":{"mode":"ok"}}\n' | env -i PATH="$PATH" "$bin" --role sandbox 2>&1)
|
||||
if ! printf '%s' "$sb" | grep -q '"type":"result"'; then
|
||||
echo "check-compiled-binary: 沙箱子进程起不来:$sb" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "check-compiled-binary: 沙箱子进程起不来:" >&2
|
||||
printf '%s\n' "$sb" >&2
|
||||
exit 1
|
||||
for mode in io async-io write net exec; do
|
||||
sb=$(cd /tmp && printf '{"id":"1","task":"self.test","input":{"mode":"%s"}}\n' "$mode" | env -i PATH="$PATH" "$bin" --role sandbox 2>&1)
|
||||
# policy.lockdown 已直接核验 socket/openat/execve 返回 EPERM。
|
||||
# Bun 编译产物的网络异常可能被归一化成 ECONNREFUSED。
|
||||
if ! printf '%s' "$sb" | grep -q '"type":"error"' || ! printf '%s' "$sb" | grep -Eiq 'EPERM|operation not permitted|ECONNREFUSED'; then
|
||||
echo "check-compiled-binary: 沙箱没有拒绝 $mode:$sb" >&2
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
echo "check-compiled-binary: ok(模块图加载完整,沙箱拒绝文件访问/网络/执行程序)"
|
||||
exit 0
|
||||
fi
|
||||
echo "check-compiled-binary: 编译产物自检失败(退出码 $code):" >&2
|
||||
printf '%s\n' "$out" >&2
|
||||
|
||||
Reference in new issue
Block a user