3 Commits

7 changed files with 193 additions and 58 deletions
+1 -1
View File
@@ -59,7 +59,7 @@ This file tracks all major tracks for the project. Each track has its own detail
12. [x] **Track: Manual Skeleton Context Injection** 12. [x] **Track: Manual Skeleton Context Injection**
*Link: [./tracks/manual_skeleton_injection_20260306/](./tracks/manual_skeleton_injection_20260306/)* *Link: [./tracks/manual_skeleton_injection_20260306/](./tracks/manual_skeleton_injection_20260306/)*
13. [ ] **Track: On-Demand Definition Lookup** 13. [~] **Track: On-Demand Definition Lookup**
*Link: [./tracks/on_demand_def_lookup_20260306/](./tracks/on_demand_def_lookup_20260306/)* *Link: [./tracks/on_demand_def_lookup_20260306/](./tracks/on_demand_def_lookup_20260306/)*
--- ---
@@ -5,8 +5,8 @@
## Phase 1: Symbol Parsing ## Phase 1: Symbol Parsing
Focus: Parse @symbol syntax from user input Focus: Parse @symbol syntax from user input
- [ ] Task 1.1: Initialize MMA Environment - [x] Task 1.1: Initialize MMA Environment
- [ ] Task 1.2: Implement @symbol regex parser - [x] Task 1.2: Implement @symbol regex parser (a0a9d00)
- WHERE: `src/gui_2.py` in `_send_callback()` - WHERE: `src/gui_2.py` in `_send_callback()`
- WHAT: Extract @SymbolName patterns - WHAT: Extract @SymbolName patterns
- HOW: - HOW:
+2 -2
View File
@@ -1,6 +1,6 @@
[ai] [ai]
provider = "gemini_cli" provider = "deepseek"
model = "gemini-2.5-flash-lite" model = "deepseek-chat"
temperature = 0.0 temperature = 0.0
max_tokens = 8192 max_tokens = 8192
history_trunc_limit = 8000 history_trunc_limit = 8000
+152 -52
View File
@@ -44,18 +44,18 @@ Collapsed=0
DockId=0x00000006,0 DockId=0x00000006,0
[Window][Message] [Window][Message]
Pos=2830,1055 Pos=1020,1643
Size=954,371 Size=954,371
Collapsed=0 Collapsed=0
[Window][Response] [Window][Response]
Pos=1744,835 Pos=92,1433
Size=718,484 Size=842,625
Collapsed=0 Collapsed=0
[Window][Tool Calls] [Window][Tool Calls]
Pos=933,1278 Pos=99,730
Size=700,440 Size=762,628
Collapsed=0 Collapsed=0
[Window][Comms History] [Window][Comms History]
@@ -74,7 +74,7 @@ DockId=0xAFC85805,2
[Window][Theme] [Window][Theme]
Pos=0,17 Pos=0,17
Size=32,960 Size=824,980
Collapsed=0 Collapsed=0
DockId=0x00000005,1 DockId=0x00000005,1
@@ -84,14 +84,14 @@ Size=900,700
Collapsed=0 Collapsed=0
[Window][Diagnostics] [Window][Diagnostics]
Pos=829,990 Pos=3167,17
Size=851,210 Size=673,2120
Collapsed=0 Collapsed=0
DockId=0x00000002,0 DockId=0x00000004,2
[Window][Context Hub] [Window][Context Hub]
Pos=0,17 Pos=0,17
Size=32,960 Size=824,980
Collapsed=0 Collapsed=0
DockId=0x00000005,0 DockId=0x00000005,0
@@ -102,26 +102,26 @@ Collapsed=0
DockId=0x0000000D,0 DockId=0x0000000D,0
[Window][Discussion Hub] [Window][Discussion Hub]
Pos=430,17 Pos=1892,17
Size=397,637 Size=1273,2003
Collapsed=0 Collapsed=0
DockId=0x00000013,0 DockId=0x00000013,0
[Window][Operations Hub] [Window][Operations Hub]
Pos=34,17 Pos=826,17
Size=394,637 Size=1064,2003
Collapsed=0 Collapsed=0
DockId=0x00000012,0 DockId=0x00000012,0
[Window][Files & Media] [Window][Files & Media]
Pos=0,979 Pos=0,999
Size=32,221 Size=824,1138
Collapsed=0 Collapsed=0
DockId=0x00000006,1 DockId=0x00000006,1
[Window][AI Settings] [Window][AI Settings]
Pos=0,979 Pos=0,999
Size=32,221 Size=824,1138
Collapsed=0 Collapsed=0
DockId=0x00000006,0 DockId=0x00000006,0
@@ -131,16 +131,16 @@ Size=416,325
Collapsed=0 Collapsed=0
[Window][MMA Dashboard] [Window][MMA Dashboard]
Pos=829,17 Pos=3167,17
Size=851,971 Size=673,2120
Collapsed=0 Collapsed=0
DockId=0x00000001,0 DockId=0x00000004,0
[Window][Log Management] [Window][Log Management]
Pos=829,17 Pos=3167,17
Size=851,971 Size=673,2120
Collapsed=0 Collapsed=0
DockId=0x00000001,1 DockId=0x00000004,1
[Window][Track Proposal] [Window][Track Proposal]
Pos=709,326 Pos=709,326
@@ -148,32 +148,32 @@ Size=262,209
Collapsed=0 Collapsed=0
[Window][Tier 1: Strategy] [Window][Tier 1: Strategy]
Pos=34,656 Pos=826,2022
Size=165,544 Size=1082,115
Collapsed=0 Collapsed=0
DockId=0x00000014,0 DockId=0x00000014,0
[Window][Tier 2: Tech Lead] [Window][Tier 2: Tech Lead]
Pos=201,656 Pos=1910,2022
Size=228,544 Size=330,115
Collapsed=0 Collapsed=0
DockId=0x00000016,0 DockId=0x00000016,0
[Window][Tier 4: QA] [Window][Tier 4: QA]
Pos=696,656 Pos=2666,2022
Size=131,544 Size=499,115
Collapsed=0 Collapsed=0
DockId=0x00000019,0 DockId=0x00000019,0
[Window][Tier 3: Workers] [Window][Tier 3: Workers]
Pos=431,656 Pos=2242,2022
Size=263,544 Size=422,115
Collapsed=0 Collapsed=0
DockId=0x00000018,0 DockId=0x00000018,0
[Window][Approve PowerShell Command] [Window][Approve PowerShell Command]
Pos=649,435 Pos=649,435
Size=381,329 Size=616,429
Collapsed=0 Collapsed=0
[Window][Last Script Output] [Window][Last Script Output]
@@ -201,6 +201,101 @@ Pos=60,60
Size=900,700 Size=900,700
Collapsed=0 Collapsed=0
[Window][Inject File]
Pos=1612,748
Size=616,641
Collapsed=0
[Window][StatusBar]
Pos=0,2113
Size=3840,32
Collapsed=0
[Window][Text Viewer - message]
Pos=566,1226
Size=900,700
Collapsed=0
[Window][Text Viewer - Entry #1]
Pos=82,861
Size=900,700
Collapsed=0
[Window][Text Viewer - text]
Pos=60,60
Size=900,700
Collapsed=0
[Window][Text Viewer - system]
Pos=377,705
Size=900,340
Collapsed=0
[Window][Text Viewer - Entry #15]
Pos=60,60
Size=900,700
Collapsed=0
[Window][Text Viewer - py_get_definition]
Pos=60,60
Size=900,700
Collapsed=0
[Window][Text Viewer - tool_calls]
Pos=60,60
Size=900,700
Collapsed=0
[Window][Text Viewer - Tool Script #1]
Pos=1227,252
Size=900,700
Collapsed=0
[Window][Text Viewer - Tool Script #2]
Pos=1667,661
Size=900,585
Collapsed=0
[Window][Text Viewer - Tool Script #5]
Pos=60,60
Size=900,700
Collapsed=0
[Window][Text Viewer - Tool Script #6]
Pos=60,60
Size=900,700
Collapsed=0
[Window][Text Viewer - Tool Script #8]
Pos=60,60
Size=900,700
Collapsed=0
[Window][Text Viewer - Tool Script #9]
Pos=1162,534
Size=900,700
Collapsed=0
[Window][Text Viewer - Tool Script #10]
Pos=1230,368
Size=900,700
Collapsed=0
[Window][Text Viewer - Tool Script #3]
Pos=60,60
Size=900,700
Collapsed=0
[Window][Text Viewer - Tool Call #1 Details]
Pos=2318,1220
Size=900,700
Collapsed=0
[Window][Text Viewer - Tool Call #10 Details]
Pos=1369,568
Size=900,700
Collapsed=1
[Table][0xFB6E3870,4] [Table][0xFB6E3870,4]
RefScale=13 RefScale=13
Column 0 Width=80 Column 0 Width=80
@@ -254,31 +349,36 @@ Column 1 Width=60
Column 2 Weight=1.0000 Column 2 Weight=1.0000
Column 3 Width=100 Column 3 Width=100
[Table][0x2C515046,4]
RefScale=13
Column 0 Width=57
Column 1 Weight=1.0000
Column 2 Width=150
Column 3 Width=40
[Docking][Data] [Docking][Data]
DockNode ID=0x00000008 Pos=3125,170 Size=593,1157 Split=Y DockNode ID=0x00000008 Pos=3125,170 Size=593,1157 Split=Y
DockNode ID=0x00000009 Parent=0x00000008 SizeRef=1029,147 Selected=0x0469CA7A DockNode ID=0x00000009 Parent=0x00000008 SizeRef=1029,147 Selected=0x0469CA7A
DockNode ID=0x0000000A Parent=0x00000008 SizeRef=1029,145 Selected=0xDF822E02 DockNode ID=0x0000000A Parent=0x00000008 SizeRef=1029,145 Selected=0xDF822E02
DockSpace ID=0xAFC85805 Window=0x079D3A04 Pos=0,17 Size=1680,1183 Split=X DockSpace ID=0xAFC85805 Window=0x079D3A04 Pos=0,17 Size=3840,2120 Split=X
DockNode ID=0x00000003 Parent=0xAFC85805 SizeRef=2987,1183 Split=X DockNode ID=0x00000003 Parent=0xAFC85805 SizeRef=3165,1183 Split=X
DockNode ID=0x0000000B Parent=0x00000003 SizeRef=404,1186 Split=X Selected=0xF4139CA2 DockNode ID=0x0000000B Parent=0x00000003 SizeRef=404,1186 Split=X Selected=0xF4139CA2
DockNode ID=0x00000007 Parent=0x0000000B SizeRef=517,858 Split=Y Selected=0x8CA2375C DockNode ID=0x00000007 Parent=0x0000000B SizeRef=824,858 Split=Y Selected=0x8CA2375C
DockNode ID=0x00000005 Parent=0x00000007 SizeRef=295,960 Selected=0xF4139CA2 DockNode ID=0x00000005 Parent=0x00000007 SizeRef=295,980 Selected=0xF4139CA2
DockNode ID=0x00000006 Parent=0x00000007 SizeRef=295,1158 CentralNode=1 Selected=0x7BD57D6A DockNode ID=0x00000006 Parent=0x00000007 SizeRef=295,1138 CentralNode=1 Selected=0x7BD57D6A
DockNode ID=0x0000000E Parent=0x0000000B SizeRef=2468,858 Split=Y Selected=0x418C7449 DockNode ID=0x0000000E Parent=0x0000000B SizeRef=2339,858 Split=Y Selected=0x418C7449
DockNode ID=0x00000010 Parent=0x0000000E SizeRef=868,1142 Split=X Selected=0x418C7449 DockNode ID=0x00000010 Parent=0x0000000E SizeRef=868,2003 Split=X Selected=0x418C7449
DockNode ID=0x00000012 Parent=0x00000010 SizeRef=1229,402 Selected=0x418C7449 DockNode ID=0x00000012 Parent=0x00000010 SizeRef=1064,402 Selected=0x418C7449
DockNode ID=0x00000013 Parent=0x00000010 SizeRef=1237,402 Selected=0x6F2B5B04 DockNode ID=0x00000013 Parent=0x00000010 SizeRef=1273,402 Selected=0x6F2B5B04
DockNode ID=0x00000011 Parent=0x0000000E SizeRef=868,976 Split=X Selected=0x5CDB7A4B DockNode ID=0x00000011 Parent=0x0000000E SizeRef=868,115 Split=X Selected=0x5CDB7A4B
DockNode ID=0x00000014 Parent=0x00000011 SizeRef=513,837 Selected=0xBB346584 DockNode ID=0x00000014 Parent=0x00000011 SizeRef=1082,837 Selected=0xBB346584
DockNode ID=0x00000015 Parent=0x00000011 SizeRef=1953,837 Split=X Selected=0x5CDB7A4B DockNode ID=0x00000015 Parent=0x00000011 SizeRef=1255,837 Split=X Selected=0x5CDB7A4B
DockNode ID=0x00000016 Parent=0x00000015 SizeRef=714,837 Selected=0x390E7942 DockNode ID=0x00000016 Parent=0x00000015 SizeRef=330,837 Selected=0x390E7942
DockNode ID=0x00000017 Parent=0x00000015 SizeRef=1237,837 Split=X Selected=0x655BC6E9 DockNode ID=0x00000017 Parent=0x00000015 SizeRef=923,837 Split=X Selected=0x655BC6E9
DockNode ID=0x00000018 Parent=0x00000017 SizeRef=824,874 Selected=0x655BC6E9 DockNode ID=0x00000018 Parent=0x00000017 SizeRef=422,874 Selected=0x655BC6E9
DockNode ID=0x00000019 Parent=0x00000017 SizeRef=411,874 Selected=0x5CDB7A4B DockNode ID=0x00000019 Parent=0x00000017 SizeRef=499,874 Selected=0x5CDB7A4B
DockNode ID=0x0000000D Parent=0x00000003 SizeRef=435,1186 Selected=0x363E93D6 DockNode ID=0x0000000D Parent=0x00000003 SizeRef=435,1186 Selected=0x363E93D6
DockNode ID=0x00000004 Parent=0xAFC85805 SizeRef=851,1183 Split=Y Selected=0x3AEC3498 DockNode ID=0x00000004 Parent=0xAFC85805 SizeRef=673,1183 Selected=0xB4CBF21A
DockNode ID=0x00000001 Parent=0x00000004 SizeRef=851,1741 Selected=0x3AEC3498
DockNode ID=0x00000002 Parent=0x00000004 SizeRef=851,377 Selected=0xB4CBF21A
;;;<<<Layout_655921752_Default>>>;;; ;;;<<<Layout_655921752_Default>>>;;;
;;;<<<HelloImGui_Misc>>>;;; ;;;<<<HelloImGui_Misc>>>;;;
+1 -1
View File
@@ -8,5 +8,5 @@ active = "main"
[discussions.main] [discussions.main]
git_commit = "" git_commit = ""
last_updated = "2026-03-07T01:19:03" last_updated = "2026-03-07T10:58:13"
history = [] history = []
+8
View File
@@ -2,6 +2,7 @@ import threading
import time import time
import sys import sys
import os import os
import re
from typing import Any, List, Dict, Optional, Callable from typing import Any, List, Dict, Optional, Callable
from pathlib import Path from pathlib import Path
import json import json
@@ -38,6 +39,13 @@ def hide_tk_root() -> Tk:
root.wm_attributes("-topmost", True) root.wm_attributes("-topmost", True)
return root return root
def parse_symbols(text: str) -> list[str]:
"""
Finds all occurrences of '@SymbolName' in text and returns SymbolName.
SymbolName can be a function, class, or method (e.g. @MyClass, @my_func, @MyClass.my_method).
"""
return re.findall(r"@([a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)*)", text)
class GenerateRequest(BaseModel): class GenerateRequest(BaseModel):
prompt: str prompt: str
auto_add_history: bool = True auto_add_history: bool = True
+27
View File
@@ -0,0 +1,27 @@
import pytest
from src.app_controller import parse_symbols
def test_parse_symbols_basic():
text = "Check @MyClass and @my_func."
symbols = parse_symbols(text)
assert symbols == ["MyClass", "my_func"]
def test_parse_symbols_methods():
text = "Calling @MyClass.my_method and @AnotherClass.method_name."
symbols = parse_symbols(text)
assert symbols == ["MyClass.my_method", "AnotherClass.method_name"]
def test_parse_symbols_no_symbols():
text = "This string has no symbols."
symbols = parse_symbols(text)
assert symbols == []
def test_parse_symbols_mixed():
text = "Mixed text: @Class1, @func_2, and some text @MyClass.method."
symbols = parse_symbols(text)
assert symbols == ["Class1", "func_2", "MyClass.method"]
def test_parse_symbols_edge_cases():
text = "@LeadingSymbol and @SymbolAtEnd"
symbols = parse_symbols(text)
assert symbols == ["LeadingSymbol", "SymbolAtEnd"]