@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.
@@ -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
- } from "./chunk-RUCYK3TR.js";
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-RUCYK3TR.js";
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-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-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-RUCYK3TR.js";
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-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-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: "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;