@vailent/pulse-mcp 1.13.0 → 1.14.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.
Files changed (3) hide show
  1. package/README.md +47 -53
  2. package/dist/server.js +10 -0
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -2,43 +2,37 @@
2
2
 
3
3
  Pulse MCP server for [Claude Code](https://docs.anthropic.com/en/docs/claude-code). Manage pods, features, workstreams, bugs, and more — all from your terminal.
4
4
 
5
- ## Quick Setup (2 minutes)
5
+ ## Setup
6
6
 
7
- ### 1. Create an npm account (skip if you have one)
7
+ ### 1. npm access (one-time)
8
8
 
9
+ Create an npm account if you don't have one:
9
10
  ```bash
10
11
  npm adduser
11
12
  ```
12
13
 
13
- Follow the prompts to create your account at [npmjs.com](https://www.npmjs.com/signup).
14
-
15
- ### 2. Get added to the Vailent npm org
16
-
17
- Ask Sal to invite you using your npm username. You'll get an email — accept the invite.
18
-
19
- ### 3. Log in to the Vailent scope
20
-
14
+ Ask Sal to invite you to the Vailent npm org. Accept the email invite, then log in:
21
15
  ```bash
22
16
  npm login --scope=@vailent
23
17
  ```
24
18
 
25
- ### 4. Add to Claude Code
26
-
27
- Run this once from any directory:
19
+ ### 2. Install Pulse MCP
28
20
 
29
21
  ```bash
30
- claude mcp add pulse-dev -- npx -y @vailent/pulse-mcp
22
+ npx -p @vailent/pulse-mcp pulse-setup
31
23
  ```
32
24
 
33
- ### 5. Verify it works
25
+ Restart Claude Code. You're connected.
26
+
27
+ ### Verify it works
34
28
 
35
- Open Claude Code and ask:
29
+ Open Claude Code in any project and ask:
36
30
 
37
31
  ```
38
32
  what pods exist?
39
33
  ```
40
34
 
41
- You should see a list of active pods. That's it — you're connected.
35
+ You should see a list of active pods. That's it.
42
36
 
43
37
  ## What You Can Do
44
38
 
@@ -46,68 +40,68 @@ Talk to Claude naturally — the MCP tools handle the rest.
46
40
 
47
41
  | Ask Claude... | What happens |
48
42
  |---|---|
49
- | "What pods exist?" | Lists all active pods with members |
50
- | "Show me features for this week" | Lists features by pod and week |
51
- | "Create a feature called Auth Revamp in pod X" | Creates a new feature |
52
- | "What bugs are open?" | Lists open bugs with priority |
53
- | "Show me pending suggestions" | Lists AI suggestions needing review |
43
+ | "What features are in progress this week?" | Lists features by pod and week |
44
+ | "Show me open bugs for Catalyst" | Lists open bugs with priority |
45
+ | "Create a bug: login redirect fails on Safari" | Creates a new bug |
46
+ | "Search for anything about deal creation" | Semantic search across all items |
54
47
  | "Give me my daily briefing" | AI-generated focus items for today |
55
- | "What happened this week?" | Searches activity history |
48
+ | "What PRs are open for PULSE-142?" | Shows PR status for a feature |
49
+ | "Triage the open requests for my pod" | Lists requests needing review |
50
+ | "What did the team ship last week?" | Searches activity history |
56
51
  | "Show the team roster" | Lists team members and pod assignments |
57
- | "What feature requests came in?" | Lists feature requests by source |
58
52
 
59
- ### All 11 Tools
53
+ ### All Tools
60
54
 
61
55
  | Tool | Description |
62
56
  |---|---|
63
57
  | `pulse_pods` | List, get, create, update pods |
64
58
  | `pulse_pod_members` | Manage pod membership (add, remove, update roles) |
65
- | `pulse_features` | List, get, create, update features with phase/step tracking |
66
- | `pulse_workstreams` | Manage workstreams (projects) |
67
- | `pulse_requests` | View and manage feature requests |
68
- | `pulse_bugs` | View and manage bug reports |
69
- | `pulse_suggestions` | Review, approve, reject AI suggestions |
70
- | `pulse_events` | Query the activity event stream |
71
- | `pulse_history` | Search across all historical data |
72
- | `pulse_briefing` | Generate AI daily briefing by role |
73
- | `pulse_team` | View team members and assignments |
59
+ | `pulse_pod_repos` | Link GitHub repos to pods |
60
+ | `pulse_features` | Manage features with phase/step tracking |
61
+ | `pulse_workstreams` | Manage workstreams (projects), extract features from PRDs |
62
+ | `pulse_milestones` | Manage workstream milestones |
63
+ | `pulse_requests` | Triage feature requests (accept, decline, defer) |
64
+ | `pulse_bugs` | Track bugs (create, update, schedule) |
65
+ | `pulse_suggestions` | Review and approve AI suggestions |
66
+ | `pulse_search` | Semantic similarity search find duplicates, related items |
67
+ | `pulse_events` | Activity stream, list PRs for a feature |
68
+ | `pulse_history` | Search shipped features, closed requests, resolved bugs |
69
+ | `pulse_briefing` | AI daily briefing adapted to your role |
70
+ | `pulse_team` | View and manage team members |
74
71
 
75
72
  ## Troubleshooting
76
73
 
77
- ### "Tool not found" or MCP not connecting
74
+ ### MCP not connecting
78
75
 
79
- Make sure the server is registered:
76
+ Check that it's registered:
80
77
  ```bash
81
78
  claude mcp list
82
79
  ```
83
80
 
84
- You should see `pulse-dev` in the list. If not, re-run step 4.
85
-
86
- ### "Missing Supabase credentials" error
87
-
88
- This shouldn't happen — the dev database is preconfigured. If it does, set these env vars:
89
-
81
+ You should see `pulse-dev` with status `Connected`. If not, re-run setup:
90
82
  ```bash
91
- export PULSE_SUPABASE_URL=https://eppugcfjlqovlauykzfe.supabase.co
92
- export PULSE_SUPABASE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImVwcHVnY2ZqbHFvdmxhdXlremZlIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzQwNTg2NTYsImV4cCI6MjA4OTYzNDY1Nn0.x9u7sSKnSlTFRWCu--D8zt81IuOmoXXHG3fb3kcRvBc
83
+ npx -p @vailent/pulse-mcp pulse-setup
93
84
  ```
94
85
 
95
86
  ### Need to update to the latest version
96
87
 
97
88
  ```bash
98
- npx -y @vailent/pulse-mcp@latest
89
+ npx clear-npx-cache
90
+ npx -p @vailent/pulse-mcp pulse-setup
99
91
  ```
100
92
 
101
- Or clear the npx cache:
93
+ Then restart Claude Code.
94
+
95
+ ### Manual setup (if pulse-setup doesn't work)
96
+
102
97
  ```bash
103
- npx clear-npx-cache && claude mcp remove pulse-dev && claude mcp add pulse-dev -- npx -y @vailent/pulse-mcp
98
+ claude mcp add --scope user --transport stdio pulse-dev -- npx -y @vailent/pulse-mcp
104
99
  ```
105
100
 
106
- ## Advanced: Custom Supabase Instance
107
-
108
- To point at a different Supabase project, set these env vars before running Claude Code:
101
+ Then add the service role key to `~/.claude.json` under the `pulse-dev` server's `env`:
109
102
 
110
- ```bash
111
- export PULSE_SUPABASE_URL=https://your-project.supabase.co
112
- export PULSE_SUPABASE_KEY=your-anon-key
103
+ ```json
104
+ "env": {
105
+ "PULSE_SUPABASE_KEY": "ask Sal for the key"
106
+ }
113
107
  ```
package/dist/server.js CHANGED
@@ -41722,6 +41722,13 @@ function normalizeWorkItemState(updates, current) {
41722
41722
  return result;
41723
41723
  }
41724
41724
 
41725
+ // lib/cascade-request-status.ts
41726
+ var TERMINAL_STATUSES = ["shipped", "missed", "killed"];
41727
+ async function cascadeStatusToRequests(supabase, featureId, newStatus) {
41728
+ if (!TERMINAL_STATUSES.includes(newStatus)) return;
41729
+ await supabase.from("work_items").update({ status: newStatus, updated_at: (/* @__PURE__ */ new Date()).toISOString() }).eq("accepted_feature_id", featureId);
41730
+ }
41731
+
41725
41732
  // tools/features.ts
41726
41733
  async function handleFeatures(params) {
41727
41734
  const supabase = getAdminClient();
@@ -41813,6 +41820,9 @@ async function handleFeatures(params) {
41813
41820
  const updates = normalizeWorkItemState(raw, current || void 0);
41814
41821
  const { error: error2 } = await supabase.from("work_items").update(updates).eq("id", featureId);
41815
41822
  if (error2) return err(error2.message);
41823
+ if (updates.status) {
41824
+ await cascadeStatusToRequests(supabase, featureId, updates.status);
41825
+ }
41816
41826
  return ok({ id: featureId, ...updates }, `Updated feature ${featureId}`);
41817
41827
  }
41818
41828
  case "delete": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vailent/pulse-mcp",
3
- "version": "1.13.0",
3
+ "version": "1.14.0",
4
4
  "description": "Pulse MCP server — manage pods, features, workstreams, bugs, and more from Claude Code",
5
5
  "type": "module",
6
6
  "bin": {