WIP: I HATE PYTHON

This commit is contained in:
2026-03-05 13:55:40 -05:00
parent 107608cd76
commit 5e69617f88
43 changed files with 1854 additions and 1671 deletions

View File

@@ -13,28 +13,27 @@ import requests # type: ignore[import-untyped]
from pathlib import Path
from tkinter import filedialog, Tk
from typing import Optional, Callable, Any
import aggregate
import ai_client
import cost_tracker
from ai_client import ProviderError
import shell_runner
import session_logger
import project_manager
import theme_2 as theme
from src import aggregate
from src import ai_client
from src import cost_tracker
from src import shell_runner
from src import session_logger
from src import project_manager
from src import theme_2 as theme
import tomllib
import events
from src import events
import numpy as np
import api_hooks
import mcp_client
import orchestrator_pm
from performance_monitor import PerformanceMonitor
from log_registry import LogRegistry
from log_pruner import LogPruner
import conductor_tech_lead
import multi_agent_conductor
from models import Track, Ticket, DISC_ROLES, AGENT_TOOL_NAMES, CONFIG_PATH, load_config, parse_history_entries
from app_controller import AppController, ConfirmDialog, MMAApprovalDialog, MMASpawnApprovalDialog
from file_cache import ASTParser
from src import api_hooks
from src import mcp_client
from src import orchestrator_pm
from src import performance_monitor
from src import log_registry
from src import log_pruner
from src import conductor_tech_lead
from src import multi_agent_conductor
from src import models
from src import app_controller
from src import file_cache
from fastapi import FastAPI, Depends, HTTPException
from fastapi.security.api_key import APIKeyHeader
@@ -45,7 +44,7 @@ PROVIDERS: list[str] = ["gemini", "anthropic", "gemini_cli", "deepseek"]
COMMS_CLAMP_CHARS: int = 300
def save_config(config: dict[str, Any]) -> None:
with open(CONFIG_PATH, "wb") as f:
with open(models.CONFIG_PATH, "wb") as f:
tomli_w.dump(config, f)
def hide_tk_root() -> Tk:
@@ -102,7 +101,7 @@ class App:
def __init__(self) -> None:
# Initialize controller and delegate state
self.controller = AppController()
self.controller = app_controller.AppController()
# Restore legacy PROVIDERS to controller if needed (it already has it via delegation if set on class level, but let's be explicit)
if not hasattr(self.controller, 'PROVIDERS'):
self.controller.PROVIDERS = PROVIDERS
@@ -739,7 +738,7 @@ class App:
ch, self.ui_auto_scroll_comms = imgui.checkbox("Auto-scroll Comms History", self.ui_auto_scroll_comms)
ch, self.ui_auto_scroll_tool_calls = imgui.checkbox("Auto-scroll Tool History", self.ui_auto_scroll_tool_calls)
if imgui.collapsing_header("Agent Tools"):
for t_name in AGENT_TOOL_NAMES:
for t_name in models.AGENT_TOOL_NAMES:
val = self.ui_agent_tools.get(t_name, True)
ch, val = imgui.checkbox(f"Enable {t_name}", val)
if ch:
@@ -800,7 +799,7 @@ class App:
if not exp:
imgui.end()
return
registry = LogRegistry("logs/log_registry.toml")
registry = log_registry.LogRegistry("logs/log_registry.toml")
sessions = registry.data
if imgui.begin_table("sessions_table", 7, imgui.TableFlags_.borders | imgui.TableFlags_.row_bg | imgui.TableFlags_.resizable):
imgui.table_setup_column("Session ID")
@@ -976,7 +975,7 @@ class App:
self._flush_disc_entries_to_project()
history_strings = project_manager.load_track_history(self.active_track.id, self.ui_files_base_dir)
with self._disc_entries_lock:
self.disc_entries = parse_history_entries(history_strings, self.disc_roles)
self.disc_entries = models.parse_history_entries(history_strings, self.disc_roles)
self.ai_status = f"track discussion: {self.active_track.id}"
else:
self._flush_disc_entries_to_project()