import os from tools.workspace import load_persona_files # Cache: built once per warm session _system_prompt: str | None = None def build_system_prompt() -> str: """Build system prompt from S3 workspace files (cached for warm session).""" global _system_prompt if _system_prompt is not None: return _system_prompt files = load_persona_files() parts = [] # Inject persona files in order for fname in ['SOUL.md', 'AGENTS.md', 'IDENTITY.md', 'USER.md']: content = files.get(fname, '') if content: parts.append(f"## {fname}\n{content}") # Runtime metadata block parts.append(f"""## Runtime Runtime: agent-claw | host=AgentCore | model=bedrock-claude-sonnet | channel=telegram Current date/time is provided by the system. Timezone: America/Chicago.""") _system_prompt = '\n\n---\n\n'.join(parts) return _system_prompt def invalidate_prompt() -> None: """Force rebuild of system prompt on next invocation (call after workspace write).""" global _system_prompt _system_prompt = None