evework / docker-entrypoint.mjs
hunian
feat: 更新配置和依赖,移除 MESSAGE_MCP_URL,优化 MCP 连接逻辑
5532226
Raw
History Blame Contribute Delete
2.15 kB
/**
* 容器入口:立刻打日志 → 校验必填 env / 数据目录 → 加载 Nitro。
* 直接 import .output(不跑 eve start prewarm,避免 HF 启动卡住)。
* 沙箱在 create 时空建 session,不依赖模板。
*/
const t0 = Date.now();
const log = (msg) => process.stdout.write(`[evework] ${msg}\n`);
const fail = (msg) => {
process.stderr.write(`[evework] FATAL (+${Date.now() - t0}ms): ${msg}\n`);
process.exit(1);
};
log(`start pid=${process.pid} node=${process.version} cwd=${process.cwd()}`);
const has = (name) => Boolean(process.env[name]?.trim());
const world = (process.env.WORKFLOW_WORLD ?? "local").trim().toLowerCase();
// Message MCP url 写死在 agent/connections/message.ts;可选 MESSAGE_MCP_TOKEN。
const missing = ["CUSTOM_BASE_URL", "CUSTOM_MODEL"].filter((k) => !has(k));
if (world === "postgres" || world === "world-postgres") {
if (!has("WORKFLOW_POSTGRES_URL")) missing.push("WORKFLOW_POSTGRES_URL");
}
if (missing.length > 0) {
fail(
`缺少环境变量: ${missing.join(", ")}。` +
`HF → Settings → Variables and secrets。` +
`镜像默认 WORKFLOW_WORLD=postgres,需 WORKFLOW_POSTGRES_URL;` +
`也可设 WORKFLOW_WORLD=local(状态写容器内 .workflow-data,重启丢失)。`,
);
}
const dataDir = (process.env.EVEAGENT_DATA_DIR ?? "/data").trim() || "/data";
try {
const { accessSync, constants, mkdirSync } = await import("node:fs");
mkdirSync(dataDir, { recursive: true });
accessSync(dataDir, constants.W_OK);
} catch (err) {
const detail = err instanceof Error ? err.message : String(err);
fail(`数据目录不可写: ${dataDir}${detail})。请挂载可写卷或修正 EVEAGENT_DATA_DIR`);
}
log(
`workflow=${world} data=${dataDir} agent_key=${has("AGENT_API_KEY") ? "set" : "missing"}`,
);
const entry = new URL("./.output/server/index.mjs", import.meta.url);
log(`import ${entry.pathname}`);
try {
await import(entry.href);
log(`nitro loaded +${Date.now() - t0}ms`);
} catch (err) {
const message = err instanceof Error ? (err.stack ?? err.message) : String(err);
fail(`import 失败:\n${message}`);
}