feat(mcp): add the idea-intake bridge and loopover_intake_idea tool - #5792
Conversation
Implements JSONbored#4798: a submission surface a renter can use to turn a freeform idea into a strict, claimable task-graph conforming to the JSONbored#4779 schema, scored against the same feasibility gate the loop already runs on. - new packages/loopover-engine/src/idea-intake.ts (pure): IdeaSubmission validation, task-graph assembly, and per-issue + graph-level feasibility scoring. The graph verdict is the least-favorable across issues (avoid > raise > go, inherited from buildFeasibilityVerdict), and an issue that carries a dependsOn is held (raise) until its prerequisite lands. The idea -> constituent-issue decomposition is the one fuzzy step and is passed in, so the bridge itself stays deterministic and testable (no IO, no AI). Re-exported from the engine barrel; src/idea-intake.ts is a thin re-export shim. - new loopover_intake_idea MCP tool (src/mcp/server.ts): validates a submission and returns the scored task-graph, or an actionable error list for a malformed/empty submission. Pure and source-free, mirroring loopover_check_slop_risk. - tests cover spec section 4 Example A (simple idea -> one issue -> go) and Example B (multi-step -> dependency chain -> raise), schema validation, and the malformed-input path, end-to-end through the MCP tool. Closes JSONbored#4798
|
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 #5792 +/- ##
=======================================
Coverage 95.07% 95.08%
=======================================
Files 581 582 +1
Lines 46178 46245 +67
Branches 14809 14838 +29
=======================================
+ Hits 43906 43973 +67
Misses 1516 1516
Partials 756 756
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
|
Tip 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 ✅ LoopOver review result - approve/merge recommendedReview updated: 2026-07-14 16:40:47 UTC
✅ Suggested Action - Approve/Merge
Review summary Nits — 5 non-blocking
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.
|
Summary
Implements #4798 — a submission surface a renter can actually use to turn a freeform idea into a strict, claimable task-graph conforming to the #4779 schema, scored against the same feasibility gate the loop already runs on (
buildFeasibilityVerdict).packages/loopover-engine/src/idea-intake.ts(pure — no IO, no AI):validateIdeaSubmission(bounds/owner/name/public-safe checks, all failures surfaced at once),buildTaskGraph(assembles constituent issues with inferred type labels — nevergittensor:priority— folded acceptance criteria, and per-issue feasibility), andscoreTaskGraph. The graph verdict is the least-favorable across issues (avoid > raise > go, inherited unchanged from the gate), and an issue carrying adependsOnis held (raise) until its prerequisite lands (spec §2 rule 5). The idea → constituent-issue decomposition is the one fuzzy step and is passed in, so the bridge itself stays deterministic and testable. Re-exported from the engine barrel;src/idea-intake.tsis a thin re-export shim (relative-source import, matchingsrc/signals/slop.ts).loopover_intake_ideaMCP tool (src/mcp/server.ts): validates a submission and returns the scored task-graph, or an actionable error list for a malformed/empty submission — pure and source-free, mirroringloopover_check_slop_risk.Acceptance (spec §4 + #4798): Example A (simple idea → one issue →
go) and Example B (multi-step → dependency chain →raise) both produce their expected task-graphs, and a malformed/empty submission returns a clear, actionable error rather than a silent failure — tested at the engine level and end-to-end through the MCP tool.Closes #4798
Scope
feat(mcp): …).CONTRIBUTING.md; nosite//CNAME/VitePress.Closes #4798.Validation
git diff --checknpm run typecheck(clean)npm --workspace @loopover/engine run buildandnpm run build:mcp(the new engine module + shim + MCP tool compile; cross-package resolution via the relative-source shim)npm run test:coverageon the changed code:packages/loopover-engine/src/idea-intake.tsis 100% lines & branches (82/82); the newsrc/mcp/server.tshandler + schema + registration are fully covered (statements and both branch sides).mcp-output-schemas("outputSchema on EVERY tool" + "every newly-schematized tool returns schema-valid structured content"),mcp-cli-tools,mcp-tool-rename-aliases,miner-mcp-tool-docs-parity— 56 tests.If any required check was skipped, explain why:
test:ciwas not run end-to-end locally (several shell/self-host steps are Linux-only on this Windows box); the change-relevant gates above were validated directly.Safety
gittensor:priority.loopover_check_slop_risk).