Skip to content

feat(mcp): add remote + stdio for loopover_get_repo_focus_manifest (#7808) - #7943

Merged
loopover-orb[bot] merged 1 commit into
JSONbored:mainfrom
kai392:feat/7808-mcp-repo-focus-manifest-v2
Jul 21, 2026
Merged

feat(mcp): add remote + stdio for loopover_get_repo_focus_manifest (#7808)#7943
loopover-orb[bot] merged 1 commit into
JSONbored:mainfrom
kai392:feat/7808-mcp-repo-focus-manifest-v2

Conversation

@kai392

@kai392 kai392 commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Registers loopover_get_repo_focus_manifest on the remote MCP server and local stdio MCP catalog (tool count 88 → 89).
  • Mirrors REST auth: api/internal trusted; static mcp rejected; sessions need maintainer/owner/operator + repo access.
  • Returns { repoFullName, manifest, policy } via loadRepoFocusManifest + compileFocusManifestPolicy (read-only; no refresh/PUT/CLI verb).

Closes #7808

Test plan

  • npm run build + build:mcp + typecheck + branding-drift:check
  • vitest coverage: mcp-output-schemas, mcp-cli-repo-focus-manifest, mcp-tool-rename-aliases (patch ~100% on changed executable lines)
  • CI green on this PR

@kai392
kai392 requested a review from JSONbored as a code owner July 21, 2026 20:07
@superagent-security

Copy link
Copy Markdown
Contributor

Superagent didn't find any vulnerabilities or security issues in this PR.

…nifest

Closes JSONbored#7808: mirror GET focus-manifest on remote MCP and local stdio with requireAppRole/session-repo auth, outputSchema, and mcp-output-schemas coverage; pin tool count 87→88.

Co-authored-by: Cursor <cursoragent@cursor.com>
@codecov

codecov Bot commented Jul 21, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 82.73%. Comparing base (d9b8abc) to head (c2ac750).
⚠️ Report is 1 commits behind head on main.
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #7943      +/-   ##
==========================================
- Coverage   91.83%   82.73%   -9.11%     
==========================================
  Files         735       92     -643     
  Lines       75433    24754   -50679     
  Branches    22950     4734   -18216     
==========================================
- Hits        69271    20479   -48792     
+ Misses       5083     4039    -1044     
+ Partials     1079      236     -843     
Flag Coverage Δ
shard-1 22.76% <15.78%> (-35.57%) ⬇️
shard-2 22.24% <26.31%> (-29.89%) ⬇️
shard-3 33.53% <89.47%> (-16.48%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
packages/loopover-mcp/bin/loopover-mcp.ts 14.18% <100.00%> (+0.11%) ⬆️
src/mcp/server.ts 96.71% <100.00%> (+0.05%) ⬆️

... and 643 files with indirect coverage changes

@loopover-orb loopover-orb Bot added the gittensor:feature Gittensor-scored feature linked to a feature issue — scores a 0.25x multiplier. label Jul 21, 2026
@loopover-orb

loopover-orb Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Tip

✅ LoopOver review result - approve/merge recommended

Review updated: 2026-07-21 20:21:11 UTC

7 files · 1 AI reviewer · no blockers · readiness 98/100 · CI green · clean

✅ Suggested Action - Approve/Merge

  • safe to merge

Review summary
The AI review returned non-blocking notes for this change but did not include a separate narrative summary. Review the nits below before deciding this PR.

Nits — 5 non-blocking
  • The externally-flagged 'secret' at test/unit/mcp-cli-repo-focus-manifest.test.ts:32 is just the placeholder string "in-process-token" used the same way other CLI stdio tests set `LOOPOVER_API_TOKEN`; not a real leak.
  • packages/loopover-mcp/bin/loopover-mcp.ts:1605 types the new stdio handler's destructured input as `any`, matching the existing convention in this file's other `registerStdioTool` calls — consistent but still worth tightening file-wide at some point.
  • Consider narrowing `repoFocusManifestOutputSchema.manifest`/`.policy` beyond `z.unknown()` if `compileFocusManifestPolicy`'s return shape is stable enough to type, so downstream clients get real structured-content validation.
  • packages/loopover-mcp/bin/loopover-mcp.ts:1605 — replace `({ owner, repo }: any)` with a typed destructure once any other stdio tool in the file gets the same cleanup, to avoid doing it piecemeal.
  • Possible secret-shaped assignment in the diff (generic_secret_assignment) — Verify the value is not a real credential.

Decision drivers

  • ✅ Code review — No blockers (1 reviewer)
  • ✅ Gate result — Passing (No configured blocker found.)
Context & advisory signals — never blocks the verdict
Signal Result Evidence
Linked issue ✅ Linked #7808
Related work ✅ No active overlap found No same-issue or scoped active PR overlap found.
Change scope ✅ 20/20 Low review scope from cached public metadata (1 linked issue).
Validation posture ✅ 25/25 PR body includes validation/test evidence.
Contributor workload ✅ 10/10 Author activity: 60 registered-repo PR(s), 33 merged, 0 issue(s).
Contributor context ✅ Confirmed Gittensor contributor kai392; Gittensor profile; 60 PR(s), 0 issue(s).
Improvement ✅ Minor risk: clean · value: minor · LLM: moderate
Linked issue satisfaction

Addressed
The PR registers loopover_get_repo_focus_manifest as both a remote MCP tool (categorized "maintainer", ownerRepoShape input, returning {repoFullName, manifest, policy} via loadRepoFocusManifest+compileFocusManifestPolicy) and a stdio tool proxying GET .../focus-manifest, while explicitly replicating the requireAppRole([maintainer,owner,operator])+session-repo-access gate rather than substituting r

Review context
  • Author: kai392
  • Role context: outside_contributor
  • Public audience mode: oss maintainer
  • Lane context: Repository is configured for direct PR review.
  • Public profile languages: JavaScript, Kotlin, Perl, TypeScript, Vue
  • Official Gittensor activity: 60 PR(s), 0 issue(s).
  • PR-specific overlap: none found.
Contributor next steps
  • Keep the PR focused and include validation evidence before maintainer review.
Signal definitions
  • Related work = same linked issue, overlapping active PRs, or title/path similarity.
  • Change scope = cached public metadata such as size labels, draft state, and review-burden hints.
  • Validation posture = whether the PR provides enough public validation/test evidence for maintainer review.
  • Contributor workload = public contributor activity and cleanup pressure, not a repo-wide quality failure.
  • Contributor context = public GitHub/Gittensor identity context; non-Gittensor status is not a blocker.
🧪 Chat with LoopOver

Ask LoopOver a question about this PR directly in a comment — grounded only in the same cached, public-safe facts shown above, never a new claim.

  • @loopover ask &lt;question&gt; answers contribution-quality Q&A with source citations and freshness.
  • @loopover chat &lt;question&gt; answers in natural prose from cached decision-pack facts via local inference (maintainer/collaborator; read-only).
  • A plain-language @loopover mention with a real question is routed to the closest matching read-only command automatically — no exact syntax required.

Full command reference: https://loopover.ai/docs/loopover-commands

🧪 Experimental — new and may change.

🟩 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.

  • Re-run LoopOver review

@loopover-orb loopover-orb Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LoopOver approves — the gate is satisfied and CI is green.

@loopover-orb
loopover-orb Bot merged commit bc042ed into JSONbored:main Jul 21, 2026
12 checks passed
@github-actions github-actions Bot mentioned this pull request Jul 22, 2026
12 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gittensor:feature Gittensor-scored feature linked to a feature issue — scores a 0.25x multiplier.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

loopover_get_repo_focus_manifest (read-only) has a REST route but no remote MCP tool or local stdio MCP tool

2 participants