Skip to content

refactor(layout): group ACP agents under acp/ (acp/ + ai-sdk/ + omnigent/) - #19

Merged
Yiminnn merged 1 commit into
mainfrom
reorg/acp-category-paths
Jun 27, 2026
Merged

refactor(layout): group ACP agents under acp/ (acp/ + ai-sdk/ + omnigent/)#19
Yiminnn merged 1 commit into
mainfrom
reorg/acp-category-paths

Conversation

@Yiminnn

@Yiminnn Yiminnn commented Jun 27, 2026

Copy link
Copy Markdown
Contributor

What

Group the repo's ACP agents under a single top-level acp/ directory, so the layout becomes three agent buckets + infra:

  • acp/ — the 11 ACP agents: claude-agent-acp, codex-acp, gemini, mimo, mimo-acp, opencode, openclaw, openhands, pi-acp, mini-swe-acp, mini-swe-code
  • ai-sdk/ — the Vercel AI SDK harness group (unchanged)
  • omnigent/ — the Databricks Omnigent session-factory agent (unchanged)
  • infra stays at the top: contract/, docs/, skills/, .github/, plus root README.md / CONTRIBUTING.md / LICENSE / config files

All agent dirs move via git mv (renames, history preserved): 169 files renamed, 10 files edited for path refs.

Why this is backward-compatible

The benchflow loader already discovers agents recursively: benchflow.agents.manifest.discover_manifests walks root.rglob("manifest.toml") and skips only _DISCOVERY_SKIP_DIRS (build/vendor/VCS dirs) — acp is not in that set. Nesting agents one level deeper under acp/ therefore does not hide them; the loader's own docstring already anticipates nested families (e.g. ai-sdk/acp/manifest.toml alongside acp/<agent>/manifest.toml).

Verified empirically against load_agents_from_dir(): the discovered agent-name set is identical before and after the move, and every manifest's content hash (sha256) is byte-identical (pure git mv, no content change).

  • before: ['claude-agent-acp', 'codex-acp', 'gemini', 'mimo', 'openclaw', 'opencode', 'openhands', 'pi-acp']
  • after: ['claude-agent-acp', 'codex-acp', 'gemini', 'mimo', 'openclaw', 'opencode', 'openhands', 'pi-acp']

Path refs updated

Every filesystem path reference to a moved dir is repointed <dir>/ -> acp/<dir>/. Agent names in prose and model ids are deliberately left untouched (e.g. "use BenchFlow's native codex-acp" stays — that's an agent name, not a path).

  • .github/workflows/lint.yaml (working-directory:), and test-mimo-acp.yaml / test-mini-swe-acp.yaml / test-mini-swe-code.yaml (paths: filters + working-directory:)
  • contract/manifest.py docstring example; test_manifest_launcher_freshness.py _MANIFEST constant (now acp/pi-acp/manifest.toml); and test_manifest.py's repo-manifest glob made recursive-bounded (*/manifest.toml + */*/manifest.toml) so it keeps validating the moved manifests instead of silently pytest.skip-ing under the new depth
  • docsREADME.md (agent-table links, quickstart cd, pip #subdirectory=, repository-layout block, license table), CONTRIBUTING.md (dev-setup cd + the mini-swe-code/... file paths), docs/adaptation.md (the mini-swe-acp worked-example link)

Tests

  • contract/ suite: 20 passed — incl. test_repo_manifests_validate now finding all 9 acp/<name>/manifest.toml (no skip) and the pi-acp launcher-freshness tests reading acp/pi-acp/manifest.toml
  • ruff check + ruff format --check clean on contract/
  • loader discovery invariant: baseline agent-name set == post-move set; per-manifest content hashes identical

Follow-ups (out of scope here)

  • Move the loader to an explicit scan-by-3-paths strategy (acp/, ai-sdk/, omnigent/) and add a deprecation path for the old flat layout.
  • Pre-existing, not introduced by this PR: acp/mimo/ and acp/mimo-acp/ both declare name = "mimo", so load_agents_from_dir raises a duplicate-name error over the whole tree — identical behavior before and after this move. Worth de-duping separately.

🤖 Generated with Claude Code

…dk/ + omnigent/); recursive loader already discovers them

Move the 11 ACP agent dirs (claude-agent-acp, codex-acp, gemini, mimo,
mimo-acp, opencode, openclaw, openhands, pi-acp, mini-swe-acp,
mini-swe-code) under a single acp/ category dir, leaving ai-sdk/ and
omnigent/ as the other two top-level agent groups and contract/, docs/,
skills/, .github/ + root files as infra.

The benchflow loader (manifest.discover_manifests) already rglobs
manifest.toml recursively and 'acp' is not in _DISCOVERY_SKIP_DIRS, so
load_agents_from_dir discovers the exact same agent-name set + identical
manifest content (sha256 per manifest) before and after this move
(verified). Path refs in workflows, contract tests, and docs are
repointed flat <dir> -> acp/<dir>; agent names in prose are left alone.
contract/test_manifest.py's repo-manifest glob is made recursive-bounded
so it keeps validating the moved manifests instead of silently skipping.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EWyhqJ7GvkQRvEFynmKF5h
@greptile-apps

greptile-apps Bot commented Jun 27, 2026

Copy link
Copy Markdown

Too many files changed for review. (179 files found, 100 file limit)

@Yiminnn
Yiminnn merged commit 325f137 into main Jun 27, 2026
5 checks passed
Yiminnn added a commit that referenced this pull request Jun 27, 2026
)

Follow-up to #19. The acp/ subtree's own pip-install subdirectory= commands and
pyproject Documentation URLs still pointed at the pre-move repo-root paths; repoint
them to acp/<dir>. No discovery/manifest impact (contract suite unaffected).

Co-authored-by: symphony-bot <symphony@benchflow.ai>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant