circuit-mcp 1.0.15 → 1.0.17

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "circuit-mcp",
3
- "version": "1.0.15",
3
+ "version": "1.0.17",
4
4
  "description": "Connect Circuit to Cursor and Claude Code - bring customer priorities and engineering briefs into your AI coding assistant",
5
5
  "type": "module",
6
6
  "bin": {
package/publish.sh ADDED
@@ -0,0 +1,30 @@
1
+ #!/bin/bash
2
+
3
+ # Publish script for circuit-mcp package
4
+ # Uses token to bypass 2FA
5
+ #
6
+ # Usage:
7
+ # NPM_TOKEN=your_token ./publish.sh
8
+ #
9
+ # Or set NPM_TOKEN in your environment
10
+
11
+ set -e
12
+
13
+ # Use NPM_TOKEN from environment, or prompt if not set
14
+ if [ -z "$NPM_TOKEN" ]; then
15
+ echo "Error: NPM_TOKEN environment variable is required"
16
+ echo "Usage: NPM_TOKEN=your_token ./publish.sh"
17
+ exit 1
18
+ fi
19
+
20
+ # Create temporary .npmrc with token
21
+ echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > .npmrc
22
+
23
+ # Publish the package
24
+ npm publish --access public
25
+
26
+ # Clean up .npmrc
27
+ rm .npmrc
28
+
29
+ echo "✅ Published successfully!"
30
+
package/src/server.js CHANGED
@@ -142,15 +142,29 @@ async function handleMessage(message, token) {
142
142
  required: ['build_id']
143
143
  }
144
144
  },
145
+ {
146
+ name: 'mark_shipped',
147
+ description: "Mark a brief as 'shipped' - the feature has shipped! This closes the feedback loop and notifies customers.",
148
+ inputSchema: {
149
+ type: 'object',
150
+ properties: {
151
+ build_id: {
152
+ type: 'string',
153
+ description: 'The build ID to mark as shipped'
154
+ }
155
+ },
156
+ required: ['build_id']
157
+ }
158
+ },
145
159
  {
146
160
  name: 'mark_done',
147
- description: "Mark a brief as 'done' - the feature has shipped! This closes the feedback loop.",
161
+ description: "[Deprecated - use mark_shipped] Mark a brief as shipped.",
148
162
  inputSchema: {
149
163
  type: 'object',
150
164
  properties: {
151
165
  build_id: {
152
166
  type: 'string',
153
- description: 'The build ID to mark as done'
167
+ description: 'The build ID to mark as shipped'
154
168
  }
155
169
  },
156
170
  required: ['build_id']
@@ -249,7 +263,7 @@ function formatPriorities(data) {
249
263
  badges.push(`${p.volume} users`);
250
264
  if (trendText) badges.push(trendText.trim());
251
265
  if (p.brief_status && p.brief_status !== 'no_brief') {
252
- const statusLabel = { ready: 'Ready', building: 'Building', done: 'Done' }[p.brief_status];
266
+ const statusLabel = { ready: 'Ready', building: 'Building', shipped: 'Shipped', done: 'Shipped' }[p.brief_status];
253
267
  if (statusLabel) badges.push(statusLabel);
254
268
  }
255
269
 
@@ -312,11 +326,12 @@ function formatBrief(data) {
312
326
 
313
327
  let output = '';
314
328
 
315
- // Status line
329
+ // Status line (handle both 'shipped' and legacy 'done')
316
330
  const statusText = {
317
331
  'ready': 'Ready',
318
332
  'building': 'Building',
319
- 'done': 'Done'
333
+ 'shipped': 'Shipped',
334
+ 'done': 'Shipped'
320
335
  }[data.status] || data.status;
321
336
 
322
337
  output += `Status: ${statusText}\n\n`;
@@ -468,6 +483,7 @@ async function handleToolCall(id, params, token) {
468
483
  formattedText = formatSearchResults(result);
469
484
  break;
470
485
  case 'start_building':
486
+ case 'mark_shipped':
471
487
  case 'mark_done':
472
488
  formattedText = formatStatusChange(result);
473
489
  break;