Skip to content

feat(#4520): DIR SearchService + RoutingService — complete the directory client#225

Merged
Skobeltsyn merged 1 commit into
mainfrom
feat/4520-dir-routing-search
Jun 16, 2026
Merged

feat(#4520): DIR SearchService + RoutingService — complete the directory client#225
Skobeltsyn merged 1 commit into
mainfrom
feat/4520-dir-routing-search

Conversation

@Skobeltsyn

Copy link
Copy Markdown
Contributor

Summary

Completes the DIR client (#4520) — adds the discovery half on top of the StoreService slice, finishing the AGNTCY epic (#4517).

DirClient now wraps three DIR services over one channel:

  • StoreServicepush/pull/lookup/delete (content-addressed CRUD; from the prior PR).
  • SearchService (new)searchRecords/searchCids by typed DirQuery(DirQueryType, value) — the OASF facets DIR indexes (SKILL_NAME, DOMAIN_NAME, AUTHOR, …; DirQueryType maps by name to the proto enum).
  • RoutingService (new)publish/unpublish (announce by CID) + routeSearchDirRouteMatch{cid, peer, matchScore} (cross-peer discovery). Routing facets are coarse (skill/locator/domain/module); non-routable DirQueryTypes are rejected with a clear error.

Notes

  • All three stubs share one ManagedChannel (bearer interceptor applied to each).
  • Vendored 5 more trimmed, wire-compatible protos (search/v1 + routing/v1) — these have no buf/validate imports upstream, so theyre faithful. No new external deps → lockfile + verification-metadata unchanged.

Gates

7 tests total (in-process gRPC fakes for Store/Search/Routing — hermetic). Full ./gradlew build green (dir module + detekt + DocsConsistency + verification). README + CHANGELOG + PRD §12.6 + internals adjunct updated. Closes #4520. Remaining DIR: RoutingService.List + OCI referrers (thin follow-ups).

CodeQL java-kotlin expected-red on Kotlin 2.4 (codeql#21938); build is the gate.

🤖 Generated with Claude Code

…ory client

Adds the discovery half of DirClient on top of the StoreService slice, completing
the AGNTCY epic (#4517).

- SearchService (local content search): searchRecords / searchCids by typed DirQuery
  (DirQueryType mirrors the OASF facets DIR indexes — SKILL_NAME, DOMAIN_NAME, AUTHOR, ...).
- RoutingService (network publish + discovery): publish / unpublish (by CID) and
  routeSearch -> DirRouteMatch{cid, peer, score}. Routing facets are coarse
  (skill/locator/domain/module); non-routable DirQueryTypes are rejected.
- All three services share one ManagedChannel (bearer interceptor applied to each).
- Vendored 5 more trimmed, wire-compatible protos (search/v1 + routing/v1) — no
  buf/validate imports upstream, so faithful. No new external deps (lockfile +
  verification-metadata unchanged).
- 7 tests total (in-process gRPC fakes for Store/Search/Routing). README + CHANGELOG
  + PRD §12.6 + internals adjunct updated. Remaining DIR: RoutingService.List + OCI referrers.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@Skobeltsyn Skobeltsyn merged commit 93b5817 into main Jun 16, 2026
3 of 4 checks passed
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