Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/actions/setup-api-client/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -271,9 +271,9 @@ runs:
echo "$npm_err"
echo "::endgroup::"

# On first failure, also try --legacy-peer-deps in case it's a peer dep conflict
if [ "$attempt" -eq 1 ]; then
echo "::warning::Retrying with --legacy-peer-deps"
# On peer-dep / ERESOLVE failures, also try --legacy-peer-deps
if echo "$npm_err" | grep -qiE 'ERESOLVE|peer dep|Could not resolve dependency'; then
echo "::warning::Detected peer dependency conflict, retrying with --legacy-peer-deps"
npm_output=$(mktemp)
if npm install --no-save --legacy-peer-deps --location=project "${NPM_PACKAGES[@]}" 2>"$npm_output"; then
rm -f "$npm_output"
Expand Down
5 changes: 5 additions & 0 deletions .github/scripts/__tests__/agents-pr-meta-keepalive.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -590,6 +590,11 @@ test('extractIssueNumberFromPull skips "step #N" in body', () => {
assert.equal(extractIssueNumberFromPull(pull), null);
});

test('extractIssueNumberFromPull treats "Task #N" as a valid issue ref', () => {
const pull = { body: 'Task #42 is ready for review', head: { ref: 'feature' }, title: 'stuff' };
assert.equal(extractIssueNumberFromPull(pull), 42);
});

test('extractIssueNumberFromPull skips "version #N" in body', () => {
const pull = { body: 'Upgraded to version #4', head: { ref: 'feature' }, title: 'stuff' };
assert.equal(extractIssueNumberFromPull(pull), null);
Expand Down
2 changes: 1 addition & 1 deletion .github/scripts/agents_pr_meta_keepalive.js
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ function extractIssueNumberFromPull(pull) {
}
// Skip non-issue refs like "Run #123", "run #123", "attempt #2"
const preceding = bodyText.slice(Math.max(0, match.index - 20), match.index);
if (/\b(?:run|attempt|step|job|check|task|version|v)\s*$/i.test(preceding)) {
if (/\b(?:run|attempt|step|job|check|version|v)\s*$/i.test(preceding)) {
continue;
}
candidates.push(match[1]);
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/maint-69-sync-labels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ jobs:
github_token: ${{ github.token }}

- name: Install js-yaml
run: npm install -g js-yaml
run: npm install js-yaml
Copy link

Copilot AI Feb 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

npm install js-yaml will create/update package-lock.json (and potentially run install scripts), which is inconsistent with the repo’s other workflows that install one-off Node deps using --no-save --no-package-lock to avoid workspace churn. Consider installing js-yaml with --no-save --no-package-lock (and optionally --ignore-scripts) to keep the workspace clean and reduce supply-chain risk.

Suggested change
run: npm install js-yaml
run: npm install js-yaml --no-save --no-package-lock --ignore-scripts

Copilot uses AI. Check for mistakes.

- name: Parse labels-core.yml
id: parse
Expand Down
Loading
Loading