@vibekiln/cutline-mcp-cli 0.13.0 → 0.15.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.
@@ -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,12 @@ import {
38
43
  getAllNodesLight,
39
44
  getBindingsForEntity,
40
45
  getChat,
46
+ getDiscoverabilityAgenda,
47
+ getEngagement,
41
48
  getEntitiesWithEmbeddings,
42
49
  getEntityById,
43
50
  getExplorationSession,
51
+ getGeneratedTestArtifactBundle,
44
52
  getGraphMetadata,
45
53
  getIdeaReport,
46
54
  getNodesByCategories,
@@ -50,23 +58,35 @@ import {
50
58
  getPersona,
51
59
  getPodcastIntroductions,
52
60
  getPremortem,
61
+ getProductAgenda,
53
62
  getPublicSiteUrlForCurrentAuth,
54
63
  getReadinessReport,
55
64
  getScanRateLimit,
65
+ getSlopburnRun,
56
66
  getTemplate,
57
67
  getTestCasesForEntity,
58
68
  getTestCasesForProduct,
69
+ getVerificationCycleJob,
70
+ getVerificationTestExecutionJob,
59
71
  hasConstraints,
72
+ ingestVerificationIntent,
73
+ listEngagements,
60
74
  listExplorationSessions,
61
75
  listPersonas,
62
76
  listPremortems,
77
+ listSlopburnRuns,
63
78
  listTemplates,
64
79
  recordScoreSnapshot,
80
+ runVerificationCycle,
65
81
  saveChat,
66
82
  saveReadinessReport,
67
83
  saveScanReport,
68
84
  searchNodesByKeywords,
85
+ selectEngagementProduct,
86
+ submitVerificationTestExecution,
87
+ summarizeEngagement,
69
88
  updateChat,
89
+ updateEngagement,
70
90
  updateEntityEmbedding,
71
91
  updateExplorationSession,
72
92
  updateGraphMetadata,
@@ -77,13 +97,16 @@ import {
77
97
  upsertBindings,
78
98
  upsertEdges,
79
99
  upsertEntities,
80
- upsertNodes
81
- } from "./chunk-RUCYK3TR.js";
100
+ upsertNodes,
101
+ upsertSlopburnRun
102
+ } from "./chunk-FHWY2TYO.js";
82
103
  export {
104
+ __dataClientInternals,
83
105
  addEdges,
84
106
  addEntity,
85
107
  addNodes,
86
108
  addTestCases,
109
+ attachDeepDiveToEngagement,
87
110
  cfApplyEdits,
88
111
  cfBuildAndUploadPdf,
89
112
  cfChatWithPersona,
@@ -102,15 +125,18 @@ export {
102
125
  cfPremortemKick,
103
126
  cfPremortemRun,
104
127
  cfPremortemStart,
128
+ cfPremortemStatus,
105
129
  cfRegenAssumptions,
106
130
  cfRegenExperiments,
107
131
  cfSaveWikiMarkdown,
132
+ createEngagement,
108
133
  createExplorationSession,
109
134
  createPremortem,
110
135
  createTemplate,
111
136
  deleteAllNodes,
112
137
  deleteBinding,
113
138
  deleteGraphData,
139
+ enqueueVerificationCycleJob,
114
140
  generateReadinessReportViaProxy,
115
141
  getAllBindings,
116
142
  getAllEdges,
@@ -119,9 +145,12 @@ export {
119
145
  getAllNodesLight,
120
146
  getBindingsForEntity,
121
147
  getChat,
148
+ getDiscoverabilityAgenda,
149
+ getEngagement,
122
150
  getEntitiesWithEmbeddings,
123
151
  getEntityById,
124
152
  getExplorationSession,
153
+ getGeneratedTestArtifactBundle,
125
154
  getGraphMetadata,
126
155
  getIdeaReport,
127
156
  getNodesByCategories,
@@ -131,23 +160,35 @@ export {
131
160
  getPersona,
132
161
  getPodcastIntroductions,
133
162
  getPremortem,
163
+ getProductAgenda,
134
164
  getPublicSiteUrlForCurrentAuth,
135
165
  getReadinessReport,
136
166
  getScanRateLimit,
167
+ getSlopburnRun,
137
168
  getTemplate,
138
169
  getTestCasesForEntity,
139
170
  getTestCasesForProduct,
171
+ getVerificationCycleJob,
172
+ getVerificationTestExecutionJob,
140
173
  hasConstraints,
174
+ ingestVerificationIntent,
175
+ listEngagements,
141
176
  listExplorationSessions,
142
177
  listPersonas,
143
178
  listPremortems,
179
+ listSlopburnRuns,
144
180
  listTemplates,
145
181
  recordScoreSnapshot,
182
+ runVerificationCycle,
146
183
  saveChat,
147
184
  saveReadinessReport,
148
185
  saveScanReport,
149
186
  searchNodesByKeywords,
187
+ selectEngagementProduct,
188
+ submitVerificationTestExecution,
189
+ summarizeEngagement,
150
190
  updateChat,
191
+ updateEngagement,
151
192
  updateEntityEmbedding,
152
193
  updateExplorationSession,
153
194
  updateGraphMetadata,
@@ -158,5 +199,6 @@ export {
158
199
  upsertBindings,
159
200
  upsertEdges,
160
201
  upsertEntities,
161
- upsertNodes
202
+ upsertNodes,
203
+ upsertSlopburnRun
162
204
  };
@@ -14,7 +14,7 @@ import {
14
14
  requirePremiumWithAutoAuth,
15
15
  updateExplorationSession,
16
16
  validateRequestSize
17
- } from "./chunk-RUCYK3TR.js";
17
+ } from "./chunk-FHWY2TYO.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-KMUSQOTJ.js";
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-RUCYK3TR.js";
16
+ } from "./chunk-FHWY2TYO.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-RUCYK3TR.js";
16
+ } from "./chunk-FHWY2TYO.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-KMUSQOTJ.js";
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-RUCYK3TR.js";
30
+ } from "./chunk-FHWY2TYO.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: "Run a synchronous pre-mortem generation",
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
- status: "running",
495
+ accepted: true,
496
+ status: "queued",
536
497
  jobId,
537
- message: `Job is still running after ${elapsed}s. Use premortem_status to check progress.`
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
- const decoded = await requirePremiumWithAutoAuth(auth_token);
581
- console.error(`[Premortem Kick] Authenticated: UID=${decoded?.uid}`);
582
- console.error(`[Premortem Kick] Calling Cloud Function for job ${jobId}...`);
544
+ await requirePremiumWithAutoAuth(auth_token);
545
+ let kickResult;
583
546
  try {
584
- const result = await cfPremortemKick(jobId);
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
- console.error(`[Premortem Kick] Cloud Function error:`, e?.message || e);
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;