galaxyproject / galaxyproject/loom

Make the Orbit skills:refresh transactional

Open
#332 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
14
Forks
12
Avg merge
6d 5h
Merged PRs (30d)
17

Description

Follow-up from the #181 review.

The Orbit "Refresh skills" button (`skills:refresh` in `app/src/main/ipc-handlers.ts`) deletes the cached catalogs and then restarts the agent, returning success immediately. The re-walk that rebuilds them happens lazily on the restarted agent's next turn. So right after a refresh the router renders from the builtin/empty fallback, and offline the custom-repo catalogs stay gone until the next successful walk (recovers on reconnect -- degraded, not permanent).

Make it verify-then-swap: walk + write the new catalogs, retain the old ones on failure, and restart/report success only once the refresh produced something. This is cross-process (the walk lives in the brain), so it likely means the button drives a foreground refresh rather than `rm`-ing from main.

Note: the foreground `/skills refresh` path is already safe now that discovery is all-or-nothing and keeps last-known-good (#181) -- this is specifically the Orbit button's clear-first approach.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start in app/src/main/ipc-handlers.ts and compare the Orbit button with the foreground `/skills refresh` path described in #181. Trace how the button crosses into the brain, then verify that new catalogs are written before old ones are replaced, failures retain the old catalogs, and restart/reporting occurs only after a successful refresh.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
backend, desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.