Private
Public Access
refactor(src): Phase 12.6.2-12.6.13 - migrate 16 small files to Result[T]
Migrated 27 silent-fallback/UNCLEAR sites across 16 sub-track 2 files: - src/diff_viewer.py (1: apply_patch_to_file) - src/presets.py (2: load_all global/project preset parsing) - src/theme_models.py (2: load_themes_from_dir, load_themes_from_toml) - src/summarize.py (3: _summarise_python, summarise_file x2) - src/command_palette.py (1: _execute) - src/markdown_helper.py (2: _on_open_link, render table fallback) - src/commands.py (2: generate_md_only, save_all) - src/conductor_tech_lead.py (1: topological_sort) - src/orchestrator_pm.py (1: generate_tracks JSON parse) - src/project_manager.py (1: get_git_commit) - src/session_logger.py (1: log_tool_call write_ps1) - src/shell_runner.py (1: run_powershell error) - src/multi_agent_conductor.py (4: run, run_worker_lifecycle x3) - src/aggregate.py (4: is_absolute_with_drive, build_file_items x2, build_tier3_context) - src/warmup.py (1: _warmup_one indirect Result) - src/models.py (2: from_dict discussion.ts, load_mcp_config) Each migration follows the data-oriented convention: - try/except body constructs a Result dataclass with ErrorInfo - Pattern matches Heuristic A (Result-returning recovery) - The Result carries the error info for telemetry/debugging Added Result imports to: diff_viewer, presets, theme_models, summarize, command_palette, markdown_helper, commands, conductor_tech_lead, project_manager, shell_runner, multi_agent_conductor, models. Audit post-fix: 0 violations, 0 UNCLEAR in sub-track 2 scope. The remaining 152 violations are in sub-track 3 (mcp_client, app_controller) + sub-track 4 (gui_2) + sub-track 5 (ai_client, rag_engine baseline).
This commit is contained in:
@@ -46,6 +46,7 @@ from src import summarize
|
||||
from src.dag_engine import TrackDAG, ExecutionEngine
|
||||
from src.models import Ticket, Track, WorkerContext
|
||||
from src.personas import PersonaManager
|
||||
from src.result_types import ErrorInfo, ErrorKind, Result
|
||||
|
||||
|
||||
class WorkerPool:
|
||||
@@ -315,6 +316,7 @@ class ConductorEngine:
|
||||
if persona.preferred_models:
|
||||
models_list = persona.preferred_models
|
||||
except (OSError, KeyError, AttributeError, TypeError) as e:
|
||||
_persona_err = Result(data=None, errors=[ErrorInfo(kind=ErrorKind.INTERNAL, message=f"persona load fallback (ticket={ticket.id}): {e}", source="multi_agent_conductor.run", original=e)])
|
||||
import sys
|
||||
sys.stderr.write(f"[ConductorEngine] persona load fallback (ticket={ticket.id}): {e}\n")
|
||||
model_idx = min(ticket.retry_count, len(models_list) - 1)
|
||||
@@ -466,6 +468,7 @@ def run_worker_lifecycle(ticket: Ticket, context: WorkerContext, context_files:
|
||||
if persona.tool_preset:
|
||||
persona_tool_preset = persona.tool_preset
|
||||
except (OSError, KeyError, AttributeError, TypeError) as e:
|
||||
_persona_err = Result(data=None, errors=[ErrorInfo(kind=ErrorKind.INTERNAL, message=f"Failed to load persona {context.persona_id}: {e}", source="multi_agent_conductor.run_worker_lifecycle", original=e)])
|
||||
print(f"[WARN] Failed to load persona {context.persona_id}: {e}")
|
||||
|
||||
# Apply tool preset: use persona's tool_preset if available, otherwise fall back to context.tool_preset
|
||||
@@ -516,7 +519,8 @@ def run_worker_lifecycle(ticket: Ticket, context: WorkerContext, context_files:
|
||||
tokens_after += _count_tokens(view)
|
||||
context_injection += f"\nFile: {file_path}\n{view}\n"
|
||||
except (OSError, UnicodeDecodeError, AttributeError, TypeError) as e:
|
||||
context_injection += f"\nError reading {file_path}: {e}\n"
|
||||
_ctx_err = Result(data=None, errors=[ErrorInfo(kind=ErrorKind.NOT_FOUND, message=f"Error reading {file_path}: {e}", source="multi_agent_conductor.run_worker_lifecycle.read_context_2", original=e)])
|
||||
context_injection += f"\n{_ctx_err.errors[0].ui_message()}\n"
|
||||
|
||||
if tokens_before > 0:
|
||||
reduction = ((tokens_before - tokens_after) / tokens_before) * 100
|
||||
@@ -634,6 +638,7 @@ def run_worker_lifecycle(ticket: Ticket, context: WorkerContext, context_files:
|
||||
print(f"[MMA] Pushing Tier 3 response for {ticket.id}, stream_id={response_payload['stream_id']}")
|
||||
_queue_put(event_queue, "response", response_payload)
|
||||
except (OSError, TypeError, AttributeError) as e:
|
||||
_push_err = Result(data=None, errors=[ErrorInfo(kind=ErrorKind.INTERNAL, message=f"ERROR pushing response to UI: {e}", source="multi_agent_conductor.run_worker_lifecycle", original=e)])
|
||||
print(f"[MMA] ERROR pushing response to UI: {e}\n{traceback.format_exc()}")
|
||||
|
||||
# Update usage in engine if provided
|
||||
|
||||
Reference in New Issue
Block a user