Skip to content
Open

Dev #924

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
176 commits
Select commit Hold shift + click to select a range
79adf63
chore: remove test_tempfile.rs
JegernOUTT Feb 24, 2026
9689224
feat(openai): add auto summary to reasoning effort parameter
JegernOUTT Feb 24, 2026
8099a07
feat(providers): add dynamic model catalog fetching and startup refresh
JegernOUTT Feb 27, 2026
072de40
feat(chat)!: add queued message editing and priority toggle
JegernOUTT Feb 27, 2026
70ecaa1
feat(modes)!: add rich content rendering support (mermaid, svg, html)
JegernOUTT Feb 27, 2026
923d5fd
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Feb 27, 2026
c0dadb5
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Feb 27, 2026
0cc6d61
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Feb 27, 2026
020828b
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Feb 27, 2026
e97ad07
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Feb 27, 2026
84507db
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Feb 27, 2026
fa010c8
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Feb 28, 2026
edf7bcd
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Feb 28, 2026
91f1679
Resolved T-9 merge conflict: combine trust gating + caching in hooks_…
JegernOUTT Feb 28, 2026
04082a9
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Feb 28, 2026
176089f
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Feb 28, 2026
bcdc4f6
Resolved merge conflicts for T-11: combined ext_management + plugins …
JegernOUTT Feb 28, 2026
71366da
Fix ext_management.rs for InstalledPlugin variant after T-11 merge
JegernOUTT Feb 28, 2026
ddd121a
Resolved merge conflicts for T-13: added skills_status module alongsi…
JegernOUTT Feb 28, 2026
1f2bf46
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Feb 28, 2026
4666b59
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Feb 28, 2026
b5da465
Resolved T-17 merge conflict: keep itemId field in ExtensionsPage
JegernOUTT Feb 28, 2026
67dec7c
Remove accidentally committed node_modules symlink
JegernOUTT Feb 28, 2026
73b3a8b
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Feb 28, 2026
22fc56c
Remove node_modules symlink from T-15 merge
JegernOUTT Feb 28, 2026
6966438
Resolved T-16 merge: combined editors + marketplace panel in Extensio…
JegernOUTT Mar 1, 2026
c2ea797
Remove node_modules symlink
JegernOUTT Mar 1, 2026
1f68990
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 1, 2026
e001421
Remove node_modules symlink
JegernOUTT Mar 1, 2026
7093e28
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 1, 2026
7cca603
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 1, 2026
19084e2
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 1, 2026
6fa5a9f
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 1, 2026
c454879
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 1, 2026
ca985d3
Fix Extensions layout: remove flex chain through Radix, use simple sc…
JegernOUTT Mar 1, 2026
9e0e806
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 1, 2026
ac7490d
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 1, 2026
7c610f4
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 1, 2026
e2c869b
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 1, 2026
81ba3e0
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 1, 2026
5802072
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 1, 2026
afa2d26
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 1, 2026
a81a937
Resolved merge conflicts: combine T-16 (dynamic refresh) and T-18 (he…
JegernOUTT Mar 1, 2026
f3884ce
Fix merge conflicts from T-18 health monitoring and T-6 HTTP transport
JegernOUTT Mar 1, 2026
5dd65fe
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
3805311
Resolve T-13B merge conflict: combine imports from T-11 and T-13B
JegernOUTT Mar 2, 2026
0e5bfca
Resolve T-10 merge conflict: add both mcp_auth and mcp_sampling modules
JegernOUTT Mar 2, 2026
83cc14e
Resolve T-7 merge conflict: add both mcp_server_info and mcp_marketpl…
JegernOUTT Mar 2, 2026
d8b91e3
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
ee1c438
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
ba01113
Resolve T-8 merge conflict: add both mcpServerInfo and mcpMarketplace…
JegernOUTT Mar 2, 2026
ca78247
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
a1d3eed
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
34f4209
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
6f9b802
Fix test failures: f_extra type flexibility and auth default test
JegernOUTT Mar 2, 2026
de0a034
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
5de4dd4
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
d291937
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
e8b2b4d
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
ad25f3b
Resolved conflicts from T-24 merge: combine MCPConnectionStatus + red…
JegernOUTT Mar 2, 2026
e972a65
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
4521fbc
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
6de5754
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
5186cd8
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
4924aae
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
0e04560
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
f79c0e0
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
91aae70
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
3bf928c
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
a3223d8
Resolved conflict in mcp_marketplace.rs: combine no-clobber write (T-…
JegernOUTT Mar 2, 2026
df4b3e5
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
3c3150d
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
33e22fd
Fix unused warnings from MCP upgrade changes (T-29)
JegernOUTT Mar 2, 2026
180859f
Remove node_modules circular symlink from git tracking
JegernOUTT Mar 2, 2026
dcd4226
fix(chrome): include full description in tool metadata
JegernOUTT Mar 2, 2026
ad4c54c
refactor(tools): auto-approve remaining tool calls not explicitly den…
JegernOUTT Mar 2, 2026
86d7582
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
767f573
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
1cc5e3e
Resolved T-33 merge conflict: keep both auto-name and marketplace sou…
JegernOUTT Mar 2, 2026
427f059
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
ff5d9c7
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
b88f64a
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
ab76a18
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
7b9144e
Resolved T-34 merge conflict: keep both auto-name and marketplace sou…
JegernOUTT Mar 2, 2026
efac8a2
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
95466bf
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
62da4a0
Fix unused variable warning in tools.rs
JegernOUTT Mar 2, 2026
51b1995
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
e154aab
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
eb225fe
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
02b3fd1
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
24caad8
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
2ccb102
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
fe29687
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
c1a10d8
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
e631bff
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
e8c89c3
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
e0d5545
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
d6cf3fd
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
84cc5f7
Fix extract_name_from_url country-code TLD heuristic (.io not treated…
JegernOUTT Mar 2, 2026
1ceef95
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
3ade8f3
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
66e6503
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
13844bc
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
40094cf
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
9a4f78e
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
5acae61
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
84be3c1
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
dcdfcf3
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
8f8b89c
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
82857f1
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
2a45748
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
a398daa
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
bdf7c96
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
ead3afd
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
85a0321
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
b013bc7
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
fdde4df
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
438cbb6
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
de84113
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
e13ca08
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
8d68cfd
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
33cd8f0
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
bb33a39
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
c5f9e9c
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
ca75179
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
14f1fcd
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
af21558
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
ce513e2
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
02a3323
D-2: Enhanced deactivate_skill with report + message compaction
JegernOUTT Mar 2, 2026
51921ce
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
a904267
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
36443fa
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
11111d5
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
2d6e821
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
e8671bf
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
a18879f
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
6cd7491
Resolved conflicts: merge R-2 tests with R-1 tests in mcp_auth.rs
JegernOUTT Mar 2, 2026
9ecb9c9
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
dde3d76
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
a768f56
Squash merge agent work from refact/task/620a23a7-1d1c-41fa-b7e5-de06…
JegernOUTT Mar 2, 2026
6c638fe
Squash merge agent work from refact/task/3748ef21-d13f-4cc4-9679-a614…
JegernOUTT Mar 2, 2026
f45abb4
fix: resolve all eslint errors in GUI (array types, no-null assertion…
JegernOUTT Mar 2, 2026
cbb9658
fix: skip leading assistant messages in trajectory memo extraction
JegernOUTT Mar 2, 2026
b25d4d3
fix: preserve prefilled virtual URI content in postprocessing
JegernOUTT Mar 2, 2026
af35113
style: fix line wrapping and formatting across multiple components
JegernOUTT Mar 2, 2026
f708534
feat(dashboard): add responsive dashboard replacing sidebar
JegernOUTT Mar 3, 2026
89c1447
feat(setup): replace project_summary with comprehensive setup mode
JegernOUTT Mar 3, 2026
4bc0122
"reasoning_summary_part.added" and "reasoning_summary_part.done" life…
JegernOUTT Mar 4, 2026
ac8635d
refactor(setup): remove project_summary.yaml dependency
JegernOUTT Mar 4, 2026
75b6ddb
Merge remote-tracking branch 'origin/dev' into dev
JegernOUTT Mar 4, 2026
273069a
refactor: fix OpenAI adapter and tool handling edge cases
JegernOUTT Mar 4, 2026
09cf6f8
feat(dashboard): add tree expansion support to recent chats
JegernOUTT Mar 4, 2026
da00f38
feat(dashboard): add tree expansion support to recent chats
JegernOUTT Mar 4, 2026
01505b7
feat(dashboard): add tree expansion support to recent chats
JegernOUTT Mar 4, 2026
c2c1306
feat(dashboard): add tree expansion support to recent chats
JegernOUTT Mar 4, 2026
92788d0
feat(dashboard): add tree expansion support to recent chats
JegernOUTT Mar 4, 2026
7390c0e
refactor(dashboard): count only active providers and reorder sections
JegernOUTT Mar 4, 2026
82f4e2b
refactor(dashboard): improve TasksSection new task button UX
JegernOUTT Mar 4, 2026
b8272ac
refactor(dashboard): add MiniDonut charts and improve StatsStrip layout
JegernOUTT Mar 4, 2026
ec99aea
refactor(mcp): upgrade to MCP vNext API + skill activation UX
JegernOUTT Mar 4, 2026
435c98f
refactor(threads): add shutdown flag checks to long-running loops
JegernOUTT Mar 4, 2026
784694f
fix: import MCPAuthStatus at top level in mcp_server_info.rs
JegernOUTT Mar 4, 2026
8231376
feat(chat): add chat compression and mode handoff tools
JegernOUTT Mar 4, 2026
7926b76
refactor(mcp): initialize missing fields and fix URL detection
JegernOUTT Mar 4, 2026
1ddb015
chore(release): bump version to 7.1.0
JegernOUTT Mar 4, 2026
340557f
refactor(mcp): add Windows compatibility for make_executable
JegernOUTT Mar 5, 2026
3ddd556
refactor(mcp): add Windows compatibility for make_executable and path…
JegernOUTT Mar 5, 2026
a3ececc
ci(cross-compilation): add swap space and limit jobs for LTO memory u…
JegernOUTT Mar 5, 2026
c0fe48c
ci: improve swap space setup for cross-compilation
JegernOUTT Mar 5, 2026
5abcbb0
refactor(skills): use case-sensitive SKILL.md detection
JegernOUTT Mar 5, 2026
58fbd82
refactor: track skill activation tool call id for precise compaction
JegernOUTT Mar 5, 2026
0bc26b2
refactor(chat): remove message linearization
JegernOUTT Mar 5, 2026
d7bb5e4
refactor(llm): integrate context messages into all adapters with shar…
JegernOUTT Mar 6, 2026
0f34925
feat(tools): add MCP lazy loading with search/call proxy tools
JegernOUTT Mar 6, 2026
64c451e
refactor(tools): integrate mcp_call with confirmation flow and improv…
JegernOUTT Mar 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
14 changes: 14 additions & 0 deletions .github/workflows/agent_engine_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,17 @@ jobs:
if: startsWith(matrix.os, 'macos')
run: brew install llvm

- name: Add swap space (Linux cross-compilation needs extra RAM for LTO)
if: matrix.cross
run: |
sudo swapoff /swapfile 2>/dev/null || true
sudo rm -f /swapfile
sudo dd if=/dev/zero of=/swapfile bs=128M count=64
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
free -h

- name: setup cross-rs
if: matrix.cross
run: |
Expand Down Expand Up @@ -134,6 +145,9 @@ jobs:

- name: build linux-like artifacts
if: matrix.cross
env:
# Limit parallel codegen/link jobs to reduce peak RAM (LTO + whisper-rs is very memory-hungry)
CARGO_BUILD_JOBS: 2
run: |
CROSS_NO_WARNINGS=0 cross test --release --target ${{ matrix.target }} || exit 1
CROSS_NO_WARNINGS=0 cross build --release --target ${{ matrix.target }} || exit 1
Expand Down
14 changes: 14 additions & 0 deletions .github/workflows/agent_engine_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,17 @@ jobs:
if: startsWith(matrix.os, 'macos')
run: brew install llvm

- name: Add swap space (Linux cross-compilation needs extra RAM for LTO)
if: matrix.cross
run: |
sudo swapoff /swapfile 2>/dev/null || true
sudo rm -f /swapfile
sudo dd if=/dev/zero of=/swapfile bs=128M count=64
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
free -h

- name: setup cross-rs
if: matrix.cross
run: |
Expand Down Expand Up @@ -121,6 +132,9 @@ jobs:

- name: build linux-like artifacts
if: matrix.cross
env:
# Limit parallel codegen/link jobs to reduce peak RAM (LTO + whisper-rs is very memory-hungry)
CARGO_BUILD_JOBS: 2
run: |
CROSS_NO_WARNINGS=0 cross test --release --target ${{ matrix.target }} || exit 1
CROSS_NO_WARNINGS=0 cross build --release --target ${{ matrix.target }} || exit 1
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/agent_gui_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ defaults:
run:
working-directory: refact-agent/gui

env:
NODE_OPTIONS: --max-old-space-size=8192

jobs:
build:
runs-on: ubuntu-latest
Expand Down
146 changes: 146 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
# Refact Monorepo

AI coding assistant: Rust engine (LSP/HTTP server) + React chat UI + IDE plugins (VSCode, JetBrains) + cloud backend.

## Repository Map

| Subproject | Path | Language | AGENTS.md |
|---|---|---|---|
| Agent Engine | `refact-agent/engine/` | Rust 2021, async/tokio | ✅ `refact-agent/engine/AGENTS.md` |
| Agent GUI | `refact-agent/gui/` | TypeScript/React 18 | ✅ `refact-agent/gui/AGENTS.md` |
| VSCode Extension | `extra/refact-vscode/` | TypeScript | — |
| JetBrains Plugin | `extra/refact-intellij/` | Kotlin, Gradle | — |
| Cloud Backend | `extra/web_v1_backend/` | Python 3.10, FastAPI | — |
| Documentation | `docs/` | Astro (static site) | — |

Sub-project `AGENTS.md` files contain detailed architecture, patterns, and checklists. Read them before working in those directories.

## Verification Commands

**Always verify your changes compile and pass tests before finishing.** Both engine and GUI builds are heavy — plan accordingly.

### Engine (`refact-agent/engine/`)

```bash
cd refact-agent/engine

# Fast check — type/borrow errors only (~1-3 min, no codegen)
cargo check

# Unit + doc tests (~3-8 min first build, ~1-3 min incremental)
cargo test --lib && cargo test --doc

# Full release build (~10-20 min cold, ~2-5 min incremental)
# LTO + opt-level=z + strip — very slow from scratch
cargo build --release
```

⚠️ **First build compiles ~85 crates + 7 tree-sitter parsers + SQLite. Expect 10-20 minutes cold.** Incremental builds are much faster. CI runs `cargo test --release` on 7 platform targets.

Python integration tests (`tests/*.py`) require a running `refact-lsp` instance — don't run them as a quick check.

### GUI (`refact-agent/gui/`)

```bash
cd refact-agent/gui

# All CI checks (~1-3 min total)
npm run test # vitest (unit, excludes integration)
npm run format:check # prettier — no code changes
npm run types # tsc --noEmit
npm run lint # eslint, 0 warnings allowed

# Full build (~30-60s)
npm run build
```

⚠️ **ESLint is strict-type-checked with `--max-warnings 0`.** Any new warning fails CI. Run `npm run lint` before committing TypeScript changes.

### Minimum pre-commit checks

If you changed **only engine Rust code**: `cd refact-agent/engine && cargo check && cargo test --lib`
If you changed **only GUI TypeScript**: `cd refact-agent/gui && npm run types && npm run lint && npm run test`
If you changed **both**: run both sets.

## CI Quality Gates (GitHub Actions)

| Workflow | Trigger paths | Checks |
|---|---|---|
| `agent_engine_build` | `refact-agent/engine/**` | `cargo test --release` on 7 targets (Win/Linux/macOS × x86_64/aarch64) |
| `agent_gui_build` | `refact-agent/gui/**` | `npm test` → `format:check` → `types` → `lint` → `build` (Node LTS + latest) |
| `server_build` | `refact-server/**` | Docker multi-arch build |
| `docs_build` | `docs/**` | Docker build + push |

## Architecture Overview

```
┌─────────────────┐ postMessage ┌──────────────────┐
│ IDE Plugins │◄────────────────────►│ Agent GUI │
│ (VSCode/JB) │ │ (React webview)│
└────────┬────────┘ └────────┬─────────┘
│ LSP (stdin/stdout) │ HTTP + SSE
│ or HTTP │
└──────────────┬─────────────────────────┘
┌─────────────────────┐
│ Agent Engine │
│ (refact-lsp) │
│ HTTP :8001 + LSP │
└──────┬──────────────┘
┌───────────┼───────────────┐
▼ ▼ ▼
LLM APIs Local indexes Integrations
(15+ providers) (AST, VecDB) (GitHub, MCP, shell, etc.)
```

- **Engine ↔ GUI**: HTTP REST + SSE streaming (`/v1/chats/subscribe`). GUI sends commands via `POST /v1/chats/{id}/commands`, receives state via SSE events with monotonic `seq` numbers.
- **Engine ↔ IDE**: LSP protocol (tower-lsp) for completions/code-lens, plus HTTP for chat and tools.
- **IDE ↔ GUI**: `postMessage` bridge (VSCode `acquireVsCodeApi`, JetBrains `postIntellijMessage`). Events: file context, theme, tool calls.

## Cross-Project Conventions

### Rust (Engine)

- **Formatting**: `rustfmt.toml` — 100 char lines, 4-space indent, Unix newlines, `reorder_imports = false`.
- **Async discipline**: All shared state through `GlobalContext` (`Arc<ARwLock<>>`). Drop read guards before `.await`. Never hold `gcx.read()` across await points.
- **Shutdown**: Check `shutdown_flag.load(Ordering::Relaxed)` in loops. Use `select!` with shutdown arm for channel receivers. Never `loop { sleep }` without a shutdown check. Store `JoinHandle` for spawned tasks — no fire-and-forget `tokio::spawn`.
- **Lock ordering**: Always acquire `gcx` ARwLock before inner mutexes. Reversing order risks deadlocks in background threads.
- **Error handling**: `Result<>` with contextual errors. `.ok_or_else()` over `.unwrap()` for runtime data.

### TypeScript/React (GUI)

- **Linting**: ESLint strict-type-checked, 0 warnings. Prettier enforced in CI.
- **State**: Redux Toolkit + RTK Query. Always use selectors from `features/Chat/Thread/selectors.ts`. Never access `state.chat.threads[id]` directly.
- **Styling**: Radix UI primitives + CSS Modules + design tokens. No inline styles, no hardcoded colors, no magic numbers.
- **File naming**: `PascalCase.tsx` (components), `useCamelCase.ts` (hooks), `camelCase.ts` (utils), `PascalCase.module.css`.
- **No `any` types.**

### Kotlin (JetBrains Plugin)

- Java 17 target. Gradle build with IntelliJ Platform Plugin. Communicates with engine via HTTP + JCEF webview for chat.

### Python (Backend)

- Python 3.10+. FastAPI + Uvicorn. Type hints expected.

## Project Config Locations

| Scope | Path | Contents |
|---|---|---|
| User config | `~/.config/refact/` | `default_privacy.yaml`, `providers.d/*.yaml` |
| Cache | `~/.cache/refact/` | Shadow repos, logs, telemetry, integrations |
| Project | `.refact/` | `trajectories/`, `knowledge/`, `tasks/`, `integrations.d/` |
| System prompts | `refact-agent/engine/yaml_configs/defaults/` | Modes, subagents, toolbox commands |

### AGENTS.md Scoping Rules

AGENTS.md files can appear at any directory level. Scope = entire directory tree rooted at that folder. More-deeply-nested files take precedence on conflicts. Direct user instructions override all AGENTS.md content.

## Common Pitfalls

- **Shutdown hangs**: `loop {}` without `shutdown_flag`, bare `.recv().await`/`.changed().await` without `select!` + timeout, `tokio::spawn` without stored handle.
- **Lock inversion**: `gcx.read().await` → inner mutex is safe order. Reversing (inner mutex → gcx) causes deadlocks under load.
- **SSE sequence gaps**: Every event has monotonic `seq`. Gap → client reconnects for fresh snapshot. Never skip or reorder events.
- **Thinking block signatures**: Anthropic thinking blocks with cryptographic signatures must be preserved byte-for-byte. No JSON rebuilding, no field reordering.
- **GUI state**: Chat/history state is ephemeral (not persisted). Only `tour` and `userSurvey` survive Redux persist.
10 changes: 5 additions & 5 deletions refact-agent/engine/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ lto = true

[package]
name = "refact-lsp"
version = "7.0.2"
version = "7.1.0"
edition = "2021"
build = "build.rs"

Expand Down Expand Up @@ -60,8 +60,7 @@ process-wrap = { version = "8.0.2", features = ["tokio1"] }
rand = "0.8.5"
rayon = "1.8.0"
regex = "1.9.5"
reqwest = { version = "0.12", default-features = false, features = ["json", "stream", "rustls-tls-webpki-roots", "charset", "http2"] }
reqwest-eventsource = "0.6.0"
reqwest = { version = "0.13", default-features = false, features = ["json", "form", "stream", "rustls", "charset", "http2"] }
eventsource-stream = "0.2"
resvg = "0.44.0"
ropey = "1.6"
Expand Down Expand Up @@ -112,8 +111,9 @@ petgraph = "0.6"
zerocopy = "0.8.14"

# There you can use a local copy
# rmcp = { path = "../../../rust-sdk/crates/rmcp/", "features" = ["client", "transport-child-process", "transport-sse"] }
rmcp = { git = "https://github.com/smallcloudai/rust-sdk", branch = "main", features = ["client", "transport-child-process", "transport-sse-client", "reqwest"] }
# rmcp = { path = "../../../rust-sdk/crates/rmcp/", features = ["client", "transport-child-process", "transport-streamable-http-client-reqwest", "auth"] }
rmcp = { git = "https://github.com/modelcontextprotocol/rust-sdk", branch = "main", features = ["client", "transport-child-process", "transport-streamable-http-client-reqwest", "auth"] }
oauth2 = "5.0"
thiserror = "2.0.12"
dirs = "5.0"
whisper-rs = { version = "0.12", optional = true }
Expand Down
25 changes: 19 additions & 6 deletions refact-agent/engine/src/ast/ast_indexer_thread.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,16 @@ async fn ast_indexer_thread(
)
};
let ast_max_files = ast_index.ast_max_files; // cannot change
let shutdown_flag = match gcx_weak.upgrade() {
Some(gcx) => gcx.read().await.shutdown_flag.clone(),
None => return,
};

loop {
if shutdown_flag.load(std::sync::atomic::Ordering::SeqCst) {
info!("AST indexer: shutdown detected, stopping");
return;
}
let (cpath, left_todo_count) = {
let mut ast_service_locked = ast_service.lock().await;
let mut cpath;
Expand Down Expand Up @@ -305,12 +313,17 @@ async fn ast_indexer_thread(
reported_connect_stats = true;
}

tokio::time::timeout(
tokio::time::Duration::from_secs(10),
ast_sleeping_point.notified(),
)
.await
.ok();
tokio::select! {
_ = tokio::time::timeout(tokio::time::Duration::from_secs(10), ast_sleeping_point.notified()) => {}
_ = async {
while !shutdown_flag.load(std::sync::atomic::Ordering::SeqCst) {
tokio::time::sleep(tokio::time::Duration::from_millis(200)).await;
}
} => {
info!("AST indexer: shutdown detected, stopping");
return;
}
}
}
}

Expand Down
1 change: 0 additions & 1 deletion refact-agent/engine/src/call_validation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -429,7 +429,6 @@ pub fn canonical_mode_id(mode: &str) -> Result<String, String> {
"EXPLORE" => "explore".to_string(),
"AGENT" => "agent".to_string(),
"CONFIGURE" | "CONFIGURATOR" => "configurator".to_string(),
"PROJECT_SUMMARY" => "project_summary".to_string(),
"PLAN" => "plan".to_string(),
"TASK_PLANNER" => "task_planner".to_string(),
"TASK_AGENT" => "task_agent".to_string(),
Expand Down
Loading