[nu-demo] hero_osis_ui stuck at 'Loading service spec...' — no /api/services route, per-domain discovery never completes #175
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Symptom
Clicking the OSIS island in herodemo's dock loads the Hero OSIS Admin UI iframe but it hangs permanently on:
Left sidebar shows
Types: Loading...also stuck.Root cause
hero_osis_ui(the dashboard admin UI) was designed in the monolithic-hero_osis era to talk to a single OpenRPC endpoint that served ALL the types. In the nu-shell era, hero_osis is split into 17 per-domain servers (hero_osis_business, hero_osis_calendar, hero_osis_code, etc.) each with its ownrpc.sock.The admin UI's JS (
dashboard.js) callsdiscoverRootTypes()+discoverServiceMethods()against what it expects is a single aggregator, buthero_osis_ui/src/lib.rsregisters no/api/servicesroute — only/health,/.well-known/heroservice.json,/api/stats,/config/env,/, static assets. No aggregation layer exists.sockets/on the VM clearly shows the per-domain split:Each per-domain socket works fine on its own (direct
curl --unix-socket hero_osis_business/rpc.sock ...returns the business OpenRPC spec). But there's no/api/servicesendpoint that returns the union.Fix proposals
1. Add an aggregation route to hero_osis_ui
/api/servicesreturns[{name, description, openrpc_url, domain}]— one entry per per-domain socket. Can be built on-startup by scanning$HERO_SOCKET_DIR/hero_osis_*/rpc.sockand fetching each's.well-known/heroservice.json. Thendashboard.jsswitches to per-service spec fetches.2. Consolidate under hero_router
hero_router already does
POST /mcp/{service_name}for every service it discovers — same pattern could power/hero_osis/ui/api/servicesby proxying from hero_router's service cache. Less code in hero_osis_ui.3. Ship per-domain admin UIs separately
Each
hero_osis_<domain>service gets its own admin UI iframe (or tab within a parent shell). Lists of dialogs per domain are the most useful view anyway. Deprecate the single-page aggregator UI.Demo workaround
None applied — admin UI stuck loading. Per-domain data IS accessible via the Business island (which DOES work and shows Persons/Companies/Contacts/Deals), and via the AI Assistant (which can call tools that hit the per-domain sockets). The Admin UI specifically is the blocker.
Related
Signed-off-by: mik-tf
Moved to hero_demo#35 — see lhumina_code/hero_demo#35