Duriin-API/intelligence/index.js

62 lines
2 KiB
JavaScript

const fs = require("fs");
const path = require("path");
const { getArchiveDb, getIntelligenceDb, runMigrations, seedCompanies } = require("./db");
const { runQueueFeeder } = require("./queueFeeder");
const { runAugorWorker } = require("./augorWorker");
const { ensureCompanyEmbeddings } = require("./embeddings");
const configPath = path.resolve(__dirname, "../config.json");
const configDir = path.dirname(configPath);
const rawConfig = JSON.parse(fs.readFileSync(configPath, "utf8"));
function resolvePath(p, fallback) {
if (!p) return fallback;
return path.isAbsolute(p) ? p : path.resolve(configDir, p);
}
const config = {
duriin_db: process.env.DURIIN_DB || resolvePath(rawConfig.duriin_db, path.resolve(configDir, "archive.sqlite")),
intelligence_db: process.env.INTELLIGENCE_DB || resolvePath(rawConfig.intelligence_db, path.resolve(configDir, "intelligence.sqlite")),
llm: rawConfig.llm || {},
workers: rawConfig.workers || {},
openRouter: rawConfig.openRouter || {},
intelligence: rawConfig.intelligence || {},
};
console.log("[intelligence] starting up");
console.log(`[intelligence] archive: ${config.duriin_db}`);
console.log(`[intelligence] intelligence: ${config.intelligence_db}`);
const archiveDb = getArchiveDb(config.duriin_db);
const intelligenceDb = getIntelligenceDb(config.intelligence_db);
runMigrations(intelligenceDb);
seedCompanies(intelligenceDb);
ensureCompanyEmbeddings(intelligenceDb, config.openRouter).then(() => {
console.log("[intelligence] company embeddings ready");
}).catch(err => {
console.error("[intelligence] company embedding generation failed:", err.message);
});
runQueueFeeder(archiveDb, intelligenceDb, config).catch(err => {
console.error("[feeder] fatal:", err);
process.exit(1);
});
runAugorWorker(archiveDb, intelligenceDb, config).catch(err => {
console.error("[augor] fatal:", err);
process.exit(1);
});
process.on("SIGINT", () => {
console.log("[intelligence] shutting down");
process.exit(0);
});
process.on("SIGTERM", () => {
console.log("[intelligence] shutting down");
process.exit(0);
});