Files
openwork/.github/workflows/opencode-agents.yml
2026-05-04 17:01:22 -07:00

107 lines
3.5 KiB
YAML

name: Opencode Agents
on:
workflow_dispatch:
inputs:
target:
description: Run issue triage or duplicate PR check
required: true
type: choice
options:
- issue
- pull_request
number:
description: Issue or pull request number
required: true
type: number
jobs:
triage-issue:
if: inputs.target == 'issue'
runs-on: blacksmith-4vcpu-ubuntu-2404
permissions:
contents: read
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Setup Node
uses: actions/setup-node@v6
with:
node-version-file: .nvmrc
- name: Install opencode
run: |
version="$(node -e "const fs=require('fs'); const parsed=JSON.parse(fs.readFileSync('constants.json','utf8')); process.stdout.write(String(parsed.opencodeVersion||'').trim().replace(/^v/,''));")"
curl -fsSL https://opencode.ai/install | bash -s -- --version "$version" --no-modify-path
- name: Triage issue
env:
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ISSUE_NUMBER: ${{ inputs.number }}
run: |
cat > /tmp/issue_prompt.txt <<'PROMPT_EOF'
The following issue was just opened, triage it:
PROMPT_EOF
ISSUE_TITLE="$(gh issue view "$ISSUE_NUMBER" --json title --jq .title)"
ISSUE_BODY="$(gh issue view "$ISSUE_NUMBER" --json body --jq .body)"
printf '\nTitle: %s\n\n%s\n' "$ISSUE_TITLE" "$ISSUE_BODY" >> /tmp/issue_prompt.txt
opencode run --agent triage "$(cat /tmp/issue_prompt.txt)"
duplicate-prs:
if: inputs.target == 'pull_request'
runs-on: blacksmith-4vcpu-ubuntu-2404
permissions:
contents: read
pull-requests: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Setup Node
uses: actions/setup-node@v6
with:
node-version-file: .nvmrc
- name: Install opencode
run: |
version="$(node -e "const fs=require('fs'); const parsed=JSON.parse(fs.readFileSync('constants.json','utf8')); process.stdout.write(String(parsed.opencodeVersion||'').trim().replace(/^v/,''));")"
curl -fsSL https://opencode.ai/install | bash -s -- --version "$version" --no-modify-path
- name: Build prompt
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_NUMBER: ${{ inputs.number }}
run: |
{
echo "Check for duplicate PRs related to this new PR:"
echo ""
echo "CURRENT_PR_NUMBER: $PR_NUMBER"
echo ""
echo "Title: $(gh pr view \"$PR_NUMBER\" --json title --jq .title)"
echo ""
echo "Description:"
gh pr view "$PR_NUMBER" --json body --jq .body
} > pr_info.txt
- name: Check for duplicate PRs
env:
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_NUMBER: ${{ inputs.number }}
run: |
opencode run --agent duplicate-pr "$(cat pr_info.txt)" > /tmp/comment_output.txt
{
echo "_The following comment was made by an LLM, it may be inaccurate:_"
echo ""
cat /tmp/comment_output.txt
} > /tmp/comment_body.txt
gh pr comment "$PR_NUMBER" --body-file /tmp/comment_body.txt