@vailent/pulse-mcp 1.11.0 → 1.13.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/bin/setup.js +41 -0
- package/dist/server.js +8 -2
- package/package.json +4 -3
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// bin/setup.ts
|
|
4
|
+
import { readFileSync, writeFileSync, existsSync } from "fs";
|
|
5
|
+
import { homedir } from "os";
|
|
6
|
+
import { join } from "path";
|
|
7
|
+
var CLAUDE_JSON = join(homedir(), ".claude.json");
|
|
8
|
+
var SERVER_NAME = "pulse-dev";
|
|
9
|
+
var MCP_CONFIG = {
|
|
10
|
+
type: "stdio",
|
|
11
|
+
command: "npx",
|
|
12
|
+
args: ["-y", "@vailent/pulse-mcp"],
|
|
13
|
+
env: {
|
|
14
|
+
PULSE_SUPABASE_URL: "https://eppugcfjlqovlauykzfe.supabase.co",
|
|
15
|
+
PULSE_SUPABASE_KEY: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImVwcHVnY2ZqbHFvdmxhdXlremZlIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImlhdCI6MTc3NDA1ODY1NiwiZXhwIjoyMDg5NjM0NjU2fQ.aoFu_uYEy9Rz3tc_I-RjjzVmCRMmjeVMhcOzkqEr0EE"
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
function setup() {
|
|
19
|
+
console.log("\n \x1B[1mPulse MCP Setup\x1B[0m\n");
|
|
20
|
+
let config = {};
|
|
21
|
+
if (existsSync(CLAUDE_JSON)) {
|
|
22
|
+
try {
|
|
23
|
+
config = JSON.parse(readFileSync(CLAUDE_JSON, "utf-8"));
|
|
24
|
+
} catch {
|
|
25
|
+
console.log(" \x1B[31m\u2717\x1B[0m Could not parse ~/.claude.json");
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (!config.mcpServers || typeof config.mcpServers !== "object") {
|
|
30
|
+
config.mcpServers = {};
|
|
31
|
+
}
|
|
32
|
+
config.mcpServers[SERVER_NAME] = MCP_CONFIG;
|
|
33
|
+
writeFileSync(CLAUDE_JSON, JSON.stringify(config, null, 2) + "\n");
|
|
34
|
+
console.log(" \x1B[32m\u2713\x1B[0m Added \x1B[1mpulse-dev\x1B[0m to ~/.claude.json");
|
|
35
|
+
console.log(" \x1B[32m\u2713\x1B[0m Configured with dev Supabase credentials");
|
|
36
|
+
console.log();
|
|
37
|
+
console.log(" Restart Claude Code to connect. Then try:");
|
|
38
|
+
console.log(' \x1B[2m"what features are in progress this week?"\x1B[0m');
|
|
39
|
+
console.log();
|
|
40
|
+
}
|
|
41
|
+
setup();
|
package/dist/server.js
CHANGED
|
@@ -46800,6 +46800,8 @@ Rules:
|
|
|
46800
46800
|
- "User Flows" sections describe journeys \u2014 extract the capability, not each step
|
|
46801
46801
|
- Respect "Out of Scope" / "Scope Boundaries" \u2014 do NOT extract features for out-of-scope items
|
|
46802
46802
|
- Also extract any "Open Questions" from the PRD as a separate list
|
|
46803
|
+
- Extract milestones from "Success Criteria" \u2014 each measurable outcome becomes a milestone
|
|
46804
|
+
- If the PRD mentions dates, deadlines, or phases (e.g., "v1 by April", "beta launch"), extract those as milestones with target dates
|
|
46803
46805
|
|
|
46804
46806
|
Confidence scoring:
|
|
46805
46807
|
- 0.9+: Explicitly stated as a requirement ("User can X", "System shall Y")
|
|
@@ -46812,7 +46814,10 @@ Respond with JSON:
|
|
|
46812
46814
|
"features": [
|
|
46813
46815
|
{ "title": "...", "description": "...", "confidence": 0.9 }
|
|
46814
46816
|
],
|
|
46815
|
-
"openQuestions": ["Question from the PRD...", "..."]
|
|
46817
|
+
"openQuestions": ["Question from the PRD...", "..."],
|
|
46818
|
+
"milestones": [
|
|
46819
|
+
{ "title": "...", "targetDate": "2026-04-15" or null }
|
|
46820
|
+
]
|
|
46816
46821
|
}`,
|
|
46817
46822
|
messages: [{ role: "user", content: prdText }]
|
|
46818
46823
|
});
|
|
@@ -46824,7 +46829,8 @@ Respond with JSON:
|
|
|
46824
46829
|
});
|
|
46825
46830
|
return {
|
|
46826
46831
|
features: result.features || [],
|
|
46827
|
-
openQuestions: result.openQuestions || []
|
|
46832
|
+
openQuestions: result.openQuestions || [],
|
|
46833
|
+
milestones: result.milestones || []
|
|
46828
46834
|
};
|
|
46829
46835
|
}
|
|
46830
46836
|
async function validateFeaturesAgainstPrd(prdText, existingFeatures) {
|
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vailent/pulse-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.13.0",
|
|
4
4
|
"description": "Pulse MCP server — manage pods, features, workstreams, bugs, and more from Claude Code",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
|
-
"pulse-mcp": "./dist/server.js"
|
|
7
|
+
"pulse-mcp": "./dist/server.js",
|
|
8
|
+
"pulse-setup": "./dist/bin/setup.js"
|
|
8
9
|
},
|
|
9
10
|
"scripts": {
|
|
10
|
-
"build": "tsup server.ts --format esm --outDir dist --clean",
|
|
11
|
+
"build": "tsup server.ts bin/setup.ts --format esm --outDir dist --clean",
|
|
11
12
|
"prepublishOnly": "npm run build"
|
|
12
13
|
},
|
|
13
14
|
"dependencies": {
|