@vibekiln/cutline-mcp-cli 0.12.0 → 0.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.
- package/README.md +15 -0
- package/dist/auth/callback.d.ts +1 -1
- package/dist/auth/callback.js +9 -1
- package/dist/commands/login.js +4 -1
- package/dist/commands/serve.d.ts +4 -0
- package/dist/commands/serve.js +19 -6
- package/dist/commands/setup.js +7 -4
- package/dist/index.js +4 -2
- package/dist/servers/{chunk-RUCYK3TR.js → chunk-EWUELVO2.js} +341 -89
- package/dist/servers/chunk-Q5V4VTF5.js +3180 -0
- package/dist/servers/{chunk-KMUSQOTJ.js → chunk-WTLGBZBN.js} +15 -1
- package/dist/servers/cutline-server.js +1236 -4066
- package/dist/servers/{data-client-RY2DCLME.js → data-client-OIQ6SINO.js} +41 -3
- package/dist/servers/exploration-server.js +1 -1
- package/dist/servers/integrations-server.js +2 -2
- package/dist/servers/output-server.js +1 -1
- package/dist/servers/premortem-server.js +30 -65
- package/dist/servers/slopburn-server.js +10069 -0
- package/dist/servers/tools-server.js +2 -2
- package/package.json +5 -3
- package/server.json +1 -1
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
|
+
__dataClientInternals,
|
|
2
3
|
addEdges,
|
|
3
4
|
addEntity,
|
|
4
5
|
addNodes,
|
|
5
6
|
addTestCases,
|
|
7
|
+
attachDeepDiveToEngagement,
|
|
6
8
|
cfApplyEdits,
|
|
7
9
|
cfBuildAndUploadPdf,
|
|
8
10
|
cfChatWithPersona,
|
|
@@ -21,15 +23,18 @@ import {
|
|
|
21
23
|
cfPremortemKick,
|
|
22
24
|
cfPremortemRun,
|
|
23
25
|
cfPremortemStart,
|
|
26
|
+
cfPremortemStatus,
|
|
24
27
|
cfRegenAssumptions,
|
|
25
28
|
cfRegenExperiments,
|
|
26
29
|
cfSaveWikiMarkdown,
|
|
30
|
+
createEngagement,
|
|
27
31
|
createExplorationSession,
|
|
28
32
|
createPremortem,
|
|
29
33
|
createTemplate,
|
|
30
34
|
deleteAllNodes,
|
|
31
35
|
deleteBinding,
|
|
32
36
|
deleteGraphData,
|
|
37
|
+
enqueueVerificationCycleJob,
|
|
33
38
|
generateReadinessReportViaProxy,
|
|
34
39
|
getAllBindings,
|
|
35
40
|
getAllEdges,
|
|
@@ -38,9 +43,11 @@ import {
|
|
|
38
43
|
getAllNodesLight,
|
|
39
44
|
getBindingsForEntity,
|
|
40
45
|
getChat,
|
|
46
|
+
getEngagement,
|
|
41
47
|
getEntitiesWithEmbeddings,
|
|
42
48
|
getEntityById,
|
|
43
49
|
getExplorationSession,
|
|
50
|
+
getGeneratedTestArtifactBundle,
|
|
44
51
|
getGraphMetadata,
|
|
45
52
|
getIdeaReport,
|
|
46
53
|
getNodesByCategories,
|
|
@@ -53,20 +60,31 @@ import {
|
|
|
53
60
|
getPublicSiteUrlForCurrentAuth,
|
|
54
61
|
getReadinessReport,
|
|
55
62
|
getScanRateLimit,
|
|
63
|
+
getSlopburnRun,
|
|
56
64
|
getTemplate,
|
|
57
65
|
getTestCasesForEntity,
|
|
58
66
|
getTestCasesForProduct,
|
|
67
|
+
getVerificationCycleJob,
|
|
68
|
+
getVerificationTestExecutionJob,
|
|
59
69
|
hasConstraints,
|
|
70
|
+
ingestVerificationIntent,
|
|
71
|
+
listEngagements,
|
|
60
72
|
listExplorationSessions,
|
|
61
73
|
listPersonas,
|
|
62
74
|
listPremortems,
|
|
75
|
+
listSlopburnRuns,
|
|
63
76
|
listTemplates,
|
|
64
77
|
recordScoreSnapshot,
|
|
78
|
+
runVerificationCycle,
|
|
65
79
|
saveChat,
|
|
66
80
|
saveReadinessReport,
|
|
67
81
|
saveScanReport,
|
|
68
82
|
searchNodesByKeywords,
|
|
83
|
+
selectEngagementProduct,
|
|
84
|
+
submitVerificationTestExecution,
|
|
85
|
+
summarizeEngagement,
|
|
69
86
|
updateChat,
|
|
87
|
+
updateEngagement,
|
|
70
88
|
updateEntityEmbedding,
|
|
71
89
|
updateExplorationSession,
|
|
72
90
|
updateGraphMetadata,
|
|
@@ -77,13 +95,16 @@ import {
|
|
|
77
95
|
upsertBindings,
|
|
78
96
|
upsertEdges,
|
|
79
97
|
upsertEntities,
|
|
80
|
-
upsertNodes
|
|
81
|
-
|
|
98
|
+
upsertNodes,
|
|
99
|
+
upsertSlopburnRun
|
|
100
|
+
} from "./chunk-EWUELVO2.js";
|
|
82
101
|
export {
|
|
102
|
+
__dataClientInternals,
|
|
83
103
|
addEdges,
|
|
84
104
|
addEntity,
|
|
85
105
|
addNodes,
|
|
86
106
|
addTestCases,
|
|
107
|
+
attachDeepDiveToEngagement,
|
|
87
108
|
cfApplyEdits,
|
|
88
109
|
cfBuildAndUploadPdf,
|
|
89
110
|
cfChatWithPersona,
|
|
@@ -102,15 +123,18 @@ export {
|
|
|
102
123
|
cfPremortemKick,
|
|
103
124
|
cfPremortemRun,
|
|
104
125
|
cfPremortemStart,
|
|
126
|
+
cfPremortemStatus,
|
|
105
127
|
cfRegenAssumptions,
|
|
106
128
|
cfRegenExperiments,
|
|
107
129
|
cfSaveWikiMarkdown,
|
|
130
|
+
createEngagement,
|
|
108
131
|
createExplorationSession,
|
|
109
132
|
createPremortem,
|
|
110
133
|
createTemplate,
|
|
111
134
|
deleteAllNodes,
|
|
112
135
|
deleteBinding,
|
|
113
136
|
deleteGraphData,
|
|
137
|
+
enqueueVerificationCycleJob,
|
|
114
138
|
generateReadinessReportViaProxy,
|
|
115
139
|
getAllBindings,
|
|
116
140
|
getAllEdges,
|
|
@@ -119,9 +143,11 @@ export {
|
|
|
119
143
|
getAllNodesLight,
|
|
120
144
|
getBindingsForEntity,
|
|
121
145
|
getChat,
|
|
146
|
+
getEngagement,
|
|
122
147
|
getEntitiesWithEmbeddings,
|
|
123
148
|
getEntityById,
|
|
124
149
|
getExplorationSession,
|
|
150
|
+
getGeneratedTestArtifactBundle,
|
|
125
151
|
getGraphMetadata,
|
|
126
152
|
getIdeaReport,
|
|
127
153
|
getNodesByCategories,
|
|
@@ -134,20 +160,31 @@ export {
|
|
|
134
160
|
getPublicSiteUrlForCurrentAuth,
|
|
135
161
|
getReadinessReport,
|
|
136
162
|
getScanRateLimit,
|
|
163
|
+
getSlopburnRun,
|
|
137
164
|
getTemplate,
|
|
138
165
|
getTestCasesForEntity,
|
|
139
166
|
getTestCasesForProduct,
|
|
167
|
+
getVerificationCycleJob,
|
|
168
|
+
getVerificationTestExecutionJob,
|
|
140
169
|
hasConstraints,
|
|
170
|
+
ingestVerificationIntent,
|
|
171
|
+
listEngagements,
|
|
141
172
|
listExplorationSessions,
|
|
142
173
|
listPersonas,
|
|
143
174
|
listPremortems,
|
|
175
|
+
listSlopburnRuns,
|
|
144
176
|
listTemplates,
|
|
145
177
|
recordScoreSnapshot,
|
|
178
|
+
runVerificationCycle,
|
|
146
179
|
saveChat,
|
|
147
180
|
saveReadinessReport,
|
|
148
181
|
saveScanReport,
|
|
149
182
|
searchNodesByKeywords,
|
|
183
|
+
selectEngagementProduct,
|
|
184
|
+
submitVerificationTestExecution,
|
|
185
|
+
summarizeEngagement,
|
|
150
186
|
updateChat,
|
|
187
|
+
updateEngagement,
|
|
151
188
|
updateEntityEmbedding,
|
|
152
189
|
updateExplorationSession,
|
|
153
190
|
updateGraphMetadata,
|
|
@@ -158,5 +195,6 @@ export {
|
|
|
158
195
|
upsertBindings,
|
|
159
196
|
upsertEdges,
|
|
160
197
|
upsertEntities,
|
|
161
|
-
upsertNodes
|
|
198
|
+
upsertNodes,
|
|
199
|
+
upsertSlopburnRun
|
|
162
200
|
};
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
requirePremiumWithAutoAuth,
|
|
15
15
|
updateExplorationSession,
|
|
16
16
|
validateRequestSize
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-EWUELVO2.js";
|
|
18
18
|
|
|
19
19
|
// ../mcp/dist/mcp/src/exploration-server.js
|
|
20
20
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
isWriteTool
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-WTLGBZBN.js";
|
|
5
5
|
import {
|
|
6
6
|
guardBoundary,
|
|
7
7
|
guardOutput,
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
requirePremiumWithAutoAuth,
|
|
14
14
|
validateAuth,
|
|
15
15
|
validateRequestSize
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-EWUELVO2.js";
|
|
17
17
|
|
|
18
18
|
// ../mcp/dist/mcp/src/integrations-server.js
|
|
19
19
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
mapErrorToMcp,
|
|
14
14
|
requirePremiumWithAutoAuth,
|
|
15
15
|
validateRequestSize
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-EWUELVO2.js";
|
|
17
17
|
|
|
18
18
|
// ../mcp/dist/mcp/src/output-server.js
|
|
19
19
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-DE7R7WKY.js";
|
|
5
5
|
import {
|
|
6
6
|
isWriteTool
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-WTLGBZBN.js";
|
|
8
8
|
import {
|
|
9
9
|
guardBoundary,
|
|
10
10
|
guardOutput,
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
updatePremortem,
|
|
28
28
|
validateAuth,
|
|
29
29
|
validateRequestSize
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-EWUELVO2.js";
|
|
31
31
|
|
|
32
32
|
// ../mcp/dist/mcp/src/premortem-server.js
|
|
33
33
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
@@ -49,6 +49,10 @@ function buildBrief(ctx) {
|
|
|
49
49
|
parts.push(`Target users: ${ctx.targetUser}`);
|
|
50
50
|
if (ctx.businessModel && !ctx.brief?.toLowerCase().includes(ctx.businessModel.toLowerCase().slice(0, 15)))
|
|
51
51
|
parts.push(`Business model: ${ctx.businessModel}`);
|
|
52
|
+
if (ctx.uxExperience && !ctx.brief?.toLowerCase().includes(ctx.uxExperience.toLowerCase().slice(0, 15)))
|
|
53
|
+
parts.push(`UX: ${ctx.uxExperience}`);
|
|
54
|
+
if (ctx.technicalStack && !ctx.brief?.toLowerCase().includes(ctx.technicalStack.toLowerCase().slice(0, 15)))
|
|
55
|
+
parts.push(`Stack: ${ctx.technicalStack}`);
|
|
52
56
|
return parts.join(". ").trim() || "No description provided.";
|
|
53
57
|
}
|
|
54
58
|
function buildReferenceClasses(competitors) {
|
|
@@ -238,7 +242,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
238
242
|
tools: [
|
|
239
243
|
{
|
|
240
244
|
name: "premortem_run",
|
|
241
|
-
description: "
|
|
245
|
+
description: "Start an async pre-mortem generation job (start+poll)",
|
|
242
246
|
inputSchema: {
|
|
243
247
|
type: "object",
|
|
244
248
|
properties: {
|
|
@@ -477,64 +481,25 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
477
481
|
}
|
|
478
482
|
switch (name) {
|
|
479
483
|
case "premortem_run": {
|
|
480
|
-
console.error(`[Premortem DEBUG] Starting premortem_run...`);
|
|
481
484
|
const { input, auth_token } = args;
|
|
482
|
-
console.error(`[Premortem DEBUG] Step 1: Authenticating...`);
|
|
483
485
|
const decoded = await requirePremiumWithAutoAuth(auth_token);
|
|
484
|
-
console.error(`[Premortem DEBUG] Step 1 done: UID=${decoded?.uid}`);
|
|
485
|
-
console.error(`[Premortem DEBUG] Step 2: Parsing input...`);
|
|
486
486
|
const parsedInput = RunInputSchema.parse(input);
|
|
487
|
-
console.error(`[Premortem DEBUG] Step 2 done: project=${parsedInput.project.name}`);
|
|
488
|
-
console.error(`[Premortem] Queuing analysis for: ${parsedInput.project.name}`);
|
|
489
|
-
const startTime = Date.now();
|
|
490
|
-
console.error(`[Premortem DEBUG] Step 4: Creating job document...`);
|
|
491
487
|
const { id: jobId } = await createPremortem({
|
|
492
488
|
status: "queued",
|
|
493
489
|
payload: parsedInput,
|
|
494
490
|
uid: decoded?.uid || null,
|
|
495
491
|
source: "mcp_sync"
|
|
496
492
|
});
|
|
497
|
-
console.error(`[Premortem DEBUG] Step 4 done: jobId=${jobId}`);
|
|
498
|
-
console.error(`[Premortem] Job queued: ${jobId}, polling for completion...`);
|
|
499
|
-
const maxWaitMs = 10 * 60 * 1e3;
|
|
500
|
-
const pollIntervalMs = 3e3;
|
|
501
|
-
let lastStage = "";
|
|
502
|
-
let kickedFallback = false;
|
|
503
|
-
while (Date.now() - startTime < maxWaitMs) {
|
|
504
|
-
await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
|
|
505
|
-
const data = await getPremortem(jobId) || {};
|
|
506
|
-
if (!kickedFallback && data.status === "queued" && Date.now() - startTime > 1e4) {
|
|
507
|
-
console.error(`[Premortem] Job still queued after 10s, kicking via Cloud Function...`);
|
|
508
|
-
kickedFallback = true;
|
|
509
|
-
cfPremortemKick(jobId).catch((e) => console.error(`[Premortem] Kick fallback error:`, e?.message));
|
|
510
|
-
}
|
|
511
|
-
const stage = data.stage_label || data.stage;
|
|
512
|
-
const progress = data.progress;
|
|
513
|
-
if (stage && stage !== lastStage) {
|
|
514
|
-
lastStage = stage;
|
|
515
|
-
const pct = progress ? ` (${Math.round(progress * 100)}%)` : "";
|
|
516
|
-
console.error(`[Premortem] ${stage}${pct}`);
|
|
517
|
-
}
|
|
518
|
-
if (data.status === "completed") {
|
|
519
|
-
const elapsed2 = ((Date.now() - startTime) / 1e3).toFixed(1);
|
|
520
|
-
console.error(`[Premortem] Complete in ${elapsed2}s`);
|
|
521
|
-
const result = data.result || {};
|
|
522
|
-
result._jobId = jobId;
|
|
523
|
-
return {
|
|
524
|
-
content: [{ type: "text", text: JSON.stringify(result) }]
|
|
525
|
-
};
|
|
526
|
-
}
|
|
527
|
-
if (data.status === "failed" || data.status === "error") {
|
|
528
|
-
throw new McpError(ErrorCode.InternalError, `Job failed: ${data.error || "Unknown error"}`);
|
|
529
|
-
}
|
|
530
|
-
}
|
|
531
|
-
const elapsed = ((Date.now() - startTime) / 1e3).toFixed(1);
|
|
532
|
-
console.error(`[Premortem] Timed out after ${elapsed}s, job still running`);
|
|
533
493
|
return {
|
|
534
494
|
content: [{ type: "text", text: JSON.stringify({
|
|
535
|
-
|
|
495
|
+
accepted: true,
|
|
496
|
+
status: "queued",
|
|
536
497
|
jobId,
|
|
537
|
-
message:
|
|
498
|
+
message: "Pre-mortem queued. Use premortem_status to poll progress.",
|
|
499
|
+
next_action: {
|
|
500
|
+
poll_tool: "premortem_status",
|
|
501
|
+
recommended_interval_ms: 3e3
|
|
502
|
+
}
|
|
538
503
|
}) }]
|
|
539
504
|
};
|
|
540
505
|
}
|
|
@@ -575,26 +540,26 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
575
540
|
};
|
|
576
541
|
}
|
|
577
542
|
case "premortem_kick": {
|
|
578
|
-
console.error(`[Premortem Kick] Starting kick for job...`);
|
|
579
543
|
const { jobId, auth_token } = args;
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
console.error(`[Premortem Kick] Calling Cloud Function for job ${jobId}...`);
|
|
544
|
+
await requirePremiumWithAutoAuth(auth_token);
|
|
545
|
+
let kickResult;
|
|
583
546
|
try {
|
|
584
|
-
|
|
585
|
-
console.error(`[Premortem Kick] Cloud Function returned:`, result);
|
|
586
|
-
return {
|
|
587
|
-
content: [{ type: "text", text: JSON.stringify({
|
|
588
|
-
kicked: result.kicked,
|
|
589
|
-
status: result.status,
|
|
590
|
-
jobId,
|
|
591
|
-
message: result.status === "completed" ? "\u2615 Full analysis complete! Use premortem_status to view results." : "Job processed. Use premortem_status to check results."
|
|
592
|
-
}) }]
|
|
593
|
-
};
|
|
547
|
+
kickResult = await cfPremortemKick(jobId);
|
|
594
548
|
} catch (e) {
|
|
595
|
-
|
|
596
|
-
throw new McpError(ErrorCode.InternalError, `Failed to process job: ${e?.message || "Unknown error"}`);
|
|
549
|
+
throw new McpError(ErrorCode.InternalError, `Failed to process job: ${String(e?.message || e || "Unknown error")}`);
|
|
597
550
|
}
|
|
551
|
+
return {
|
|
552
|
+
content: [{ type: "text", text: JSON.stringify({
|
|
553
|
+
kicked: Boolean(kickResult.kicked),
|
|
554
|
+
status: String(kickResult.status || "running"),
|
|
555
|
+
jobId,
|
|
556
|
+
message: "Kick requested. Use premortem_status to check progress.",
|
|
557
|
+
next_action: {
|
|
558
|
+
poll_tool: "premortem_status",
|
|
559
|
+
recommended_interval_ms: 3e3
|
|
560
|
+
}
|
|
561
|
+
}) }]
|
|
562
|
+
};
|
|
598
563
|
}
|
|
599
564
|
case "premortem_regen_assumptions": {
|
|
600
565
|
const { input, doc, auth_token } = args;
|