mindforge-mcp-server 11.9.2 → 11.9.3
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 +54 -15
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -7868,11 +7868,11 @@ function datetimeRegex(args) {
|
|
|
7868
7868
|
regex = `${regex}(${opts.join("|")})`;
|
|
7869
7869
|
return new RegExp(`^${regex}$`);
|
|
7870
7870
|
}
|
|
7871
|
-
function isValidIP(ip,
|
|
7872
|
-
if ((
|
|
7871
|
+
function isValidIP(ip, version3) {
|
|
7872
|
+
if ((version3 === "v4" || !version3) && ipv4Regex.test(ip)) {
|
|
7873
7873
|
return true;
|
|
7874
7874
|
}
|
|
7875
|
-
if ((
|
|
7875
|
+
if ((version3 === "v6" || !version3) && ipv6Regex.test(ip)) {
|
|
7876
7876
|
return true;
|
|
7877
7877
|
}
|
|
7878
7878
|
return false;
|
|
@@ -7899,11 +7899,11 @@ function isValidJWT(jwt, alg) {
|
|
|
7899
7899
|
return false;
|
|
7900
7900
|
}
|
|
7901
7901
|
}
|
|
7902
|
-
function isValidCidr(ip,
|
|
7903
|
-
if ((
|
|
7902
|
+
function isValidCidr(ip, version3) {
|
|
7903
|
+
if ((version3 === "v4" || !version3) && ipv4CidrRegex.test(ip)) {
|
|
7904
7904
|
return true;
|
|
7905
7905
|
}
|
|
7906
|
-
if ((
|
|
7906
|
+
if ((version3 === "v6" || !version3) && ipv6CidrRegex.test(ip)) {
|
|
7907
7907
|
return true;
|
|
7908
7908
|
}
|
|
7909
7909
|
return false;
|
|
@@ -11647,10 +11647,10 @@ var ksuid = /^[A-Za-z0-9]{27}$/;
|
|
|
11647
11647
|
var nanoid = /^[a-zA-Z0-9_-]{21}$/;
|
|
11648
11648
|
var duration = /^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/;
|
|
11649
11649
|
var guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;
|
|
11650
|
-
var uuid = (
|
|
11651
|
-
if (!
|
|
11650
|
+
var uuid = (version3) => {
|
|
11651
|
+
if (!version3)
|
|
11652
11652
|
return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$/;
|
|
11653
|
-
return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${
|
|
11653
|
+
return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version3}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);
|
|
11654
11654
|
};
|
|
11655
11655
|
var email = /^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;
|
|
11656
11656
|
var _emoji = `^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;
|
|
@@ -21659,7 +21659,36 @@ var WebSocketEventStream = class {
|
|
|
21659
21659
|
this.maxReconnectAttempts = 5;
|
|
21660
21660
|
this.listeners = /* @__PURE__ */ new Map();
|
|
21661
21661
|
}
|
|
21662
|
+
/**
|
|
21663
|
+
* Dispatch to registered listeners. One dispatch path for messages, reconnect failures and
|
|
21664
|
+
* stream death, so those three cannot drift apart in how they treat a throwing listener.
|
|
21665
|
+
*
|
|
21666
|
+
* A missing 'error' listener does NOT mean silence: a reconnect that fails invisibly leaves the
|
|
21667
|
+
* consumer believing the stream is live, which is the failure mode this class was already in.
|
|
21668
|
+
*/
|
|
21669
|
+
emit(eventType, data) {
|
|
21670
|
+
const handlers = this.listeners.get(eventType);
|
|
21671
|
+
if (!handlers || handlers.size === 0) {
|
|
21672
|
+
if (eventType === "error" && typeof process !== "undefined" && process.stderr) {
|
|
21673
|
+
const message = data instanceof Error ? data.message : String(data);
|
|
21674
|
+
process.stderr.write(`[MindForge SDK] event stream error: ${message}
|
|
21675
|
+
`);
|
|
21676
|
+
}
|
|
21677
|
+
return;
|
|
21678
|
+
}
|
|
21679
|
+
handlers.forEach((handler) => {
|
|
21680
|
+
try {
|
|
21681
|
+
handler(data);
|
|
21682
|
+
} catch {
|
|
21683
|
+
}
|
|
21684
|
+
});
|
|
21685
|
+
}
|
|
21662
21686
|
async connect() {
|
|
21687
|
+
if (typeof WebSocket === "undefined") {
|
|
21688
|
+
throw new Error(
|
|
21689
|
+
"WebSocketEventStream requires a global WebSocket: Node 22+, a browser, or the optional 'ws' package installed and assigned to globalThis.WebSocket. This SDK declares no runtime dependencies, so it does not install one for you."
|
|
21690
|
+
);
|
|
21691
|
+
}
|
|
21663
21692
|
return new Promise((resolve, reject) => {
|
|
21664
21693
|
this.ws = new WebSocket(this.url);
|
|
21665
21694
|
this.ws.onopen = () => {
|
|
@@ -21669,16 +21698,22 @@ var WebSocketEventStream = class {
|
|
|
21669
21698
|
this.ws.onerror = (err) => reject(err);
|
|
21670
21699
|
this.ws.onmessage = (event) => {
|
|
21671
21700
|
try {
|
|
21672
|
-
const parsed = JSON.parse(event.data
|
|
21673
|
-
|
|
21674
|
-
handlers.forEach((handler) => handler(parsed.data));
|
|
21701
|
+
const parsed = JSON.parse(String(event.data));
|
|
21702
|
+
this.emit(parsed.type, parsed.data);
|
|
21675
21703
|
} catch {
|
|
21676
21704
|
}
|
|
21677
21705
|
};
|
|
21678
21706
|
this.ws.onclose = () => {
|
|
21679
21707
|
if (this.reconnectAttempts < this.maxReconnectAttempts) {
|
|
21680
21708
|
this.reconnectAttempts++;
|
|
21681
|
-
setTimeout(() =>
|
|
21709
|
+
setTimeout(() => {
|
|
21710
|
+
this.connect().catch((err) => this.emit("error", err));
|
|
21711
|
+
}, 1e3 * this.reconnectAttempts);
|
|
21712
|
+
} else if (this.maxReconnectAttempts > 0) {
|
|
21713
|
+
this.emit("close", {
|
|
21714
|
+
reason: "reconnect attempts exhausted",
|
|
21715
|
+
attempts: this.reconnectAttempts
|
|
21716
|
+
});
|
|
21682
21717
|
}
|
|
21683
21718
|
};
|
|
21684
21719
|
});
|
|
@@ -21867,7 +21902,8 @@ var MindForgeClient = class extends import_events.EventEmitter {
|
|
|
21867
21902
|
await eventSource.connect();
|
|
21868
21903
|
const chunks = [];
|
|
21869
21904
|
let resolveNext = null;
|
|
21870
|
-
eventSource.on("stream_chunk", (
|
|
21905
|
+
eventSource.on("stream_chunk", (raw) => {
|
|
21906
|
+
const data = raw;
|
|
21871
21907
|
if (resolveNext) {
|
|
21872
21908
|
resolveNext({ value: data, done: data.type === "done" });
|
|
21873
21909
|
resolveNext = null;
|
|
@@ -21975,6 +22011,9 @@ var MindForgeClient = class extends import_events.EventEmitter {
|
|
|
21975
22011
|
}
|
|
21976
22012
|
};
|
|
21977
22013
|
|
|
22014
|
+
// package.json
|
|
22015
|
+
var version2 = "11.9.3";
|
|
22016
|
+
|
|
21978
22017
|
// src/index.ts
|
|
21979
22018
|
var PROJECT_ROOT = process.env.CLAUDE_PROJECT_DIR || process.cwd();
|
|
21980
22019
|
var memory = () => new MindForgeMemory(PROJECT_ROOT);
|
|
@@ -21999,7 +22038,7 @@ If MindForge is not set up in this project, run \`npx mindforge-cc@latest --clau
|
|
|
21999
22038
|
};
|
|
22000
22039
|
}
|
|
22001
22040
|
}
|
|
22002
|
-
var server = new McpServer({ name: "mindforge", version:
|
|
22041
|
+
var server = new McpServer({ name: "mindforge", version: version2 });
|
|
22003
22042
|
function registerTool(name, config2, handler) {
|
|
22004
22043
|
server.registerTool(name, config2, handler);
|
|
22005
22044
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mindforge-mcp-server",
|
|
3
|
-
"version": "11.9.
|
|
3
|
+
"version": "11.9.3",
|
|
4
4
|
"description": "MindForge MCP server — exposes the MindForge engine (knowledge graph, project health, audit log) to Claude Code and any MCP host as 7 stdio tools. Self-contained, zero runtime dependencies.",
|
|
5
5
|
"mcpName": "io.github.sairam0424/mindforge",
|
|
6
6
|
"type": "commonjs",
|