lib/project-logs-clay-query.js
Rama main · réplica de lectura del repositorio original.
var provenance = require('./session-provenance');
var personal = require('./mcp-session-access');
// Catalog eligibility is registry-only; content always requires a live private query.
function queryGuard(source, projectFor, multiUser, findUser) {
var session = source.session, project = projectFor(source.projectSlug);
var generation = session && Number(session._sdkQueryGeneration || 0);
return function () {
var manager = project && (project.getSessionManager ? project.getSessionManager() : project.sm);
if (!session || projectFor(source.projectSlug) !== project || !manager || manager.sessions.get(session.localId) !== session || Number(session._sdkQueryGeneration || 0) !== generation) throw new Error('This Project Logs query is no longer valid.');
if (session.taskStopRequested || session.abortController && session.abortController.signal.aborted || session.destroying || session.hidden || session.spawn || provenance.isWorker(session) || session.homeDebatePlanning || session.debateSetupMode || session._mentionInProgress || session.mateCreationMode || session._mcpForeignInput || session.sessionVisibility === 'shared' || session.delegated || session._delegatedBy || session._pairDelegation) throw new Error('Project Logs require a live private canonical Clay query.');
if (multiUser()) {
if (!findUser(source.projectOwnerId) || session.ownerId !== source.projectOwnerId || !personal.canUsePersonalConnections(session, manager.sessions)) throw new Error('Foreign input cannot authorize Project Logs.');
} else if (session.ownerId || (session.history || []).some(function (entry) { return entry.type === 'user_message' && entry.from && entry.from !== 'default'; })) throw new Error('Foreign input cannot authorize Project Logs.');
};
}
module.exports = { queryGuard: queryGuard };