intellicrack.ui
User interface components for Intellicrack.
This package provides PyQt6-based UI components including the main application window, chat panel, tool output display, and configuration dialogs.
- class AssemblySyntaxHighlighter[source]
Bases:
_ThemedSyntaxHighlighterSyntax highlighter for x86/x64 assembly.
Highlights instructions, registers, addresses, and comments in disassembly output.
- Variables:
- INSTRUCTIONS: ClassVar[tuple[str, ...]] = ('mov', 'movsx', 'movzx', 'movsxd', 'lea', 'push', 'pop', 'pushf', 'popf', 'call', 'ret', 'retn', 'jmp', 'je', 'jne', 'jz', 'jnz', 'ja', 'jae', 'jb', 'jbe', 'jg', 'jge', 'jl', 'jle', 'jo', 'jno', 'js', 'jns', 'cmp', 'test', 'add', 'sub', 'mul', 'imul', 'div', 'idiv', 'inc', 'dec', 'and', 'or', 'xor', 'not', 'neg', 'shl', 'shr', 'sal', 'sar', 'rol', 'ror', 'nop', 'int', 'syscall', 'sysenter', 'leave', 'enter', 'hlt', 'wait', 'cdq', 'cwd', 'cbw', 'cwde', 'cdqe', 'cqo', 'cmove', 'cmovne', 'cmova', 'cmovae', 'cmovb', 'cmovbe', 'cmovg', 'cmovge', 'cmovl', 'cmovle', 'sete', 'setne', 'seta', 'setae', 'setb', 'setbe', 'setg', 'setge', 'setl', 'setle', 'rep', 'repe', 'repne', 'repz', 'repnz', 'movsb', 'movsw', 'movsd', 'movsq', 'stosb', 'stosw', 'stosd', 'stosq', 'lodsb', 'lodsw', 'lodsd', 'lodsq', 'scasb', 'scasw', 'scasd', 'scasq', 'xchg', 'bswap', 'xadd', 'cmpxchg', 'lock', 'movaps', 'movups', 'movapd', 'movupd', 'movdqa', 'movdqu', 'movss', 'movsd', 'addps', 'addpd', 'addss', 'addsd', 'subps', 'subpd', 'subss', 'subsd', 'mulps', 'mulpd', 'mulss', 'mulsd', 'divps', 'divpd', 'divss', 'divsd', 'sqrtps', 'sqrtss', 'pand', 'por', 'pxor', 'pshufb', 'pshufd', 'punpcklbw', 'punpckhbw', 'vmovaps', 'vmovups', 'vaddps', 'vsubps', 'vmulps', 'vdivps', 'vpand', 'vpor', 'vpxor', 'vzeroupper', 'vzeroall', 'vbroadcastss', 'vbroadcastsd', 'vextractf128', 'vinsertf128', 'vperm2f128', 'vpermilps', 'kandw', 'korw', 'kxorw', 'kmovw', 'kunpckbw', 'fld', 'fst', 'fstp', 'fadd', 'fsub', 'fmul', 'fdiv', 'fxch', 'fcom', 'fcomp', 'fcompp', 'fucom', 'fucomi', 'fldcw', 'fnstcw', 'finit', 'fninit', 'fwait', 'fnclex')
- REGISTERS: ClassVar[tuple[str, ...]] = ('rax', 'rbx', 'rcx', 'rdx', 'rsi', 'rdi', 'rbp', 'rsp', 'rip', 'r8', 'r9', 'r10', 'r11', 'r12', 'r13', 'r14', 'r15', 'eax', 'ebx', 'ecx', 'edx', 'esi', 'edi', 'ebp', 'esp', 'eip', 'ax', 'bx', 'cx', 'dx', 'si', 'di', 'bp', 'sp', 'al', 'bl', 'cl', 'dl', 'ah', 'bh', 'ch', 'dh', 'sil', 'dil', 'bpl', 'spl', 'r8d', 'r9d', 'r10d', 'r11d', 'r12d', 'r13d', 'r14d', 'r15d', 'r8w', 'r9w', 'r10w', 'r11w', 'r12w', 'r13w', 'r14w', 'r15w', 'r8b', 'r9b', 'r10b', 'r11b', 'r12b', 'r13b', 'r14b', 'r15b', 'cs', 'ds', 'es', 'fs', 'gs', 'ss', 'xmm0', 'xmm1', 'xmm2', 'xmm3', 'xmm4', 'xmm5', 'xmm6', 'xmm7', 'xmm8', 'xmm9', 'xmm10', 'xmm11', 'xmm12', 'xmm13', 'xmm14', 'xmm15', 'ymm0', 'ymm1', 'ymm2', 'ymm3', 'ymm4', 'ymm5', 'ymm6', 'ymm7', 'ymm8', 'ymm9', 'ymm10', 'ymm11', 'ymm12', 'ymm13', 'ymm14', 'ymm15', 'zmm0', 'zmm1', 'zmm2', 'zmm3', 'zmm4', 'zmm5', 'zmm6', 'zmm7', 'zmm8', 'zmm9', 'zmm10', 'zmm11', 'zmm12', 'zmm13', 'zmm14', 'zmm15', 'zmm16', 'zmm17', 'zmm18', 'zmm19', 'zmm20', 'zmm21', 'zmm22', 'zmm23', 'zmm24', 'zmm25', 'zmm26', 'zmm27', 'zmm28', 'zmm29', 'zmm30', 'zmm31', 'k0', 'k1', 'k2', 'k3', 'k4', 'k5', 'k6', 'k7', 'st', 'st0', 'st1', 'st2', 'st3', 'st4', 'st5', 'st6', 'st7')
- __init__(parent=None)[source]
Initialize the AssemblySyntaxHighlighter with assembly highlighting rules.
- Parameters:
parent (QTextDocument | None) – Parent QTextDocument to highlight.
- Return type:
None
- class CSyntaxHighlighter[source]
Bases:
_ThemedSyntaxHighlighterSyntax highlighter for C/C++ code.
Highlights keywords, types, strings, numbers, comments, and function calls in decompiled C code.
- Variables:
- KEYWORDS: ClassVar[tuple[str, ...]] = ('auto', 'break', 'case', 'char', 'const', 'continue', 'default', 'do', 'double', 'else', 'enum', 'extern', 'float', 'for', 'goto', 'if', 'int', 'long', 'register', 'return', 'short', 'signed', 'sizeof', 'static', 'struct', 'switch', 'typedef', 'union', 'unsigned', 'void', 'volatile', 'while', 'bool', 'true', 'false', 'nullptr', 'class', 'public', 'private', 'protected', 'virtual', 'inline', 'template', 'typename', 'namespace', 'using', 'try', 'catch', 'throw', 'new', 'delete', 'this', 'operator')
- TYPES: ClassVar[tuple[str, ...]] = ('int8_t', 'int16_t', 'int32_t', 'int64_t', 'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t', 'size_t', 'ssize_t', 'ptrdiff_t', 'intptr_t', 'uintptr_t', 'BYTE', 'WORD', 'DWORD', 'QWORD', 'BOOL', 'HANDLE', 'LPVOID', 'LPCSTR', 'LPWSTR', 'HMODULE', 'FARPROC', 'HRESULT', 'undefined', 'undefined1', 'undefined2', 'undefined4', 'undefined8')
- __init__(parent=None)[source]
Initialize the CSyntaxHighlighter with C/C++ highlighting rules.
- Parameters:
parent (QTextDocument | None) – Parent QTextDocument to highlight.
- Return type:
None
- class ChatInput[source]
Bases:
QFrameChat input widget with send button.
Provides a text input area and send button for composing messages to send to the AI.
- Variables:
message_submitted – Qt signal for message submitted.
- __init__(parent=None)[source]
Initialize the ChatInput widget.
- Parameters:
parent (QWidget | None) – Parent widget.
- Return type:
None
- set_enabled(*, enabled)[source]
Enable or disable the input.
- Parameters:
enabled (bool) – Whether input should be enabled.
- Return type:
None
- clear()[source]
Clear the input text.
- Return type:
None
- set_focus()[source]
Set focus to the text input.
- Return type:
None
- class ChatPanel[source]
Bases:
QFrameMain chat panel widget.
Contains the message history scroll area and input widget. Manages displaying conversation messages and collecting user input.
- Variables:
message_submitted – Qt signal for message submitted.
context_requested – Qt signal asking to browse the MCP servers’ resources and prompts.
tool_activity (ToolActivityPanel) – The tool calls running now, with their progress and a way to cancel each one.
- tool_activity: ToolActivityPanel
- __init__(parent=None)[source]
Initialize the ChatPanel widget.
- Parameters:
parent (QWidget | None) – Parent widget.
- Return type:
None
- add_message(message)[source]
Add a message to the chat.
- Parameters:
message (Message) – Message to add.
- Return type:
None
- restore_messages(messages)[source]
Replace the visible conversation with a previously saved history.
Renders through the same bubble construction live turns use, so a restored session is indistinguishable from one built up interactively, and scrolls once at the end rather than once per message.
- Parameters:
messages (Sequence[Message]) – Ordered conversation history to display.
- Return type:
None
- add_streaming_message()[source]
Create a streaming message and return the append function.
The created
Messageis tracked as the panel’s active streaming message untilfinalize_streaming_message()folds the orchestrator’s completed response into it, so a turn that streams its text never gets a second, duplicate bubble for the same content (S16 duplicate-assistant-bubble fix).- Returns:
Function to call with each text chunk.
- Return type:
Callable[[str], None]
- finalize_streaming_message(message)[source]
Fold a completed assistant message into the active streaming bubble.
A turn’s streamed text already reached the panel chunk-by-chunk via the append function
add_streaming_message()returned, somessage.contentis not applied here – the tracked message’s content, built incrementally, is already authoritative. This only merges the metadata the streaming path could not carry: tool calls, tool results, and any thinking content the provider reported.Calling this with no active streaming message (
add_streaming_messagewas never invoked for the current turn) falls back toadd_message()so the completed message is still rendered.- Parameters:
message (Message) – The orchestrator’s completed message for this turn.
- Return type:
None
- clear_messages()[source]
Clear all messages from the chat.
- Return type:
None
- show_notice(text)[source]
Add a short notice above the message input, such as a server’s resource changing.
The most recent few are shown, newest last, so one notice is not hidden by others that arrive with it.
- Parameters:
text (str) – The notice, already cleaned.
- Return type:
None
- property notice: str
The notices shown now.
- Returns:
The notices, one per line, or an empty string.
- Return type:
- set_input_enabled(*, enabled)[source]
Enable or disable the input widget.
- Parameters:
enabled (bool) – Whether input should be enabled.
- Return type:
None
- get_messages()[source]
Get all messages in the chat.
- set_focus_input()[source]
Set focus to the input widget.
- Return type:
None
- class CodeDisplay[source]
Bases:
QPlainTextEditCode display widget with syntax highlighting.
Provides a read-only text area for displaying code with appropriate syntax highlighting based on language.
- __init__(language='c', parent=None)[source]
Initialize the CodeDisplay with syntax highlighting for the given language.
- Parameters:
language (str) – Programming language for syntax highlighting.
parent (QWidget | None) – Parent widget.
- Return type:
None
- set_language(language)[source]
Set the syntax highlighting language.
- Parameters:
language (str) – Programming language.
- Return type:
None
- get_highlighter()[source]
Get the current syntax highlighter.
- Returns:
The syntax highlighter or None.
- Return type:
QSyntaxHighlighter | None
- set_content(content)[source]
Set the displayed content.
- Parameters:
content (str) – Text content to display.
- Return type:
None
- class FontManager[source]
Bases:
objectSingleton font manager for custom font loading and management.
Handles loading custom fonts from the assets directory and provides font instances for code and UI elements.
- __init__()[source]
Initialize the FontManager instance.
- Return type:
None
- classmethod get_instance()[source]
Get the singleton instance of FontManager.
- Returns:
The FontManager singleton instance.
- Return type:
- classmethod reset_instance()[source]
Reset the singleton instance (primarily for testing).
- Return type:
None
- load_fonts()[source]
Load all custom fonts from the fonts directory.
- Returns:
True if at least one font was loaded successfully.
- Return type:
- get_code_font(size=None)[source]
Get a font suitable for code display.
- Parameters:
size (int | None) – Font size in points, or
Noneto use thefont_sizes.code_defaultvalue fromfont_config.json(falling back to10if unconfigured).- Returns:
QFont configured for code display.
- Return type:
QFont
- get_code_font_bold(size=None)[source]
Get a bold font suitable for code display.
- Parameters:
size (int | None) – Font size in points, or
Noneto use thefont_sizes.code_defaultvalue fromfont_config.json(falling back to10if unconfigured).- Returns:
QFont configured for bold code display.
- Return type:
QFont
- get_ui_font(size=None)[source]
Get a font suitable for UI elements.
- Parameters:
size (int | None) – Font size in points, or
Noneto use thefont_sizes.ui_defaultvalue fromfont_config.json(falling back to9if unconfigured).- Returns:
QFont configured for UI display.
- Return type:
QFont
- get_ui_font_bold(size=None)[source]
Get a bold font suitable for UI elements.
- Parameters:
size (int | None) – Font size in points, or
Noneto use thefont_sizes.ui_defaultvalue fromfont_config.json(falling back to9if unconfigured).- Returns:
QFont configured for bold UI display.
- Return type:
QFont
- get_heading_font(size=None)[source]
Get a font suitable for headings.
- Parameters:
size (int | None) – Font size in points, or
Noneto use thefont_sizes.ui_largevalue fromfont_config.json(falling back to12if unconfigured).- Returns:
QFont configured for heading display.
- Return type:
QFont
- property code_font_family: str
The current code font family name.
- Returns:
Code font family name.
- Return type:
- property ui_font_family: str
The current UI font family name.
- Returns:
UI font family name.
- Return type:
- is_custom_font_loaded()[source]
Check if any custom fonts were loaded.
- Returns:
True if custom fonts were loaded successfully.
- Return type:
- class FunctionListPanel[source]
Bases:
QFramePanel showing list of functions in the binary.
Allows navigation to specific functions by clicking.
- Variables:
function_selected – Qt signal for function selected. The address argument is declared
qint64so 64-bit virtual addresses are not truncated to 32 bits by Qt’s defaultintmarshalling.
- __init__(parent=None)[source]
Initialize the FunctionListPanel.
- Parameters:
parent (QWidget | None) – Parent widget.
- Return type:
None
- set_functions(functions)[source]
Set the function list.
- class HighlightRule[source]
Bases:
objectA syntax highlighting rule.
- __init__(pattern, text_format, group=0)[source]
Initialize the HighlightRule with a pattern, format, and capture group.
- Parameters:
pattern (str) – Regular expression pattern to match.
text_format (QTextCharFormat) – Text character format to apply to matches.
group (int) – Index of the regex capture group whose span receives the format.
0(the default) formats the whole match; a positive index formats only that captured subgroup, which keyword rules such asdef\s+(name)use so the format lands on the captured name rather than the keyword itself.
- Return type:
None
- pattern
- format
- group
- class IconManager[source]
Bases:
objectSingleton icon manager with caching and fallback support.
Provides centralized icon loading for the Intellicrack UI with performance optimization through caching and graceful degradation when icon files are not available.
- __init__()[source]
Initialize the IconManager instance.
- Return type:
None
- classmethod get_instance()[source]
Get the singleton instance of IconManager.
- Returns:
The IconManager singleton instance.
- Return type:
- classmethod reset_instance()[source]
Reset the singleton instance (primarily for testing).
- Return type:
None
- get_icon(name, size=24)[source]
Get an icon by name with caching.
- get_pixmap(name, size=24)[source]
Get a pixmap by icon name.
- get_app_icon()[source]
Get the main application icon.
- Returns:
QIcon for the application window and taskbar.
- Return type:
QIcon
- get_status_icon(*, success)[source]
Get a status icon indicating success or failure.
- Parameters:
success (bool) – True for success icon, False for error icon.
- Returns:
Appropriate status icon.
- Return type:
QIcon
- get_status_pixmap(*, success, size=16)[source]
Get a status pixmap indicating success or failure.
- clear_cache()[source]
Clear all cached icons and pixmaps.
- Return type:
None
- preload_icons(names=None)[source]
Preload icons into cache for faster access.
- static list_available_icons()[source]
List all available icon names.
- class JavaScriptSyntaxHighlighter[source]
Bases:
_ThemedSyntaxHighlighterSyntax highlighter for JavaScript code.
Highlights JavaScript/Frida script keywords, functions, strings, numbers, and comments.
- Variables:
- KEYWORDS: ClassVar[tuple[str, ...]] = ('async', 'await', 'break', 'case', 'catch', 'class', 'const', 'continue', 'debugger', 'default', 'delete', 'do', 'else', 'export', 'extends', 'finally', 'for', 'function', 'if', 'import', 'in', 'instanceof', 'let', 'new', 'of', 'return', 'static', 'super', 'switch', 'this', 'throw', 'try', 'typeof', 'var', 'void', 'while', 'with', 'yield', 'true', 'false', 'null', 'undefined')
- FRIDA_GLOBALS: ClassVar[tuple[str, ...]] = ('Process', 'Module', 'Memory', 'Interceptor', 'NativeFunction', 'NativeCallback', 'NativePointer', 'ptr', 'NULL', 'Thread', 'Stalker', 'DebugSymbol', 'Instruction', 'ObjC', 'Java', 'send', 'recv', 'console', 'rpc', 'Script', 'Kernel', 'Socket')
- __init__(parent=None)[source]
Initialize the JavaScriptSyntaxHighlighter with JavaScript highlighting rules.
- Parameters:
parent (QTextDocument | None) – Parent QTextDocument to highlight.
- Return type:
None
- class MainWindow[source]
Bases:
QMainWindowMain application window for Intellicrack.
Combines chat panel, tool output panel, menus, and toolbar into the main application interface.
- Variables:
message_received – Qt signal for message received.
tool_call_received – Qt signal for tool call received.
tool_result_received – Qt signal for tool result received.
tool_progress_received – Qt signal carrying a running tool call’s
ToolProgress.stream_chunk_received – Qt signal for stream chunk received.
status_update – Qt signal for status update.
bridge_analysis_received – Qt signal for bridge analysis received.
confirmation_requested – Qt signal for tool-confirmation dialog request.
- __init__(config, orchestrator, parent=None)[source]
Initialize the MainWindow with the given configuration and orchestrator.
- Parameters:
config (Config) – Application configuration.
orchestrator (Orchestrator) – AI agent orchestrator.
parent (QWidget | None) – Parent widget.
- Return type:
None
- showEvent(a0)[source]
Wire up the per-monitor screen-change watcher on first show.
The window has no native
QWindowhandle until it is shown for the first time, so thescreenChangedconnection (D28) is deferred to here and made exactly once, guarded by_screen_watcher_connected.- Parameters:
a0 (QShowEvent | None) – The show event.
- Return type:
None
- wire_script_manager(manager, validator=None)[source]
Wire a script manager and validator into the UI and the orchestrator.
The orchestrator is re-pointed at this manager, replacing the fallback
_configure_orchestrator()built during construction. Without that, the two halves of the scripting surface own separate managers over separate directories: the Scripts panel reads and writes the one wired here, while the orchestrator records every tool execution into its own. A script the user authored is then absent from the orchestrator’s registry, sorecord_executionfinds nothing to record against and the run is dropped.
- wire_sandbox_backend(sandbox, manager=None)[source]
Inject an externally constructed sandbox backend into the UI.
Public entry point used by plugins, CLI bootstraps, and the application startup path to register a pre-existing
SandboxBase(and optionalSandboxManager) so the sandbox tab, chat workflow, and AI bridges can drive it. Whenmanageris supplied it replaces the lazy manager on the resultingSandboxBridge; otherwise the bridge constructs its own. The supplied manager (or the bridge’s lazily created one) is also installed on the window assandbox_managerso the sandbox configuration dialog and teardown paths see the same instance the panel sees.- Parameters:
sandbox (SandboxBase) – Pre-constructed
SandboxBaseimplementation.manager (SandboxManager | None) – Optional pre-constructed
SandboxManagerto install on the resulting bridge. WhenNonethe bridge’s lazy manager is used.
- Return type:
None
- set_script_generator(generator)[source]
Persist the application-scoped ScriptGenerator instance.
ScriptGeneratoris the API surface used by AI/tool bridges to prepare prompts for script generation. Holding the instance on the main window keeps it alive for the lifetime of the application and gives downstream panels a stable handle to reach it.- Parameters:
generator (ScriptGenerator) – ScriptGenerator instance constructed during startup.
- Return type:
None
- set_template_manager(manager)[source]
Persist the application-scoped TemplateManager instance.
TemplateManagerowns the on-disk built-in and user template directories underconfig_dir/templates/and surfaces them to the hex editor pattern UI.- Parameters:
manager (TemplateManager) – TemplateManager instance bootstrapped during startup.
- Return type:
None
- set_model_discovery(discovery)[source]
Set the model discovery instance.
- Parameters:
discovery (ModelDiscovery) – ModelDiscovery for provider model enumeration.
- Return type:
None
- property log_viewer_window: LogViewerWindow | None
The live Log Viewer instance, if one has been opened.
- Returns:
- The cached viewer instance, or
Nonewhen it has not been constructed yet (or was disposed after the main window closed).
- Return type:
LogViewerWindow | None
- open_log_viewer()[source]
Open (or raise) the modeless Log Viewer window.
The viewer is constructed lazily on first call and reused on subsequent calls so window state, filters, and history are preserved across re-opens.
- Returns:
The active viewer instance.
- Return type:
- on_open_x64dbg()[source]
Open x64dbg debugger panel.
- Return type:
None
- on_open_cutter()[source]
Open Cutter reverse engineering panel.
- Return type:
None
- closeEvent(a0)[source]
Handle window close event.
Checks for unsaved hex editor changes, persists window state, then shuts down bridges, sandbox, and background workers.
- Parameters:
a0 (QCloseEvent | None) – Close event.
- Return type:
None
- class McpServerConsentDialog[source]
Bases:
QDialogAsks the operator to approve launching one local MCP server.
Emits
decision_made(approved: bool, trusted: bool, blocked: bool)when answered.trustedreports the “trust this server” checkbox, which is a separate and stronger grant than approving the launch: it decides whether the server’s own claims about its tools are believed during classification, so it is off by default and stays off unless the operator ticks it.blockedreports the “never start this server” button: Cancel refuses this launch only, so the next start asks again, while blocking refuses until the operator resets it in MCP Settings.- __init__(config, description, findings, parent=None)[source]
Initialize the consent dialog.
- Parameters:
config (McpServerConfig) – The server about to be launched.
description (str) – The rendered launch description, from
describe_launch().findings (Sequence[DangerousPattern]) – Patterns the consent scan flagged.
parent (QWidget | None) – Parent widget.
- Return type:
None
- classmethod for_config(config, env, parent=None)[source]
Build a dialog by rendering the launch description itself.
- Parameters:
config (McpServerConfig) – The server about to be launched.
env (dict[str, str]) – The fully resolved environment the child would receive.
parent (QWidget | None) – Parent widget.
- Returns:
The dialog, ready to execute.
- Return type:
- Raises:
ValueError – If the server has no launch description, which means it is not a local server and needs no launch consent.
- property approved: bool
Whether the operator approved the launch.
- Returns:
Truewhen approved.- Return type:
- property trusted: bool
Whether the operator also marked the server trusted.
- Returns:
Truewhen the trust checkbox was ticked.- Return type:
- property blocked: bool
Whether the operator asked never to start this server.
- Returns:
Truewhen the never-start button was pressed.- Return type:
- class MessageBubble[source]
Bases:
QFrameA single message bubble in the chat.
Displays a message from the user, assistant, or tool with appropriate styling and formatting.
- Variables:
content_label (intellicrack.ui.chat._MarkdownView) – Markdown-rendering view displaying the message content; updated directly by streaming consumers to append incremental chunks.
- __init__(message, parent=None)[source]
Initialize the MessageBubble with the given message.
- Parameters:
message (Message) – The message to display.
parent (QWidget | None) – Parent widget.
- Return type:
None
- content_label: _MarkdownView
- class ModelSelectionDialog[source]
Bases:
QDialogDialog for selecting a specific model from a provider.
Displays available models with their capabilities and allows the user to select one.
- Variables:
model_selected (ClassVar[PyQt6.QtCore.pyqtSignal]) – Signal emitted when a model is selected.
- __init__(models, current_model=None, provider_name=None, discovery=None, parent=None)[source]
Initialize the ModelSelectionDialog with available models.
- Parameters:
models (list[ModelInfo]) – List of available models to display.
current_model (str | None) – Currently selected model identifier.
provider_name (str | None) – Name of the provider these models belong to.
discovery (ModelDiscovery | None) – Optional model discovery service for filtering and recommendations.
parent (QWidget | None) – Parent widget.
- Return type:
None
- class NewSessionDialog[source]
Bases:
QDialogDialog for creating a new session.
Allows users to specify session name and initial settings.
- __init__(parent=None)[source]
Initialize the NewSessionDialog.
- Parameters:
parent (QWidget | None) – Parent widget.
- Return type:
None
- class PreferencesDialog[source]
Bases:
QDialogPreferences dialog with categorized settings.
Provides a unified interface for configuring all application settings organized into logical categories.
- Variables:
settings_changed – Qt signal for settings changed.
mcp_settings_requested – Qt signal asking the main window to open the MCP server settings. Preferences does not own the MCP client – connections are application-lifetime and live on the background loop – so it forwards the request rather than building a second dialog against state it cannot reach.
- __init__(config, parent=None)[source]
Initialize the PreferencesDialog with application configuration.
- Parameters:
config (Config) – Application configuration instance.
parent (QWidget | None) – Parent widget.
- Return type:
None
- class ProviderConfigDialog[source]
Bases:
QDialogDialog for configuring LLM providers.
Allows users to: - Enter API keys for each provider - Select default models - Configure timeout and retry settings - Test provider connections - Set active provider for analysis - View connection status and model counts
- Variables:
provider_updated (ClassVar[PyQt6.QtCore.pyqtSignal]) – Signal emitted when a provider config changes.
active_provider_changed (ClassVar[PyQt6.QtCore.pyqtSignal]) – Signal emitted when active provider changes.
instances_changed (ClassVar[PyQt6.QtCore.pyqtSignal]) – Signal emitted when a provider instance is added, duplicated, imported or deleted, so every provider selector can be rebuilt.
- __init__(provider_registry=None, model_discovery=None, parent=None)[source]
Initialize the ProviderConfigDialog.
- Parameters:
provider_registry (ProviderRegistry | None) – Optional registry of available LLM providers.
model_discovery (ModelDiscovery | None) – Optional model discovery service for fetching available models.
parent (QWidget | None) – Parent widget.
- Return type:
None
- get_settings()[source]
Get all provider settings.
- refresh_credentials()[source]
Reload credentials from env files and credential store.
- Return type:
None
- create_env_template()[source]
Write or merge a .env credential template, then report the outcome.
Never truncates an existing .env: pre-existing content is backed up to a timestamped
.env.<timestamp>.bakfile and only template variables missing from the file are appended, so any real credential already saved there is preserved.- Return type:
None
- migrate_credentials()[source]
Migrate credentials from env files to credential store.
The store write runs on the persistent bridge event loop via
run_bridge_coroutine_asyncso the keyring/file I/O performed for every provider found in the environment cannot freeze the GUI thread; the credential overview is reloaded once migration completes, whether it succeeded or failed.- Return type:
None
- discover_single_provider(provider_name)[source]
Discover models for a specific provider.
The network round-trip to the provider’s model-listing API runs on the persistent bridge event loop via
run_bridge_coroutine_asyncso it cannot freeze the GUI thread; provider status is refreshed once discovery completes.- Parameters:
provider_name (str) – Name of the provider to discover models for.
- Return type:
None
- class ProviderSettingsWidget[source]
Bases:
QFrameWidget for configuring a single provider.
Displays API key input, model selection, connection settings, and credential source information for a specific LLM provider.
- Variables:
connection_tested (ClassVar[PyQt6.QtCore.pyqtSignal]) – Signal emitted after connection test.
ollama_pull_progress (ClassVar[PyQt6.QtCore.pyqtSignal]) – Signal emitted per
pull_modelstatus chunk with(model_name, status).ollama_pull_finished (ClassVar[PyQt6.QtCore.pyqtSignal]) – Signal emitted on
pull_modelcompletion with(success, model_name, message).generation_lookup_finished (ClassVar[PyQt6.QtCore.pyqtSignal]) – Signal emitted on OpenRouter generation cost lookup completion with
(success, generation_id, message).
- __init__(provider_id, registry=None, config_path=None, credential_detector=None, model_discovery=None, parent=None, *, credential_loader=None)[source]
Initialize the ProviderSettingsWidget for a single provider.
- Parameters:
provider_id (str) – Identifier of the provider to configure.
registry (ProviderRegistry | None) – Optional provider registry for connection management.
config_path (Path | None) – Optional path to the provider configuration file.
credential_detector (CredentialSourceDetector | None) – Optional detector for identifying credential sources.
model_discovery (ModelDiscovery | None) – Optional model discovery service.
parent (QWidget | None) – Parent widget.
credential_loader (CredentialLoader | None) – Loader bound to the
.envfile that API keys and endpoint settings are read from and saved to. Defaults to the global loader for the application’s.envfile.
- Return type:
None
- property is_custom_instance: bool
Whether this widget configures a user-defined instance.
- Returns:
Truefor any provider id that is not one of the eight built-ins, which is exactly the set stored as instance records.- Return type:
- set_api_key(api_key)[source]
Set the API key input text.
- Parameters:
api_key (str) – The API key value to set.
- Return type:
None
- get_settings()[source]
Get current settings as a dictionary.
- save_settings()[source]
Save current settings: preferences to
providers.json, credentials and endpoints to.env.Every provider keeps its
providers.jsonsection whether or not it has an API key, so its enabled flag, timeout, model and device options survive. The API key, base URL and organization are persisted only in.env, which startup reads.- Return type:
None
- get_provider_device_info()[source]
Get device info for local transformer providers.
Attempts to use the registered provider instance from the registry before falling back to creating a new provider.
- pull_ollama_model(model_name)[source]
Pull an Ollama model, streaming progress to the status label.
Executes
OllamaProvider.pull_model— an async generator yielding server-sent status lines — on the persistent bridge event loop viarun_bridge_coroutine_async. Each status chunk is forwarded to the Qt main thread through theollama_pull_progresssignal, and the terminal outcome viaollama_pull_finished.- Parameters:
model_name (str) – Name of the model to pull.
- Return type:
None
- get_openrouter_generation(generation_id)[source]
Look up OpenRouter generation cost info for cost tracking.
The network round-trip is dispatched on the persistent bridge event loop via
run_bridge_coroutine_asyncso it cannot freeze the GUI thread; the outcome is delivered through thegeneration_lookup_finishedsignal.- Parameters:
generation_id (str) – The generation ID to look up.
- Return type:
None
- class PythonSyntaxHighlighter[source]
Bases:
_ThemedSyntaxHighlighterSyntax highlighter for Python code.
Highlights Python keywords, built-ins, strings, numbers, and comments in Python scripts.
- Variables:
- KEYWORDS: ClassVar[tuple[str, ...]] = ('False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield')
- BUILTINS: ClassVar[tuple[str, ...]] = ('abs', 'all', 'any', 'bin', 'bool', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip')
- __init__(parent=None)[source]
Initialize the PythonSyntaxHighlighter with Python highlighting rules.
- Parameters:
parent (QTextDocument | None) – Parent QTextDocument to highlight.
- Return type:
None
- class SandboxConfigDialog[source]
Bases:
QDialogDialog for configuring Windows Sandbox.
Allows users to configure sandbox isolation settings, resource limits, network access, and shared folders.
- Variables:
- CONFIG_DIR: ClassVar[Path] = PosixPath('/home/docs/checkouts/readthedocs.org/user_builds/intellicrack/checkouts/latest/.intellicrack')
- CONFIG_FILE: ClassVar[Path] = PosixPath('/home/docs/checkouts/readthedocs.org/user_builds/intellicrack/checkouts/latest/.intellicrack/sandbox.json')
- __init__(sandbox_manager=None, parent=None)[source]
Initialize the SandboxConfigDialog with an optional sandbox manager.
- Parameters:
sandbox_manager (SandboxManager | None) – Sandbox manager for creating and controlling sandbox instances.
parent (QWidget | None) – Parent widget.
- Return type:
None
- closeEvent(a0)[source]
Cancel any in-flight sandbox test before the dialog closes.
- Parameters:
a0 (QCloseEvent | None) – The close event.
- Return type:
None
- reject()[source]
Cancel any in-flight sandbox test before rejecting the dialog.
- Return type:
None
- get_settings()[source]
Get current settings as a dictionary.
- class SandboxMonitorWidget[source]
Bases:
QFrameWidget for monitoring active sandbox sessions.
Displays information about running sandbox instances and allows control over them.
- Variables:
sandbox_stopped (ClassVar[PyQt6.QtCore.pyqtSignal]) – Signal emitted when sandbox is stopped.
- __init__(sandbox_manager=None, parent=None)[source]
Initialize the SandboxMonitorWidget with an optional sandbox manager.
- Parameters:
sandbox_manager (SandboxManager | None) – Sandbox manager instance for monitoring.
parent (QWidget | None) – Parent widget.
- Return type:
None
- set_running(*, is_running, binary_name='', pid=None)[source]
Update the running state display.
- class SessionManagerDialog[source]
Bases:
QDialogDialog for managing analysis sessions.
Allows users to: - View list of saved sessions - Load previous sessions - Save current session - Delete old sessions - Export/import sessions
- Variables:
session_loaded (ClassVar[PyQt6.QtCore.pyqtSignal]) – Signal emitted when a session is loaded.
session_deleted (ClassVar[PyQt6.QtCore.pyqtSignal]) – Signal emitted when a session is deleted.
SESSIONS_DIR (ClassVar[Path]) – Directory where serialized session files are stored.
- SESSIONS_DIR: ClassVar[Path] = PosixPath('/home/docs/checkouts/readthedocs.org/user_builds/intellicrack/checkouts/latest/.intellicrack/sessions')
- __init__(session_manager=None, current_session_id=None, parent=None, current_session=None)[source]
Initialize the SessionManagerDialog with session state.
- Parameters:
session_manager (SessionManager | None) – Session manager for loading and saving sessions.
current_session_id (str | None) – ID of the currently active session. When omitted but
current_sessionis supplied, this is derived fromcurrent_session.idso the active-session-protection guard and the bold row highlighting always agree with the session actually wired into the Tags panel.parent (QWidget | None) – Parent widget.
current_session (Session | None) – Currently active in-memory
Sessioninstance, when known. When supplied, the tag chips widget is wired directly to this session so add/remove operations mutate the live session object.
- Return type:
None
- classmethod from_orchestrator(orchestrator, parent=None)[source]
Build a dialog wired to
orchestrator’s live session manager and active session.Reads the
SessionManagerand activeSessionofforchestratorso callers do not need to reach into orchestrator internals themselves. This keeps the dialog backed by the same SQLite-backedSessionStorethe rest of the application uses instead of silently falling back to the on-disk sidecar store, and ensures the active-session-protection guard and the tags editor are wired to the true active session rather than being permanently disabled.- Parameters:
orchestrator (Orchestrator) – Orchestrator instance whose session manager and active session should be used to construct the dialog.
parent (QWidget | None) – Parent widget.
- Returns:
Dialog instance wired to
orchestrator’s live session manager and active session.- Return type:
- final class SplashScreen[source]
Bases:
QSplashScreenCustom splash screen with animated gradient, glow effects, and pipeline indicator.
Displays the Intellicrack splash image during application startup with real-time progress updates, animated visual effects, and a multi-phase pipeline loading indicator.
- Variables:
progress_updated – Qt signal emitted on progress change with (value, message).
- __init__(version='')[source]
Initialize the SplashScreen with the given version string.
- Parameters:
version (str) – Application version string to display.
- Return type:
None
- static compute_dpi_scale()[source]
Compute DPI scale factor from the primary screen.
- Returns:
DPI scale factor (defaults to 1.0 if unavailable).
- Return type:
- static load_splash_pixmap(width, height, dpi_scale)[source]
Load the splash screen image or create fallback.
- static create_fallback_pixmap(width, height, dpi_scale)[source]
Create a fallback splash screen pixmap.
- show_animated()[source]
Show the splash screen with a fade-in animation and start visual effects.
- Return type:
None
- finish_animated(window)[source]
Finish the splash screen with a fade-out animation.
- Parameters:
window (QWidget) – Main window to show after fade-out completes.
- Return type:
None
- mark_stage_failed(stage_index)[source]
Mark a pipeline stage as failed.
- Parameters:
stage_index (int) – Index of the stage to mark (0-7).
- Return type:
None
- set_progress(value, message='')[source]
Update the progress bar and status message.
- paintEvent(a0)[source]
Render all splash screen visual layers.
- Parameters:
a0 (QPaintEvent | None) – Paint event from Qt.
- Return type:
None
- resizeEvent(a0)[source]
Handle resize events to adjust the overlay geometry.
- Parameters:
a0 (QResizeEvent | None) – Resize event from Qt.
- Return type:
None
- property status_label: QLabel
Hidden status label widget retained for backward compatibility.
The status text is painted by
paintEvent(); this label keeps the same text for callers that read it and is never shown.- Returns:
The hidden status label widget (retained for backward compatibility).
- Return type:
QLabel
- property dpi_scale: float
DPI scale factor used for this splash screen.
- Returns:
DPI scale factor used for this splash screen.
- Return type:
- class ThemeManager[source]
Bases:
objectSingleton theme manager for application styling.
Manages theme loading, switching, and application-wide stylesheet management.
- __init__()[source]
Initialize the ThemeManager instance.
- Return type:
None
- classmethod get_instance()[source]
Get the singleton instance of ThemeManager.
- Returns:
The ThemeManager singleton instance.
- Return type:
- classmethod reset_instance()[source]
Reset the singleton instance (primarily for testing).
- Return type:
None
- release()[source]
Release live OS color-scheme tracking held by this manager.
Disconnects the
colorSchemeChangedsubscription created for the"system"theme. Safe to call when no subscription is active.- Return type:
None
- property theme_changed: pyqtBoundSignal
Signal emitted with the resolved theme name on every theme change.
Connect to this to refresh widgets that cannot be styled purely through the application stylesheet (custom-painted views, cached icon colors, syntax highlighters). The payload is the resolved theme name (
THEME_DARKorTHEME_LIGHT), never"system".- Returns:
The bound
theme_changedsignal.- Return type:
pyqtBoundSignal
- classmethod detect_system_theme()[source]
Detect the operating system’s active light/dark preference.
Prefers Qt’s cross-platform
QStyleHints.colorScheme(), which on Windows tracks the system app color mode. Falls back to a direct Windows registry read and finally toDEFAULT_THEME.- Returns:
THEME_LIGHTorTHEME_DARK.- Return type:
- classmethod resolve_theme(theme)[source]
Resolve a requested theme name to a concrete theme.
- apply_theme(theme='dark')[source]
Apply a theme to the application.
- repolish_if_stale(widget)[source]
Repolish a chrome widget if it predates the current styled generation.
Called from
_LazyChromeRepolishFilterwhen a previously hidden chrome widget is shown. A widget already tagged with the current generation (because it was visible and eagerly repolished during the most recentapply_theme, or already lazily repolished on an earlier Show within the same generation) is left untouched.- Parameters:
widget (QWidget) – The chrome widget that was just shown.
- Return type:
None
- get_stylesheet(theme)[source]
Get the stylesheet for a theme.
- toggle_theme()[source]
Toggle between light and dark within the current theme family.
Flips
dark<->lightand the restyleddark2<->light2, so a user who selected a restyled variant stays in that family instead of dropping back to the base themes.- Returns:
The new theme name.
- Return type:
- property current_theme: str
The resolved theme name currently rendered.
- Returns:
The concrete theme being displayed (
THEME_DARKorTHEME_LIGHT), never"system".- Return type:
- property requested_theme: str
The theme the user requested.
- Returns:
The requested theme name, which may be
"system"when the theme follows the OS preference.- Return type:
- is_dark_theme()[source]
Check if current theme is dark.
- Returns:
True if dark theme is active.
- Return type:
- get_analysis_colors(theme=None)[source]
Get the general semantic colors and disassembly token colors of a theme.
- get_hex_editor_colors(theme=None)[source]
Get the colors the hex editor grid, minimap and color modes paint with.
- Parameters:
theme (str | None) – Theme name, or
Nonefor the theme currently rendered.- Returns:
Colors for every hex editor role.
- Return type:
- get_chart_colors(theme=None)[source]
Get the colors of the entropy graph, byte histogram and digram heat map.
- Parameters:
theme (str | None) – Theme name, or
Nonefor the theme currently rendered.- Returns:
Colors for every chart role.
- Return type:
- get_graph_colors(theme=None)[source]
Get the colors of the control-flow graph view.
- Parameters:
theme (str | None) – Theme name, or
Nonefor the theme currently rendered.- Returns:
Colors for every graph role.
- Return type:
- get_stack_colors(theme=None)[source]
Get the text colors of the call-stack table.
- Parameters:
theme (str | None) – Theme name, or
Nonefor the theme currently rendered.- Returns:
Colors for every stack-table role.
- Return type:
- get_credential_source_colors(theme=None)[source]
Get the colors that say where a provider credential comes from.
- Parameters:
theme (str | None) – Theme name, or
Nonefor the theme currently rendered.- Returns:
Colors for every credential-source role.
- Return type:
- get_hex_mark_colors(theme=None)[source]
Get the default colors of marks the hex editor stores in a document.
- Parameters:
theme (str | None) – Theme name, or
Nonefor the theme currently rendered.- Returns:
Default
#RRGGBBstrings for every kind of mark.- Return type:
- static get_splash_colors()[source]
Get the colors of the startup splash screen.
The splash always renders on its own dark background, so these are the dark theme’s entries whatever theme is active. It needs no
ThemeManagerinstance and no applied theme, so the splash can call it before the application is styled.- Returns:
Colors for every splash role.
- Return type:
- static contrasting_text_color(background)[source]
Return black or white, whichever reads better on a solid background.
- Parameters:
background (QColor) – Solid color the text is painted over.
- Returns:
Black for light backgrounds and white for dark ones, chosen by perceived (Rec. 601) relative luminance.
- Return type:
QColor
- clear_cache()[source]
Clear the stylesheet cache.
- Return type:
None
- class ToolConfigDialog[source]
Bases:
QDialogDialog for configuring reverse engineering tools.
Allows users to: - Configure tool installation paths - Enable/disable specific tools - Set startup timeouts - Install missing tools - Test tool connections
- Variables:
tool_updated (PyQt6.QtCore.pyqtSignal) – Signal emitted when a tool config changes.
- __init__(tool_registry=None, tools_directory=None, parent=None)[source]
Initialize the ToolConfigDialog.
- Parameters:
tool_registry (ToolRegistry | None) – Optional registry of available analysis tools.
tools_directory (Path | None) – Optional base directory for tool installations.
parent (QWidget | None) – Parent widget.
- Return type:
None
- class ToolConfirmationDialog[source]
Bases:
QDialogDialog for confirming tool calls.
Displays the tool name, function, originating source, and arguments for user review before executing potentially destructive operations.
Emits
decision_made(approved: bool, remember_similar: bool)when the user accepts or rejects the call. Callers may connect to this signal to react to the decision instead of polling properties afterexec().The user chooses how long their answer applies: just this once, for the rest of the session, or always. A session answer is cached at class scope; an
alwaysanswer is written to the installed approval store and survives a restart. Either way the key carries the tool’s generation, so a server that changes its tool definitions invalidates what was remembered about the old ones. Subsequent dialog instances for a remembered key short-circuit viaexec(): they replay the cached decision throughdecision_madeand finish immediately without presenting UI.- __init__(call, parent=None, *, generation=None, source_label=None)[source]
Initialize the ToolConfirmationDialog with the given tool call.
- Parameters:
call (ToolCall) – The tool call to confirm.
parent (QWidget | None) – Parent widget.
generation (str | None) – Digest of the source’s current tool definitions, for an externally-sourced tool.
Nonefor a bridge tool.source_label (str | None) – Human-readable origin of the tool, e.g.
"MCP server 'files'".Nonefor a bridge tool.
- Return type:
None
- classmethod set_approval_store(store)[source]
Install the store that persists
alwaysanswers.Until one is installed the dialog does not offer
alwaysat all, rather than offering it and quietly downgrading the answer to a session-scoped one.- Parameters:
store (ApprovalStore | None) – The store to write persistent answers to, or
Noneto remove the current one.- Return type:
None
- classmethod release_approval_store(store)[source]
Remove an installed store, unless another has replaced it since.
- Parameters:
store (ApprovalStore) – The store its owner is withdrawing.
- Return type:
None
- classmethod remembered_decision(call, generation=None)[source]
Return the remembered decision for
call, if any.The session cache is consulted first, then the persistent store.
- Parameters:
- Returns:
Truefor remembered approval,Falsefor remembered denial, orNonewhen no decision is cached for the(tool_name, function_name, generation)triple.- Return type:
bool | None
- classmethod can_remember_always(generation)[source]
Report whether an answer about a tool may be kept across restarts.
- classmethod session_decisions()[source]
List every answer remembered for the rest of this session.
- classmethod forget_decision(tool_name, function_name, generation)[source]
Forget one remembered answer, for this session and for good.
- classmethod clear_remembered_decisions()[source]
Clear all session-remembered decisions.
Intended for end-of-session teardown and test isolation. Persistent
alwaysanswers are left alone, which is what makes them persistent.- Return type:
None
- classmethod clear_decisions_for_source(namespace)[source]
Forget every decision remembered for one tool source.
Called when a source’s tool definitions change, so an answer given about the previous definitions is never replayed against the new ones.
- Parameters:
namespace (str) – The source’s tool namespace, e.g.
mcp-files.- Return type:
None
- classmethod store_decision(call, *, approved, generation=None, scope=ApprovalScope.SESSION)[source]
Persist a remembered decision for the requested duration.
- Parameters:
call (ToolCall) – The tool call whose decision is being remembered.
approved (bool) –
Trueif the user approved,Falseif denied.generation (str | None) – Digest of the source’s current tool definitions, or
Nonefor a bridge tool.scope (ApprovalScope) – How long the answer applies.
ONCErecords nothing.
- Return type:
None
- property approved: bool
Whether the call was approved.
- Returns:
True if user approved, False otherwise.
- Return type:
- property remember_similar: bool
Whether to remember the choice for similar operations.
- Returns:
True if the chosen scope outlives this single call.
- Return type:
- property scope: ApprovalScope
How long the user’s answer applies.
- Returns:
The scope the user selected.
- Return type:
- exec()[source]
Show the dialog modally, honoring any remembered decision.
If the user previously approved or denied this
(tool_name, function_name, generation)triple with a scope that outlives the call, no UI is shown: the cached decision is replayed via thedecision_madesignal and the dialog finishes immediately with the same accepted/rejected result code as a normal execution.- Returns:
QDialog.DialogCode.Acceptedon approval, otherwiseQDialog.DialogCode.Rejected.- Return type:
- set_remember_similar(*, value)[source]
Set the session-scope option programmatically.
- Parameters:
value (bool) –
Trueto remember the answer for this session,Falseto apply it to this call only.- Return type:
None
- set_scope(scope)[source]
Select an approval scope programmatically.
- Parameters:
scope (ApprovalScope) – The scope to select.
ALWAYSis ignored when no persistent store is installed, or for a bridge tool whose answer nothing could ever invalidate.- Return type:
None
- make_decision(*, approved)[source]
Apply an approve/deny decision and emit the corresponding signal.
This is the single entry point used by both the Approve and Deny button slots. It captures the selected scope, persists the answer for that scope, emits
decision_made, and finalises the dialog withaccept()orreject().- Parameters:
approved (bool) –
Truewhen the user approved the call,Falsewhen the user denied it.- Return type:
None
- class ToolOutputPanel[source]
Bases:
_ToolOutputPanelWiringMixinMain tool output panel widget.
Contains tabbed interface for different tool outputs including decompiled code, disassembly, strings, cross-references, embedded external tools, and specialized analysis panels.
Composed from the
_ToolOutputPanelBasecore class together with topical mixin classes that inherit linearly so cross-references resolve through normal MRO. Each mixin groups one surface area so no single class definition exceeds the public method limit.
- class ToolSettingsWidget[source]
Bases:
QFrameWidget for configuring a single tool.
Displays path configuration, enable/disable toggle, and installation options for a specific tool.
- Variables:
status_changed (PyQt6.QtCore.pyqtSignal) – Signal emitted when tool status changes.
- __init__(tool_id, display_name, description, tools_directory, registry=None, config_path=None, parent=None)[source]
Initialize the ToolSettingsWidget for a single tool.
- Parameters:
tool_id (str) – Identifier of the tool.
display_name (str) – Human-readable name for display.
description (str) – Tool description text.
tools_directory (Path) – Base directory for tool installations.
registry (ToolRegistry | None) – Optional tool registry for status queries.
config_path (Path | None) – Optional path to the tool configuration file.
parent (QWidget | None) – Parent widget.
- Return type:
None
- get_settings()[source]
Get current settings as a dictionary.
- save_settings()[source]
Save current settings to config file.
- Return type:
None
- class ToolStatusDialog[source]
Bases:
QDialogDialog showing status and capabilities of all configured tools.
Displays which tools are installed, their connection state, supported capabilities, architectures, and file formats.
- Variables:
TOOL_CAPABILITIES (ClassVar[dict[str, dict[str, Any]]]) – Mapping of tool IDs to their supported features, architectures, and formats.
- TOOL_CAPABILITIES: ClassVar[dict[str, dict[str, Any]]] = {'binary': {'architectures': ['x86', 'x86_64', 'ARM', 'ARM64'], 'formats': ['PE', 'ELF', 'Mach-O', 'Raw'], 'supports_debugging': False, 'supports_decompilation': False, 'supports_dynamic_analysis': False, 'supports_memory_access': False, 'supports_patching': True, 'supports_scripting': False, 'supports_static_analysis': True}, 'cutter': {'architectures': ['x86', 'x86_64', 'ARM', 'ARM64', 'MIPS', 'PPC', 'SPARC'], 'formats': ['PE', 'ELF', 'Mach-O', 'Raw', 'DEX'], 'supports_debugging': False, 'supports_decompilation': True, 'supports_dynamic_analysis': False, 'supports_memory_access': False, 'supports_patching': True, 'supports_scripting': True, 'supports_static_analysis': True}, 'frida': {'architectures': ['x86', 'x86_64', 'ARM', 'ARM64'], 'formats': ['PE', 'ELF', 'Mach-O'], 'supports_debugging': False, 'supports_decompilation': False, 'supports_dynamic_analysis': True, 'supports_memory_access': True, 'supports_patching': False, 'supports_scripting': True, 'supports_static_analysis': False}, 'ghidra': {'architectures': ['x86', 'x86_64', 'ARM', 'ARM64', 'MIPS', 'PPC'], 'formats': ['PE', 'ELF', 'Mach-O', 'Raw'], 'supports_debugging': False, 'supports_decompilation': True, 'supports_dynamic_analysis': False, 'supports_memory_access': False, 'supports_patching': True, 'supports_scripting': True, 'supports_static_analysis': True}, 'process': {'architectures': ['x86', 'x86_64'], 'formats': [], 'supports_debugging': False, 'supports_decompilation': False, 'supports_dynamic_analysis': True, 'supports_memory_access': True, 'supports_patching': False, 'supports_scripting': False, 'supports_static_analysis': False}, 'x64dbg': {'architectures': ['x86', 'x86_64'], 'formats': ['PE'], 'supports_debugging': True, 'supports_decompilation': False, 'supports_dynamic_analysis': True, 'supports_memory_access': True, 'supports_patching': True, 'supports_scripting': True, 'supports_static_analysis': False}}
- __init__(tool_registry=None, parent=None, tool_statuses=None)[source]
Initialize the ToolStatusDialog.
- Parameters:
tool_registry (ToolRegistry | None) – Optional registry of available analysis tools.
parent (QWidget | None) – Parent widget.
tool_statuses (dict[str, ToolStatusEntry] | None) – Optional mapping of tool IDs to pre-fetched
ToolStatusEntrypayloads. When provided, the dialog renders the supplied status snapshot immediately and skips the initial background status-check workers. Subsequent refreshes triggered by explicit user action (e.g. the Refresh button) always re-run the workers.
- Return type:
None
- class ToolTab[source]
Bases:
QFrameA single tool output tab.
Contains a code display area and optional metadata panel for showing tool-specific output.
- __init__(name, language='c', parent=None)[source]
Initialize the ToolTab with a name and language for output display.
- set_content(content)[source]
Set the main content.
- Parameters:
content (str) – Text content to display.
- Return type:
None
- set_info(header, content)[source]
Set the info panel content.
- set_language(language)[source]
Set the syntax highlighting language.
- Parameters:
language (str) – Programming language.
- Return type:
None
- class XRefPanel[source]
Bases:
QFramePanel showing cross-references to/from an address.
Displays incoming and outgoing references for navigation.
- Variables:
xref_selected – Qt signal for xref selected. Declared as
qint64(not the default 32-bit C++int) so that 64-bit virtual addresses are not truncated when emitted.
- __init__(parent=None)[source]
Initialize the XRefPanel.
- Parameters:
parent (QWidget | None) – Parent widget.
- Return type:
None
- format_hex_dump(data, base_address, *, address_prefix='')[source]
Format raw bytes as a 16-byte-per-line hex+ASCII dump.
Each line contains the absolute address followed by up to sixteen hexadecimal byte values and the printable-ASCII representation of that chunk. Bytes outside the
[0x20, 0x7F)printable range are shown as..- Parameters:
- Returns:
The formatted hex dump joined by newlines. Returns an empty string when
datais empty.- Return type:
- get_assets_path()[source]
Get the path to the assets directory.
- Returns:
Path to the assets directory.
- Return type:
Path
- Raises:
AssetNotFoundError – If the assets directory cannot be found.
- get_highlighter_for_language(language, parent=None)[source]
Get the appropriate syntax highlighter for a language.
- Parameters:
language (str) – Language name (c, cpp, asm, python, javascript, frida, hexpat, pattern, hexpattern).
parent (QTextDocument | None) – Parent QTextDocument.
- Returns:
Appropriate highlighter or None if not supported.
- Return type:
QSyntaxHighlighter | None
- get_resource_path(resource_path)[source]
Resolve a resource path relative to the assets directory.
- Parameters:
resource_path (str) – Relative path to the resource within assets directory. Forward slashes are automatically converted to OS-specific separators.
- Returns:
Absolute path to the resource.
- Return type:
Path
Example
>>> path = get_resource_path("icons/status_success.svg") >>> print(path) /path/to/intellicrack/assets/icons/status_success.svg
Submodules
Main application window for Intellicrack. |
|
Chat panel widget for the Intellicrack UI. |
|
Tool confirmation dialog for Intellicrack. |
|
|
Dialog components for Intellicrack UI. |
Shared dialog helpers for Intellicrack UI panels. |
|
Guest process picker dialog for sandbox memory-dump target selection. |
|
Syntax highlighting for code display. |
|
|
Live log viewer package. |
Carries an MCP server's questions from the background loop to the operator. |
|
Settings for third-party Model Context Protocol servers. |
|
Consent dialog shown before a local Model Context Protocol server is started. |
|
Browse a running server's resources and prompts from the chat, and insert them into the message being written. |
|
Dialog answering an MCP server's request for information from the operator. |
|
The Roots tab of MCP Settings: which folders one server is told it may work in. |
|
Assembles the Model Context Protocol client for the running application. |
|
Overflow-aware QToolBar for Intellicrack's main toolbar. |
|
Detachable panel window for floating tool panels. |
|
|
UI panels for Intellicrack analysis displays. |
Preferences dialog for Intellicrack. |
|
Provider configuration dialog for Intellicrack. |
|
|
Resource management modules for Intellicrack UI. |
Sandbox configuration dialog for Intellicrack. |
|
Session manager dialog for Intellicrack. |
|
The tool calls running now, shown beside the conversation with their progress and a way to cancel each one. |
|
Tool configuration dialog for Intellicrack. |
|
Tool output panel widget for the Intellicrack UI. |
|
Win32 window embedding utilities for Intellicrack. |
|
XPU status dialog for the Help menu. |