feat: Machine Capability Discovery & needs:* Label Routing (#514)#520
Merged
bradygaster merged 4 commits intobradygaster:devfrom Mar 23, 2026
Merged
Conversation
bradygaster
approved these changes
Mar 23, 2026
Owner
bradygaster
left a comment
There was a problem hiding this comment.
Solid feature — the opt-in capability system is clean and the watch.ts integration is surgical. Two things to address:\n\n1. package-lock.json changes: This PR bumps the Node engine requirement from >=20.0.0\ to >=22.5.0\ across root, CLI, and SDK packages. This is a breaking change that needs its own discussion/decision — please revert the package-lock.json changes so this PR stays scoped to the capability feature.\n2. Stray test file: \ est/capabilities.test.ts\ should be in this PR (not #519 where it currently also appears). Make sure it's included here.\n\nArchitecture-wise, the discriminated union return type and null-capabilities pass-through are exactly right. Nice work! 👍
bradygaster
added a commit
to tamirdresher/squad
that referenced
this pull request
Mar 23, 2026
…r#520) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
bradygaster
added a commit
that referenced
this pull request
Mar 23, 2026
* docs: KEDA external scaler template for autoscaling (#516) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: remove stray test/capabilities.test.ts (belongs to PR #520) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <Copilot@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: bradygaster <bradyg@microsoft.com>
The lockfile had been regenerated with >=22.5.0 engine requirements, which is a breaking change. Reverting to keep Node >=20 compatibility. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…exports) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
diberry
pushed a commit
to diberry/squad
that referenced
this pull request
Mar 23, 2026
Flight review blocker — config file was .squad/config.json, should be machine-capabilities.json per PR bradygaster#520's loadCapabilities() implementation. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
diberry
pushed a commit
to diberry/squad
that referenced
this pull request
Mar 23, 2026
Flight review blocker — config file was .squad/config.json, should be machine-capabilities.json per PR bradygaster#520's loadCapabilities() implementation. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
chrislomonico
pushed a commit
to clomonico/squad
that referenced
this pull request
Mar 26, 2026
bradygaster#545) Adds opt-in OTel shell metrics (SQUAD_TELEMETRY=1): session_count, session_duration_ms, agent_response_latency_ms, error_count. Zero overhead when off. Closes bradygaster#508, Closes bradygaster#520, Closes bradygaster#526, Closes bradygaster#530, Closes bradygaster#531 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
atuannguyen1101
pushed a commit
to atuannguyen1101/squad
that referenced
this pull request
Mar 31, 2026
Flight review blocker — config file was .squad/config.json, should be machine-capabilities.json per PR bradygaster#520's loadCapabilities() implementation. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #514
Adds machine capability discovery and
needs:*label-based issue filtering for Ralph.Changes
New SDK module:
packages/squad-sdk/src/ralph/capabilities.tsloadCapabilities(): Readsmachine-capabilities.jsonfrom project or home dirextractNeeds(): Extractsneeds:*labels from issuescanHandleIssue(): Checks if machine can handle an issuefilterByCapabilities(): Filters issue list by machine capabilitiesKNOWN_CAPABILITIES: 8 well-known capability identifiersNew template:
.squad-templates/machine-capabilities.mdTests:
test/capabilities.test.ts(12 test cases)Changeset included
How It Works
~/.squad/machine-capabilities.jsonneeds:gpu,needs:browseretc. are filteredneeds:*labels always pass through (opt-in)Context
Based on production experience running Squad across laptops, DevBoxes, and AKS clusters with 8 different capability types.