dynamic claude.md regeneration and email db env for claude code

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-07 12:45:41 +00:00
co-authored by Claude Opus 4.6
parent 49cd559c8a
commit ecd83dc1ec
3 changed files with 17 additions and 4 deletions
+15 -2
View File
@@ -1,3 +1,4 @@
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
import { join } from 'node:path';
import type { Subprocess } from 'bun';
import type { PiEvent, MessageCost } from '../../api/pi/types';
@@ -6,12 +7,18 @@ import { getState, setClaudeSession, clearClaudeSession, getClaudeSession } from
import { getProxySecret } from './proxy';
import { discoverTools } from '../../tool-registry';
import type { ToolDefinition } from '../../tool-registry';
import { DATA_PATH, getHomeDir } from '../../data-path';
import { generateContainerContext } from '../../generate-container-context';
const SEND_TIMEOUT_MS = 5 * 60 * 1000;
const PROXY_PORT = process.env.ANTHROPIC_PROXY_PORT ?? '5051';
const DATA_PATH = process.env.DATA_PATH ?? join(process.cwd(), 'data');
const getHomeDir = (email: string) => join(DATA_PATH, email, 'home');
function refreshClaudeMd(email: string): void {
const claudeDir = join(getHomeDir(email), '.claude');
if (!existsSync(claudeDir)) mkdirSync(claudeDir, { recursive: true });
const contextFile = generateContainerContext(email);
writeFileSync(join(claudeDir, 'CLAUDE.md'), readFileSync(contextFile, 'utf-8'));
}
function buildToolContext(email: string): string {
const tools = discoverTools(email);
@@ -89,6 +96,8 @@ export async function spawnClaude(params: ClaudeSpawnParams): Promise<ClaudeCode
const homeDir = getHomeDir(email);
const shellUsername = toShellUsername(username, email);
refreshClaudeMd(email);
const existingSession = getClaudeSession(sessionKey);
const isResume = !!existingSession;
@@ -110,6 +119,7 @@ export async function spawnClaude(params: ClaudeSpawnParams): Promise<ClaudeCode
...authEnv,
PATH: process.env.PATH ?? '',
TERM: 'xterm-256color',
OFFICER_EMAIL_DB: join(DATA_PATH, email, 'emails.db'),
};
const proc = isServiceUser
@@ -183,6 +193,8 @@ export async function spawnClaudeStreaming(
const homeDir = getHomeDir(email);
const workDir = cwd ?? homeDir;
refreshClaudeMd(email);
const existingSession = getClaudeSession(sessionKey);
const isResume = !!existingSession;
@@ -215,6 +227,7 @@ export async function spawnClaudeStreaming(
...authEnv,
PATH: cleanEnv.PATH ?? '',
TERM: 'xterm-256color',
OFFICER_EMAIL_DB: join(DATA_PATH, email, 'emails.db'),
};
const proc = isServiceUser