@syke1/mcp-server 1.5.5 → 1.6.0
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/ai/analyzer.js +1 -112
- package/dist/ai/context-extractor.js +1 -224
- package/dist/ai/provider.js +1 -186
- package/dist/ai/realtime-analyzer.js +1 -253
- package/dist/config.js +1 -121
- package/dist/git/change-coupling.js +1 -250
- package/dist/graph/incremental.js +1 -319
- package/dist/graph/memo-cache.js +1 -176
- package/dist/graph/scc.js +1 -206
- package/dist/graph.js +1 -137
- package/dist/index.js +1 -852
- package/dist/license/validator.d.ts +6 -0
- package/dist/license/validator.js +1 -328
- package/dist/scoring/pagerank.js +1 -221
- package/dist/scoring/risk-scorer.js +1 -623
- package/dist/tools/analyze-impact.js +1 -378
- package/dist/tools/gate-build.js +1 -409
- package/dist/watcher/file-cache.js +1 -281
- package/dist/web/server.js +1 -925
- package/package.json +3 -2
|
@@ -1,253 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.analyzeChangeRealtime = analyzeChangeRealtime;
|
|
37
|
-
const analyze_impact_1 = require("../tools/analyze-impact");
|
|
38
|
-
const crypto = __importStar(require("crypto"));
|
|
39
|
-
const path = __importStar(require("path"));
|
|
40
|
-
const provider_1 = require("./provider");
|
|
41
|
-
const context_extractor_1 = require("./context-extractor");
|
|
42
|
-
const analysisCache = new Map();
|
|
43
|
-
const MAX_CACHE_SIZE = 100;
|
|
44
|
-
function computeContentHash(content, diff) {
|
|
45
|
-
return crypto.createHash("md5").update((content || "") + "\n---\n" + diff).digest("hex");
|
|
46
|
-
}
|
|
47
|
-
function evictOldestCacheEntry() {
|
|
48
|
-
let oldestKey = null;
|
|
49
|
-
let oldestTime = Infinity;
|
|
50
|
-
for (const [key, entry] of analysisCache) {
|
|
51
|
-
if (entry.insertedAt < oldestTime) {
|
|
52
|
-
oldestTime = entry.insertedAt;
|
|
53
|
-
oldestKey = key;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
if (oldestKey)
|
|
57
|
-
analysisCache.delete(oldestKey);
|
|
58
|
-
}
|
|
59
|
-
// ── Rate limiter: max 10 AI calls per minute (sliding window) ──
|
|
60
|
-
const RATE_LIMIT_MAX = 10;
|
|
61
|
-
const RATE_LIMIT_WINDOW_MS = 60000;
|
|
62
|
-
const callTimestamps = [];
|
|
63
|
-
function isRateLimited() {
|
|
64
|
-
const now = Date.now();
|
|
65
|
-
// Remove timestamps outside the window
|
|
66
|
-
while (callTimestamps.length > 0 && callTimestamps[0] <= now - RATE_LIMIT_WINDOW_MS) {
|
|
67
|
-
callTimestamps.shift();
|
|
68
|
-
}
|
|
69
|
-
return callTimestamps.length >= RATE_LIMIT_MAX;
|
|
70
|
-
}
|
|
71
|
-
function recordCall() {
|
|
72
|
-
callTimestamps.push(Date.now());
|
|
73
|
-
}
|
|
74
|
-
function getSystemPrompt() {
|
|
75
|
-
return `You are a senior full-stack architect and code impact monitoring AI with 20 years of experience.
|
|
76
|
-
Role: Detect potential errors and cascading impacts before build when files are modified/added/deleted.
|
|
77
|
-
|
|
78
|
-
Analysis principles:
|
|
79
|
-
1. Broken imports/exports: Check if deleted/renamed classes/functions/variables are referenced in other files
|
|
80
|
-
2. Type mismatches: Verify parameter types and return type changes match call sites
|
|
81
|
-
3. State management cascade: Impact of Provider/Notifier changes on UI and business logic
|
|
82
|
-
4. Routing impact: Effect of route/parameter changes on navigation
|
|
83
|
-
5. Missing initialization: Whether newly added Providers are properly registered
|
|
84
|
-
|
|
85
|
-
Response format (must be JSON):
|
|
86
|
-
{
|
|
87
|
-
"riskLevel": "CRITICAL|HIGH|MEDIUM|LOW|SAFE",
|
|
88
|
-
"summary": "One-line summary",
|
|
89
|
-
"brokenImports": ["List of potentially broken imports"],
|
|
90
|
-
"sideEffects": ["List of expected side effects"],
|
|
91
|
-
"warnings": ["List of warnings"],
|
|
92
|
-
"suggestion": "Recommended action"
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
CRITICAL: Build failure certain
|
|
96
|
-
HIGH: Runtime error possible
|
|
97
|
-
MEDIUM: Behavior change possible
|
|
98
|
-
LOW: Minor impact
|
|
99
|
-
SAFE: Safe change
|
|
100
|
-
|
|
101
|
-
Respond with JSON only. No explanatory text, just pure JSON.`;
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Analyze a file change in real-time using the configured AI provider.
|
|
105
|
-
* Receives the diff + connected files context from memory cache.
|
|
106
|
-
*/
|
|
107
|
-
async function analyzeChangeRealtime(change, graph, getFileContent) {
|
|
108
|
-
const start = Date.now();
|
|
109
|
-
const relPath = change.relativePath;
|
|
110
|
-
const codeBlockLang = graph.languages[0] || "text";
|
|
111
|
-
// Get impacted files from graph
|
|
112
|
-
const absPath = path.normalize(path.join(graph.sourceDir, relPath));
|
|
113
|
-
let affectedNodes = [];
|
|
114
|
-
if (graph.files.has(absPath)) {
|
|
115
|
-
const impact = await (0, analyze_impact_1.analyzeImpact)(absPath, graph);
|
|
116
|
-
affectedNodes = [...impact.directDependents, ...impact.transitiveDependents];
|
|
117
|
-
}
|
|
118
|
-
// Build context: changed file + top 5 connected files' smart context
|
|
119
|
-
const connectedFiles = [];
|
|
120
|
-
const revDeps = graph.reverse.get(absPath) || [];
|
|
121
|
-
const fwdDeps = graph.forward.get(absPath) || [];
|
|
122
|
-
const connected = [...new Set([...revDeps, ...fwdDeps])].slice(0, 5);
|
|
123
|
-
for (const dep of connected) {
|
|
124
|
-
const depRel = path.relative(graph.sourceDir, dep).replace(/\\/g, "/");
|
|
125
|
-
const content = getFileContent(depRel);
|
|
126
|
-
if (content) {
|
|
127
|
-
const smartCtx = (0, context_extractor_1.buildSmartContext)(content, codeBlockLang);
|
|
128
|
-
connectedFiles.push(`### ${depRel}\n\`\`\`${codeBlockLang}\n${smartCtx}\n\`\`\``);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
// Build diff summary with signature changes
|
|
132
|
-
let diffSummary = "";
|
|
133
|
-
if (change.type === "deleted") {
|
|
134
|
-
diffSummary = `File deleted. Previous content:\n\`\`\`${codeBlockLang}\n${(change.oldContent || "").split("\n").slice(0, 40).join("\n")}\n\`\`\``;
|
|
135
|
-
}
|
|
136
|
-
else if (change.type === "added") {
|
|
137
|
-
const smartNew = (0, context_extractor_1.buildSmartContext)(change.newContent || "", codeBlockLang);
|
|
138
|
-
diffSummary = `New file added:\n\`\`\`${codeBlockLang}\n${smartNew}\n\`\`\``;
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
// Modified — include signature diff
|
|
142
|
-
const diffLines = change.diff.slice(0, 30).map(d => {
|
|
143
|
-
if (d.type === "added")
|
|
144
|
-
return `+ L${d.line}: ${d.new}`;
|
|
145
|
-
if (d.type === "removed")
|
|
146
|
-
return `- L${d.line}: ${d.old}`;
|
|
147
|
-
return `~ L${d.line}: ${d.old} → ${d.new}`;
|
|
148
|
-
});
|
|
149
|
-
diffSummary = `Changed lines (top 30 of ${change.diff.length}):\n\`\`\`\n${diffLines.join("\n")}\n\`\`\``;
|
|
150
|
-
// Add structural signature changes
|
|
151
|
-
if (change.oldContent && change.newContent) {
|
|
152
|
-
const sigChanges = (0, context_extractor_1.diffSignatures)(change.oldContent, change.newContent, codeBlockLang);
|
|
153
|
-
if (sigChanges.length > 0) {
|
|
154
|
-
diffSummary += "\n\n### Structural changes (signature diff)";
|
|
155
|
-
for (const sc of sigChanges) {
|
|
156
|
-
if (sc.type === "added") {
|
|
157
|
-
diffSummary += `\n+ Added: ${sc.newSignature}`;
|
|
158
|
-
}
|
|
159
|
-
else if (sc.type === "removed") {
|
|
160
|
-
diffSummary += `\n- Removed: ${sc.oldSignature}`;
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
diffSummary += `\n~ Changed: ${sc.oldSignature}\n → ${sc.newSignature}`;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
if (change.newContent) {
|
|
169
|
-
const smartNew = (0, context_extractor_1.buildSmartContext)(change.newContent, codeBlockLang);
|
|
170
|
-
diffSummary += `\n\nFull file after modification:\n\`\`\`${codeBlockLang}\n${smartNew}\n\`\`\``;
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
const userPrompt = `## File change detected: ${relPath}
|
|
174
|
-
Change type: ${change.type.toUpperCase()}
|
|
175
|
-
Project languages: ${graph.languages.join(", ") || "unknown"}
|
|
176
|
-
Affected files: ${affectedNodes.length}
|
|
177
|
-
|
|
178
|
-
${diffSummary}
|
|
179
|
-
|
|
180
|
-
${connectedFiles.length > 0 ? `## Connected files (${connectedFiles.length})\n${connectedFiles.join("\n\n")}` : "No connected files"}
|
|
181
|
-
|
|
182
|
-
Analyze the impact of this change on the project.`;
|
|
183
|
-
// ── Hash cache check: skip AI if content+diff unchanged ──
|
|
184
|
-
const diffStr = change.diff.map(d => `${d.type}:${d.line}:${d.old || ""}:${d.new || ""}`).join("|");
|
|
185
|
-
const contentHash = computeContentHash(change.newContent, diffStr);
|
|
186
|
-
const cached = analysisCache.get(relPath);
|
|
187
|
-
if (cached && cached.hash === contentHash) {
|
|
188
|
-
console.error(`[syke:ai] Cache hit for ${relPath} — skipping AI call`);
|
|
189
|
-
return { ...cached.result, timestamp: change.timestamp, analysisMs: 0 };
|
|
190
|
-
}
|
|
191
|
-
// ── Rate limit check ──
|
|
192
|
-
if (isRateLimited()) {
|
|
193
|
-
const analysisMs = Date.now() - start;
|
|
194
|
-
console.error(`[syke:ai] Rate limit reached (${RATE_LIMIT_MAX}/min) — skipping AI for ${relPath}`);
|
|
195
|
-
return {
|
|
196
|
-
file: relPath,
|
|
197
|
-
changeType: change.type,
|
|
198
|
-
timestamp: change.timestamp,
|
|
199
|
-
riskLevel: affectedNodes.length >= 10 ? "HIGH" : affectedNodes.length >= 5 ? "MEDIUM" : "LOW",
|
|
200
|
-
summary: `Rate limited — graph-based analysis: ${affectedNodes.length} files impacted`,
|
|
201
|
-
brokenImports: [],
|
|
202
|
-
sideEffects: [],
|
|
203
|
-
warnings: ["AI analysis skipped: rate limit (10 calls/min)"],
|
|
204
|
-
suggestion: "Wait a moment for AI analysis to resume",
|
|
205
|
-
affectedNodes,
|
|
206
|
-
analysisMs,
|
|
207
|
-
};
|
|
208
|
-
}
|
|
209
|
-
try {
|
|
210
|
-
const provider = (0, provider_1.getAIProvider)();
|
|
211
|
-
if (!provider) {
|
|
212
|
-
throw new Error("No AI provider available (set GEMINI_KEY, OPENAI_KEY, or ANTHROPIC_KEY)");
|
|
213
|
-
}
|
|
214
|
-
recordCall();
|
|
215
|
-
const parsed = await provider.analyzeJSON(getSystemPrompt(), userPrompt);
|
|
216
|
-
const analysisMs = Date.now() - start;
|
|
217
|
-
const result = {
|
|
218
|
-
file: relPath,
|
|
219
|
-
changeType: change.type,
|
|
220
|
-
timestamp: change.timestamp,
|
|
221
|
-
riskLevel: parsed.riskLevel || "LOW",
|
|
222
|
-
summary: parsed.summary || "Analysis complete",
|
|
223
|
-
brokenImports: parsed.brokenImports || [],
|
|
224
|
-
sideEffects: parsed.sideEffects || [],
|
|
225
|
-
warnings: parsed.warnings || [],
|
|
226
|
-
suggestion: parsed.suggestion || "",
|
|
227
|
-
affectedNodes,
|
|
228
|
-
analysisMs,
|
|
229
|
-
};
|
|
230
|
-
// Store in cache
|
|
231
|
-
if (analysisCache.size >= MAX_CACHE_SIZE)
|
|
232
|
-
evictOldestCacheEntry();
|
|
233
|
-
analysisCache.set(relPath, { hash: contentHash, result, insertedAt: Date.now() });
|
|
234
|
-
return result;
|
|
235
|
-
}
|
|
236
|
-
catch (err) {
|
|
237
|
-
const analysisMs = Date.now() - start;
|
|
238
|
-
console.error(`[syke:ai] Analysis error for ${relPath}: ${err.message}`);
|
|
239
|
-
return {
|
|
240
|
-
file: relPath,
|
|
241
|
-
changeType: change.type,
|
|
242
|
-
timestamp: change.timestamp,
|
|
243
|
-
riskLevel: affectedNodes.length >= 10 ? "HIGH" : affectedNodes.length >= 5 ? "MEDIUM" : "LOW",
|
|
244
|
-
summary: `AI analysis failed — graph-based analysis: ${affectedNodes.length} files impacted`,
|
|
245
|
-
brokenImports: [],
|
|
246
|
-
sideEffects: [],
|
|
247
|
-
warnings: [`AI analysis error: ${err.message}`],
|
|
248
|
-
suggestion: "Manual review required",
|
|
249
|
-
affectedNodes,
|
|
250
|
-
analysisMs,
|
|
251
|
-
};
|
|
252
|
-
}
|
|
253
|
-
}
|
|
1
|
+
'use strict';const _0x16502c=_0x389d;function _0x1720(){const _0xc915d2=['cI0GuMvTB3zLzdOG','quKGyw5HBhLZAxmGC2TPChbLzdOGCMf0zsbSAw1PDcaOmtaGy2fSBhmVBwLUkq','B2XKq29UDgvUDa','zgPqqMK','C3vTBwfYEq','z2v0t3DUuhjVCgvYDhLoyw1LCW','tMv3igzPBguGywrKzwq6cMbGya','wfHxt1a','CMv2zxjZzq','cLbYB2PLy3qGBgfUz3vHz2vZoIa','CMvZDwX0','mtm4mdy5ne5cDhfYzq','yNvPBgrtBwfYDenVBNrLEhq','zgLMzG','w3n5A2u6ywLDifjHDguGBgLTAxqGCMvHy2HLzcaO','w3n5A2u6ywLDiefUywX5C2LZigvYCM9YigzVCIa','iokaLcbZA2LWCgLUzYbbssbJywXS','wgTpzfq','AgfZ','BgvUz3rO','y3jLyxrL','lI9JB250zxH0lwv4DhjHy3rVCG','BMv3u2LNBMf0DxjL','y2fSBa','odq5odqZr1nTBfnc','cN4Gq2HHBMDLzdOG','yw5HBhL6zuPtt04','mtG3mZm2nxrqy2PYzq','nJm4nZGXAgPYueTk','mtGXndq0oe1VqNfUzG','u3HIBKq','Bwq1','CMvTB3zLza','x19PBxbVCNrtDgfY','BM93','kYbm','zgLMzLnPz25HDhvYzxm','ChjVDg90ExbL','B2XKu2LNBMf0DxjL','C2LKzuvMzMvJDhm','C2XPy2u','z2v0','DhLWzq','zxjYB3i','DxbKyxrL','tM8GquKGChjVDMLKzxiGyxzHAwXHyMXLicHZzxqGr0vnsu5jx0TfwsWGt1bftKfjx0TfwsWGB3iGqu5usfjpueLdx0TfwsK','zgvMAw5LuhjVCgvYDhK','vNHzz0S','tuvesvvn','lI4VDg9VBhmVyw5HBhL6zs1PBxbHy3q','D2fYBMLUz3m','AvHSyu8','BMv3q29UDgvUDa','neneq1DNuq','yw5HBhLZAxnnCW','ChvZAa','EhDqyLC','cMbGya','zMLSzq','cIaG4OAsicaGicaGia','ywzMzwn0zwroB2rLCW','tKv5rLy','rMLSzsbKzwXLDgvKlIbqCMv2Aw91CYbJB250zw50oGPGyga','q2HHBMDLzcbSAw5LCYaODg9WidmWig9Mia','seLhsa','x19JCMvHDgvcAw5KAw5N','BMv3','D3jPDgfIBgu','BgLUzq','zgvSzxrL','BM9YBwfSAxPL','BwvZC2fNzq','mKnWC0Pera','zgvMyxvSDa','ve1nsfG','AM9PBG','ywrKzwq','Agv4','iokgKIa','C291CMnLrgLY','y3jLyxrLsgfZAa','zgvSzxrLza','nZaZndeZmgzWwunHqG','BwfW','DMfSDwu','x19LC01VzhvSzq','v2fPDcbHig1VBwvUDcbMB3iGquKGyw5HBhLZAxmGDg8GCMvZDw1L','Aw5Zzxj0zwrbDa','y2HHBMDLvhLWzq','BgfUz3vHz2vZ','Dg9vChbLCKnHC2u','u09bDxq','B2XK','DgLTzxn0yw1W','shftB2O','CMvSyxrPDMu','nJm4ntyYANfSEu5f'];_0x1720=function(){return _0xc915d2;};return _0x1720();}(function(_0x36c636,_0xc4dd1f){const _0x4d9cf8={_0x284ce2:0x16f,_0x4d9c59:0x1a4,_0x5e21f2:0x15c,_0x2eef55:0x187,_0x492c16:0x193},_0x56661f=_0x389d,_0x398371=_0x36c636();while(!![]){try{const _0x87632c=-parseInt(_0x56661f(0x1a0))/0x1*(parseInt(_0x56661f(_0x4d9cf8._0x284ce2))/0x2)+-parseInt(_0x56661f(_0x4d9cf8._0x4d9c59))/0x3*(-parseInt(_0x56661f(_0x4d9cf8._0x5e21f2))/0x4)+parseInt(_0x56661f(0x1a3))/0x5+-parseInt(_0x56661f(_0x4d9cf8._0x2eef55))/0x6+-parseInt(_0x56661f(_0x4d9cf8._0x492c16))/0x7+parseInt(_0x56661f(0x1a5))/0x8+parseInt(_0x56661f(0x179))/0x9;if(_0x87632c===_0xc4dd1f)break;else _0x398371['push'](_0x398371['shift']());}catch(_0x26eb08){_0x398371['push'](_0x398371['shift']());}}}(_0x1720,0x6c060));var __createBinding=this&&this[_0x16502c(0x168)]||(Object['create']?function(_0xfcd8d0,_0x1c9361,_0x3cc500,_0x406283){const _0xd22401={_0x297228:0x1b1,_0x4fcdc2:0x17c,_0xbfc827:0x16a,_0x3dde71:0x1b1},_0x285555=_0x16502c,_0x554566={};_0x554566['AtjVy']=function(_0x4bb6e4,_0x409927){return _0x4bb6e4===_0x409927;};const _0x1658a8=_0x554566;if(_0x1658a8['AtjVy'](_0x406283,undefined))_0x406283=_0x3cc500;var _0x12a4c1=Object['getOwnPropertyDescriptor'](_0x1c9361,_0x3cc500);if(!_0x12a4c1||(_0x285555(_0xd22401._0x297228)in _0x12a4c1?!_0x1c9361[_0x285555(_0xd22401._0x4fcdc2)]:_0x12a4c1[_0x285555(_0xd22401._0xbfc827)]||_0x12a4c1['configurable'])){const _0x191bcd={};_0x191bcd['enumerable']=!![],_0x191bcd[_0x285555(_0xd22401._0x3dde71)]=function(){return _0x1c9361[_0x3cc500];},_0x12a4c1=_0x191bcd;}Object['defineProperty'](_0xfcd8d0,_0x406283,_0x12a4c1);}:function(_0x1f577d,_0x13b3f4,_0x4edd48,_0x20eb64){if(_0x20eb64===undefined)_0x20eb64=_0x4edd48;_0x1f577d[_0x20eb64]=_0x13b3f4[_0x4edd48];}),__setModuleDefault=this&&this['__setModuleDefault']||(Object[_0x16502c(0x19c)]?function(_0x1f0ecc,_0x277450){const _0x81d4f8={_0x5052e8:0x155},_0x39b006=_0x16502c,_0x30acaa={};_0x30acaa['enumerable']=!![],_0x30acaa[_0x39b006(0x17b)]=_0x277450,Object[_0x39b006(_0x81d4f8._0x5052e8)](_0x1f0ecc,_0x39b006(0x170),_0x30acaa);}:function(_0xeb879a,_0x16055e){const _0x260f29={_0x4379e1:0x170},_0x3bad31=_0x16502c;_0xeb879a[_0x3bad31(_0x260f29._0x4379e1)]=_0x16055e;}),__importStar=this&&this[_0x16502c(0x1a9)]||(function(){const _0x4ecf84={_0x52d16b:0x19b},_0x22fc67={_0x547e90:0x185},_0x370ff9={'HqSoj':function(_0x1751cd,_0x1efece){return _0x1751cd(_0x1efece);},'WZeXy':function(_0x24e322,_0x51ecba){return _0x24e322!==_0x51ecba;}};var _0xcf7211=function(_0x39eb5b){const _0x5d97c5=_0x389d;return _0xcf7211=Object[_0x5d97c5(0x18d)]||function(_0x3e4276){const _0x185e4a=_0x5d97c5;var _0x5e9030=[];for(var _0x3f4055 in _0x3e4276)if(Object[_0x185e4a(0x1ad)]['hasOwnProperty'][_0x185e4a(0x19f)](_0x3e4276,_0x3f4055))_0x5e9030[_0x5e9030['length']]=_0x3f4055;return _0x5e9030;},_0x370ff9[_0x5d97c5(_0x22fc67._0x547e90)](_0xcf7211,_0x39eb5b);};return function(_0x4b2946){const _0x34230b=_0x389d;if(_0x4b2946&&_0x4b2946[_0x34230b(0x17c)])return _0x4b2946;var _0x52a452={};if(_0x4b2946!=null){for(var _0x51b8be=_0xcf7211(_0x4b2946),_0x202928=0x0;_0x202928<_0x51b8be[_0x34230b(_0x4ecf84._0x52d16b)];_0x202928++)if(_0x370ff9['WZeXy'](_0x51b8be[_0x202928],'default'))__createBinding(_0x52a452,_0x4b2946,_0x51b8be[_0x202928]);}return __setModuleDefault(_0x52a452,_0x4b2946),_0x52a452;};}());const _0x452df8={};_0x452df8['value']=!![],Object[_0x16502c(0x155)](exports,'__esModule',_0x452df8),exports['analyzeChangeRealtime']=analyzeChangeRealtime;const analyze_impact_1=require(_0x16502c(0x158)),crypto=__importStar(require('crypto')),path=__importStar(require('path')),provider_1=require('./provider'),context_extractor_1=require(_0x16502c(0x19d)),analysisCache=new Map(),MAX_CACHE_SIZE=0x64;function computeContentHash(_0x15c493,_0x33706a){const _0x48064e={_0x3aaa72:0x1b4},_0x47cbf3=_0x16502c,_0x2402d3={};_0x2402d3[_0x47cbf3(0x182)]=_0x47cbf3(0x1a7),_0x2402d3[_0x47cbf3(0x15a)]=function(_0x259fc8,_0x6f0990){return _0x259fc8+_0x6f0990;},_0x2402d3[_0x47cbf3(0x171)]='\x0a---\x0a';const _0x12ae44=_0x2402d3;return crypto[_0x47cbf3(0x177)](_0x12ae44['SOAut'])[_0x47cbf3(_0x48064e._0x3aaa72)](_0x12ae44['iXlaO']((_0x15c493||'')+_0x12ae44[_0x47cbf3(0x171)],_0x33706a))['digest'](_0x47cbf3(0x174));}function evictOldestCacheEntry(){const _0x16d961={_0x26f306:0x16c},_0x4f431e=_0x16502c,_0x588011={};_0x588011['nOvOo']=function(_0x52f911,_0x4743ee){return _0x52f911<_0x4743ee;};const _0x51ffd7=_0x588011;let _0x137021=null,_0x300e1d=Infinity;for(const [_0x574282,_0x3d0e67]of analysisCache){_0x51ffd7['nOvOo'](_0x3d0e67[_0x4f431e(0x17e)],_0x300e1d)&&(_0x300e1d=_0x3d0e67[_0x4f431e(0x17e)],_0x137021=_0x574282);}if(_0x137021)analysisCache[_0x4f431e(_0x16d961._0x26f306)](_0x137021);}const RATE_LIMIT_MAX=0xa,RATE_LIMIT_WINDOW_MS=0xea60,callTimestamps=[];function isRateLimited(){const _0x3e71f9={_0x596dae:0x1aa,_0x2c060a:0x156},_0x206765=_0x16502c,_0x2c767f={};_0x2c767f['VxYgK']=function(_0x4477d7,_0x3df335){return _0x4477d7>=_0x3df335;};const _0x53c88d=_0x2c767f,_0x26ff3c=Date[_0x206765(_0x3e71f9._0x596dae)]();while(callTimestamps['length']>0x0&&callTimestamps[0x0]<=_0x26ff3c-RATE_LIMIT_WINDOW_MS){callTimestamps['shift']();}return _0x53c88d[_0x206765(_0x3e71f9._0x2c060a)](callTimestamps[_0x206765(0x19b)],RATE_LIMIT_MAX);}function recordCall(){const _0x4a8f87={_0x1ae2f8:0x15e,_0x42489f:0x1aa},_0x52f2c5=_0x16502c;callTimestamps[_0x52f2c5(_0x4a8f87._0x1ae2f8)](Date[_0x52f2c5(_0x4a8f87._0x42489f)]());}function _0x389d(_0x1354e1,_0x467e3b){_0x1354e1=_0x1354e1-0x155;const _0x172018=_0x1720();let _0x389d5e=_0x172018[_0x1354e1];if(_0x389d['xzpodb']===undefined){var _0x2f49d3=function(_0x5d0a8b){const _0xa49c43='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3c7da7='',_0x2d5af7='';for(let _0xf11820=0x0,_0x2fa26c,_0x137d5a,_0x310812=0x0;_0x137d5a=_0x5d0a8b['charAt'](_0x310812++);~_0x137d5a&&(_0x2fa26c=_0xf11820%0x4?_0x2fa26c*0x40+_0x137d5a:_0x137d5a,_0xf11820++%0x4)?_0x3c7da7+=String['fromCharCode'](0xff&_0x2fa26c>>(-0x2*_0xf11820&0x6)):0x0){_0x137d5a=_0xa49c43['indexOf'](_0x137d5a);}for(let _0x48bd7e=0x0,_0x247c85=_0x3c7da7['length'];_0x48bd7e<_0x247c85;_0x48bd7e++){_0x2d5af7+='%'+('00'+_0x3c7da7['charCodeAt'](_0x48bd7e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2d5af7);};_0x389d['AuMhZU']=_0x2f49d3,_0x389d['xdMPJI']={},_0x389d['xzpodb']=!![];}const _0x4fab8b=_0x172018[0x0],_0x1ef608=_0x1354e1+_0x4fab8b,_0x3709ec=_0x389d['xdMPJI'][_0x1ef608];return!_0x3709ec?(_0x389d5e=_0x389d['AuMhZU'](_0x389d5e),_0x389d['xdMPJI'][_0x1ef608]=_0x389d5e):_0x389d5e=_0x3709ec,_0x389d5e;}function getSystemPrompt(){return'You\x20are\x20a\x20senior\x20full-stack\x20architect\x20and\x20code\x20impact\x20monitoring\x20AI\x20with\x2020\x20years\x20of\x20experience.\x0aRole:\x20Detect\x20potential\x20errors\x20and\x20cascading\x20impacts\x20before\x20build\x20when\x20files\x20are\x20modified/added/deleted.\x0a\x0aAnalysis\x20principles:\x0a1.\x20Broken\x20imports/exports:\x20Check\x20if\x20deleted/renamed\x20classes/functions/variables\x20are\x20referenced\x20in\x20other\x20files\x0a2.\x20Type\x20mismatches:\x20Verify\x20parameter\x20types\x20and\x20return\x20type\x20changes\x20match\x20call\x20sites\x0a3.\x20State\x20management\x20cascade:\x20Impact\x20of\x20Provider/Notifier\x20changes\x20on\x20UI\x20and\x20business\x20logic\x0a4.\x20Routing\x20impact:\x20Effect\x20of\x20route/parameter\x20changes\x20on\x20navigation\x0a5.\x20Missing\x20initialization:\x20Whether\x20newly\x20added\x20Providers\x20are\x20properly\x20registered\x0a\x0aResponse\x20format\x20(must\x20be\x20JSON):\x0a{\x0a\x20\x20\x22riskLevel\x22:\x20\x22CRITICAL|HIGH|MEDIUM|LOW|SAFE\x22,\x0a\x20\x20\x22summary\x22:\x20\x22One-line\x20summary\x22,\x0a\x20\x20\x22brokenImports\x22:\x20[\x22List\x20of\x20potentially\x20broken\x20imports\x22],\x0a\x20\x20\x22sideEffects\x22:\x20[\x22List\x20of\x20expected\x20side\x20effects\x22],\x0a\x20\x20\x22warnings\x22:\x20[\x22List\x20of\x20warnings\x22],\x0a\x20\x20\x22suggestion\x22:\x20\x22Recommended\x20action\x22\x0a}\x0a\x0aCRITICAL:\x20Build\x20failure\x20certain\x0aHIGH:\x20Runtime\x20error\x20possible\x0aMEDIUM:\x20Behavior\x20change\x20possible\x0aLOW:\x20Minor\x20impact\x0aSAFE:\x20Safe\x20change\x0a\x0aRespond\x20with\x20JSON\x20only.\x20No\x20explanatory\x20text,\x20just\x20pure\x20JSON.';}async function analyzeChangeRealtime(_0x2a17d4,_0x420cb1,_0x364512){const _0x5002c9={_0x12f649:0x17d,_0x640095:0x1b5,_0x59d49c:0x157,_0x5aea80:0x180,_0x4397c5:0x190,_0x2fefd0:0x1b1,_0x425e65:0x186,_0x46fc84:0x176,_0x2dbfea:0x194,_0x4a317a:0x15e,_0x3ff214:0x165,_0x12f44b:0x160,_0xbcd3e6:0x1b2,_0x257e8c:0x15b,_0x961483:0x188,_0x23ec53:0x1ae,_0x3b3d98:0x194,_0x5e1060:0x191,_0x3816ce:0x172,_0x1734a9:0x19b,_0x3c3b26:0x17a,_0x4c03a9:0x198,_0x20e9ae:0x192,_0x186698:0x184,_0x122880:0x15d,_0x45eed0:0x1b3,_0x557d70:0x1b2,_0x19e775:0x18b,_0x4ed9ba:0x163,_0x3110a0:0x1a2,_0x32cdfc:0x1b2,_0x2a7e4e:0x15f,_0x33f0ac:0x197,_0xbb463f:0x184,_0x42ef10:0x164,_0x228933:0x19b,_0x54886f:0x18f},_0x2d39fb={_0x2f28ff:0x1a6,_0x11a08b:0x169,_0x398746:0x1a8,_0x405eff:0x16b,_0x51fb05:0x175},_0x154263=_0x16502c,_0xb1ed18={'SxbnD':function(_0x425aff,_0x5eb9df){return _0x425aff===_0x5eb9df;},'IVOMc':function(_0x5a3da7,_0x4e50b6){return _0x5a3da7(_0x4e50b6);},'QZFUb':function(_0x423cbf,_0x6e25bf){return _0x423cbf===_0x6e25bf;},'eqIAJ':function(_0x2993fe,_0xb28b2f){return _0x2993fe>_0xb28b2f;},'CoaEY':function(_0x35e0b5,_0x4633c8,_0xc280ad){return _0x35e0b5(_0x4633c8,_0xc280ad);},'eDdpH':function(_0x222603,_0x258f69){return _0x222603===_0x258f69;},'EpaiM':function(_0x2d97df,_0x33f47f){return _0x2d97df-_0x33f47f;},'djPBi':_0x154263(_0x5002c9._0x12f649),'XkOdT':_0x154263(_0x5002c9._0x640095),'vOfeB':function(_0x3089b7){return _0x3089b7();},'xwPbW':'LOW','zQrly':'Analysis\x20complete','BFmft':function(_0x175499,_0x3367a0){return _0x175499>=_0x3367a0;},'rIFdx':function(_0x1d7669,_0x4d406f){return _0x1d7669-_0x4d406f;},'NEyFV':function(_0x9f3d78,_0x12a8de){return _0x9f3d78>=_0x12a8de;},'XXWOP':_0x154263(_0x5002c9._0x59d49c)},_0x4dffc9=Date[_0x154263(0x1aa)](),_0x2fd773=_0x2a17d4['relativePath'],_0x1f4e6a=_0x420cb1[_0x154263(_0x5002c9._0x5aea80)][0x0]||'text',_0x3400e8=path[_0x154263(0x16d)](path['join'](_0x420cb1['sourceDir'],_0x2fd773));let _0x24bc83=[];if(_0x420cb1['files'][_0x154263(0x19a)](_0x3400e8)){const _0x1e00bc=await(0x0,analyze_impact_1['analyzeImpact'])(_0x3400e8,_0x420cb1);_0x24bc83=[..._0x1e00bc['directDependents'],..._0x1e00bc['transitiveDependents']];}const _0x3ecd10=[],_0x21e665=_0x420cb1[_0x154263(_0x5002c9._0x4397c5)][_0x154263(_0x5002c9._0x2fefd0)](_0x3400e8)||[],_0x4eb643=_0x420cb1['forward'][_0x154263(0x1b1)](_0x3400e8)||[],_0x48c1e7=[...new Set([..._0x21e665,..._0x4eb643])][_0x154263(0x1b0)](0x0,0x5);for(const _0x1ee89e of _0x48c1e7){const _0x1c52fc=path[_0x154263(_0x5002c9._0x425e65)](_0x420cb1[_0x154263(_0x5002c9._0x46fc84)],_0x1ee89e)['replace'](/\\/g,'/'),_0x52ba25=_0xb1ed18['IVOMc'](_0x364512,_0x1c52fc);if(_0x52ba25){const _0x4d0276=(0x0,context_extractor_1[_0x154263(_0x5002c9._0x2dbfea)])(_0x52ba25,_0x1f4e6a);_0x3ecd10[_0x154263(_0x5002c9._0x4a317a)]('###\x20'+_0x1c52fc+_0x154263(0x160)+_0x1f4e6a+'\x0a'+_0x4d0276+'\x0a```');}}let _0x3b9a64='';if(_0xb1ed18['QZFUb'](_0x2a17d4['type'],_0x154263(0x178)))_0x3b9a64=_0x154263(_0x5002c9._0x3ff214)+_0x1f4e6a+'\x0a'+(_0x2a17d4[_0x154263(0x18a)]||'')['split']('\x0a')['slice'](0x0,0x28)['join']('\x0a')+_0x154263(_0x5002c9._0x12f44b);else{if(_0x2a17d4[_0x154263(_0x5002c9._0xbcd3e6)]===_0x154263(0x173)){const _0x4ddceb=(0x0,context_extractor_1['buildSmartContext'])(_0x2a17d4['newContent']||'',_0x1f4e6a);_0x3b9a64=_0x154263(0x18e)+_0x1f4e6a+'\x0a'+_0x4ddceb+'\x0a```';}else{const _0x11ba11=_0x2a17d4[_0x154263(0x195)]['slice'](0x0,0x1e)[_0x154263(0x17a)](_0x6b4be0=>{const _0x248ebf=_0x154263;if(_0xb1ed18[_0x248ebf(_0x2d39fb._0x2f28ff)](_0x6b4be0[_0x248ebf(0x1b2)],'added'))return _0x248ebf(0x1ab)+_0x6b4be0['line']+':\x20'+_0x6b4be0[_0x248ebf(_0x2d39fb._0x11a08b)];if(_0x6b4be0['type']===_0x248ebf(_0x2d39fb._0x398746))return'-\x20L'+_0x6b4be0[_0x248ebf(_0x2d39fb._0x405eff)]+':\x20'+_0x6b4be0['old'];return'~\x20L'+_0x6b4be0[_0x248ebf(0x16b)]+':\x20'+_0x6b4be0[_0x248ebf(0x183)]+_0x248ebf(_0x2d39fb._0x51fb05)+_0x6b4be0[_0x248ebf(0x169)];});_0x3b9a64=_0x154263(0x166)+_0x2a17d4[_0x154263(0x195)][_0x154263(0x19b)]+'):\x0a```\x0a'+_0x11ba11['join']('\x0a')+_0x154263(0x160);if(_0x2a17d4['oldContent']&&_0x2a17d4[_0x154263(_0x5002c9._0x257e8c)]){const _0x3bd1db=(0x0,context_extractor_1[_0x154263(0x1ac)])(_0x2a17d4[_0x154263(0x18a)],_0x2a17d4[_0x154263(_0x5002c9._0x257e8c)],_0x1f4e6a);if(_0xb1ed18['eqIAJ'](_0x3bd1db['length'],0x0)){_0x3b9a64+='\x0a\x0a###\x20Structural\x20changes\x20(signature\x20diff)';for(const _0x3bb2f4 of _0x3bd1db){if(_0xb1ed18['SxbnD'](_0x3bb2f4['type'],_0x154263(0x173)))_0x3b9a64+='\x0a+\x20Added:\x20'+_0x3bb2f4[_0x154263(0x19e)];else _0x3bb2f4[_0x154263(0x1b2)]===_0x154263(0x1a8)?_0x3b9a64+=_0x154263(_0x5002c9._0x961483)+_0x3bb2f4[_0x154263(_0x5002c9._0x23ec53)]:_0x3b9a64+=_0x154263(0x1a1)+_0x3bb2f4['oldSignature']+_0x154263(0x162)+_0x3bb2f4[_0x154263(0x19e)];}}}if(_0x2a17d4[_0x154263(0x15b)]){const _0x12cd85=(0x0,context_extractor_1[_0x154263(_0x5002c9._0x3b3d98)])(_0x2a17d4[_0x154263(0x15b)],_0x1f4e6a);_0x3b9a64+='\x0a\x0aFull\x20file\x20after\x20modification:\x0a```'+_0x1f4e6a+'\x0a'+_0x12cd85+'\x0a```';}}}const _0x5754da='##\x20File\x20change\x20detected:\x20'+_0x2fd773+'\x0aChange\x20type:\x20'+_0x2a17d4['type'][_0x154263(0x181)]()+_0x154263(_0x5002c9._0x5e1060)+(_0x420cb1['languages'][_0x154263(_0x5002c9._0x3816ce)](',\x20')||'unknown')+'\x0aAffected\x20files:\x20'+_0x24bc83[_0x154263(_0x5002c9._0x1734a9)]+'\x0a\x0a'+_0x3b9a64+'\x0a\x0a'+(_0x3ecd10['length']>0x0?'##\x20Connected\x20files\x20('+_0x3ecd10[_0x154263(0x19b)]+')\x0a'+_0x3ecd10[_0x154263(_0x5002c9._0x3816ce)]('\x0a\x0a'):'No\x20connected\x20files')+'\x0a\x0aAnalyze\x20the\x20impact\x20of\x20this\x20change\x20on\x20the\x20project.',_0x197bd7=_0x2a17d4['diff'][_0x154263(_0x5002c9._0x3c3b26)](_0x3d8290=>_0x3d8290['type']+':'+_0x3d8290['line']+':'+(_0x3d8290[_0x154263(0x183)]||'')+':'+(_0x3d8290[_0x154263(0x169)]||''))[_0x154263(0x172)]('|'),_0x2def3a=_0xb1ed18['CoaEY'](computeContentHash,_0x2a17d4['newContent'],_0x197bd7),_0x2e3683=analysisCache[_0x154263(0x1b1)](_0x2fd773);if(_0x2e3683&&_0xb1ed18['eDdpH'](_0x2e3683['hash'],_0x2def3a)){console['error']('[syke:ai]\x20Cache\x20hit\x20for\x20'+_0x2fd773+_0x154263(_0x5002c9._0x4c03a9));const _0x45a0eb={..._0x2e3683[_0x154263(_0x5002c9._0x20e9ae)]};return _0x45a0eb[_0x154263(_0x5002c9._0x186698)]=_0x2a17d4['timestamp'],_0x45a0eb[_0x154263(_0x5002c9._0x122880)]=0x0,_0x45a0eb;}if(isRateLimited()){const _0xd0ac6f=_0xb1ed18['EpaiM'](Date[_0x154263(0x1aa)](),_0x4dffc9);console[_0x154263(_0x5002c9._0x45eed0)](_0x154263(0x196)+RATE_LIMIT_MAX+'/min)\x20—\x20skipping\x20AI\x20for\x20'+_0x2fd773);const _0x853194={};return _0x853194['file']=_0x2fd773,_0x853194[_0x154263(0x17f)]=_0x2a17d4[_0x154263(_0x5002c9._0x557d70)],_0x853194[_0x154263(_0x5002c9._0x186698)]=_0x2a17d4[_0x154263(0x184)],_0x853194['riskLevel']=_0x24bc83['length']>=0xa?_0x154263(0x167):_0x24bc83[_0x154263(0x19b)]>=0x5?_0x154263(0x157):'LOW',_0x853194[_0x154263(0x18c)]='Rate\x20limited\x20—\x20graph-based\x20analysis:\x20'+_0x24bc83[_0x154263(_0x5002c9._0x1734a9)]+'\x20files\x20impacted',_0x853194['brokenImports']=[],_0x853194[_0x154263(0x1af)]=[],_0x853194[_0x154263(0x159)]=[_0x154263(0x189)],_0x853194['suggestion']=_0xb1ed18[_0x154263(_0x5002c9._0x19e775)],_0x853194[_0x154263(_0x5002c9._0x4ed9ba)]=_0x24bc83,_0x853194['analysisMs']=_0xd0ac6f,_0x853194;}try{const _0x3a42c0=(0x0,provider_1['getAIProvider'])();if(!_0x3a42c0)throw new Error(_0xb1ed18[_0x154263(0x199)]);recordCall();const _0x1ef2ab=await _0x3a42c0[_0x154263(_0x5002c9._0x3110a0)](_0xb1ed18['vOfeB'](getSystemPrompt),_0x5754da),_0x3137d6=_0xb1ed18['EpaiM'](Date['now'](),_0x4dffc9),_0x123f86={};_0x123f86[_0x154263(0x161)]=_0x2fd773,_0x123f86['changeType']=_0x2a17d4[_0x154263(_0x5002c9._0x32cdfc)],_0x123f86[_0x154263(_0x5002c9._0x186698)]=_0x2a17d4['timestamp'],_0x123f86['riskLevel']=_0x1ef2ab['riskLevel']||_0xb1ed18[_0x154263(_0x5002c9._0x2a7e4e)],_0x123f86['summary']=_0x1ef2ab['summary']||_0xb1ed18['zQrly'],_0x123f86['brokenImports']=_0x1ef2ab['brokenImports']||[],_0x123f86['sideEffects']=_0x1ef2ab['sideEffects']||[],_0x123f86['warnings']=_0x1ef2ab['warnings']||[],_0x123f86['suggestion']=_0x1ef2ab['suggestion']||'',_0x123f86['affectedNodes']=_0x24bc83,_0x123f86['analysisMs']=_0x3137d6;const _0x4bec44=_0x123f86;if(_0xb1ed18['BFmft'](analysisCache['size'],MAX_CACHE_SIZE))evictOldestCacheEntry();return analysisCache['set'](_0x2fd773,{'hash':_0x2def3a,'result':_0x4bec44,'insertedAt':Date['now']()}),_0x4bec44;}catch(_0x54e5ed){const _0x2d8b5c=_0xb1ed18['rIFdx'](Date['now'](),_0x4dffc9);return console['error'](_0x154263(_0x5002c9._0x33f0ac)+_0x2fd773+':\x20'+_0x54e5ed[_0x154263(0x16e)]),{'file':_0x2fd773,'changeType':_0x2a17d4['type'],'timestamp':_0x2a17d4[_0x154263(_0x5002c9._0xbb463f)],'riskLevel':_0xb1ed18[_0x154263(_0x5002c9._0x42ef10)](_0x24bc83[_0x154263(_0x5002c9._0x228933)],0xa)?'HIGH':_0x24bc83[_0x154263(0x19b)]>=0x5?_0xb1ed18[_0x154263(_0x5002c9._0x54886f)]:_0xb1ed18[_0x154263(0x15f)],'summary':'AI\x20analysis\x20failed\x20—\x20graph-based\x20analysis:\x20'+_0x24bc83['length']+'\x20files\x20impacted','brokenImports':[],'sideEffects':[],'warnings':['AI\x20analysis\x20error:\x20'+_0x54e5ed['message']],'suggestion':'Manual\x20review\x20required','affectedNodes':_0x24bc83,'analysisMs':_0x2d8b5c};}}
|
package/dist/config.js
CHANGED
|
@@ -1,121 +1 @@
|
|
|
1
|
-
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.CONFIG_FILE_PATH = exports.CONFIG_DIR_PATH = void 0;
|
|
37
|
-
exports.getConfig = getConfig;
|
|
38
|
-
exports.getAllConfig = getAllConfig;
|
|
39
|
-
exports.setConfig = setConfig;
|
|
40
|
-
/**
|
|
41
|
-
* Central config reader for SYKE MCP Server.
|
|
42
|
-
*
|
|
43
|
-
* Priority: environment variables > ~/.syke/config.json
|
|
44
|
-
*
|
|
45
|
-
* IDE users (Cursor, Windsurf, etc.) set env vars in their MCP config.
|
|
46
|
-
* Terminal users (Claude Code CLI) edit ~/.syke/config.json directly.
|
|
47
|
-
*/
|
|
48
|
-
const fs = __importStar(require("fs"));
|
|
49
|
-
const path = __importStar(require("path"));
|
|
50
|
-
const os = __importStar(require("os"));
|
|
51
|
-
const CONFIG_DIR = path.join(os.homedir(), ".syke");
|
|
52
|
-
const CONFIG_FILE = path.join(CONFIG_DIR, "config.json");
|
|
53
|
-
let cached = null;
|
|
54
|
-
/**
|
|
55
|
-
* Read ~/.syke/config.json (cached after first read)
|
|
56
|
-
*/
|
|
57
|
-
function readConfigFile() {
|
|
58
|
-
if (cached)
|
|
59
|
-
return cached;
|
|
60
|
-
try {
|
|
61
|
-
if (fs.existsSync(CONFIG_FILE)) {
|
|
62
|
-
cached = JSON.parse(fs.readFileSync(CONFIG_FILE, "utf-8"));
|
|
63
|
-
return cached;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
catch {
|
|
67
|
-
// ignore parse errors
|
|
68
|
-
}
|
|
69
|
-
cached = {};
|
|
70
|
-
return cached;
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Get a config value. Env var takes priority over config file.
|
|
74
|
-
*/
|
|
75
|
-
function getConfig(key, envVar) {
|
|
76
|
-
// 1. Environment variable
|
|
77
|
-
if (envVar && process.env[envVar]) {
|
|
78
|
-
return process.env[envVar];
|
|
79
|
-
}
|
|
80
|
-
// 2. Config file
|
|
81
|
-
const file = readConfigFile();
|
|
82
|
-
const val = file[key];
|
|
83
|
-
return val !== undefined && val !== null ? String(val) : undefined;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Get all resolved config (for logging/debug)
|
|
87
|
-
*/
|
|
88
|
-
function getAllConfig() {
|
|
89
|
-
return {
|
|
90
|
-
licenseKey: getConfig("licenseKey", "SYKE_LICENSE_KEY"),
|
|
91
|
-
geminiKey: getConfig("geminiKey", "GEMINI_KEY"),
|
|
92
|
-
openaiKey: getConfig("openaiKey", "OPENAI_KEY"),
|
|
93
|
-
anthropicKey: getConfig("anthropicKey", "ANTHROPIC_KEY"),
|
|
94
|
-
aiProvider: getConfig("aiProvider", "SYKE_AI_PROVIDER"),
|
|
95
|
-
port: getConfig("port", "SYKE_WEB_PORT"),
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Set a config value in ~/.syke/config.json
|
|
100
|
-
*/
|
|
101
|
-
function setConfig(key, value) {
|
|
102
|
-
const file = readConfigFile();
|
|
103
|
-
if (value === null) {
|
|
104
|
-
delete file[key];
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
file[key] = value;
|
|
108
|
-
}
|
|
109
|
-
try {
|
|
110
|
-
if (!fs.existsSync(CONFIG_DIR)) {
|
|
111
|
-
fs.mkdirSync(CONFIG_DIR, { recursive: true });
|
|
112
|
-
}
|
|
113
|
-
fs.writeFileSync(CONFIG_FILE, JSON.stringify(file, null, 2));
|
|
114
|
-
cached = file;
|
|
115
|
-
}
|
|
116
|
-
catch {
|
|
117
|
-
// ignore write errors
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
exports.CONFIG_DIR_PATH = CONFIG_DIR;
|
|
121
|
-
exports.CONFIG_FILE_PATH = CONFIG_FILE;
|
|
1
|
+
'use strict';var _0x55d8b7=_0x3bf2;(function(_0x46b8b3,_0x10a106){var _0x49b7a6={_0x118906:0xc9,_0x5cd53e:0xb1,_0x10023a:0xd4,_0x1274af:0xbf},_0x5391b4=_0x3bf2,_0x5cbac2=_0x46b8b3();while(!![]){try{var _0x59c728=-parseInt(_0x5391b4(0xc7))/0x1+parseInt(_0x5391b4(_0x49b7a6._0x118906))/0x2*(-parseInt(_0x5391b4(0xe2))/0x3)+-parseInt(_0x5391b4(0xd2))/0x4*(-parseInt(_0x5391b4(0xbc))/0x5)+-parseInt(_0x5391b4(_0x49b7a6._0x5cd53e))/0x6+-parseInt(_0x5391b4(_0x49b7a6._0x10023a))/0x7+parseInt(_0x5391b4(0xde))/0x8*(-parseInt(_0x5391b4(0xca))/0x9)+parseInt(_0x5391b4(_0x49b7a6._0x1274af))/0xa*(parseInt(_0x5391b4(0xb8))/0xb);if(_0x59c728===_0x10a106)break;else _0x5cbac2['push'](_0x5cbac2['shift']());}catch(_0x30f49e){_0x5cbac2['push'](_0x5cbac2['shift']());}}}(_0x1d6c,0x84f03));var __createBinding=this&&this[_0x55d8b7(0xb2)]||(Object[_0x55d8b7(0xbd)]?function(_0x45e7d0,_0x1e1303,_0x3949a0,_0x3685d3){var _0x57fbe2={_0xe629e1:0xdf,_0x3b7eaf:0xe1,_0x356db3:0xdc},_0x59ae9e=_0x55d8b7,_0x3bb3fd={};_0x3bb3fd['echtm']=function(_0x1bacbf,_0x4afc2b){return _0x1bacbf in _0x4afc2b;};var _0x469cf1=_0x3bb3fd;if(_0x3685d3===undefined)_0x3685d3=_0x3949a0;var _0xb1a45=Object[_0x59ae9e(_0x57fbe2._0xe629e1)](_0x1e1303,_0x3949a0);if(!_0xb1a45||(_0x469cf1['echtm'](_0x59ae9e(0xdc),_0xb1a45)?!_0x1e1303[_0x59ae9e(0xe4)]:_0xb1a45[_0x59ae9e(_0x57fbe2._0x3b7eaf)]||_0xb1a45[_0x59ae9e(0xd1)])){var _0x1de2a9={};_0x1de2a9['enumerable']=!![],_0x1de2a9[_0x59ae9e(_0x57fbe2._0x356db3)]=function(){return _0x1e1303[_0x3949a0];},_0xb1a45=_0x1de2a9;}Object['defineProperty'](_0x45e7d0,_0x3685d3,_0xb1a45);}:function(_0x1a73de,_0x189b9d,_0x532dce,_0x14fcd2){var _0x4b2d01=_0x55d8b7,_0x4571e9={};_0x4571e9['FwIuf']=function(_0x5c3368,_0x36853f){return _0x5c3368===_0x36853f;};var _0x8f7d7=_0x4571e9;if(_0x8f7d7[_0x4b2d01(0xdd)](_0x14fcd2,undefined))_0x14fcd2=_0x532dce;_0x1a73de[_0x14fcd2]=_0x189b9d[_0x532dce];}),__setModuleDefault=this&&this['__setModuleDefault']||(Object[_0x55d8b7(0xbd)]?function(_0x176ffc,_0x2cc5b8){var _0x3fc144={_0x3f9ee2:0xcb},_0x116cfe=_0x55d8b7,_0x3258dc={};_0x3258dc[_0x116cfe(0xcb)]='default';var _0x290bd3=_0x3258dc,_0x207bd4={};_0x207bd4[_0x116cfe(0xd5)]=!![],_0x207bd4['value']=_0x2cc5b8,Object[_0x116cfe(0xb5)](_0x176ffc,_0x290bd3[_0x116cfe(_0x3fc144._0x3f9ee2)],_0x207bd4);}:function(_0x3d0203,_0xb393a2){var _0x19b516=_0x55d8b7,_0x2a46a1={};_0x2a46a1[_0x19b516(0xc6)]=_0x19b516(0xe0);var _0x5bc7b3=_0x2a46a1;_0x3d0203[_0x5bc7b3['PRMyC']]=_0xb393a2;}),__importStar=this&&this['__importStar']||(function(){var _0x45909a={_0x26e453:0xd8},_0x172bd7={_0x5b4375:0xe5},_0x5c9317={'HQCSn':function(_0x48c536,_0x19a8da){return _0x48c536!=_0x19a8da;},'UeLbI':function(_0x58775f,_0x4eb06f){return _0x58775f<_0x4eb06f;},'veaQv':'default','ErisC':function(_0x411693,_0x40a42b,_0x154156,_0x59042e){return _0x411693(_0x40a42b,_0x154156,_0x59042e);}},_0x434243=function(_0x3f0f33){return _0x434243=Object['getOwnPropertyNames']||function(_0xbce8e9){var _0x202e3a=_0x3bf2,_0x4bd2ec=[];for(var _0x4a6be7 in _0xbce8e9)if(Object['prototype'][_0x202e3a(0xcc)][_0x202e3a(_0x172bd7._0x5b4375)](_0xbce8e9,_0x4a6be7))_0x4bd2ec[_0x4bd2ec[_0x202e3a(0xd8)]]=_0x4a6be7;return _0x4bd2ec;},_0x434243(_0x3f0f33);};return function(_0x5c1973){var _0x1ba922=_0x3bf2;if(_0x5c1973&&_0x5c1973['__esModule'])return _0x5c1973;var _0x1ee801={};if(_0x5c9317[_0x1ba922(0xb6)](_0x5c1973,null)){for(var _0xacc1f3=_0x434243(_0x5c1973),_0x4928f2=0x0;_0x5c9317['UeLbI'](_0x4928f2,_0xacc1f3[_0x1ba922(_0x45909a._0x26e453)]);_0x4928f2++)if(_0xacc1f3[_0x4928f2]!==_0x5c9317[_0x1ba922(0xc1)])_0x5c9317['ErisC'](__createBinding,_0x1ee801,_0x5c1973,_0xacc1f3[_0x4928f2]);}return __setModuleDefault(_0x1ee801,_0x5c1973),_0x1ee801;};}()),_0x164154={};_0x164154[_0x55d8b7(0xda)]=!![],Object[_0x55d8b7(0xb5)](exports,'__esModule',_0x164154),exports['CONFIG_FILE_PATH']=exports[_0x55d8b7(0xc0)]=void 0x0,exports[_0x55d8b7(0xd7)]=getConfig,exports['getAllConfig']=getAllConfig,exports[_0x55d8b7(0xb9)]=setConfig;const fs=__importStar(require('fs')),path=__importStar(require(_0x55d8b7(0xba))),os=__importStar(require('os')),CONFIG_DIR=path['join'](os[_0x55d8b7(0xc8)](),'.syke'),CONFIG_FILE=path[_0x55d8b7(0xcd)](CONFIG_DIR,'config.json');let cached=null;function _0x1d6c(){var _0x603f57=['B3bLBMfPs2v5','BgLJzw5ZzuTLEq','u1Llrv9bsv9quK9wsurfuG','y29UzMLNDxjHyMXL','mJHQywHeqvC','r0vnsu5jx0Tfwq','mtG1mZm2ounjDhH0va','zw51BwvYywjSzq','svrTEe4','z2v0q29UzMLN','BgvUz3rO','wwnACfK','DMfSDwu','qu5usfjpueLdx0Tfwq','z2v0','rNDjDwy','mtmWnhL3AhfRsq','z2v0t3DUuhjVCgvYDhLezxnJCMLWDg9Y','zgvMyxvSDa','D3jPDgfIBgu','mZe0mJe0m09gC2netW','Cg9YDa','x19LC01VzhvSzq','y2fSBa','u1Llrv9msunftLnfx0Tfwq','Dg5nANm','D3jPDgvgAwXLu3LUyW','BwTKAxjtEw5J','mJC0mZuWnKvwveLbva','x19JCMvHDgvcAw5KAw5N','ywLqCM92AwrLCG','CMvHzezPBgvtEw5J','zgvMAw5LuhjVCgvYDhK','sffdu24','Ce1gBuO','nJzKzvfquLq','C2v0q29UzMLN','Cgf0Aa','CgfYC2u','mZa1mZm1rKjSAuLU','y3jLyxrL','uhfSzLG','ndG2mtyXmefNwLvQDq','q09orKLhx0rjuL9qqvri','DMvHuxy','DM55ufi','CMHtsKy','txL5uhe','z2vTAw5Ps2v5','ufjnEum','nJG1mti0A09czKn4','Ag9TzwrPCG','mNv3C21gza','mtKWnZfLzvDUBLC','A1j0uxi','AgfZt3DUuhjVCgvYDhK','AM9PBG'];_0x1d6c=function(){return _0x603f57;};return _0x1d6c();}function readConfigFile(){var _0x45bcda={_0xd8cd02:0xc2,_0x17e51a:0xbb,_0x145244:0xb4,_0x5e15e3:0xc2},_0x5d39b4=_0x55d8b7,_0x1f8720={};_0x1f8720[_0x5d39b4(_0x45bcda._0xd8cd02)]='utf-8';var _0xf980ab=_0x1f8720;if(cached)return cached;try{if(fs['existsSync'](CONFIG_FILE))return cached=JSON[_0x5d39b4(_0x45bcda._0x17e51a)](fs[_0x5d39b4(_0x45bcda._0x145244)](CONFIG_FILE,_0xf980ab[_0x5d39b4(_0x45bcda._0x5e15e3)])),cached;}catch{}return cached={},cached;}function _0x3bf2(_0x1c0fb1,_0x2adffd){_0x1c0fb1=_0x1c0fb1-0xaf;var _0x1d6c27=_0x1d6c();var _0x3bf239=_0x1d6c27[_0x1c0fb1];if(_0x3bf2['DZrqVN']===undefined){var _0x2804ea=function(_0x42e509){var _0x2f1e0f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x447470='',_0x2122f1='';for(var _0x1dabc4=0x0,_0x32d7ee,_0x14d4c5,_0x428069=0x0;_0x14d4c5=_0x42e509['charAt'](_0x428069++);~_0x14d4c5&&(_0x32d7ee=_0x1dabc4%0x4?_0x32d7ee*0x40+_0x14d4c5:_0x14d4c5,_0x1dabc4++%0x4)?_0x447470+=String['fromCharCode'](0xff&_0x32d7ee>>(-0x2*_0x1dabc4&0x6)):0x0){_0x14d4c5=_0x2f1e0f['indexOf'](_0x14d4c5);}for(var _0x9a758f=0x0,_0x5eda76=_0x447470['length'];_0x9a758f<_0x5eda76;_0x9a758f++){_0x2122f1+='%'+('00'+_0x447470['charCodeAt'](_0x9a758f)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2122f1);};_0x3bf2['iuDsrg']=_0x2804ea,_0x3bf2['anRhvJ']={},_0x3bf2['DZrqVN']=!![];}var _0x194410=_0x1d6c27[0x0],_0x25fcab=_0x1c0fb1+_0x194410,_0x470861=_0x3bf2['anRhvJ'][_0x25fcab];return!_0x470861?(_0x3bf239=_0x3bf2['iuDsrg'](_0x3bf239),_0x3bf2['anRhvJ'][_0x25fcab]=_0x3bf239):_0x3bf239=_0x470861,_0x3bf239;}function getConfig(_0x34a40a,_0x354092){var _0x19cdfb=_0x55d8b7,_0x345e1e={'pMFmJ':function(_0x4411d3){return _0x4411d3();},'IDjoJ':function(_0x25a25b,_0x3feadc){return _0x25a25b!==_0x3feadc;}};if(_0x354092&&process.env[_0x354092])return process.env[_0x354092];const _0x55b577=_0x345e1e[_0x19cdfb(0xb7)](readConfigFile),_0x985223=_0x55b577[_0x34a40a];return _0x345e1e['IDjoJ'](_0x985223,undefined)&&_0x985223!==null?String(_0x985223):undefined;}function getAllConfig(){var _0x1fd88d={_0x4bde8a:0xe6,_0x5d695d:0xc5,_0x5f35e4:0xd6,_0x2517d1:0xe7,_0x53b9be:0xc4},_0x48cc79=_0x55d8b7,_0x6fea47={'PqlfX':function(_0x25a136,_0x531e40,_0x33ffc6){return _0x25a136(_0x531e40,_0x33ffc6);},'IHOqM':_0x48cc79(0xcf),'qROTs':_0x48cc79(_0x1fd88d._0x4bde8a),'VmzOl':_0x48cc79(_0x1fd88d._0x5d695d),'YcZpY':_0x48cc79(0xd3),'wjPKv':'OPENAI_KEY','FpMqT':function(_0x4be288,_0x2e075c,_0x6b3846){return _0x4be288(_0x2e075c,_0x6b3846);},'actZs':_0x48cc79(0xdb),'ITmxN':_0x48cc79(0xb3),'tnMjs':_0x48cc79(0xd0),'IkAvk':function(_0x36be54,_0x393fd8,_0x34ce39){return _0x36be54(_0x393fd8,_0x34ce39);},'MyyPq':_0x48cc79(0xe3)};return{'licenseKey':_0x6fea47[_0x48cc79(0xbe)](getConfig,_0x6fea47['IHOqM'],_0x6fea47['qROTs']),'geminiKey':_0x6fea47['PqlfX'](getConfig,_0x6fea47['VmzOl'],_0x6fea47[_0x48cc79(0xd9)]),'openaiKey':_0x6fea47['PqlfX'](getConfig,_0x48cc79(0xce),_0x6fea47['wjPKv']),'anthropicKey':_0x6fea47['FpMqT'](getConfig,'anthropicKey',_0x6fea47['actZs']),'aiProvider':_0x6fea47['PqlfX'](getConfig,_0x6fea47[_0x48cc79(_0x1fd88d._0x5f35e4)],_0x6fea47[_0x48cc79(_0x1fd88d._0x2517d1)]),'port':_0x6fea47['IkAvk'](getConfig,_0x6fea47[_0x48cc79(_0x1fd88d._0x53b9be)],'SYKE_WEB_PORT')};}function setConfig(_0x38be09,_0x5000ed){var _0x35041e={_0x6180a2:0xc3,_0x584507:0xb0},_0x3411e4=_0x55d8b7,_0x179041={'rhSJF':function(_0x7e4349){return _0x7e4349();}};const _0x34d73e=_0x179041[_0x3411e4(_0x35041e._0x6180a2)](readConfigFile);_0x5000ed===null?delete _0x34d73e[_0x38be09]:_0x34d73e[_0x38be09]=_0x5000ed;try{if(!fs['existsSync'](CONFIG_DIR)){var _0x5d2adf={};_0x5d2adf['recursive']=!![],fs[_0x3411e4(_0x35041e._0x584507)](CONFIG_DIR,_0x5d2adf);}fs[_0x3411e4(0xaf)](CONFIG_FILE,JSON['stringify'](_0x34d73e,null,0x2)),cached=_0x34d73e;}catch{}}exports['CONFIG_DIR_PATH']=CONFIG_DIR,exports['CONFIG_FILE_PATH']=CONFIG_FILE;
|