fix(hub): advertise declared agent distribution packages - #3866
Conversation
ApproveThe hub used to build a One thing to be aware of, not a blocker: the npm tab on the flagship page only appears once the hub catalog picks up the new manifest, and the manifest version is unchanged — so it lands with the next release publish, as the description says. Until then the page shows the GAIA app install and a source build, both of which work. Real-world evidenceNo The generated flagship page no longer contains a pip command, which is the user-visible outcome the PR claims. I also confirmed 🔍 Technical details🟢 Minor — stale comment now contradicts the code ( The Note — when the npm tab actually appears ( The live index currently has Strengths
|
# Conflicts: # hub/agents/gaia/npm/CHANGELOG.md
|
Verdict: Approve The fix is correct and well-targeted. The hub install card was generating The new test reads the actual YAML and package.json to confirm the No security issues, no breaking CLI/API changes, no architecture violations. 🔍 Technical detailsOne forward-looking note (not blocking):
|
# Conflicts: # hub/agents/gaia/npm/CHANGELOG.md
|
Merged current The only conflict was the flagship npm CHANGELOG: this PR and 🔍 Technical details
|
|
Merged 🔍 Technical detailsMerge commit only — no hand resolution. Net vs main: Tests on the merge result: |
Replicates amd#4291 (kovtcharov/gaia fork, push access blocked) onto a branch this session can push to. Original review: **Verdict: Approve**, no blocking findings — the reviewer verified statically that both lock files list `darwin-x64`, that the platform name is one the manifest schema accepts, and that the install gate compares against exactly the list this PR edits. No content changes beyond replication onto current main. Intel Mac users running `gaia hub install gaia` or `gaia hub install email` were refused before any download, even though both agents' releases build and publish a darwin-x64 binary and both lock files list it. The manifests now declare `darwin-x64`, so the install gate matches what ships; the email README also lists Intel macOS (best-effort, as SPEC.md already says). A new unit test fails whenever a binary hub agent's declared platforms drift from its `binaries.lock.json`, in either direction. No version bump: manifest-only fixes land under Unreleased, as amd#3866 did. The live hub picks this up on each agent's next publish. ## Test plan - [x] `python -m pytest tests/unit/test_hub_agent_platforms.py -q` — 3 passed - [x] `python -m pytest hub/agents/gaia/python/tests/test_publish_to_r2_by_reference.py hub/agents/gaia/python/tests/test_capability_matrix.py -q` — 30 passed - [x] `python -m pytest tests/unit/ -q -k "hub or manifest or compat or platform"` — 834 passed, 3 failed, 17 collection errors; all failures and errors reproduce identically on clean `main` (see note below) - [x] `python util/lint.py --black --isort` clean - [ ] On an Intel Mac: `gaia hub install email` passes the compatibility check (needs a republished manifest) Cherry-picked cleanly onto current `main` with no conflicts, so the diff is identical to the approved one. > [!NOTE] > Two pre-existing `main` breakages surfaced while running the suite, both unrelated to this PR and present on a clean `e9dfc3e7a` checkout: `src/gaia/ui/agent_loop.py:465` passes `device=session.get("device")` twice in one call, a `SyntaxError` that fails collection for 17 UI/router test modules; and 3 unrelated tests fail on main (`test_sh_parses_under_dash`, a `test_memory_discovery` Outlook-registry case, `test_hub_installed_wheel_agent_importable_in_fresh_process`). Fixes amd#4218 Co-authored-by: Kalin Ovtcharov <kalin@Kalins-Mac-mini.local>
The hub no longer invents a PyPI package from an agent's implementation language. The flagship declares its existing npm package, and agents without package metadata retain GAIA and source installation options.
Fixes #3550.
Test plan:
The flagship npm tab uses the new manifest metadata after catalog publication.