Skip to content

chore(deps): bump the npm-deps group across 1 directory with 30 updates #67

chore(deps): bump the npm-deps group across 1 directory with 30 updates

chore(deps): bump the npm-deps group across 1 directory with 30 updates #67

Workflow file for this run

name: Wave Progress Tracking
on:
issues:
types: [opened, edited, labeled, unlabeled]
issue_comment:
types: [created, edited]
pull_request:
types: [opened, ready_for_review, closed]
jobs:
track-wave-progress:
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: read
steps:
- name: Check PR for Wave Label
if: github.event_name == 'pull_request'
uses: actions/github-script@v7
with:
script: |
const pr = github.context.payload.pull_request;
const { owner, repo } = github.context.repo;
// Extract issue number from PR body (e.g., "Closes #212")
const issueMatch = pr.body?.match(/#(\d+)/);
if (!issueMatch) return;
const issueNumber = issueMatch[1];
const issue = await github.rest.issues.get({
owner, repo,
issue_number: issueNumber
});
// Copy wave and agent labels from issue to PR
const waveLabel = issue.data.labels.find(l => l.name.startsWith('wave:'));
const agentLabel = issue.data.labels.find(l => l.name.startsWith('agent:'));
if (waveLabel || agentLabel) {
const labels = [];
if (waveLabel) labels.push(waveLabel.name);
if (agentLabel) labels.push(agentLabel.name);
labels.push('pr-auto-labeled');
await github.rest.issues.addLabels({
owner, repo,
issue_number: pr.number,
labels
});
console.log(`✅ PR #${pr.number} labeled: ${labels.join(', ')}`);
}
auto-label-ready-for-testing:
runs-on: ubuntu-latest
permissions:
issues: write
steps:
- name: Add ready-for-testing label when PR merged
if: github.event.pull_request.merged == true
uses: actions/github-script@v7
with:
script: |
const pr = github.context.payload.pull_request;
const { owner, repo } = github.context.repo;
// Find linked issue
const issueMatch = pr.body?.match(/#(\d+)/);
if (!issueMatch) return;
const issueNumber = issueMatch[1];
// Add ready-for-testing label
await github.rest.issues.addLabels({
owner, repo,
issue_number: issueNumber,
labels: ['ready-for-testing', 'status:in-review']
});
// Post comment
await github.rest.issues.createComment({
owner, repo,
issue_number: issueNumber,
body: `🔄 **PR merged!** Issue now ready for testing. \`@agent:validator\` please begin validation. \n\nLink: ${pr.html_url}`
});
wave-status-report:
runs-on: ubuntu-latest
permissions:
issues: read
if: github.event_name == 'schedule' || contains(github.event.comment.body, '/wave-status')
steps:
- name: Generate Wave Status Report
uses: actions/github-script@v7
with:
script: |
const { owner, repo } = github.context.repo;
// Find all open wave issues
const waves = await github.rest.issues.listForRepo({
owner, repo,
labels: 'agent:architect',
state: 'open',
per_page: 10
});
// For each wave, count issues
const waveData = {};
for (const wave of waves.data) {
if (!wave.title.startsWith('Wave')) continue;
const waveNum = wave.title.match(/Wave (\d+)/)?.[1];
if (!waveNum) continue;
// Count linked issues with body content
const issueMatches = (wave.body || '').match(/#(\d+)/g) || [];
const issueCount = issueMatches.length;
waveData[waveNum] = {
number: wave.number,
title: wave.title,
issues: issueCount,
state: wave.state
};
}
const report = Object.entries(waveData)
.map(([num, data]) => `- **Wave ${num}**: ${data.title} (${data.issues} issues)`)
.join('\n');
console.log('📊 Wave Status:\n' + report);
notify-wave-completion:
runs-on: ubuntu-latest
permissions:
issues: write
if: github.event.pull_request.merged == true
steps:
- name: Check if all wave issues done
uses: actions/github-script@v7
with:
script: |
const { owner, repo } = github.context.repo;
// Find current wave (open wave issue with earliest creation)
const waves = await github.rest.issues.listForRepo({
owner, repo,
labels: 'agent:architect',
state: 'open'
});
const currentWave = waves.data.find(w => w.title.includes('Wave'));
if (!currentWave) return;
// Extract issue numbers from wave body
const issueMatches = (currentWave.body || '').match(/#(\d+)/g) || [];
if (issueMatches.length === 0) return;
// Check if all issues are closed
let allClosed = true;
for (const match of issueMatches) {
const issueNum = match.slice(1);
const issue = await github.rest.issues.get({
owner, repo,
issue_number: issueNum
});
if (issue.data.state !== 'closed') {
allClosed = false;
break;
}
}
if (allClosed) {
console.log(`✅ All issues in Wave ${currentWave.number} are closed!`);
}