362 lines
12 KiB
Python
362 lines
12 KiB
Python
import os
|
|
from pathlib import Path
|
|
import re
|
|
|
|
# Symbols to check (extracted from previous step)
|
|
# This is a representative sample, we will process all 327.
|
|
# For the actual implementation, I'll read the output of the previous command.
|
|
raw_symbols = r"""
|
|
find_next_increment|src\aggregate.py
|
|
is_absolute_with_drive|src\aggregate.py
|
|
resolve_paths|src\aggregate.py
|
|
build_discussion_section|src\aggregate.py
|
|
build_files_section|src\aggregate.py
|
|
build_screenshots_section|src\aggregate.py
|
|
build_file_items|src\aggregate.py
|
|
build_summary_section|src\aggregate.py
|
|
build_beads_section|src\aggregate.py
|
|
build_markdown_from_items|src\aggregate.py
|
|
build_markdown_no_history|src\aggregate.py
|
|
build_discussion_text|src\aggregate.py
|
|
build_tier1_context|src\aggregate.py
|
|
build_tier2_context|src\aggregate.py
|
|
build_tier3_context|src\aggregate.py
|
|
build_markdown|src\aggregate.py
|
|
run|src\aggregate.py
|
|
main|src\aggregate.py
|
|
set_model_params|src\ai_client.py
|
|
get_history_trunc_limit|src\ai_client.py
|
|
set_history_trunc_limit|src\ai_client.py
|
|
get_current_tier|src\ai_client.py
|
|
set_current_tier|src\ai_client.py
|
|
get_comms_log_callback|src\ai_client.py
|
|
set_comms_log_callback|src\ai_client.py
|
|
set_custom_system_prompt|src\ai_client.py
|
|
set_base_system_prompt|src\ai_client.py
|
|
set_use_default_base_prompt|src\ai_client.py
|
|
set_project_context_marker|src\ai_client.py
|
|
get_combined_system_prompt|src\ai_client.py
|
|
get_comms_log|src\ai_client.py
|
|
clear_comms_log|src\ai_client.py
|
|
get_credentials_path|src\ai_client.py
|
|
ProviderError|src\ai_client.py
|
|
set_provider|src\ai_client.py
|
|
get_provider|src\ai_client.py
|
|
cleanup|src\ai_client.py
|
|
reset_session|src\ai_client.py
|
|
get_gemini_cache_stats|src\ai_client.py
|
|
list_models|src\ai_client.py
|
|
set_agent_tools|src\ai_client.py
|
|
set_tool_preset|src\ai_client.py
|
|
set_bias_profile|src\ai_client.py
|
|
get_bias_profile|src\ai_client.py
|
|
run_tier4_analysis|src\ai_client.py
|
|
run_tier4_patch_callback|src\ai_client.py
|
|
run_tier4_patch_generation|src\ai_client.py
|
|
get_token_stats|src\ai_client.py
|
|
send|src\ai_client.py
|
|
get_history_bleed_stats|src\ai_client.py
|
|
run_subagent_summarization|src\ai_client.py
|
|
HookServerInstance|src\api_hooks.py
|
|
HookHandler|src\api_hooks.py
|
|
HookServer|src\api_hooks.py
|
|
WebSocketServer|src\api_hooks.py
|
|
ApiHookClient|src\api_hook_client.py
|
|
hide_tk_root|src\app_controller.py
|
|
parse_symbols|src\app_controller.py
|
|
get_symbol_definition|src\app_controller.py
|
|
GenerateRequest|src\app_controller.py
|
|
ConfirmRequest|src\app_controller.py
|
|
ConfirmDialog|src\app_controller.py
|
|
MMAApprovalDialog|src\app_controller.py
|
|
MMASpawnApprovalDialog|src\app_controller.py
|
|
AppController|src\app_controller.py
|
|
Bead|src\beads_client.py
|
|
BeadsClient|src\beads_client.py
|
|
BackgroundShader|src\bg_shader.py
|
|
get_bg|src\bg_shader.py
|
|
generate_tickets|src\conductor_tech_lead.py
|
|
topological_sort|src\conductor_tech_lead.py
|
|
estimate_cost|src\cost_tracker.py
|
|
TrackDAG|src\dag_engine.py
|
|
ExecutionEngine|src\dag_engine.py
|
|
DiffHunk|src\diff_viewer.py
|
|
DiffFile|src\diff_viewer.py
|
|
parse_diff_header|src\diff_viewer.py
|
|
parse_hunk_header|src\diff_viewer.py
|
|
parse_diff|src\diff_viewer.py
|
|
format_diff_for_display|src\diff_viewer.py
|
|
get_line_color|src\diff_viewer.py
|
|
render_diff_text_immediate|src\diff_viewer.py
|
|
create_backup|src\diff_viewer.py
|
|
apply_patch_to_file|src\diff_viewer.py
|
|
restore_from_backup|src\diff_viewer.py
|
|
cleanup_backup|src\diff_viewer.py
|
|
EventEmitter|src\events.py
|
|
AsyncEventQueue|src\events.py
|
|
UserRequestEvent|src\events.py
|
|
ExternalEditorLauncher|src\external_editor.py
|
|
auto_detect_vscode|src\external_editor.py
|
|
get_default_launcher|src\external_editor.py
|
|
resolve_project_editor_override|src\external_editor.py
|
|
create_temp_modified_file|src\external_editor.py
|
|
ASTParser|src\file_cache.py
|
|
reset_client|src\file_cache.py
|
|
content_block_type|src\file_cache.py
|
|
get_file_id|src\file_cache.py
|
|
evict|src\file_cache.py
|
|
list_cached|src\file_cache.py
|
|
GeminiCliAdapter|src\gemini_cli_adapter.py
|
|
hide_tk_root|src\gui_2.py
|
|
vec4|src\gui_2.py
|
|
truncate_entries|src\gui_2.py
|
|
GenerateRequest|src\gui_2.py
|
|
ConfirmRequest|src\gui_2.py
|
|
App|src\gui_2.py
|
|
main|src\gui_2.py
|
|
UISnapshot|src\history.py
|
|
HistoryEntry|src\history.py
|
|
HistoryManager|src\history.py
|
|
LogPruner|src\log_pruner.py
|
|
LogRegistry|src\log_registry.py
|
|
MarkdownRenderer|src\markdown_helper.py
|
|
get_renderer|src\markdown_helper.py
|
|
render|src\markdown_helper.py
|
|
render_unindented|src\markdown_helper.py
|
|
render_code|src\markdown_helper.py
|
|
configure|src\mcp_client.py
|
|
read_file|src\mcp_client.py
|
|
list_directory|src\mcp_client.py
|
|
search_files|src\mcp_client.py
|
|
get_file_summary|src\mcp_client.py
|
|
py_get_skeleton|src\mcp_client.py
|
|
ts_c_get_skeleton|src\mcp_client.py
|
|
ts_cpp_get_skeleton|src\mcp_client.py
|
|
py_get_code_outline|src\mcp_client.py
|
|
ts_c_get_code_outline|src\mcp_client.py
|
|
ts_cpp_get_code_outline|src\mcp_client.py
|
|
ts_c_get_definition|src\mcp_client.py
|
|
ts_cpp_get_definition|src\mcp_client.py
|
|
ts_c_get_signature|src\mcp_client.py
|
|
ts_cpp_get_signature|src\mcp_client.py
|
|
ts_c_update_definition|src\mcp_client.py
|
|
ts_cpp_update_definition|src\mcp_client.py
|
|
get_file_slice|src\mcp_client.py
|
|
set_file_slice|src\mcp_client.py
|
|
edit_file|src\mcp_client.py
|
|
py_get_symbol_info|src\mcp_client.py
|
|
py_get_definition|src\mcp_client.py
|
|
py_update_definition|src\mcp_client.py
|
|
py_get_signature|src\mcp_client.py
|
|
py_set_signature|src\mcp_client.py
|
|
py_get_class_summary|src\mcp_client.py
|
|
py_get_var_declaration|src\mcp_client.py
|
|
py_set_var_declaration|src\mcp_client.py
|
|
get_git_diff|src\mcp_client.py
|
|
py_find_usages|src\mcp_client.py
|
|
py_get_imports|src\mcp_client.py
|
|
py_check_syntax|src\mcp_client.py
|
|
py_get_hierarchy|src\mcp_client.py
|
|
py_get_docstring|src\mcp_client.py
|
|
get_tree|src\mcp_client.py
|
|
derive_code_path|src\mcp_client.py
|
|
web_search|src\mcp_client.py
|
|
fetch_url|src\mcp_client.py
|
|
get_ui_performance|src\mcp_client.py
|
|
StdioMCPServer|src\mcp_client.py
|
|
ExternalMCPManager|src\mcp_client.py
|
|
get_external_mcp_manager|src\mcp_client.py
|
|
dispatch|src\mcp_client.py
|
|
async_dispatch|src\mcp_client.py
|
|
get_tool_schemas|src\mcp_client.py
|
|
load_config|src\models.py
|
|
save_config|src\models.py
|
|
parse_history_entries|src\models.py
|
|
ThinkingSegment|src\models.py
|
|
Ticket|src\models.py
|
|
Track|src\models.py
|
|
WorkerContext|src\models.py
|
|
Metadata|src\models.py
|
|
TextEditorConfig|src\models.py
|
|
ExternalEditorConfig|src\models.py
|
|
TrackState|src\models.py
|
|
FileItem|src\models.py
|
|
Preset|src\models.py
|
|
Tool|src\models.py
|
|
ToolPreset|src\models.py
|
|
BiasProfile|src\models.py
|
|
Persona|src\models.py
|
|
MCPServerConfig|src\models.py
|
|
MCPConfiguration|src\models.py
|
|
VectorStoreConfig|src\models.py
|
|
RAGConfig|src\models.py
|
|
WorkspaceProfile|src\models.py
|
|
load_mcp_config|src\models.py
|
|
WorkerPool|src\multi_agent_conductor.py
|
|
ConductorEngine|src\multi_agent_conductor.py
|
|
confirm_execution|src\multi_agent_conductor.py
|
|
confirm_spawn|src\multi_agent_conductor.py
|
|
run_worker_lifecycle|src\multi_agent_conductor.py
|
|
read_plan|src\native_orchestrator.py
|
|
write_plan|src\native_orchestrator.py
|
|
parse_plan_tasks|src\native_orchestrator.py
|
|
read_metadata|src\native_orchestrator.py
|
|
write_metadata|src\native_orchestrator.py
|
|
get_track_dir|src\native_orchestrator.py
|
|
get_archive_dir|src\native_orchestrator.py
|
|
NativeOrchestrator|src\native_orchestrator.py
|
|
get_track_history_summary|src\orchestrator_pm.py
|
|
generate_tracks|src\orchestrator_pm.py
|
|
CodeOutliner|src\outline_tool.py
|
|
get_outline|src\outline_tool.py
|
|
PendingPatch|src\patch_modal.py
|
|
PatchModalManager|src\patch_modal.py
|
|
get_patch_modal_manager|src\patch_modal.py
|
|
reset_patch_modal_manager|src\patch_modal.py
|
|
get_config_path|src\paths.py
|
|
get_global_presets_path|src\paths.py
|
|
get_project_presets_path|src\paths.py
|
|
get_global_tool_presets_path|src\paths.py
|
|
get_project_tool_presets_path|src\paths.py
|
|
get_global_personas_path|src\paths.py
|
|
get_project_personas_path|src\paths.py
|
|
get_global_workspace_profiles_path|src\paths.py
|
|
get_project_workspace_profiles_path|src\paths.py
|
|
get_conductor_dir|src\paths.py
|
|
get_logs_dir|src\paths.py
|
|
get_scripts_dir|src\paths.py
|
|
get_tracks_dir|src\paths.py
|
|
get_track_state_dir|src\paths.py
|
|
get_archive_dir|src\paths.py
|
|
get_full_path_info|src\paths.py
|
|
reset_resolved|src\paths.py
|
|
PerformanceScope|src\performance_monitor.py
|
|
get_monitor|src\performance_monitor.py
|
|
PerformanceMonitor|src\performance_monitor.py
|
|
PersonaManager|src\personas.py
|
|
PresetManager|src\presets.py
|
|
now_ts|src\project_manager.py
|
|
parse_ts|src\project_manager.py
|
|
entry_to_str|src\project_manager.py
|
|
str_to_entry|src\project_manager.py
|
|
get_git_commit|src\project_manager.py
|
|
get_git_log|src\project_manager.py
|
|
default_discussion|src\project_manager.py
|
|
default_project|src\project_manager.py
|
|
get_history_path|src\project_manager.py
|
|
load_project|src\project_manager.py
|
|
load_history|src\project_manager.py
|
|
clean_nones|src\project_manager.py
|
|
save_project|src\project_manager.py
|
|
migrate_from_legacy_config|src\project_manager.py
|
|
flat_config|src\project_manager.py
|
|
save_track_state|src\project_manager.py
|
|
load_track_state|src\project_manager.py
|
|
load_track_history|src\project_manager.py
|
|
save_track_history|src\project_manager.py
|
|
get_all_tracks|src\project_manager.py
|
|
calculate_track_progress|src\project_manager.py
|
|
branch_discussion|src\project_manager.py
|
|
promote_take|src\project_manager.py
|
|
BaseEmbeddingProvider|src\rag_engine.py
|
|
LocalEmbeddingProvider|src\rag_engine.py
|
|
GeminiEmbeddingProvider|src\rag_engine.py
|
|
RAGEngine|src\rag_engine.py
|
|
open_session|src\session_logger.py
|
|
close_session|src\session_logger.py
|
|
reset_session|src\session_logger.py
|
|
log_api_hook|src\session_logger.py
|
|
log_comms|src\session_logger.py
|
|
log_tool_call|src\session_logger.py
|
|
log_tool_output|src\session_logger.py
|
|
log_cli_call|src\session_logger.py
|
|
draw_soft_shadow|src\shaders.py
|
|
apply_faux_acrylic_glass|src\shaders.py
|
|
ShaderManager|src\shader_manager.py
|
|
run_powershell|src\shell_runner.py
|
|
summarise_file|src\summarize.py
|
|
summarise_items|src\summarize.py
|
|
build_summary_markdown|src\summarize.py
|
|
get_file_hash|src\summary_cache.py
|
|
SummaryCache|src\summary_cache.py
|
|
format_takes_diff|src\synthesis_formatter.py
|
|
get_palette_names|src\theme.py
|
|
get_current_palette|src\theme.py
|
|
get_current_font_path|src\theme.py
|
|
get_current_font_size|src\theme.py
|
|
get_current_scale|src\theme.py
|
|
get_shader_config|src\theme.py
|
|
get_window_frame_config|src\theme.py
|
|
get_palette_colours|src\theme.py
|
|
apply|src\theme.py
|
|
apply_font|src\theme.py
|
|
set_scale|src\theme.py
|
|
save_to_config|src\theme.py
|
|
load_from_config|src\theme.py
|
|
is_nerv_active|src\theme_2.py
|
|
get_transparency|src\theme_2.py
|
|
set_transparency|src\theme_2.py
|
|
get_child_transparency|src\theme_2.py
|
|
set_child_transparency|src\theme_2.py
|
|
apply_current|src\theme_2.py
|
|
get_font_loading_params|src\theme_2.py
|
|
get_tweaked_theme|src\theme_2.py
|
|
apply_nerv|src\theme_nerv.py
|
|
CRTFilter|src\theme_nerv_fx.py
|
|
StatusFlicker|src\theme_nerv_fx.py
|
|
AlertPulsing|src\theme_nerv_fx.py
|
|
parse_thinking_trace|src\thinking_parser.py
|
|
ToolBiasEngine|src\tool_bias.py
|
|
ToolPresetManager|src\tool_presets.py
|
|
WorkspaceManager|src\workspace_manager.py
|
|
AISettingsSimulation|simulation\sim_ai_settings.py
|
|
BaseSimulation|simulation\sim_base.py
|
|
run_sim|simulation\sim_base.py
|
|
ContextSimulation|simulation\sim_context.py
|
|
ExecutionSimulation|simulation\sim_execution.py
|
|
ToolsSimulation|simulation\sim_tools.py
|
|
UserSimAgent|simulation\user_agent.py
|
|
WorkflowSimulator|simulation\workflow_sim.py
|
|
"""
|
|
|
|
symbols = []
|
|
for line in raw_symbols.strip().split("\n"):
|
|
if "|" in line:
|
|
name, path = line.split("|")
|
|
symbols.append((name.strip(), path.strip()))
|
|
|
|
# Load all project source
|
|
source_files = {}
|
|
for root in ['src', 'simulation']:
|
|
for p in Path(root).rglob('*.py'):
|
|
try:
|
|
source_files[str(p)] = p.read_text(encoding='utf-8')
|
|
except Exception:
|
|
pass
|
|
|
|
unused = []
|
|
for name, path in symbols:
|
|
# Skip generic names that might give false positives in a simple regex search
|
|
if name in ["run", "main", "apply", "save_config", "load_config", "configure"]:
|
|
continue
|
|
|
|
pattern = re.compile(r'\b' + re.escape(name) + r'\b')
|
|
count = 0
|
|
for fpath, code in source_files.items():
|
|
if fpath == path:
|
|
# Only count if it appears more than once (one for definition)
|
|
# This is a bit naive for methods vs standalone functions but a good start
|
|
matches = pattern.findall(code)
|
|
if len(matches) > 1:
|
|
count += (len(matches) - 1)
|
|
else:
|
|
matches = pattern.findall(code)
|
|
count += len(matches)
|
|
|
|
if count == 0:
|
|
unused.append((name, path))
|
|
|
|
print(f"TOTAL_UNUSED:{len(unused)}")
|
|
for name, path in unused:
|
|
print(f"UNUSED:{name}|PATH:{path}")
|