/** * Monorepo Context Logic XML Block * * robust, secure, and centralized logic for handling: * 1. Inline project overrides (#p:NAME) * 2. .current_project file fallback * 3. Path variable overrides */ const MONOREPO_CONTEXT_LOGIC = ` Scan user's invocation message for pattern #project:NAME or #p:NAME (case-insensitive) Set project_suffix = extracted NAME 🎯 Inline project override: {project_suffix} Read {project-root}/{{bmadFolderName}}/.current_project as project_suffix Trim whitespace and newlines from project_suffix 🚫 Security Error: Invalid project context — path traversal or absolute path detected. HALT 🚫 Error: project_suffix must only contain alphanumeric characters, dots, dashes, underscores, or slashes. HALT Override output_folder = {project-root}/_bmad-output/{project_suffix} Override planning_artifacts = {output_folder}/planning-artifacts Override implementation_artifacts = {output_folder}/implementation-artifacts Override project_knowledge = {output_folder}/knowledge Override sprint_status_file = {output_folder}/sprint-status.yaml 🗂️ Monorepo context: {project_suffix} → outputs to {output_folder} `; module.exports = { MONOREPO_CONTEXT_LOGIC };