Refactor docstrings to resolve DAG Context with SSDL shape and remove Threading sections
Keeps the ASCII layout map previews, baseline summaries, and state mutation blocks, while cleanly removing Threading & Safety sections and replacing DAG references with SSDL Shape notations.
This commit is contained in:
+36
-114
@@ -311,13 +311,8 @@ class App:
|
||||
self.controller, self.perf_monitor, self.history,
|
||||
self.show_command_palette, self.workspace_manager.
|
||||
|
||||
DAG Render Context:
|
||||
Called by: main() at startup
|
||||
Calls: AppController.init_state(), AppController.start_services(),
|
||||
WorkspaceManager.load_all_profiles()
|
||||
|
||||
Threading & Safety:
|
||||
Must run synchronously on the Main Thread during app startup.
|
||||
SSDL Shape:
|
||||
`[I:init_controller] -> [I:init_workspace] -> [I:load_profiles]`
|
||||
|
||||
[C: src/mcp_client.py:_DDGParser.__init__, src/mcp_client.py:_TextExtractor.__init__]
|
||||
"""
|
||||
@@ -612,12 +607,8 @@ class App:
|
||||
Initializes the ImGui runner (HelloImGui) and starts the main application loop.
|
||||
Loads system themes, default styling metrics, fonts, and sets up window docking layouts.
|
||||
|
||||
DAG Render Context:
|
||||
Called by: main()
|
||||
Calls: hello_imgui.run(), _profiled_setup_style(), _profiled_post_init(), _load_fonts()
|
||||
|
||||
Threading & Safety:
|
||||
Invokes the blocking GUI loop on the Main Thread.
|
||||
SSDL Shape:
|
||||
`[I:hello_imgui] -> o-> [I:main_loop]`
|
||||
|
||||
[C: simulation/sim_base.py:run_sim, src/mcp_client.py:get_git_diff, src/project_manager.py:get_git_commit, src/rag_engine.py:RAGEngine._search_mcp, src/shell_runner.py:run_powershell, tests/conftest.py:kill_process_tree, tests/conftest.py:live_gui, tests/test_conductor_abort_event.py:test_conductor_abort_event_populated, tests/test_conductor_engine_v2.py:test_conductor_engine_dynamic_parsing_and_execution, tests/test_conductor_engine_v2.py:test_conductor_engine_run_executes_tickets_in_order, tests/test_extended_sims.py:test_ai_settings_sim_live, tests/test_extended_sims.py:test_context_sim_live, tests/test_extended_sims.py:test_execution_sim_live, tests/test_extended_sims.py:test_tools_sim_live, tests/test_external_editor_gui.py:get_vscode_processes, tests/test_external_editor_gui.py:test_vscode_launches_with_diff_view, tests/test_gui_custom_window.py:test_app_window_is_borderless, tests/test_headless_simulation.py:module, tests/test_headless_verification.py:test_headless_verification_error_and_qa_interceptor, tests/test_headless_verification.py:test_headless_verification_full_run, tests/test_mock_gemini_cli.py:run_mock, tests/test_orchestration_logic.py:test_conductor_engine_run, tests/test_parallel_execution.py:test_conductor_engine_pool_integration, tests/test_sim_ai_settings.py:test_ai_settings_simulation_run, tests/test_sim_context.py:test_context_simulation_run, tests/test_sim_execution.py:test_execution_simulation_run, tests/test_sim_tools.py:test_tools_simulation_run]
|
||||
"""
|
||||
@@ -844,12 +835,8 @@ class App:
|
||||
State Mutations:
|
||||
None (read-only state capture).
|
||||
|
||||
DAG Render Context:
|
||||
Called by: _handle_undo(), _handle_redo(), _handle_jump_to_history(), _handle_history_logic()
|
||||
Calls: None
|
||||
|
||||
Threading & Safety:
|
||||
Must run synchronously on the Main Thread to avoid concurrent collection mutations.
|
||||
SSDL Shape:
|
||||
`[Q:ui_state] -> [I:copy] -> [T:snapshot]`
|
||||
"""
|
||||
from src import history
|
||||
import copy
|
||||
@@ -878,12 +865,8 @@ class App:
|
||||
Modifies active UI variables (self.ui_ai_input, self.temperature, self.files, self.context_files, etc.)
|
||||
self._is_applying_snapshot (temporarily set to True)
|
||||
|
||||
DAG Render Context:
|
||||
Called by: _handle_undo(), _handle_redo(), _handle_jump_to_history()
|
||||
Calls: FileItem.from_dict()
|
||||
|
||||
Threading & Safety:
|
||||
Must run synchronously on the Main Thread. Sets a lock flag during application.
|
||||
SSDL Shape:
|
||||
`[I:lock_flag] -> [S:ui_state] -> [I:unlock]`
|
||||
"""
|
||||
self._is_applying_snapshot = True
|
||||
try:
|
||||
@@ -927,12 +910,8 @@ class App:
|
||||
State Mutations:
|
||||
self._ini_capture_ready (set to True on first invocation to bypass initial ImGui frame bugs).
|
||||
|
||||
DAG Render Context:
|
||||
Called by: save_workspace_profile()
|
||||
Calls: imgui.save_ini_settings_to_memory()
|
||||
|
||||
Threading & Safety:
|
||||
Must run synchronously on the Main Thread. Defer-not-catch pattern prevents uncatchable C-level crashes.
|
||||
SSDL Shape:
|
||||
`[Q:ui_states] -> [B:ini_ready] -> [T:profile]`
|
||||
"""
|
||||
if not getattr(self, "_ini_capture_ready", False):
|
||||
self._ini_capture_ready = True
|
||||
@@ -971,12 +950,8 @@ class App:
|
||||
State Mutations:
|
||||
Modifies window visibility and panel configuration state variables.
|
||||
|
||||
DAG Render Context:
|
||||
Called by: load_workspace_profile()
|
||||
Calls: imgui.load_ini_settings_from_memory()
|
||||
|
||||
Threading & Safety:
|
||||
Must run synchronously on the Main Thread to apply layout constraints safely.
|
||||
SSDL Shape:
|
||||
`[I:load_ini] -> [S:ui_states]`
|
||||
"""
|
||||
imgui.load_ini_settings_from_memory(profile.ini_content)
|
||||
self.show_windows.update(profile.show_windows)
|
||||
@@ -1026,12 +1001,8 @@ class App:
|
||||
self.history (mutated to record index changes)
|
||||
Modifies active UI variables via _apply_snapshot()
|
||||
|
||||
DAG Render Context:
|
||||
Called by: _gui_func() (via hotkey Ctrl+Y) or redo button click.
|
||||
Calls: _take_snapshot(), _apply_snapshot(), HistoryManager.redo()
|
||||
|
||||
Threading & Safety:
|
||||
Must run synchronously on the Main Thread.
|
||||
SSDL Shape:
|
||||
`[I:snapshot] -> [B:history] => [I:state]`
|
||||
"""
|
||||
sys.stderr.write(f"[DEBUG History] _handle_redo called. can_redo={self.history.can_redo}\n")
|
||||
sys.stderr.flush()
|
||||
@@ -1052,12 +1023,8 @@ class App:
|
||||
State Mutations:
|
||||
runner_params settings are flushed to disk (imgui.save_ini_settings_to_disk).
|
||||
|
||||
DAG Render Context:
|
||||
Called by: HelloImGui on exit.
|
||||
Calls: AppController.shutdown()
|
||||
|
||||
Threading & Safety:
|
||||
Executes synchronously on the Main Thread.
|
||||
SSDL Shape:
|
||||
`[I:save_ini] -> [I:controller_shutdown]`
|
||||
|
||||
[C: tests/conftest.py:app_instance, tests/conftest.py:mock_app]
|
||||
"""
|
||||
@@ -1152,10 +1119,8 @@ class App:
|
||||
self.show_command_palette (toggled via Ctrl+Shift+P)
|
||||
self._hot_reload_error (updated on Ctrl+Alt+R)
|
||||
|
||||
DAG Render Context:
|
||||
Called by: HelloImGui runner loop on every frame.
|
||||
Calls: render_main_interface(), render_custom_title_bar(),
|
||||
_toggle_command_palette(), _trigger_hot_reload()
|
||||
SSDL Shape:
|
||||
`o-> [I:hotkeys] -> [I:title_bar] -> [I:main_interface] -> [I:modals]`
|
||||
|
||||
ASCII Layout Map:
|
||||
+---------------------------------------------------------+
|
||||
@@ -1168,11 +1133,7 @@ class App:
|
||||
| | | |
|
||||
| +----------------+ | [AI] | [Exec clutch] |
|
||||
| | Presets | | Analyzing code... | |
|
||||
| +----------------+ | | |
|
||||
+--------------------+-------------------+----------------+
|
||||
|
||||
Threading & Safety:
|
||||
Must run synchronously on the Main Thread.
|
||||
"""
|
||||
# One-shot: log when immapp first hands control to our render callback. The
|
||||
# span init -> here is window/GL/context creation + the font/style/post_init
|
||||
@@ -1851,12 +1812,8 @@ def render_diagnostics_panel(app: App) -> None:
|
||||
State Mutations:
|
||||
Updates app.perf_profiling_enabled and visibility in app.show_windows["Diagnostics"].
|
||||
|
||||
DAG Context / Render Flow:
|
||||
Called by: render_main_interface()
|
||||
Calls: app.perf_monitor.get_metrics()
|
||||
|
||||
Threading & Safety:
|
||||
Must run synchronously on the Main Thread.
|
||||
SSDL Shape:
|
||||
`[I] -> [B:perf_metrics] => [I:detailed_timings]`
|
||||
"""
|
||||
if app.perf_profiling_enabled: app.perf_monitor.start_component("_render_diagnostics_panel")
|
||||
with imscope.window("Diagnostics", app.show_windows.get("Diagnostics", False)) as (exp, opened):
|
||||
@@ -2360,14 +2317,8 @@ def render_ai_settings_hub(app: App) -> None:
|
||||
State Mutations:
|
||||
None directly (delegated to child panels).
|
||||
|
||||
DAG Context / Render Flow:
|
||||
Called by: render_main_interface()
|
||||
Calls: render_persona_selector_panel(), render_provider_panel(),
|
||||
render_system_prompts_panel(), render_rag_panel(),
|
||||
render_agent_tools_panel()
|
||||
|
||||
Threading & Safety:
|
||||
Must run synchronously on the Main Thread.
|
||||
SSDL Shape:
|
||||
`[I] -> [B:headers] => [I:sub-panels]`
|
||||
"""
|
||||
render_persona_selector_panel(app)
|
||||
if imgui.collapsing_header("Provider & Model"): render_provider_panel(app)
|
||||
@@ -2472,12 +2423,8 @@ def render_agent_tools_panel(app: App) -> None:
|
||||
State Mutations:
|
||||
Modifies app.ui_active_tool_preset and local UI flags.
|
||||
|
||||
DAG Context / Render Flow:
|
||||
Called by: render_ai_settings_hub()
|
||||
Calls: app._get_active_capabilities()
|
||||
|
||||
Threading & Safety:
|
||||
Must run synchronously on the Main Thread.
|
||||
SSDL Shape:
|
||||
`[Q:caps] -> [B:tool_calling] => [S:preset]`
|
||||
"""
|
||||
caps = app._get_active_capabilities()
|
||||
if not caps.tool_calling:
|
||||
@@ -3416,10 +3363,8 @@ def render_context_composition_panel(app: App) -> None:
|
||||
app.context_files (adds/removes file records)
|
||||
app.screenshots (adds/removes screen image attachments)
|
||||
|
||||
DAG Context / Render Flow:
|
||||
Called by: render_main_interface()
|
||||
Calls: render_context_batch_actions(), render_context_files_table(),
|
||||
render_context_presets(), render_context_screenshots()
|
||||
SSDL Shape:
|
||||
`[I:stats] -> [I:batch_actions] -> [I:files_table] -> [I:presets] -> [I:screenshots]`
|
||||
|
||||
ASCII Layout Preview:
|
||||
+-------------------------------------------------------------+
|
||||
@@ -3433,9 +3378,6 @@ def render_context_composition_panel(app: App) -> None:
|
||||
| > Screenshots |
|
||||
+-------------------------------------------------------------+
|
||||
|
||||
Threading & Safety:
|
||||
Must run synchronously on the Main Thread.
|
||||
|
||||
[C: tests/test_auto_slices.py:test_add_all_triggers_auto_slices, tests/test_gui_fast_render.py:test_render_context_composition_panel_fast]
|
||||
"""
|
||||
if imgui.collapsing_header("Context Composition##panel"):
|
||||
@@ -3460,9 +3402,8 @@ def render_ast_inspector_modal(app: App) -> None:
|
||||
app.ui_editing_slices_file.ast_mask (mutated on node click)
|
||||
app.ui_editing_slices_file.custom_slices (mutated on slice modification)
|
||||
|
||||
DAG Context / Render Flow:
|
||||
Called by: render_main_interface() (as popup modal render)
|
||||
Calls: ts_c_get_code_outline(), py_get_code_outline()
|
||||
SSDL Shape:
|
||||
`[B:open_modal?] -> [Q:outline] -> [I:render_ast_tree]`
|
||||
|
||||
ASCII Layout Preview:
|
||||
+-------------------------------------------------------------+
|
||||
@@ -3478,9 +3419,6 @@ def render_ast_inspector_modal(app: App) -> None:
|
||||
+--------------------+----------------------------------------+
|
||||
| [Add selected slices] [Close] |
|
||||
+-------------------------------------------------------------+
|
||||
|
||||
Threading & Safety:
|
||||
Must run synchronously on the Main Thread.
|
||||
"""
|
||||
if getattr(app, 'show_structural_editor_modal', False):
|
||||
imgui.open_popup('Structural File Editor')
|
||||
@@ -3739,9 +3677,8 @@ def render_context_files_table(app: App) -> None:
|
||||
app.context_files[index].view_mode (Def/Sig/Hide)
|
||||
app.context_files (elements removed via delete action)
|
||||
|
||||
DAG Context / Render Flow:
|
||||
Called by: render_context_composition_panel()
|
||||
Calls: aggregate.group_files_by_dir()
|
||||
SSDL Shape:
|
||||
`[I:group_by_dir] -> o-> [I:dir_node] -> o-> [I:file_row]`
|
||||
|
||||
ASCII Layout Preview:
|
||||
+-------------------------------------------------------------+
|
||||
@@ -3751,9 +3688,6 @@ def render_context_files_table(app: App) -> None:
|
||||
| [x] gui_2.py | [Sig v] [Inspect] [X] |
|
||||
| [x] models.py | [Def v] [Inspect] [X] |
|
||||
+--------------------------------------+----------------------+
|
||||
|
||||
Threading & Safety:
|
||||
Must run synchronously on the Main Thread.
|
||||
"""
|
||||
imgui.dummy(imgui.ImVec2(0, 4))
|
||||
grouped_files = aggregate.group_files_by_dir(app.context_files)
|
||||
@@ -4172,9 +4106,8 @@ def render_discussion_entry(app: App, entry: dict, index: int) -> None:
|
||||
app.disc_entries[index]['read_mode'] (toggled by header button)
|
||||
app.disc_entries[index]['role'] (changed by combo selection)
|
||||
|
||||
DAG Render Context:
|
||||
Called by: _render_discussion_hub() / render_discussion_hub()
|
||||
Calls: render_discussion_entry_read_mode(), thinking_parser.parse()
|
||||
SSDL Shape:
|
||||
`[I:header] -> [B:collapsed] => [I:preview] | [I:body] -> [I:footer]`
|
||||
|
||||
ASCII Layout Preview:
|
||||
+-------------------------------------------------------------+
|
||||
@@ -4188,9 +4121,6 @@ def render_discussion_entry(app: App, entry: dict, index: int) -> None:
|
||||
+-------------------------------------------------------------+
|
||||
| [Ins] [Del] [Branch] |
|
||||
+-------------------------------------------------------------+
|
||||
|
||||
Threading & Safety:
|
||||
Must run synchronously on the Main Thread.
|
||||
"""
|
||||
with imscope.id(f"disc_{index}"):
|
||||
role = entry.get("role", "User")
|
||||
@@ -4286,12 +4216,8 @@ def render_discussion_entry_read_mode(app: App, entry: dict, index: int) -> None
|
||||
app.text_viewer_title, app.text_viewer_content, app.text_viewer_type (populated on [Source] click)
|
||||
app.show_windows["Text Viewer"] (set to True on [Source] click)
|
||||
|
||||
DAG Render Context:
|
||||
Called by: render_discussion_entry()
|
||||
Calls: markdown_helper.render(), mcp_client.read_file()
|
||||
|
||||
Threading & Safety:
|
||||
Must run synchronously on the Main Thread.
|
||||
SSDL Shape:
|
||||
`[I:extract_rag] -> [B:definitions?] => [I:markdown]`
|
||||
"""
|
||||
with imscope.id(f"read_{index}"):
|
||||
content = entry["content"]
|
||||
@@ -4687,18 +4613,14 @@ def render_discussion_entry_controls(app: App) -> None:
|
||||
app.ui_auto_add_history (toggled via checkbox)
|
||||
app.ai_status (updated upon saving)
|
||||
|
||||
DAG Render Context:
|
||||
Called by: render_discussion_hub()
|
||||
Calls: AppController._handle_compress_discussion(), App._flush_to_project()
|
||||
SSDL Shape:
|
||||
`[I:buttons] -> [B:clicks] => [S:entries_or_config]`
|
||||
|
||||
ASCII Layout Preview:
|
||||
+-------------------------------------------------------------+
|
||||
| [+ Entry] [-All] [+All] [Clear All] [Save] [Compress] |
|
||||
| [x] Auto-add message & response to history |
|
||||
+-------------------------------------------------------------+
|
||||
|
||||
Threading & Safety:
|
||||
Must run synchronously on the Main Thread.
|
||||
"""
|
||||
if imgui.button("+ Entry"): app.disc_entries.append({"role": app.disc_roles[0] if app.disc_roles else "User", "content": "", "collapsed": True, "ts": project_manager.now_ts()})
|
||||
imgui.same_line()
|
||||
|
||||
Reference in New Issue
Block a user