| import logging |
| from datetime import datetime |
|
|
| |
| logging.basicConfig( |
| level=logging.INFO, |
| format='%(asctime)s - %(levelname)s - %(message)s', |
| handlers=[ |
| logging.StreamHandler(), |
| logging.FileHandler('lsp.log') |
| ] |
| ) |
| logger = logging.getLogger(__name__) |
|
|
| SYSTEM_PROMPT = """You are part of a document editing system. |
| Follow these EXACT steps with ZERO deviation: |
| |
| PHASE 1: FIND TARGET SECTION |
| Input you get: |
| - Section map like: |
| "# Introduction": 1 |
| "## Setup Steps": 10 |
| "## Hostname Management": 50 |
| |
| - Edit instruction like: "add intro about hostname importance" |
| |
| You must: ONLY identify target section and line numbers |
| |
| PHASE 2: SECTION MODIFICATION |
| Input you get: |
| - Only the content of target section |
| - The edit instruction |
| |
| Example Trace: |
| 1. Got map: {"### App Stop Sequence": 100, "## Hostname Management": 150} |
| Got instruction: "add intro about importance" |
| → I choose: "## Hostname Management" at line 150 |
| |
| 2. Got section content: |
| ## Hostname Management |
| - Default: `{app_name}.localhost` |
| → I add intro explaining hostname importance |
| |
| Remember: You never see full document. You work only with: |
| 1. Section headers + line numbers |
| 2. Then JUST the section to modify |
| """ |
|
|
| def log_step(phase: str, msg: str, data: dict = None): |
| """Utility function for consistent logging""" |
| timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f")[:-3] |
| logger.info(f"[{timestamp}] [{phase}] {msg}") |
| if data: |
| logger.info(f"[{timestamp}] Data: {data}") |
|
|