diff --git a/src/headless.ts b/src/headless.ts index 0af7287..27d7ce6 100644 --- a/src/headless.ts +++ b/src/headless.ts @@ -120,6 +120,8 @@ export async function handleHeadlessCommand( "base-tools": { type: "string" }, "from-af": { type: "string" }, "no-skills": { type: "boolean" }, + memfs: { type: "boolean" }, + "no-memfs": { type: "boolean" }, }, strict: false, allowPositionals: true, @@ -235,6 +237,8 @@ export async function handleHeadlessCommand( const initBlocksRaw = values["init-blocks"] as string | undefined; const baseToolsRaw = values["base-tools"] as string | undefined; const sleeptimeFlag = (values.sleeptime as boolean | undefined) ?? undefined; + const memfsFlag = values.memfs as boolean | undefined; + const noMemfsFlag = values["no-memfs"] as boolean | undefined; const fromAfFile = values["from-af"] as string | undefined; // Handle --conv {agent-id} shorthand: --conv agent-xyz → --agent agent-xyz --conv default @@ -585,6 +589,13 @@ export async function handleHeadlessCommand( } } + // Apply memfs flag if specified + if (memfsFlag) { + settingsManager.setMemfsEnabled(agent.id, true); + } else if (noMemfsFlag) { + settingsManager.setMemfsEnabled(agent.id, false); + } + // Sync filesystem-backed memory before creating conversations (only if memfs is enabled) if (settingsManager.isMemfsEnabled(agent.id)) { try { diff --git a/src/index.ts b/src/index.ts index be8f46c..dde1093 100755 --- a/src/index.ts +++ b/src/index.ts @@ -74,6 +74,8 @@ OPTIONS --skills Custom path to skills directory (default: .skills in current directory) --sleeptime Enable sleeptime memory management (only for new agents) --from-af Create agent from an AgentFile (.af) template + --memfs Enable memory filesystem for this agent + --no-memfs Disable memory filesystem for this agent BEHAVIOR On startup, Letta Code checks for saved profiles: @@ -409,6 +411,8 @@ async function main(): Promise { sleeptime: { type: "boolean" }, "from-af": { type: "string" }, "no-skills": { type: "boolean" }, + memfs: { type: "boolean" }, + "no-memfs": { type: "boolean" }, }, strict: true, allowPositionals: true, @@ -518,6 +522,8 @@ async function main(): Promise { const specifiedToolset = (values.toolset as string | undefined) ?? undefined; const skillsDirectory = (values.skills as string | undefined) ?? undefined; const sleeptimeFlag = (values.sleeptime as boolean | undefined) ?? undefined; + const memfsFlag = values.memfs as boolean | undefined; + const noMemfsFlag = values["no-memfs"] as boolean | undefined; const fromAfFile = values["from-af"] as string | undefined; const isHeadless = values.prompt || values.run || !process.stdin.isTTY; @@ -1590,6 +1596,13 @@ async function main(): Promise { // Set agent context for tools that need it (e.g., Skill tool) setAgentContext(agent.id, skillsDirectory); + // Apply memfs flag if specified + if (memfsFlag) { + settingsManager.setMemfsEnabled(agent.id, true); + } else if (noMemfsFlag) { + settingsManager.setMemfsEnabled(agent.id, false); + } + // Fire-and-forget: Initialize loaded skills flag (LET-7101) // Don't await - this is just for the skill unload reminder initializeLoadedSkillsFlag().catch(() => {