Skip to content
This repository was archived by the owner on May 30, 2026. It is now read-only.
Merged

Dev #924

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
623 commits
Select commit Hold shift + click to select a range
ca54cec
feat(oauth): add device-flow support for GitHub Copilot OAuth
JegernOUTT Apr 29, 2026
e3772c6
feat: add shared markdown, tool mapping, and conversion utilities
JegernOUTT Apr 29, 2026
d4b92d8
fix(gui): correct formatting and lint issues in tests and components
JegernOUTT Apr 29, 2026
36db694
feat(competitor_import): add Claude Code importer module
JegernOUTT Apr 29, 2026
799799f
Resolved conflicts from T-5 OpenCode importer
JegernOUTT Apr 30, 2026
6229305
Card T-4: Engine: propagate ExecutionScope through chat tools, subcha…
JegernOUTT Apr 30, 2026
0f3b945
Card T-14: Final provider/runtime hardening after full provider overhaul
JegernOUTT Apr 30, 2026
a59c414
Card T-10: GUI: worktree API, thread state, and SSE typing
JegernOUTT Apr 30, 2026
fe80374
Resolved conflicts from T-7 Continue importer
JegernOUTT Apr 30, 2026
a438cc3
style: apply rustfmt formatting and fix indentation
JegernOUTT Apr 30, 2026
fd9bb8b
feat(import): add Kilo Code competitor importer module
JegernOUTT Apr 30, 2026
34029be
fix(gui): resolve lint errors in WorktreesApi tests and types
JegernOUTT Apr 30, 2026
d8ddb6a
refactor(buddy): enhance speech bubble and world rendering visuals
JegernOUTT Apr 30, 2026
28db8f1
refactor(engine): establish worktree service as source of truth for t…
JegernOUTT Apr 30, 2026
ef4565d
refactor(engine): enforce worktree scope in write tools and shell
JegernOUTT Apr 30, 2026
2d9e4a4
feat: wire global/project startup integration, cache invalidation, an…
JegernOUTT Apr 30, 2026
856dd78
refactor(history): hide subagent chats as bubbles instead of tree rows
JegernOUTT Apr 30, 2026
fd3b968
refactor(engine): enforce worktree scope in read/search/tree tools
JegernOUTT Apr 30, 2026
bf834ef
test(competitor_import): add comprehensive tests and conflict detection
JegernOUTT Apr 30, 2026
23e675d
Card T-11: GUI worktree control UX
JegernOUTT Apr 30, 2026
b5a0e85
Fix GUI chat subscription thread metadata typing
JegernOUTT Apr 30, 2026
bc08410
refactor(buddy): replace bubble DOM refs with state-driven rendering
JegernOUTT Apr 30, 2026
8022c12
refactor(openai-codex): separate model eligibility by subscription scope
JegernOUTT Apr 30, 2026
4e22f4e
feat(github-copilot): harden endpoint detection and add request heade…
JegernOUTT Apr 30, 2026
e47a0ee
refactor(buddy): improve speech bubble sizing and runtime event prior…
JegernOUTT Apr 30, 2026
d7c2c65
refactor(competitor_import): harden path containment and skip unneces…
JegernOUTT Apr 30, 2026
21f22cb
refactor(buddy): redesign speech bubbles and enhance world visuals
JegernOUTT Apr 30, 2026
f3df87d
test: add parity tests for Chinese provider cache metrics and reasoning
JegernOUTT Apr 30, 2026
eeb1e48
feat(worktrees): add merge, conflict detection, and cleanup service
JegernOUTT Apr 30, 2026
3b80fa5
Fix unused worktree merge import
JegernOUTT Apr 30, 2026
f862554
feat(engine): make checkpoints and rollback worktree-aware
JegernOUTT Apr 30, 2026
7186654
feat(buddy): add competitor import introspection to pulse
JegernOUTT Apr 30, 2026
8f06378
Fix worktree merge test import
JegernOUTT Apr 30, 2026
1892620
refactor(buddy): improve long text handling in speech bubbles
JegernOUTT Apr 30, 2026
9ca4726
refactor(competitor_import): sanitize import report issue paths and r…
JegernOUTT Apr 30, 2026
816f975
docs: add Refact Cloud shutdown announcement
JegernOUTT Apr 30, 2026
ff5ede2
feat(tasks): integrate worktree diff, merge, conflict, and delete int…
JegernOUTT Apr 30, 2026
b90ece8
fix(competitor-import): sanitize report fields and fix pulse source t…
JegernOUTT Apr 30, 2026
cb5cfd5
fix(competitor-import): reject symlinked roots and deduplicate stagin…
JegernOUTT Apr 30, 2026
9625fae
feat(ollama): harden model discovery with /api/show metadata
JegernOUTT Apr 30, 2026
b9e3069
fix(competitor-import): harden startup ordering, tool aliases, and fi…
JegernOUTT Apr 30, 2026
8998a3a
fix(providers): disable cache-control by default for local providers
JegernOUTT Apr 30, 2026
ce422cb
feat(worktrees): add worktree introspection, hygiene observer, and cl…
JegernOUTT Apr 30, 2026
958d5d9
refactor(cli): remove legacy CLI implementation
JegernOUTT Apr 30, 2026
838c7f5
legacy: removed unsupported refact server
JegernOUTT Apr 30, 2026
7c89329
Card T-1: Rewrite tracked README files for current Refact positioning
JegernOUTT Apr 30, 2026
3bb468c
Card T-2: Refresh docs site landing, onboarding, installation, provid…
JegernOUTT Apr 30, 2026
406b9b1
Resolved conflicts from T-3 docs refresh
JegernOUTT Apr 30, 2026
9ad1248
Card T-22: Add native Ollama /api/chat adapter and runtime option parity
JegernOUTT Apr 30, 2026
0db2f50
Card T-4: Remove remaining refact-server references and server CI wor…
JegernOUTT Apr 30, 2026
338e0c1
Card T-16: Exclude competitor import internals from workspace indexing
JegernOUTT Apr 30, 2026
227a189
Card T-17: Honor privacy rules during competitor import scanning
JegernOUTT Apr 30, 2026
ef52f7b
style(engine): run rustfmt on worktree code
JegernOUTT Apr 30, 2026
1e148b0
docs: overhaul README with new structure and features
JegernOUTT Apr 30, 2026
d3ab15f
feat(gui): polish worktree menu ui
JegernOUTT Apr 30, 2026
35c9f35
Resolve T-13 hardening merge conflicts
JegernOUTT Apr 30, 2026
2003329
fix(competitor-import): cap scans and keep candidates on manifest errors
JegernOUTT Apr 30, 2026
c5d0ae0
feat(competitor-import): centralize project import and use schema 2
JegernOUTT Apr 30, 2026
a090c34
Apply worktree formatting fixes
JegernOUTT Apr 30, 2026
3b85bfa
Apply engine formatting fix
JegernOUTT Apr 30, 2026
20086b7
fix(custom): handle extra_headers merge correctly
JegernOUTT Apr 30, 2026
3b5c775
fix(ollama): harden ndjson and tool-call edge cases
JegernOUTT Apr 30, 2026
e17a6d3
feat(competitor-import): report stale generated imports
JegernOUTT Apr 30, 2026
5380129
fix(custom): propagate extra headers through request flow
JegernOUTT Apr 30, 2026
2386b9b
fix(ollama): include tool call ids in history
JegernOUTT Apr 30, 2026
9307973
fix(importer): regen version and stale handling
JegernOUTT Apr 30, 2026
c9c9b3b
fix(lsp): ignore import internals in document events
JegernOUTT Apr 30, 2026
d277191
fix(worktrees): harden worktree attach and merge safety
JegernOUTT Apr 30, 2026
8eec185
Apply competitor import formatting
JegernOUTT Apr 30, 2026
2b93481
feat(gui): add provider SVG icons
Apr 30, 2026
cf64e75
fix(import): snapshot candidates with symlink-safe staging
Apr 30, 2026
6236b43
refactor(worktrees): tighten metadata validation and cleanup
Apr 30, 2026
5eaacf8
feat(pricing): add context_over_200k pricing tier for long contexts
JegernOUTT Apr 30, 2026
a24fad5
refactor(competitor-import): bound hashing and scans
Apr 30, 2026
900dff1
test(integration): update DeleteChat test to use MSW handlers
JegernOUTT Apr 30, 2026
9bc3d6e
refactor(git): remove unused git operations functions
JegernOUTT Apr 30, 2026
76d9632
ci(cross-compilation): use ThinLTO and fewer jobs for ARM64 to fix RA…
JegernOUTT Apr 30, 2026
ee792be
feat(provider-models): distinguish custom model editing from capabili…
JegernOUTT Apr 30, 2026
7e74c55
feat(model-caps): add supports_cache_control and structured output ca…
JegernOUTT Apr 30, 2026
3d751cc
refactor(git): replace git init -b with separate init and checkout
JegernOUTT Apr 30, 2026
276e528
style(provider-models): remove unnecessary line breaks in filter count
JegernOUTT Apr 30, 2026
8729592
refactor(models): replace hardcoded reasoning logic with JSON config
JegernOUTT Apr 30, 2026
ae5ef6f
feat(buddy): add home notification snoozing and seen tracking
JegernOUTT Apr 30, 2026
e5e74a7
refactor(worktrees): improve branch handling and worktree robustness
JegernOUTT Apr 30, 2026
c26dd89
refactor(worktrees): replace datalist with custom branch picker dropdown
JegernOUTT Apr 30, 2026
4281977
refactor(buddy): improve seen notifications handling
JegernOUTT Apr 30, 2026
ee0e518
chore(ci): remove Python wheel build steps from agent engine workflows
JegernOUTT May 1, 2026
0f95c39
fix(engine): normalize test paths with dunce
JegernOUTT May 1, 2026
7199ba7
Merge worktree refact/chat/ed17a5b3-d57
May 1, 2026
495ee2f
feat(worktrees): add merge tool and UI polish
JegernOUTT May 1, 2026
9984975
Merge worktree refact/chat/c02d3ffc-3c5
May 1, 2026
4e5e989
fix(engine): disable generated merge commit messages
JegernOUTT May 1, 2026
3bfc1b1
fix(worktrees): prevent race on newly created attachments
JegernOUTT May 1, 2026
a0780ee
fix(scope): normalize paths with dunce simplification
JegernOUTT May 1, 2026
e62537d
fix(worktrees): default delete_after_merge to true
May 1, 2026
85b1088
feat(gui): disable chat controls in buddy chats
May 1, 2026
c734f30
feat(worktrees): default merges to delete worktree
May 1, 2026
6b64994
fix(worktrees): clarify aborted merge conflict handling
May 1, 2026
de680d9
fix(subchat): hide planner child chats from listings
May 1, 2026
620967b
feat(gui): show worktree badges in history
May 1, 2026
17fc860
fix(git): simplify canonicalized paths with dunce
JegernOUTT May 1, 2026
d9e2d75
refactor(knowledge): delete inactive docs instead of archiving
May 1, 2026
f70e31b
fix(providers): preserve full-height layout in forms
May 1, 2026
ece8209
refactor(engine): use dynamic provider identity strings
May 1, 2026
4722560
chore(gui): replace emoji icons with radix icons
May 1, 2026
78ff6a7
refactor(providers): add provider instance wrapper
May 1, 2026
28af388
feat(gui): add thread storage tuning options
JegernOUTT May 1, 2026
9ce1b00
chore(gui): merge worktree updates
May 1, 2026
31b79e8
refactor(worktrees): extract shared branch icon
JegernOUTT May 1, 2026
16778e3
refactor(gui): remove task workspace header
May 1, 2026
9c679ea
refactor(tasks): remove task header and update branch icon
May 1, 2026
a2d38b0
feat(providers): load multiple provider config files
May 1, 2026
7a7aad9
Merge branch 'refact/chat/90e801b9-654' into dev
JegernOUTT May 1, 2026
6944028
feat(tasks): add agent chat navigation from board
May 1, 2026
26a7e73
fix(competitor_import): harden staging path creation
May 1, 2026
25d15ab
chore(gui): merge worktree changes into dev
May 1, 2026
d6f6d3d
chore(tasks): merge worktree updates into dev
May 1, 2026
dc09ab8
feat(caps): support provider instances and prefixed models
May 1, 2026
8bb147c
refactor(gui): simplify task workspace headers
May 1, 2026
9e4cf69
refactor(chat): preserve thread scope in set_params
May 1, 2026
82f0ac7
refactor(tasks): streamline task workspace headers
May 1, 2026
d2189ae
refactor(tasks): consolidate task workspace headers
May 1, 2026
c1d3777
feat(agent): add apply_patch tool to modes
JegernOUTT May 1, 2026
273555e
refactor(tasks): add resizable workspace chrome
May 1, 2026
67ec028
feat(engine): add provider instance CRUD
May 1, 2026
a041136
feat(engine): add apply_patch to default modes
JegernOUTT May 1, 2026
ff76836
refactor(engine): simplify path component handling
May 1, 2026
f7bb08c
refactor(providers): make oauth flows instance-aware
May 1, 2026
d514585
feat(gui): support provider instances in UI
May 1, 2026
3d006c3
feat(gui): add provider instance workflow
May 1, 2026
c4153d2
fix(engine): canonicalize existing directories
May 1, 2026
9ba6ea4
feat(modes): add openai agent config
JegernOUTT May 1, 2026
0dc08db
feat(chat): add retryable network errors
May 1, 2026
9eb39bf
feat(providers): use instance routes for provider endpoints
May 1, 2026
647fd1c
Fix OAuth refresh tracking tests
JegernOUTT May 1, 2026
c82244a
fix(gui): guard error message grouping loop
May 1, 2026
8d10d81
fix(providers): harden oauth config writes and ids
May 1, 2026
cf86603
fix(engine): normalize canonical paths with dunce
JegernOUTT May 1, 2026
c2b3eaf
fix(worktrees): use git cli to add worktree
JegernOUTT May 1, 2026
5443ffb
feat(buddy): add dismissal-aware humor and speech flow
JegernOUTT May 1, 2026
9667bbc
refactor(tools): include skill dir in activation payload
JegernOUTT May 1, 2026
cb3c924
feat(buddy): add waypoint roaming to world scene
May 1, 2026
cc4ed0f
refactor(buddy): replace roam targeting with scene poses
May 1, 2026
5a5e0b8
feat(buddy): add autonomous chat framework
May 1, 2026
145cb93
feat(buddy): add showcase state machine and scene
May 1, 2026
7d33546
feat(buddy): harden showcase trigger selection
May 1, 2026
fccb6be
feat(gui): add showcase overlays and poses
May 1, 2026
09f2756
fix(buddy): harden autonomous chat handling
May 1, 2026
b2bf9a1
fix(buddy): polish showcase triggers and reduced motion
May 1, 2026
2c6a9e5
feat(buddy): add local-signal autonomous chat jobs
May 1, 2026
e3f21ee
fix(buddy): harden showcase speech and drawing logic
May 1, 2026
98c81b9
Merge autonomous Buddy memory and model jobs
JegernOUTT May 1, 2026
44f4238
feat(buddy): harden showcase cooldowns and rendering
May 1, 2026
58167a6
fix(buddy): harden runtime showcase and draw fallback
May 1, 2026
5f9ab9a
fix(buddy): stabilize autonomous signals and bounded reads
May 1, 2026
c47f1b1
fix(buddy): suppress repeat runtime showcases and idle churn
May 1, 2026
f0998a9
fix(buddy): ignore dismissed and expired triggers
May 1, 2026
ed461d7
fix(stats): dedupe recent events and harden parsing
May 1, 2026
ca78ba0
fix(buddy): ignore hidden runtime events in world state
May 2, 2026
611a471
fix(competitor_import): cap text and skill scans
May 2, 2026
1cee9d1
fix(engine): make directory replacement rollback-safe
May 2, 2026
e08e070
fix(competitor_import): redact paths in import logs
May 2, 2026
259bc29
fix(buddy): address autonomous review findings
May 2, 2026
30c86e6
feat(toolbar): add browser chat and theme actions
May 2, 2026
0f1530e
chore(buddy): clean up autonomous review issues
May 2, 2026
a494361
refactor(buddy): centralize autonomous workflow metadata
May 2, 2026
5126d3a
style(toolbar): wrap events bus destructuring line
JegernOUTT May 2, 2026
70b987b
feat(knowledge): normalize and namespace memory tags
May 2, 2026
7386cdc
feat(buddy): add semantic world atmosphere
May 2, 2026
37c8848
fix(chat): handle handoff and memory-path edge cases
May 2, 2026
6d433bd
fix(buddy): discover git repos and refine orphan confidence
May 2, 2026
2beea45
fix(buddy): refine storm/provider semantics
May 2, 2026
7a33213
refactor(task-agent): extract planner notification helper
May 2, 2026
895897d
feat(buddy): add memory lifecycle schema
May 2, 2026
717c7d5
fix(buddy): scan staged secrets and bound untracked stats
May 2, 2026
0dd268d
feat(deep-research): make subagent autonomous
May 2, 2026
36f2f7c
fix(buddy): harden world model pulse matching
May 2, 2026
e3ecd4e
fix(buddy): harden world model timing and storm handling
May 2, 2026
d425d77
fix(yaml-configs): honor most specific model overrides
May 2, 2026
dd6792e
fix(buddy): bound ledger and trajectory scans
May 2, 2026
7732c36
feat(buddy): add director-driven world intent loop
May 2, 2026
e5f3aa4
refactor(buddy): extract world canvas draw modules
May 2, 2026
f72c852
feat(buddy): add world director intent loop
JegernOUTT May 2, 2026
ded9a01
feat(agent): add GPT-5.5 and Claude Opus 4.7 modes
May 2, 2026
be9f37d
feat(gui): persist chat and task UI state
May 2, 2026
3f35ae5
Add provider-specific agent mode overlays
JegernOUTT May 2, 2026
cf26344
chore(engine): refresh models.dev once on startup
May 2, 2026
187ab88
refactor(yaml): inline full base agent prompt
May 2, 2026
c3b7ee7
feat(chat): preserve worktree across chat transitions
May 2, 2026
b1d4775
feat(buddy): add durable memory ops queue
May 2, 2026
5bd8c5a
fix(buddy): honor intent hold and avoid starfield duplication
May 2, 2026
19e03dd
refactor(buddy): skip duplicate evidence scans
May 2, 2026
c811d46
fix(engine): improve glob matching precedence
May 2, 2026
07b1804
fix(buddy): refine star layer and repeat cooldowns
May 2, 2026
3bba2d6
feat(gui): add bold dynamic diorama visuals
May 2, 2026
89ed69a
feat(memory): add safe lifecycle applier and archive support
May 2, 2026
f093616
feat(buddy): add edge-aware bubbles and polish world layout
May 2, 2026
0366a0e
fix(buddy): prioritize critical intents and compact speech
May 2, 2026
1d3720d
feat(memory): add dedupe and lifecycle scoring engine
May 2, 2026
6a408bf
feat(buddy): finalize compact layout and bubble anchoring
May 2, 2026
fcd3807
fix(buddy): stabilize sky draw and reduce overlays
May 2, 2026
3e53146
feat(git): mine history for memory hotspots
May 2, 2026
cc929d4
feat(memory): queue distilled trajectories for review
May 2, 2026
c1132a1
Apply rustfmt after memory lifecycle merges
JegernOUTT May 2, 2026
3708044
refactor(http): align archive semantics with lifecycle
May 2, 2026
fed5b04
fix(buddy): keep pending ops pending and cap evidence
May 2, 2026
79753e1
feat(mode_transition): enforce context budgets
May 2, 2026
7392b83
fix(buddy): make git idempotency deterministic
May 2, 2026
9c727ad
fix(buddy): sanitize repo metadata and map worktrees to tasks list
May 2, 2026
090b25e
fix(buddy): share git status counting logic
May 2, 2026
73ff73c
fix(knowledge): harden preview path validation
May 2, 2026
24fb74c
fix(memory): preserve finalized op state on duplicate enqueue
May 2, 2026
14de552
refactor(lifecycle): centralize status parsing and add archive coverage
May 2, 2026
249dff3
fix(buddy): add runtime dismiss control
May 2, 2026
4d5122b
fix(knowledge): harden path validation and bound extraction
May 2, 2026
56c7ecd
fix(memory): preserve finalized apply state
May 2, 2026
d106c59
fix(gui/buddy): sanitize diagnostic metadata
May 2, 2026
2a5f804
chore: merge worktree changes into dev
May 2, 2026
11301c5
style(gui): format buddy code with multiline args
JegernOUTT May 2, 2026
bbc95a7
chore: merge worktree into dev
May 2, 2026
00c949f
fix(engine): track local git evidence scans per root
May 2, 2026
55204b3
refactor(buddy): extract bubble positioning utility
May 2, 2026
1e2d723
fix(autonomous_chats): reset git scan count with project root
JegernOUTT May 3, 2026
3b984ab
Fix dependency radar scan count test isolation
JegernOUTT May 3, 2026
f78b167
Fix Windows path handling in engine tests
JegernOUTT May 3, 2026
a64c2b7
Optimize engine CI release builds
JegernOUTT May 3, 2026
fa83f1d
Speed up engine CI builds
JegernOUTT May 3, 2026
58b538d
build(engine): bump version to 8.0.0
JegernOUTT May 3, 2026
42c80c1
chore(release): bump packages to 8.0.0
JegernOUTT May 3, 2026
40f9f45
Fix engine Linux cross CI image
JegernOUTT May 3, 2026
d210d3c
chore(engine): notify workspace changes on lsp events
May 3, 2026
99596e7
fix(gui): open local app url from toolbar
May 3, 2026
2386bca
chore(gui): improve chat form responsive layout
May 3, 2026
18d2ab1
chore(gui): merge worktree layout changes
May 3, 2026
6d78f30
style(gui): tweak chat form flex sizing
May 3, 2026
b74093d
refactor(gui): replace tip placeholder with buddy insight
May 3, 2026
da8c7e4
chore(integrations): remove unused integration modules
May 3, 2026
efb6b16
chore(gui): remove buddy hotspot tone styling
May 3, 2026
a022bb4
feat(gui): link buddy activities to chats
May 3, 2026
b9f3bd7
chore(gui): merge worktree updates into dev
May 3, 2026
1105ba8
refactor(gui): simplify placeholder text logic
May 3, 2026
161bd0e
refactor(buddy): rename buddy copy to companion
May 3, 2026
c44e2bb
style(gui): add missing trailing comma
May 3, 2026
24e08a2
fix(gui): fill chat placeholder height
May 3, 2026
c024a8d
chore(gui): smooth buddy world animations
May 3, 2026
a01e140
feat(gui): add buddy-specific placeholder greetings
May 3, 2026
9a06231
style(gui): wrap long lines for formatting
JegernOUTT May 3, 2026
ac99811
chore(test): remove redundant buddy test cases
JegernOUTT May 3, 2026
21b6cf3
test(buddy): update autonomous chat activity assertion
JegernOUTT May 3, 2026
2bf32fd
fix(buddy): keep companion name updates reactive
JegernOUTT May 3, 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
  •  
  •  
  •  
100 changes: 53 additions & 47 deletions .github/workflows/agent_engine_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ on:
# types:
# - completed

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true

defaults:
run:
working-directory: refact-agent/engine
Expand All @@ -40,7 +44,6 @@ jobs:
target: x86_64-pc-windows-msvc
code-target: win32-x64
ext: .exe
whl-tag: win_amd64
- os: windows-latest
target: i686-pc-windows-msvc
code-target: win32-ia32
Expand All @@ -49,28 +52,23 @@ jobs:
target: aarch64-pc-windows-msvc
code-target: win32-arm64
ext: .exe
whl-tag: win_arm64
- os: ubuntu-22.04
target: x86_64-unknown-linux-gnu
code-target: linux-x64
whl-tag: manylinux2014_x86_64
cross: true
- os: ubuntu-22.04
target: aarch64-unknown-linux-gnu
code-target: linux-arm64
whl-tag: manylinux2014_aarch64
cross: true
# - os: ubuntu-22.04
# target: arm-unknown-linux-gnueabihf
# code-target: linux-armhf
- os: macos-15-intel
target: x86_64-apple-darwin
code-target: darwin-x64
whl-tag: macosx_13_0_x86_64
- os: macos-14
target: aarch64-apple-darwin
code-target: darwin-arm64
whl-tag: macosx_13_0_arm64

env:
LLM_LS_TARGET: ${{ matrix.target }}
Expand Down Expand Up @@ -99,47 +97,73 @@ jobs:
if: startsWith(matrix.os, 'macos')
run: brew install llvm

- name: setup cross-rs
- name: Add swap space (Linux cross-compilation needs extra RAM for LTO)
if: matrix.cross
run: |
cargo install cross --git https://github.com/cross-rs/cross

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: Install ARM target toolchain
if: matrix.target == 'arm-unknown-linux-gnueabihf'
run: sudo apt-get install gcc-arm-linux-gnueabihf

- name: Restore cached cargo
uses: swatinem/rust-cache@v2
with:
workspaces: |
refact-agent/engine -> target
key: ${{ matrix.os }}-${{ matrix.target }}-cargo
shared-key: ${{ matrix.os }}-${{ matrix.target }}-cargo

- name: Build and test artifact
- name: Install cross-rs
if: matrix.cross
uses: taiki-e/install-action@v2
with:
tool: cross
fallback: none

- name: Test artifact
if: matrix.cross == null && startsWith(matrix.os, 'windows')
run: cargo test --profile ci-release --lib --tests || exit 1

- name: Build artifact
if: matrix.cross == null && startsWith(matrix.os, 'windows')
run: |
cargo test --release || exit 1
cargo build --release || exit 1
mkdir python_binding_and_cmdline/refact/bin
cp ./target/release/refact-lsp${{ matrix.ext }} python_binding_and_cmdline/refact/bin
cp ./target/release/refact-lsp${{ matrix.ext }} ../..

- name: Build and test artifact
cargo build --profile ci-release || exit 1
cp ./target/ci-release/refact-lsp${{ matrix.ext }} ../..

- name: Test artifact
if: matrix.cross == null && !startsWith(matrix.os, 'windows')
env:
CARGO_PROFILE_CI_RELEASE_LTO: ${{ endsWith(matrix.target, 'apple-darwin') && 'thin' || 'true' }}
run: OPENSSL_STATIC=1 cargo test --profile ci-release --lib --tests --target ${{ matrix.target }} || exit 1

- name: Build artifact
if: matrix.cross == null && !startsWith(matrix.os, 'windows')
env:
CARGO_PROFILE_CI_RELEASE_LTO: ${{ endsWith(matrix.target, 'apple-darwin') && 'thin' || 'true' }}
run: |
OPENSSL_STATIC=1 cargo test --release --target ${{ matrix.target }} || exit 1
OPENSSL_STATIC=1 cargo build --release --target ${{ matrix.target }} || exit 1
mkdir python_binding_and_cmdline/refact/bin
cp ./target/${{ matrix.target }}/release/refact-lsp${{ matrix.ext }} python_binding_and_cmdline/refact/bin
cp ./target/${{ matrix.target }}/release/refact-lsp${{ matrix.ext }} ../..

- name: build linux-like artifacts
OPENSSL_STATIC=1 cargo build --profile ci-release --target ${{ matrix.target }} || exit 1
cp ./target/${{ matrix.target }}/ci-release/refact-lsp${{ matrix.ext }} ../..

- name: Test linux-like artifact
if: matrix.cross
env:
CARGO_BUILD_JOBS: ${{ matrix.target == 'aarch64-unknown-linux-gnu' && '1' || '2' }}
run: CROSS_NO_WARNINGS=0 cross test --profile ci-release --lib --tests --target ${{ matrix.target }} || exit 1

- name: Build linux-like artifact
if: matrix.cross
env:
CARGO_BUILD_JOBS: ${{ matrix.target == 'aarch64-unknown-linux-gnu' && '1' || '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
mkdir python_binding_and_cmdline/refact/bin
cp ./target/${{ matrix.target }}/release/refact-lsp${{ matrix.ext }} python_binding_and_cmdline/refact/bin
cp ./target/${{ matrix.target }}/release/refact-lsp${{ matrix.ext }} ../..
CROSS_NO_WARNINGS=0 cross build --profile ci-release --target ${{ matrix.target }} || exit 1
cp ./target/${{ matrix.target }}/ci-release/refact-lsp${{ matrix.ext }} ../..

- name: Upload artifacts
uses: actions/upload-artifact@v4
Expand All @@ -149,21 +173,3 @@ jobs:
path: |
refact-lsp
refact-lsp.exe

- if: matrix.whl-tag
shell: bash
env:
WHL_TAG: ${{ matrix.whl-tag }}
run: |
version=$(grep '^version' Cargo.toml | sed -E 's/version = "(.*)"/\1/')-dev
sed -i.bak -E "s/version=\"[^\"]+\"/version=\"$version\"/" python_binding_and_cmdline/setup.py

pip install wheel build setuptools
python -m build --wheel --no-isolation python_binding_and_cmdline --outdir artefacts/

- uses: actions/upload-artifact@v4
if: matrix.whl-tag
with:
name: whl-${{ matrix.target }}
if-no-files-found: ignore
path: refact-agent/engine/artefacts/*.whl
90 changes: 42 additions & 48 deletions .github/workflows/agent_engine_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ on:
tags:
- engine/*

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true

defaults:
run:
working-directory: refact-agent/engine
Expand All @@ -27,7 +31,6 @@ jobs:
target: x86_64-pc-windows-msvc
code-target: win32-x64
ext: .exe
whl-tag: win_amd64
- os: windows-latest
target: i686-pc-windows-msvc
code-target: win32-ia32
Expand All @@ -36,28 +39,23 @@ jobs:
target: aarch64-pc-windows-msvc
code-target: win32-arm64
ext: .exe
whl-tag: win_arm64
- os: ubuntu-20.04
target: x86_64-unknown-linux-gnu
code-target: linux-x64
whl-tag: manylinux2014_x86_64
cross: true
- os: ubuntu-20.04
target: aarch64-unknown-linux-gnu
code-target: linux-arm64
whl-tag: manylinux2014_aarch64
cross: true
# - os: ubuntu-22.04
# target: arm-unknown-linux-gnueabihf
# code-target: linux-armhf
- os: macos-15-intel
target: x86_64-apple-darwin
code-target: darwin-x64
whl-tag: macosx_13_0_x86_64
- os: macos-14
target: aarch64-apple-darwin
code-target: darwin-arm64
whl-tag: macosx_13_0_arm64

env:
LLM_LS_TARGET: ${{ matrix.target }}
Expand Down Expand Up @@ -86,10 +84,16 @@ jobs:
if: startsWith(matrix.os, 'macos')
run: brew install llvm

- name: setup cross-rs
- name: Add swap space (Linux cross-compilation needs extra RAM for LTO)
if: matrix.cross
run: |
cargo install cross --git https://github.com/cross-rs/cross
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: Install ARM target toolchain
if: matrix.target == 'arm-unknown-linux-gnueabihf'
Expand All @@ -98,63 +102,53 @@ jobs:
- name: Restore cached cargo
uses: swatinem/rust-cache@v2
with:
workspaces: |
refact-agent/engine -> target
key: ${{ matrix.os }}-${{ matrix.target }}-cargo
shared-key: ${{ matrix.os }}-${{ matrix.target }}-cargo

- name: Build and test artifact
- name: Install cross-rs
if: matrix.cross
uses: taiki-e/install-action@v2
with:
tool: cross
fallback: none

- name: Test artifact
if: matrix.cross == null && startsWith(matrix.os, 'windows')
run: cargo test --release --lib --tests || exit 1

- name: Build artifact
if: matrix.cross == null && startsWith(matrix.os, 'windows')
run: |
cargo test --release || exit 1
cargo build --release || exit 1
mkdir python_binding_and_cmdline/refact/bin
cp ./target/release/refact-lsp${{ matrix.ext }} python_binding_and_cmdline/refact/bin
cp ./target/release/refact-lsp${{ matrix.ext }} ../..

- name: Build and test artifact
- name: Test artifact
if: matrix.cross == null && !startsWith(matrix.os, 'windows')
run: OPENSSL_STATIC=1 cargo test --release --lib --tests --target ${{ matrix.target }} || exit 1

- name: Build artifact
if: matrix.cross == null && !startsWith(matrix.os, 'windows')
run: |
OPENSSL_STATIC=1 cargo test --release --target ${{ matrix.target }} || exit 1
OPENSSL_STATIC=1 cargo build --release --target ${{ matrix.target }} || exit 1
mkdir python_binding_and_cmdline/refact/bin
cp ./target/${{ matrix.target }}/release/refact-lsp${{ matrix.ext }} python_binding_and_cmdline/refact/bin
cp ./target/${{ matrix.target }}/release/refact-lsp${{ matrix.ext }} ../..

- name: build linux-like artifacts
- name: Test linux-like artifact
if: matrix.cross
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
mkdir python_binding_and_cmdline/refact/bin
cp ./target/${{ matrix.target }}/release/refact-lsp${{ matrix.ext }} python_binding_and_cmdline/refact/bin
cp ./target/${{ matrix.target }}/release/refact-lsp${{ matrix.ext }} ../..
env:
CARGO_BUILD_JOBS: ${{ matrix.target == 'aarch64-unknown-linux-gnu' && '1' || '2' }}
CARGO_PROFILE_RELEASE_LTO: ${{ matrix.target == 'aarch64-unknown-linux-gnu' && 'thin' || 'true' }}
run: CROSS_NO_WARNINGS=0 cross test --release --lib --tests --target ${{ matrix.target }} || exit 1

- if: matrix.whl-tag
shell: bash
- name: Build linux-like artifact
if: matrix.cross
env:
WHL_TAG: ${{ matrix.whl-tag }}
CARGO_BUILD_JOBS: ${{ matrix.target == 'aarch64-unknown-linux-gnu' && '1' || '2' }}
CARGO_PROFILE_RELEASE_LTO: ${{ matrix.target == 'aarch64-unknown-linux-gnu' && 'thin' || 'true' }}
run: |
version=$(grep '^version' Cargo.toml | sed -E 's/version = "(.*)"/\1/')
sed -i.bak -E "s/version=\"[^\"]+\"/version=\"$version\"/" python_binding_and_cmdline/setup.py

pip install wheel build setuptools
python -m build --wheel --no-isolation python_binding_and_cmdline --outdir artefacts/

- name: Upload whl to release
uses: svenstaro/upload-release-action@v2
if: matrix.whl-tag
with:
repo_token: ${{ github.token }}
asset_name: whl-${{ matrix.target }}
file: artefacts/*.whl
tag: ${{ github.ref }}
overwrite: true
file_glob: true

- name: Upload whl pypi
if: matrix.whl-tag
run: |
pip install twine
twine upload -p ${{ secrets.PYPI_TOKEN }} --skip-existing artefacts/*.whl
CROSS_NO_WARNINGS=0 cross build --release --target ${{ matrix.target }} || exit 1
cp ./target/${{ matrix.target }}/release/refact-lsp${{ matrix.ext }} ../..

- name: Package artifact in ZIP (WIN)
uses: vimtor/action-zip@v1.2
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
Loading
Loading