@productbrain/mcp 0.0.1-beta.10 → 0.0.1-beta.1000
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/.env.mcp.example +4 -0
- package/dist/chunk-CIHITLKC.js +15293 -0
- package/dist/chunk-CIHITLKC.js.map +1 -0
- package/dist/chunk-YMF3IQ5E.js +465 -0
- package/dist/chunk-YMF3IQ5E.js.map +1 -0
- package/dist/cli/index.js +1 -1
- package/dist/http.js +1307 -0
- package/dist/http.js.map +1 -0
- package/dist/index.js +59 -4462
- package/dist/index.js.map +1 -1
- package/dist/{setup-6KVGMTRP.js → setup-RYYXRDPB.js} +72 -105
- package/dist/setup-RYYXRDPB.js.map +1 -0
- package/dist/views/src/entry-cards/index.html +227 -0
- package/dist/views/src/graph-constellation/index.html +254 -0
- package/package.json +10 -3
- package/dist/chunk-XBMI6QHR.js +0 -100
- package/dist/chunk-XBMI6QHR.js.map +0 -1
- package/dist/chunk-ZMGVB2VY.js +0 -1136
- package/dist/chunk-ZMGVB2VY.js.map +0 -1
- package/dist/setup-6KVGMTRP.js.map +0 -1
- package/dist/smart-capture-YUVDO42L.js +0 -14
- package/dist/smart-capture-YUVDO42L.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@productbrain/mcp",
|
|
3
|
-
"version": "0.0.1-beta.
|
|
3
|
+
"version": "0.0.1-beta.1000",
|
|
4
4
|
"description": "Product Brain — MCP server for AI-assisted product knowledge management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -17,17 +17,24 @@
|
|
|
17
17
|
".env.mcp.example"
|
|
18
18
|
],
|
|
19
19
|
"scripts": {
|
|
20
|
-
"
|
|
20
|
+
"prebuild": "cp ../../convex/lib/flags_core.ts src/flags.ts && mkdir -p src/brand && cp ../../src/lib/brand/logo-markup.ts src/brand/logo-markup.ts",
|
|
21
|
+
"build": "node ./scripts/build-package.mjs",
|
|
22
|
+
"build:code": "tsup",
|
|
21
23
|
"start": "node dist/index.js",
|
|
24
|
+
"start:http": "node dist/http.js",
|
|
22
25
|
"dev": "tsx src/index.ts",
|
|
23
26
|
"typecheck": "tsc --noEmit",
|
|
27
|
+
"check:boundaries": "node ../../scripts/check-mcp-boundaries.mjs",
|
|
28
|
+
"check:lib-drift": "node ../../scripts/check-mcp-lib-drift.mjs",
|
|
24
29
|
"prepublishOnly": "npm run build",
|
|
25
30
|
"publish:beta": "npm publish --tag=beta",
|
|
26
31
|
"version:prerelease": "npm version prerelease"
|
|
27
32
|
},
|
|
28
33
|
"dependencies": {
|
|
29
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
34
|
+
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
30
35
|
"convex": "^1.32.0",
|
|
36
|
+
"express": "^5.2.1",
|
|
37
|
+
"express-rate-limit": "^7.5.1",
|
|
31
38
|
"posthog-node": "^5.24.17",
|
|
32
39
|
"zod": "^3.23.0"
|
|
33
40
|
},
|
package/dist/chunk-XBMI6QHR.js
DELETED
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
// src/analytics.ts
|
|
2
|
-
import { userInfo } from "os";
|
|
3
|
-
import { PostHog } from "posthog-node";
|
|
4
|
-
var client = null;
|
|
5
|
-
var distinctId = "anonymous";
|
|
6
|
-
var POSTHOG_HOST = "https://eu.i.posthog.com";
|
|
7
|
-
function log(msg) {
|
|
8
|
-
if (process.env.MCP_DEBUG === "1") {
|
|
9
|
-
process.stderr.write(msg);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
function initAnalytics() {
|
|
13
|
-
const apiKey = process.env.POSTHOG_MCP_KEY || "";
|
|
14
|
-
if (!apiKey) {
|
|
15
|
-
log("[MCP-ANALYTICS] No PostHog key \u2014 tracking disabled (set SYNERGYOS_POSTHOG_KEY at build time for publish)\n");
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
client = new PostHog(apiKey, {
|
|
19
|
-
host: POSTHOG_HOST,
|
|
20
|
-
flushAt: 1,
|
|
21
|
-
flushInterval: 5e3
|
|
22
|
-
});
|
|
23
|
-
distinctId = process.env.MCP_USER_ID || fallbackDistinctId();
|
|
24
|
-
log(`[MCP-ANALYTICS] Initialized \u2014 host=${POSTHOG_HOST} distinctId=${distinctId}
|
|
25
|
-
`);
|
|
26
|
-
}
|
|
27
|
-
function fallbackDistinctId() {
|
|
28
|
-
try {
|
|
29
|
-
return userInfo().username;
|
|
30
|
-
} catch {
|
|
31
|
-
return `os-${process.pid}`;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
function trackSessionStarted(workspaceId, serverVersion) {
|
|
35
|
-
if (!client) return;
|
|
36
|
-
client.capture({
|
|
37
|
-
distinctId,
|
|
38
|
-
event: "mcp_session_started",
|
|
39
|
-
properties: {
|
|
40
|
-
workspace_id: workspaceId,
|
|
41
|
-
server_version: serverVersion,
|
|
42
|
-
source: "mcp-server",
|
|
43
|
-
$groups: { workspace: workspaceId }
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
function trackToolCall(fn, status, durationMs, workspaceId, errorMsg) {
|
|
48
|
-
const properties = {
|
|
49
|
-
tool: fn,
|
|
50
|
-
status,
|
|
51
|
-
duration_ms: durationMs,
|
|
52
|
-
workspace_id: workspaceId,
|
|
53
|
-
source: "mcp-server",
|
|
54
|
-
$groups: { workspace: workspaceId }
|
|
55
|
-
};
|
|
56
|
-
if (errorMsg) properties.error = errorMsg;
|
|
57
|
-
if (!client) return;
|
|
58
|
-
client.capture({
|
|
59
|
-
distinctId,
|
|
60
|
-
event: "mcp_tool_called",
|
|
61
|
-
properties
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
function trackSetupStarted() {
|
|
65
|
-
if (!client) return;
|
|
66
|
-
client.capture({
|
|
67
|
-
distinctId,
|
|
68
|
-
event: "mcp_setup_started",
|
|
69
|
-
properties: {
|
|
70
|
-
source: "mcp-server",
|
|
71
|
-
platform: process.platform
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
function trackSetupCompleted(chosenClient, outcome) {
|
|
76
|
-
if (!client) return;
|
|
77
|
-
client.capture({
|
|
78
|
-
distinctId,
|
|
79
|
-
event: "mcp_setup_completed",
|
|
80
|
-
properties: {
|
|
81
|
-
client: chosenClient,
|
|
82
|
-
outcome,
|
|
83
|
-
source: "mcp-server",
|
|
84
|
-
platform: process.platform
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
async function shutdownAnalytics() {
|
|
89
|
-
await client?.shutdown();
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
export {
|
|
93
|
-
initAnalytics,
|
|
94
|
-
trackSessionStarted,
|
|
95
|
-
trackToolCall,
|
|
96
|
-
trackSetupStarted,
|
|
97
|
-
trackSetupCompleted,
|
|
98
|
-
shutdownAnalytics
|
|
99
|
-
};
|
|
100
|
-
//# sourceMappingURL=chunk-XBMI6QHR.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/analytics.ts"],"sourcesContent":["/**\n * PostHog analytics for SynergyOS maintainers — tracks MCP usage (sessions, tool calls).\n * Not user-facing. Key is injected at build time via SYNERGYOS_POSTHOG_KEY.\n * Override with POSTHOG_MCP_KEY for self-hosted deployments.\n */\n\nimport { userInfo } from \"node:os\";\nimport { PostHog } from \"posthog-node\";\n\nlet client: PostHog | null = null;\nlet distinctId = \"anonymous\";\n\nconst POSTHOG_HOST = \"https://eu.i.posthog.com\";\n\n/** Injected at build time: SYNERGYOS_POSTHOG_KEY env when running `npm run build`/publish. */\ndeclare const __SYNERGYOS_POSTHOG_KEY__: string;\n\n/** Only write to stderr when MCP_DEBUG=1 for quieter default DX. */\nfunction log(msg: string): void {\n if (process.env.MCP_DEBUG === \"1\") {\n process.stderr.write(msg);\n }\n}\n\nexport function initAnalytics(): void {\n const apiKey = process.env.POSTHOG_MCP_KEY || __SYNERGYOS_POSTHOG_KEY__;\n if (!apiKey) {\n log(\"[MCP-ANALYTICS] No PostHog key — tracking disabled (set SYNERGYOS_POSTHOG_KEY at build time for publish)\\n\");\n return;\n }\n\n client = new PostHog(apiKey, {\n host: POSTHOG_HOST,\n flushAt: 1,\n flushInterval: 5000,\n });\n distinctId = process.env.MCP_USER_ID || fallbackDistinctId();\n\n log(`[MCP-ANALYTICS] Initialized — host=${POSTHOG_HOST} distinctId=${distinctId}\\n`);\n}\n\nfunction fallbackDistinctId(): string {\n try {\n return userInfo().username;\n } catch {\n return `os-${process.pid}`;\n }\n}\n\nexport function trackSessionStarted(\n workspaceId: string,\n serverVersion: string,\n): void {\n if (!client) return;\n client.capture({\n distinctId,\n event: \"mcp_session_started\",\n properties: {\n workspace_id: workspaceId,\n server_version: serverVersion,\n source: \"mcp-server\",\n $groups: { workspace: workspaceId },\n },\n });\n}\n\nexport function trackToolCall(\n fn: string,\n status: \"ok\" | \"error\",\n durationMs: number,\n workspaceId: string,\n errorMsg?: string,\n): void {\n const properties: Record<string, unknown> = {\n tool: fn,\n status,\n duration_ms: durationMs,\n workspace_id: workspaceId,\n source: \"mcp-server\",\n $groups: { workspace: workspaceId },\n };\n if (errorMsg) properties.error = errorMsg;\n\n if (!client) return;\n client.capture({\n distinctId,\n event: \"mcp_tool_called\",\n properties,\n });\n}\n\nexport function trackSetupStarted(): void {\n if (!client) return;\n client.capture({\n distinctId,\n event: \"mcp_setup_started\",\n properties: {\n source: \"mcp-server\",\n platform: process.platform,\n },\n });\n}\n\nexport function trackSetupCompleted(\n chosenClient: string,\n outcome: \"config_written\" | \"config_existed\" | \"snippet_shown\" | \"write_error\",\n): void {\n if (!client) return;\n client.capture({\n distinctId,\n event: \"mcp_setup_completed\",\n properties: {\n client: chosenClient,\n outcome,\n source: \"mcp-server\",\n platform: process.platform,\n },\n });\n}\n\nexport async function shutdownAnalytics(): Promise<void> {\n await client?.shutdown();\n}\n"],"mappings":";AAMA,SAAS,gBAAgB;AACzB,SAAS,eAAe;AAExB,IAAI,SAAyB;AAC7B,IAAI,aAAa;AAEjB,IAAM,eAAe;AAMrB,SAAS,IAAI,KAAmB;AAC9B,MAAI,QAAQ,IAAI,cAAc,KAAK;AACjC,YAAQ,OAAO,MAAM,GAAG;AAAA,EAC1B;AACF;AAEO,SAAS,gBAAsB;AACpC,QAAM,SAAS,QAAQ,IAAI,mBAAmB;AAC9C,MAAI,CAAC,QAAQ;AACX,QAAI,iHAA4G;AAChH;AAAA,EACF;AAEA,WAAS,IAAI,QAAQ,QAAQ;AAAA,IAC3B,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe;AAAA,EACjB,CAAC;AACD,eAAa,QAAQ,IAAI,eAAe,mBAAmB;AAE3D,MAAI,2CAAsC,YAAY,eAAe,UAAU;AAAA,CAAI;AACrF;AAEA,SAAS,qBAA6B;AACpC,MAAI;AACF,WAAO,SAAS,EAAE;AAAA,EACpB,QAAQ;AACN,WAAO,MAAM,QAAQ,GAAG;AAAA,EAC1B;AACF;AAEO,SAAS,oBACd,aACA,eACM;AACN,MAAI,CAAC,OAAQ;AACb,SAAO,QAAQ;AAAA,IACb;AAAA,IACA,OAAO;AAAA,IACP,YAAY;AAAA,MACV,cAAc;AAAA,MACd,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,SAAS,EAAE,WAAW,YAAY;AAAA,IACpC;AAAA,EACF,CAAC;AACH;AAEO,SAAS,cACd,IACA,QACA,YACA,aACA,UACM;AACN,QAAM,aAAsC;AAAA,IAC1C,MAAM;AAAA,IACN;AAAA,IACA,aAAa;AAAA,IACb,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,SAAS,EAAE,WAAW,YAAY;AAAA,EACpC;AACA,MAAI,SAAU,YAAW,QAAQ;AAEjC,MAAI,CAAC,OAAQ;AACb,SAAO,QAAQ;AAAA,IACb;AAAA,IACA,OAAO;AAAA,IACP;AAAA,EACF,CAAC;AACH;AAEO,SAAS,oBAA0B;AACxC,MAAI,CAAC,OAAQ;AACb,SAAO,QAAQ;AAAA,IACb;AAAA,IACA,OAAO;AAAA,IACP,YAAY;AAAA,MACV,QAAQ;AAAA,MACR,UAAU,QAAQ;AAAA,IACpB;AAAA,EACF,CAAC;AACH;AAEO,SAAS,oBACd,cACA,SACM;AACN,MAAI,CAAC,OAAQ;AACb,SAAO,QAAQ;AAAA,IACb;AAAA,IACA,OAAO;AAAA,IACP,YAAY;AAAA,MACV,QAAQ;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,MACR,UAAU,QAAQ;AAAA,IACpB;AAAA,EACF,CAAC;AACH;AAEA,eAAsB,oBAAmC;AACvD,QAAM,QAAQ,SAAS;AACzB;","names":[]}
|