@mindfiredigital/ignix-lite-mcp 1.6.3 → 1.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/server.js CHANGED
@@ -7,20 +7,6 @@ import {
7
7
  ListToolsRequestSchema,
8
8
  CallToolRequestSchema
9
9
  } from "@modelcontextprotocol/sdk/types.js";
10
-
11
- // src/context/api-context.ts
12
- import { readFileSync, existsSync } from "fs";
13
- import path from "path";
14
- import { fileURLToPath } from "url";
15
- var __filename = fileURLToPath(import.meta.url);
16
- var __dirname = path.dirname(__filename);
17
- var apiPath = path.resolve(__dirname, "../../../api-full.txt");
18
- if (!existsSync(apiPath)) {
19
- apiPath = path.resolve(__dirname, "../../../../api-full.txt");
20
- }
21
- var apiContext = readFileSync(apiPath, "utf8");
22
-
23
- // src/server.ts
24
10
  import {
25
11
  listComponents,
26
12
  getManifest,
@@ -327,7 +313,6 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
327
313
  });
328
314
  async function start() {
329
315
  console.error("API loaded");
330
- console.error(apiContext.length);
331
316
  const transport = new StdioServerTransport();
332
317
  await server.connect(transport);
333
318
  console.error("Ignix MCP started");
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server.ts","../src/context/api-context.ts"],"sourcesContent":["import { Server } from '@modelcontextprotocol/sdk/server/index.js'\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'\nimport {\n ListToolsRequestSchema,\n CallToolRequestSchema\n} from '@modelcontextprotocol/sdk/types.js'\n\nimport type { MCPResponse } from './types.js'\nimport { apiContext } from './context/api-context.js'\nimport {\n listComponents,\n getManifest,\n getEmmet,\n validateHtml,\n howToBuild,\n generateTheme,\n auditA11y,\n preview,\n getTokenSummary,\n recordCall,\n createHandoff,\n applyHandoff\n} from '@mindfiredigital/ignix-lite-engine'\n\ntype ValidateArgs = {\n html?: string\n}\n\ntype IntentArgs = {\n description?: string\n}\n\ntype A11yArgs = {\n html?: string\n}\n\ntype PreviewArgs = {\n input: string\n options?: {\n width?: number\n theme?: string\n scale?: number\n }\n}\n\ntype CreateHandoffArgs = {\n rendered_html: string\n metadata?: Record<string, unknown>\n}\n\ntype ApplyHandoffArgs = {\n handoff_id: string\n changes: Array<{\n selector: string\n action: 'update' | 'add' | 'remove'\n emmet?: string\n html?: string\n }>\n}\n\nconst server = new Server(\n {\n name: 'ignix-lite',\n version: '2.0.0'\n },\n {\n capabilities: {\n tools: {}\n }\n }\n)\n\nserver.setRequestHandler(ListToolsRequestSchema, async () => ({\n tools: [\n {\n name: 'list_components',\n description: 'List all ignix-lite components',\n inputSchema: {\n type: 'object',\n properties: {}\n }\n },\n {\n name: 'get_manifest',\n description: 'Get component manifest',\n inputSchema: {\n type: 'object',\n properties: {\n name: {\n type: 'string'\n }\n },\n required: ['name']\n }\n },\n {\n name: 'get_emmet',\n description: 'Get emmet pattern',\n inputSchema: {\n type: 'object',\n properties: {\n name: {\n type: 'string'\n }\n },\n required: ['name']\n }\n },\n {\n name: 'validate',\n description: 'Validate ignix-lite html',\n inputSchema: {\n type: 'object',\n properties: {\n html: {\n type: 'string'\n }\n },\n required: ['html']\n }\n },\n {\n name: 'how_to_build',\n description: 'Convert plain english to ignix-lite UI',\n inputSchema: {\n type: 'object',\n properties: {\n description: {\n type: 'string'\n }\n },\n required: ['description']\n }\n },\n {\n name: 'generate_theme',\n description: 'Generate ignix theme tokens',\n inputSchema: {\n type: 'object',\n properties: {\n prompt: {\n type: 'string'\n }\n },\n required: ['prompt']\n }\n },\n {\n name: 'check_a11y',\n description: 'Check accessibility',\n inputSchema: {\n type: 'object',\n properties: {\n html: {\n type: 'string'\n }\n },\n required: ['html']\n }\n },\n {\n name: 'preview',\n description: 'Render visual preview to PNG',\n inputSchema: {\n type: 'object',\n properties: {\n input: {\n type: 'string'\n },\n options: {\n type: 'object',\n properties: {\n width: {\n type: 'number'\n },\n theme: {\n type: 'string'\n },\n scale: {\n type: 'number'\n }\n }\n }\n },\n required: ['input']\n }\n },\n {\n name: 'get_token_summary',\n description: 'Get session token summary and budget details',\n inputSchema: {\n type: 'object',\n properties: {\n context_window: {\n type: 'number',\n description: 'Optional model context window size'\n }\n }\n }\n },\n {\n name: 'create_handoff',\n description: 'Create multi-agent handoff snapshot',\n inputSchema: {\n type: 'object',\n properties: {\n rendered_html: {\n type: 'string'\n },\n metadata: {\n type: 'object'\n }\n },\n required: ['rendered_html']\n }\n },\n {\n name: 'apply_handoff',\n description: 'Apply changes to an existing handoff snapshot',\n inputSchema: {\n type: 'object',\n properties: {\n handoff_id: {\n type: 'string'\n },\n changes: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n selector: {\n type: 'string'\n },\n action: {\n type: 'string',\n enum: ['update', 'add', 'remove']\n },\n emmet: {\n type: 'string'\n },\n html: {\n type: 'string'\n }\n },\n required: ['selector', 'action']\n }\n }\n },\n required: ['handoff_id', 'changes']\n }\n }\n ]\n}))\n\nserver.setRequestHandler(CallToolRequestSchema, async (request) => {\n const { name, arguments: args } = request.params\n console.error('TOOL CALLED:', name)\n let response: MCPResponse\n\n switch (name) {\n case 'list_components':\n response = listComponents()\n break\n\n case 'get_manifest':\n response = getManifest(args)\n break\n\n case 'get_emmet':\n response = getEmmet(args)\n break\n\n case 'validate': {\n const validateArgs = args as ValidateArgs\n const result = validateHtml(validateArgs.html ?? '')\n response = {\n content: [\n {\n type: 'text',\n text: JSON.stringify({\n ...result,\n tokens_used: 50\n })\n }\n ]\n }\n break\n }\n\n case 'how_to_build': {\n const intentArgs = args as IntentArgs\n response = await howToBuild(intentArgs.description ?? '')\n break\n }\n\n case 'generate_theme':\n response = generateTheme(args)\n break\n\n case 'check_a11y': {\n const a11yArgs = args as A11yArgs\n const result = auditA11y(a11yArgs.html ?? '')\n response = {\n content: [\n {\n type: 'text',\n text: JSON.stringify({\n ...result,\n tokens_used: Math.min(60, 20 + result.issues.length * 3)\n })\n }\n ]\n }\n break\n }\n\n case 'preview': {\n const previewArgs = args as PreviewArgs\n response = await preview(previewArgs)\n break\n }\n\n case 'get_token_summary': {\n const tokenArgs = args as { context_window?: number }\n response = getTokenSummary(tokenArgs)\n break\n }\n\n case 'create_handoff': {\n const handoffArgs = args as CreateHandoffArgs\n response = createHandoff(handoffArgs)\n break\n }\n\n case 'apply_handoff': {\n const applyArgs = args as ApplyHandoffArgs\n response = applyHandoff(applyArgs)\n break\n }\n\n default:\n response = {\n content: [\n {\n type: 'text',\n text: JSON.stringify({\n error: `Unknown tool: ${name}`\n })\n }\n ]\n }\n break\n }\n\n // Intercept and record tokens_used if present in the response\n if (\n response &&\n response.content &&\n response.content[0] &&\n response.content[0].text\n ) {\n try {\n const parsed = JSON.parse(response.content[0].text)\n if (parsed && typeof parsed.tokens_used === 'number') {\n recordCall(name, parsed.tokens_used)\n }\n } catch {\n // Ignore if response text is not valid JSON\n }\n }\n\n return response\n})\n\nasync function start() {\n console.error('API loaded')\n console.error(apiContext.length)\n const transport = new StdioServerTransport()\n await server.connect(transport)\n console.error('Ignix MCP started')\n}\n\nstart()\n","import { readFileSync, existsSync } from 'fs'\nimport path from 'path'\nimport { fileURLToPath } from 'url'\n\nconst __filename = fileURLToPath(import.meta.url)\nconst __dirname = path.dirname(__filename)\n\n// Dynamically handle both bundled dist/ and source src/context/ contexts\nlet apiPath = path.resolve(__dirname, '../../../api-full.txt')\nif (!existsSync(apiPath)) {\n apiPath = path.resolve(__dirname, '../../../../api-full.txt')\n}\n\nexport const apiContext = readFileSync(apiPath, 'utf8')\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/server.ts"],"sourcesContent":["import { Server } from '@modelcontextprotocol/sdk/server/index.js'\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'\nimport {\n ListToolsRequestSchema,\n CallToolRequestSchema\n} from '@modelcontextprotocol/sdk/types.js'\n\nimport type { MCPResponse } from './types.js'\nimport {\n listComponents,\n getManifest,\n getEmmet,\n validateHtml,\n howToBuild,\n generateTheme,\n auditA11y,\n preview,\n getTokenSummary,\n recordCall,\n createHandoff,\n applyHandoff\n} from '@mindfiredigital/ignix-lite-engine'\n\ntype ValidateArgs = {\n html?: string\n}\n\ntype IntentArgs = {\n description?: string\n}\n\ntype A11yArgs = {\n html?: string\n}\n\ntype PreviewArgs = {\n input: string\n options?: {\n width?: number\n theme?: string\n scale?: number\n }\n}\n\ntype CreateHandoffArgs = {\n rendered_html: string\n metadata?: Record<string, unknown>\n}\n\ntype ApplyHandoffArgs = {\n handoff_id: string\n changes: Array<{\n selector: string\n action: 'update' | 'add' | 'remove'\n emmet?: string\n html?: string\n }>\n}\n\nconst server = new Server(\n {\n name: 'ignix-lite',\n version: '2.0.0'\n },\n {\n capabilities: {\n tools: {}\n }\n }\n)\n\nserver.setRequestHandler(ListToolsRequestSchema, async () => ({\n tools: [\n {\n name: 'list_components',\n description: 'List all ignix-lite components',\n inputSchema: {\n type: 'object',\n properties: {}\n }\n },\n {\n name: 'get_manifest',\n description: 'Get component manifest',\n inputSchema: {\n type: 'object',\n properties: {\n name: {\n type: 'string'\n }\n },\n required: ['name']\n }\n },\n {\n name: 'get_emmet',\n description: 'Get emmet pattern',\n inputSchema: {\n type: 'object',\n properties: {\n name: {\n type: 'string'\n }\n },\n required: ['name']\n }\n },\n {\n name: 'validate',\n description: 'Validate ignix-lite html',\n inputSchema: {\n type: 'object',\n properties: {\n html: {\n type: 'string'\n }\n },\n required: ['html']\n }\n },\n {\n name: 'how_to_build',\n description: 'Convert plain english to ignix-lite UI',\n inputSchema: {\n type: 'object',\n properties: {\n description: {\n type: 'string'\n }\n },\n required: ['description']\n }\n },\n {\n name: 'generate_theme',\n description: 'Generate ignix theme tokens',\n inputSchema: {\n type: 'object',\n properties: {\n prompt: {\n type: 'string'\n }\n },\n required: ['prompt']\n }\n },\n {\n name: 'check_a11y',\n description: 'Check accessibility',\n inputSchema: {\n type: 'object',\n properties: {\n html: {\n type: 'string'\n }\n },\n required: ['html']\n }\n },\n {\n name: 'preview',\n description: 'Render visual preview to PNG',\n inputSchema: {\n type: 'object',\n properties: {\n input: {\n type: 'string'\n },\n options: {\n type: 'object',\n properties: {\n width: {\n type: 'number'\n },\n theme: {\n type: 'string'\n },\n scale: {\n type: 'number'\n }\n }\n }\n },\n required: ['input']\n }\n },\n {\n name: 'get_token_summary',\n description: 'Get session token summary and budget details',\n inputSchema: {\n type: 'object',\n properties: {\n context_window: {\n type: 'number',\n description: 'Optional model context window size'\n }\n }\n }\n },\n {\n name: 'create_handoff',\n description: 'Create multi-agent handoff snapshot',\n inputSchema: {\n type: 'object',\n properties: {\n rendered_html: {\n type: 'string'\n },\n metadata: {\n type: 'object'\n }\n },\n required: ['rendered_html']\n }\n },\n {\n name: 'apply_handoff',\n description: 'Apply changes to an existing handoff snapshot',\n inputSchema: {\n type: 'object',\n properties: {\n handoff_id: {\n type: 'string'\n },\n changes: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n selector: {\n type: 'string'\n },\n action: {\n type: 'string',\n enum: ['update', 'add', 'remove']\n },\n emmet: {\n type: 'string'\n },\n html: {\n type: 'string'\n }\n },\n required: ['selector', 'action']\n }\n }\n },\n required: ['handoff_id', 'changes']\n }\n }\n ]\n}))\n\nserver.setRequestHandler(CallToolRequestSchema, async (request) => {\n const { name, arguments: args } = request.params\n console.error('TOOL CALLED:', name)\n let response: MCPResponse\n\n switch (name) {\n case 'list_components':\n response = listComponents()\n break\n\n case 'get_manifest':\n response = getManifest(args)\n break\n\n case 'get_emmet':\n response = getEmmet(args)\n break\n\n case 'validate': {\n const validateArgs = args as ValidateArgs\n const result = validateHtml(validateArgs.html ?? '')\n response = {\n content: [\n {\n type: 'text',\n text: JSON.stringify({\n ...result,\n tokens_used: 50\n })\n }\n ]\n }\n break\n }\n\n case 'how_to_build': {\n const intentArgs = args as IntentArgs\n response = await howToBuild(intentArgs.description ?? '')\n break\n }\n\n case 'generate_theme':\n response = generateTheme(args)\n break\n\n case 'check_a11y': {\n const a11yArgs = args as A11yArgs\n const result = auditA11y(a11yArgs.html ?? '')\n response = {\n content: [\n {\n type: 'text',\n text: JSON.stringify({\n ...result,\n tokens_used: Math.min(60, 20 + result.issues.length * 3)\n })\n }\n ]\n }\n break\n }\n\n case 'preview': {\n const previewArgs = args as PreviewArgs\n response = await preview(previewArgs)\n break\n }\n\n case 'get_token_summary': {\n const tokenArgs = args as { context_window?: number }\n response = getTokenSummary(tokenArgs)\n break\n }\n\n case 'create_handoff': {\n const handoffArgs = args as CreateHandoffArgs\n response = createHandoff(handoffArgs)\n break\n }\n\n case 'apply_handoff': {\n const applyArgs = args as ApplyHandoffArgs\n response = applyHandoff(applyArgs)\n break\n }\n\n default:\n response = {\n content: [\n {\n type: 'text',\n text: JSON.stringify({\n error: `Unknown tool: ${name}`\n })\n }\n ]\n }\n break\n }\n\n // Intercept and record tokens_used if present in the response\n if (\n response &&\n response.content &&\n response.content[0] &&\n response.content[0].text\n ) {\n try {\n const parsed = JSON.parse(response.content[0].text)\n if (parsed && typeof parsed.tokens_used === 'number') {\n recordCall(name, parsed.tokens_used)\n }\n } catch {\n // Ignore if response text is not valid JSON\n }\n }\n\n return response\n})\n\nasync function start() {\n console.error('API loaded')\n const transport = new StdioServerTransport()\n await server.connect(transport)\n console.error('Ignix MCP started')\n}\n\nstart()\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindfiredigital/ignix-lite-mcp",
3
- "version": "1.6.3",
3
+ "version": "1.6.5",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "./dist/server.js",