EverydayTech Platform - Developer Reference
Complete Source Code Documentation - All Applications
Loading...
Searching...
No Matches
llmTenantContext.js
Go to the documentation of this file.
1// llmTenantContext.js - Redis-based per-tenant LLM isolation
2const Redis = require('ioredis');
3const redisConfig = require('../config/redis');
4const redis = new Redis(redisConfig);
5
6/**
7 * Get LLM history for tenant document.
8 * Returns last 10 history entries.
9 * @param {number} tenantId - Tenant ID
10 * @param {string} docId - Document ID
11 * @returns {Promise<Array>} Array of history entries (most recent first)
12 */
13async function getTenantHistory(tenantId, docId) {
14 return await redis.lrange(`llm:history:${tenantId}:${docId}`, 0, 9);
15}
16
17/**
18 * Add entry to tenant LLM history.
19 * Maintains rolling history of last 10 entries.
20 * @param {number} tenantId - Tenant ID
21 * @param {string} docId - Document ID
22 * @param {string} delta - History entry to add
23 * @returns {Promise<void>}
24 */
25async function addTenantHistory(tenantId, docId, delta) {
26 await redis.lpush(`llm:history:${tenantId}:${docId}`, delta);
27 await redis.ltrim(`llm:history:${tenantId}:${docId}`, 0, 9);
28}
29
30/**
31 * Get LLM summary for tenant document.
32 * @param {number} tenantId - Tenant ID
33 * @param {string} docId - Document ID
34 * @returns {Promise<string|null>} Cached summary or null
35 */
36async function getTenantSummary(tenantId, docId) {
37 return await redis.get(`llm:summary:${tenantId}:${docId}`);
38}
39
40/**
41 * Set LLM summary for tenant document.
42 * Cached with 7-day TTL.
43 * @param {number} tenantId - Tenant ID
44 * @param {string} docId - Document ID
45 * @param {string} summary - LLM-generated summary
46 * @returns {Promise<void>}
47 */
48async function setTenantSummary(tenantId, docId, summary) {
49 await redis.set(`llm:summary:${tenantId}:${docId}`, summary, 'EX', 604800);
50}
51
52module.exports = {
53 getTenantHistory,
54 addTenantHistory,
55 getTenantSummary,
56 setTenantSummary,
57};