feat: v0.3.0 — MCP engine parity + comprehensive perfSummary report#24
Conversation
…ated budget/patch; bump 0.2.0→0.3.0
There was a problem hiding this comment.
Code Review
This pull request upgrades the MCP server to version 0.3.0, bringing parity with the v0.2.0 engine signals by surfacing Full-Load Time, component hotspots, and prescriptive remediations. It also hardens trust-gating across tools like enforce_budget (introducing exit code 13 for gated/unmeasurable results), propose_patch, and verify_fix, and fixes a bug in the third-parties insight retrieval. The review feedback identifies an improvement opportunity in parseFullLoadConfig to explicitly check and exclude arrays using Array.isArray(raw) since typeof [] evaluates to "object" in JavaScript/TypeScript.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
|
|
||
| /** Pick only known FullLoadConfig keys from a client-supplied object. Returns undefined when empty. */ | ||
| function parseFullLoadConfig(raw: unknown): Partial<FullLoadConfig> | undefined { | ||
| if (!raw || typeof raw !== "object") return undefined; |
There was a problem hiding this comment.
In JavaScript/TypeScript, typeof [] evaluates to "object". To prevent arrays from being processed as plain objects, add an explicit Array.isArray(raw) check.
| if (!raw || typeof raw !== "object") return undefined; | |
| if (!raw || typeof raw !== "object" || Array.isArray(raw)) return undefined; |
…/JS/main-thread/errors+console); surface in CLI/MCP/markdown
…nsights, perfSummary)
ohmyperf MCP server v0.3.0 — engine parity + hardening
Surfaces the v0.2.0 engine diagnostic signals (Full-Load Time, component hotspots, prescriptive remediations) through the MCP server, and fixes two confirmed bugs. Fully additive —
schemaVersionstays1.0.0, the 17 tools keep their names/shapes, defaultmeasure/analyze_reportoutputs unchanged. Consensus-planned (Planner→Architect→Critic) and implemented via Ralph.Bug fixes
third-partiesinsight always returnednull— read the never-populatedpluginData["thirdParties"]; now reads thethird-partiesaudit (the same source the engine uses). Also unblocks theaudit_third_partiesprompt.enforce_budgetscored bot-challenge / error pages — now trust/servability-gated:exitCodewidened0|12|13(13 = gated/unmeasurable) withgated/gateReason+ aforceoverride.New (parity)
analyze_reportgains 3 insights (8 → 11):full-load-breakdown,hotspots,remediation— all degrade gracefully on reports lacking the data.measureforwardsdiagnose/rx/fullLoadto the engine (defaultmeasureunchanged).measure/generate_markdown_summarysummary surfaces Full-Load Time, gating phase, top hotspots/recs (presence-guarded).measure_and_diagnoseprompt (7 → 8). No new tool (count stays 17).Hardening
propose_patchwarns whentrust=unreliable;verify_fixreturnsinconclusiveinstead of pass/fail on an unreliable candidate.Release
0.2.0 → 0.3.0across the published package set; MCP server advertises0.3.0(was0.0.0-pre).Verification
turbo run build typecheck test lint→ 110/110 tasks green (whole monorepo).measuresummary).https://moodtrip.hoainho.info(real--rxreport): FLT=1732ms (gating=paint), 2 hotspots, 2 remediations all surfaced through the built MCP layer.0.3.0, 17 tools, 8 prompts, all new insights/flags present.See
docs/MCP_V0.3.0_PLAN.md(scope/design/ADR) anddocs/MCP_V0.3.0_PROGRESS.md(per-story notes).🤖 Generated with Claude Code