mycontext-cli 2.0.26 → 2.0.28
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 +36 -355
- package/dist/agents/implementations/CodeGenSubAgent.d.ts.map +1 -1
- package/dist/agents/implementations/CodeGenSubAgent.js +67 -14
- package/dist/agents/implementations/CodeGenSubAgent.js.map +1 -1
- package/dist/agents/implementations/DesignPipelineAgent.d.ts +80 -0
- package/dist/agents/implementations/DesignPipelineAgent.d.ts.map +1 -0
- package/dist/agents/implementations/DesignPipelineAgent.js +1406 -0
- package/dist/agents/implementations/DesignPipelineAgent.js.map +1 -0
- package/dist/agents/implementations/FeatureAssemblyAgent.d.ts +67 -0
- package/dist/agents/implementations/FeatureAssemblyAgent.d.ts.map +1 -0
- package/dist/agents/implementations/FeatureAssemblyAgent.js +564 -0
- package/dist/agents/implementations/FeatureAssemblyAgent.js.map +1 -0
- package/dist/agents/implementations/PromptConstructorAgent.d.ts +10 -0
- package/dist/agents/implementations/PromptConstructorAgent.d.ts.map +1 -1
- package/dist/agents/implementations/PromptConstructorAgent.js +172 -12
- package/dist/agents/implementations/PromptConstructorAgent.js.map +1 -1
- package/dist/agents/implementations/RoleBasedGenerator.d.ts +52 -0
- package/dist/agents/implementations/RoleBasedGenerator.d.ts.map +1 -0
- package/dist/agents/implementations/RoleBasedGenerator.js +370 -0
- package/dist/agents/implementations/RoleBasedGenerator.js.map +1 -0
- package/dist/cli.js +65 -0
- package/dist/cli.js.map +1 -1
- package/dist/clients/ClaudeSDKClient.d.ts +48 -0
- package/dist/clients/ClaudeSDKClient.d.ts.map +1 -0
- package/dist/clients/ClaudeSDKClient.js +158 -0
- package/dist/clients/ClaudeSDKClient.js.map +1 -0
- package/dist/clients/MyContextAIClient.d.ts +73 -0
- package/dist/clients/MyContextAIClient.d.ts.map +1 -0
- package/dist/clients/MyContextAIClient.js +280 -0
- package/dist/clients/MyContextAIClient.js.map +1 -0
- package/dist/clients/ProviderChain.d.ts +87 -0
- package/dist/clients/ProviderChain.d.ts.map +1 -0
- package/dist/clients/ProviderChain.js +246 -0
- package/dist/clients/ProviderChain.js.map +1 -0
- package/dist/clients/XAIClient.d.ts +48 -0
- package/dist/clients/XAIClient.d.ts.map +1 -0
- package/dist/clients/XAIClient.js +152 -0
- package/dist/clients/XAIClient.js.map +1 -0
- package/dist/commands/assemble-features.d.ts +40 -0
- package/dist/commands/assemble-features.d.ts.map +1 -0
- package/dist/commands/assemble-features.js +383 -0
- package/dist/commands/assemble-features.js.map +1 -0
- package/dist/commands/clone-starter.d.ts +32 -0
- package/dist/commands/clone-starter.d.ts.map +1 -0
- package/dist/commands/clone-starter.js +218 -0
- package/dist/commands/clone-starter.js.map +1 -0
- package/dist/commands/design-analyze.d.ts +46 -0
- package/dist/commands/design-analyze.d.ts.map +1 -0
- package/dist/commands/design-analyze.js +232 -0
- package/dist/commands/design-analyze.js.map +1 -0
- package/dist/commands/generate-components.d.ts +1 -0
- package/dist/commands/generate-components.d.ts.map +1 -1
- package/dist/commands/generate-components.js +42 -9
- package/dist/commands/generate-components.js.map +1 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +34 -1
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/setup-complete.d.ts.map +1 -1
- package/dist/commands/setup-complete.js +38 -2
- package/dist/commands/setup-complete.js.map +1 -1
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +86 -7
- package/dist/commands/workflow.js.map +1 -1
- package/dist/config/intent-dictionary.json +3700 -0
- package/dist/package.json +3 -1
- package/dist/services/IntentEnricher.d.ts +61 -0
- package/dist/services/IntentEnricher.d.ts.map +1 -0
- package/dist/services/IntentEnricher.js +318 -0
- package/dist/services/IntentEnricher.js.map +1 -0
- package/dist/services/IntentValidator.d.ts +114 -0
- package/dist/services/IntentValidator.d.ts.map +1 -0
- package/dist/services/IntentValidator.js +680 -0
- package/dist/services/IntentValidator.js.map +1 -0
- package/dist/types/design-pipeline.d.ts +300 -0
- package/dist/types/design-pipeline.d.ts.map +1 -0
- package/dist/types/design-pipeline.js +9 -0
- package/dist/types/design-pipeline.js.map +1 -0
- package/dist/types/feature-bundle.d.ts +239 -0
- package/dist/types/feature-bundle.d.ts.map +1 -0
- package/dist/types/feature-bundle.js +9 -0
- package/dist/types/feature-bundle.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/intent-dictionary.d.ts +525 -0
- package/dist/types/intent-dictionary.d.ts.map +1 -0
- package/dist/types/intent-dictionary.js +11 -0
- package/dist/types/intent-dictionary.js.map +1 -0
- package/dist/types/role-permissions.d.ts +167 -0
- package/dist/types/role-permissions.d.ts.map +1 -0
- package/dist/types/role-permissions.js +9 -0
- package/dist/types/role-permissions.js.map +1 -0
- package/dist/utils/contextEnricher.d.ts +41 -0
- package/dist/utils/contextEnricher.d.ts.map +1 -0
- package/dist/utils/contextEnricher.js +327 -0
- package/dist/utils/contextEnricher.js.map +1 -0
- package/dist/utils/designFallbacks.d.ts +48 -0
- package/dist/utils/designFallbacks.d.ts.map +1 -0
- package/dist/utils/designFallbacks.js +885 -0
- package/dist/utils/designFallbacks.js.map +1 -0
- package/dist/utils/designManifestManager.d.ts +89 -0
- package/dist/utils/designManifestManager.d.ts.map +1 -0
- package/dist/utils/designManifestManager.js +533 -0
- package/dist/utils/designManifestManager.js.map +1 -0
- package/dist/utils/designPipelineStateManager.d.ts +63 -0
- package/dist/utils/designPipelineStateManager.d.ts.map +1 -0
- package/dist/utils/designPipelineStateManager.js +174 -0
- package/dist/utils/designPipelineStateManager.js.map +1 -0
- package/dist/utils/envExampleGenerator.d.ts.map +1 -1
- package/dist/utils/envExampleGenerator.js +35 -171
- package/dist/utils/envExampleGenerator.js.map +1 -1
- package/dist/utils/featureBundleManager.d.ts +90 -0
- package/dist/utils/featureBundleManager.d.ts.map +1 -0
- package/dist/utils/featureBundleManager.js +340 -0
- package/dist/utils/featureBundleManager.js.map +1 -0
- package/dist/utils/githubCloner.d.ts +93 -0
- package/dist/utils/githubCloner.d.ts.map +1 -0
- package/dist/utils/githubCloner.js +305 -0
- package/dist/utils/githubCloner.js.map +1 -0
- package/dist/utils/rolePermissionMapper.d.ts +89 -0
- package/dist/utils/rolePermissionMapper.d.ts.map +1 -0
- package/dist/utils/rolePermissionMapper.js +337 -0
- package/dist/utils/rolePermissionMapper.js.map +1 -0
- package/dist/utils/unifiedDesignContextLoader.d.ts +76 -0
- package/dist/utils/unifiedDesignContextLoader.d.ts.map +1 -0
- package/dist/utils/unifiedDesignContextLoader.js +344 -0
- package/dist/utils/unifiedDesignContextLoader.js.map +1 -0
- package/package.json +3 -1
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mycontext-cli",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.28",
|
|
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": {
|
|
@@ -55,9 +55,11 @@
|
|
|
55
55
|
"dotenv": "^17.2.3",
|
|
56
56
|
"dotenv-expand": "^12.0.3",
|
|
57
57
|
"fs-extra": "^11.1.1",
|
|
58
|
+
"fuse.js": "^7.1.0",
|
|
58
59
|
"glob": "^10.3.10",
|
|
59
60
|
"inquirer": "^9.2.12",
|
|
60
61
|
"node-fetch": "^2.7.0",
|
|
62
|
+
"openai": "^6.2.0",
|
|
61
63
|
"ora": "^7.0.1",
|
|
62
64
|
"prompts": "^2.4.2",
|
|
63
65
|
"sonner": "^2.0.7",
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { IntentValidationReport, EnrichedComponentSpec } from "../types/intent-dictionary";
|
|
2
|
+
import { FunctionalSummary, VisualSystem } from "../types/design-pipeline";
|
|
3
|
+
/**
|
|
4
|
+
* IntentEnricher Service
|
|
5
|
+
*
|
|
6
|
+
* Transforms validated intents into enriched component specifications
|
|
7
|
+
* with expanded templates, design token mappings, and full type definitions.
|
|
8
|
+
*/
|
|
9
|
+
export declare class IntentEnricher {
|
|
10
|
+
private dictionaryPath;
|
|
11
|
+
constructor();
|
|
12
|
+
/**
|
|
13
|
+
* Enrich validated intents into component specifications
|
|
14
|
+
*/
|
|
15
|
+
enrichComponentDefinitions(summary: FunctionalSummary, validation: IntentValidationReport, visualSystem?: VisualSystem): Promise<EnrichedComponentSpec[]>;
|
|
16
|
+
/**
|
|
17
|
+
* Enrich a single validated intent
|
|
18
|
+
*/
|
|
19
|
+
private enrichSingleIntent;
|
|
20
|
+
/**
|
|
21
|
+
* Generate component name from intent and context
|
|
22
|
+
*/
|
|
23
|
+
private generateComponentName;
|
|
24
|
+
/**
|
|
25
|
+
* Get appropriate suffix for component type
|
|
26
|
+
*/
|
|
27
|
+
private getComponentSuffix;
|
|
28
|
+
/**
|
|
29
|
+
* Convert string to PascalCase
|
|
30
|
+
*/
|
|
31
|
+
private toPascalCase;
|
|
32
|
+
/**
|
|
33
|
+
* Expand template with placeholder values
|
|
34
|
+
*/
|
|
35
|
+
private expandTemplate;
|
|
36
|
+
/**
|
|
37
|
+
* Extract label from intent text
|
|
38
|
+
*/
|
|
39
|
+
private extractLabel;
|
|
40
|
+
/**
|
|
41
|
+
* Map design tokens from visual system
|
|
42
|
+
*/
|
|
43
|
+
private mapDesignTokens;
|
|
44
|
+
/**
|
|
45
|
+
* Generate TypeScript type definitions for component
|
|
46
|
+
*/
|
|
47
|
+
private generateTypeDefinitions;
|
|
48
|
+
/**
|
|
49
|
+
* Get component category from canonical name
|
|
50
|
+
*/
|
|
51
|
+
getComponentCategory(canonicalName: string): string;
|
|
52
|
+
/**
|
|
53
|
+
* Generate usage example for component
|
|
54
|
+
*/
|
|
55
|
+
generateUsageExample(spec: EnrichedComponentSpec): string;
|
|
56
|
+
/**
|
|
57
|
+
* Calculate complexity score for enriched spec
|
|
58
|
+
*/
|
|
59
|
+
calculateComplexity(spec: EnrichedComponentSpec): number;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=IntentEnricher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IntentEnricher.d.ts","sourceRoot":"","sources":["../../src/services/IntentEnricher.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EAEtB,qBAAqB,EAEtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAK3E;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,cAAc,CAAS;;IAW/B;;OAEG;IACG,0BAA0B,CAC9B,OAAO,EAAE,iBAAiB,EAC1B,UAAU,EAAE,sBAAsB,EAClC,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAkCnC;;OAEG;YACW,kBAAkB;IAwDhC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA2B7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,cAAc;IA+BtB;;OAEG;IACH,OAAO,CAAC,YAAY;IAuBpB;;OAEG;IACH,OAAO,CAAC,eAAe;IA4BvB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA2B/B;;OAEG;IACH,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAiBnD;;OAEG;IACH,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM;IAoBzD;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM;CAqBzD"}
|
|
@@ -0,0 +1,318 @@
|
|
|
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.IntentEnricher = void 0;
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
42
|
+
/**
|
|
43
|
+
* IntentEnricher Service
|
|
44
|
+
*
|
|
45
|
+
* Transforms validated intents into enriched component specifications
|
|
46
|
+
* with expanded templates, design token mappings, and full type definitions.
|
|
47
|
+
*/
|
|
48
|
+
class IntentEnricher {
|
|
49
|
+
constructor() {
|
|
50
|
+
this.dictionaryPath = path.join(__dirname, "..", "config", "intent-dictionary.json");
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Enrich validated intents into component specifications
|
|
54
|
+
*/
|
|
55
|
+
async enrichComponentDefinitions(summary, validation, visualSystem) {
|
|
56
|
+
console.log(chalk_1.default.blue("🔧 Enriching intents into component specifications..."));
|
|
57
|
+
const enrichedSpecs = [];
|
|
58
|
+
for (const validatedIntent of validation.validated_intents) {
|
|
59
|
+
try {
|
|
60
|
+
const enrichedSpec = await this.enrichSingleIntent(validatedIntent, summary, visualSystem);
|
|
61
|
+
enrichedSpecs.push(enrichedSpec);
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
console.warn(chalk_1.default.yellow(`⚠️ Failed to enrich intent: ${validatedIntent.canonical_name}`), error);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
console.log(chalk_1.default.green(`✅ Enriched ${enrichedSpecs.length} component specifications`));
|
|
68
|
+
return enrichedSpecs;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Enrich a single validated intent
|
|
72
|
+
*/
|
|
73
|
+
async enrichSingleIntent(intent, summary, visualSystem) {
|
|
74
|
+
const mapping = intent.intent_mapping;
|
|
75
|
+
// Generate component name from intent context
|
|
76
|
+
const componentName = this.generateComponentName(intent, summary);
|
|
77
|
+
// Expand template with context
|
|
78
|
+
const expandedTemplate = this.expandTemplate(mapping.component_pattern.template_code, intent, visualSystem);
|
|
79
|
+
// Map design tokens
|
|
80
|
+
const designTokens = visualSystem
|
|
81
|
+
? this.mapDesignTokens(mapping.design_tokens, visualSystem)
|
|
82
|
+
: {};
|
|
83
|
+
// Generate TypeScript type definitions
|
|
84
|
+
const typeDefinitions = this.generateTypeDefinitions(mapping, componentName);
|
|
85
|
+
return {
|
|
86
|
+
component_name: componentName,
|
|
87
|
+
original_description: intent.original_text,
|
|
88
|
+
canonical_intent: intent.canonical_name,
|
|
89
|
+
intent_confidence: intent.confidence,
|
|
90
|
+
shadcn_components: mapping.component_pattern.shadcn_components.map((comp) => comp.name),
|
|
91
|
+
component_imports: mapping.component_pattern.shadcn_components.map((comp) => comp.import_path),
|
|
92
|
+
design_pattern: mapping.component_pattern,
|
|
93
|
+
code_template: expandedTemplate,
|
|
94
|
+
props_spec: [
|
|
95
|
+
...mapping.component_pattern.required_props,
|
|
96
|
+
...mapping.component_pattern.optional_props,
|
|
97
|
+
],
|
|
98
|
+
type_definitions: typeDefinitions,
|
|
99
|
+
state_management: mapping.interaction_spec.states,
|
|
100
|
+
event_handlers: mapping.interaction_spec.events,
|
|
101
|
+
design_tokens_used: designTokens,
|
|
102
|
+
accessibility_spec: mapping.accessibility_spec,
|
|
103
|
+
responsive_config: mapping.responsive_behavior,
|
|
104
|
+
validation_rules: mapping.validation_rules,
|
|
105
|
+
conflicts: [],
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Generate component name from intent and context
|
|
110
|
+
*/
|
|
111
|
+
generateComponentName(intent, summary) {
|
|
112
|
+
// Try to extract action/noun from original text
|
|
113
|
+
const text = intent.original_text.toLowerCase();
|
|
114
|
+
// Common patterns for component names
|
|
115
|
+
const patterns = [
|
|
116
|
+
/(\w+)\s+(button|form|dialog|card|table|menu)/,
|
|
117
|
+
/(login|signup|profile|settings|dashboard)/,
|
|
118
|
+
/(\w+)\s+(component|page|modal)/,
|
|
119
|
+
];
|
|
120
|
+
for (const pattern of patterns) {
|
|
121
|
+
const match = text.match(pattern);
|
|
122
|
+
if (match && match[1]) {
|
|
123
|
+
return this.toPascalCase(match[1] + "-" + match[2]);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// Fallback: use canonical intent name + suffix
|
|
127
|
+
const base = intent.canonical_name.replace(/-/g, " ");
|
|
128
|
+
const suffix = this.getComponentSuffix(intent.canonical_name);
|
|
129
|
+
return this.toPascalCase(base + suffix);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Get appropriate suffix for component type
|
|
133
|
+
*/
|
|
134
|
+
getComponentSuffix(canonicalName) {
|
|
135
|
+
if (canonicalName.includes("button"))
|
|
136
|
+
return "";
|
|
137
|
+
if (canonicalName.includes("form"))
|
|
138
|
+
return "Form";
|
|
139
|
+
if (canonicalName.includes("dialog"))
|
|
140
|
+
return "Dialog";
|
|
141
|
+
if (canonicalName.includes("card"))
|
|
142
|
+
return "Card";
|
|
143
|
+
if (canonicalName.includes("table"))
|
|
144
|
+
return "Table";
|
|
145
|
+
if (canonicalName.includes("menu"))
|
|
146
|
+
return "Menu";
|
|
147
|
+
return "Component";
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Convert string to PascalCase
|
|
151
|
+
*/
|
|
152
|
+
toPascalCase(str) {
|
|
153
|
+
return str
|
|
154
|
+
.split(/[-_\s]/)
|
|
155
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
|
|
156
|
+
.join("");
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Expand template with placeholder values
|
|
160
|
+
*/
|
|
161
|
+
expandTemplate(template, intent, visualSystem) {
|
|
162
|
+
let expanded = template;
|
|
163
|
+
// Replace common placeholders
|
|
164
|
+
const replacements = {
|
|
165
|
+
"{{label}}": this.extractLabel(intent.original_text),
|
|
166
|
+
"{{size}}": "default",
|
|
167
|
+
"{{variant}}": "default",
|
|
168
|
+
"{{handler}}": "handleAction",
|
|
169
|
+
"{{className}}": "",
|
|
170
|
+
};
|
|
171
|
+
// Add design token replacements
|
|
172
|
+
if (visualSystem) {
|
|
173
|
+
replacements["{{primaryColor}}"] = visualSystem.colors.primary;
|
|
174
|
+
replacements["{{backgroundColor}}"] = visualSystem.colors.background;
|
|
175
|
+
replacements["{{textColor}}"] = visualSystem.colors.text;
|
|
176
|
+
}
|
|
177
|
+
// Replace all placeholders
|
|
178
|
+
for (const [placeholder, value] of Object.entries(replacements)) {
|
|
179
|
+
expanded = expanded.replace(new RegExp(placeholder, "g"), value);
|
|
180
|
+
}
|
|
181
|
+
return expanded;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Extract label from intent text
|
|
185
|
+
*/
|
|
186
|
+
extractLabel(text) {
|
|
187
|
+
// Try to find action words
|
|
188
|
+
const actionWords = [
|
|
189
|
+
"submit",
|
|
190
|
+
"save",
|
|
191
|
+
"cancel",
|
|
192
|
+
"delete",
|
|
193
|
+
"create",
|
|
194
|
+
"update",
|
|
195
|
+
"login",
|
|
196
|
+
"signup",
|
|
197
|
+
"confirm",
|
|
198
|
+
];
|
|
199
|
+
for (const action of actionWords) {
|
|
200
|
+
if (text.toLowerCase().includes(action)) {
|
|
201
|
+
return action.charAt(0).toUpperCase() + action.slice(1);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return "Action";
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Map design tokens from visual system
|
|
208
|
+
*/
|
|
209
|
+
mapDesignTokens(tokenMappings, visualSystem) {
|
|
210
|
+
const tokens = {};
|
|
211
|
+
for (const mapping of tokenMappings) {
|
|
212
|
+
const tokenPath = mapping.token_path.split(".");
|
|
213
|
+
let value = visualSystem;
|
|
214
|
+
// Navigate token path
|
|
215
|
+
for (const key of tokenPath) {
|
|
216
|
+
if (value && typeof value === "object" && key in value) {
|
|
217
|
+
value = value[key];
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
value = undefined;
|
|
221
|
+
break;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
if (value !== undefined) {
|
|
225
|
+
tokens[mapping.css_var_name] = String(value);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return tokens;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Generate TypeScript type definitions for component
|
|
232
|
+
*/
|
|
233
|
+
generateTypeDefinitions(mapping, componentName) {
|
|
234
|
+
const props = [
|
|
235
|
+
...mapping.component_pattern.required_props,
|
|
236
|
+
...mapping.component_pattern.optional_props,
|
|
237
|
+
];
|
|
238
|
+
const propDefinitions = props
|
|
239
|
+
.map((prop) => {
|
|
240
|
+
// Determine if prop is required based on which array it came from
|
|
241
|
+
const isRequired = mapping.component_pattern.required_props.includes(prop);
|
|
242
|
+
const optional = !isRequired ? "?" : "";
|
|
243
|
+
const description = prop.description
|
|
244
|
+
? ` /** ${prop.description} */\n`
|
|
245
|
+
: "";
|
|
246
|
+
return `${description} ${prop.name}${optional}: ${prop.type};`;
|
|
247
|
+
})
|
|
248
|
+
.join("\n");
|
|
249
|
+
return `export interface ${componentName}Props {
|
|
250
|
+
${propDefinitions}
|
|
251
|
+
}`;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Get component category from canonical name
|
|
255
|
+
*/
|
|
256
|
+
getComponentCategory(canonicalName) {
|
|
257
|
+
if (canonicalName.includes("button"))
|
|
258
|
+
return "interactive";
|
|
259
|
+
if (canonicalName.includes("form") || canonicalName.includes("input"))
|
|
260
|
+
return "form";
|
|
261
|
+
if (canonicalName.includes("dialog") || canonicalName.includes("modal"))
|
|
262
|
+
return "overlay";
|
|
263
|
+
if (canonicalName.includes("card") || canonicalName.includes("layout"))
|
|
264
|
+
return "layout";
|
|
265
|
+
if (canonicalName.includes("table") || canonicalName.includes("list"))
|
|
266
|
+
return "data";
|
|
267
|
+
if (canonicalName.includes("menu") || canonicalName.includes("nav"))
|
|
268
|
+
return "navigation";
|
|
269
|
+
if (canonicalName.includes("alert") || canonicalName.includes("toast"))
|
|
270
|
+
return "feedback";
|
|
271
|
+
return "display";
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Generate usage example for component
|
|
275
|
+
*/
|
|
276
|
+
generateUsageExample(spec) {
|
|
277
|
+
const propsExample = spec.props_spec
|
|
278
|
+
.filter((p) => {
|
|
279
|
+
// Check if prop is required by looking at the original mapping
|
|
280
|
+
// For now, assume first few props are required
|
|
281
|
+
return spec.props_spec.indexOf(p) < 3;
|
|
282
|
+
})
|
|
283
|
+
.map((p) => {
|
|
284
|
+
if (p.type.includes("=>"))
|
|
285
|
+
return `${p.name}={handleAction}`;
|
|
286
|
+
if (p.type === "string")
|
|
287
|
+
return `${p.name}="${p.name}"`;
|
|
288
|
+
if (p.type === "boolean")
|
|
289
|
+
return p.name;
|
|
290
|
+
return `${p.name}={${p.name}}`;
|
|
291
|
+
})
|
|
292
|
+
.join(" ");
|
|
293
|
+
return `<${spec.component_name} ${propsExample}>
|
|
294
|
+
{children}
|
|
295
|
+
</${spec.component_name}>`;
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Calculate complexity score for enriched spec
|
|
299
|
+
*/
|
|
300
|
+
calculateComplexity(spec) {
|
|
301
|
+
let complexity = 0;
|
|
302
|
+
// More shadcn components = more complex
|
|
303
|
+
complexity += spec.shadcn_components.length * 10;
|
|
304
|
+
// More required props = more complex
|
|
305
|
+
complexity +=
|
|
306
|
+
spec.props_spec.filter((p) => {
|
|
307
|
+
// Assume first few props are required
|
|
308
|
+
return spec.props_spec.indexOf(p) < 3;
|
|
309
|
+
}).length * 5;
|
|
310
|
+
// State management adds complexity
|
|
311
|
+
complexity += spec.state_management.length * 8;
|
|
312
|
+
// More design tokens = more styling = more complex
|
|
313
|
+
complexity += Object.keys(spec.design_tokens_used || {}).length * 3;
|
|
314
|
+
return Math.min(complexity, 100);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
exports.IntentEnricher = IntentEnricher;
|
|
318
|
+
//# sourceMappingURL=IntentEnricher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IntentEnricher.js","sourceRoot":"","sources":["../../src/services/IntentEnricher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Intent Validator Service
|
|
3
|
+
*
|
|
4
|
+
* Validates natural language UI descriptions against the intent dictionary,
|
|
5
|
+
* extracting UI intents and matching them to shadcn/ui component patterns.
|
|
6
|
+
*
|
|
7
|
+
* @module services/IntentValidator
|
|
8
|
+
*/
|
|
9
|
+
import { IntentDictionary, IntentValidationReport, IntentMapping } from "../types/intent-dictionary";
|
|
10
|
+
/**
|
|
11
|
+
* Main service for validating UI intents from natural language
|
|
12
|
+
*/
|
|
13
|
+
export declare class IntentValidator {
|
|
14
|
+
private dictionary;
|
|
15
|
+
private dictionaryPath;
|
|
16
|
+
private fuse;
|
|
17
|
+
/**
|
|
18
|
+
* @param dictionaryPath - Optional path to custom dictionary (defaults to built-in)
|
|
19
|
+
*/
|
|
20
|
+
constructor(dictionaryPath?: string);
|
|
21
|
+
/**
|
|
22
|
+
* Load intent dictionary from JSON file
|
|
23
|
+
*/
|
|
24
|
+
private loadDictionary;
|
|
25
|
+
/**
|
|
26
|
+
* Initialize Fuse.js for fuzzy matching
|
|
27
|
+
*/
|
|
28
|
+
private initializeFuse;
|
|
29
|
+
/**
|
|
30
|
+
* Get minimal default dictionary as fallback
|
|
31
|
+
*/
|
|
32
|
+
private getDefaultDictionary;
|
|
33
|
+
/**
|
|
34
|
+
* Main validation method - analyzes context files and extracts UI intents
|
|
35
|
+
*/
|
|
36
|
+
validateContextFiles(prd: string, types?: string, brand?: string): Promise<IntentValidationReport>;
|
|
37
|
+
/**
|
|
38
|
+
* Extract UI intent phrases from text using pattern matching
|
|
39
|
+
*/
|
|
40
|
+
private extractIntentsFromText;
|
|
41
|
+
/**
|
|
42
|
+
* Extract surrounding context for an intent match
|
|
43
|
+
*/
|
|
44
|
+
private extractContext;
|
|
45
|
+
/**
|
|
46
|
+
* Match extracted intents against dictionary
|
|
47
|
+
*/
|
|
48
|
+
private matchIntents;
|
|
49
|
+
/**
|
|
50
|
+
* Find exact phrase match in dictionary
|
|
51
|
+
*/
|
|
52
|
+
private findExactMatch;
|
|
53
|
+
/**
|
|
54
|
+
* Find match via synonym lookup
|
|
55
|
+
*/
|
|
56
|
+
private findSynonymMatch;
|
|
57
|
+
/**
|
|
58
|
+
* Fuzzy match using Fuse.js for better accuracy
|
|
59
|
+
*/
|
|
60
|
+
private fuzzyMatch;
|
|
61
|
+
/**
|
|
62
|
+
* Resolve placeholder values from context
|
|
63
|
+
*/
|
|
64
|
+
private resolvePlaceholders;
|
|
65
|
+
/**
|
|
66
|
+
* Detect ambiguous intents (multiple high-confidence matches)
|
|
67
|
+
*/
|
|
68
|
+
private detectAmbiguities;
|
|
69
|
+
/**
|
|
70
|
+
* Generate reasoning for why an intent matched
|
|
71
|
+
*/
|
|
72
|
+
private generateReasoning;
|
|
73
|
+
/**
|
|
74
|
+
* Find unknown intents that couldn't be matched
|
|
75
|
+
*/
|
|
76
|
+
private findUnknownIntents;
|
|
77
|
+
/**
|
|
78
|
+
* Calculate overall confidence score
|
|
79
|
+
*/
|
|
80
|
+
private calculateConfidence;
|
|
81
|
+
/**
|
|
82
|
+
* Generate clarification requests for ambiguous intents
|
|
83
|
+
*/
|
|
84
|
+
private generateClarifications;
|
|
85
|
+
/**
|
|
86
|
+
* Generate warnings about validation results
|
|
87
|
+
*/
|
|
88
|
+
private generateWarnings;
|
|
89
|
+
/**
|
|
90
|
+
* Generate suggestions for improving intent detection
|
|
91
|
+
*/
|
|
92
|
+
private generateSuggestions;
|
|
93
|
+
/**
|
|
94
|
+
* Update usage analytics
|
|
95
|
+
*/
|
|
96
|
+
private updateAnalytics;
|
|
97
|
+
/**
|
|
98
|
+
* Utility: capitalize first letter
|
|
99
|
+
*/
|
|
100
|
+
private capitalize;
|
|
101
|
+
/**
|
|
102
|
+
* Get current dictionary for inspection
|
|
103
|
+
*/
|
|
104
|
+
getDictionary(): IntentDictionary;
|
|
105
|
+
/**
|
|
106
|
+
* Get list of available intents
|
|
107
|
+
*/
|
|
108
|
+
getAvailableIntents(): string[];
|
|
109
|
+
/**
|
|
110
|
+
* Get intent mapping by canonical name
|
|
111
|
+
*/
|
|
112
|
+
getIntentMapping(canonicalName: string): IntentMapping | null;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=IntentValidator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IntentValidator.d.ts","sourceRoot":"","sources":["../../src/services/IntentValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EAMtB,aAAa,EAGd,MAAM,4BAA4B,CAAC;AAEpC;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,IAAI,CAAY;IAExB;;OAEG;gBACS,cAAc,CAAC,EAAE,MAAM;IAQnC;;OAEG;IACH,OAAO,CAAC,cAAc;IA0BtB;;OAEG;IACH,OAAO,CAAC,cAAc;IAoDtB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuB5B;;OAEG;IACG,oBAAoB,CACxB,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,sBAAsB,CAAC;IAwDlC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAqH9B;;OAEG;IACH,OAAO,CAAC,cAAc;IA0DtB;;OAEG;YACW,YAAY;IA6D1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAsBtB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAcxB;;OAEG;IACH,OAAO,CAAC,UAAU;IAyDlB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAoC3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAiDzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA4B1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAsB9B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+BxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAqB3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACI,aAAa,IAAI,gBAAgB;IAIxC;;OAEG;IACI,mBAAmB,IAAI,MAAM,EAAE;IAItC;;OAEG;IACI,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;CAGrE"}
|