mycontext-cli 4.2.6 → 4.2.8
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 +531 -144
- package/dist/README.md +531 -144
- package/dist/cli.js +14 -5
- package/dist/cli.js.map +1 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +19 -47
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/init-interactive.d.ts +147 -0
- package/dist/commands/init-interactive.d.ts.map +1 -0
- package/dist/commands/init-interactive.js +917 -0
- package/dist/commands/init-interactive.js.map +1 -0
- package/dist/config/shadcn-catalog.json +93 -0
- package/dist/core/brain/BrainClient.d.ts +1 -1
- package/dist/core/brain/BrainClient.d.ts.map +1 -1
- package/dist/core/brain/BrainClient.js +5 -5
- package/dist/core/brain/BrainClient.js.map +1 -1
- package/dist/doctor/DoctorEngine.d.ts.map +1 -1
- package/dist/doctor/DoctorEngine.js +21 -11
- package/dist/doctor/DoctorEngine.js.map +1 -1
- package/dist/doctor/rules/dead-code-rules.d.ts.map +1 -1
- package/dist/doctor/rules/dead-code-rules.js +33 -0
- package/dist/doctor/rules/dead-code-rules.js.map +1 -1
- package/dist/doctor/rules/index.d.ts +3 -1
- package/dist/doctor/rules/index.d.ts.map +1 -1
- package/dist/doctor/rules/index.js +7 -1
- package/dist/doctor/rules/index.js.map +1 -1
- package/dist/doctor/rules/instantdb-rules.d.ts +3 -0
- package/dist/doctor/rules/instantdb-rules.d.ts.map +1 -0
- package/dist/doctor/rules/instantdb-rules.js +544 -0
- package/dist/doctor/rules/instantdb-rules.js.map +1 -0
- package/dist/doctor/rules/nextjs-rules.d.ts.map +1 -1
- package/dist/doctor/rules/nextjs-rules.js +53 -3
- package/dist/doctor/rules/nextjs-rules.js.map +1 -1
- package/dist/doctor/rules/typescript-rules.d.ts +3 -0
- package/dist/doctor/rules/typescript-rules.d.ts.map +1 -0
- package/dist/doctor/rules/typescript-rules.js +177 -0
- package/dist/doctor/rules/typescript-rules.js.map +1 -0
- package/dist/package.json +4 -2
- package/dist/services/ComponentInferenceEngine.d.ts +66 -0
- package/dist/services/ComponentInferenceEngine.d.ts.map +1 -0
- package/dist/services/ComponentInferenceEngine.js +302 -0
- package/dist/services/ComponentInferenceEngine.js.map +1 -0
- package/dist/services/ComponentRegistry.d.ts +61 -0
- package/dist/services/ComponentRegistry.d.ts.map +1 -0
- package/dist/services/ComponentRegistry.js +128 -0
- package/dist/services/ComponentRegistry.js.map +1 -0
- package/dist/services/InferenceEngine.d.ts +41 -0
- package/dist/services/InferenceEngine.d.ts.map +1 -0
- package/dist/services/InferenceEngine.js +307 -0
- package/dist/services/InferenceEngine.js.map +1 -0
- package/dist/services/Planner.d.ts +77 -0
- package/dist/services/Planner.d.ts.map +1 -0
- package/dist/services/Planner.js +828 -0
- package/dist/services/Planner.js.map +1 -0
- package/dist/services/ProjectScanner.d.ts.map +1 -1
- package/dist/services/ProjectScanner.js +15 -1
- package/dist/services/ProjectScanner.js.map +1 -1
- package/dist/services/ScaffoldEngine.d.ts +87 -0
- package/dist/services/ScaffoldEngine.d.ts.map +1 -0
- package/dist/services/ScaffoldEngine.js +409 -0
- package/dist/services/ScaffoldEngine.js.map +1 -0
- package/dist/services/ScaffoldPreview.d.ts +62 -0
- package/dist/services/ScaffoldPreview.d.ts.map +1 -0
- package/dist/services/ScaffoldPreview.js +292 -0
- package/dist/services/ScaffoldPreview.js.map +1 -0
- package/dist/services/TemplateEngine.d.ts +136 -0
- package/dist/services/TemplateEngine.d.ts.map +1 -0
- package/dist/services/TemplateEngine.js +483 -0
- package/dist/services/TemplateEngine.js.map +1 -0
- package/dist/services/TemplateHelpers.d.ts +9 -0
- package/dist/services/TemplateHelpers.d.ts.map +1 -0
- package/dist/services/TemplateHelpers.js +212 -0
- package/dist/services/TemplateHelpers.js.map +1 -0
- package/dist/templates/actions/auth-actions.ts.hbs +140 -0
- package/dist/templates/actions/crud-actions.ts.hbs +113 -0
- package/dist/templates/components/auth/login-form.tsx.hbs +67 -0
- package/dist/templates/components/auth/login-skeleton.tsx.hbs +24 -0
- package/dist/templates/components/auth/register-form.tsx.hbs +116 -0
- package/dist/templates/components/crud/entity-card.tsx.hbs +71 -0
- package/dist/templates/components/crud/entity-form.tsx.hbs +158 -0
- package/dist/templates/components/crud/entity-skeleton.tsx.hbs +90 -0
- package/dist/templates/components/crud/entity-table.tsx.hbs +129 -0
- package/dist/templates/components/ui/button.tsx.hbs +53 -0
- package/dist/templates/components/ui/card.tsx.hbs +68 -0
- package/dist/templates/components/ui/input.tsx.hbs +33 -0
- package/dist/templates/components/ui/label.tsx.hbs +20 -0
- package/dist/templates/components/ui/skeleton.tsx.hbs +15 -0
- package/dist/templates/components/ui/theme-provider.tsx.hbs +66 -0
- package/dist/templates/components/ui/theme-toggle.tsx.hbs +30 -0
- package/dist/templates/config/app.css.hbs +150 -0
- package/dist/templates/layouts/dashboard-layout.tsx.hbs +69 -0
- package/dist/templates/layouts/error.tsx.hbs +51 -0
- package/dist/templates/layouts/loading.tsx.hbs +22 -0
- package/dist/templates/layouts/not-found.tsx.hbs +24 -0
- package/dist/templates/layouts/root-layout.tsx.hbs +40 -0
- package/dist/templates/lib/instant.ts.hbs +19 -0
- package/dist/templates/lib/utils.ts.hbs +24 -0
- package/dist/templates/pages/auth/login-page.tsx.hbs +30 -0
- package/dist/templates/pages/auth/register-page.tsx.hbs +38 -0
- package/dist/templates/pages/crud/create-page.tsx.hbs +42 -0
- package/dist/templates/pages/crud/detail-page.tsx.hbs +90 -0
- package/dist/templates/pages/crud/list-page.tsx.hbs +60 -0
- package/dist/templates/pages/crud/loading.tsx.hbs +13 -0
- package/dist/templates/pages/landing-page.tsx.hbs +111 -0
- package/dist/types/asl.d.ts +387 -0
- package/dist/types/asl.d.ts.map +1 -0
- package/dist/types/asl.js +139 -0
- package/dist/types/asl.js.map +1 -0
- package/dist/types/living-context.d.ts +1 -1
- package/dist/types/living-context.d.ts.map +1 -1
- package/dist/utils/FileGenerator.js +3 -3
- package/dist/utils/FileGenerator.js.map +1 -1
- package/dist/utils/generateTypesFromSchema.d.ts +47 -0
- package/dist/utils/generateTypesFromSchema.d.ts.map +1 -0
- package/dist/utils/generateTypesFromSchema.js +298 -0
- package/dist/utils/generateTypesFromSchema.js.map +1 -0
- package/package.json +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nextjs-rules.js","sourceRoot":"","sources":["../../../src/doctor/rules/nextjs-rules.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nextjs-rules.js","sourceRoot":"","sources":["../../../src/doctor/rules/nextjs-rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript-rules.d.ts","sourceRoot":"","sources":["../../../src/doctor/rules/typescript-rules.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,UAAU,CAAC;AAsOpE,eAAO,MAAM,eAAe,EAAE,UAAU,EAIvC,CAAC"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.typescriptRules = void 0;
|
|
4
|
+
// ─── Helper ───────────────────────────────────────────────────────
|
|
5
|
+
function diag(rule, filePath, message, opts = {}) {
|
|
6
|
+
return {
|
|
7
|
+
ruleId: rule.id,
|
|
8
|
+
filePath,
|
|
9
|
+
line: opts.line,
|
|
10
|
+
severity: rule.severity,
|
|
11
|
+
message,
|
|
12
|
+
help: opts.help || rule.help,
|
|
13
|
+
autoFixable: opts.autoFixable ?? false,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Find all occurrences of a pattern in content with line numbers
|
|
18
|
+
*/
|
|
19
|
+
function findOccurrences(content, pattern) {
|
|
20
|
+
const lines = content.split("\n");
|
|
21
|
+
const occurrences = [];
|
|
22
|
+
lines.forEach((line, index) => {
|
|
23
|
+
const matches = line.match(pattern);
|
|
24
|
+
if (matches) {
|
|
25
|
+
occurrences.push({ line: index + 1, match: matches[0] });
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
return occurrences;
|
|
29
|
+
}
|
|
30
|
+
// ─── Rules ────────────────────────────────────────────────────────
|
|
31
|
+
const asAnyCasts = {
|
|
32
|
+
id: "typescript/as-any-casts",
|
|
33
|
+
name: "Avoid 'as any' Type Casts",
|
|
34
|
+
category: "node",
|
|
35
|
+
severity: "warning",
|
|
36
|
+
description: "Detects usage of 'as any' type casts which bypass TypeScript's type checking",
|
|
37
|
+
help: "Replace 'as any' with proper type annotations or type guards. Use Record<string, unknown> for dynamic objects.",
|
|
38
|
+
appliesTo: ["nextjs", "node"],
|
|
39
|
+
async check(ctx) {
|
|
40
|
+
const results = [];
|
|
41
|
+
// Find all TypeScript/JavaScript files
|
|
42
|
+
const files = await ctx.findFiles(/\.(tsx?|jsx?)$/);
|
|
43
|
+
// Pattern to match 'as any' (with word boundaries)
|
|
44
|
+
const asAnyPattern = /\s+as\s+any[\s\)\;\,\}\]\.]/g;
|
|
45
|
+
// Track files with most casts for summary
|
|
46
|
+
const fileStats = [];
|
|
47
|
+
for (const file of files) {
|
|
48
|
+
const content = await ctx.readFile(file);
|
|
49
|
+
if (!content)
|
|
50
|
+
continue;
|
|
51
|
+
const occurrences = findOccurrences(content, asAnyPattern);
|
|
52
|
+
if (occurrences.length > 0) {
|
|
53
|
+
fileStats.push({
|
|
54
|
+
file,
|
|
55
|
+
count: occurrences.length,
|
|
56
|
+
lines: occurrences.map(o => o.line)
|
|
57
|
+
});
|
|
58
|
+
const firstOccurrence = occurrences[0];
|
|
59
|
+
if (firstOccurrence) {
|
|
60
|
+
results.push(diag(this, file, `Found ${occurrences.length} 'as any' cast${occurrences.length > 1 ? 's' : ''}`, {
|
|
61
|
+
line: firstOccurrence.line,
|
|
62
|
+
help: `Replace 'as any' with proper type annotations. Consider using 'Record<string, unknown>' for dynamic objects or type guards for runtime checks.`
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return results;
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
const unknownTransactionArray = {
|
|
71
|
+
id: "typescript/instantdb-transaction-typing",
|
|
72
|
+
name: "InstantDB Transaction Array Typing",
|
|
73
|
+
category: "node",
|
|
74
|
+
severity: "error",
|
|
75
|
+
description: "Detects unknown[] arrays passed to adminDb.transact() which cause type errors",
|
|
76
|
+
help: "Change 'unknown[]' to 'TransactionChunk<any, any>[]' and import from '@instantdb/admin'",
|
|
77
|
+
appliesTo: ["nextjs", "node"],
|
|
78
|
+
async check(ctx) {
|
|
79
|
+
const results = [];
|
|
80
|
+
// Find all TypeScript files
|
|
81
|
+
const files = await ctx.findFiles(/\.tsx?$/);
|
|
82
|
+
for (const file of files) {
|
|
83
|
+
const content = await ctx.readFile(file);
|
|
84
|
+
if (!content)
|
|
85
|
+
continue;
|
|
86
|
+
// Check if file uses adminDb.transact
|
|
87
|
+
if (!content.includes("adminDb.transact") && !content.includes("db.transact")) {
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
// Look for unknown[] array declarations
|
|
91
|
+
const unknownArrayPattern = /const\s+(\w+):\s*unknown\[\]/g;
|
|
92
|
+
const matches = Array.from(content.matchAll(unknownArrayPattern));
|
|
93
|
+
for (const match of matches) {
|
|
94
|
+
const varName = match[1];
|
|
95
|
+
// Check if this array is passed to transact
|
|
96
|
+
const transactPattern = new RegExp(`\\.transact\\s*\\(\\s*${varName}`, "g");
|
|
97
|
+
if (transactPattern.test(content)) {
|
|
98
|
+
const lines = content.split("\n");
|
|
99
|
+
const lineNum = lines.findIndex(line => line.includes(match[0])) + 1;
|
|
100
|
+
results.push(diag(this, file, `'${varName}' is typed as 'unknown[]' but passed to transact()`, {
|
|
101
|
+
line: lineNum,
|
|
102
|
+
help: `Change 'const ${varName}: unknown[]' to 'const ${varName}: TransactionChunk<any, any>[]' and import { TransactionChunk } from '@instantdb/admin'`,
|
|
103
|
+
}));
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return results;
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
const duplicateTypeDeclarations = {
|
|
111
|
+
id: "typescript/duplicate-type-declarations",
|
|
112
|
+
name: "Duplicate Type Declarations",
|
|
113
|
+
category: "node",
|
|
114
|
+
severity: "warning",
|
|
115
|
+
description: "Detects type/interface declarations that duplicate schema-derived types",
|
|
116
|
+
help: "Remove hand-written type declarations that duplicate schema types. Import from schema.ts instead.",
|
|
117
|
+
appliesTo: ["nextjs", "node"],
|
|
118
|
+
async check(ctx) {
|
|
119
|
+
const results = [];
|
|
120
|
+
// Find schema.ts file (could be in types/ or src/types/)
|
|
121
|
+
const schemaFiles = await ctx.findFiles(/types\/schema\.tsx?$/);
|
|
122
|
+
if (schemaFiles.length === 0) {
|
|
123
|
+
return results; // No schema file, skip check
|
|
124
|
+
}
|
|
125
|
+
const schemaFile = schemaFiles[0];
|
|
126
|
+
if (!schemaFile)
|
|
127
|
+
return results;
|
|
128
|
+
const schemaContent = await ctx.readFile(schemaFile);
|
|
129
|
+
if (!schemaContent)
|
|
130
|
+
return results;
|
|
131
|
+
// Extract exported types from schema (looking for InstaQLEntity pattern or interface/type declarations)
|
|
132
|
+
const schemaTypePattern = /export\s+(?:type|interface)\s+(\w+)/g;
|
|
133
|
+
const schemaTypes = new Set();
|
|
134
|
+
let match;
|
|
135
|
+
while ((match = schemaTypePattern.exec(schemaContent)) !== null) {
|
|
136
|
+
const typeName = match[1];
|
|
137
|
+
if (typeName) {
|
|
138
|
+
schemaTypes.add(typeName);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
if (schemaTypes.size === 0) {
|
|
142
|
+
return results; // No types in schema, skip
|
|
143
|
+
}
|
|
144
|
+
// Check other files in types/ directory
|
|
145
|
+
const typeFiles = await ctx.findFiles(/types\/.*\.tsx?$/);
|
|
146
|
+
for (const file of typeFiles) {
|
|
147
|
+
if (file === schemaFile)
|
|
148
|
+
continue; // Skip the schema file itself
|
|
149
|
+
const content = await ctx.readFile(file);
|
|
150
|
+
if (!content)
|
|
151
|
+
continue;
|
|
152
|
+
// Find exported types/interfaces in this file
|
|
153
|
+
const fileTypePattern = /export\s+(?:type|interface)\s+(\w+)/g;
|
|
154
|
+
let typeMatch;
|
|
155
|
+
while ((typeMatch = fileTypePattern.exec(content)) !== null) {
|
|
156
|
+
const typeName = typeMatch[1];
|
|
157
|
+
if (typeName && schemaTypes.has(typeName)) {
|
|
158
|
+
const lines = content.split("\n");
|
|
159
|
+
const matchText = typeMatch[0];
|
|
160
|
+
const lineNum = lines.findIndex(line => line.includes(matchText)) + 1;
|
|
161
|
+
results.push(diag(this, file, `Type '${typeName}' duplicates schema type in ${schemaFile}`, {
|
|
162
|
+
line: lineNum,
|
|
163
|
+
help: `Remove this type declaration and import ${typeName} from '${schemaFile}' instead. The schema-derived type is canonical.`,
|
|
164
|
+
}));
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return results;
|
|
169
|
+
},
|
|
170
|
+
};
|
|
171
|
+
// ─── Export ───────────────────────────────────────────────────────
|
|
172
|
+
exports.typescriptRules = [
|
|
173
|
+
asAnyCasts,
|
|
174
|
+
unknownTransactionArray,
|
|
175
|
+
duplicateTypeDeclarations,
|
|
176
|
+
];
|
|
177
|
+
//# sourceMappingURL=typescript-rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript-rules.js","sourceRoot":"","sources":["../../../src/doctor/rules/typescript-rules.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": "4.2.
|
|
3
|
+
"version": "4.2.8",
|
|
4
4
|
"description": "CLI tool for spec-driven development - Generate comprehensive context, visual screens, and scaffolding for AI-powered coding",
|
|
5
5
|
"main": "dist/cli.js",
|
|
6
6
|
"bin": {
|
|
@@ -54,9 +54,10 @@
|
|
|
54
54
|
"@google/generative-ai": "^0.24.1",
|
|
55
55
|
"@huggingface/inference": "^4.11.1",
|
|
56
56
|
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
57
|
-
"@myycontext/core": "
|
|
57
|
+
"@myycontext/core": "workspace:*",
|
|
58
58
|
"@playwright/test": "^1.58.2",
|
|
59
59
|
"@types/figlet": "^1.7.0",
|
|
60
|
+
"@types/handlebars": "^4.1.0",
|
|
60
61
|
"axios": "^1.6.0",
|
|
61
62
|
"chalk": "^5.6.2",
|
|
62
63
|
"commander": "^11.1.0",
|
|
@@ -68,6 +69,7 @@
|
|
|
68
69
|
"fuse.js": "^7.1.0",
|
|
69
70
|
"glob": "^10.3.10",
|
|
70
71
|
"gradient-string": "^3.0.0",
|
|
72
|
+
"handlebars": "^4.7.8",
|
|
71
73
|
"inquirer": "^9.2.12",
|
|
72
74
|
"mdast-util-to-markdown": "^2.1.2",
|
|
73
75
|
"node-fetch": "^2.7.0",
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { ASL } from "../types/asl";
|
|
2
|
+
export interface ShadCNComponent {
|
|
3
|
+
name: string;
|
|
4
|
+
dependencies: string[];
|
|
5
|
+
useCases: string[];
|
|
6
|
+
description: string;
|
|
7
|
+
required: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface ShadCNCatalog {
|
|
10
|
+
components: ShadCNComponent[];
|
|
11
|
+
metadata: {
|
|
12
|
+
version: string;
|
|
13
|
+
totalComponents: number;
|
|
14
|
+
lastUpdated: string;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* ComponentInferenceEngine - Smart inference of needed shadCN components
|
|
19
|
+
*
|
|
20
|
+
* Analyzes ASL specification to determine which shadCN UI components
|
|
21
|
+
* are needed for the project. Automatically resolves dependencies.
|
|
22
|
+
*
|
|
23
|
+
* Benefits:
|
|
24
|
+
* - Only installs what's needed (saves tokens and time)
|
|
25
|
+
* - Resolves dependencies automatically
|
|
26
|
+
* - Provides reasoning for each component choice
|
|
27
|
+
*/
|
|
28
|
+
export declare class ComponentInferenceEngine {
|
|
29
|
+
private catalog;
|
|
30
|
+
constructor();
|
|
31
|
+
/**
|
|
32
|
+
* Infer which shadCN components are needed based on ASL
|
|
33
|
+
* Returns array of component names to install
|
|
34
|
+
*/
|
|
35
|
+
inferNeededComponents(asl: ASL): string[];
|
|
36
|
+
/**
|
|
37
|
+
* Check if ASL has list/table views
|
|
38
|
+
*/
|
|
39
|
+
private hasListViews;
|
|
40
|
+
/**
|
|
41
|
+
* Check if a page is an entity list page
|
|
42
|
+
*/
|
|
43
|
+
private isEntityListPage;
|
|
44
|
+
/**
|
|
45
|
+
* Check if ASL has admin/RBAC features
|
|
46
|
+
*/
|
|
47
|
+
private hasAdminFeatures;
|
|
48
|
+
/**
|
|
49
|
+
* Resolve component dependencies
|
|
50
|
+
* E.g., if we need 'form', we also need 'button' and 'label'
|
|
51
|
+
*/
|
|
52
|
+
private resolveDependencies;
|
|
53
|
+
/**
|
|
54
|
+
* Load shadCN component catalog
|
|
55
|
+
*/
|
|
56
|
+
private loadCatalog;
|
|
57
|
+
/**
|
|
58
|
+
* Default catalog (used if shadcn-catalog.json doesn't exist yet)
|
|
59
|
+
*/
|
|
60
|
+
private getDefaultCatalog;
|
|
61
|
+
/**
|
|
62
|
+
* Explain why each component was chosen
|
|
63
|
+
*/
|
|
64
|
+
explainChoices(asl: ASL): Map<string, string>;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=ComponentInferenceEngine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComponentInferenceEngine.d.ts","sourceRoot":"","sources":["../../src/services/ComponentInferenceEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAwB,MAAM,cAAc,CAAC;AAIzD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED;;;;;;;;;;GAUG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,OAAO,CAAgB;;IAM/B;;;OAGG;IACH,qBAAqB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE;IAwCzC;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IASxB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA0B3B;;OAEG;IACH,OAAO,CAAC,WAAW;IAUnB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgGzB;;OAEG;IACH,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;CAkC9C"}
|
|
@@ -0,0 +1,302 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ComponentInferenceEngine = void 0;
|
|
37
|
+
const path = __importStar(require("path"));
|
|
38
|
+
const fs = __importStar(require("fs-extra"));
|
|
39
|
+
/**
|
|
40
|
+
* ComponentInferenceEngine - Smart inference of needed shadCN components
|
|
41
|
+
*
|
|
42
|
+
* Analyzes ASL specification to determine which shadCN UI components
|
|
43
|
+
* are needed for the project. Automatically resolves dependencies.
|
|
44
|
+
*
|
|
45
|
+
* Benefits:
|
|
46
|
+
* - Only installs what's needed (saves tokens and time)
|
|
47
|
+
* - Resolves dependencies automatically
|
|
48
|
+
* - Provides reasoning for each component choice
|
|
49
|
+
*/
|
|
50
|
+
class ComponentInferenceEngine {
|
|
51
|
+
constructor() {
|
|
52
|
+
this.catalog = this.loadCatalog();
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Infer which shadCN components are needed based on ASL
|
|
56
|
+
* Returns array of component names to install
|
|
57
|
+
*/
|
|
58
|
+
inferNeededComponents(asl) {
|
|
59
|
+
const needed = new Set();
|
|
60
|
+
// Base components (always needed for any app)
|
|
61
|
+
needed.add('button');
|
|
62
|
+
needed.add('card');
|
|
63
|
+
// Auth-based components
|
|
64
|
+
if (asl.auth) {
|
|
65
|
+
needed.add('form');
|
|
66
|
+
needed.add('input');
|
|
67
|
+
needed.add('label');
|
|
68
|
+
needed.add('toast'); // for error messages
|
|
69
|
+
}
|
|
70
|
+
// Entity CRUD forms
|
|
71
|
+
if (asl.entities && Object.keys(asl.entities).length > 0) {
|
|
72
|
+
needed.add('form');
|
|
73
|
+
needed.add('input');
|
|
74
|
+
needed.add('textarea'); // for long text fields
|
|
75
|
+
needed.add('select'); // for references/dropdowns
|
|
76
|
+
needed.add('dialog'); // for create/edit modals
|
|
77
|
+
needed.add('label');
|
|
78
|
+
}
|
|
79
|
+
// List views (tables for data display)
|
|
80
|
+
if (this.hasListViews(asl)) {
|
|
81
|
+
needed.add('table');
|
|
82
|
+
}
|
|
83
|
+
// Admin/RBAC features
|
|
84
|
+
if (this.hasAdminFeatures(asl)) {
|
|
85
|
+
needed.add('dropdown-menu'); // for actions
|
|
86
|
+
needed.add('badge'); // for status/roles
|
|
87
|
+
}
|
|
88
|
+
// Resolve dependencies (e.g., form needs button, label)
|
|
89
|
+
return this.resolveDependencies(needed);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Check if ASL has list/table views
|
|
93
|
+
*/
|
|
94
|
+
hasListViews(asl) {
|
|
95
|
+
// Entities imply list views
|
|
96
|
+
if (asl.entities && Object.keys(asl.entities).length > 0) {
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
// Check for explicit list pages
|
|
100
|
+
return asl.pages.some(p => p.path.includes('/list') ||
|
|
101
|
+
this.isEntityListPage(p, asl.entities));
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Check if a page is an entity list page
|
|
105
|
+
*/
|
|
106
|
+
isEntityListPage(page, entities) {
|
|
107
|
+
if (!entities)
|
|
108
|
+
return false;
|
|
109
|
+
const entityNames = Object.keys(entities).map(name => name.toLowerCase() + 's');
|
|
110
|
+
return entityNames.some(name => page.path.includes('/' + name));
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Check if ASL has admin/RBAC features
|
|
114
|
+
*/
|
|
115
|
+
hasAdminFeatures(asl) {
|
|
116
|
+
if (!asl.permissions)
|
|
117
|
+
return false;
|
|
118
|
+
return asl.permissions.some(p => p.role === 'admin' ||
|
|
119
|
+
p.role === 'moderator' ||
|
|
120
|
+
p.actions.includes('manage'));
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Resolve component dependencies
|
|
124
|
+
* E.g., if we need 'form', we also need 'button' and 'label'
|
|
125
|
+
*/
|
|
126
|
+
resolveDependencies(components) {
|
|
127
|
+
const resolved = new Set(components);
|
|
128
|
+
// Keep resolving until no new dependencies are added
|
|
129
|
+
let changed = true;
|
|
130
|
+
while (changed) {
|
|
131
|
+
changed = false;
|
|
132
|
+
const current = Array.from(resolved);
|
|
133
|
+
for (const comp of current) {
|
|
134
|
+
const definition = this.catalog.components.find(c => c.name === comp);
|
|
135
|
+
if (definition) {
|
|
136
|
+
for (const dep of definition.dependencies) {
|
|
137
|
+
if (!resolved.has(dep)) {
|
|
138
|
+
resolved.add(dep);
|
|
139
|
+
changed = true;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// Return sorted array
|
|
146
|
+
return Array.from(resolved).sort();
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Load shadCN component catalog
|
|
150
|
+
*/
|
|
151
|
+
loadCatalog() {
|
|
152
|
+
try {
|
|
153
|
+
const catalogPath = path.join(__dirname, '../config/shadcn-catalog.json');
|
|
154
|
+
return fs.readJSONSync(catalogPath);
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
// Return minimal catalog if file doesn't exist yet
|
|
158
|
+
return this.getDefaultCatalog();
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Default catalog (used if shadcn-catalog.json doesn't exist yet)
|
|
163
|
+
*/
|
|
164
|
+
getDefaultCatalog() {
|
|
165
|
+
return {
|
|
166
|
+
components: [
|
|
167
|
+
{
|
|
168
|
+
name: 'button',
|
|
169
|
+
dependencies: [],
|
|
170
|
+
useCases: ['forms', 'actions', 'navigation'],
|
|
171
|
+
description: 'Interactive button component with variants',
|
|
172
|
+
required: true
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
name: 'form',
|
|
176
|
+
dependencies: ['label', 'button'],
|
|
177
|
+
useCases: ['auth', 'crud', 'settings'],
|
|
178
|
+
description: 'Form wrapper with validation support',
|
|
179
|
+
required: false
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
name: 'input',
|
|
183
|
+
dependencies: ['label'],
|
|
184
|
+
useCases: ['auth', 'forms'],
|
|
185
|
+
description: 'Text input field',
|
|
186
|
+
required: false
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
name: 'card',
|
|
190
|
+
dependencies: [],
|
|
191
|
+
useCases: ['lists', 'dashboard'],
|
|
192
|
+
description: 'Container with header, content, footer',
|
|
193
|
+
required: false
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
name: 'table',
|
|
197
|
+
dependencies: [],
|
|
198
|
+
useCases: ['lists', 'admin', 'data-display'],
|
|
199
|
+
description: 'Data table component',
|
|
200
|
+
required: false
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
name: 'dialog',
|
|
204
|
+
dependencies: ['button'],
|
|
205
|
+
useCases: ['modals', 'forms', 'confirmations'],
|
|
206
|
+
description: 'Modal dialog component',
|
|
207
|
+
required: false
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
name: 'toast',
|
|
211
|
+
dependencies: [],
|
|
212
|
+
useCases: ['notifications', 'feedback'],
|
|
213
|
+
description: 'Toast notification system',
|
|
214
|
+
required: false
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
name: 'select',
|
|
218
|
+
dependencies: [],
|
|
219
|
+
useCases: ['forms', 'filters'],
|
|
220
|
+
description: 'Dropdown select component',
|
|
221
|
+
required: false
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
name: 'label',
|
|
225
|
+
dependencies: [],
|
|
226
|
+
useCases: ['forms'],
|
|
227
|
+
description: 'Form label component',
|
|
228
|
+
required: false
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
name: 'textarea',
|
|
232
|
+
dependencies: ['label'],
|
|
233
|
+
useCases: ['forms', 'comments'],
|
|
234
|
+
description: 'Multi-line text input',
|
|
235
|
+
required: false
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
name: 'dropdown-menu',
|
|
239
|
+
dependencies: ['button'],
|
|
240
|
+
useCases: ['navigation', 'actions', 'admin'],
|
|
241
|
+
description: 'Dropdown menu component',
|
|
242
|
+
required: false
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
name: 'badge',
|
|
246
|
+
dependencies: [],
|
|
247
|
+
useCases: ['status', 'labels', 'counts'],
|
|
248
|
+
description: 'Badge/pill component for status',
|
|
249
|
+
required: false
|
|
250
|
+
}
|
|
251
|
+
],
|
|
252
|
+
metadata: {
|
|
253
|
+
version: 'latest',
|
|
254
|
+
totalComponents: 12,
|
|
255
|
+
lastUpdated: '2026-02-22'
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Explain why each component was chosen
|
|
261
|
+
*/
|
|
262
|
+
explainChoices(asl) {
|
|
263
|
+
const explanations = new Map();
|
|
264
|
+
const components = this.inferNeededComponents(asl);
|
|
265
|
+
components.forEach(comp => {
|
|
266
|
+
const definition = this.catalog.components.find(c => c.name === comp);
|
|
267
|
+
if (!definition)
|
|
268
|
+
return;
|
|
269
|
+
if (comp === 'button' || comp === 'card') {
|
|
270
|
+
explanations.set(comp, 'Always needed for UI');
|
|
271
|
+
}
|
|
272
|
+
else if (asl.auth && ['form', 'input', 'label', 'toast'].includes(comp)) {
|
|
273
|
+
explanations.set(comp, 'Required for authentication');
|
|
274
|
+
}
|
|
275
|
+
else if (asl.entities && Object.keys(asl.entities).length > 0 && ['textarea', 'select', 'dialog'].includes(comp)) {
|
|
276
|
+
explanations.set(comp, 'Required for CRUD forms');
|
|
277
|
+
}
|
|
278
|
+
else if (comp === 'table') {
|
|
279
|
+
explanations.set(comp, 'Required for entity lists');
|
|
280
|
+
}
|
|
281
|
+
else if (this.hasAdminFeatures(asl) && ['dropdown-menu', 'badge'].includes(comp)) {
|
|
282
|
+
explanations.set(comp, 'Required for admin features');
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
// Dependency
|
|
286
|
+
const parent = components.find(c => {
|
|
287
|
+
const def = this.catalog.components.find(d => d.name === c);
|
|
288
|
+
return def?.dependencies.includes(comp);
|
|
289
|
+
});
|
|
290
|
+
if (parent) {
|
|
291
|
+
explanations.set(comp, `Dependency of ${parent}`);
|
|
292
|
+
}
|
|
293
|
+
else {
|
|
294
|
+
explanations.set(comp, definition.description);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
});
|
|
298
|
+
return explanations;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
exports.ComponentInferenceEngine = ComponentInferenceEngine;
|
|
302
|
+
//# sourceMappingURL=ComponentInferenceEngine.js.map
|