From 2743d9e38ecfdbf757d4d2f97bcf09d601245b59 Mon Sep 17 00:00:00 2001 From: Mohamed Bassem Date: Sun, 18 May 2025 20:22:59 +0000 Subject: feat: Add AI auto summarization. Fixes #1163 --- apps/workers/ruleEngineWorker.ts | 86 ---------------------------------------- 1 file changed, 86 deletions(-) delete mode 100644 apps/workers/ruleEngineWorker.ts (limited to 'apps/workers/ruleEngineWorker.ts') diff --git a/apps/workers/ruleEngineWorker.ts b/apps/workers/ruleEngineWorker.ts deleted file mode 100644 index 427cc383..00000000 --- a/apps/workers/ruleEngineWorker.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { eq } from "drizzle-orm"; -import { DequeuedJob, Runner } from "liteque"; -import { buildImpersonatingAuthedContext } from "trpc"; - -import type { ZRuleEngineRequest } from "@karakeep/shared/queues"; -import { db } from "@karakeep/db"; -import { bookmarks } from "@karakeep/db/schema"; -import logger from "@karakeep/shared/logger"; -import { - RuleEngineQueue, - zRuleEngineRequestSchema, -} from "@karakeep/shared/queues"; -import { RuleEngine } from "@karakeep/trpc/lib/ruleEngine"; - -export class RuleEngineWorker { - static build() { - logger.info("Starting rule engine worker ..."); - const worker = new Runner( - RuleEngineQueue, - { - run: runRuleEngine, - onComplete: (job) => { - const jobId = job.id; - logger.info(`[ruleEngine][${jobId}] Completed successfully`); - return Promise.resolve(); - }, - onError: (job) => { - const jobId = job.id; - logger.error( - `[ruleEngine][${jobId}] rule engine job failed: ${job.error}\n${job.error.stack}`, - ); - return Promise.resolve(); - }, - }, - { - concurrency: 1, - pollIntervalMs: 1000, - timeoutSecs: 10, - validator: zRuleEngineRequestSchema, - }, - ); - - return worker; - } -} - -async function getBookmarkUserId(bookmarkId: string) { - return await db.query.bookmarks.findFirst({ - where: eq(bookmarks.id, bookmarkId), - columns: { - userId: true, - }, - }); -} - -async function runRuleEngine(job: DequeuedJob) { - const jobId = job.id; - const { bookmarkId, events } = job.data; - - const bookmark = await getBookmarkUserId(bookmarkId); - if (!bookmark) { - throw new Error( - `[ruleEngine][${jobId}] bookmark with id ${bookmarkId} was not found`, - ); - } - const userId = bookmark.userId; - const authedCtx = await buildImpersonatingAuthedContext(userId); - - const ruleEngine = await RuleEngine.forBookmark(authedCtx, bookmarkId); - - const results = ( - await Promise.all(events.map((event) => ruleEngine.onEvent(event))) - ).flat(); - - if (results.length == 0) { - return; - } - - const message = results - .map((result) => `${result.ruleId}, (${result.type}): ${result.message}`) - .join("\n"); - - logger.info( - `[ruleEngine][${jobId}] Rule engine job for bookmark ${bookmarkId} completed with results: ${message}`, - ); -} -- cgit v1.2.3-70-g09d2