Skip to content

Conversation

@mattsolo1
Copy link
Contributor

No description provided.

mattsolo1 and others added 14 commits November 5, 2025 10:47
This is the first implementation of gnomAD Assistant, an AI-powered chat interface
that helps users navigate and explore the gnomAD database.

Key changes:
- Created separate CopilotKit server to avoid GraphQL conflicts
- Added CopilotKit React dependencies to browser
- Integrated CopilotSidebar component with variant navigation action
- Added Copilot button to navigation bar
- Connected to gmd MCP tool server for gnomAD-specific functionality
- Updated pnpm-lock.yaml with new dependencies

The assistant can currently:
- Navigate to variant pages based on variant IDs or rsIDs
- Use the gmd tool server for additional gnomAD queries

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
… gnomAD Assistant

- Create new GnomadCopilot component with non-floating layout
- Chat panel takes up 1/3 of screen by default (was 50%)
- Add resizable functionality with drag handle
- Remove Copilot menu item from navbar
- Increase chat input font size to 14px
- Update initial greeting message

The assistant now integrates better with the page layout and provides
a more intuitive user experience with adjustable panel width.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- Add page context tracking to DocumentTitle using useCopilotReadable
- Pass gene/variant context from GenePage and VariantPage to assistant
- Add useGnomadCopilotActions hook for displaying variant data in chat
- Add styles for chat components to properly display tables and data

This enables the assistant to understand what the user is viewing
and display rich data components directly in the chat interface.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- Change action name from 'showVariantInfo' to 'get_variant_summary'
- Update parameter names to match MCP tool (variantId -> variant_id)
- Add optional dataset parameter with fallback to current dataset

This fixes the variant table display in the chat interface by ensuring
the frontend action properly invokes the backend MCP tool.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
Removed the get_variant_summary action and its associated useGnomadCopilotActions hook. This action is no longer needed in the CopilotKit integration.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- Add "Interpret this variant" suggestion on variant pages
- Set assistant chat window to be open by default
- Style suggestion chips with 14px font size to match chat UI
- Use conditional rendering to show suggestions only on relevant pages

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
…on registration

The CopilotSidebar component was registering a duplicate navigateToVariantPage action
which caused "Action argument unparsable" errors due to receiving malformed JSON.
Since this component is not imported anywhere and GnomadCopilot provides the same
functionality with a better split-screen layout, it's safe to remove.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- Add Progress component for displaying MCP tool activity logs
- Implement useMCPStateRender hook for inline tool state visualization
- Integrate agent state rendering into GnomadCopilot
- Remove old ActionMessage/CustomRenderMessage code in favor of new system
- Add collapsible parameter display and status indicators

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
mattsolo1 and others added 5 commits November 18, 2025 10:38
Add region context to MCP tools by passing region data to DocumentTitle
component and handling it in the context detection logic. This enables
the assistant to access genomic region information (chrom, start, stop).

Add example pill questions for Juha Genetics API queries across variant,
gene, and region pages. Users can now easily query for credible sets,
colocalizations, QTL data, and gene-disease associations.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
- Create table column definitions for credible sets, colocalizations, and gene-disease data
- Implement JuhaToolsDisplay component with virtualized Grid tables for large datasets
- Add useJuhaActions hook defining 6 frontend MCP actions for Juha API tools
- Integrate Juha actions into GnomadCopilot
- Support proper sorting state management for each table type
- Fix React key uniqueness and variant link generation
- Add proper spacing to prevent visual overlap with LLM summaries

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
…ent issues

Major changes:
- Integrate CopilotKit server into GraphQL API as colocalized service
- Upgrade CopilotKit packages from v1.0.0 to v1.10.6 (fixes duplicate request bug)
- Add MCP client with singleton pattern to support multi-turn conversations
- Configure nginx to disable caching for /api/copilotkit endpoint
- Add deployment scripts and documentation for CopilotKit artifacts
- Update Docker configuration to include gmd binary (linux/amd64) and Mendelian TSV
- Add comprehensive logging for CopilotKit requests and MCP tool executions
- Remove copilotkit-server from pnpm workspace (code moved to graphql-api)

Technical details:
- CopilotKit now runs as part of the GraphQL API server (not standalone)
- MCP client reuses single instance per pod to maintain conversation state
- GraphQL upgraded from v15 to v16 for CopilotKit compatibility
- Nginx proxy cache explicitly bypassed for chat endpoint
- Build artifacts prepared via deploy/scripts/prepare-copilotkit-artifacts.sh

Fixes:
- Fix duplicate HTTP requests caused by frontend/backend version mismatch
- Fix cached responses in production by disabling nginx caching for chat
- Fix missing Juha tools by using gmd binary from juha-api worktree
- Fix architecture mismatch by building linux/amd64 gmd binary for Docker

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants