chore(deps): bump the npm-deps group across 1 directory with 30 updates #67
Workflow file for this run
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
| 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!`); | |
| } |