-
Notifications
You must be signed in to change notification settings - Fork 1
release: staging → main (16 features, 4 epics) #224
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
8e131fe
ba6ec2b
933fa0a
311f1c4
f94ea7b
96cb5e2
692886b
0d24d51
a7e99c0
02ee086
fd40ef2
cd70600
41f5237
e9e4a58
42524fc
d5d6552
7c05077
97a3edb
d695d62
8b8d40b
51905e0
1909566
60ad017
fa8b4c6
0508d52
37eca94
2bbbfb7
496dede
1436936
8208b22
201ebaa
600373c
e62ea1f
19c25c4
db217f2
b476e1c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| /Volumes/Development/booked/helixir/build | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| /Volumes/Development/booked/helixir/node_modules | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Remove accidental local-path artifact ( Line 1 adds a tracked file named 🤖 Prompt for AI Agents |
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -16,7 +16,7 @@ | |
| }, | ||
| "license": "MIT", | ||
| "dependencies": { | ||
| "@modelcontextprotocol/sdk": "^1.26.0", | ||
| "@modelcontextprotocol/sdk": "^1.27.1", | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "Checking `@modelcontextprotocol/sdk` specifiers in manifests and lockfile..."
rg -n '"@modelcontextprotocol/sdk"\s*:' package.json packages/core/package.json packages/mcp/package.json pnpm-lock.yamlRepository: bookedsolidtech/helixir Length of output: 348 🏁 Script executed: #!/bin/bash
# Search for `@modelcontextprotocol/sdk` in pnpm-lock.yaml with more flexible pattern
rg -n "modelcontextprotocol" pnpm-lock.yaml | head -20Repository: bookedsolidtech/helixir Length of output: 279 🏁 Script executed: #!/bin/bash
# Check context around lines 18, 73, 104 to see what versions are referenced
rg -B2 -A2 "^\s*'@modelcontextprotocol/sdk':" pnpm-lock.yaml | head -40Repository: bookedsolidtech/helixir Length of output: 461 Regenerate The manifest files specify
CI with frozen-lockfile will fail until these specifiers are regenerated and committed. 🤖 Prompt for AI Agents |
||
| "zod": "^3.22.0" | ||
| }, | ||
| "peerDependencies": { | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| # Source files — not needed in the packaged extension | ||
| src/ | ||
| tsconfig.json | ||
| esbuild.config.mjs | ||
|
|
||
| # Development dependencies and lock files | ||
| node_modules/ | ||
| .pnpm-store/ | ||
| pnpm-lock.yaml | ||
| package-lock.json | ||
|
|
||
| # Test artefacts | ||
| coverage/ | ||
| *.test.ts | ||
| *.spec.ts | ||
|
|
||
| # Build intermediates (keep dist/) | ||
| *.map | ||
|
|
||
| # Editor and OS artefacts | ||
| .vscode/ | ||
| .DS_Store | ||
| *.log | ||
|
|
||
| # Root-level workspace files that should not be bundled | ||
| ../../node_modules/ | ||
| ../../src/ | ||
| ../../build/ | ||
| ../../packages/ | ||
| ../../.github/ |
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,84 @@ | ||||||
| # Helixir — VS Code Extension | ||||||
|
|
||||||
| **AI-powered web component intelligence for VS Code.** | ||||||
|
|
||||||
| Helixir gives AI assistants full situational awareness of any web component library by wiring the [helixir MCP server](https://github.com/bookedsolidtech/helixir) directly into VS Code's MCP layer. | ||||||
|
|
||||||
| ## Features | ||||||
|
|
||||||
| - **MCP server auto-registration** — the helixir MCP server starts automatically with VS Code, no manual configuration required | ||||||
| - **30+ MCP tools** — component discovery, health scoring, breaking-change detection, TypeScript diagnostics, design token lookup, and more | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Inconsistent tool count with main README. This README says "30+ MCP tools" but the main README states "87+ MCP tools". Update for consistency. 📝 Suggested fix-- **30+ MCP tools** — component discovery, health scoring, breaking-change detection, TypeScript diagnostics, design token lookup, and more
+- **87+ MCP tools** — component discovery, health scoring, breaking-change detection, TypeScript diagnostics, design token lookup, and more📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||
| - **Zero hallucinations** — every AI component suggestion is grounded in your actual `custom-elements.json` | ||||||
| - **Framework-agnostic** — works with Lit, Stencil, FAST, Spectrum, Shoelace, or any library that produces a Custom Elements Manifest | ||||||
|
|
||||||
| ## Requirements | ||||||
|
|
||||||
| - VS Code **≥ 1.99.0** | ||||||
| - A component library with a `custom-elements.json` (Custom Elements Manifest) | ||||||
| - Node.js **≥ 20** on `PATH` | ||||||
|
|
||||||
| ## Getting Started | ||||||
|
|
||||||
| 1. Install the extension from the VS Code Marketplace | ||||||
| 2. Open your component library folder in VS Code | ||||||
| 3. The Helixir MCP server will register automatically with AI assistants that support MCP (e.g., GitHub Copilot, Claude) | ||||||
|
|
||||||
| ### Optional: Configure the Config Path | ||||||
|
|
||||||
| If your `mcpwc.config.json` is not at the workspace root, set the path via VS Code settings: | ||||||
|
|
||||||
| ```json | ||||||
| // .vscode/settings.json | ||||||
| { | ||||||
| "helixir.configPath": "packages/web-components/mcpwc.config.json" | ||||||
| } | ||||||
| ``` | ||||||
|
|
||||||
| The path can be relative to the workspace root or absolute. | ||||||
|
|
||||||
| ## Commands | ||||||
|
|
||||||
| | Command | Description | | ||||||
| |---------|-------------| | ||||||
| | `Helixir: Run Health Check` | Guides you to run a health check via your AI assistant | | ||||||
|
|
||||||
| ## Extension Settings | ||||||
|
|
||||||
| | Setting | Type | Default | Description | | ||||||
| |---------|------|---------|-------------| | ||||||
| | `helixir.configPath` | `string` | `""` | Path to `mcpwc.config.json`. Empty = workspace root. | | ||||||
|
|
||||||
| ## How It Works | ||||||
|
|
||||||
| When the extension activates, it registers a **MCP server definition provider** (`helixir`) with VS Code's language model API (`vscode.lm`). VS Code spawns the bundled helixir MCP server (`dist/mcp-server.js`) as a child process over stdio. | ||||||
|
|
||||||
| The server reads your `custom-elements.json` and exposes 30+ tools that AI models can call to look up component APIs, run health scans, generate type declarations, and more. | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Another reference to outdated tool count. Line 55 also mentions "30+ tools" — update to match the current count. 📝 Suggested fix-The server reads your `custom-elements.json` and exposes 30+ tools that AI models can call to look up component APIs, run health scans, generate type declarations, and more.
+The server reads your `custom-elements.json` and exposes 87+ tools that AI models can call to look up component APIs, run health scans, generate type declarations, and more.📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||
|
|
||||||
| ## Configuration Reference | ||||||
|
|
||||||
| The helixir server is configured via environment variables passed by the extension: | ||||||
|
|
||||||
| | Variable | Description | | ||||||
| |----------|-------------| | ||||||
| | `MCP_WC_PROJECT_ROOT` | Set to your workspace folder automatically | | ||||||
| | `MCP_WC_CONFIG_PATH` | Set when `helixir.configPath` is configured | | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
# Description: Search for MCP_WC_CONFIG_PATH usage in the codebase
# Check if this env var is used anywhere
rg -n 'MCP_WC_CONFIG_PATH' --type ts --type js
# Also check mcpProvider.ts which sets env vars for the spawned server
rg -n 'CONFIG_PATH' --type ts --type jsRepository: bookedsolidtech/helixir Length of output: 609 🏁 Script executed: # Examine config.ts to see the env-var mappings structure
head -100 packages/core/src/config.tsRepository: bookedsolidtech/helixir Length of output: 3787 🏁 Script executed: # Look at mcpProvider.ts to understand how MCP_WC_CONFIG_PATH is being used
sed -n '30,50p' packages/vscode/src/mcpProvider.tsRepository: bookedsolidtech/helixir Length of output: 638 🏁 Script executed: # Search for configPath usage and mapping in config.ts to understand the pattern
rg -n 'configPath' packages/core/src/config.ts -A 2 -B 2Repository: bookedsolidtech/helixir Length of output: 652 Remove The environment variable 🤖 Prompt for AI Agents |
||||||
|
|
||||||
| Additional configuration (token path, component prefix, health history dir) belongs in `mcpwc.config.json`. See the [helixir documentation](https://github.com/bookedsolidtech/helixir) for the full config reference. | ||||||
|
|
||||||
| ## Troubleshooting | ||||||
|
|
||||||
| **MCP server not appearing in AI assistant tools** | ||||||
| - Verify VS Code ≥ 1.99.0 is installed | ||||||
| - Confirm your workspace contains a `custom-elements.json` | ||||||
| - Check the Output panel → Helixir for error messages | ||||||
|
|
||||||
| **"No workspace folder" error from Run Health Check** | ||||||
| - Open a folder (not just a file) in VS Code — the extension uses the workspace folder as the project root | ||||||
|
|
||||||
| **Server starts but returns no components** | ||||||
| - Ensure `custom-elements.json` exists at the workspace root or configure `helixir.configPath` | ||||||
| - Regenerate the manifest: `npm run analyze:cem` (or your CEM generation script) | ||||||
|
|
||||||
| ## License | ||||||
|
|
||||||
| MIT — see [LICENSE](../../LICENSE) | ||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,69 @@ | ||
| /** | ||
| * esbuild configuration for the Helixir VS Code extension. | ||
| * | ||
| * Produces two bundles: | ||
| * dist/extension.js — VS Code extension host entry (CJS, externalizes 'vscode') | ||
| * dist/mcp-server.js — Helixir MCP server entry (ESM, bundles helixir) | ||
| */ | ||
|
|
||
| import * as esbuild from 'esbuild'; | ||
|
|
||
| const isProduction = process.argv.includes('--production'); | ||
| const isWatch = process.argv.includes('--watch'); | ||
|
|
||
| const sharedOptions = { | ||
| bundle: true, | ||
| sourcemap: !isProduction, | ||
| minify: isProduction, | ||
| logLevel: 'info', | ||
| platform: 'node', | ||
| target: 'node20', | ||
| }; | ||
|
|
||
| /** | ||
| * Bundle 1: VS Code extension host entry | ||
| * - CommonJS (VS Code extension host requires CJS) | ||
| * - 'vscode' is externalized — provided by the VS Code runtime | ||
| */ | ||
| const extensionConfig = { | ||
| ...sharedOptions, | ||
| entryPoints: ['src/extension.ts'], | ||
| outfile: 'dist/extension.js', | ||
| format: 'cjs', | ||
| external: ['vscode'], | ||
| }; | ||
|
|
||
| /** | ||
| * Bundle 2: Helixir MCP server | ||
| * - ESM format (helixir is an ES module) | ||
| * - Bundles helixir and its dependencies so the extension is self-contained | ||
| * - Spawned as a child process via stdio by the VS Code extension | ||
| */ | ||
| const mcpServerConfig = { | ||
| ...sharedOptions, | ||
| entryPoints: ['src/mcp-server-entry.ts'], | ||
| outfile: 'dist/mcp-server.js', | ||
| format: 'esm', | ||
| banner: { | ||
| js: '#!/usr/bin/env node\n// Helixir MCP Server — bundled by esbuild', | ||
| }, | ||
| }; | ||
|
|
||
| async function build() { | ||
| const extensionCtx = await esbuild.context(extensionConfig); | ||
| const mcpServerCtx = await esbuild.context(mcpServerConfig); | ||
|
|
||
| if (isWatch) { | ||
| await Promise.all([extensionCtx.watch(), mcpServerCtx.watch()]); | ||
| console.log('[helixir-vscode] Watching for changes...'); | ||
| } else { | ||
| await Promise.all([extensionCtx.rebuild(), mcpServerCtx.rebuild()]); | ||
| await Promise.all([extensionCtx.dispose(), mcpServerCtx.dispose()]); | ||
| console.log('[helixir-vscode] Build complete.'); | ||
| } | ||
| } | ||
|
|
||
| build().catch((err) => { | ||
| console.error('[helixir-vscode] Build failed:', err); | ||
| process.exit(1); | ||
| }); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove accidental
buildpath-marker file.Line 1 adds a file named
buildwith a local absolute path. This can conflict with expectedbuild/directory outputs and should be removed from version control.🤖 Prompt for AI Agents