mycontext-cli 2.0.28 → 2.0.30

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 (69) hide show
  1. package/README.md +106 -14
  2. package/dist/cli.js +89 -99
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/generate-components.d.ts +10 -0
  5. package/dist/commands/generate-components.d.ts.map +1 -1
  6. package/dist/commands/generate-components.js +300 -3
  7. package/dist/commands/generate-components.js.map +1 -1
  8. package/dist/commands/generate-context-files.d.ts +9 -0
  9. package/dist/commands/generate-context-files.d.ts.map +1 -1
  10. package/dist/commands/generate-context-files.js +57 -0
  11. package/dist/commands/generate-context-files.js.map +1 -1
  12. package/dist/commands/generate.d.ts +5 -0
  13. package/dist/commands/generate.d.ts.map +1 -1
  14. package/dist/commands/generate.js +75 -1
  15. package/dist/commands/generate.js.map +1 -1
  16. package/dist/commands/init.d.ts +9 -0
  17. package/dist/commands/init.d.ts.map +1 -1
  18. package/dist/commands/init.js +223 -68
  19. package/dist/commands/init.js.map +1 -1
  20. package/dist/commands/preview-components.d.ts +12 -0
  21. package/dist/commands/preview-components.d.ts.map +1 -0
  22. package/dist/commands/preview-components.js +122 -0
  23. package/dist/commands/preview-components.js.map +1 -0
  24. package/dist/commands/refine-component.d.ts +43 -0
  25. package/dist/commands/refine-component.d.ts.map +1 -0
  26. package/dist/commands/refine-component.js +313 -0
  27. package/dist/commands/refine-component.js.map +1 -0
  28. package/dist/commands/review-context.d.ts +47 -0
  29. package/dist/commands/review-context.d.ts.map +1 -0
  30. package/dist/commands/review-context.js +335 -0
  31. package/dist/commands/review-context.js.map +1 -0
  32. package/dist/package.json +11 -2
  33. package/dist/services/ContextValidator.d.ts +99 -0
  34. package/dist/services/ContextValidator.d.ts.map +1 -0
  35. package/dist/services/ContextValidator.js +433 -0
  36. package/dist/services/ContextValidator.js.map +1 -0
  37. package/dist/services/MutationLogger.d.ts +54 -0
  38. package/dist/services/MutationLogger.d.ts.map +1 -0
  39. package/dist/services/MutationLogger.js +164 -0
  40. package/dist/services/MutationLogger.js.map +1 -0
  41. package/dist/services/RegressionRunner.d.ts +49 -0
  42. package/dist/services/RegressionRunner.d.ts.map +1 -0
  43. package/dist/services/RegressionRunner.js +285 -0
  44. package/dist/services/RegressionRunner.js.map +1 -0
  45. package/dist/services/TriggerLogger.d.ts +101 -0
  46. package/dist/services/TriggerLogger.d.ts.map +1 -0
  47. package/dist/services/TriggerLogger.js +263 -0
  48. package/dist/services/TriggerLogger.js.map +1 -0
  49. package/dist/templates/instantdb/db.template.ts +14 -0
  50. package/dist/templates/instantdb/home-client.template.tsx +127 -0
  51. package/dist/templates/instantdb/page.template.tsx +5 -0
  52. package/dist/templates/instantdb/perms.template.ts +9 -0
  53. package/dist/templates/instantdb/schema.template.ts +28 -0
  54. package/dist/templates/playbooks/instantdb-integration.md +851 -0
  55. package/dist/templates/playbooks/mpesa-integration.md +652 -0
  56. package/dist/templates/pm-integration-config.json +20 -0
  57. package/dist/templates/ui-spec-examples.md +318 -0
  58. package/dist/templates/ui-spec-templates.json +244 -0
  59. package/dist/utils/envExampleGenerator.d.ts.map +1 -1
  60. package/dist/utils/envExampleGenerator.js +9 -3
  61. package/dist/utils/envExampleGenerator.js.map +1 -1
  62. package/dist/utils/hybridAIClient.d.ts.map +1 -1
  63. package/dist/utils/hybridAIClient.js +21 -0
  64. package/dist/utils/hybridAIClient.js.map +1 -1
  65. package/dist/utils/openRouterClient.d.ts +10 -0
  66. package/dist/utils/openRouterClient.d.ts.map +1 -0
  67. package/dist/utils/openRouterClient.js +61 -0
  68. package/dist/utils/openRouterClient.js.map +1 -0
  69. package/package.json +11 -2
@@ -0,0 +1,335 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.ReviewContextCommand = void 0;
40
+ const chalk_1 = __importDefault(require("chalk"));
41
+ const prompts_1 = __importDefault(require("prompts"));
42
+ const fs = __importStar(require("fs-extra"));
43
+ const path_1 = __importDefault(require("path"));
44
+ const fileSystem_1 = require("../utils/fileSystem");
45
+ const ContextValidator_1 = require("../services/ContextValidator");
46
+ class ReviewContextCommand {
47
+ constructor() {
48
+ this.fs = new fileSystem_1.FileSystemManager();
49
+ this.contextValidator = new ContextValidator_1.ContextValidator();
50
+ }
51
+ async execute(options) {
52
+ console.log(chalk_1.default.blue("🔍 Reviewing context files and auto-generated features..."));
53
+ try {
54
+ const contextDir = ".mycontext";
55
+ // Check if auto-generated.json exists
56
+ const autoGeneratedPath = path_1.default.join(contextDir, "auto-generated.json");
57
+ if (!(await this.fs.exists(autoGeneratedPath))) {
58
+ console.log(chalk_1.default.yellow("⚠️ No auto-generated features found. Run 'mycontext generate:context' first."));
59
+ return;
60
+ }
61
+ // Load auto-generated data
62
+ const autoGeneratedData = JSON.parse(await this.fs.readFile(autoGeneratedPath));
63
+ const { features, gaps } = autoGeneratedData;
64
+ if (features.length === 0 && gaps.length === 0) {
65
+ console.log(chalk_1.default.green("✅ No features or gaps to review."));
66
+ return;
67
+ }
68
+ // Review critical gaps first
69
+ if (!options.skipGaps && gaps.length > 0) {
70
+ await this.reviewGaps(gaps, options);
71
+ }
72
+ // Review auto-generated features
73
+ if (features.length > 0) {
74
+ await this.reviewFeatures(features, options);
75
+ }
76
+ // Save approvals
77
+ await this.saveApprovals(contextDir, features, gaps);
78
+ console.log(chalk_1.default.green("✅ Context review completed!"));
79
+ }
80
+ catch (error) {
81
+ console.error(chalk_1.default.red("❌ Context review failed:"), error);
82
+ throw error;
83
+ }
84
+ }
85
+ /**
86
+ * Review critical gaps and get user input
87
+ */
88
+ async reviewGaps(gaps, options) {
89
+ const criticalGaps = gaps.filter((gap) => gap.category === "critical");
90
+ const importantGaps = gaps.filter((gap) => gap.category === "important");
91
+ const optionalGaps = gaps.filter((gap) => gap.category === "optional");
92
+ if (criticalGaps.length > 0) {
93
+ console.log(chalk_1.default.red("\n❌ Critical information missing:"));
94
+ await this.handleGaps(criticalGaps, "critical", options);
95
+ }
96
+ if (importantGaps.length > 0) {
97
+ console.log(chalk_1.default.yellow("\n⚠️ Important information missing:"));
98
+ await this.handleGaps(importantGaps, "important", options);
99
+ }
100
+ if (optionalGaps.length > 0) {
101
+ console.log(chalk_1.default.blue("\n💡 Optional improvements:"));
102
+ await this.handleGaps(optionalGaps, "optional", options);
103
+ }
104
+ }
105
+ /**
106
+ * Handle gaps of a specific category
107
+ */
108
+ async handleGaps(gaps, category, options) {
109
+ for (const gap of gaps) {
110
+ console.log(chalk_1.default.yellow(`\n${gap.question}`));
111
+ console.log(chalk_1.default.gray(` ${gap.reasoning}`));
112
+ if (gap.suggestedAnswers && gap.suggestedAnswers.length > 0) {
113
+ const response = await (0, prompts_1.default)({
114
+ type: "select",
115
+ name: "answer",
116
+ message: "Choose an answer:",
117
+ choices: gap.suggestedAnswers.map((answer, index) => ({
118
+ title: answer,
119
+ value: answer,
120
+ description: `Option ${String.fromCharCode(97 + index)}`,
121
+ })),
122
+ initial: 0,
123
+ });
124
+ if (response.answer) {
125
+ // Store the answer for later use
126
+ gap.userAnswer = response.answer;
127
+ }
128
+ }
129
+ else {
130
+ const response = await (0, prompts_1.default)({
131
+ type: "text",
132
+ name: "answer",
133
+ message: "Please provide the missing information:",
134
+ validate: (value) => value.length > 0 ? true : "Please provide an answer",
135
+ });
136
+ if (response.answer) {
137
+ gap.userAnswer = response.answer;
138
+ }
139
+ }
140
+ }
141
+ }
142
+ /**
143
+ * Review auto-generated features
144
+ */
145
+ async reviewFeatures(features, options) {
146
+ console.log(chalk_1.default.yellow("\n📋 Auto-generated Features Review"));
147
+ console.log(chalk_1.default.gray("Review each feature and decide whether to keep it:"));
148
+ for (const feature of features) {
149
+ console.log(chalk_1.default.blue(`\n${feature.feature}`));
150
+ console.log(chalk_1.default.gray(` Reasoning: ${feature.reasoning}`));
151
+ console.log(chalk_1.default.gray(` Confidence: ${feature.confidence}`));
152
+ console.log(chalk_1.default.gray(` Source: ${feature.contextSource}`));
153
+ if (options.autoApprove) {
154
+ feature.approved = true;
155
+ console.log(chalk_1.default.green(" ✅ Auto-approved"));
156
+ continue;
157
+ }
158
+ const response = await (0, prompts_1.default)({
159
+ type: "select",
160
+ name: "action",
161
+ message: "What would you like to do?",
162
+ choices: [
163
+ {
164
+ title: "Accept",
165
+ value: "accept",
166
+ description: "Keep this feature",
167
+ },
168
+ {
169
+ title: "Reject",
170
+ value: "reject",
171
+ description: "Remove this feature",
172
+ },
173
+ { title: "Edit", value: "edit", description: "Modify this feature" },
174
+ { title: "Skip", value: "skip", description: "Decide later" },
175
+ ],
176
+ initial: 0,
177
+ });
178
+ switch (response.action) {
179
+ case "accept":
180
+ feature.approved = true;
181
+ feature.modified = false;
182
+ console.log(chalk_1.default.green(" ✅ Accepted"));
183
+ break;
184
+ case "reject":
185
+ feature.approved = false;
186
+ feature.modified = false;
187
+ console.log(chalk_1.default.red(" ❌ Rejected"));
188
+ break;
189
+ case "edit":
190
+ await this.editFeature(feature);
191
+ break;
192
+ case "skip":
193
+ feature.approved = null;
194
+ console.log(chalk_1.default.yellow(" ⏭️ Skipped"));
195
+ break;
196
+ }
197
+ }
198
+ }
199
+ /**
200
+ * Edit a feature
201
+ */
202
+ async editFeature(feature) {
203
+ const response = await (0, prompts_1.default)({
204
+ type: "text",
205
+ name: "editedFeature",
206
+ message: "Edit the feature description:",
207
+ initial: feature.feature,
208
+ validate: (value) => value.length > 0 ? true : "Please provide a description",
209
+ });
210
+ if (response.editedFeature) {
211
+ feature.feature = response.editedFeature;
212
+ feature.approved = true;
213
+ feature.modified = true;
214
+ console.log(chalk_1.default.green(" ✏️ Feature updated"));
215
+ }
216
+ }
217
+ /**
218
+ * Save approvals to file
219
+ */
220
+ async saveApprovals(contextDir, features, gaps) {
221
+ const approvalsData = {
222
+ features: features.reduce((acc, feature) => {
223
+ acc[feature.id] = {
224
+ approved: feature.approved,
225
+ modified: feature.modified || false,
226
+ feature: feature.feature,
227
+ reasoning: feature.reasoning,
228
+ };
229
+ return acc;
230
+ }, {}),
231
+ gaps_addressed: gaps.reduce((acc, gap) => {
232
+ if (gap.userAnswer) {
233
+ acc[gap.id] = gap.userAnswer;
234
+ }
235
+ return acc;
236
+ }, {}),
237
+ timestamp: new Date().toISOString(),
238
+ version: "1.0",
239
+ };
240
+ await this.fs.writeFile(path_1.default.join(contextDir, "approvals.json"), JSON.stringify(approvalsData, null, 2));
241
+ // Update PRD with gap answers
242
+ await this.updatePRDWithAnswers(contextDir, gaps);
243
+ console.log(chalk_1.default.green(" 💾 Approvals saved to .mycontext/approvals.json"));
244
+ }
245
+ /**
246
+ * Update PRD with gap answers
247
+ */
248
+ async updatePRDWithAnswers(contextDir, gaps) {
249
+ const prdPath = path_1.default.join(contextDir, "01-prd.md");
250
+ if (!(await this.fs.exists(prdPath))) {
251
+ return; // No PRD to update
252
+ }
253
+ let prdContent = await this.fs.readFile(prdPath);
254
+ let hasUpdates = false;
255
+ for (const gap of gaps) {
256
+ if (gap.userAnswer) {
257
+ // Add answer to appropriate section based on gap ID
258
+ if (gap.id === "game-type") {
259
+ prdContent = this.updatePRDSection(prdContent, "## Game Mechanics", `- **Game Type**: ${gap.userAnswer}\n`);
260
+ hasUpdates = true;
261
+ }
262
+ else if (gap.id === "game-rules") {
263
+ prdContent = this.updatePRDSection(prdContent, "## Game Mechanics", `- **Core Rules**: ${gap.userAnswer}\n`);
264
+ hasUpdates = true;
265
+ }
266
+ else if (gap.id === "auth-method") {
267
+ prdContent = this.updatePRDSection(prdContent, "## Technical Requirements", `- **Authentication**: ${gap.userAnswer}\n`);
268
+ hasUpdates = true;
269
+ }
270
+ }
271
+ }
272
+ if (hasUpdates) {
273
+ await this.fs.writeFile(prdPath, prdContent);
274
+ console.log(chalk_1.default.green(" 📝 PRD updated with gap answers"));
275
+ }
276
+ }
277
+ /**
278
+ * Update a section in PRD content
279
+ */
280
+ updatePRDSection(content, sectionHeader, newContent) {
281
+ const lines = content.split("\n");
282
+ const sectionIndex = lines.findIndex((line) => line.trim() === sectionHeader);
283
+ if (sectionIndex === -1) {
284
+ // Section doesn't exist, add it at the end
285
+ return content + `\n\n${sectionHeader}\n${newContent}`;
286
+ }
287
+ // Find the end of the section (next ## or end of file)
288
+ let endIndex = sectionIndex + 1;
289
+ while (endIndex < lines.length && !lines[endIndex]?.startsWith("##")) {
290
+ endIndex++;
291
+ }
292
+ // Insert the new content before the end of the section
293
+ lines.splice(endIndex, 0, newContent);
294
+ return lines.join("\n");
295
+ }
296
+ /**
297
+ * Get approval status for a feature
298
+ */
299
+ static async getFeatureApproval(featureId) {
300
+ try {
301
+ const approvalsPath = ".mycontext/approvals.json";
302
+ if (!(await fs.pathExists(approvalsPath))) {
303
+ return null;
304
+ }
305
+ const approvalsData = JSON.parse(await fs.readFile(approvalsPath, "utf8"));
306
+ const feature = approvalsData.features[featureId];
307
+ return feature ? feature.approved : null;
308
+ }
309
+ catch (error) {
310
+ return null;
311
+ }
312
+ }
313
+ /**
314
+ * Check if all critical gaps are addressed
315
+ */
316
+ static async areCriticalGapsAddressed() {
317
+ try {
318
+ const autoGeneratedPath = ".mycontext/auto-generated.json";
319
+ const approvalsPath = ".mycontext/approvals.json";
320
+ if (!(await fs.pathExists(autoGeneratedPath)) ||
321
+ !(await fs.pathExists(approvalsPath))) {
322
+ return false;
323
+ }
324
+ const autoGeneratedData = JSON.parse(await fs.readFile(autoGeneratedPath, "utf8"));
325
+ const approvalsData = JSON.parse(await fs.readFile(approvalsPath, "utf8"));
326
+ const criticalGaps = autoGeneratedData.gaps.filter((gap) => gap.category === "critical");
327
+ return criticalGaps.every((gap) => approvalsData.gaps_addressed[gap.id]);
328
+ }
329
+ catch (error) {
330
+ return false;
331
+ }
332
+ }
333
+ }
334
+ exports.ReviewContextCommand = ReviewContextCommand;
335
+ //# sourceMappingURL=review-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-context.js","sourceRoot":"","sources":["../../src/commands/review-context.ts"],"names":[],"mappings":"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"}
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mycontext-cli",
3
- "version": "2.0.28",
3
+ "version": "2.0.30",
4
4
  "description": "Component-first visual builder with zero-error guarantees. Generate and validate React/Next.js components one at a time, preview them visually, then scale to complete applications using Claude Agent SDK.",
5
5
  "main": "dist/cli.js",
6
6
  "bin": {
@@ -12,7 +12,7 @@
12
12
  "build:clean": "rm -rf dist && ([ \"$npm_config_loglevel\" = \"silent\" ] || echo '🧹 Cleaned build directory')",
13
13
  "build:compile": "([ \"$npm_config_loglevel\" = \"silent\" ] || echo '🔨 Compiling TypeScript...') && tsc --noEmitOnError false",
14
14
  "build:alias": "([ \"$npm_config_loglevel\" = \"silent\" ] || echo '🔗 Resolving path aliases...') && tsc-alias",
15
- "build:copy": "([ \"$npm_config_loglevel\" = \"silent\" ] || echo '📋 Copying config files...') && cp -r src/config dist/ && cp package.json dist/ && ([ \"$npm_config_loglevel\" = \"silent\" ] || echo '✅ Build complete')",
15
+ "build:copy": "([ \"$npm_config_loglevel\" = \"silent\" ] || echo '📋 Copying config files...') && cp -r src/config dist/ && cp -r src/templates dist/ && cp package.json dist/ && ([ \"$npm_config_loglevel\" = \"silent\" ] || echo '✅ Build complete')",
16
16
  "dev": "ts-node src/cli.ts",
17
17
  "start": "node dist/cli.js",
18
18
  "watch": "tsc --watch --pretty",
@@ -49,20 +49,28 @@
49
49
  },
50
50
  "dependencies": {
51
51
  "@anthropic-ai/claude-agent-sdk": "^0.1.1",
52
+ "@huggingface/inference": "^4.11.1",
53
+ "@types/figlet": "^1.7.0",
52
54
  "axios": "^1.6.0",
53
55
  "chalk": "^5.3.0",
54
56
  "commander": "^11.1.0",
57
+ "diff": "^8.0.2",
55
58
  "dotenv": "^17.2.3",
56
59
  "dotenv-expand": "^12.0.3",
60
+ "figlet": "^1.9.3",
57
61
  "fs-extra": "^11.1.1",
58
62
  "fuse.js": "^7.1.0",
59
63
  "glob": "^10.3.10",
64
+ "gradient-string": "^3.0.0",
60
65
  "inquirer": "^9.2.12",
66
+ "mdast-util-to-markdown": "^2.1.2",
61
67
  "node-fetch": "^2.7.0",
62
68
  "openai": "^6.2.0",
63
69
  "ora": "^7.0.1",
64
70
  "prompts": "^2.4.2",
71
+ "remark-parse": "^11.0.0",
65
72
  "sonner": "^2.0.7",
73
+ "unified": "^11.0.5",
66
74
  "uuid": "^9.0.1",
67
75
  "zod": "^3.25.76"
68
76
  },
@@ -79,6 +87,7 @@
79
87
  "ts-jest": "^29.4.0",
80
88
  "ts-node": "^10.9.0",
81
89
  "tsc-alias": "^1.8.16",
90
+ "tsx": "^4.20.6",
82
91
  "typescript": "^5.0.0"
83
92
  },
84
93
  "engines": {
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Context Validator Service
3
+ *
4
+ * Detects gaps in context files and tracks auto-generated features
5
+ * to ensure user approval before proceeding with generation.
6
+ */
7
+ export interface ContextGap {
8
+ id: string;
9
+ category: "critical" | "important" | "optional";
10
+ question: string;
11
+ context: string;
12
+ suggestedAnswers?: string[];
13
+ reasoning: string;
14
+ userAnswer?: string;
15
+ }
16
+ export interface AutoGeneratedFeature {
17
+ id: string;
18
+ feature: string;
19
+ reasoning: string;
20
+ confidence: "high" | "medium" | "low";
21
+ contextSource: string;
22
+ approved?: boolean | null;
23
+ modified?: boolean;
24
+ }
25
+ export interface ContextValidationResult {
26
+ gaps: ContextGap[];
27
+ autoGeneratedFeatures: AutoGeneratedFeature[];
28
+ hasCriticalGaps: boolean;
29
+ canProceed: boolean;
30
+ }
31
+ export declare class ContextValidator {
32
+ private gaps;
33
+ private autoGeneratedFeatures;
34
+ /**
35
+ * Validate context files for completeness and detect gaps
36
+ */
37
+ validateContext(contextFiles: {
38
+ prd?: string;
39
+ brand?: string;
40
+ techStack?: string;
41
+ description?: string;
42
+ }): Promise<ContextValidationResult>;
43
+ /**
44
+ * Deduplicate gaps by ID
45
+ */
46
+ private deduplicateGaps;
47
+ /**
48
+ * Deduplicate features by ID
49
+ */
50
+ private deduplicateFeatures;
51
+ /**
52
+ * Analyze PRD for missing critical information
53
+ */
54
+ private analyzePRDGaps;
55
+ /**
56
+ * Analyze initial description for gaps
57
+ */
58
+ private analyzeDescriptionGaps;
59
+ /**
60
+ * Analyze tech stack for gaps
61
+ */
62
+ private analyzeTechStackGaps;
63
+ /**
64
+ * Check for game-specific gaps
65
+ */
66
+ private checkGameGaps;
67
+ /**
68
+ * Helper methods for text analysis
69
+ */
70
+ private containsGameKeywords;
71
+ private mentionsUsers;
72
+ private mentionsAuth;
73
+ private mentionsDataPersistence;
74
+ private mentionsDatabase;
75
+ private mentionsPayments;
76
+ private isVagueGameDescription;
77
+ private isVagueAppDescription;
78
+ private mentionsTargetAudience;
79
+ private mentionsMultiplayer;
80
+ private mentionsDeployment;
81
+ private mentionsEnvironmentConfig;
82
+ /**
83
+ * Get gaps by category
84
+ */
85
+ getGapsByCategory(category: "critical" | "important" | "optional"): ContextGap[];
86
+ /**
87
+ * Get auto-generated features by confidence
88
+ */
89
+ getFeaturesByConfidence(confidence: "high" | "medium" | "low"): AutoGeneratedFeature[];
90
+ /**
91
+ * Add auto-generated feature
92
+ */
93
+ addAutoGeneratedFeature(feature: Omit<AutoGeneratedFeature, "id">): void;
94
+ /**
95
+ * Generate unique ID for feature
96
+ */
97
+ private generateFeatureId;
98
+ }
99
+ //# sourceMappingURL=ContextValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextValidator.d.ts","sourceRoot":"","sources":["../../src/services/ContextValidator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,UAAU,GAAG,WAAW,GAAG,UAAU,CAAC;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,qBAAqB,EAAE,oBAAoB,EAAE,CAAC;IAC9C,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,IAAI,CAAoB;IAChC,OAAO,CAAC,qBAAqB,CAA8B;IAE3D;;OAEG;IACG,eAAe,CAAC,YAAY,EAAE;QAClC,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAwCpC;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAW3B;;OAEG;IACH,OAAO,CAAC,cAAc;IAiEtB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkD9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAmC5B;;OAEG;IACH,OAAO,CAAC,aAAa;IAuCrB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,uBAAuB;IAc/B,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,sBAAsB;IAc9B,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,yBAAyB;IAYjC;;OAEG;IACH,iBAAiB,CACf,QAAQ,EAAE,UAAU,GAAG,WAAW,GAAG,UAAU,GAC9C,UAAU,EAAE;IAIf;;OAEG;IACH,uBAAuB,CACrB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,GACpC,oBAAoB,EAAE;IAMzB;;OAEG;IACH,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,GAAG,IAAI;IAQxE;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAO1B"}