# Specification: Expose/Cull Hidden Invisible Prompting ## 1. Overview The goal of this track is to review the codebase to identify, expose, or cull any hidden or invisible prompting injected by the system during discussion/sessions. This ensures the user has full control and visibility over the exact context sent to the AI API. ## 2. Functional Requirements ### 2.1 Identify Hardcoded Prompts - Audit `src/ai_client.py` to identify the hardcoded `_SYSTEM_PROMPT` and any tool execution instructions appended to requests. - Audit `src/aggregate.py` to identify headers and contextual markers injected during context aggregation (e.g., `[SYSTEM: FILES UPDATED]`). ### 2.2 Expose Prompts in GUI - For prompts that are necessary for the system to function (e.g., tool usage instructions, `[FILES UPDATED]` logic), expose them in the GUI (e.g., in "AI Settings" or "Project Settings"). - Create editable text areas or configurable options so the user can modify or disable these prompts per-project or globally. - Ensure the modified prompts are correctly persisted and loaded by the `AppController`. ### 2.3 Cull Redundant Prompts - Remove any legacy or redundant prompting that no longer serves a purpose or duplicates user-defined system prompts. ## 3. Acceptance Criteria - [ ] All hardcoded system prompts in `ai_client.py` and `aggregate.py` are identified. - [ ] Necessary system prompts are exposed as editable fields within the GUI. - [ ] Users can modify or disable the default tool instructions or aggregation markers. - [ ] The `ai_client` utilizes the user-configured prompts instead of hardcoded strings. - [ ] Unnecessary or redundant hidden prompts are removed from the codebase. ## 4. Out of Scope - Modifying the Tiered MMA worker prompts in `mma_prompts.py` (this track focuses on the core discussion/session loop). - Adding a "Raw Prompt Preview" modal (this was an alternative option not selected).