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 +1 -1
- package/publish.sh +30 -0
- package/src/server.js +21 -5
package/package.json
CHANGED
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
|
|
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
|
|
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: '
|
|
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
|
-
'
|
|
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;
|