better-gemini-mcp 1.0.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.
Potentially problematic release.
This version of better-gemini-mcp might be problematic. Click here for more details.
- package/CHANGELOG.md +57 -0
- package/LICENSE.md +13 -0
- package/README.md +291 -0
- package/dist/constants.d.ts +148 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +295 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +280 -0
- package/dist/index.js.map +1 -0
- package/dist/setup/index.d.ts +7 -0
- package/dist/setup/index.d.ts.map +1 -0
- package/dist/setup/index.js +6 -0
- package/dist/setup/index.js.map +1 -0
- package/dist/setup/wizard.d.ts +39 -0
- package/dist/setup/wizard.d.ts.map +1 -0
- package/dist/setup/wizard.js +222 -0
- package/dist/setup/wizard.js.map +1 -0
- package/dist/tools/analyze-directory.tool.d.ts +8 -0
- package/dist/tools/analyze-directory.tool.d.ts.map +1 -0
- package/dist/tools/analyze-directory.tool.js +195 -0
- package/dist/tools/analyze-directory.tool.js.map +1 -0
- package/dist/tools/deep-research.tool.d.ts +8 -0
- package/dist/tools/deep-research.tool.d.ts.map +1 -0
- package/dist/tools/deep-research.tool.js +153 -0
- package/dist/tools/deep-research.tool.js.map +1 -0
- package/dist/tools/fetch-chunk.tool.d.ts +8 -0
- package/dist/tools/fetch-chunk.tool.d.ts.map +1 -0
- package/dist/tools/fetch-chunk.tool.js +123 -0
- package/dist/tools/fetch-chunk.tool.js.map +1 -0
- package/dist/tools/health-check.tool.d.ts +8 -0
- package/dist/tools/health-check.tool.d.ts.map +1 -0
- package/dist/tools/health-check.tool.js +113 -0
- package/dist/tools/health-check.tool.js.map +1 -0
- package/dist/tools/index.d.ts +16 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +35 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/quick-query.tool.d.ts +8 -0
- package/dist/tools/quick-query.tool.d.ts.map +1 -0
- package/dist/tools/quick-query.tool.js +154 -0
- package/dist/tools/quick-query.tool.js.map +1 -0
- package/dist/tools/registry.d.ts +52 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +95 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/validate-paths.tool.d.ts +8 -0
- package/dist/tools/validate-paths.tool.d.ts.map +1 -0
- package/dist/tools/validate-paths.tool.js +64 -0
- package/dist/tools/validate-paths.tool.js.map +1 -0
- package/dist/types.d.ts +221 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/commandExecutor.d.ts +28 -0
- package/dist/utils/commandExecutor.d.ts.map +1 -0
- package/dist/utils/commandExecutor.js +105 -0
- package/dist/utils/commandExecutor.js.map +1 -0
- package/dist/utils/geminiExecutor.d.ts +71 -0
- package/dist/utils/geminiExecutor.d.ts.map +1 -0
- package/dist/utils/geminiExecutor.js +281 -0
- package/dist/utils/geminiExecutor.js.map +1 -0
- package/dist/utils/ignorePatterns.d.ts +69 -0
- package/dist/utils/ignorePatterns.d.ts.map +1 -0
- package/dist/utils/ignorePatterns.js +178 -0
- package/dist/utils/ignorePatterns.js.map +1 -0
- package/dist/utils/index.d.ts +11 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +18 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +39 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +160 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/pathValidator.d.ts +55 -0
- package/dist/utils/pathValidator.d.ts.map +1 -0
- package/dist/utils/pathValidator.js +137 -0
- package/dist/utils/pathValidator.js.map +1 -0
- package/dist/utils/responseCache.d.ts +80 -0
- package/dist/utils/responseCache.d.ts.map +1 -0
- package/dist/utils/responseCache.js +179 -0
- package/dist/utils/responseCache.js.map +1 -0
- package/dist/utils/responseChunker.d.ts +36 -0
- package/dist/utils/responseChunker.d.ts.map +1 -0
- package/dist/utils/responseChunker.js +96 -0
- package/dist/utils/responseChunker.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Response chunker utility for splitting large responses
|
|
3
|
+
* Implements chunking with configurable size (PRD §5.2)
|
|
4
|
+
*/
|
|
5
|
+
import { DEFAULTS } from "../constants.js";
|
|
6
|
+
/**
|
|
7
|
+
* Chunk a response string into smaller pieces
|
|
8
|
+
*
|
|
9
|
+
* @param response - The full response string to chunk
|
|
10
|
+
* @param chunkSizeKB - Size of each chunk in kilobytes (default: 10KB)
|
|
11
|
+
* @returns Array of CachedChunk objects with metadata
|
|
12
|
+
*/
|
|
13
|
+
export function chunkResponse(response, chunkSizeKB = DEFAULTS.RESPONSE_CHUNK_SIZE_KB) {
|
|
14
|
+
const chunkSizeBytes = chunkSizeKB * 1024;
|
|
15
|
+
// If response fits in one chunk, return single chunk
|
|
16
|
+
if (response.length <= chunkSizeBytes) {
|
|
17
|
+
return [
|
|
18
|
+
{
|
|
19
|
+
content: response,
|
|
20
|
+
index: 1,
|
|
21
|
+
total: 1,
|
|
22
|
+
},
|
|
23
|
+
];
|
|
24
|
+
}
|
|
25
|
+
const chunks = [];
|
|
26
|
+
// Split at natural boundaries (newlines) when possible
|
|
27
|
+
let currentPosition = 0;
|
|
28
|
+
let chunkIndex = 1;
|
|
29
|
+
while (currentPosition < response.length) {
|
|
30
|
+
let endPosition = currentPosition + chunkSizeBytes;
|
|
31
|
+
// If we're not at the end, try to find a natural break point
|
|
32
|
+
if (endPosition < response.length) {
|
|
33
|
+
// Look for the last newline within the chunk size
|
|
34
|
+
const searchStart = Math.max(currentPosition, endPosition - 500); // Search within last 500 chars
|
|
35
|
+
const lastNewline = response.lastIndexOf("\n", endPosition);
|
|
36
|
+
if (lastNewline > searchStart) {
|
|
37
|
+
endPosition = lastNewline + 1; // Include the newline
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
endPosition = response.length;
|
|
42
|
+
}
|
|
43
|
+
const chunkContent = response.slice(currentPosition, endPosition);
|
|
44
|
+
chunks.push({
|
|
45
|
+
content: chunkContent,
|
|
46
|
+
index: chunkIndex,
|
|
47
|
+
total: 0, // Will be updated after all chunks are created
|
|
48
|
+
});
|
|
49
|
+
currentPosition = endPosition;
|
|
50
|
+
chunkIndex++;
|
|
51
|
+
}
|
|
52
|
+
// Update total count for all chunks
|
|
53
|
+
const totalChunks = chunks.length;
|
|
54
|
+
for (const chunk of chunks) {
|
|
55
|
+
chunk.total = totalChunks;
|
|
56
|
+
}
|
|
57
|
+
return chunks;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Check if a response needs chunking
|
|
61
|
+
*
|
|
62
|
+
* @param response - The response string to check
|
|
63
|
+
* @param chunkSizeKB - Chunk size threshold in KB
|
|
64
|
+
* @returns true if the response exceeds the chunk size
|
|
65
|
+
*/
|
|
66
|
+
export function needsChunking(response, chunkSizeKB = DEFAULTS.RESPONSE_CHUNK_SIZE_KB) {
|
|
67
|
+
const chunkSizeBytes = chunkSizeKB * 1024;
|
|
68
|
+
return response.length > chunkSizeBytes;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get the number of chunks that would be created for a response
|
|
72
|
+
*
|
|
73
|
+
* @param response - The response string
|
|
74
|
+
* @param chunkSizeKB - Chunk size in KB
|
|
75
|
+
* @returns Estimated number of chunks
|
|
76
|
+
*/
|
|
77
|
+
export function estimateChunkCount(response, chunkSizeKB = DEFAULTS.RESPONSE_CHUNK_SIZE_KB) {
|
|
78
|
+
const chunkSizeBytes = chunkSizeKB * 1024;
|
|
79
|
+
return Math.ceil(response.length / chunkSizeBytes);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Get the chunk size configuration from environment or default
|
|
83
|
+
*
|
|
84
|
+
* @returns Chunk size in KB
|
|
85
|
+
*/
|
|
86
|
+
export function getChunkSizeKB() {
|
|
87
|
+
const envValue = process.env.RESPONSE_CHUNK_SIZE_KB;
|
|
88
|
+
if (envValue) {
|
|
89
|
+
const parsed = parseInt(envValue, 10);
|
|
90
|
+
if (!isNaN(parsed) && parsed > 0) {
|
|
91
|
+
return parsed;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return DEFAULTS.RESPONSE_CHUNK_SIZE_KB;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=responseChunker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responseChunker.js","sourceRoot":"","sources":["../../src/utils/responseChunker.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "better-gemini-mcp",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Stateless MCP server that proxies research queries to Gemini CLI, reducing agent context/model usage",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"better-gemini-mcp": "dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"dev": "tsc --watch",
|
|
13
|
+
"start": "node dist/index.js",
|
|
14
|
+
"lint": "tsc --noEmit",
|
|
15
|
+
"test": "node --test --experimental-strip-types tests/**/*.test.ts",
|
|
16
|
+
"test:unit": "node --test --experimental-strip-types tests/unit/**/*.test.ts",
|
|
17
|
+
"test:integration": "node --test --experimental-strip-types tests/integration/**/*.test.ts",
|
|
18
|
+
"prepublishOnly": "npm run build && npm test"
|
|
19
|
+
},
|
|
20
|
+
"keywords": [
|
|
21
|
+
"mcp",
|
|
22
|
+
"modelcontextprotocol",
|
|
23
|
+
"gemini",
|
|
24
|
+
"gemini-cli",
|
|
25
|
+
"ai",
|
|
26
|
+
"llm",
|
|
27
|
+
"research",
|
|
28
|
+
"proxy",
|
|
29
|
+
"agent",
|
|
30
|
+
"copilot",
|
|
31
|
+
"claude"
|
|
32
|
+
],
|
|
33
|
+
"author": "capyBearista",
|
|
34
|
+
"license": "BSD-3-Clause",
|
|
35
|
+
"repository": {
|
|
36
|
+
"type": "git",
|
|
37
|
+
"url": "https://github.com/capyBearista/better-gemini-mcp.git"
|
|
38
|
+
},
|
|
39
|
+
"bugs": {
|
|
40
|
+
"url": "https://github.com/capyBearista/better-gemini-mcp/issues"
|
|
41
|
+
},
|
|
42
|
+
"homepage": "https://github.com/capyBearista/better-gemini-mcp#readme",
|
|
43
|
+
"engines": {
|
|
44
|
+
"node": ">=18.0.0"
|
|
45
|
+
},
|
|
46
|
+
"files": [
|
|
47
|
+
"dist/",
|
|
48
|
+
"README.md",
|
|
49
|
+
"LICENSE.md",
|
|
50
|
+
"CHANGELOG.md"
|
|
51
|
+
],
|
|
52
|
+
"dependencies": {
|
|
53
|
+
"@modelcontextprotocol/sdk": "^0.5.0",
|
|
54
|
+
"ignore": "^5.3.0",
|
|
55
|
+
"zod": "^3.22.0",
|
|
56
|
+
"zod-to-json-schema": "^3.24.0"
|
|
57
|
+
},
|
|
58
|
+
"devDependencies": {
|
|
59
|
+
"@types/node": "^20.0.0",
|
|
60
|
+
"typescript": "^5.0.0"
|
|
61
|
+
}
|
|
62
|
+
}
|