fix(server): seed goose-native-ui and hermes-native-ui default agents - #2018
Conversation
_ensure_default_agents in server/app.py seeded 9 of the 11 native-ui agents declared in the harness registry (harness_plugins.native_agents) — goose and hermes were added to the registry but their startup seeders were never wired in. So `GET /v1/agents` never listed goose-native-ui / hermes-native-ui, and anything resolving a native agent by that name (the harness bench, and any head that relies on the built-in row) failed with "not auto-registered". Add the two missing seeder pairs (_build_*_native_bundle + _ensure_default_* _agent), mirroring the kiro pattern exactly, and call them from _ensure_default_agents. goose/hermes have the required _materialize_*_agent_spec functions already; only the app.py wiring was missing. Verified: with this change both goose-native and hermes-native get PAST agent registration in the harness bench (they now reach terminal provisioning, where each hits a separate downstream issue — hermes a lazy-chat/first-turn gate, goose a terminal-ensure 500 — tracked separately). test_native_coding_agents passes; ruff clean. Note: the per-harness hardcoded seeder list is itself the seam — a native plugin is invisible until hand-added here. Making _ensure_default_agents iterate native_agents() from the registry (which already includes plugins) is the follow-up that would close it.
|
/review |
|
|
🏷️ Doc impact: Two new native coding-agent harnesses (goose-native-ui and hermes-native-ui) are registered as built-in default agents, adding user-facing integrations that require documentation. Drafting a docs PR to Auto-classified on merge. Set the label manually before merging to override. · run |
Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com>
* docs: document omnigent-ai/omnigent#1722 (#261) Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> * docs: document omnigent-ai/omnigent#2018 (#265) Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> * docs: document omnigent-ai/omnigent#1386 (#272) Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> * docs: document omnigent-ai/omnigent#2156 (#278) * docs: document omnigent-ai/omnigent#2156 * Apply suggestion from @serena-ruan * Apply suggestions from code review Co-authored-by: Serena Ruan <82044803+serena-ruan@users.noreply.github.com> --------- Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> Co-authored-by: Serena Ruan <82044803+serena-ruan@users.noreply.github.com> * docs: document omnigent-ai/omnigent#2022 (#268) * docs: document omnigent-ai/omnigent#2022 * docs: add steering gif and simplify message queue section Co-authored-by: Isaac --------- Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> Co-authored-by: Serena Ruan <serena.rxy@gmail.com> * chore(api): sync openapi.json from omnigent@3c7a558 (#274) Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> * docs: document omnigent-ai/omnigent#526 (#279) Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> * docs: rename hindsight extra to memory (omnigent[memory]) (#282) The memory tools ship under the `memory` extra (omnigent[memory]), not `hindsight`. Update the install instruction and extra name to match. The Hindsight product name and the hindsight_* tool names are unchanged. * docs: document default base branch for new worktrees (#284) * docs: document default base branch for new worktrees * docs: condense worktree branches section and add setting demo gif Co-authored-by: Isaac --------- Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> Co-authored-by: Serena Ruan <serena.rxy@gmail.com> * chore(api): sync openapi.json from omnigent@7fb779f (#281) Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> * chore(api): sync openapi.json from omnigent@60e775a (#288) Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> * docs: document omnigent-ai/omnigent#2152 (#280) Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> * docs: document omnigent-ai/omnigent#1859 (#277) Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> * docs: document omnigent-ai/omnigent#2135 (#276) Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> --------- Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> Co-authored-by: Serena Ruan <82044803+serena-ruan@users.noreply.github.com> Co-authored-by: Serena Ruan <serena.rxy@gmail.com> Co-authored-by: Pat Sukprasert <pattara.sk127@gmail.com> Co-authored-by: Dhruv Gupta <dhruv.gupta@databricks.com>
…omnigent-ai#2018) _ensure_default_agents in server/app.py seeded 9 of the 11 native-ui agents declared in the harness registry (harness_plugins.native_agents) — goose and hermes were added to the registry but their startup seeders were never wired in. So `GET /v1/agents` never listed goose-native-ui / hermes-native-ui, and anything resolving a native agent by that name (the harness bench, and any head that relies on the built-in row) failed with "not auto-registered". Add the two missing seeder pairs (_build_*_native_bundle + _ensure_default_* _agent), mirroring the kiro pattern exactly, and call them from _ensure_default_agents. goose/hermes have the required _materialize_*_agent_spec functions already; only the app.py wiring was missing. Verified: with this change both goose-native and hermes-native get PAST agent registration in the harness bench (they now reach terminal provisioning, where each hits a separate downstream issue — hermes a lazy-chat/first-turn gate, goose a terminal-ensure 500 — tracked separately). test_native_coding_agents passes; ruff clean. Note: the per-harness hardcoded seeder list is itself the seam — a native plugin is invisible until hand-added here. Making _ensure_default_agents iterate native_agents() from the registry (which already includes plugins) is the follow-up that would close it. Signed-off-by: Aditya Devarapalli <adityareddyd2@gmail.com>
* docs: document omnigent-ai/omnigent#1722 (#261) Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> * docs: document omnigent-ai/omnigent#2018 (#265) Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> * docs: document omnigent-ai/omnigent#1386 (#272) Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> * docs: document omnigent-ai/omnigent#2156 (#278) * docs: document omnigent-ai/omnigent#2156 * Apply suggestion from @serena-ruan * Apply suggestions from code review Co-authored-by: Serena Ruan <82044803+serena-ruan@users.noreply.github.com> --------- Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> Co-authored-by: Serena Ruan <82044803+serena-ruan@users.noreply.github.com> * docs: document omnigent-ai/omnigent#2022 (#268) * docs: document omnigent-ai/omnigent#2022 * docs: add steering gif and simplify message queue section Co-authored-by: Isaac --------- Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> Co-authored-by: Serena Ruan <serena.rxy@gmail.com> * chore(api): sync openapi.json from omnigent@3c7a558 (#274) Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> * docs: document omnigent-ai/omnigent#526 (#279) Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> * docs: rename hindsight extra to memory (omnigent[memory]) (#282) The memory tools ship under the `memory` extra (omnigent[memory]), not `hindsight`. Update the install instruction and extra name to match. The Hindsight product name and the hindsight_* tool names are unchanged. * docs: document default base branch for new worktrees (#284) * docs: document default base branch for new worktrees * docs: condense worktree branches section and add setting demo gif Co-authored-by: Isaac --------- Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> Co-authored-by: Serena Ruan <serena.rxy@gmail.com> * chore(api): sync openapi.json from omnigent@7fb779f (#281) Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> * chore(api): sync openapi.json from omnigent@60e775a (#288) Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> * docs: document omnigent-ai/omnigent#2152 (#280) Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> * docs: document omnigent-ai/omnigent#1859 (#277) Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> * docs: document omnigent-ai/omnigent#2135 (#276) Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> * docs: document official kubernetes server image variant (#285) Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> --------- Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com> Co-authored-by: Serena Ruan <82044803+serena-ruan@users.noreply.github.com> Co-authored-by: Serena Ruan <serena.rxy@gmail.com> Co-authored-by: Pat Sukprasert <pattara.sk127@gmail.com> Co-authored-by: Dhruv Gupta <dhruv.gupta@databricks.com> Co-authored-by: Daniel Lok <daniel.lok@databricks.com>
Summary
_ensure_default_agentsinserver/app.pyseeds the built-in<harness>-native-uiagents at server startup (this is what populates
GET /v1/agentsand what anyhead resolving a native agent by name relies on). It seeded 9 of the 11
native-ui agents declared in the harness registry
(
harness_plugins.native_agents): goose-native-ui and hermes-native-uiwere added to the registry (full
NativeCodingAgentrecords +_materialize_* _agent_specfunctions) but their startup seeders were never wired in.Result: those two agents never appear in
GET /v1/agents, so anything lookingthem up fails with
'goose-native-ui'/'hermes-native-ui' not auto-registered on the server— which is how the harness capability bench surfaced this.Change
Add the two missing seeder pairs (
_build_goose_native_bundle/_ensure_default_goose_agent, and the hermes equivalents), mirroring theexisting kiro pattern exactly, and call them from
_ensure_default_agents. Nonew mechanism — just the wiring that was omitted when goose/hermes were added
to the registry.
Test Plan
pytest tests/test_native_coding_agents.py-> 7 passed.not auto-registered; after, both get PAST registration and reach terminalprovisioning (where each hits a separate downstream issue — hermes a
lazy-chat/first-turn gate, goose a terminal-ensure 500 — both tracked
separately, not caused by this change).
ruff checkclean.Demo
N/A -- server startup agent seeding.
Type of change
Test coverage
Coverage notes
The seeding is covered by
tests/test_native_coding_agents.py(agent-namecontract). The end-to-end "goose/hermes register on a live server" path needs
the native-tui bench with logged-in vendor CLIs, which CI lacks, so it was
verified by hand.
Follow-up (not this PR)
The per-harness hardcoded seeder list in
_ensure_default_agentsis the rootseam: a native harness — in-repo or a community plugin — is invisible until
someone hand-adds a seeder here, even though
native_agents()alreadyenumerates them (plugins included). Making
_ensure_default_agentsiteratenative_agents()instead of 13 hardcoded calls would make native harnesses(and plugins) register automatically. Filed as a follow-up rather than folded
in here to keep this a minimal, obvious fix.