← Files egoARCHIVED FILE

skills/ego-browser/learnings/github/tools/open-issues.js

987 Bytes · Oct 5, 2026 · 18:34 UTC

↓ Download file

const OWNER_RE = /^[A-Za-z0-9](?:[A-Za-z0-9-]{0,37}[A-Za-z0-9])?$/;
const REPO_RE = /^[A-Za-z0-9._-]+$/;

export async function getOpenIssues(ctx, args = {}) {
  const owner = args.owner || "";
  const repo = args.repo || "";
  if (!OWNER_RE.test(owner) || !REPO_RE.test(repo)) {
    throw new Error("valid GitHub owner and repo are required");
  }

  await ctx.openOrReuseTab(`https://github.com/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/issues`, { wait: true });
  await ctx.waitForLoad();

  const issues = await ctx.js(String.raw`(() => {
    const rows = [...document.querySelectorAll('[data-test-id="issue-list-item"]')]
    return rows.map(el => {
      const title = el.querySelector('a[aria-label*="issue"]')?.innerText?.trim() || el.querySelector('h2 a')?.innerText?.trim() || ''
      const number = el.querySelector('[itemprop="discussionUrl"]')?.innerText?.trim() || ''
      return { title, number }
    }).filter(i => i.title)
  })()`);

  return issues;
}

SHA-256: 54405d5b5a213372aa2541cd8f6dc141b30ab97fc13072135e466f5f14e996a4