@syke1/mcp-server 1.8.0 → 1.8.1
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/index.js +6 -6
- package/dist/web/server.js +6 -6
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -76,7 +76,7 @@ function resolveFilePath(fileArg, projectRoot, sourceDir) {
|
|
|
76
76
|
// License state — set at startup
|
|
77
77
|
let licenseStatus = { plan: "free", source: "default" };
|
|
78
78
|
// Free tier limits
|
|
79
|
-
const FREE_MAX_FILES =
|
|
79
|
+
const FREE_MAX_FILES = 200;
|
|
80
80
|
function isPro() {
|
|
81
81
|
if (!(0, validator_1._verifyStatus)(licenseStatus)) {
|
|
82
82
|
licenseStatus = { plan: "free", source: "default" };
|
|
@@ -103,7 +103,7 @@ function getMaxFiles() {
|
|
|
103
103
|
}
|
|
104
104
|
/**
|
|
105
105
|
* Check if a resolved file path is within the free tier limit.
|
|
106
|
-
* Free set = first
|
|
106
|
+
* Free set = first 200 files sorted alphabetically by relative path.
|
|
107
107
|
*/
|
|
108
108
|
function isFileInFreeSet(resolvedPath, graph) {
|
|
109
109
|
if (isPro())
|
|
@@ -112,7 +112,7 @@ function isFileInFreeSet(resolvedPath, graph) {
|
|
|
112
112
|
const idx = allFiles.indexOf(resolvedPath);
|
|
113
113
|
return idx >= 0 && idx < FREE_MAX_FILES;
|
|
114
114
|
}
|
|
115
|
-
const PRO_UPGRADE_MSG = "This file exceeds the Free tier limit (
|
|
115
|
+
const PRO_UPGRADE_MSG = "This file exceeds the Free tier limit (200 files). Upgrade to Pro for unlimited analysis: https://syke.cloud/dashboard/";
|
|
116
116
|
function getProToolError(toolName) {
|
|
117
117
|
if (licenseStatus.error) {
|
|
118
118
|
return `${toolName}: ${licenseStatus.error}`;
|
|
@@ -147,7 +147,7 @@ async function main() {
|
|
|
147
147
|
};
|
|
148
148
|
process.on("SIGINT", shutdown);
|
|
149
149
|
process.on("SIGTERM", shutdown);
|
|
150
|
-
const server = new index_js_1.Server({ name: "syke", version: "1.8.
|
|
150
|
+
const server = new index_js_1.Server({ name: "syke", version: "1.8.1" }, { capabilities: { tools: {} } });
|
|
151
151
|
// List tools
|
|
152
152
|
server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => ({
|
|
153
153
|
tools: [
|
|
@@ -628,7 +628,7 @@ async function main() {
|
|
|
628
628
|
}
|
|
629
629
|
});
|
|
630
630
|
// Pre-warm the graph (skip if no project root — e.g. Smithery scan)
|
|
631
|
-
console.error(`[syke] Starting SYKE MCP Server v1.8.
|
|
631
|
+
console.error(`[syke] Starting SYKE MCP Server v1.8.1`);
|
|
632
632
|
console.error(`[syke] License: ${licenseStatus.plan.toUpperCase()} (${licenseStatus.source})`);
|
|
633
633
|
if (licenseStatus.expiresAt) {
|
|
634
634
|
console.error(`[syke] Expires: ${licenseStatus.expiresAt}`);
|
|
@@ -798,7 +798,7 @@ main().catch((err) => {
|
|
|
798
798
|
* See: https://smithery.ai/docs/deploy#sandbox-server
|
|
799
799
|
*/
|
|
800
800
|
function createSandboxServer() {
|
|
801
|
-
const sandboxServer = new index_js_1.Server({ name: "syke", version: "1.8.
|
|
801
|
+
const sandboxServer = new index_js_1.Server({ name: "syke", version: "1.8.1" }, { capabilities: { tools: {} } });
|
|
802
802
|
sandboxServer.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => ({
|
|
803
803
|
tools: [
|
|
804
804
|
{
|
package/dist/web/server.js
CHANGED
|
@@ -408,7 +408,7 @@ function createWebServer(getGraphFn, initialFileCache, switchProjectFn, getProje
|
|
|
408
408
|
app.get("/api/graph", (_req, res) => {
|
|
409
409
|
const graph = getGraphFn();
|
|
410
410
|
const isPro = isProPlan();
|
|
411
|
-
const FREE_GRAPH_LIMIT =
|
|
411
|
+
const FREE_GRAPH_LIMIT = 200;
|
|
412
412
|
const nodes = [];
|
|
413
413
|
const edges = [];
|
|
414
414
|
// ── Compute depth for each file (BFS from roots) ──
|
|
@@ -429,7 +429,7 @@ function createWebServer(getGraphFn, initialFileCache, switchProjectFn, getProje
|
|
|
429
429
|
queue.push([dep, d + 1]);
|
|
430
430
|
}
|
|
431
431
|
}
|
|
432
|
-
// Free tier: limit to first
|
|
432
|
+
// Free tier: limit to first 200 files sorted alphabetically
|
|
433
433
|
const allFiles = [...graph.files].sort();
|
|
434
434
|
const visibleFiles = isPro ? allFiles : allFiles.slice(0, FREE_GRAPH_LIMIT);
|
|
435
435
|
const visibleSet = new Set(visibleFiles);
|
|
@@ -521,14 +521,14 @@ function createWebServer(getGraphFn, initialFileCache, switchProjectFn, getProje
|
|
|
521
521
|
if (!isPro) {
|
|
522
522
|
const allFiles = [...graph.files].sort();
|
|
523
523
|
const idx = allFiles.indexOf(resolved);
|
|
524
|
-
if (idx < 0 || idx >=
|
|
525
|
-
return res.status(403).json({ error: "This file exceeds the Free tier limit (
|
|
524
|
+
if (idx < 0 || idx >= 200) {
|
|
525
|
+
return res.status(403).json({ error: "This file exceeds the Free tier limit (200 files). Upgrade to Pro for unlimited analysis.", upgrade: "https://syke.cloud/dashboard/" });
|
|
526
526
|
}
|
|
527
527
|
}
|
|
528
528
|
const impactResult = await (0, analyze_impact_1.analyzeImpact)(resolved, graph);
|
|
529
529
|
try {
|
|
530
530
|
const aiResult = await (0, analyzer_1.analyzeWithAI)(resolved, impactResult, graph);
|
|
531
|
-
const partial = !isPro && graph.files.size >
|
|
531
|
+
const partial = !isPro && graph.files.size > 200;
|
|
532
532
|
res.json({ file: impactResult.relativePath, analysis: aiResult, partial });
|
|
533
533
|
}
|
|
534
534
|
catch (err) {
|
|
@@ -792,7 +792,7 @@ function createWebServer(getGraphFn, initialFileCache, switchProjectFn, getProje
|
|
|
792
792
|
planSource: license?.source || "default",
|
|
793
793
|
expiresAt: license?.expiresAt || null,
|
|
794
794
|
licenseKey: maskedKey,
|
|
795
|
-
freeFileLimit:
|
|
795
|
+
freeFileLimit: 200,
|
|
796
796
|
sykeVersion,
|
|
797
797
|
aiProvider: aiInfo.activeProvider,
|
|
798
798
|
aiKeys: aiInfo.configured,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@syke1/mcp-server",
|
|
3
|
-
"version": "1.8.
|
|
3
|
+
"version": "1.8.1",
|
|
4
4
|
"mcpName": "io.github.khalomsky/syke",
|
|
5
5
|
"description": "AI code impact analysis MCP server — dependency graphs, cascade detection, and a mandatory build gate for AI coding agents",
|
|
6
6
|
"main": "dist/index.js",
|