feat(hub): 抽出运行时配置

This commit is contained in:
2026-07-08 15:25:49 +08:00
parent a766d99573
commit 3f486232a8
9 changed files with 297 additions and 66 deletions
+5 -13
View File
@@ -13,7 +13,7 @@
import "dotenv/config";
import Fastify from "fastify";
import { prisma } from "./db.js";
import { createDefaultModelRegistry } from "./agent/defaultModels.js";
import { createEnvRuntimeSettings } from "./settings/runtime.js";
import { createLarkClient, startFeishuListenerWithClient } from "./feishu/client.js";
import { makeTriggerHandler } from "./feishu/trigger.js";
@@ -36,11 +36,9 @@ async function main(): Promise<void> {
const databaseUrl = requireEnv("DATABASE_URL");
void databaseUrl;
// Claude Code SDK auth via OpenRouter's Anthropic Skin.
// ANTHROPIC_AUTH_TOKEN = OpenRouter API key; ANTHROPIC_API_KEY must be empty.
requireEnv("ANTHROPIC_AUTH_TOKEN");
process.env["ANTHROPIC_BASE_URL"] ??= "https://openrouter.ai/api";
process.env["ANTHROPIC_API_KEY"] ??= "";
const runtimeSettings = createEnvRuntimeSettings();
await runtimeSettings.provider("openrouter");
const feishuAppId = requireEnv("FEISHU_APP_ID");
const feishuAppSecret = requireEnv("FEISHU_APP_SECRET");
const feishuBotOpenId = requireEnv("FEISHU_BOT_OPEN_ID");
@@ -56,20 +54,14 @@ async function main(): Promise<void> {
});
app.log.info("startup: cleared stale locks + dead runs");
app.get("/api/healthz", async () => ({ ok: true, ts: Date.now() }));
// Model registry (role-as-data, ADR-0017). Defaults are OpenRouter model
// slugs; ANTHROPIC_DEFAULT_SONNET_MODEL can override the role default.
const models = createDefaultModelRegistry();
// --- Feishu listener ---
const feishuListenerEnabled = booleanEnv("HUB_FEISHU_LISTENER_ENABLED", true);
if (feishuListenerEnabled) {
const feishuConfig = { appId: feishuAppId, appSecret: feishuAppSecret, botOpenId: feishuBotOpenId };
const larkClient = createLarkClient(feishuConfig);
const trigger = makeTriggerHandler({ prisma, models, logger: app.log });
const trigger = makeTriggerHandler({ prisma, settings: runtimeSettings, logger: app.log });
startFeishuListenerWithClient(feishuConfig, larkClient, app.log, trigger);
} else {
app.log.info("feishu listener disabled by HUB_FEISHU_LISTENER_ENABLED");