llm-to-agent/src/main.ts
2026-07-24 17:37:00 +08:00

32 lines
830 B
TypeScript

import { existsSync } from "node:fs";
import { loadEnvFile } from "node:process";
import { Event } from "./extensions/catalog";
import { Kernel } from "./kernel";
import { getProduct, sharedExtensions } from "./products";
if (existsSync(".env")) {
loadEnvFile();
}
const productIds = process.argv.slice(2);
const products = (productIds.length > 0 ? productIds : ["cli"]).map(getProduct);
const factories = [
...sharedExtensions,
...products.flatMap((product) => product.extensions),
];
const kernel = new Kernel().use(...factories.map((factory) => factory()));
const stopped = new Promise<void>((resolve) => {
kernel.on(Event.RuntimeStopRequested, resolve);
process.once("SIGINT", resolve);
process.once("SIGTERM", resolve);
});
try {
await kernel.start();
await stopped;
} finally {
await kernel.stop();
}