Forked from brdcastro/maestro
"use strict";
/**
* @file projectMemory.ts
* Shared helpers for project-scoped memory policy.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.getDurableProjectCategories = getDurableProjectCategories;
exports.isDurableProjectCategory = isDurableProjectCategory;
exports.normalizeProjectSlug = normalizeProjectSlug;
exports.resolveProjectMemoryTarget = resolveProjectMemoryTarget;
exports.buildProjectMemoryTags = buildProjectMemoryTags;
const PROJECT_MEMORY_CATEGORIES = [
"project",
"instruction",
"fact",
"note",
];
function getDurableProjectCategories() {
return [...PROJECT_MEMORY_CATEGORIES];
}
function isDurableProjectCategory(category) {
return PROJECT_MEMORY_CATEGORIES.includes(category);
}
function normalizeProjectSlug(project) {
const normalized = project?.trim();
return normalized ? normalized : null;
}
function resolveProjectMemoryTarget(cfg, input) {
const activeProject = normalizeProjectSlug(cfg.activeProject);
const requestedProject = normalizeProjectSlug(input.project);
if (input.scope === "session") {
return { scope: "session", project: null };
}
if (input.forceActiveProject && activeProject) {
return { scope: "project", project: activeProject };
}
if (input.scope === "project") {
return { scope: "project", project: requestedProject ?? activeProject };
}
if (requestedProject) {
return { scope: "project", project: requestedProject };
}
return {
scope: input.scope ?? "global",
project: null,
};
}
function buildProjectMemoryTags(tags, project) {
const normalized = new Set();
for (const tag of tags ?? []) {
const clean = tag.trim().toLowerCase();
if (clean)
normalized.add(clean);
}
normalized.add("project-memory");
normalized.add(project.trim().toLowerCase());
return [...normalized];
}
//# sourceMappingURL=projectMemory.js.map