feat(mcp)!: Phase 4 - full-cutover rename MCP server class + 96 tool names to loopover_* - #5739
Conversation
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
loopover-ui | 14808b8 | Commit Preview URL Branch Preview URL |
Jul 14 2026, 10:49 AM |
…names to loopover_* Phase 4 of the gittensory -> loopover rebrand epic (#5705): renames the hosted MCP server's identity and every tool it registers. - src/mcp/server.ts: GittensoryMcp -> LoopoverMcp, MCP server name: "gittensory" -> "loopover", all 83 gittensory_*-prefixed registerTool names -> loopover_*, plus prose (descriptions, comments) updated while carefully preserving every genuine Gittensor (the Bittensor subnet) reference untouched. - packages/gittensory-mcp/bin/loopover-mcp.js: 96 gittensory_* cross-references in recommendedPrompts/tool-guidance text updated to match; local config dir ~/.config/gittensory -> ~/.config/loopover; MCP resource URIs gittensory://* -> loopover://*; local stdio server name "gittensory-local" -> "loopover-local"; generated client-config keys ("mcpServers": { "gittensory": ... }) -> "loopover". The hardcoded defaultApiUrl/legacyDefaultApiUrls (gittensory-api.aethereal.dev) is deliberately left untouched -- no loopover-api.aethereal.dev DNS/custom-domain exists yet, so flipping it would break connectivity, not just branding. - ~95 source/test files: bulk gittensory_*/GittensoryMcp rename across the tool catalog's consumers (packages/gittensory-engine, packages/gittensory-miner, test/unit/mcp-*.test.ts and related). - 9 markdown docs (packages/gittensory-{miner,engine}/README.md, docs/*.md, .claude/skills/contributing-to-loopover/*.md) had the same gittensory_* tool names in a file extension (.md) the initial code-file sweep didn't cover; CHANGELOG.md files deliberately left untouched (house rule). - scripts/check-docs-drift.mjs: extractGittensoryReviewFlags -> extractLoopOverReviewFlags (a .mjs file the initial .ts/.js/.tsx sweep also missed). Caught and reverted several real regressions from a broad rename sweep before they landed: a legacy MCP-tool-alias-retirement test (#4777, unrelated to this epic) whose "gittensory_" values were deliberately-retired old names, not stale branding; several test fixtures using "JSONbored/Gittensory" as a realistic repo-slug (the actual GitHub repo, not yet renamed at the infra level) rather than brand prose; and a GraphQL response alias computed at runtime from the real (unrenamed) repo full name. BREAKING CHANGE: every gittensory_* MCP tool name is now loopover_*, the hosted MCP server identifies itself as "loopover" (was "gittensory"), and the CLI's local resource URIs/config-dir/generated client config all use the loopover_* naming and ~/.config/loopover path. No dual-read/alias, per the epic's full-cutover mandate. Advances #5705 Note: local `tsc --noEmit` intermittently misreports test/unit/check-docs-drift-script.test.ts's import of the renamed extractLoopOverReviewFlags as unresolved in this specific worktree (reproduces with any renamed export from that file, persists across tsbuildinfo deletion/--incremental false/clean npm ci, and the identical rename typechecks fine everywhere else) -- runtime (vitest) and the actual docs-drift script both execute the renamed function correctly, so this looks like a local cache artifact rather than a real type error; verify against CI's fresh checkout.
scripts/check-docs-drift.d.mts is a hand-maintained .d.mts sibling that TS's Bundler module resolution prefers over the .mjs source when allowJs is off (confirmed via --traceResolution). It still declared the pre-rename extractGittensoryReviewFlags, so any rename of that export -- correct or not -- broke typecheck regardless of the .mjs file's actual content. None of this rebrand's earlier greps covered the .d.mts extension.
26ea51a to
ad1ac59
Compare
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #5739 +/- ##
=======================================
Coverage 95.06% 95.07%
=======================================
Files 581 581
Lines 46181 46181
Branches 14811 14811
=======================================
+ Hits 43904 43905 +1
Misses 1516 1516
+ Partials 761 760 -1
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
|
Caution 🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥 🛑 LoopOver review result - fixes requiredReview updated: 2026-07-14 10:54:10 UTC
🛑 Suggested Action - Manual Review Review summary Nits — 5 non-blocking
Why this is blocked
📋 Copy for AI agents — paste into your coding agentCI checks failing
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 Visual preview
Click any thumbnail to open the full-size screenshot. Before = production · After = this PR's preview deploy. 🟩 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.
|
…nch coverage mcp-package.ts's known-latest-version guard was stale (0.7.1) against the now-published @loopover/mcp 0.9.0 -- an unrelated concurrent release, not caused by this PR, but ui:version-audit fails CI either way. getIssueQuality's "computed" (no cached snapshot) branch had no test exercising it -- only the "snapshot" (cached) and "not_found" arms were covered, so the summary-text rename on this branch tripped patch coverage.
Summary
Phase 4 of the gittensory -> loopover rebrand epic (#5705): renames the hosted MCP server's identity and every tool it registers.
src/mcp/server.ts:GittensoryMcp->LoopoverMcp, MCP servername: "gittensory"->"loopover", all 83gittensory_*-prefixedregisterToolnames ->loopover_*, plus prose updated while preserving every genuineGittensor(the Bittensor subnet) reference untouched.packages/gittensory-mcp/bin/loopover-mcp.js: 96gittensory_*cross-references in tool-guidance text updated to match; local config dir~/.config/gittensory->~/.config/loopover; MCP resource URIsgittensory://*->loopover://*; local stdio server name"gittensory-local"->"loopover-local"; generated client-config keys ->"loopover". The hardcodeddefaultApiUrl/legacyDefaultApiUrls(gittensory-api.aethereal.dev) is deliberately left untouched — noloopover-api.aethereal.devDNS/custom-domain exists yet, so flipping it would break connectivity, not just branding.packages/gittensory-engine,packages/gittensory-miner,test/unit/mcp-*.test.ts).CHANGELOG.mdfiles deliberately left untouched.scripts/check-docs-drift.mjs:extractGittensoryReviewFlags->extractLoopOverReviewFlags(a.mjsfile the initial sweep also missed).Caught and reverted several real regressions from the broad rename sweep before they landed: a legacy MCP-tool-alias-retirement test (#4777, unrelated to this epic) whose
gittensory_values were deliberately-retired old names; several test fixtures usingJSONbored/Gittensoryas a realistic repo-slug (the actual GitHub repo, not renamed at the infra level); and a GraphQL response alias computed at runtime from the real repo full name.BREAKING CHANGE: every
gittensory_*MCP tool name is nowloopover_*, the hosted MCP server identifies itself as"loopover", and the CLI's local resource URIs/config-dir/generated client config all use the new naming. No dual-read/alias, per the epic's full-cutover mandate.Advances #5705
Test plan
npx vitest run— 835 passed | 2 skipped, 16218 tests passed | 12 skipped, 0 failednpm run docs:drift-checknpm run manifest:drift-checknpx tsx scripts/write-ui-openapi.ts --check(regeneratedapps/gittensory-ui/public/openapi.json)npm run typecheck— localtsc --noEmitintermittently misreports one renamed export as unresolved in this specific worktree only (reproduces with any renamed export from that file, survives tsbuildinfo deletion/--incremental false/cleannpm ci); runtime and the actual docs-drift script both execute it correctly. Verifying against CI's fresh checkout.