@contextstream/mcp-server 0.4.50 → 0.4.51
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/hooks/auto-rules.js +136 -25
- package/dist/hooks/on-bash.js +190 -0
- package/dist/hooks/on-read.js +163 -0
- package/dist/hooks/on-save-intent.js +132 -0
- package/dist/hooks/on-task.js +139 -0
- package/dist/hooks/on-web.js +155 -0
- package/dist/hooks/post-compact.js +172 -0
- package/dist/hooks/runner.js +2889 -0
- package/dist/hooks/session-end.js +191 -0
- package/dist/hooks/session-init.js +174 -0
- package/dist/index.js +1994 -146
- package/dist/test-server.js +3 -0
- package/package.json +7 -4
- package/scripts/postinstall.js +56 -0
package/dist/test-server.js
CHANGED
|
@@ -4053,6 +4053,9 @@ var NEVER = INVALID;
|
|
|
4053
4053
|
// src/version.ts
|
|
4054
4054
|
import { createRequire } from "module";
|
|
4055
4055
|
function getVersion() {
|
|
4056
|
+
if (typeof __CONTEXTSTREAM_VERSION__ !== "undefined" && __CONTEXTSTREAM_VERSION__) {
|
|
4057
|
+
return __CONTEXTSTREAM_VERSION__;
|
|
4058
|
+
}
|
|
4056
4059
|
try {
|
|
4057
4060
|
const require2 = createRequire(import.meta.url);
|
|
4058
4061
|
const pkg = require2("../package.json");
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contextstream/mcp-server",
|
|
3
3
|
"mcpName": "io.github.contextstreamio/mcp-server",
|
|
4
|
-
"version": "0.4.
|
|
4
|
+
"version": "0.4.51",
|
|
5
5
|
"description": "ContextStream MCP server - v0.4.x with consolidated domain tools (~11 tools, ~75% token reduction). Code context, memory, search, and AI tools.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"license": "MIT",
|
|
@@ -9,14 +9,16 @@
|
|
|
9
9
|
"files": [
|
|
10
10
|
"dist",
|
|
11
11
|
"dist/hooks",
|
|
12
|
+
"scripts",
|
|
12
13
|
"README.md"
|
|
13
14
|
],
|
|
14
15
|
"bin": {
|
|
15
|
-
"contextstream-mcp": "dist/index.js"
|
|
16
|
+
"contextstream-mcp": "dist/index.js",
|
|
17
|
+
"contextstream-hook": "dist/hooks/runner.js"
|
|
16
18
|
},
|
|
17
19
|
"scripts": {
|
|
18
20
|
"dev": "tsx src/index.ts",
|
|
19
|
-
"build": "esbuild src/index.ts --bundle --platform=node --target=node18 --outfile=dist/index.js --format=esm --external:@modelcontextprotocol/sdk --banner:js=\"#!/usr/bin/env node\" && esbuild src/test-server.ts --bundle --platform=node --target=node18 --outfile=dist/test-server.js --format=esm --external:@modelcontextprotocol/sdk && esbuild src/hooks/post-write.ts --bundle --platform=node --target=node18 --outfile=dist/hooks/post-write.js --format=esm --banner:js=\"#!/usr/bin/env node\" && esbuild src/hooks/pre-tool-use.ts --bundle --platform=node --target=node18 --outfile=dist/hooks/pre-tool-use.js --format=esm --banner:js=\"#!/usr/bin/env node\" && esbuild src/hooks/user-prompt-submit.ts --bundle --platform=node --target=node18 --outfile=dist/hooks/user-prompt-submit.js --format=esm --banner:js=\"#!/usr/bin/env node\" && esbuild src/hooks/media-aware.ts --bundle --platform=node --target=node18 --outfile=dist/hooks/media-aware.js --format=esm --banner:js=\"#!/usr/bin/env node\" && esbuild src/hooks/pre-compact.ts --bundle --platform=node --target=node18 --outfile=dist/hooks/pre-compact.js --format=esm --banner:js=\"#!/usr/bin/env node\" && esbuild src/hooks/auto-rules.ts --bundle --platform=node --target=node18 --outfile=dist/hooks/auto-rules.js --format=esm --banner:js=\"#!/usr/bin/env node\"",
|
|
21
|
+
"build": "esbuild src/index.ts --bundle --platform=node --target=node18 --outfile=dist/index.js --format=esm --external:@modelcontextprotocol/sdk --banner:js=\"#!/usr/bin/env node\" && esbuild src/test-server.ts --bundle --platform=node --target=node18 --outfile=dist/test-server.js --format=esm --external:@modelcontextprotocol/sdk && esbuild src/hooks/runner.ts --bundle --platform=node --target=node18 --outfile=dist/hooks/runner.js --format=esm --banner:js=\"#!/usr/bin/env node\" && esbuild src/hooks/post-write.ts --bundle --platform=node --target=node18 --outfile=dist/hooks/post-write.js --format=esm --banner:js=\"#!/usr/bin/env node\" && esbuild src/hooks/pre-tool-use.ts --bundle --platform=node --target=node18 --outfile=dist/hooks/pre-tool-use.js --format=esm --banner:js=\"#!/usr/bin/env node\" && esbuild src/hooks/user-prompt-submit.ts --bundle --platform=node --target=node18 --outfile=dist/hooks/user-prompt-submit.js --format=esm --banner:js=\"#!/usr/bin/env node\" && esbuild src/hooks/media-aware.ts --bundle --platform=node --target=node18 --outfile=dist/hooks/media-aware.js --format=esm --banner:js=\"#!/usr/bin/env node\" && esbuild src/hooks/pre-compact.ts --bundle --platform=node --target=node18 --outfile=dist/hooks/pre-compact.js --format=esm --banner:js=\"#!/usr/bin/env node\" && esbuild src/hooks/post-compact.ts --bundle --platform=node --target=node18 --outfile=dist/hooks/post-compact.js --format=esm --banner:js=\"#!/usr/bin/env node\" && esbuild src/hooks/auto-rules.ts --bundle --platform=node --target=node18 --outfile=dist/hooks/auto-rules.js --format=esm --banner:js=\"#!/usr/bin/env node\" && esbuild src/hooks/on-bash.ts --bundle --platform=node --target=node18 --outfile=dist/hooks/on-bash.js --format=esm --banner:js=\"#!/usr/bin/env node\" && esbuild src/hooks/on-task.ts --bundle --platform=node --target=node18 --outfile=dist/hooks/on-task.js --format=esm --banner:js=\"#!/usr/bin/env node\" && esbuild src/hooks/on-read.ts --bundle --platform=node --target=node18 --outfile=dist/hooks/on-read.js --format=esm --banner:js=\"#!/usr/bin/env node\" && esbuild src/hooks/on-web.ts --bundle --platform=node --target=node18 --outfile=dist/hooks/on-web.js --format=esm --banner:js=\"#!/usr/bin/env node\" && esbuild src/hooks/session-init.ts --bundle --platform=node --target=node18 --outfile=dist/hooks/session-init.js --format=esm --banner:js=\"#!/usr/bin/env node\" && esbuild src/hooks/session-end.ts --bundle --platform=node --target=node18 --outfile=dist/hooks/session-end.js --format=esm --banner:js=\"#!/usr/bin/env node\" && esbuild src/hooks/on-save-intent.ts --bundle --platform=node --target=node18 --outfile=dist/hooks/on-save-intent.js --format=esm --banner:js=\"#!/usr/bin/env node\"",
|
|
20
22
|
"start": "node dist/index.js",
|
|
21
23
|
"test-server": "tsx src/test-server.ts",
|
|
22
24
|
"test-server:start": "node dist/test-server.js",
|
|
@@ -27,7 +29,8 @@
|
|
|
27
29
|
"lint:fix": "eslint src/ --fix",
|
|
28
30
|
"format": "prettier --write src/",
|
|
29
31
|
"format:check": "prettier --check src/",
|
|
30
|
-
"prepublishOnly": "npm run build"
|
|
32
|
+
"prepublishOnly": "npm run build",
|
|
33
|
+
"postinstall": "node scripts/postinstall.js"
|
|
31
34
|
},
|
|
32
35
|
"dependencies": {
|
|
33
36
|
"@modelcontextprotocol/sdk": "^1.25.1",
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "fs";
|
|
3
|
+
import { homedir } from "os";
|
|
4
|
+
import { join, dirname } from "path";
|
|
5
|
+
import { fileURLToPath } from "url";
|
|
6
|
+
|
|
7
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
8
|
+
const pkgPath = join(__dirname, "..", "package.json");
|
|
9
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
|
|
10
|
+
const binPath = join(__dirname, "..", "dist", "index.js");
|
|
11
|
+
const claudeDir = join(homedir(), ".claude");
|
|
12
|
+
const claudeSettingsPath = join(claudeDir, "settings.json");
|
|
13
|
+
const versionFile = join(claudeDir, ".contextstream-version");
|
|
14
|
+
|
|
15
|
+
// Ensure .claude directory exists
|
|
16
|
+
if (!existsSync(claudeDir)) {
|
|
17
|
+
mkdirSync(claudeDir, { recursive: true });
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Store version for update detection
|
|
21
|
+
writeFileSync(versionFile, pkg.version);
|
|
22
|
+
|
|
23
|
+
// Auto-configure hooks if settings.json exists
|
|
24
|
+
if (existsSync(claudeSettingsPath)) {
|
|
25
|
+
try {
|
|
26
|
+
let content = readFileSync(claudeSettingsPath, "utf8");
|
|
27
|
+
const originalContent = content;
|
|
28
|
+
|
|
29
|
+
// Replace npx commands with direct node execution
|
|
30
|
+
content = content.replace(
|
|
31
|
+
/npx\s+@contextstream\/mcp-server/g,
|
|
32
|
+
`node ${binPath}`
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
// Also handle any existing direct paths that might be outdated
|
|
36
|
+
content = content.replace(
|
|
37
|
+
/node\s+[^\s"]+mcp-server\/dist\/index\.js/g,
|
|
38
|
+
`node ${binPath}`
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
if (content !== originalContent) {
|
|
42
|
+
writeFileSync(claudeSettingsPath, content);
|
|
43
|
+
console.log("✓ ContextStream hooks updated for optimal performance");
|
|
44
|
+
console.log(` Using: ${binPath}`);
|
|
45
|
+
} else {
|
|
46
|
+
console.log("✓ ContextStream hooks already configured");
|
|
47
|
+
}
|
|
48
|
+
} catch (err) {
|
|
49
|
+
console.warn("⚠ Could not auto-configure hooks:", err.message);
|
|
50
|
+
console.log(" Run: contextstream-mcp init");
|
|
51
|
+
}
|
|
52
|
+
} else {
|
|
53
|
+
console.log("ℹ Claude settings not found. Run: contextstream-mcp init");
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
console.log(`✓ ContextStream MCP Server v${pkg.version} installed`);
|