Uh oh!
There was an error while loading. Please reload this page.
fix(sdk): derive placement repoKeys from repo:<key> node tags - #1276
Conversation
Node registration carries repo advertisement only as repo:<key> tags — the engine roster row has no dedicated repo field — so the placement repo filter could never match a node. toRelayNode now falls back to those tags for repoKeys; explicit repoKeys/repo_keys/repoPaths fields still win when present. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Warning Review limit reached
Next review available in:33 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. 📝 WalkthroughWalkthroughNode translation derives ChangesRepository key translation
Estimated code review effort: 2 (Simple) | ~10 minutes Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Warning You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again! |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit:f3b967a85b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| const tagged = readStringArray(node, 'tags') | ||
| ?.filter((tag) => tag.startsWith('repo:')) | ||
| .map((tag) => tag.slice('repo:'.length)) | ||
| .filter(Boolean); | ||
| return tagged && tagged.length > 0 ? tagged : undefined; |
There was a problem hiding this comment.
Add the SDK placement fix to the changelog
This change fixes @agent-relay/sdk repo-filtered placement behavior, so it is user-visible. The root AGENTS.md requires curating CHANGELOG.md under [Unreleased] as PRs land, but this commit leaves [Unreleased] empty; release notes for the next patch would omit this fix. Please add a concise Fixed entry under [Unreleased - Patch].
Useful? React with 👍 / 👎.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UG27EY6k1siMxh65mrkveR
Uh oh!
There was an error while loading. Please reload this page.
The `@agent-relay/sdk` repo-filtered placement fix landed on main (#1276) after the merge base this branch picked up, so it was absent from the branch's Unreleased section. Add it back under [Unreleased - Minor] › Fixed (matching main's wording and order) so the pending changelog is an accurate superset and the eventual merge resolves cleanly. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H1M6ht3owm95x4YRTSffJi
messaging.placement.spawn({ repo })filters candidate nodes withnode.repoKeys?.includes(repo), but nothing in the stack produces arepoKeys/repo_keys/repoPathsfield on the engine's node roster row — the only repo advertisement that flows end-to-end (fleet definition → provider registration → engine node row → roster) isrepo:<key>tags. A repo-filtered placement therefore matched no node, ever.toRelayNodenow derivesrepoKeysfromrepo:<key>tags when no dedicated field is present. ExplicitrepoKeys/repo_keys/repoPathsstill take precedence, so a future engine-side field slots in without SDK changes.This makes repo-aware placement work for node definitions that tag their serviceable repos — e.g. the factory node (
@agent-relay/factory/node), which advertisesrepo:<label>tags from its clone map.🤖 Generated with Claude Code