Private
Public Access
refactor(consumers): migrate 85 'from src.models import' sites to direct subsystem imports
Per post_module_taxonomy_de_cruft_20260627 Phase 2 (FR7). Each
'from src.models import X' for a moved class is rewritten to
'from src.<destination> import X':
Ticket, Track, WorkerContext, TrackState, TrackMetadata,
ThinkingSegment, EMPTY_TRACK_STATE -> src.mma
ProjectContext, ProjectMeta, ProjectOutput, ProjectFiles,
ProjectScreenshots, ProjectDiscussion, EMPTY_PROJECT_CONTEXT -> src.project
FileItem, Preset, ContextPreset, ContextFileEntry,
NamedViewPreset -> src.project_files
Tool, ToolPreset -> src.tool_presets
BiasProfile -> src.tool_bias
TextEditorConfig, ExternalEditorConfig,
EMPTY_TEXT_EDITOR_CONFIG -> src.external_editor
Persona -> src.personas
WorkspaceProfile -> src.workspace_manager
MCPServerConfig, MCPConfiguration, VectorStoreConfig,
RAGConfig, load_mcp_config -> src.mcp_client
NOT touched (kept on src.models; Phase 3 or Phase 4 will move them):
GenerateRequest, ConfirmRequest, DEFAULT_TOOL_CATEGORIES, Metadata, PROVIDERS
Migration was performed by the one-time script
scripts/tier2/artifacts/post_module_taxonomy_de_cruft_20260627/migrate_imports.py
which uses a class-to-module map and re.sub() to rewrite each
'from src.models import X' line.
Total: 85 import lines rewritten across 71 files.
Note: this commit depends on the v2 SHIPPED work
(origin/tier2/module_taxonomy_refactor_20260627) being merged into
this branch NEXT. On master (without the v2 SHIPPED commits), the
destination modules do not exist and these imports would fail.
This commit is contained in:
@@ -7,7 +7,7 @@ class TestArchBoundaryPhase3(unittest.TestCase):
|
||||
pass
|
||||
def test_cascade_blocks_simple(self) -> None:
|
||||
"""Test that a blocked dependency blocks its immediate dependent."""
|
||||
from src.models import Ticket, Track
|
||||
from src.mma import Ticket, Track
|
||||
t1 = Ticket(id="T1", description="d1", status="blocked", assigned_to="worker1")
|
||||
t2 = Ticket(id="T2", description="d2", status="todo", assigned_to="worker1", depends_on=["T1"])
|
||||
track = Track(id="TR1", description="track", tickets=[t1, t2])
|
||||
@@ -20,7 +20,7 @@ class TestArchBoundaryPhase3(unittest.TestCase):
|
||||
self.assertIn("T1", t2.blocked_reason)
|
||||
def test_cascade_blocks_multi_hop(self) -> None:
|
||||
"""Test that blocking cascades through multiple dependencies."""
|
||||
from src.models import Ticket
|
||||
from src.mma import Ticket
|
||||
from src.dag_engine import TrackDAG, ExecutionEngine
|
||||
t1 = Ticket(id="T1", description="d1", status="blocked", assigned_to="worker1")
|
||||
t2 = Ticket(id="T2", description="d2", status="todo", assigned_to="worker1", depends_on=["T1"])
|
||||
@@ -32,7 +32,7 @@ class TestArchBoundaryPhase3(unittest.TestCase):
|
||||
self.assertEqual(t3.status, "blocked")
|
||||
def test_manual_unblock_restores_todo(self) -> None:
|
||||
"""Test that unblocking a task manually works if dependencies are met."""
|
||||
from src.models import Ticket
|
||||
from src.mma import Ticket
|
||||
from src.dag_engine import TrackDAG, ExecutionEngine
|
||||
t1 = Ticket(id="T1", description="d1", status="completed", assigned_to="worker1")
|
||||
t2 = Ticket(id="T2", description="d2", status="blocked", assigned_to="worker1", blocked_reason="manual")
|
||||
@@ -44,7 +44,7 @@ class TestArchBoundaryPhase3(unittest.TestCase):
|
||||
self.assertIn(t2, ready)
|
||||
def test_in_progress_not_blocked(self) -> None:
|
||||
"""Test that in_progress tasks are not blocked automatically (only todo)."""
|
||||
from src.models import Ticket
|
||||
from src.mma import Ticket
|
||||
from src.dag_engine import TrackDAG, ExecutionEngine
|
||||
t1 = Ticket(id="T1", description="d1", status="blocked", assigned_to="worker1")
|
||||
t2 = Ticket(id="T2", description="d2", status="in_progress", assigned_to="worker1", depends_on=["T1"])
|
||||
@@ -54,7 +54,7 @@ class TestArchBoundaryPhase3(unittest.TestCase):
|
||||
self.assertEqual(t2.status, "in_progress")
|
||||
def test_execution_engine_tick_cascades_blocks(self) -> None:
|
||||
"""Test that ExecutionEngine.tick() triggers the cascading blocks."""
|
||||
from src.models import Ticket
|
||||
from src.mma import Ticket
|
||||
from src.dag_engine import TrackDAG, ExecutionEngine
|
||||
t1 = Ticket(id="T1", description="d1", status="blocked", assigned_to="worker1")
|
||||
t2 = Ticket(id="T2", description="d2", status="todo", assigned_to="worker1", depends_on=["T1"])
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import pytest
|
||||
from src import ai_client
|
||||
from src.models import ToolPreset, Tool, BiasProfile
|
||||
from src.tool_bias import BiasProfile
|
||||
from src.tool_presets import ToolPreset, Tool
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
def test_bias_efficacy_prompt_generation():
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import pytest
|
||||
from src import ai_client
|
||||
from src.models import ToolPreset, Tool, BiasProfile
|
||||
from src.tool_bias import BiasProfile
|
||||
from src.tool_presets import ToolPreset, Tool
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
def test_system_prompt_biasing():
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import pytest
|
||||
from src.models import Tool, ToolPreset, BiasProfile
|
||||
from src.tool_bias import BiasProfile
|
||||
from src.tool_presets import Tool, ToolPreset
|
||||
|
||||
def test_tool_model():
|
||||
tool = Tool(name="read_file", weight=5, parameter_bias={"path": "preferred"})
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import pytest
|
||||
from unittest.mock import MagicMock, patch
|
||||
from src.multi_agent_conductor import ConductorEngine
|
||||
from src.models import Ticket, Track
|
||||
from src.mma import Ticket, Track
|
||||
import threading
|
||||
|
||||
def test_conductor_abort_event_populated():
|
||||
|
||||
@@ -3,7 +3,7 @@ from unittest.mock import MagicMock
|
||||
import threading
|
||||
import time
|
||||
from src.multi_agent_conductor import ConductorEngine
|
||||
from src.models import Track
|
||||
from src.mma import Track
|
||||
|
||||
def test_conductor_engine_initializes_empty_worker_and_abort_dicts() -> None:
|
||||
"""
|
||||
|
||||
@@ -4,7 +4,7 @@ They MUST NOT be simplified, and their assertions on exact call counts and depen
|
||||
"""
|
||||
import pytest
|
||||
from unittest.mock import MagicMock, patch
|
||||
from src.models import Ticket, Track, WorkerContext
|
||||
from src.mma import Ticket, Track, WorkerContext
|
||||
from src import ai_client
|
||||
from src.result_types import Result
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import unittest
|
||||
from unittest.mock import patch
|
||||
from src import conductor_tech_lead
|
||||
from src.models import Ticket
|
||||
from src.mma import Ticket
|
||||
from src.result_types import Result
|
||||
import pytest
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import pytest
|
||||
from pathlib import Path
|
||||
from src.app_controller import AppController
|
||||
from src.models import FileItem
|
||||
from src.project_files import FileItem
|
||||
|
||||
def test_context_files_is_decoupled():
|
||||
controller = AppController()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import pytest
|
||||
from src.aggregate import group_files_by_dir, compute_file_stats
|
||||
from src.models import FileItem
|
||||
from src.project_files import FileItem
|
||||
|
||||
def test_group_files_by_dir():
|
||||
files = [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import pytest
|
||||
from src.gui_2 import App
|
||||
from src.models import FileItem
|
||||
from src.project_files import FileItem
|
||||
|
||||
def test_view_mode_initialization():
|
||||
app = App()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import pytest
|
||||
from src.context_presets import ContextPresetManager
|
||||
from src.models import ContextPreset, ContextFileEntry
|
||||
from src.project_files import ContextPreset, ContextFileEntry
|
||||
|
||||
def test_save_context_preset():
|
||||
manager = ContextPresetManager()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import pytest
|
||||
from src.context_presets import ContextPresetManager
|
||||
from src.models import ContextPreset, ContextFileEntry
|
||||
from src.project_files import ContextPreset, ContextFileEntry
|
||||
from src.app_controller import AppController
|
||||
from pathlib import Path
|
||||
import tomli_w
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import pytest
|
||||
from src.models import ContextPreset, ContextFileEntry
|
||||
from src.project_files import ContextPreset, ContextFileEntry
|
||||
|
||||
def test_context_file_entry_serialization():
|
||||
p = ContextFileEntry(path="test.py", view_mode="skeleton")
|
||||
|
||||
@@ -2,7 +2,7 @@ import pytest
|
||||
from unittest.mock import Mock
|
||||
from pathlib import Path
|
||||
from src.gui_2 import App
|
||||
from src.models import FileItem
|
||||
from src.project_files import FileItem
|
||||
|
||||
def test_preview_button_syncs_context_files_to_controller():
|
||||
app = Mock(spec=App)
|
||||
@@ -51,7 +51,7 @@ def test_preview_generates_nonempty_for_real_files(monkeypatch):
|
||||
"""Integration test: Preview button should generate content when context_files has real FileItems."""
|
||||
import src.project_manager as pm
|
||||
import src.aggregate as agg
|
||||
from src.models import FileItem
|
||||
from src.project_files import FileItem
|
||||
|
||||
app = Mock(spec=App)
|
||||
test_file = FileItem(path='tests/test_context_composition_decoupled.py', view_mode='summary')
|
||||
|
||||
@@ -2,7 +2,7 @@ import pytest
|
||||
import time
|
||||
from pathlib import Path
|
||||
from src.file_cache import ASTParser
|
||||
from src.models import Ticket, Track, WorkerContext
|
||||
from src.mma import Ticket, Track, WorkerContext
|
||||
from src.multi_agent_conductor import run_worker_lifecycle
|
||||
from src.result_types import Result
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import pytest
|
||||
from src.models import FileItem
|
||||
from src.project_files import FileItem
|
||||
|
||||
def test_file_item_custom_slices_serialization_with_annotations():
|
||||
# Test that FileItem correctly serializes custom_slices with tag and comment.
|
||||
|
||||
@@ -4,7 +4,7 @@ They MUST NOT be simplified. They ensure that dependency resolution, cycle detec
|
||||
and topological sorting work perfectly to prevent catastrophic orchestrator deadlocks.
|
||||
"""
|
||||
import pytest
|
||||
from src.models import Ticket
|
||||
from src.mma import Ticket
|
||||
from src.dag_engine import TrackDAG
|
||||
|
||||
def test_get_ready_tasks_linear():
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from src.models import Ticket
|
||||
from src.mma import Ticket
|
||||
from src.dag_engine import TrackDAG, ExecutionEngine
|
||||
|
||||
def test_execution_engine_basic_flow():
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
"""Tests for external editor integration."""
|
||||
import pytest
|
||||
from unittest.mock import patch, MagicMock
|
||||
from src.models import TextEditorConfig, ExternalEditorConfig
|
||||
from src.external_editor import TextEditorConfig, ExternalEditorConfig
|
||||
from src.external_editor import (
|
||||
ExternalEditorLauncher,
|
||||
get_default_launcher,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import pytest
|
||||
from src.models import FileItem
|
||||
from src.project_files import FileItem
|
||||
|
||||
def test_file_item_fields():
|
||||
"""Test that FileItem exists and has correct default values."""
|
||||
|
||||
@@ -2315,7 +2315,7 @@ def test_phase_10_l7271_dag_cycle_check_result_no_cycle():
|
||||
opening the "Cycle Detected!" popup.
|
||||
"""
|
||||
from unittest.mock import MagicMock, patch
|
||||
from src.models import Ticket
|
||||
from src.mma import Ticket
|
||||
import src.gui_2 as gui2_mod
|
||||
app = MagicMock()
|
||||
app.active_tickets = [Ticket(id="T-001", description="T-001", depends_on=[])]
|
||||
@@ -2335,7 +2335,7 @@ def test_phase_10_l7271_dag_cycle_check_result_cycle_detected():
|
||||
returns Result(data=True). The caller opens the "Cycle Detected!" popup.
|
||||
"""
|
||||
from unittest.mock import MagicMock, patch
|
||||
from src.models import Ticket
|
||||
from src.mma import Ticket
|
||||
import src.gui_2 as gui2_mod
|
||||
app = MagicMock()
|
||||
app.active_tickets = [
|
||||
|
||||
@@ -2,7 +2,7 @@ import pytest
|
||||
from unittest.mock import MagicMock, patch
|
||||
from src import gui_2
|
||||
from src.gui_2 import App
|
||||
from src.models import Track
|
||||
from src.mma import Track
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def setup_mock_app(mock_app: App):
|
||||
|
||||
@@ -2,7 +2,7 @@ import pytest
|
||||
from unittest.mock import MagicMock, patch
|
||||
from src import gui_2
|
||||
from src.gui_2 import App, C_LBL, C_VAL
|
||||
from src.models import Ticket
|
||||
from src.mma import Ticket
|
||||
|
||||
def test_render_mma_dashboard_progress():
|
||||
# Create a mock for the imgui module used in gui_2
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
from typing import Any
|
||||
import pytest
|
||||
from unittest.mock import MagicMock, patch
|
||||
from src.models import Ticket, Track
|
||||
from src.mma import Ticket, Track
|
||||
from src import multi_agent_conductor
|
||||
from src.multi_agent_conductor import ConductorEngine
|
||||
from src import ai_client
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import pytest
|
||||
from src.models import Ticket
|
||||
from src.mma import Ticket
|
||||
|
||||
def test_ticket_has_manual_block_field():
|
||||
t = Ticket(id="T-001", description="Test")
|
||||
|
||||
@@ -10,7 +10,7 @@ Verifies:
|
||||
import inspect
|
||||
from unittest.mock import patch
|
||||
|
||||
from src.models import Ticket
|
||||
from src.mma import Ticket
|
||||
|
||||
|
||||
class TestActiveTicketsType:
|
||||
@@ -58,7 +58,7 @@ class TestActiveTicketsLoadBoundaries:
|
||||
def test_load_active_tickets_beads_branch_converts_dicts_to_tickets(self) -> None:
|
||||
"""_load_active_tickets (beads branch) must wrap bead dicts as models.Ticket."""
|
||||
from src.app_controller import AppController
|
||||
from src.models import Ticket
|
||||
from src.mma import Ticket
|
||||
ctrl = AppController.__new__(AppController)
|
||||
ctrl._last_request_errors = []
|
||||
ctrl.ui_project_execution_mode = "beads"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from src.models import Ticket, Track, WorkerContext
|
||||
from src.mma import Ticket, Track, WorkerContext
|
||||
from src.dag_engine import get_executable_tickets
|
||||
|
||||
def test_ticket_instantiation() -> None:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
from src.gui_2 import App
|
||||
from src.models import Ticket
|
||||
from src.mma import Ticket
|
||||
|
||||
def test_cb_ticket_retry(app_instance: App) -> None:
|
||||
ticket_id = "test_ticket_1"
|
||||
|
||||
@@ -3,7 +3,7 @@ from unittest.mock import patch, MagicMock
|
||||
from src import orchestrator_pm
|
||||
from src import multi_agent_conductor
|
||||
from src import conductor_tech_lead
|
||||
from src.models import Ticket, Track, WorkerContext
|
||||
from src.mma import Ticket, Track, WorkerContext
|
||||
from src.result_types import Result
|
||||
|
||||
def test_generate_tracks() -> None:
|
||||
|
||||
@@ -67,7 +67,7 @@ def test_worker_pool_completion_cleanup():
|
||||
assert "t1" not in pool._active
|
||||
|
||||
from unittest.mock import patch
|
||||
from src.models import Track, Ticket
|
||||
from src.mma import Track, Ticket
|
||||
from src.multi_agent_conductor import ConductorEngine
|
||||
|
||||
@patch('src.multi_agent_conductor.run_worker_lifecycle')
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import pytest
|
||||
from src.models import Ticket
|
||||
from src.mma import Ticket
|
||||
|
||||
def test_ticket_has_model_override_field():
|
||||
t = Ticket(id="T-001", description="Test")
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import pytest
|
||||
from src.models import Ticket
|
||||
from src.mma import Ticket
|
||||
from src.dag_engine import TrackDAG
|
||||
from src.performance_monitor import get_monitor
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import pytest
|
||||
from src.models import Ticket, WorkerContext
|
||||
from src.mma import Ticket, WorkerContext
|
||||
|
||||
|
||||
def test_ticket_persona_id_serialization():
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import pytest
|
||||
import tomli_w
|
||||
from pathlib import Path
|
||||
from src.models import Persona
|
||||
from src.personas import Persona
|
||||
from src.personas import PersonaManager
|
||||
from src import paths
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import pytest
|
||||
from src.models import Persona
|
||||
from src.personas import Persona
|
||||
|
||||
def test_persona_serialization():
|
||||
persona = Persona(
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from unittest.mock import MagicMock, patch
|
||||
from src.multi_agent_conductor import ConductorEngine, run_worker_lifecycle
|
||||
from src.models import Ticket, Track, WorkerContext
|
||||
from src.mma import Ticket, Track, WorkerContext
|
||||
from src import ai_client
|
||||
from src.result_types import Result
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import pytest
|
||||
from unittest.mock import MagicMock, patch
|
||||
from src.models import Ticket, Track
|
||||
from src.mma import Ticket, Track
|
||||
from src.multi_agent_conductor import ConductorEngine
|
||||
|
||||
def test_conductor_engine_has_pause_event():
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import pytest
|
||||
from pathlib import Path
|
||||
from src.presets import PresetManager
|
||||
from src.models import Preset
|
||||
from src.project_files import Preset
|
||||
|
||||
def test_load_all_merged(tmp_path, monkeypatch):
|
||||
"""Tests that load_all correctly merges global and project presets."""
|
||||
|
||||
@@ -4,7 +4,7 @@ from pathlib import Path
|
||||
import tempfile
|
||||
import shutil
|
||||
from src.presets import PresetManager
|
||||
from src.models import Preset
|
||||
from src.project_files import Preset
|
||||
|
||||
class TestPresetManager(unittest.TestCase):
|
||||
def setUp(self):
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import pytest
|
||||
from src.project_manager import calculate_track_progress
|
||||
from src.models import Ticket
|
||||
from src.mma import Ticket
|
||||
|
||||
def test_calculate_track_progress_empty():
|
||||
results = calculate_track_progress([])
|
||||
|
||||
@@ -2,7 +2,8 @@ import pytest
|
||||
from typing import Any
|
||||
import json
|
||||
from src.project_manager import get_all_tracks, save_track_state
|
||||
from src.models import TrackState, Metadata, Ticket
|
||||
from src.mma import TrackState, Ticket
|
||||
from src.models import Metadata
|
||||
from datetime import datetime
|
||||
|
||||
def test_get_all_tracks_empty(tmp_path: Any) -> None:
|
||||
|
||||
@@ -5,7 +5,7 @@ import tempfile
|
||||
import pytest
|
||||
|
||||
from src.rag_engine import RAGEngine
|
||||
from src.models import RAGConfig, VectorStoreConfig
|
||||
from src.mcp_client import RAGConfig, VectorStoreConfig
|
||||
|
||||
|
||||
LOCAL_EMBED_DIM = 384
|
||||
|
||||
@@ -4,7 +4,7 @@ import threading
|
||||
import json
|
||||
import time
|
||||
from src.multi_agent_conductor import run_worker_lifecycle
|
||||
from src.models import Ticket, WorkerContext
|
||||
from src.mma import Ticket, WorkerContext
|
||||
|
||||
class TestRunWorkerLifecycleAbort(unittest.TestCase):
|
||||
def test_run_worker_lifecycle_returns_early_on_abort(self):
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import pytest
|
||||
from src.models import FileItem
|
||||
from src.project_files import FileItem
|
||||
from src.fuzzy_anchor import FuzzyAnchor
|
||||
|
||||
def test_add_slice_with_annotations():
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import pytest
|
||||
from unittest.mock import MagicMock, patch
|
||||
from src import multi_agent_conductor
|
||||
from src.models import Ticket, WorkerContext
|
||||
from src.mma import Ticket, WorkerContext
|
||||
from src import events
|
||||
from src.result_types import Result
|
||||
import threading
|
||||
|
||||
@@ -32,7 +32,7 @@ def test_discussion_entry_without_thinking():
|
||||
|
||||
|
||||
def test_thinking_segment_model_compatibility():
|
||||
from src.models import ThinkingSegment
|
||||
from src.mma import ThinkingSegment
|
||||
|
||||
segment = ThinkingSegment(content="test", marker="thinking")
|
||||
assert segment.content == "test"
|
||||
|
||||
@@ -3,7 +3,7 @@ import tempfile
|
||||
import os
|
||||
from pathlib import Path
|
||||
from src import project_manager
|
||||
from src.models import ThinkingSegment
|
||||
from src.mma import ThinkingSegment
|
||||
|
||||
|
||||
def test_save_and_load_history_with_thinking_segments():
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import pytest
|
||||
from unittest.mock import patch
|
||||
from src.models import Ticket
|
||||
from src.mma import Ticket
|
||||
|
||||
def test_ticket_priority_default():
|
||||
ticket = Ticket(id="T1", description="Test ticket")
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import pytest
|
||||
from src.models import Persona, Ticket, WorkerContext
|
||||
from src.mma import Ticket, WorkerContext
|
||||
from src.personas import Persona
|
||||
from src import multi_agent_conductor
|
||||
from src import app_controller
|
||||
from src import aggregate
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import pytest
|
||||
from src.tool_bias import ToolBiasEngine
|
||||
from src.models import ToolPreset, Tool, BiasProfile
|
||||
from src.tool_bias import BiasProfile
|
||||
from src.tool_presets import ToolPreset, Tool
|
||||
|
||||
def test_apply_semantic_nudges():
|
||||
engine = ToolBiasEngine()
|
||||
|
||||
@@ -2,7 +2,8 @@ import pytest
|
||||
import tomli_w
|
||||
from pathlib import Path
|
||||
from src.tool_presets import ToolPresetManager
|
||||
from src.models import ToolPreset, BiasProfile, Tool
|
||||
from src.tool_bias import BiasProfile
|
||||
from src.tool_presets import ToolPreset, Tool
|
||||
from src import paths
|
||||
|
||||
@pytest.fixture
|
||||
|
||||
@@ -3,7 +3,7 @@ import asyncio
|
||||
from src import ai_client
|
||||
from src import mcp_client
|
||||
from src import models
|
||||
from src.models import ToolPreset, Tool
|
||||
from src.tool_presets import ToolPreset, Tool
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
@pytest.mark.asyncio
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
from datetime import datetime
|
||||
|
||||
# Import the real models
|
||||
from src.models import TrackState, Metadata, Ticket
|
||||
from src.mma import TrackState, Ticket
|
||||
from src.models import Metadata
|
||||
# Import the persistence functions from project_manager
|
||||
from src.project_manager import save_track_state, load_track_state
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
from datetime import datetime, timezone, timedelta
|
||||
|
||||
# Import necessary classes from models.py
|
||||
from src.models import Metadata, TrackState, Ticket
|
||||
from src.mma import TrackState, Ticket
|
||||
from src.models import Metadata
|
||||
|
||||
# --- Pytest Tests ---
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import pytest
|
||||
from pathlib import Path
|
||||
from src.workspace_manager import WorkspaceManager
|
||||
from src.models import WorkspaceProfile
|
||||
from src.workspace_manager import WorkspaceProfile
|
||||
from src import paths
|
||||
|
||||
def test_load_all_profiles_merged(tmp_path, monkeypatch):
|
||||
|
||||
@@ -2,7 +2,7 @@ import io
|
||||
import tomllib
|
||||
import pytest
|
||||
import tomli_w
|
||||
from src.models import WorkspaceProfile
|
||||
from src.workspace_manager import WorkspaceProfile
|
||||
|
||||
|
||||
def test_workspace_profile_empty_ini_content_roundtrips():
|
||||
|
||||
Reference in New Issue
Block a user