@visualprd/mcp-server 1.1.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.
Files changed (58) hide show
  1. package/README.md +396 -0
  2. package/dist/cli.d.ts +9 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +27 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/index.d.ts +20 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +243 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/intelligence/context-optimizer.d.ts +93 -0
  11. package/dist/intelligence/context-optimizer.d.ts.map +1 -0
  12. package/dist/intelligence/context-optimizer.js +481 -0
  13. package/dist/intelligence/context-optimizer.js.map +1 -0
  14. package/dist/intelligence/error-analyzer.d.ts +49 -0
  15. package/dist/intelligence/error-analyzer.d.ts.map +1 -0
  16. package/dist/intelligence/error-analyzer.js +765 -0
  17. package/dist/intelligence/error-analyzer.js.map +1 -0
  18. package/dist/intelligence/gap-filler.d.ts +56 -0
  19. package/dist/intelligence/gap-filler.d.ts.map +1 -0
  20. package/dist/intelligence/gap-filler.js +410 -0
  21. package/dist/intelligence/gap-filler.js.map +1 -0
  22. package/dist/intelligence/guidance-generator.d.ts +43 -0
  23. package/dist/intelligence/guidance-generator.d.ts.map +1 -0
  24. package/dist/intelligence/guidance-generator.js +314 -0
  25. package/dist/intelligence/guidance-generator.js.map +1 -0
  26. package/dist/intelligence/index.d.ts +132 -0
  27. package/dist/intelligence/index.d.ts.map +1 -0
  28. package/dist/intelligence/index.js +683 -0
  29. package/dist/intelligence/index.js.map +1 -0
  30. package/dist/server-http.d.ts +9 -0
  31. package/dist/server-http.d.ts.map +1 -0
  32. package/dist/server-http.js +141 -0
  33. package/dist/server-http.js.map +1 -0
  34. package/dist/services/api-key-service.d.ts +68 -0
  35. package/dist/services/api-key-service.d.ts.map +1 -0
  36. package/dist/services/api-key-service.js +298 -0
  37. package/dist/services/api-key-service.js.map +1 -0
  38. package/dist/services/llm-client.d.ts +66 -0
  39. package/dist/services/llm-client.d.ts.map +1 -0
  40. package/dist/services/llm-client.js +141 -0
  41. package/dist/services/llm-client.js.map +1 -0
  42. package/dist/services/model-registry.d.ts +135 -0
  43. package/dist/services/model-registry.d.ts.map +1 -0
  44. package/dist/services/model-registry.js +276 -0
  45. package/dist/services/model-registry.js.map +1 -0
  46. package/dist/services/visualprd-client.d.ts +191 -0
  47. package/dist/services/visualprd-client.d.ts.map +1 -0
  48. package/dist/services/visualprd-client.js +805 -0
  49. package/dist/services/visualprd-client.js.map +1 -0
  50. package/dist/tools/index.d.ts +803 -0
  51. package/dist/tools/index.d.ts.map +1 -0
  52. package/dist/tools/index.js +570 -0
  53. package/dist/tools/index.js.map +1 -0
  54. package/dist/types/index.d.ts +497 -0
  55. package/dist/types/index.d.ts.map +1 -0
  56. package/dist/types/index.js +8 -0
  57. package/dist/types/index.js.map +1 -0
  58. package/package.json +48 -0
@@ -0,0 +1,191 @@
1
+ /**
2
+ * VisualPRD API Client
3
+ *
4
+ * Connects to VisualPRD's Firestore backend to fetch project data,
5
+ * update build prompt status, and manage dynamic steps.
6
+ */
7
+ import { ProjectConfig, ProjectData, BuildPrompt, PageEntity, SchemaEntity, EndpointEntity, TechStackEntity, DesignSystem, MCPSession, BuildCategory, BuildInstructionV2, BuildProgressV2 } from '../types/index.js';
8
+ export declare class VisualPRDClient {
9
+ private db;
10
+ private config;
11
+ private projectDataCache;
12
+ private cacheTimestamp;
13
+ private readonly CACHE_TTL_MS;
14
+ constructor(config: ProjectConfig);
15
+ /**
16
+ * Load full project data including all entities
17
+ */
18
+ loadProjectData(forceRefresh?: boolean): Promise<ProjectData>;
19
+ private loadPages;
20
+ private loadSchemas;
21
+ private loadEndpoints;
22
+ private loadTechStack;
23
+ private loadBuildPrompts;
24
+ /**
25
+ * Load build prompts from v9-mega format (category documents with instructions array)
26
+ */
27
+ private loadBuildPromptsV9Mega;
28
+ private detectVersion;
29
+ private extractDesignSystem;
30
+ /**
31
+ * Get the next incomplete build prompt with all dependencies met
32
+ */
33
+ getNextBuildPrompt(): Promise<BuildPrompt | null>;
34
+ /**
35
+ * Mark a build prompt as complete
36
+ */
37
+ markPromptComplete(promptId: string, completionData: {
38
+ completionNotes?: string;
39
+ filesCreated?: string[];
40
+ testResults?: {
41
+ passed: number;
42
+ failed: number;
43
+ };
44
+ }): Promise<boolean>;
45
+ /**
46
+ * Uncheck/revert a build prompt
47
+ */
48
+ uncheckPrompt(promptId: string): Promise<boolean>;
49
+ /**
50
+ * Inject a new dynamic build prompt
51
+ */
52
+ injectBuildPrompt(insertAfterPromptId: string, newPrompt: {
53
+ title: string;
54
+ category: BuildCategory;
55
+ instruction: string;
56
+ reason: string;
57
+ relatedDocuments?: {
58
+ pages?: string[];
59
+ schemas?: string[];
60
+ endpoints?: string[];
61
+ techStack?: string[];
62
+ };
63
+ estimatedMinutes?: number;
64
+ dependsOn?: string[];
65
+ }): Promise<BuildPrompt | null>;
66
+ /**
67
+ * Get a specific page by ID or name
68
+ */
69
+ getPage(identifier: string): Promise<PageEntity | null>;
70
+ /**
71
+ * Get a specific schema by ID or collection name
72
+ */
73
+ getSchema(identifier: string): Promise<SchemaEntity | null>;
74
+ /**
75
+ * Get a specific endpoint by ID or name
76
+ */
77
+ getEndpoint(identifier: string): Promise<EndpointEntity | null>;
78
+ /**
79
+ * Get a specific tech stack item by ID or name
80
+ */
81
+ getTechStackItem(identifier: string): Promise<TechStackEntity | null>;
82
+ /**
83
+ * Get multiple entities by their references
84
+ */
85
+ resolveEntityReferences(refs: {
86
+ pages?: string[];
87
+ schemas?: string[];
88
+ endpoints?: string[];
89
+ techStack?: string[];
90
+ }): Promise<{
91
+ pages: PageEntity[];
92
+ schemas: SchemaEntity[];
93
+ endpoints: EndpointEntity[];
94
+ techStack: TechStackEntity[];
95
+ }>;
96
+ /**
97
+ * Create or update MCP session
98
+ */
99
+ updateSession(sessionId: string, data: Partial<MCPSession>): Promise<void>;
100
+ /**
101
+ * Log a tool call for analytics
102
+ */
103
+ logToolCall(sessionId: string, toolName: string, request: any, response: any, durationMs: number, intelligenceUsed: string): Promise<void>;
104
+ /**
105
+ * Log an error for debugging
106
+ */
107
+ logError(sessionId: string, promptId: string, error: {
108
+ errorType: string;
109
+ errorMessage: string;
110
+ stackTrace?: string;
111
+ context?: string;
112
+ }, diagnosis: any): Promise<void>;
113
+ private normalize;
114
+ private truncateForStorage;
115
+ /**
116
+ * Get build progress statistics
117
+ */
118
+ getBuildProgress(): Promise<{
119
+ totalSteps: number;
120
+ completedSteps: number;
121
+ currentStep: number;
122
+ percentComplete: number;
123
+ estimatedTimeRemaining: number;
124
+ }>;
125
+ /**
126
+ * Get the design system
127
+ */
128
+ getDesignSystem(): Promise<DesignSystem | undefined>;
129
+ /**
130
+ * Clear cache (force refresh on next load)
131
+ */
132
+ clearCache(): void;
133
+ /**
134
+ * Get next incomplete build instruction with V2 format (structured testCriteria)
135
+ * For v9-mega projects only
136
+ */
137
+ getNextBuildInstructionV2(): Promise<BuildInstructionV2 | null>;
138
+ /**
139
+ * Convert BuildPrompt to BuildInstructionV2 format
140
+ */
141
+ private promptToInstructionV2;
142
+ /**
143
+ * Normalize test criteria to V2 format
144
+ * Handles both string[] (old format) and TestCriterionV2[] (new format)
145
+ */
146
+ private normalizeTestCriteria;
147
+ /**
148
+ * Mark an instruction as complete in v9-mega format
149
+ * Updates the instruction within its category document
150
+ */
151
+ markInstructionCompleteV2(promptId: string, completionData: {
152
+ completionNotes?: string;
153
+ filesCreated?: string[];
154
+ validationSummary?: string;
155
+ }): Promise<boolean>;
156
+ /**
157
+ * Flag an instruction for human review (after max retry attempts)
158
+ */
159
+ flagInstructionForReview(promptId: string, reason: string, validationHistory: Array<{
160
+ attempt: number;
161
+ verdict: string;
162
+ message: string;
163
+ }>): Promise<boolean>;
164
+ /**
165
+ * Get V2 build progress with flagged counts
166
+ */
167
+ getBuildProgressV2(): Promise<BuildProgressV2>;
168
+ /**
169
+ * Log a V2 validation event for analytics
170
+ */
171
+ logValidationEvent(sessionId: string, promptId: string, event: {
172
+ type: 'submission' | 'validation' | 'retry' | 'flagged' | 'approved';
173
+ attempt?: number;
174
+ verdict?: string;
175
+ summary?: string;
176
+ criteriaResults?: Array<{
177
+ criterion: string;
178
+ status: string;
179
+ reason: string;
180
+ }>;
181
+ }): Promise<void>;
182
+ /**
183
+ * Get user's BYOK configuration if available
184
+ */
185
+ getUserBYOKConfig(userId: string): Promise<{
186
+ hasCustomKey: boolean;
187
+ encryptedApiKey?: string;
188
+ preferredModel?: string;
189
+ } | null>;
190
+ }
191
+ //# sourceMappingURL=visualprd-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visualprd-client.d.ts","sourceRoot":"","sources":["../../src/services/visualprd-client.ts"],"names":[],"mappings":"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"}