Skip to content

fix(server): seed goose-native-ui and hermes-native-ui default agents - #2018

Merged
PattaraS merged 1 commit into
mainfrom
fix-seed-goose-hermes-native-agents
Jul 6, 2026
Merged

fix(server): seed goose-native-ui and hermes-native-ui default agents#2018
PattaraS merged 1 commit into
mainfrom
fix-seed-goose-hermes-native-agents

Conversation

@PattaraS

@PattaraS PattaraS commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Summary

_ensure_default_agents in server/app.py seeds the built-in <harness>-native-ui
agents at server startup (this is what populates GET /v1/agents and what any
head 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-ui
were added to the registry (full NativeCodingAgent records + _materialize_* _agent_spec functions) but their startup seeders were never wired in.

Result: those two agents never appear in GET /v1/agents, so anything looking
them 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 the
existing kiro pattern exactly, and call them from _ensure_default_agents. No
new 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.
  • Live (harness bench, native-tui): before this change goose/hermes fail at
    not auto-registered; after, both get PAST registration and reach terminal
    provisioning (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 check clean.

Demo

N/A -- server startup agent seeding.

Type of change

  • Bug fix
  • New feature
  • Documentation

Test coverage

  • Automated tests added/updated
  • Manual verification completed

Coverage notes

The seeding is covered by tests/test_native_coding_agents.py (agent-name
contract). 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_agents is the root
seam: a native harness — in-repo or a community plugin — is invisible until
someone hand-adds a seeder here, even though native_agents() already
enumerates them (plugins included). Making _ensure_default_agents iterate
native_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.

_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.
@github-actions github-actions Bot added the size/M Pull request size: M label Jul 6, 2026
@PattaraS
PattaraS marked this pull request as ready for review July 6, 2026 08:46
@PattaraS
PattaraS enabled auto-merge (squash) July 6, 2026 08:47
@PattaraS

PattaraS commented Jul 6, 2026

Copy link
Copy Markdown
Contributor Author

/review

@omnigent-ci

omnigent-ci Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Polly AI Review

Summary

This is a minimal, correct, low-risk fix. It adds the two missing startup seeders (_build_goose_native_bundle / _ensure_default_goose_agent and the hermes pair) and wires them into _ensure_default_agents, mirroring the existing kiro pattern exactly. I verified against the checked-out main: the imports resolve (GOOSE_NATIVE_CODING_AGENT / HERMES_NATIVE_CODING_AGENT exist in harness_plugins.py), the materialize functions exist with matching signatures (_materialize_goose_agent_spec(tmpdir) and _materialize_hermes_agent_spec(tmpdir) both take only tmpdir — correctly called without the model=None arg that kiro uses), and _tar_gz_dir / _ensure_builtin_agent are the same helpers the sibling seeders use. Approve.

Blocking issues

None.

Security vulnerabilities

None. No new dependencies, no changed lockfile pins, no extras, no new network/auth surface — purely additive server-startup seeding of already-declared built-in agents.

Non-blocking notes

  • The PR description already calls out the real design smell: _ensure_default_agents hardcodes one seeder call per harness, so any native harness is invisible until someone hand-adds a pair here even though native_agents() enumerates them. Filing the registry-driven iteration as a follow-up is the right call for keeping this PR minimal; worth landing soon so this class of omission stops recurring.
  • The change adds no direct regression test asserting goose-native-ui / hermes-native-ui actually appear in GET /v1/agents after _ensure_default_agents runs. tests/test_native_coding_agents.py covers the name contract but not the seeding wiring itself (which is exactly what was missing here). A small test invoking _ensure_default_agents with a fake store and asserting both names get registered would guard against a future re-omission — optional given the follow-up above.

Automated review by Polly · workflow run

@PattaraS
PattaraS merged commit 8552d68 into main Jul 6, 2026
81 of 82 checks passed
@github-actions github-actions Bot added the needs-doc-update Merged PR needs a user-facing docs update label Jul 6, 2026
@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

🏷️ Doc impact: needs-doc-update

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 omnigent-ai/omnigent-site (staged on 0.5-docs until release)…

Auto-classified on merge. Set the label manually before merging to override. · run

PattaraS pushed a commit to omnigent-ai/omnigent-site that referenced this pull request Jul 8, 2026
Co-authored-by: omnigent-ci[bot] <294685417+omnigent-ci[bot]@users.noreply.github.com>
dhruv0811 added a commit to omnigent-ai/omnigent-site that referenced this pull request Jul 10, 2026
* 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>
yours-aditya pushed a commit to yours-aditya/omnigent that referenced this pull request Jul 16, 2026
…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>
daniellok-db added a commit to omnigent-ai/omnigent-site that referenced this pull request Jul 17, 2026
* 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-doc-update Merged PR needs a user-facing docs update size/M Pull request size: M

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant