forked from bai/curriculum-project-hub
25 lines
1005 B
TypeScript
25 lines
1005 B
TypeScript
/**
|
|
* Hub entry — Fastify server + Feishu WebSocket listener + org admin HTTP.
|
|
*
|
|
* Wires the full trigger path: lark ws receives `im.message.receive_v1` →
|
|
* trigger handler resolves chat->project (ADR-0001), creates AgentRun + acquires
|
|
* the project lock (ADR-0002), runs the AI SDK-backed agent runner
|
|
* (ADR-0017), and releases the lock on finish. Feishu context reads inside the
|
|
* loop are ADR-0003-authorized (chat must match binding).
|
|
*
|
|
* Org admin (ADR-0021): Feishu OAuth session + `/api/org/:orgSlug/*`.
|
|
*
|
|
* Env (see .env.example):
|
|
* DATABASE_URL, HUB_SILO_ORGANIZATION_ID, PORT,
|
|
* HUB_PROJECT_WORKSPACE_ROOT, HUB_SESSION_SECRET, HUB_PUBLIC_BASE_URL.
|
|
* Provider credentials are org-scoped encrypted records; production receives
|
|
* the local master-key keyring only through systemd CREDENTIALS_DIRECTORY.
|
|
*/
|
|
import "dotenv/config";
|
|
import { startHub } from "./hub.js";
|
|
|
|
startHub().catch((error: unknown) => {
|
|
console.error("[hub] fatal:", error);
|
|
process.exitCode = 1;
|
|
});
|