feat(adagents): inline-resolution path for publisher_properties selectors + directory inverse-lookup wrapper
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- go
- Domain
- backend-api-design
Research direction
Start by reading the Go SDK’s existing publisher_properties resolution path and directory client APIs; the issue does not name specific files or tests. Compare the behavior with spec PRs adcp#4827 and adcp#4828, then implement and verify both acceptance sections, including inline versus federated precedence, revocation, the response envelope, and pagination.
Written by the indexing model from the issue text.
Description
Go SDK companion work for adcp#4825 (inline resolution) and adcp#4823 (directory inverse-lookup).
Part 1 — Inline-resolution path for publisher_properties selectors
adcp#4825 (spec PR adcp#4827) endorses parent-file inline resolution: when a parent file's top-level properties[] entries carry a publisher_domain matching one in the selector's publisher_domains[], the consumer MAY satisfy the selector from those inline properties without per-child adagents.json fetches.
The Go SDK's publisher_properties resolution path needs to:
- Expand
publisher_domains[]compact form into per-domain resolution. - Consult the parent file's
properties[]first when entries carry matchingpublisher_domain. - Fall back to federated per-child fetch when inline doesn't match.
Divergence rule (from spec): when both paths resolve to the same (publisher_domain, property_id) and disagree, federated wins; SDK SHOULD log the divergence.
Revocation: inline path MUST honor revoked_publisher_domains[] on the parent file. Consumers that also resolve federated SHOULD cross-check the child's own; first match revokes.
func ResolvePublisherProperties(adagents *AdAgentsFile, selectors []PublisherPropertySelector) []Property {
var resolved []Property
parent := adagents.Properties
for _, sel := range selectors {
for _, domain := range selectorDomains(sel) {
if inline := resolveInline(sel, parent, domain); inline != nil {
resolved = append(resolved, inline...)
continue
}
resolved = append(resolved, resolveFederated(sel, domain)...)
}
}
return resolved
}
Part 2 — Directory inverse-lookup wrapper
adcp#4823 (spec PR adcp#4828) defines GET /v1/agents/{agent_url}/publishers. Go SDK needs a wrapper:
func FetchAgentAuthorizationsFromDirectory(
ctx context.Context,
agentURL string,
opts ...DirectoryOption,
) (*AgentDirectoryLookup, error)
Return type mirrors the response envelope schema. Channel-based pagination iterator preferred for Go idioms.
Acceptance
Part 1:
-
publisher_domains[]compact form fanned into per-domain resolution. - Parent-file inline match returns the inline
[]Property; no federated fetch when inline succeeds. - When inline and federated diverge, SDK uses federated result and logs the divergence.
- Parent-file
revoked_publisher_domains[]revokes inline matches.
Part 2:
-
FetchAgentAuthorizationsFromDirectoryreturns spec-conformant response. - Pagination handled via channel-based iterator or
Next()-style cursor.
References
- Dominant language
- Go
- Stars
- 4
- Forks
- 2
- Avg merge
- 1d 19h
- Merged PRs (30d)
- 14
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from adcontextprotocol/adcp-go
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
adcontextprotocol/adcp-go#567 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
adcontextprotocol/adcp-go#562 ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 22/100
adcontextprotocol/adcp-go#564 ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 8/100
adcontextprotocol/adcp-go#556 ·
Maintainers usually reply within 1 day
-
claude-triaged cross-repo
Difficulty 5/5 Over a week Newbie friendliness 25/100
adcontextprotocol/adcp-go#548 · 2 comments ·
Maintainers usually reply within 1 day
All issues in adcontextprotocol/adcp-go
Similar issues
-
documentation hacktoberfest priority: low skill: good first issue status: ready for dev
Difficulty 2/5 Half a day Newbie friendliness 85/100
hyperledger-labs/fabric-smart-client#2142 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
numberly/vault-db-injector#107 ·
Maintainers usually reply within 1 day
-
area/import kind/bug
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
Maintainers usually reply within 1 day
-
[DOC] Wrong sg_egress_ports range in the Terraform Databricks Guide for AWS Hub & Spoke with Network FirewallPossibly taken @akhil9tiet claimed this today. Opendocs
Difficulty 1/5 Under an hour Newbie friendliness 72/100
databricks/terraform-provider-databricks#6080 · 1 comment ·
Maintainers usually reply within 3 days
-
spqr-coordinator usage shows 'run --config', but 'run' is not a subcommand (unknown command "run")Open
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
pg-sharding/spqr#3092 · 1 comment ·
Maintainers usually reply within 1 day