feat(miner-rag): wire issue-centric RAG into scoped MCP tool (#4293) - #4440
Conversation
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #4440 +/- ##
==========================================
+ Coverage 93.97% 94.00% +0.02%
==========================================
Files 411 413 +2
Lines 37202 37283 +81
Branches 13587 13619 +32
==========================================
+ Hits 34962 35047 +85
+ Misses 1585 1580 -5
- Partials 655 656 +1
🚀 New features to boost your workflow:
|
|
Warning 🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 ⏸️ Gittensory review result - manual review recommendedReview updated: 2026-07-09 19:14:21 UTC
⏸️ Suggested Action - Manual Review
Review summary Nits — 6 non-blocking
Linked issue satisfactionAddressed Review context
Contributor next steps
Signal definitions
🟩 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 Gittensory, a quiet PR intelligence layer for OSS maintainers.
|
Closes #4293
Summary
POST /v1/issue-rag/retrieve, and the Worker runsretrieveContextWithMetricsserver-side.gittensory_retrieve_issue_context— a repo-scoped, metadata-only MCP tool for the miner analyze phase. It composes the query viabuildIssueRagQuery(fromgittensory-engine, feat(engine): extract buildIssueRagQuery to gittensory-engine #4254) and returns retrieved paths + scores only — never chunk bodies or source text.retrieveIssueRagContext/runIssueRagRetrievalwith the same fail-safe degradation pattern asrag-wire.ts(missing Vectorize/AI, cold index, short query, or backend errors → empty telemetry, never throws).Design notes
gittensory_find_opportunitiestargeted mode (requireRepoAccess/requireApiRepoReadAccess).retrievedPaths,topScore,candidates, etc. — the same telemetry family review RAG uses internally, without returningformatRetrievedContexttext over the wire./v1/issue-rag/retrieveis classifiedexpensive(embedding + vector query), like/v1/opportunities/find.Test plan
test/unit/issue-rag-retrieval.test.ts— query floor, metadata-only success, missing bindings, parity knobs, slashless repo, fail-safetest/unit/issue-rag-mcp.test.ts— input validation +runIssueRagRetrievalstatusestest/unit/mcp-issue-rag.test.ts— hosted MCP tool registration, auth, metadata-only payloadtest/unit/mcp-cli-issue-rag.test.ts— stdio proxy to/v1/issue-rag/retrievetest/integration/api.test.ts— API invalid-request guardtest/unit/auth.test.ts— expensive route classificationtest/unit/mcp-output-schemas.test.ts— outputSchema registrationnpm run test:cigreen locallynpm audit --audit-level=moderateclean