From 3acfffe0f6654b342bf517a876e9929eebe0f605 Mon Sep 17 00:00:00 2001 From: Fahad Date: Fri, 17 Oct 2025 08:44:59 +0400 Subject: [PATCH] fix: ensure generated code is not copied as-is, may contain partial code generated by the other model --- tools/chat.py | 42 ++++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/tools/chat.py b/tools/chat.py index ad94f2a..f9e7beb 100644 --- a/tools/chat.py +++ b/tools/chat.py @@ -246,7 +246,20 @@ class ChatTool(SimpleTool): body = f"{sanitized_warning}\n\n{block.strip()}".strip() else: if not sanitized_text: - sanitized_text = "Generated code saved to zen_generated.code. Follow the structured instructions in that file exactly before continuing." + sanitized_text = ( + "Generated code saved to zen_generated.code.\n" + "\n" + "CRITICAL: Contains mixed instructions + partial snippets - NOT complete code to copy as-is!\n" + "\n" + "You MUST:\n" + " 1. Read as a proposal from partial context - you may need to read the file in sections\n" + " 2. Implement ideas using YOUR complete codebase context and understanding\n" + " 3. Never paste wholesale - snippets may be partial with missing lines, pasting will corrupt your code!\n" + " 4. Adapt to fit your actual structure and style\n" + " 5. Build/lint/test after implementation to verify correctness\n" + "\n" + "Treat as guidance to implement thoughtfully, not ready-to-paste code." + ) instruction = self._build_agent_instruction(artifact_path) body = self._join_sections(sanitized_text, instruction) @@ -323,26 +336,19 @@ class ChatTool(SimpleTool): @staticmethod def _build_agent_instruction(artifact_path: Path) -> str: return ( - f"CONTINUING FROM PREVIOUS DISCUSSION: The coding assistant has analyzed our conversation context and generated " - f"a structured implementation plan at `{artifact_path}`. This is a direct continuation of our discussion—all previous " - "context, requirements, and shared code remain relevant.\n" + f"CONTINUING FROM PREVIOUS DISCUSSION: Implementation plan saved to `{artifact_path}`.\n" "\n" - f"MANDATORY NEXT STEP: Open `{artifact_path}` immediately and review the implementation plan:\n" - "1. Read the step-by-step instructions—they reference our previous discussion. You may need to read the file in parts if it's too long.\n" - "2. Review each or section in the context of what we've discussed\n" - "3. Verify the proposed changes align with the requirements and code we've already shared\n" - "4. Check for syntax errors, missing imports, or incomplete implementations\n" + f"CRITICAL WARNING: `{artifact_path}` may contain partial code snippets from another AI with limited context. " + "Wholesale copy-pasting MAY CORRUPT your codebase with incomplete logic and missing lines.\n" "\n" - "Then systematically apply the changes:\n" - "- Create new files or update existing ones as instructed, maintaining code style consistency\n" - "- If updating existing code we discussed earlier, carefully preserve unmodified sections\n" - "- Run syntax validation after each modification\n" - "- Execute relevant tests to confirm functionality\n" - "- Verify the implementation works end-to-end with existing code\n" + "Required workflow:\n" + "1. For blocks: Partial excerpts only. Understand the intent and implement using YOUR full context. " + "DO NOT copy wholesale - adapt ideas to fit actual structure.\n" + "2. For blocks: Understand proposal and create properly. Verify completeness (imports, syntax, logic).\n" + "3. Validation: After ALL changes, verify correctness using available tools (build/compile, linters, tests, type checks, etc.).\n" + f"4. Cleanup: After you're done reading and applying changes, delete `{artifact_path}` once verified to prevent stale instructions.\n" "\n" - "Remember: This builds upon our conversation. The generated code reflects the full context of what we've discussed, " - "including any files, requirements, or constraints mentioned earlier. Proceed with implementation immediately." - "Only after you finish applying ALL the changes completely: delete `zen_generated.code` so stale instructions do not linger." + "Treat this as a patch-set requiring manual integration, not ready-to-paste code. You have full codebase context - use it." ) @staticmethod