wired in project isolation

This commit is contained in:
Storme-bit
2026-04-15 02:43:16 -07:00
parent f83e37f5c7
commit 5f5fec9d00

View File

@@ -102,26 +102,21 @@ async function chat(externalId, userMessage, options = {}) {
let session = await memory.getSessionByExternalId(externalId);
if (!session) session = await memory.createSession(externalId);
let projectSessionIds = null;
if (session.project_id) {
try {
const project = await memory.getProject(session.project_id);
if (project?.isolated === 1) {
const projectSessions = await memory.getProjectSessions(
session.project_id,
);
projectSessionIds = projectSessions.map((s) => s.id);
console.log(
`[orchestration] Isolated project ${session.project_id} — restricting search to ${projectSessionIds.length} sessions`,
);
}
} catch (err) {
console.warn(
"[orchestration] Failed to resolve isolation context:",
err.message,
);
let projectSessionIds = null;
if (session.project_id) {
try {
console.log('[orchestration] Resolving isolation for project:', session.project_id);
const project = await memory.getProject(session.project_id);
console.log('[orchestration] Project resolved:', project);
if (project?.isolated === 1) {
const projectSessions = await memory.getProjectSessions(session.project_id);
console.log('[orchestration] Project sessions:', projectSessions);
projectSessionIds = projectSessions.map(s => s.id);
}
} catch (err) {
console.warn('[orchestration] Failed to resolve isolation context:', err.message);
}
}
// 2. Fetch recent episodes for context
const recentEpisodes = await memory.getRecentEpisodes(
@@ -172,6 +167,10 @@ async function chat(externalId, userMessage, options = {}) {
}
async function chatStream(externalId, userMessage, onChunk, options = {}) {
console.log('[orchestration] chatStream entry');
try {
console.log("[orchestration] chatStream called:", {
externalId,
userMessage: userMessage.slice(0, 50),
@@ -179,26 +178,21 @@ async function chatStream(externalId, userMessage, onChunk, options = {}) {
let session = await memory.getSessionByExternalId(externalId);
if (!session) session = await memory.createSession(externalId);
let projectSessionIds = null;
if (session.project_id) {
try {
const project = await memory.getProject(session.project_id);
if (project?.isolated === 1) {
const projectSessions = await memory.getProjectSessions(
session.project_id,
);
projectSessionIds = projectSessions.map((s) => s.id);
console.log(
`[orchestration] Isolated project ${session.project_id} — restricting search to ${projectSessionIds.length} sessions`,
);
}
} catch (err) {
console.warn(
"[orchestration] Failed to resolve isolation context:",
err.message,
);
let projectSessionIds = null;
if (session.project_id) {
try {
console.log('[orchestration] Resolving isolation for project:', session.project_id);
const project = await memory.getProject(session.project_id);
console.log('[orchestration] Project resolved:', project);
if (project?.isolated === 1) {
const projectSessions = await memory.getProjectSessions(session.project_id);
console.log('[orchestration] Project sessions:', projectSessions);
projectSessionIds = projectSessions.map(s => s.id);
}
} catch (err) {
console.warn('[orchestration] Failed to resolve isolation context:', err.message);
}
}
const recentEpisodes = await memory.getRecentEpisodes(
session.id,
@@ -279,5 +273,10 @@ async function chatStream(externalId, userMessage, onChunk, options = {}) {
}
return { model, tokenCount };
} catch (err) {
console.error('[orchestration] chatStream fatal error:', err.message, err.stack);
throw err;
}
}
module.exports = { chat, chatStream };