diff --git a/add_ai_status.py b/add_ai_status.py deleted file mode 100644 index 7fa961d..0000000 --- a/add_ai_status.py +++ /dev/null @@ -1,72 +0,0 @@ -with open("tests/test_visual_orchestration.py", "r", encoding="utf-8", newline="") as f: - content = f.read() - -# Add more explicit debug - check ai_status for errors -content = content.replace( - '''# 3. Verify that Tier 1 generates tracks - print("[Test] Polling for Tier 1 tracks...") - tracks_generated = False - for i in range(120): - # Check both proposed_tracks AND comms log for tracks - mma_status = client.get_mma_status() - proposed = mma_status.get("proposed_tracks", []) - tier_usage = mma_status.get("mma_tier_usage", {}) - - # Also check the comms log directly - session = client.get_session() - entries = session.get("session", {}).get("entries", []) - - # Check for track generation evidence - if proposed and len(proposed) > 0: - tracks_generated = True - print(f"[Test] Tracks found in proposed_tracks after {i}s: {proposed}") - break - elif tier_usage.get("Tier 1", {}).get("input", 0) > 0: - # AI was called, check comms log for track JSON - for entry in entries: - content = str(entry.get("content", "")) - if "track" in content.lower() and ("id" in content or "goal" in content): - tracks_generated = True - print(f"[Test] Tracks found in comms log after {i}s") - break - if i % 10 == 0: - print(f"[Test] Debug: tier_usage={tier_usage}, proposed={proposed}, entries_count={len(entries)}") - time.sleep(1) - assert tracks_generated, f"Tier 1 failed to generate tracks within 120 seconds."''', - '''# 3. Verify that Tier 1 generates tracks - print("[Test] Polling for Tier 1 tracks...") - tracks_generated = False - for i in range(120): - # Check both proposed_tracks AND comms log for tracks - mma_status = client.get_mma_status() - proposed = mma_status.get("proposed_tracks", []) - tier_usage = mma_status.get("mma_tier_usage", {}) - ai_status = mma_status.get("mma_status", "unknown") - - # Also check the comms log directly - session = client.get_session() - entries = session.get("session", {}).get("entries", []) - - # Check for track generation evidence - if proposed and len(proposed) > 0: - tracks_generated = True - print(f"[Test] Tracks found in proposed_tracks after {i}s: {proposed}") - break - elif tier_usage.get("Tier 1", {}).get("input", 0) > 0: - # AI was called, check comms log for track JSON - for entry in entries: - content = str(entry.get("content", "")) - if "track" in content.lower() and ("id" in content or "goal" in content): - tracks_generated = True - print(f"[Test] Tracks found in comms log after {i}s: {content[:100]}") - break - if i % 10 == 0: - print(f"[Test] Debug: ai_status={ai_status}, tier_usage={tier_usage}, proposed={proposed}, entries={len(entries)}") - time.sleep(1) - assert tracks_generated, f"Tier 1 failed to generate tracks within 120 seconds. Status: {ai_status}"''', -) - -with open("tests/test_visual_orchestration.py", "w", encoding="utf-8", newline="") as f: - f.write(content) - -print("Added ai_status debug") diff --git a/add_debug.py b/add_debug.py deleted file mode 100644 index f69a210..0000000 --- a/add_debug.py +++ /dev/null @@ -1,38 +0,0 @@ -with open("tests/test_visual_orchestration.py", "r", encoding="utf-8", newline="") as f: - content = f.read() - -# Add debug polling -content = content.replace( - """# 3. Verify that Tier 1 generates tracks - print("[Test] Polling for Tier 1 tracks...") - tracks_generated = False - for i in range(120): - mma_status = client.get_mma_status() - proposed = mma_status.get("proposed_tracks", []) - if proposed and len(proposed) > 0: - tracks_generated = True - print(f"[Test] Tracks generated after {i}s") - break - time.sleep(1)""", - """# 3. Verify that Tier 1 generates tracks - print("[Test] Polling for Tier 1 tracks...") - tracks_generated = False - for i in range(120): - mma_status = client.get_mma_status() - proposed = mma_status.get("proposed_tracks", []) - if proposed and len(proposed) > 0: - tracks_generated = True - print(f"[Test] Tracks generated after {i}s") - print(f"[Test] Proposed tracks: {proposed}") - break - # Debug: also check tier usage - if i % 10 == 0: - tier_usage = mma_status.get("mma_tier_usage", {}) - print(f"[Test] Debug: tier_usage={tier_usage}, proposed={proposed}") - time.sleep(1)""", -) - -with open("tests/test_visual_orchestration.py", "w", encoding="utf-8", newline="") as f: - f.write(content) - -print("Added debug to test") diff --git a/add_debug2.py b/add_debug2.py deleted file mode 100644 index 0e7b0a4..0000000 --- a/add_debug2.py +++ /dev/null @@ -1,30 +0,0 @@ -with open("src/app_controller.py", "r", encoding="utf-8", newline="") as f: - content = f.read() - -# Add debug to _cb_plan_epic -old = """def _cb_plan_epic(self) -> None: - def _bg_task() -> None: - sys.stderr.write("[DEBUG] _cb_plan_epic _bg_task started\\n") - sys.stderr.flush() - try: - self._set_status("Planning Epic (Tier 1)...") - history = orchestrator_pm.get_track_history_summary()""" - -new = """def _cb_plan_epic(self) -> None: - def _bg_task() -> None: - sys.stderr.write("[DEBUG] _cb_plan_epic _bg_task started\\n") - sys.stderr.flush() - try: - self._set_status("Planning Epic (Tier 1)...") - # DEBUG: Check provider - import src.ai_client as ai_client - sys.stderr.write(f"[DEBUG] _cb_plan_epic: ai_client._provider={ai_client._provider}, _model={ai_client._model}\\n") - sys.stderr.flush() - history = orchestrator_pm.get_track_history_summary()""" - -content = content.replace(old, new) - -with open("src/app_controller.py", "w", encoding="utf-8", newline="") as f: - f.write(content) - -print("Added debug to _cb_plan_epic") diff --git a/add_debug3.py b/add_debug3.py deleted file mode 100644 index ff98ef0..0000000 --- a/add_debug3.py +++ /dev/null @@ -1,24 +0,0 @@ -with open("src/app_controller.py", "r", encoding="utf-8", newline="") as f: - content = f.read() - -# Add debug to show_track_proposal handling -old = """elif action == "show_track_proposal": - self.proposed_tracks = task.get("payload", []) - self._show_track_proposal_modal = True""" - -new = """elif action == "show_track_proposal": - payload = task.get("payload", []) - sys.stderr.write(f"[DEBUG] show_track_proposal: task={task}, payload={payload}\\n") - sys.stderr.flush() - if isinstance(payload, list): - self.proposed_tracks = payload - else: - self.proposed_tracks = [] - self._show_track_proposal_modal = True""" - -content = content.replace(old, new) - -with open("src/app_controller.py", "w", encoding="utf-8", newline="") as f: - f.write(content) - -print("Added debug to show_track_proposal") diff --git a/add_more_debug.py b/add_more_debug.py deleted file mode 100644 index 21eee7c..0000000 --- a/add_more_debug.py +++ /dev/null @@ -1,35 +0,0 @@ -with open("tests/test_visual_orchestration.py", "r", encoding="utf-8", newline="") as f: - content = f.read() - -# Add more waits and verify provider was set -content = content.replace( - """# Setup provider - client.set_value("current_provider", "gemini_cli") - time.sleep(0.5) - client.set_value( - "gcli_path", - f'"{sys.executable}" "{os.path.abspath("tests/mock_gemini_cli.py")}"', - ) - time.sleep(0.5) - client.set_value("manual_approve", True) - time.sleep(0.5)""", - """# Setup provider - verify it took - client.set_value("current_provider", "gemini_cli") - time.sleep(1) - # Verify provider is set correctly - mma = client.get_mma_status() - print(f"[Test] After setting provider: {mma.get('mma_tier_usage', {})}") - client.set_value( - "gcli_path", - f'"{sys.executable}" "{os.path.abspath("tests/mock_gemini_cli.py")}"', - ) - time.sleep(1) - client.set_value("manual_approve", True) - time.sleep(1) - print(f"[Test] After all setup: {client.get_mma_status().get('mma_tier_usage', {})}")""", -) - -with open("tests/test_visual_orchestration.py", "w", encoding="utf-8", newline="") as f: - f.write(content) - -print("Added more debug to test") diff --git a/add_waits.py b/add_waits.py deleted file mode 100644 index 266a15f..0000000 --- a/add_waits.py +++ /dev/null @@ -1,28 +0,0 @@ -with open("tests/test_visual_orchestration.py", "r", encoding="utf-8", newline="") as f: - content = f.read() - -# Add a wait and debug after setting provider -content = content.replace( - """# Setup provider - client.set_value("current_provider", "gemini_cli") - client.set_value( - "gcli_path", - f'"{sys.executable}" "{os.path.abspath("tests/mock_gemini_cli.py")}"', - ) - client.set_value("manual_approve", True)""", - """# Setup provider - client.set_value("current_provider", "gemini_cli") - time.sleep(0.5) # Wait for provider to be set - client.set_value( - "gcli_path", - f'"{sys.executable}" "{os.path.abspath("tests/mock_gemini_cli.py")}"', - ) - time.sleep(0.5) # Wait for gcli_path to be set - client.set_value("manual_approve", True) - time.sleep(0.5) # Wait for all settings""", -) - -with open("tests/test_visual_orchestration.py", "w", encoding="utf-8", newline="") as f: - f.write(content) - -print("Added waits to test") diff --git a/debug3.py b/debug3.py deleted file mode 100644 index 1a5ee60..0000000 --- a/debug3.py +++ /dev/null @@ -1,15 +0,0 @@ -with open("src/app_controller.py", "r", encoding="utf-8", newline="") as f: - content = f.read() - -# Add debug to see tracks -old = """tracks = orchestrator_pm.generate_tracks(self.ui_epic_input, flat, file_items, history_summary=history)""" -new = """tracks = orchestrator_pm.generate_tracks(self.ui_epic_input, flat, file_items, history_summary=history) - sys.stderr.write(f"[DEBUG] generate_tracks returned: {tracks}\\n") - sys.stderr.flush()""" - -content = content.replace(old, new) - -with open("src/app_controller.py", "w", encoding="utf-8", newline="") as f: - f.write(content) - -print("Added debug") diff --git a/debug_api_hooks.py b/debug_api_hooks.py deleted file mode 100644 index a044f3d..0000000 --- a/debug_api_hooks.py +++ /dev/null @@ -1,26 +0,0 @@ -with open("src/api_hooks.py", "r", encoding="utf-8", newline="") as f: - content = f.read() - -# Add debug when receiving /api/gui -old = """elif self.path == "/api/gui": - lock = _get_app_attr(app, "_pending_gui_tasks_lock") - tasks = _get_app_attr(app, "_pending_gui_tasks") - if lock and tasks is not None: - with lock: tasks.append(data)""" - -new = """elif self.path == "/api/gui": - sys.stderr.write(f"[DEBUG api_hooks] /api/gui received: {data}\\n") - sys.stderr.flush() - lock = _get_app_attr(app, "_pending_gui_tasks_lock") - tasks = _get_app_attr(app, "_pending_gui_tasks") - if lock and tasks is not None: - with lock: tasks.append(data) - sys.stderr.write(f"[DEBUG api_hooks] Added task, total: {len(tasks)}\\n") - sys.stderr.flush()""" - -content = content.replace(old, new) - -with open("src/api_hooks.py", "w", encoding="utf-8", newline="") as f: - f.write(content) - -print("Added debug to api_hooks") diff --git a/debug_gen.py b/debug_gen.py deleted file mode 100644 index 1737a4f..0000000 --- a/debug_gen.py +++ /dev/null @@ -1,27 +0,0 @@ -with open("src/orchestrator_pm.py", "r", encoding="utf-8", newline="") as f: - content = f.read() - -# Add debug to see actual response in generate_tracks -old = """response = ai_client.send( - md_content="", # We pass everything in user_message for clarity - user_message=user_message, - enable_tools=False, - )""" - -new = """import sys -sys.stderr.write(f"[DEBUG generate_tracks] Calling ai_client.send with provider={ai_client._provider}, model={ai_client._model}\\n") -sys.stderr.flush() -response = ai_client.send( - md_content="", # We pass everything in user_message for clarity - user_message=user_message, - enable_tools=False, - ) -sys.stderr.write(f"[DEBUG generate_tracks] Got response: {response[:200]}\\n") -sys.stderr.flush()""" - -content = content.replace(old, new) - -with open("src/orchestrator_pm.py", "w", encoding="utf-8", newline="") as f: - f.write(content) - -print("Added debug to generate_tracks") diff --git a/debug_gui2.py b/debug_gui2.py deleted file mode 100644 index 7c03253..0000000 --- a/debug_gui2.py +++ /dev/null @@ -1,22 +0,0 @@ -with open("src/gui_2.py", "r", encoding="utf-8", newline="") as f: - content = f.read() - -# Add debug to _gui_func to see if tasks are being processed -old = """# Process GUI task queue - self._process_pending_gui_tasks()""" - -new = """# Process GUI task queue - # DEBUG: Check if tasks exist before processing - if hasattr(self, 'controller') and hasattr(self.controller, '_pending_gui_tasks'): - pending_count = len(self.controller._pending_gui_tasks) - if pending_count > 0: - sys.stderr.write(f"[DEBUG gui_2] _gui_func: found {pending_count} pending tasks\\n") - sys.stderr.flush() - self._process_pending_gui_tasks()""" - -content = content.replace(old, new) - -with open("src/gui_2.py", "w", encoding="utf-8", newline="") as f: - f.write(content) - -print("Added debug to gui_2.py") diff --git a/debug_resp.py b/debug_resp.py deleted file mode 100644 index d929bfa..0000000 --- a/debug_resp.py +++ /dev/null @@ -1,20 +0,0 @@ -with open("src/orchestrator_pm.py", "r", encoding="utf-8", newline="") as f: - content = f.read() - -# Add debug to see what response looks like -old = """# 4. Parse JSON Output - try: - json_match = response.strip()""" - -new = """# 4. Parse JSON Output - try: - sys.stderr.write(f"[DEBUG] generate_tracks response: {response[:300]}\\n") - sys.stderr.flush() - json_match = response.strip()""" - -content = content.replace(old, new) - -with open("src/orchestrator_pm.py", "w", encoding="utf-8", newline="") as f: - f.write(content) - -print("Added debug to see response") diff --git a/debug_tasks.py b/debug_tasks.py deleted file mode 100644 index 18de66f..0000000 --- a/debug_tasks.py +++ /dev/null @@ -1,28 +0,0 @@ -with open("src/app_controller.py", "r", encoding="utf-8", newline="") as f: - content = f.read() - -# Add debug to _process_pending_gui_tasks to see what's happening -old = """def _process_pending_gui_tasks(self) -> None: - if not self._pending_gui_tasks: - return - with self._pending_gui_tasks_lock: - tasks = self._pending_gui_tasks[:] - self._pending_gui_tasks.clear()""" - -new = """def _process_pending_gui_tasks(self) -> None: - if not self._pending_gui_tasks: - return - with self._pending_gui_tasks_lock: - tasks = self._pending_gui_tasks[:] - sys.stderr.write(f"[DEBUG] _process_pending_gui_tasks: processing {len(tasks)} tasks\\n") - for t in tasks: - sys.stderr.write(f"[DEBUG] task action: {t.get('action')}\\n") - sys.stderr.flush() - self._pending_gui_tasks.clear()""" - -content = content.replace(old, new) - -with open("src/app_controller.py", "w", encoding="utf-8", newline="") as f: - f.write(content) - -print("Added debug to _process_pending_gui_tasks") diff --git a/fix_epic_debug.py b/fix_epic_debug.py deleted file mode 100644 index 97de7a3..0000000 --- a/fix_epic_debug.py +++ /dev/null @@ -1,51 +0,0 @@ -with open("src/app_controller.py", "r", encoding="utf-8", newline="") as f: - content = f.read() - -# Fix _cb_plan_epic to catch and print exceptions properly -old = """def _cb_plan_epic(self) -> None: - def _bg_task() -> None: - sys.stderr.write("[DEBUG] _cb_plan_epic _bg_task started\\n") - sys.stderr.flush() - try: - self._set_status("Planning Epic (Tier 1)...") - # DEBUG: Check provider - import src.ai_client as ai_client - sys.stderr.write(f"[DEBUG] _cb_plan_epic: ai_client._provider={ai_client._provider}, _model={ai_client._model}\\n") - sys.stderr.flush() - history = orchestrator_pm.get_track_history_summary()""" - -new = """def _cb_plan_epic(self) -> None: - def _bg_task() -> None: - import traceback - sys.stderr.write("[DEBUG] _cb_plan_epic _bg_task started\\n") - sys.stderr.flush() - try: - self._set_status("Planning Epic (Tier 1)...") - # DEBUG: Check provider - import src.ai_client as ai_client - sys.stderr.write(f"[DEBUG] _cb_plan_epic: ai_client._provider={ai_client._provider}, _model={ai_client._model}\\n") - sys.stderr.flush() - history = orchestrator_pm.get_track_history_summary() - sys.stderr.write(f"[DEBUG] _cb_plan_epic: calling generate_tracks with epic_input={self.ui_epic_input[:50]}\\n") - sys.stderr.flush()""" - -content = content.replace(old, new) - -# Also catch the exception and print traceback -old2 = """except Exception as e: - self._set_status(f"Epic plan error: {e}") - print(f"ERROR in _cb_plan_epic background task: {e}")""" - -new2 = """except Exception as e: - self._set_status(f"Epic plan error: {e}") - tb = traceback.format_exc() - sys.stderr.write(f"ERROR in _cb_plan_epic background task: {e}\\n{tb}\\n") - sys.stderr.flush() - print(f"ERROR in _cb_plan_epic background task: {e}")""" - -content = content.replace(old2, new2) - -with open("src/app_controller.py", "w", encoding="utf-8", newline="") as f: - f.write(content) - -print("Added more debug to _cb_plan_epic") diff --git a/fix_json_parsing.py b/fix_json_parsing.py deleted file mode 100644 index e1bfd6b..0000000 --- a/fix_json_parsing.py +++ /dev/null @@ -1,40 +0,0 @@ -with open("src/orchestrator_pm.py", "r", encoding="utf-8", newline="") as f: - content = f.read() - -# Fix JSON parsing to handle mock's wrapped format -old = """# 4. Parse JSON Output - try: - # The prompt asks for a JSON array. We need to extract it if the AI added markdown blocks. - json_match = response.strip() - if "```json" in json_match: - json_match = json_match.split("```json")[1].split("```")[0].strip() - elif "```" in json_match: - json_match = json_match.split("```")[1].split("```")[0].strip() - tracks: list[dict[str, Any]] = json.loads(json_match)""" - -new = """# 4. Parse JSON Output - try: - json_match = response.strip() - # Handle mock_gemini_cli.py format: {"type": "message", "content": "[...]"} - if '"content": "' in json_match or "'content': '" in json_match: - import re - match = re.search(r'"content"\\s*:\\s*"(\\[.*?\\])"', json_match) - if match: - json_match = match.group(1) - elif '"content":' in json_match: - match = re.search(r'"content":\\s*(\\[.*?\\])', json_match) - if match: - json_match = match.group(1) - # Handle markdown code blocks - if "```json" in json_match: - json_match = json_match.split("```json")[1].split("```")[0].strip() - elif "```" in json_match: - json_match = json_match.split("```")[1].split("```")[0].strip() - tracks: list[dict[str, Any]] = json.loads(json_match)""" - -content = content.replace(old, new) - -with open("src/orchestrator_pm.py", "w", encoding="utf-8", newline="") as f: - f.write(content) - -print("Fixed JSON parsing in orchestrator_pm.py") diff --git a/fix_orch.py b/fix_orch.py deleted file mode 100644 index 3405c75..0000000 --- a/fix_orch.py +++ /dev/null @@ -1,52 +0,0 @@ -with open("src/orchestrator_pm.py", "r", encoding="utf-8", newline="") as f: - lines = f.readlines() - -# Find and replace the JSON parsing section -new_lines = [] -i = 0 -while i < len(lines): - line = lines[i] - # Replace the old parsing section - if "# 4. Parse JSON Output" in line: - # Add new parsing code - new_lines.append(" # 4. Parse JSON Output\n") - new_lines.append(" try:\n") - new_lines.append(" import sys\n") - new_lines.append( - ' sys.stderr.write(f"[DEBUG] generate_tracks response: {response[:300]}\\n")\n' - ) - new_lines.append(" sys.stderr.flush()\n") - new_lines.append(" json_match = response.strip()\n") - new_lines.append( - ' # Handle mock_gemini_cli.py format: {"type": "message", "content": "[...]"}\n' - ) - new_lines.append(' if \'"content": "\' in json_match:\n') - new_lines.append(" import re\n") - new_lines.append( - ' match = re.search(r\'"content"\\s*:\\s*"(\\[.*?\\])"\', json_match)\n' - ) - new_lines.append(" if match:\n") - new_lines.append(" json_match = match.group(1)\n") - new_lines.append(" # Handle markdown code blocks\n") - new_lines.append(' if "```json" in json_match:\n') - new_lines.append( - ' json_match = json_match.split("```json")[1].split("```")[0].strip()\n' - ) - new_lines.append(' elif "```" in json_match:\n') - new_lines.append( - ' json_match = json_match.split("```")[1].split("```")[0].strip()\n' - ) - new_lines.append(" tracks: list[dict[str, Any]] = json.loads(json_match)\n") - - # Skip the old lines - i += 1 - while i < len(lines) and "tracks:" not in lines[i]: - i += 1 - else: - new_lines.append(line) - i += 1 - -with open("src/orchestrator_pm.py", "w", encoding="utf-8", newline="") as f: - f.writelines(new_lines) - -print("Fixed orchestrator_pm.py") diff --git a/fix_parsing.py b/fix_parsing.py deleted file mode 100644 index 062157d..0000000 --- a/fix_parsing.py +++ /dev/null @@ -1,37 +0,0 @@ -import re - -with open("src/orchestrator_pm.py", "r", encoding="utf-8", newline="") as f: - content = f.read() - -# Replace the JSON parsing section -old = """ # 4. Parse JSON Output - try: - # The prompt asks for a JSON array. We need to extract it if the AI added markdown blocks. - json_match = response.strip() - if "```json" in json_match: - json_match = json_match.split("```json")[1].split("```")[0].strip() - elif "```" in json_match: - json_match = json_match.split("```")[1].split("```")[0].strip() - tracks: list[dict[str, Any]] = json.loads(json_match)""" - -new = """ # 4. Parse JSON Output - try: - json_match = response.strip() - # Handle mock_gemini_cli.py format: {"type": "message", "content": "[...]"} - if '"content": "' in json_match: - match = re.search(r'"content"\\s*:\\s*"(\\[.*?\\])"', json_match) - if match: - json_match = match.group(1) - # Handle markdown code blocks - if "```json" in json_match: - json_match = json_match.split("```json")[1].split("```")[0].strip() - elif "```" in json_match: - json_match = json_match.split("```")[1].split("```")[0].strip() - tracks: list[dict[str, Any]] = json.loads(json_match)""" - -content = content.replace(old, new) - -with open("src/orchestrator_pm.py", "w", encoding="utf-8", newline="") as f: - f.write(content) - -print("Fixed JSON parsing in orchestrator_pm.py") diff --git a/fix_provider.py b/fix_provider.py deleted file mode 100644 index 7453d3b..0000000 --- a/fix_provider.py +++ /dev/null @@ -1,30 +0,0 @@ -with open("src/orchestrator_pm.py", "r", encoding="utf-8", newline="") as f: - content = f.read() - -# Add provider setup before ai_client.send() -old_code = """ # Set custom system prompt for this call - old_system_prompt = ai_client._custom_system_prompt - ai_client.set_custom_system_prompt(system_prompt or "") - try: - # 3. Call Tier 1 Model (Strategic - Pro) - # Note: We use gemini-1.5-pro or similar high-reasoning model for Tier 1 - response = ai_client.send(""" - -new_code = """ # Set custom system prompt for this call - old_system_prompt = ai_client._custom_system_prompt - ai_client.set_custom_system_prompt(system_prompt or "") - # Ensure we use the current provider from ai_client state - current_provider = ai_client.get_provider() - current_model = ai_client._model if hasattr(ai_client, '_model') else 'gemini-2.5-flash-lite' - ai_client.set_provider(current_provider, current_model) - try: - # 3. Call Tier 1 Model (Strategic - Pro) - # Note: We use gemini-1.5-pro or similar high-reasoning model for Tier 1 - response = ai_client.send(""" - -content = content.replace(old_code, new_code) - -with open("src/orchestrator_pm.py", "w", encoding="utf-8", newline="") as f: - f.write(content) - -print("Fixed provider in orchestrator_pm.py") diff --git a/fix_provider2.py b/fix_provider2.py deleted file mode 100644 index 46500e4..0000000 --- a/fix_provider2.py +++ /dev/null @@ -1,22 +0,0 @@ -with open("src/orchestrator_pm.py", "r", encoding="utf-8", newline="") as f: - content = f.read() - -# Fix the provider/model setting in generate_tracks -old = """# Ensure we use the current provider from ai_client state - current_provider = ai_client.get_provider() - current_model = ai_client._model if hasattr(ai_client, '_model') else 'gemini-2.5-flash-lite' - ai_client.set_provider(current_provider, current_model)""" - -new = """# Ensure we use the current provider from ai_client state - # Import ai_client module-level to access globals - import src.ai_client as ai_client_module - current_provider = ai_client_module._provider - current_model = ai_client_module._model - ai_client.set_provider(current_provider, current_model)""" - -content = content.replace(old, new) - -with open("src/orchestrator_pm.py", "w", encoding="utf-8", newline="") as f: - f.write(content) - -print("Fixed provider/model in orchestrator_pm.py") diff --git a/fix_show_track.py b/fix_show_track.py deleted file mode 100644 index 69422dc..0000000 --- a/fix_show_track.py +++ /dev/null @@ -1,29 +0,0 @@ -with open("src/app_controller.py", "r", encoding="utf-8", newline="") as f: - content = f.read() - -# Fix show_track_proposal handler to debug and handle properly -old = """elif action == "show_track_proposal": - self.proposed_tracks = task.get("payload", []) - self._show_track_proposal_modal = True""" - -new = """elif action == "show_track_proposal": - # Handle both nested payload and direct list - raw_payload = task.get("payload") - sys.stderr.write(f"[DEBUG] show_track_proposal: raw_payload type={type(raw_payload)}, task={task}\\n") - sys.stderr.flush() - if isinstance(raw_payload, list): - self.proposed_tracks = raw_payload - elif isinstance(raw_payload, dict) and "tracks" in raw_payload: - self.proposed_tracks = raw_payload.get("tracks", []) - else: - self.proposed_tracks = [] - sys.stderr.write(f"[DEBUG] show_track_proposal: final proposed_tracks={self.proposed_tracks}\\n") - sys.stderr.flush() - self._show_track_proposal_modal = True""" - -content = content.replace(old, new) - -with open("src/app_controller.py", "w", encoding="utf-8", newline="") as f: - f.write(content) - -print("Fixed show_track_proposal handler") diff --git a/run_repro.py b/run_repro.py deleted file mode 100644 index ca20f0b..0000000 --- a/run_repro.py +++ /dev/null @@ -1,67 +0,0 @@ -import time -import requests -import sys -import os - -# Ensure src/ is in path -project_root = os.path.dirname(os.path.abspath(__file__)) -src_path = os.path.join(project_root, "src") -sys.path.insert(0, src_path) - -from api_hook_client import ApiHookClient - -def run_repro(): - client = ApiHookClient("http://127.0.0.1:8999") - if not client.wait_for_server(timeout=15): - print("Failed to connect to GUI Hook Server.") - return - - print("[REPRO] Connected to GUI.") - - # 1. Reset and Setup - client.click("btn_reset") - time.sleep(1) - client.set_value("auto_add_history", True) - client.set_value("manual_approve", False) # Auto-approve for simulation - client.set_value("current_provider", "gemini_cli") - - mock_script = os.path.abspath("tests/mock_gemini_cli.py") - client.set_value("gcli_path", f'"{sys.executable}" "{mock_script}"') - - # 2. Trigger Chat - msg = "What is the current date and time? Answer in one sentence." - print(f"[REPRO] Sending message: {msg}") - client.set_value("ai_input", msg) - client.click("btn_gen_send") - - # 3. Wait and Monitor - start_time = time.time() - while time.time() - start_time < 30: - status = client.get_value("ai_status") - print(f"[REPRO] Status: {status}") - - if status == "error": - print("[REPRO] DETECTED ERROR STATUS!") - # Try to get more info if possible - break - - if status == "done": - print("[REPRO] Success! Status is done.") - break - - # Check events - events = client.get_events() - for ev in events: - print(f"[REPRO] Received Event: {ev.get('type')}") - - time.sleep(1) - - # 4. Check Session - session = client.get_session() - entries = session.get('session', {}).get('entries', []) - print(f"[REPRO] History Entries: {len(entries)}") - for i, entry in enumerate(entries): - print(f" {i}: [{entry.get('role')}] {entry.get('content')[:100]}...") - -if __name__ == "__main__": - run_repro() diff --git a/run_tests.py b/run_tests.py deleted file mode 100644 index afa3db2..0000000 --- a/run_tests.py +++ /dev/null @@ -1,113 +0,0 @@ -import argparse -import sys -import tomllib -import pytest -from typing import Dict, List, Any - -def load_manifest(path: str) -> Dict[str, Any]: - """ - Loads a manifest file (expected to be in TOML format) from the given path. - - Args: - path: The path to the TOML manifest file. - - Returns: - A dictionary representing the loaded manifest. - - Raises: - FileNotFoundError: If the manifest file does not exist. - tomllib.TOMLDecodeError: If the manifest file is not valid TOML. - """ - try: - with open(path, 'rb') as f: - return tomllib.load(f) - except FileNotFoundError: - print(f"Error: Manifest file not found at {path}", file=sys.stderr) - raise - except tomllib.TOMLDecodeError: - print(f"Error: Could not decode TOML from {path}", file=sys.stderr) - raise - -def get_test_files(manifest: Dict[str, Any], category: str) -> List[str]: - """ - Determines the list of test files based on the manifest and a specified category. - - Args: - manifest: The loaded manifest dictionary. - category: The category of tests to retrieve. - - Returns: - A list of file paths corresponding to the tests in the given category. - Returns an empty list if the category is not found or has no tests. - """ - print(f"DEBUG: Looking for category '{category}' in manifest.", file=sys.stderr) - files = manifest.get("categories", {}).get(category, {}).get("files", []) - print(f"DEBUG: Found test files for category '{category}': {files}", file=sys.stderr) - return files - -def main() -> None: - parser = argparse.ArgumentParser( - description="Run tests with optional manifest and category filtering, passing additional pytest arguments.", - formatter_class=argparse.RawDescriptionHelpFormatter, - epilog="""\ -Example usage: - python run_tests.py --manifest tests.toml --category unit -- --verbose --cov=my_module - python run_tests.py --manifest tests.toml --category integration - python run_tests.py --manifest tests.toml --category core - python run_tests.py --manifest tests.toml # Runs tests from default_categories - python run_tests.py -- --capture=no # Runs all tests with pytest args -""" - ) - parser.add_argument( - "--manifest", - type=str, - help="Path to the TOML manifest file containing test configurations." - ) - parser.add_argument( - "--category", - type=str, - help="Category of tests to run (e.g., 'unit', 'integration')." - ) - # Parse known arguments for the script itself, then parse remaining args for pytest - args, remaining_pytest_args = parser.parse_known_args(sys.argv[1:]) - selected_test_files = [] - manifest_data = None - if args.manifest: - try: - manifest_data = load_manifest(args.manifest) - except (FileNotFoundError, tomllib.TOMLDecodeError): - # Error message already printed by load_manifest - sys.exit(1) - if args.category: - # Case 1: --manifest and --category provided - files = get_test_files(manifest_data, args.category) - selected_test_files.extend(files) - else: - # Case 2: --manifest provided, but no --category - # Load default categories from manifest['execution']['default_categories'] - default_categories = manifest_data.get("execution", {}).get("default_categories", []) - if not default_categories: - print(f"Error: --manifest provided without --category, and no 'default_categories' found in manifest '{args.manifest}'.", file=sys.stderr) - parser.print_help(sys.stderr) - sys.exit(1) - print(f"DEBUG: Using default categories from manifest '{args.manifest}': {default_categories}", file=sys.stderr) - for cat in default_categories: - files = get_test_files(manifest_data, cat) - selected_test_files.extend(files) - elif args.category: - # Case 3: --category provided without --manifest - print("Error: --category requires --manifest to be specified.", file=sys.stderr) - parser.print_help(sys.stderr) - sys.exit(1) - # Combine selected test files with any remaining pytest arguments that were not parsed by this script. - # We also filter out the literal '--' if it was passed by the user to avoid pytest errors if it appears multiple times. - pytest_command_args = selected_test_files + [arg for arg in remaining_pytest_args if arg != '--'] - # Filter out any empty strings that might have been included. - final_pytest_args = [arg for arg in pytest_command_args if arg] - # If no specific tests were selected from manifest/category and no manifest was provided, - # and no other pytest args were given, pytest.main([]) runs default test discovery. - print(f"Running pytest with arguments: {final_pytest_args}", file=sys.stderr) - sys.exit(pytest.main(final_pytest_args)) - -if __name__ == "__main__": - main() diff --git a/simplify_test.py b/simplify_test.py deleted file mode 100644 index 712d6f0..0000000 --- a/simplify_test.py +++ /dev/null @@ -1,58 +0,0 @@ -with open("tests/test_visual_orchestration.py", "r", encoding="utf-8", newline="") as f: - content = f.read() - -# Simplify test - check comms log instead of proposed_tracks popup -content = content.replace( - '''# 3. Verify that Tier 1 generates tracks - print("[Test] Polling for Tier 1 tracks...") - tracks_generated = False - for i in range(120): - mma_status = client.get_mma_status() - proposed = mma_status.get("proposed_tracks", []) - if proposed and len(proposed) > 0: - tracks_generated = True - print(f"[Test] Tracks generated after {i}s") - print(f"[Test] Proposed tracks: {proposed}") - break - # Debug: also check tier usage - if i % 10 == 0: - tier_usage = mma_status.get("mma_tier_usage", {}) - print(f"[Test] Debug: tier_usage={tier_usage}, proposed={proposed}") - time.sleep(1) - assert tracks_generated, "Tier 1 failed to generate tracks within 60 seconds."''', - '''# 3. Verify that Tier 1 generates tracks - print("[Test] Polling for Tier 1 tracks...") - tracks_generated = False - for i in range(120): - # Check both proposed_tracks AND comms log for tracks - mma_status = client.get_mma_status() - proposed = mma_status.get("proposed_tracks", []) - tier_usage = mma_status.get("mma_tier_usage", {}) - - # Also check the comms log directly - session = client.get_session() - entries = session.get("session", {}).get("entries", []) - - # Check for track generation evidence - if proposed and len(proposed) > 0: - tracks_generated = True - print(f"[Test] Tracks found in proposed_tracks after {i}s: {proposed}") - break - elif tier_usage.get("Tier 1", {}).get("input", 0) > 0: - # AI was called, check comms log for track JSON - for entry in entries: - content = str(entry.get("content", "")) - if "track" in content.lower() and ("id" in content or "goal" in content): - tracks_generated = True - print(f"[Test] Tracks found in comms log after {i}s") - break - if i % 10 == 0: - print(f"[Test] Debug: tier_usage={tier_usage}, proposed={proposed}, entries_count={len(entries)}") - time.sleep(1) - assert tracks_generated, f"Tier 1 failed to generate tracks within 120 seconds."''', -) - -with open("tests/test_visual_orchestration.py", "w", encoding="utf-8", newline="") as f: - f.write(content) - -print("Simplified test to check comms log") diff --git a/temp_conftest.py b/temp_conftest.py deleted file mode 100644 index 7138a3d..0000000 Binary files a/temp_conftest.py and /dev/null differ diff --git a/temp_conftest2.py b/temp_conftest2.py deleted file mode 100644 index 7138a3d..0000000 Binary files a/temp_conftest2.py and /dev/null differ diff --git a/temp_gui_old.py b/temp_gui_old.py deleted file mode 100644 index 4b27e69..0000000 Binary files a/temp_gui_old.py and /dev/null differ diff --git a/temp_gui_old2.py b/temp_gui_old2.py deleted file mode 100644 index 4b27e69..0000000 Binary files a/temp_gui_old2.py and /dev/null differ diff --git a/test_callback_output.txt b/test_callback_output.txt deleted file mode 100644 index da222da..0000000 --- a/test_callback_output.txt +++ /dev/null @@ -1 +0,0 @@ -Callback executed: f1fa1f15-2d76-40f8-8d75-960476ceec85 \ No newline at end of file diff --git a/test_edit.py b/test_edit.py deleted file mode 100644 index 0c7e86f..0000000 --- a/test_edit.py +++ /dev/null @@ -1,8 +0,0 @@ -from src.mcp_client import edit_file - -result = edit_file( - "src/app_controller.py", - " tracks = orchestrator_pm.generate_tracks(self.ui_epic_input, flat, file_items, history_summary=history)\n _t1_new = ai_client.get_comms_log()[_t1_baseline:]", - ' tracks = orchestrator_pm.generate_tracks(self.ui_epic_input, flat, file_items, history_summary=history)\n import sys\n sys.stderr.write(f"[DEBUG] generate_tracks returned: {tracks}\\n")\n sys.stderr.flush()\n _t1_new = ai_client.get_comms_log()[_t1_baseline:]', -) -print(result) diff --git a/test_err.txt b/test_err.txt deleted file mode 100644 index 18b515a..0000000 --- a/test_err.txt +++ /dev/null @@ -1 +0,0 @@ -[DEBUG] _process_event_queue entered diff --git a/test_error.txt b/test_error.txt deleted file mode 100644 index e69de29..0000000 diff --git a/test_error2.txt b/test_error2.txt deleted file mode 100644 index e69de29..0000000 diff --git a/test_migration_sanity.py b/test_migration_sanity.py deleted file mode 100644 index cb15c74..0000000 --- a/test_migration_sanity.py +++ /dev/null @@ -1,26 +0,0 @@ -import os -import sys - -# Ensure src/ is in path -project_root = os.path.dirname(os.path.abspath(__file__)) -src_path = os.path.join(project_root, "src") -sys.path.insert(0, src_path) - -# Mock ImGui bundle to avoid needing a window for simple state check -from unittest.mock import MagicMock -import sys -sys.modules['imgui_bundle'] = MagicMock() -sys.modules['imgui_bundle.imgui'] = MagicMock() -sys.modules['imgui_bundle.hello_imgui'] = MagicMock() -sys.modules['imgui_bundle.immapp'] = MagicMock() - -try: - from gui_2 import App - app = App() - print("App instantiated successfully!") - print(f"Controller active_project_path: {app.controller.active_project_path}") - print(f"App config: {app.config is app.controller.config}") # Should be True via __getattr__ -except Exception as e: - print(f"Failed to instantiate App: {e}") - import traceback - traceback.print_exc() diff --git a/test_mma_persistence.py b/test_mma_persistence.py deleted file mode 100644 index e2cd411..0000000 --- a/test_mma_persistence.py +++ /dev/null @@ -1,30 +0,0 @@ - -import unittest -from pathlib import Path -import project_manager - -class TestMMAPersistence(unittest.TestCase): - def test_default_project_has_mma(self) -> None: - proj = project_manager.default_project("test") - self.assertIn("mma", proj) - self.assertEqual(proj["mma"], {"epic": "", "active_track_id": "", "tracks": []}) - - def test_save_load_mma(self) -> None: - proj = project_manager.default_project("test") - proj["mma"] = {"epic": "Test Epic", "tracks": [{"id": "track_1"}]} - test_file = Path("test_mma_proj.toml") - try: - project_manager.save_project(proj, test_file) - loaded = project_manager.load_project(test_file) - self.assertIn("mma", loaded) - self.assertEqual(loaded["mma"]["epic"], "Test Epic") - self.assertEqual(len(loaded["mma"]["tracks"]), 1) - finally: - if test_file.exists(): - test_file.unlink() - hist_file = Path("test_mma_proj_history.toml") - if hist_file.exists(): - hist_file.unlink() - -if __name__ == "__main__": - unittest.main() diff --git a/test_out.txt b/test_out.txt deleted file mode 100644 index 892752c..0000000 --- a/test_out.txt +++ /dev/null @@ -1,118 +0,0 @@ -============================= test session starts ============================= -platform win32 -- Python 3.11.6, pytest-9.0.2, pluggy-1.6.0 -- C:\projects\manual_slop\.venv\Scripts\python.exe -cachedir: .pytest_cache -rootdir: C:\projects\manual_slop -configfile: pyproject.toml -plugins: anyio-4.12.1, asyncio-1.3.0, cov-7.0.0, timeout-2.4.0 -asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function -timeout: 120.0s -timeout method: thread -timeout func_only: False -collecting ... collected 330 items - -tests/test_agent_capabilities.py::test_agent_capabilities_listing PASSED [ 0%] -tests/test_agent_tools_wiring.py::test_set_agent_tools PASSED [ 0%] -tests/test_agent_tools_wiring.py::test_build_anthropic_tools_conversion PASSED [ 0%] -tests/test_ai_client_cli.py::test_ai_client_send_gemini_cli PASSED [ 1%] -tests/test_ai_client_list_models.py::test_list_models_gemini_cli PASSED [ 1%] -tests/test_ai_style_formatter.py::test_basic_indentation PASSED [ 1%] -tests/test_ai_style_formatter.py::test_top_level_blank_lines PASSED [ 2%] -tests/test_ai_style_formatter.py::test_inner_blank_lines PASSED [ 2%] -tests/test_ai_style_formatter.py::test_multiline_string_safety PASSED [ 2%] -tests/test_ai_style_formatter.py::test_continuation_indentation PASSED [ 3%] -tests/test_ai_style_formatter.py::test_multiple_top_level_definitions PASSED [ 3%] -tests/test_api_events.py::test_ai_client_event_emitter_exists PASSED [ 3%] -tests/test_api_events.py::test_event_emission PASSED [ 3%] -tests/test_api_events.py::test_send_emits_events_proper PASSED [ 4%] -tests/test_api_events.py::test_send_emits_tool_events PASSED [ 4%] -tests/test_api_hook_client.py::test_get_status_success PASSED [ 4%] -tests/test_api_hook_client.py::test_get_project_success PASSED [ 5%] -tests/test_api_hook_client.py::test_get_session_success PASSED [ 5%] -tests/test_api_hook_client.py::test_post_gui_success PASSED [ 5%] -tests/test_api_hook_client.py::test_get_performance_success PASSED [ 6%] -tests/test_api_hook_client.py::test_unsupported_method_error PASSED [ 6%] -tests/test_api_hook_client.py::test_get_text_value PASSED [ 6%] -tests/test_api_hook_client.py::test_get_node_status PASSED [ 6%] -tests/test_api_hook_extensions.py::test_api_client_has_extensions PASSED [ 7%] -tests/test_api_hook_extensions.py::test_select_tab_integration PASSED [ 7%] -tests/test_api_hook_extensions.py::test_select_list_item_integration PASSED [ 7%] -tests/test_api_hook_extensions.py::test_get_indicator_state_integration PASSED [ 8%] -tests/test_api_hook_extensions.py::test_app_processes_new_actions PASSED [ 8%] -tests/test_arch_boundary_phase1.py::TestArchBoundaryPhase1::test_claude_mma_exec_no_hardcoded_path PASSED [ 8%] -tests/test_arch_boundary_phase1.py::TestArchBoundaryPhase1::test_mcp_client_whitelist_enforcement PASSED [ 9%] -tests/test_arch_boundary_phase1.py::TestArchBoundaryPhase1::test_mma_exec_no_hardcoded_path PASSED [ 9%] -tests/test_arch_boundary_phase1.py::TestArchBoundaryPhase1::test_unfettered_modules_constant_removed PASSED [ 9%] -tests/test_arch_boundary_phase2.py::TestArchBoundaryPhase2::test_mcp_client_dispatch_completeness PASSED [ 10%] -tests/test_arch_boundary_phase2.py::TestArchBoundaryPhase2::test_mutating_tool_triggers_callback PASSED [ 10%] -tests/test_arch_boundary_phase2.py::TestArchBoundaryPhase2::test_non_mutating_tool_skips_callback PASSED [ 10%] -tests/test_arch_boundary_phase2.py::TestArchBoundaryPhase2::test_rejection_prevents_dispatch PASSED [ 10%] -tests/test_arch_boundary_phase2.py::TestArchBoundaryPhase2::test_toml_exposes_all_dispatch_tools PASSED [ 11%] -tests/test_arch_boundary_phase2.py::TestArchBoundaryPhase2::test_toml_mutating_tools_disabled_by_default PASSED [ 11%] -tests/test_arch_boundary_phase3.py::TestArchBoundaryPhase3::test_cascade_blocks_multi_hop PASSED [ 11%] -tests/test_arch_boundary_phase3.py::TestArchBoundaryPhase3::test_cascade_blocks_simple PASSED [ 12%] -tests/test_arch_boundary_phase3.py::TestArchBoundaryPhase3::test_execution_engine_tick_cascades_blocks PASSED [ 12%] -tests/test_arch_boundary_phase3.py::TestArchBoundaryPhase3::test_in_progress_not_blocked PASSED [ 12%] -tests/test_arch_boundary_phase3.py::TestArchBoundaryPhase3::test_manual_unblock_restores_todo PASSED [ 13%] -tests/test_ast_parser.py::test_ast_parser_initialization PASSED [ 13%] -tests/test_ast_parser.py::test_ast_parser_parse PASSED [ 13%] -tests/test_ast_parser.py::test_ast_parser_get_skeleton_python PASSED [ 13%] -tests/test_ast_parser.py::test_ast_parser_invalid_language PASSED [ 14%] -tests/test_ast_parser.py::test_ast_parser_get_curated_view PASSED [ 14%] -tests/test_auto_whitelist.py::test_auto_whitelist_keywords PASSED [ 14%] -tests/test_auto_whitelist.py::test_auto_whitelist_message_count PASSED [ 15%] -tests/test_auto_whitelist.py::test_auto_whitelist_large_size PASSED [ 15%] -tests/test_auto_whitelist.py::test_no_auto_whitelist_insignificant PASSED [ 15%] -tests/test_cli_tool_bridge.py::TestCliToolBridge::test_allow_decision PASSED [ 16%] -tests/test_cli_tool_bridge.py::TestCliToolBridge::test_deny_decision PASSED [ 16%] -tests/test_cli_tool_bridge.py::TestCliToolBridge::test_unreachable_hook_server PASSED [ 16%] -tests/test_cli_tool_bridge_mapping.py::TestCliToolBridgeMapping::test_mapping_from_api_format PASSED [ 16%] -tests/test_conductor_api_hook_integration.py::test_conductor_integrates_api_hook_client_for_verification PASSED [ 17%] -tests/test_conductor_api_hook_integration.py::test_conductor_handles_api_hook_failure PASSED [ 17%] -tests/test_conductor_api_hook_integration.py::test_conductor_handles_api_hook_connection_error PASSED [ 17%] -tests/test_conductor_engine_v2.py::test_conductor_engine_initialization PASSED [ 18%] -tests/test_conductor_engine_v2.py::test_conductor_engine_run_executes_tickets_in_order PASSED [ 18%] -tests/test_conductor_engine_v2.py::test_run_worker_lifecycle_calls_ai_client_send PASSED [ 18%] -tests/test_conductor_engine_v2.py::test_run_worker_lifecycle_context_injection PASSED [ 19%] -tests/test_conductor_engine_v2.py::test_run_worker_lifecycle_handles_blocked_response PASSED [ 19%] -tests/test_conductor_engine_v2.py::test_run_worker_lifecycle_step_mode_confirmation PASSED [ 19%] -tests/test_conductor_engine_v2.py::test_run_worker_lifecycle_step_mode_rejection PASSED [ 20%] -tests/test_conductor_engine_v2.py::test_conductor_engine_dynamic_parsing_and_execution PASSED [ 20%] -tests/test_conductor_engine_v2.py::test_run_worker_lifecycle_pushes_response_via_queue PASSED [ 20%] -tests/test_conductor_engine_v2.py::test_run_worker_lifecycle_token_usage_from_comms_log PASSED [ 20%] -tests/test_conductor_tech_lead.py::TestConductorTechLead::test_generate_tickets_parse_error PASSED [ 21%] -tests/test_conductor_tech_lead.py::TestConductorTechLead::test_generate_tickets_success PASSED [ 21%] -tests/test_conductor_tech_lead.py::TestTopologicalSort::test_topological_sort_complex PASSED [ 21%] -tests/test_conductor_tech_lead.py::TestTopologicalSort::test_topological_sort_cycle PASSED [ 22%] -tests/test_conductor_tech_lead.py::TestTopologicalSort::test_topological_sort_empty PASSED [ 22%] -tests/test_conductor_tech_lead.py::TestTopologicalSort::test_topological_sort_linear PASSED [ 22%] -tests/test_conductor_tech_lead.py::TestTopologicalSort::test_topological_sort_missing_dependency PASSED [ 23%] -tests/test_conductor_tech_lead.py::test_topological_sort_vlog PASSED [ 23%] -tests/test_cost_tracker.py::test_estimate_cost PASSED [ 23%] -tests/test_dag_engine.py::test_get_ready_tasks_linear PASSED [ 23%] -tests/test_dag_engine.py::test_get_ready_tasks_branching PASSED [ 24%] -tests/test_dag_engine.py::test_has_cycle_no_cycle PASSED [ 24%] -tests/test_dag_engine.py::test_has_cycle_direct_cycle PASSED [ 24%] -tests/test_dag_engine.py::test_has_cycle_indirect_cycle PASSED [ 25%] -tests/test_dag_engine.py::test_has_cycle_complex_no_cycle PASSED [ 25%] -tests/test_dag_engine.py::test_get_ready_tasks_multiple_deps PASSED [ 25%] -tests/test_dag_engine.py::test_topological_sort PASSED [ 26%] -tests/test_dag_engine.py::test_topological_sort_cycle PASSED [ 26%] -tests/test_deepseek_infra.py::test_credentials_error_mentions_deepseek PASSED [ 26%] -tests/test_deepseek_infra.py::test_default_project_includes_reasoning_role PASSED [ 26%] -tests/test_deepseek_infra.py::test_gui_providers_list PASSED [ 27%] -tests/test_deepseek_infra.py::test_deepseek_model_listing PASSED [ 27%] -tests/test_deepseek_infra.py::test_gui_provider_list_via_hooks PASSED [ 27%] -tests/test_deepseek_provider.py::test_deepseek_model_selection PASSED [ 28%] -tests/test_deepseek_provider.py::test_deepseek_completion_logic PASSED [ 28%] -tests/test_deepseek_provider.py::test_deepseek_reasoning_logic PASSED [ 28%] -tests/test_deepseek_provider.py::test_deepseek_tool_calling PASSED [ 29%] -tests/test_deepseek_provider.py::test_deepseek_streaming PASSED [ 29%] -tests/test_execution_engine.py::test_execution_engine_basic_flow PASSED [ 29%] -tests/test_execution_engine.py::test_execution_engine_update_nonexistent_task PASSED [ 30%] -tests/test_execution_engine.py::test_execution_engine_status_persistence PASSED [ 30%] -tests/test_execution_engine.py::test_execution_engine_auto_queue PASSED [ 30%] -tests/test_execution_engine.py::test_execution_engine_step_mode PASSED [ 30%] -tests/test_execution_engine.py::test_execution_engine_approve_task PASSED [ 31%] -tests/test_extended_sims.py::test_context_sim_live PASSED [ 31%] -tests/test_extended_sims.py::test_ai_settings_sim_live PASSED [ 31%] -tests/test_extended_sims.py::test_tools_sim_live \ No newline at end of file diff --git a/test_output.txt b/test_output.txt deleted file mode 100644 index 89556ce..0000000 --- a/test_output.txt +++ /dev/null @@ -1,15 +0,0 @@ -============================= test session starts ============================= -platform win32 -- Python 3.11.6, pytest-9.0.2, pluggy-1.6.0 -- C:\projects\manual_slop\.venv\Scripts\python.exe -cachedir: .pytest_cache -rootdir: C:\projects\manual_slop -configfile: pyproject.toml -plugins: anyio-4.12.1, asyncio-1.3.0, cov-7.0.0, timeout-2.4.0 -asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function -timeout: 60.0s -timeout method: thread -timeout func_only: False -collecting ... collected 1 item - -tests/test_gui_stress_performance.py::test_comms_volume_stress_performance PASSED [100%] - -============================= 1 passed in 12.78s ============================== diff --git a/test_output2.txt b/test_output2.txt deleted file mode 100644 index 77e36b8..0000000 --- a/test_output2.txt +++ /dev/null @@ -1,16 +0,0 @@ -============================= test session starts ============================= -platform win32 -- Python 3.11.6, pytest-9.0.2, pluggy-1.6.0 -- C:\projects\manual_slop\.venv\Scripts\python.exe -cachedir: .pytest_cache -rootdir: C:\projects\manual_slop -configfile: pyproject.toml -plugins: anyio-4.12.1, asyncio-1.3.0, cov-7.0.0, timeout-2.4.0 -asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function -timeout: 60.0s -timeout method: thread -timeout func_only: False -collecting ... collected 4 items - -tests/test_extended_sims.py::test_context_sim_live PASSED [ 25%] -tests/test_extended_sims.py::test_ai_settings_sim_live PASSED [ 50%] -tests/test_extended_sims.py::test_tools_sim_live PASSED [ 75%] -tests/test_extended_sims.py::test_execution_sim_live \ No newline at end of file diff --git a/test_project.toml b/test_project.toml deleted file mode 100644 index 267f935..0000000 --- a/test_project.toml +++ /dev/null @@ -1,61 +0,0 @@ -[project] -name = "temp_project" -git_dir = "C:\\projects\\manual_slop" -system_prompt = "" -main_context = "" -word_wrap = true -summary_only = false -auto_scroll_comms = true -auto_scroll_tool_calls = true - -[output] -output_dir = "./md_gen" - -[files] -base_dir = "." -paths = [] - -[files.tier_assignments] - -[screenshots] -base_dir = "." -paths = [] - -[gemini_cli] -binary_path = "\"C:\\projects\\manual_slop\\.venv\\Scripts\\python.exe\" \"C:\\projects\\manual_slop\\tests\\mock_gemini_cli.py\"" - -[deepseek] -reasoning_effort = "medium" - -[agent.tools] -run_powershell = true -read_file = true -list_directory = true -search_files = true -get_file_summary = true -web_search = true -fetch_url = true -py_get_skeleton = true -py_get_code_outline = true -get_file_slice = true -py_get_definition = true -py_get_signature = true -py_get_class_summary = true -py_get_var_declaration = true -get_git_diff = true -py_find_usages = true -py_get_imports = true -py_check_syntax = true -py_get_hierarchy = true -py_get_docstring = true -get_tree = true -get_ui_performance = true -set_file_slice = false -py_update_definition = false -py_set_signature = false -py_set_var_declaration = false - -[mma] -epic = "Develop a new feature" -active_track_id = "" -tracks = [] diff --git a/test_project_history.toml b/test_project_history.toml deleted file mode 100644 index a418952..0000000 --- a/test_project_history.toml +++ /dev/null @@ -1,17 +0,0 @@ -roles = [ - "User", - "AI", - "Vendor API", - "System", - "Reasoning", -] -active = "main" -auto_add = true - -[discussions.main] -git_commit = "" -last_updated = "2026-03-04T21:34:40" -history = [ - "@2026-03-04T21:34:16\nUser:\nHello! This is an automated test. Just say 'Acknowledged'.", - "@2026-03-04T21:34:16\nAI:\nAcknowledged.", -]