feat(mcp): expose the skipped-PR audit trail as a read-only maintainer MCP tool - #5879
feat(mcp): expose the skipped-PR audit trail as a read-only maintainer MCP tool#5879nghetienhiep wants to merge 1 commit into
Conversation
…r MCP tool Add loopover_get_skipped_pr_audit, mirroring GET /v1/app/skipped-pr-audit's maintainer-authenticated, measurement-only shape. Extract the route's role check and repo-scope resolution into shared services/skipped-pr-audit.ts and services/control-panel-roles.ts so the HTTP route and the new tool call the same logic instead of drifting apart. The shared static mcp identity is scoped to MCP_READ_REPO_ALLOWLIST rather than blanket-trusted, matching every other repo-scoped/cross-repo tool in this file. Closes JSONbored#5825
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
|
Caution 🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥 🛑 LoopOver review result - reject/close recommendedReview updated: 2026-07-14 21:30:34 UTC
🛑 Suggested Action - Reject/Close Review summary Nits — 5 non-blocking
Why this is blocked
📋 Copy for AI agents — paste into your coding agentCI checks failing
Linked issue satisfactionAddressed Review context
Contributor next steps
Signal definitions
[BETA] Chat with GittensoryAsk Gittensory a question about this PR directly in a comment — grounded only in the same cached, public-safe facts shown above, never a new claim.
Full command reference: https://gittensory.aethereal.dev/docs/gittensory-commands 🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by LoopOver, a quiet PR intelligence layer for OSS maintainers.
|
|
Gittensory is closing this pull request on the maintainer's behalf (CI is failing (validate, validate-tests (4), validate-tests (3), validate-tests (6), validate-tests (2), validate-tests (1), validate-tests (5)); Linked issue overlaps another open PR; duplicate of another open PR). This is an automated maintenance action — to pursue this change, please open a new pull request with the issues resolved. Closed PRs may be analyzed later to improve review accuracy, but they are not automatically reopened or re-reviewed. |
Summary
loopover_get_skipped_pr_audit, a maintainer-authenticated, read-only MCP tool that exposes the same skipped-PR audit trailGET /v1/app/skipped-pr-auditalready returns, so an MCP client can see why the review pipeline silently skipped a PR without hitting the dashboard.skippedPrAuditRepoScope) into a sharedsrc/services/skipped-pr-audit.tsmodule, andgetRoleSummaryForIdentityintosrc/services/control-panel-roles.ts, so the HTTP route and the new MCP tool call the exact same logic instead of two copies drifting apart.maintainer-triageMCP profile's recommended tools.Scope
type(scope): short summaryConventional Commit format, for examplefix(api): restore profile access checks.CONTRIBUTING.mdand does not reintroduce GitHub Pages, VitePress,site/, orCNAME.Closes #123) — a linked open issue is required for every contributor PR.Validation
git diff --checknpm run actionlintnpm run typechecknpm run test:coveragelocally;codecov/patchrequires ≥99% coverage of the lines AND branches you changed (aim for 100% on your diff so CI variance does not fail near the threshold). Global coverage is a non-blocking trend with a loose 90% backstop, not the gate.npm run test:workersnpm run build:mcpnpm run test:mcp-packnpm run ui:openapi:checknpm run ui:lintnpm run ui:typechecknpm run ui:buildnpm audit --audit-level=moderateIf any required check was skipped, explain why:
ui:lint/ui:typecheck/ui:buildare skipped: this PR does not touchapps/loopover-ui/**at all (backendsrc/mcp,src/api,src/servicesand thepackages/loopover-mcpCLI's agent-profile list only), so there is no UI surface for those checks to exercise.Safety
UI Evidencesection below with JPG/JPEG or PNG screenshots arranged as organized, captioned, clickable thumbnails.No UI changes in this PR (backend MCP tool + CLI agent-profile list only), so the UI Evidence section is not applicable.
Notes
GET /v1/app/skipped-pr-audit's blanket trust of every non-session (static) identity. The sharedLOOPOVER_MCP_TOKENstaticmcpidentity is scoped toMCP_READ_REPO_ALLOWLIST(per-repo whenrepoFullNameis given, full wildcard opt-in when it isn't — no single repo to scope an unfiltered, cross-repo request against), matching the existingcanAccessRepo/requireDiscoveryAccesspattern already used by every other repo-scoped and cross-repo MCP tool in this file.api/internalstatic identities and real maintainer/owner/operator sessions behave exactly like the HTTP route.Closes #5825