@cocaxcode/ai-context-inspector 0.3.2 → 0.3.3
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.
|
@@ -1454,6 +1454,8 @@ body {
|
|
|
1454
1454
|
.badge--orange { border-color: var(--orange); color: var(--orange); }
|
|
1455
1455
|
.badge--blue { border-color: var(--blue); color: var(--blue); }
|
|
1456
1456
|
.badge--pink { border-color: var(--pink); color: var(--pink); }
|
|
1457
|
+
.badge--link { cursor: pointer; text-decoration: none; transition: transform 0.15s, box-shadow 0.15s; }
|
|
1458
|
+
.badge--link:hover { transform: translateY(-1px); box-shadow: 0 2px 8px rgba(0,0,0,0.3); }
|
|
1457
1459
|
|
|
1458
1460
|
/* \u2500\u2500 Stats Grid \u2500\u2500 */
|
|
1459
1461
|
.stats-grid {
|
|
@@ -2135,7 +2137,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
|
|
2135
2137
|
|
|
2136
2138
|
// \u2500\u2500 Animated Counters \u2500\u2500
|
|
2137
2139
|
document.querySelectorAll('.stat-number').forEach(el => {
|
|
2138
|
-
const target = parseInt(el.getAttribute('data-
|
|
2140
|
+
const target = parseInt(el.getAttribute('data-count') || '0')
|
|
2139
2141
|
if (target === 0) { el.textContent = '0'; return }
|
|
2140
2142
|
let current = 0
|
|
2141
2143
|
const step = Math.max(1, Math.ceil(target / 25))
|
|
@@ -2236,8 +2238,8 @@ document.addEventListener('DOMContentLoaded', () => {
|
|
|
2236
2238
|
}
|
|
2237
2239
|
})
|
|
2238
2240
|
|
|
2239
|
-
// \u2500\u2500 Nav Links (scroll to section) \u2500\u2500
|
|
2240
|
-
document.querySelectorAll('
|
|
2241
|
+
// \u2500\u2500 Nav Links + Header Badges (scroll to section) \u2500\u2500
|
|
2242
|
+
document.querySelectorAll('[data-target]').forEach(link => {
|
|
2241
2243
|
link.addEventListener('click', (e) => {
|
|
2242
2244
|
e.preventDefault()
|
|
2243
2245
|
scrollToSection(link.getAttribute('data-target'))
|
|
@@ -2496,7 +2498,7 @@ function renderEcosystemMap(result, summary) {
|
|
|
2496
2498
|
}
|
|
2497
2499
|
}
|
|
2498
2500
|
const nodeR = dimmed ? 24 : 32;
|
|
2499
|
-
const labelY = y - nodeR -
|
|
2501
|
+
const labelY = y - nodeR - 28;
|
|
2500
2502
|
catNodes += `<g class="eco-cat-node" data-section="${cat.id}"
|
|
2501
2503
|
style="cursor:pointer;opacity:${opacity}" role="button" tabindex="0">
|
|
2502
2504
|
<!-- Hit area -->
|
|
@@ -2620,12 +2622,12 @@ function renderHeader(project, summary, scanDuration) {
|
|
|
2620
2622
|
<h1>> ai-context-inspector</h1>
|
|
2621
2623
|
<div class="subtitle">${esc2(project.name)} — ${date} — ${scanDuration}ms</div>
|
|
2622
2624
|
<div class="badges">
|
|
2623
|
-
<
|
|
2624
|
-
<
|
|
2625
|
-
<
|
|
2626
|
-
<
|
|
2627
|
-
<
|
|
2628
|
-
<
|
|
2625
|
+
<a class="badge badge--accent badge--link" data-target="section-mcp">${summary.totalMcpServers} MCPs</a>
|
|
2626
|
+
<a class="badge badge--green badge--link" data-target="section-mcp">${summary.totalTools} tools</a>
|
|
2627
|
+
<a class="badge badge--purple badge--link" data-target="section-context">${summary.totalFiles} archivos</a>
|
|
2628
|
+
<a class="badge badge--orange badge--link" data-target="section-skills">${summary.totalSkills} skills</a>
|
|
2629
|
+
<a class="badge badge--blue badge--link" data-target="section-agents">${summary.totalAgents} agents</a>
|
|
2630
|
+
<a class="badge badge--pink badge--link" data-target="section-memories">${summary.totalMemories} memorias</a>
|
|
2629
2631
|
</div>
|
|
2630
2632
|
</header>`;
|
|
2631
2633
|
}
|
|
@@ -2635,44 +2637,50 @@ function renderStatsGrid(summary) {
|
|
|
2635
2637
|
icon: "\u2699\uFE0F",
|
|
2636
2638
|
value: summary.totalMcpServers,
|
|
2637
2639
|
label: "MCP Servers",
|
|
2638
|
-
color: "#00d4ff"
|
|
2640
|
+
color: "#00d4ff",
|
|
2641
|
+
section: "section-mcp"
|
|
2639
2642
|
},
|
|
2640
2643
|
{
|
|
2641
2644
|
icon: "\u{1F6E0}\uFE0F",
|
|
2642
2645
|
value: summary.totalTools,
|
|
2643
2646
|
label: "MCP Tools",
|
|
2644
|
-
color: "#00e676"
|
|
2647
|
+
color: "#00e676",
|
|
2648
|
+
section: "section-mcp"
|
|
2645
2649
|
},
|
|
2646
2650
|
{
|
|
2647
2651
|
icon: "\u{1F4C4}",
|
|
2648
2652
|
value: summary.totalFiles,
|
|
2649
2653
|
label: "Archivos AI",
|
|
2650
|
-
color: "#b388ff"
|
|
2654
|
+
color: "#b388ff",
|
|
2655
|
+
section: "section-context"
|
|
2651
2656
|
},
|
|
2652
2657
|
{
|
|
2653
2658
|
icon: "\u26A1",
|
|
2654
2659
|
value: summary.totalSkills,
|
|
2655
2660
|
label: "Skills",
|
|
2656
|
-
color: "#ffab40"
|
|
2661
|
+
color: "#ffab40",
|
|
2662
|
+
section: "section-skills"
|
|
2657
2663
|
},
|
|
2658
2664
|
{
|
|
2659
2665
|
icon: "\u{1F916}",
|
|
2660
2666
|
value: summary.totalAgents,
|
|
2661
2667
|
label: "Agents",
|
|
2662
|
-
color: "#4285f4"
|
|
2668
|
+
color: "#4285f4",
|
|
2669
|
+
section: "section-agents"
|
|
2663
2670
|
},
|
|
2664
2671
|
{
|
|
2665
2672
|
icon: "\u{1F9E0}",
|
|
2666
2673
|
value: summary.totalMemories,
|
|
2667
2674
|
label: "Memorias",
|
|
2668
|
-
color: "#ff80ab"
|
|
2675
|
+
color: "#ff80ab",
|
|
2676
|
+
section: "section-memories"
|
|
2669
2677
|
}
|
|
2670
2678
|
];
|
|
2671
2679
|
const cards = stats.map(
|
|
2672
2680
|
(s) => `
|
|
2673
|
-
<div class="stat-card" style="--stat-color: ${s.color}">
|
|
2681
|
+
<div class="stat-card" data-target="${s.section}" style="--stat-color: ${s.color};cursor:pointer">
|
|
2674
2682
|
<span class="stat-icon">${s.icon}</span>
|
|
2675
|
-
<span class="stat-number" data-
|
|
2683
|
+
<span class="stat-number" data-count="${s.value}">0</span>
|
|
2676
2684
|
<span class="stat-label">${s.label}</span>
|
|
2677
2685
|
</div>`
|
|
2678
2686
|
).join("");
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
generateHtml,
|
|
4
4
|
runAllScanners
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-CAQUPN6F.js";
|
|
6
6
|
|
|
7
7
|
// src/cli.ts
|
|
8
8
|
import { parseArgs } from "util";
|
|
@@ -97,7 +97,7 @@ async function main() {
|
|
|
97
97
|
const options = parseCliArgs(process.argv.slice(2));
|
|
98
98
|
if (options.mcp) {
|
|
99
99
|
const { StdioServerTransport } = await import("@modelcontextprotocol/sdk/server/stdio.js");
|
|
100
|
-
const { createServer } = await import("./server-
|
|
100
|
+
const { createServer } = await import("./server-HS77RFVF.js");
|
|
101
101
|
const server = createServer();
|
|
102
102
|
const transport = new StdioServerTransport();
|
|
103
103
|
await server.connect(transport);
|
package/package.json
CHANGED
|
@@ -1,75 +1,75 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@cocaxcode/ai-context-inspector",
|
|
3
|
-
"version": "0.3.
|
|
4
|
-
"description": "Scan any project to discover its complete AI ecosystem: MCP servers, tools, context files, skills, memories. Generates an interactive HTML dashboard. Works as CLI and MCP server.",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"bin": {
|
|
7
|
-
"ai-context-inspector": "dist/index.js"
|
|
8
|
-
},
|
|
9
|
-
"files": [
|
|
10
|
-
"dist"
|
|
11
|
-
],
|
|
12
|
-
"scripts": {
|
|
13
|
-
"build": "tsup",
|
|
14
|
-
"dev": "tsup --watch",
|
|
15
|
-
"test": "vitest run",
|
|
16
|
-
"test:watch": "vitest",
|
|
17
|
-
"test:coverage": "vitest run --coverage",
|
|
18
|
-
"lint": "eslint src/",
|
|
19
|
-
"format": "prettier --write \"src/**/*.ts\"",
|
|
20
|
-
"format:check": "prettier --check \"src/**/*.ts\"",
|
|
21
|
-
"typecheck": "tsc --noEmit",
|
|
22
|
-
"prepare": "npm run build",
|
|
23
|
-
"inspector": "npx @modelcontextprotocol/inspector node dist/index.js -- --mcp",
|
|
24
|
-
"serve:report": "node serve-report.cjs"
|
|
25
|
-
},
|
|
26
|
-
"engines": {
|
|
27
|
-
"node": ">=20.0.0"
|
|
28
|
-
},
|
|
29
|
-
"keywords": [
|
|
30
|
-
"mcp",
|
|
31
|
-
"mcp-server",
|
|
32
|
-
"model-context-protocol",
|
|
33
|
-
"ai-context",
|
|
34
|
-
"ai-inspector",
|
|
35
|
-
"ai-tools",
|
|
36
|
-
"mcp-introspection",
|
|
37
|
-
"claude",
|
|
38
|
-
"cursor",
|
|
39
|
-
"windsurf",
|
|
40
|
-
"copilot",
|
|
41
|
-
"gemini",
|
|
42
|
-
"codex",
|
|
43
|
-
"aider",
|
|
44
|
-
"cline",
|
|
45
|
-
"dashboard",
|
|
46
|
-
"html-report",
|
|
47
|
-
"context-files",
|
|
48
|
-
"skills",
|
|
49
|
-
"ai-ecosystem"
|
|
50
|
-
],
|
|
51
|
-
"author": "cocaxcode",
|
|
52
|
-
"license": "MIT",
|
|
53
|
-
"repository": {
|
|
54
|
-
"type": "git",
|
|
55
|
-
"url": "https://github.com/cocaxcode/ai-context-inspector.git"
|
|
56
|
-
},
|
|
57
|
-
"homepage": "https://github.com/cocaxcode/ai-context-inspector#readme",
|
|
58
|
-
"bugs": {
|
|
59
|
-
"url": "https://github.com/cocaxcode/ai-context-inspector/issues"
|
|
60
|
-
},
|
|
61
|
-
"dependencies": {
|
|
62
|
-
"@modelcontextprotocol/sdk": "^1.27.0",
|
|
63
|
-
"zod": "^3.25.0"
|
|
64
|
-
},
|
|
65
|
-
"devDependencies": {
|
|
66
|
-
"@types/node": "^22.15.0",
|
|
67
|
-
"@vitest/coverage-v8": "^3.2.0",
|
|
68
|
-
"eslint": "^9.28.0",
|
|
69
|
-
"prettier": "^3.5.0",
|
|
70
|
-
"tsup": "^8.5.0",
|
|
71
|
-
"typescript": "^5.8.0",
|
|
72
|
-
"typescript-eslint": "^8.33.0",
|
|
73
|
-
"vitest": "^3.2.0"
|
|
74
|
-
}
|
|
75
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@cocaxcode/ai-context-inspector",
|
|
3
|
+
"version": "0.3.3",
|
|
4
|
+
"description": "Scan any project to discover its complete AI ecosystem: MCP servers, tools, context files, skills, memories. Generates an interactive HTML dashboard. Works as CLI and MCP server.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"ai-context-inspector": "dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist"
|
|
11
|
+
],
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "tsup",
|
|
14
|
+
"dev": "tsup --watch",
|
|
15
|
+
"test": "vitest run",
|
|
16
|
+
"test:watch": "vitest",
|
|
17
|
+
"test:coverage": "vitest run --coverage",
|
|
18
|
+
"lint": "eslint src/",
|
|
19
|
+
"format": "prettier --write \"src/**/*.ts\"",
|
|
20
|
+
"format:check": "prettier --check \"src/**/*.ts\"",
|
|
21
|
+
"typecheck": "tsc --noEmit",
|
|
22
|
+
"prepare": "npm run build",
|
|
23
|
+
"inspector": "npx @modelcontextprotocol/inspector node dist/index.js -- --mcp",
|
|
24
|
+
"serve:report": "node serve-report.cjs"
|
|
25
|
+
},
|
|
26
|
+
"engines": {
|
|
27
|
+
"node": ">=20.0.0"
|
|
28
|
+
},
|
|
29
|
+
"keywords": [
|
|
30
|
+
"mcp",
|
|
31
|
+
"mcp-server",
|
|
32
|
+
"model-context-protocol",
|
|
33
|
+
"ai-context",
|
|
34
|
+
"ai-inspector",
|
|
35
|
+
"ai-tools",
|
|
36
|
+
"mcp-introspection",
|
|
37
|
+
"claude",
|
|
38
|
+
"cursor",
|
|
39
|
+
"windsurf",
|
|
40
|
+
"copilot",
|
|
41
|
+
"gemini",
|
|
42
|
+
"codex",
|
|
43
|
+
"aider",
|
|
44
|
+
"cline",
|
|
45
|
+
"dashboard",
|
|
46
|
+
"html-report",
|
|
47
|
+
"context-files",
|
|
48
|
+
"skills",
|
|
49
|
+
"ai-ecosystem"
|
|
50
|
+
],
|
|
51
|
+
"author": "cocaxcode",
|
|
52
|
+
"license": "MIT",
|
|
53
|
+
"repository": {
|
|
54
|
+
"type": "git",
|
|
55
|
+
"url": "https://github.com/cocaxcode/ai-context-inspector.git"
|
|
56
|
+
},
|
|
57
|
+
"homepage": "https://github.com/cocaxcode/ai-context-inspector#readme",
|
|
58
|
+
"bugs": {
|
|
59
|
+
"url": "https://github.com/cocaxcode/ai-context-inspector/issues"
|
|
60
|
+
},
|
|
61
|
+
"dependencies": {
|
|
62
|
+
"@modelcontextprotocol/sdk": "^1.27.0",
|
|
63
|
+
"zod": "^3.25.0"
|
|
64
|
+
},
|
|
65
|
+
"devDependencies": {
|
|
66
|
+
"@types/node": "^22.15.0",
|
|
67
|
+
"@vitest/coverage-v8": "^3.2.0",
|
|
68
|
+
"eslint": "^9.28.0",
|
|
69
|
+
"prettier": "^3.5.0",
|
|
70
|
+
"tsup": "^8.5.0",
|
|
71
|
+
"typescript": "^5.8.0",
|
|
72
|
+
"typescript-eslint": "^8.33.0",
|
|
73
|
+
"vitest": "^3.2.0"
|
|
74
|
+
}
|
|
75
|
+
}
|