@cocaxcode/ai-context-inspector 0.3.1 → 0.3.2
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.
|
@@ -1343,6 +1343,20 @@ body {
|
|
|
1343
1343
|
align-items: center;
|
|
1344
1344
|
}
|
|
1345
1345
|
|
|
1346
|
+
.nav-brand {
|
|
1347
|
+
display: inline-flex;
|
|
1348
|
+
align-items: center;
|
|
1349
|
+
gap: 0.3rem;
|
|
1350
|
+
margin-right: 0.3rem;
|
|
1351
|
+
}
|
|
1352
|
+
|
|
1353
|
+
.nav-separator {
|
|
1354
|
+
width: 1px;
|
|
1355
|
+
height: 16px;
|
|
1356
|
+
background: var(--border);
|
|
1357
|
+
margin: 0 0.4rem;
|
|
1358
|
+
}
|
|
1359
|
+
|
|
1346
1360
|
.nav-link {
|
|
1347
1361
|
padding: 0.3rem 0.7rem;
|
|
1348
1362
|
border-radius: var(--radius-sm);
|
|
@@ -2405,34 +2419,14 @@ function buildCategories(result, summary) {
|
|
|
2405
2419
|
}
|
|
2406
2420
|
];
|
|
2407
2421
|
}
|
|
2408
|
-
var COCAXCODE_ICON = `<g transform="translate(-16,-16)">
|
|
2409
|
-
<defs>
|
|
2410
|
-
<linearGradient id="cxc-g1" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
2411
|
-
<stop offset="0%" stop-color="#22d3ee"/>
|
|
2412
|
-
<stop offset="100%" stop-color="#06b6d4"/>
|
|
2413
|
-
</linearGradient>
|
|
2414
|
-
<linearGradient id="cxc-g2" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
2415
|
-
<stop offset="0%" stop-color="#0891b2"/>
|
|
2416
|
-
<stop offset="100%" stop-color="#0e7490"/>
|
|
2417
|
-
</linearGradient>
|
|
2418
|
-
</defs>
|
|
2419
|
-
<rect width="32" height="32" fill="#0a0a0c" rx="4"/>
|
|
2420
|
-
<rect x="9" y="7.5" width="16" height="18.5" rx="4" fill="url(#cxc-g2)" opacity="0.5"/>
|
|
2421
|
-
<rect x="8" y="6.5" width="16" height="18.5" rx="4" fill="url(#cxc-g1)"/>
|
|
2422
|
-
<path d="M11.5,11 L18,16 L11.5,21" fill="none" stroke="#0a0a0c" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
|
2423
|
-
<line x1="19" y1="20" x2="21.5" y2="20" stroke="#0a0a0c" stroke-width="1.8" stroke-linecap="round">
|
|
2424
|
-
<animate attributeName="x1" values="19;21.5;19" dur="1.4s" repeatCount="indefinite"/>
|
|
2425
|
-
<animate attributeName="x2" values="21.5;24;21.5" dur="1.4s" repeatCount="indefinite"/>
|
|
2426
|
-
</line>
|
|
2427
|
-
</g>`;
|
|
2428
2422
|
function renderEcosystemMap(result, summary) {
|
|
2429
2423
|
const categories = buildCategories(result, summary);
|
|
2430
2424
|
const totalItems = summary.totalMcpServers + summary.totalFiles + summary.totalSkills + summary.totalAgents + summary.totalMemories;
|
|
2431
2425
|
if (totalItems === 0) return "";
|
|
2432
2426
|
const W = 900;
|
|
2433
|
-
const H =
|
|
2427
|
+
const H = 530;
|
|
2434
2428
|
const cx = W / 2;
|
|
2435
|
-
const cy = H / 2;
|
|
2429
|
+
const cy = H / 2 + 25;
|
|
2436
2430
|
const catRadius = 165;
|
|
2437
2431
|
const itemRadius = 55;
|
|
2438
2432
|
const startAngle = -Math.PI / 2;
|
|
@@ -2535,17 +2529,13 @@ function renderEcosystemMap(result, summary) {
|
|
|
2535
2529
|
<!-- Main circle -->
|
|
2536
2530
|
<circle cx="${cx}" cy="${cy}" r="42" fill="var(--bg-alt)" stroke="var(--accent)"
|
|
2537
2531
|
stroke-width="2.5" filter="url(#eco-glow-center)"/>
|
|
2538
|
-
<!--
|
|
2539
|
-
<
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
<!-- Project name below icon -->
|
|
2543
|
-
<text x="${cx}" y="${cy + 20}" text-anchor="middle" dominant-baseline="auto"
|
|
2544
|
-
font-family="var(--font-mono)" font-size="10" font-weight="600"
|
|
2545
|
-
fill="var(--text-bright)" opacity="0.9">${esc(projectName)}</text>
|
|
2532
|
+
<!-- Project name -->
|
|
2533
|
+
<text x="${cx}" y="${cy - 2}" text-anchor="middle" dominant-baseline="auto"
|
|
2534
|
+
font-family="var(--font-mono)" font-size="11" font-weight="700"
|
|
2535
|
+
fill="var(--text-bright)" opacity="0.95">${esc(projectName)}</text>
|
|
2546
2536
|
<!-- Total count -->
|
|
2547
|
-
<text x="${cx}" y="${cy +
|
|
2548
|
-
font-family="var(--font-mono)" font-size="
|
|
2537
|
+
<text x="${cx}" y="${cy + 14}" text-anchor="middle" dominant-baseline="auto"
|
|
2538
|
+
font-family="var(--font-mono)" font-size="9"
|
|
2549
2539
|
fill="var(--text-dim)">${totalItems} elementos</text>
|
|
2550
2540
|
</g>`;
|
|
2551
2541
|
const tooltip = `<g id="eco-tooltip" style="display:none;pointer-events:none">
|
|
@@ -2600,7 +2590,21 @@ function renderNavBar(summary) {
|
|
|
2600
2590
|
return `
|
|
2601
2591
|
<nav class="nav-bar">
|
|
2602
2592
|
<div class="nav-links">
|
|
2603
|
-
<span
|
|
2593
|
+
<span class="nav-brand">
|
|
2594
|
+
<svg viewBox="0 0 32 32" width="18" height="18" style="vertical-align:middle;margin-right:4px">
|
|
2595
|
+
<defs>
|
|
2596
|
+
<linearGradient id="nav-g1" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#22d3ee"/><stop offset="100%" stop-color="#06b6d4"/></linearGradient>
|
|
2597
|
+
<linearGradient id="nav-g2" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#0891b2"/><stop offset="100%" stop-color="#0e7490"/></linearGradient>
|
|
2598
|
+
</defs>
|
|
2599
|
+
<rect width="32" height="32" fill="#0a0a0c" rx="4"/>
|
|
2600
|
+
<rect x="9" y="7.5" width="16" height="18.5" rx="4" fill="url(#nav-g2)" opacity="0.5"/>
|
|
2601
|
+
<rect x="8" y="6.5" width="16" height="18.5" rx="4" fill="url(#nav-g1)"/>
|
|
2602
|
+
<path d="M11.5,11 L18,16 L11.5,21" fill="none" stroke="#0a0a0c" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
|
2603
|
+
<line x1="19" y1="20" x2="21.5" y2="20" stroke="#0a0a0c" stroke-width="1.8" stroke-linecap="round"/>
|
|
2604
|
+
</svg>
|
|
2605
|
+
<span style="font-family:var(--font-mono);font-size:0.8rem"><span style="color:var(--text-dim)">by</span> <span style="color:var(--accent)">cocaxcode</span></span>
|
|
2606
|
+
</span>
|
|
2607
|
+
<span class="nav-separator"></span>
|
|
2604
2608
|
${navLinks}
|
|
2605
2609
|
</div>
|
|
2606
2610
|
<div class="nav-actions">
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
generateHtml,
|
|
4
4
|
runAllScanners
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-G57UDS2C.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-BSHVSE33.js");
|
|
101
101
|
const server = createServer();
|
|
102
102
|
const transport = new StdioServerTransport();
|
|
103
103
|
await server.connect(transport);
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
introspectServers,
|
|
5
5
|
runAllScanners,
|
|
6
6
|
scanMcpConfigs
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-G57UDS2C.js";
|
|
8
8
|
|
|
9
9
|
// src/server.ts
|
|
10
10
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
@@ -116,15 +116,17 @@ function registerReportTool(server) {
|
|
|
116
116
|
{
|
|
117
117
|
dir: z3.string().optional().describe("Directorio a escanear (default: cwd)"),
|
|
118
118
|
output: z3.string().optional().describe("Ruta del archivo HTML (default: ai-context-report.html)"),
|
|
119
|
-
|
|
119
|
+
include_user: z3.boolean().optional().describe("Incluir configuraci\xF3n del usuario (~/.claude, skills, memorias, agentes)"),
|
|
120
|
+
no_introspect: z3.boolean().optional().describe("No conectar a MCP servers"),
|
|
121
|
+
timeout: z3.number().optional().describe("Timeout de introspecci\xF3n en ms (default: 10000)")
|
|
120
122
|
},
|
|
121
|
-
async ({ dir, output, no_introspect }) => {
|
|
123
|
+
async ({ dir, output, include_user, no_introspect, timeout }) => {
|
|
122
124
|
try {
|
|
123
125
|
const result = await runAllScanners({
|
|
124
126
|
dir: dir ?? process.cwd(),
|
|
125
|
-
includeUser: false,
|
|
127
|
+
includeUser: include_user ?? false,
|
|
126
128
|
introspect: !(no_introspect ?? false),
|
|
127
|
-
timeout: 1e4
|
|
129
|
+
timeout: timeout ?? 1e4
|
|
128
130
|
});
|
|
129
131
|
const html = generateHtml(result);
|
|
130
132
|
const outputPath = resolve(output ?? "ai-context-report.html");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cocaxcode/ai-context-inspector",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
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
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"typecheck": "tsc --noEmit",
|
|
22
22
|
"prepare": "npm run build",
|
|
23
23
|
"inspector": "npx @modelcontextprotocol/inspector node dist/index.js -- --mcp",
|
|
24
|
-
"serve:report": "node serve-report.
|
|
24
|
+
"serve:report": "node serve-report.cjs"
|
|
25
25
|
},
|
|
26
26
|
"engines": {
|
|
27
27
|
"node": ">=20.0.0"
|