UNPKG

@stackmemoryai/stackmemory

Version:

Lossless, project-scoped memory for AI coding tools. Durable context across sessions with 56 MCP tools, FTS5 search, conductor orchestrator, loop/watch monitoring, snapshot capture, pre-flight overlap checks, Claude/Codex/OpenCode wrappers, Linear sync, a

66 lines (65 loc) 2.34 kB
import { fileURLToPath as __fileURLToPath } from 'url'; import { dirname as __pathDirname } from 'path'; const __filename = __fileURLToPath(import.meta.url); const __dirname = __pathDirname(__filename); function isLocalOnly() { return process.env["STACKMEMORY_LOCAL"] === "true" || process.env["STACKMEMORY_LOCAL"] === "1" || process.env["LOCAL_ONLY"] === "true"; } function isFeatureEnabled(feature) { if (feature === "core") return true; if (isLocalOnly()) return false; switch (feature) { case "linear": return process.env["STACKMEMORY_LINEAR"] !== "false" && (!!process.env["LINEAR_API_KEY"] || !!process.env["LINEAR_OAUTH_TOKEN"]); case "aiSummaries": return process.env["STACKMEMORY_AI"] !== "false" && (!!process.env["ANTHROPIC_API_KEY"] || !!process.env["OPENAI_API_KEY"]); case "skills": return process.env["STACKMEMORY_SKILLS"] === "true" || process.env["STACKMEMORY_SKILLS"] === "1"; case "ralph": return process.env["STACKMEMORY_RALPH"] !== "false"; case "multiProvider": return process.env["STACKMEMORY_MULTI_PROVIDER"] === "true" || process.env["STACKMEMORY_MULTI_PROVIDER"] === "1"; default: return false; } } function getFeatureFlags() { return { core: true, linear: isFeatureEnabled("linear"), aiSummaries: isFeatureEnabled("aiSummaries"), skills: isFeatureEnabled("skills"), ralph: isFeatureEnabled("ralph"), multiProvider: isFeatureEnabled("multiProvider") }; } function logFeatureStatus() { const flags = getFeatureFlags(); const local = isLocalOnly(); console.log( `StackMemory Mode: ${local ? "LOCAL (no external services)" : "FULL"}` ); if (!local) { console.log( ` Linear: ${flags.linear ? "enabled" : "disabled (no API key)"}` ); console.log( ` AI Summaries: ${flags.aiSummaries ? "enabled" : "disabled (no API key)"}` ); console.log( ` Skills: ${flags.skills ? "enabled" : "disabled (set STACKMEMORY_SKILLS=true)"}` ); console.log( ` Ralph: ${flags.ralph ? "enabled" : "disabled (set STACKMEMORY_RALPH=true)"}` ); console.log( ` MultiProvider: ${flags.multiProvider ? "enabled" : "disabled (set STACKMEMORY_MULTI_PROVIDER=true)"}` ); } } export { getFeatureFlags, isFeatureEnabled, isLocalOnly, logFeatureStatus };