refactor: unified workspaces layout + hand/agent isolation + routing fixes#1542
Merged
refactor: unified workspaces layout + hand/agent isolation + routing fixes#1542
Conversation
- Remove unused workspace_dir (singular) config field - Stop sync_registry from flattening all content to root dirs - Registry cache (~/.librefang/registry/) is now a catalog/store - Pre-install on boot: providers, integrations, aliases.toml, assistant agent template, and all hands (via install API) - Skills and plugins stay in registry, installed from dashboard - Runtime only reads user directories, never registry/ directly - Add git init on first boot for config version control - Remove bundled_agents module (no longer used) - Update docs (EN + ZH) to reflect new install model
Without this, `librefang init` creates an empty home directory with no registry cache, no providers, and no hands.
- Fix install test assertion path (hands/ → workspaces/hands/) - Add ensure_test_home() helper that syncs registry and migrates old hands/ dir before running tests
- disk_hands reads definitions from registry/hands/ (no copy needed) - First boot: activate all hands then pause (creates full workspace with AGENT.json, SOUL.md, memory/, sessions/, etc.) - Subsequent boots: restore from hand_state.json - Remove file-copy preinstall from both CLI and kernel boot
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
When multiple hands define agents with the same name (e.g. both "researcher" and "strategist" hands use an "analyst" agent), reuse the existing agent instance instead of failing with "Agent already exists". Shared agents accumulate memory and sessions in one place.
9cdce50 to
d109cea
Compare
2197699 to
e871974
Compare
workspaces/ ├── apitester/ ← hand workspace │ ├── agent.toml ← manifest snapshot │ ├── debugger/ ← agent workspace (SOUL.md, memory/, etc.) │ ├── scanner/ │ └── tester/ ├── collector/ │ ├── agent.toml │ ├── translator/ │ └── email-assistant/ └── assistant/ ← standalone agent - Remove workspaces/agents/ and workspaces/hands/ subdirectories - Hand agents nest under workspaces/<hand-id>/<role>/ - Standalone agents (no hand) go directly in workspaces/<name>/ - Hand definitions read from registry/hands/ only - Migration flattens old agents/ and hands/ subdirs
e871974 to
7415d28
Compare
… boot 1. After successful login, navigate to /#/overview instead of staying on whatever page the browser cached (often /#/hands) 2. checkAuthRequired retries 3 times with 1s delay when daemon is still booting, preventing false "no auth needed" when daemon hasn't started yet
ea90412 to
c790f9f
Compare
c790f9f to
10e6e69
Compare
This was referenced Mar 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Major refactoring of workspaces layout and agent management.
Closes #1543, Closes #1544, Closes #1545
Workspace Layout
Key Changes
hand_id:nameto avoid routing collision