Repository navigation
WebMCP tools, in-app Claude assistant, and seed-queue navigation - #3
Conversation
Blueprint now exposes its seed analysis and UI actions as tools on document.modelContext (WebMCP, with the @mcp-b/webmcp-polyfill fallback): analyze_seed, get_seed_overview, get_ante_details, find_items, go_to_ante, buy_item, list/clear_purchases, load_seed_list, step_seed_queue, set_view, set_options, get/set_jaml_filter and remember. The same registry powers a new chat drawer (header button) that talks to the Anthropic API from the browser with a user-supplied key, streams replies, shows tool calls, keeps a persisted transcript and per-user notes, and carries a Balatro/JAML knowledge system prompt. Seed lists: paste any number of seeds into the sidebar (lines, commas, or CSV first column) and step through them with ArrowLeft/ArrowRight and Home/End; neighbouring seeds are pre-analyzed. Fixes: the analyzer never received the ante count after the maxAnte rename so only ante 1 was generated; the Max Ante input now drives engineState; SeedExplorer was mounted twice, duplicating the ante tabs. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DENTKJvFr15paqJHa7vMx
|
CI: the The job in run 34715531711 completed in 2 seconds with no runner assigned and no steps executed (job Locally on this head: No fix for this exists in the repo yet. Proposed patch for jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: 20, cache: npm }
- run: npm ci
- run: npm run build
env: { BASE_PATH: /Blueprint/ }
- uses: actions/upload-pages-artifact@v3
with: { path: ./dist }
deploy:
if: github.event_name != 'pull_request'
needs: build
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- uses: actions/configure-pages@v4
- id: deployment
uses: actions/deploy-pages@v4I'm re-running the job once to confirm it is deterministic, and will keep watching the PR. Generated by Claude Code |
Greptile SummaryAdds browser-accessible WebMCP tools, an Anthropic-powered in-app assistant, seed-queue navigation and prefetching, and supporting state and analysis utilities. The latest revision associates JAML search statistics with the filter that produced them, preventing edited filters from displaying stale measured rarity data.
Confidence Score: 5/5The PR appears safe to merge; the latest changes fully address the remaining stale JAML rarity finding, and no new actionable failures were identified. The JAML Calculus panel now uses measured hit statistics only when
|
| Filename | Overview |
|---|---|
| src/components/blueprint/jamlView/JamlView.tsx | Tracks the JAML filter used for each search and avoids applying stale measured statistics after the filter is edited. |
| src/modules/webmcp/tools.ts | Implements shared read and mutation tools over application state and seed analysis. |
| src/modules/state/analysisResultProvider.tsx | Centralizes cached analysis and constructs seed-specific options for out-of-band analysis and queue prefetching. |
| src/components/AssistantDrawer.tsx | Adds persistent streaming assistant chat backed by the shared tool registry. |
| src/components/SeedQueue.tsx | Adds seed-list controls, global navigation hotkeys, and neighboring-seed prefetching. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart LR
User[User or browser agent] --> Assistant[Assistant drawer]
User --> WebMCP[document.modelContext]
Assistant --> Registry[Shared tool registry]
WebMCP --> Registry
Registry --> Store[Zustand application state]
Registry --> Analyzer[Seed analyzer and result cache]
Queue[Seed queue navigation] --> Store
Queue --> Analyzer
Analyzer --> Results[Seed and ante summaries]
Reviews (4): Last reviewed commit: "Calculus panel: only treat hits as measu..." | Re-trigger Greptile
- Out-of-band reads (get_seed_overview/get_ante_details/find_items with a seed other than the loaded one) and queue prefetches now analyze with empty purchases and that seed's own starting deck, so the loaded seed's buys no longer alter their RNG and prefetch keys match what the store holds after a jump. setSeed/setDeck share the same startingDeckCards. - Summaries and item searches include ante 0. - Seed lists: comma/semicolon/tab separated seeds on one line are all kept; only all-numeric trailing fields are treated as CSV tally columns, and a "seed" header row is skipped. - WebMCP annotations mark every non-read-only tool consequential. - The assistant drops an empty pending bubble when a request is stopped or fails before any output. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DENTKJvFr15paqJHa7vMx
Rarity is hits ÷ seeds checked once a search has hits, otherwise jaml-ui's filter estimate (labelled ±10x). From p: expected wait 1/p, coin-flip point ln 2/p, 95% point ln 20/p, each with an ETA at the measured rig speed via estimateEtaSeconds/formatEta. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DENTKJvFr15paqJHa7vMx
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DENTKJvFr15paqJHa7vMx
…earched Editing the JAML after a search falls back to the estimate for the edited filter and says the retained stats belong to the previous one. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015DENTKJvFr15paqJHa7vMx
What this adds
WebMCP. Blueprint registers its analysis and UI actions as tools on
document.modelContext(spec entry point as of Chrome 150;@mcp-b/webmcp-polyfillmakes it exist elsewhere). Browser agents, the Chrome DevTools WebMCP pane, and the Model Context Tool Inspector extension can call them directly:get_app_state,analyze_seed,get_seed_overview,get_ante_details,find_items,go_to_ante,buy_item,list_purchases,clear_purchases,load_seed_list,step_seed_queue,set_view,set_options,get_jaml_filter,set_jaml_filter,remember.The registry (
src/modules/webmcp/registry.ts) is the single source of truth;tools.tsdrives the zustand store and the seed analyzer,summary.tsturnsSeedResultsContainerinto compact per-ante JSON.Assistant chat. A chat button in the header opens a drawer backed by
@anthropic-ai/sdkrunning in the browser (user-supplied key, stored in localStorage, sent only to api.anthropic.com). It uses the beta tool runner over the same registry, streams text, shows each tool call, persists the transcript, and injects per-userremembernotes plus a Balatro/JAML knowledge base into a cached system prompt. Model is selectable (Opus 5 default); server-side refusal fallbacks are enabled.Seed lists. Paste any number of seeds into the sidebar (lines, commas, spaces, or CSV first column).
ArrowLeft/ArrowRightstep,Home/Endjump; neighbouring seeds are pre-analyzed so switching is instant. Position pill in the header.Fixes found on the way
settings.antes, but the provider passedengineState(which hasmaxAnte), so every seed generated only ante 1. Now passesantes: maxAnte. The Max Ante input was wired toselectedAnte; it now setsengineState.maxAnte.SeedExplorerwas rendered twice inMain, duplicating the ante tabs.Verification
npx vitest run: 583 passed, 2 failed. The 2 failures (ante-null.spec,spoiler_peek.spec) fail identically onmasterbefore this change.npx tsc --noEmit: no errors in touched files (the repo has pre-existing errors elsewhere).npx eslinton touched files: clean.npx vite build: succeeds.document.modelContext.getTools()lists 16 tools andexecuteToolround-tripsanalyze_seed→find_items→buy_item→list_purchases→set_jaml_filter; seed list load +ArrowRight/Endchange the analyzed seed; assistant drawer opens with no console errors.🤖 Generated with Claude Code
https://claude.ai/code/session_015DENTKJvFr15paqJHa7vMx
Generated by Claude Code