manifest
Version:
Self-hosted Manifest LLM router with embedded server, SQLite database, and dashboard
121 lines • 5.17 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ProxyMessageDedup = exports.SUCCESS_END_TIME_GRACE_MS = exports.SUCCESS_SESSION_DEDUP_WINDOW_MS = void 0;
const common_1 = require("@nestjs/common");
const agent_message_entity_1 = require("../../entities/agent-message.entity");
exports.SUCCESS_SESSION_DEDUP_WINDOW_MS = 30_000;
exports.SUCCESS_END_TIME_GRACE_MS = 5_000;
let ProxyMessageDedup = class ProxyMessageDedup {
successWriteLocks = new Map();
async findExistingSuccessMessage(messageRepo, ctx, model, usage, traceId, sessionKey) {
if (traceId) {
const existing = await messageRepo.findOne({
where: {
tenant_id: ctx.tenantId,
agent_id: ctx.agentId,
trace_id: traceId,
status: 'ok',
},
select: [
'id',
'timestamp',
'input_tokens',
'output_tokens',
'cache_read_tokens',
'cache_creation_tokens',
'duration_ms',
],
order: { timestamp: 'DESC' },
});
if (existing)
return existing;
}
const now = Date.now();
const recentByModel = await messageRepo.find({
where: {
tenant_id: ctx.tenantId,
agent_id: ctx.agentId,
user_id: ctx.userId,
model,
status: 'ok',
...(sessionKey ? { session_key: sessionKey } : {}),
},
select: [
'id',
'timestamp',
'input_tokens',
'output_tokens',
'cache_read_tokens',
'cache_creation_tokens',
'duration_ms',
],
order: { timestamp: 'DESC' },
take: 10,
});
return (recentByModel.find((row) => {
const rowTime = new Date(row.timestamp).getTime();
const durationMs = row.duration_ms ?? null;
if (Number.isNaN(rowTime) ||
durationMs == null ||
now - rowTime > exports.SUCCESS_SESSION_DEDUP_WINDOW_MS) {
return false;
}
const totalPromptTokens = (row.input_tokens ?? 0) + (row.cache_read_tokens ?? 0) + (row.cache_creation_tokens ?? 0);
const endTimeDelta = Math.abs(now - rowTime - durationMs);
return (totalPromptTokens === usage.prompt_tokens &&
(row.output_tokens ?? 0) === usage.completion_tokens &&
endTimeDelta <= exports.SUCCESS_END_TIME_GRACE_MS);
}) ?? null);
}
normalizeSessionKey(sessionKey) {
if (!sessionKey || sessionKey === 'default')
return null;
return sessionKey;
}
getSuccessWriteLockKey(ctx, model, traceId, sessionKey) {
if (traceId)
return `trace:${ctx.tenantId}:${ctx.agentId}:${traceId}`;
return `success:${ctx.tenantId}:${ctx.agentId}:${ctx.userId}:${sessionKey ?? 'no-session'}:${model}`;
}
async withSuccessWriteLock(key, fn) {
const previous = this.successWriteLocks.get(key) ?? Promise.resolve();
let release;
const current = new Promise((resolve) => {
release = resolve;
});
const queued = previous.catch(() => undefined).then(() => current);
this.successWriteLocks.set(key, queued);
await previous.catch(() => undefined);
try {
return await fn();
}
finally {
release();
if (this.successWriteLocks.get(key) === queued) {
this.successWriteLocks.delete(key);
}
}
}
async withAgentMessageTransaction(messageRepo, ctx, fn) {
return messageRepo.manager.transaction(async (manager) => {
await this.lockAgentMessageWrites(manager, ctx.agentId);
return fn(manager.getRepository(agent_message_entity_1.AgentMessage));
});
}
async lockAgentMessageWrites(manager, agentId) {
if (manager.connection.options.type !== 'postgres')
return;
await manager.query('SELECT id FROM agents WHERE id = $1 FOR UPDATE', [agentId]);
}
};
exports.ProxyMessageDedup = ProxyMessageDedup;
exports.ProxyMessageDedup = ProxyMessageDedup = __decorate([
(0, common_1.Injectable)()
], ProxyMessageDedup);
//# sourceMappingURL=proxy-message-dedup.js.map